上一页 1 ··· 17 18 19 20 21 22 23 24 25 ··· 30 下一页
摘要: 如果设备不支持单播过滤,并且要监听多个单播地址时,就要使用net_device->uc_count和net_device->uc_promisc来设置混杂模式,具体见__dev_set_rx_mode函数。 多数设备实现了ndo_set_rx_mode,并且通过该函数设置了单播过滤,没有实现这个函数 阅读全文
posted @ 2017-09-16 05:35 AlexAlex 阅读(708) 评论(0) 推荐(0) 编辑
摘要: skb_clone–只复制skb描述符本身,如果只修改skb描述符则使用该函数克隆; pskb_copy–复制skb描述符+线性数据区域(包括skb_shared_info),如果需要修改描述符以及数据则使用该函数复制; skb_copy–复制所有数据,包括skb描述符+线性数据区域+非线性数据区, 阅读全文
posted @ 2017-09-16 02:15 AlexAlex 阅读(5374) 评论(0) 推荐(0) 编辑
摘要: alloc_skb –分配skb,进行基本的初始化; 1 static inline struct sk_buff *alloc_skb(unsigned int size, 2 gfp_t priority) 3 { 4 return __alloc_skb(size, priority, 0, 阅读全文
posted @ 2017-09-16 02:10 AlexAlex 阅读(6112) 评论(0) 推荐(0) 编辑
摘要: skb操作中的预留和对齐操作主要由skb_put、skb_push、skb_pull、skb_reserve完成;这几个函数的区别通过下面图(图片来自:深入理解linux网络技术内幕)可以清晰的区分;另外,需要注意的是skb_reserve只能操作空skb,即在分配了空间,尚未填充数据时调用; 以下 阅读全文
posted @ 2017-09-16 01:59 AlexAlex 阅读(21251) 评论(0) 推荐(1) 编辑
摘要: sk_buff结构用来描述已接收或者待发送的数据报文信息;skb在不同网络协议层之间传递,可被用于不同网络协议,如二层的以太网协议,三层的ip协议,四层的tcp或者udp协议,其中某些成员变量会在该结构从一层向另一层传递时发生改变,从上层向下层传递需要添加首部,从下层向上层传递需要移除首部; 多个s 阅读全文
posted @ 2017-09-16 01:55 AlexAlex 阅读(1471) 评论(0) 推荐(0) 编辑
摘要: 通常网络设备会定时地检测设备是否处于可传递状态。当状态发生变化时,会调用netif_carrier_on或者netif_carrier_off来通知内核; 从网上设备插拔网线或者另一端的设备关闭或禁止,都会导致连接状态改变; netif_carrier_on—-设备驱动监测到设备传递信号时调用 ne 阅读全文
posted @ 2017-09-16 00:43 AlexAlex 阅读(2744) 评论(0) 推荐(0) 编辑
摘要: 设备关闭操作主要完成设备启用标记位的清除,未发送完的数据发送完,发送禁用通知等操作;下面为相关函数的调用关系,其中dev_change_flags调用__dev_close的流程,已经在设备开启文章中做过介绍,此处不再分析; 1 /** 2 * 设备禁用函数调用关系 3 * dev_change_f 阅读全文
posted @ 2017-09-15 15:00 AlexAlex 阅读(844) 评论(0) 推荐(0) 编辑
摘要: __dev_open函数,完成对设备的启用操作,并进行一些必要初始化和通知,调用关系如下,本文主要对这几个函数进行分析; 1 /** 2 * _dev_open函数的调用关系 3 * dev_change_flags-->_dev_change_flags-->__dev_open 4 * 5 * 阅读全文
posted @ 2017-09-15 14:45 AlexAlex 阅读(2230) 评论(0) 推荐(0) 编辑
摘要: 在注销网络设备时,会调用pci_driver->remove函数,以e100网卡驱动为例,实际调用e100_remove,该函数调用函数unregister_netdev进行设备注销操作; 函数调用关系图如下,注销分为两步: (1) 回滚注册操作,进行初步注销,过程中如果设备尚未关闭,则需先调用de 阅读全文
posted @ 2017-09-15 14:33 AlexAlex 阅读(1513) 评论(0) 推荐(0) 编辑
摘要: 注册网络设备时,会调用pci_driver->probe函数,以e100网卡驱动为例,在调用alloc_ehterdev分配内存之后,会接着调用register_netdev进行设备注册,注册过程包含部分成员初始化,注册到文件系统,消息通知等; 1 /** 2 * 设备注册函数调用关系图 3 * e 阅读全文
posted @ 2017-09-15 14:17 AlexAlex 阅读(1675) 评论(0) 推荐(0) 编辑
上一页 1 ··· 17 18 19 20 21 22 23 24 25 ··· 30 下一页