![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
网卡驱动
hz5034
这个作者很懒,什么都没留下…
展开
-
网卡驱动收发包过程
网卡网卡工作在物理层和数据链路层,主要由PHY/MAC芯片、Tx/Rx FIFO、DMA等组成,其中网线通过变压器接PHY芯片、PHY芯片通过MII接MAC芯片、MAC芯片接PCI总线PHY芯片主要负责:CSMA/CD、模数转换、编解码、串并转换MAC芯片主要负责:比特流和帧的转换:7字节的前导码Preamble和1字节的帧首定界符SFDCRC校验Packet Filtering:L...原创 2018-04-02 20:28:02 · 14364 阅读 · 10 评论 -
ixgbe网卡驱动(三)
ixgbe_ring结构图![这里写图片描述](https://img-blog.csdn.net/20180402201524332?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2h6NTAzNA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)中断上下部在硬中断函数中抛出...原创 2018-04-02 20:18:34 · 3959 阅读 · 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 · 3608 阅读 · 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 · 9344 阅读 · 4 评论 -
PCI设备初始化(二)
主要数据结构pci_busstruct pci_bus { struct list_head node; /* node in list of buses */ // 同级PCI总线链表 struct pci_bus *parent; /* parent bus this bridge is on */ // 上级PCI总线 str...原创 2018-04-02 16:30:30 · 3042 阅读 · 0 评论 -
PCI设备初始化(一)
访问PCI设备我们知道CPU和网卡是通过PCI总线相连的,CPU可以直接访问系统内存(虚拟地址),也可以通过映射间接访问总线地址,那CPU怎么访问网卡的存储空间呢?每个网卡都有自己的存储空间,这些空间的卡上地址(在网卡上的地址)本质上是局部的,所以都从0开始,它们不与总线直接相连,在把网卡插上总线并加电之初,从总线上还访问不到这些空间系统初始化时扫描PCI总线上的各个PCI设备(包括网...原创 2018-04-02 15:29:40 · 14040 阅读 · 3 评论