深入讲解Linux内核网络设备驱动(图例解析)

   日期:2024-10-25     来源:网络整理    作者:佚名     移动:http://mapp.b2b-1.com/news/506281.html
核心提示:深入讲解Linux内核网络设备驱动(图例解析)驱动会使用module_init向内核注册一个初始化函数,当驱动被加载时,内核会调用这个函数。IDs),驱动据此识别它可以控制的设备,内核也会依据这个列表对不同设备加载相应驱动。

深入讲解Linux内核网络设备驱动(图例解析)

1.接收数据包过程概述

介绍数据包收包过程,有助于我们了解Linux内核网络设备在数据收包过程中的位置,下面从宏观的角度介绍数据包从被网卡接收到进入 socket 接收队列的整个过程:

2. 网络设备初始化

下面以常见的Intel I350 网卡的驱动 ibg 为例介绍它的工作过程:

2.1 初始化

驱动会使用向内核注册一个初始化函数,当驱动被加载时,内核会调用这个函数。在drivers/net//intel/igb/.c中初始化函数():


static int __init igb_init_module(void)
{
  int ret;
  pr_info("%s - version %s\n", igb_driver_string, igb_driver_version);
  pr_info("%s\n", igb_copyright);
  
  ret = pci_register_driver(&igb_driver);
  return ret;
}
module_init(igb_init_module);

};
MODULE_DEVICE_TABLE(pci, igb_pci_tbl);static DEFINE_PCI_DEVICE_TABLE(igb_pci_tbl) = {
  { PCI_VDEVICE(INTEL, E1000_DEV_ID_I354_BACKPLANE_1GBPS) },
  { PCI_VDEVICE(INTEL, E1000_DEV_ID_I354_SGMII) },
  { PCI_VDEVICE(INTEL, E1000_DEV_ID_I354_BACKPLANE_2_5GBPS) },
  { PCI_VDEVICE(INTEL, E1000_DEV_ID_I211_COPPER), board_82575 },
  {

【本文来源于互联网转载,如侵犯您的权益或不适传播,请邮件通知我们删除】

免责声明:深入讲解Linux内核网络设备驱动(图例解析)来源于互联网,如有侵权请通知我们删除! (留言)
 
标签: intel e1000 驱动
 
更多>同类行业资讯
0相关评论

图文信息
最新发布
行业资讯
最受欢迎
网站首页  |  网站地图  |  RSS订阅  |  违规举报  |  B2B-1.COM