在 NIC 驱动程序编写过程中,我阅读并理解了主要struct sk_buff字段,如headroom, data, tailroom, end, len, data_len. 主要来源如:关于 SKB 的LWN和davem 帖子告诉我们有 2 个字节对齐用于 IP 标头性能。在 NIC 驱动程序中的每个 RX 例程中都应该使用这种对齐方式。
就我而言,当我收到struct sk_buffin时,start_xmit()我在( )struct sk_buff中有 2 个空闲字节。这 2 个字节用于我的目的 ( )。headroomskb_headroom(skb)skb_push(skb, 2)
我担心两件事:
- 我已经在
headroom几个发行版中检查了大约 2 个空闲字节并找到了它们。这可能意味着在 TX 期间struct skb传递到已经对齐的字节。start_xmit()这是真的吗? - 如果是真的,为什么在打印
NET_IP_ALIGN期间使用宏?pr_infostart_xmit()0