
网卡驱动
文章平均质量分 93
hz5034
这个作者很懒,什么都没留下…
展开
-
网卡驱动收发包过程
SW将从next_to_clean开始的L个sk_buff移出Rx Ring Buffer并上送协议栈,next_to_clean += L,向从next_to_use开始的L个descriptor补充sk_buff,next_to_use += L,tail = next_to_use。SW将sk_buff挂载到从next_to_use开始的N个descriptor,next_to_use += N,tail = next_to_use(写网卡寄存器TDT)原创 2018-04-02 20:28:02 · 14850 阅读 · 10 评论 -
ixgbe网卡驱动(三)
ixgbe_ring结构图中断上下部在硬中断函数中抛出...原创 2018-04-02 20:18:34 · 4107 阅读 · 1 评论 -
ixgbe网卡驱动(二)
ixgbe_netdev_ops// 在ixgbe_probe()中注册ixgbe_netdev_opsnetdev->netdev_ops = &ixgbe_netdev_ops;static const struct net_device_ops ixgbe_netdev_ops = { .ndo_open = ixgbe_open, // ixgbe网卡打开时调用i...原创 2018-04-02 20:08:31 · 3889 阅读 · 0 评论 -
ixgbe网卡驱动(一)
注册网卡驱动和大部分设备驱动一样,网卡驱动是作为一个module注册到kernel的通过module_init() -> ixgbe_init_module() -> pci_register_driver()注册ixgbe_driver通过module_exit() -> ixgbe_exit_module() -> pci_unregister_driver()注...原创 2018-04-02 19:38:39 · 9623 阅读 · 4 评论 -
PCI设备初始化(二)
这一篇文章主要介绍PCI设备初始化(一)中涉及的主要数据结构和函数。原创 2018-04-02 16:30:30 · 3250 阅读 · 0 评论 -
PCI设备初始化(一)
我们知道CPU可以直接访问虚拟地址,也可以通过MMU间接访问物理地址,进而访问总线地址(对于x86架构来说,物理地址和总线地址是等同的),那CPU是怎么访问网卡的存储空间的?每个网卡都有自己的存储空间,这些空间的卡上地址(在网卡上的地址)本质上是局部的,所以都从0开始,它们不与总线直接相连,在把网卡插上总线并加电之初,从总线上还访问不到这些空间系统初始化时扫描PCI总线上的各个PCI设备(包括网卡),为这些设备分配总线地址,并建立起其卡上地址和总线地址的映射,那映射是怎么建立起来的?原创 2018-04-02 15:29:40 · 14421 阅读 · 3 评论