我正在努力了解csum_start
中csum_offset
和struct sk_buff
字段的用途。
用Google搜索,我发现了以下定义:
csum_start
是从skb->head
的地址到校验和字段地址的偏移量。
csum_offset
是从校验和的地址开头到结尾的偏移量。
NETIF_F_HW_CSUM
将校验和卸载到设备驱动程序,那么在此上下文中如何使用/解释上述值? 对此有任何见解都非常感谢!
答案 0 :(得分:0)
如果设备的功能设置为NETIF_F_HW_CSUM
,则网络堆栈不会计算传输路径上的传输校验和。相反,它会通过将ip_summed
设置为CHECKSUM_PARTIAL
来告诉设备计算校验和。
设备应使用csum_start
(或偶尔skb_checksum_start_offset(skb)
)作为起始位置并计算校验和直到数据包结束(套接字缓冲区中的len
字段)。计算的校验和存储在csum_offset
的{{1}}。