在include/Linux/if_ether.h 中定义了802.1Q,在net/core/dev.c中通过dev_add_pack注册了802.1Q的协议类型
调用dev->hard_start_xmit(),关联到了具体的网络设备处理函数,从而调用了vlan_dev_hard_start_xmit(vlan_dev.c),在这里生成vlan
tag头,并压入sk_buffer中,然后找到真实的网络设备(real_dev),再次调用dev_queue_xmit,进入真实的网卡驱动L1层
本文深入探讨了网络设备驱动中的关键概念,从802.1Q协议的引入,到如何在驱动中实现协议处理,最终将数据包传递给实际的网络设备进行传输的过程。详细解释了如何生成VLAN标签并将其压入缓冲区,以及如何通过真实设备完成数据包的最终发送。
1224

被折叠的 条评论
为什么被折叠?



