英特尔/Intel
深入讲解Linux内核网络设备驱动(图例解析)
2024-10-25 15:00

深入讲解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 },
  {

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

发表评论
0评