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