zoukankan      html  css  js  c++  java
  • 玩无线网络

    怎么就到网络了呢,还是因为猴哥的好奇心很重,搞明白了文件系统之后[在此猴哥就不谦虚了],对IO产生了浓厚的兴趣,那么在整个计算机中IO主要来自于两个模块:1)存储 2)网络。

    存储部分,主要是处理pagecache中的page和盘上的block之间的对应关系,那么网络呢?

    猴哥本子上的无线网卡型号是:

    04:00.0 Network controller: Intel Corporation Wireless 7260 (rev 6b)
    	Subsystem: Intel Corporation Wireless-N 7260
    	Flags: bus master, fast devsel, latency 0, IRQ 35
    	Memory at f1400000 (64-bit, non-prefetchable) [size=8K]
    	Capabilities: [c8] Power Management version 3
    	Capabilities: [d0] MSI: Enable+ Count=1/1 Maskable- 64bit+
    	Capabilities: [40] Express Endpoint, MSI 00
    	Capabilities: [100] Advanced Error Reporting
    	Capabilities: [140] Device Serial Number 28-b2-bd-ff-ff-eb-1a-77
    	Capabilities: [14c] Latency Tolerance Reporting
    	Capabilities: [154] Vendor Specific Information: ID=cafe Rev=1 Len=014 <?>
    	Kernel driver in use: iwlwifi
    	Kernel modules: iwlwifi
    

     所以,找到对应的源码是:drivers/net/wireless/iwlwifi

    许多教科书中都告诉说:当接受数据块的时候,是在驱动中分配了skb_buffer结构体,发现这个函数是:iwl_mvm_rx_rx_mpdu使用perf抓这个函数调用栈,是怎么样一步步来到iwl_mvm_rx_rx_mpdu呢?

    iwl_pcie_irq_handler

    ---->iwl_mvm_rx

    ------->iwl_mvm_rx_rx_mpdu

    在 iwl_mvm_rx_rx_mpdu 中会调用调用 alloc_skb 去分配一个 sk_buff 来整真正的数据。

    如果从iwl_mvm_rx_rx_mpdu处层层向上去解析,你就真的能看到这个数据包是怎么一步步解析出来的,真的很爽,不同于文件系统,这里的内存是驱动分配出来的,并且是从slab中调用kmem_cache_alloc_node分配出来的,也就是说,kmem_cache_alloc_node中进行的内存的分配,谁告诉我不能在中断里进行内存分配的来着?????

    再看__alloc_skb中的代码,里面有对其中重要数据结构初始化的代码,太重要了,建议先把那本大红书中关于sk_buff结构体看看。

    ------------------------

    可以先说下对网络的几个疑问,首先,存储中的IO是通过page关联在一起的,那么网络中的IO是通过什么呢?也就是说我随便拿到一个包,怎么知道这个包应该传给哪个进程?这里我感觉应该是TCP/IP协议中的传输层的事情,想到了端口的概念,上学时,端口的意思不就是服务吗?其实对应的就是个进程。理理,这个包经过层层的解析,解析到端口的时候,我们就知道了这个包应该给哪个进程了,怎么通知这个进程?我才这里可能是用到了那种阻塞读/堵塞写等。

    还是要看看这个信息传递机制。

    一次刨根问底的socket收包过程:

    http://blog.csdn.net/bluecloudmatrix/article/details/43501887

    ieee80211_queue_work 基本驱动的部分就处理完了吧?

  • 相关阅读:
    C#多线程编程
    div水平垂直居中方法及优缺点
    Socket网络编程(TCP/IP/端口/类)和实例
    LINQ to SQL语句大全
    SQL Server修改表结构后批量更新所有视图
    SQL Server修改表结构后批量更新所有视图
    SQL Server修改表结构后批量更新所有视图
    开源Asp.Net Core小型社区系统DotNetClub
    CkEditor 4.1.3 + CkFinder 2.4
    文本编辑器-->CKEditor+CKFinder使用与配置
  • 原文地址:https://www.cnblogs.com/honpey/p/6158654.html
Copyright © 2011-2022 走看看