GRO checksum在tcpdump中incorrect的问题

tcpdump -i $link src 192.168.1.14 and port 4000 and greater 100 -v -nn

当rx-checksumming打开的时候,skb->csum里面是硬件计算的tcp checksum,但是不包括伪头。

dev_gro_receive()

{

                ...

                /* Setup for GRO checksum validation */

                switch (skb->ip_summed) {

                case CHECKSUM_COMPLETE:

                        NAPI_GRO_CB(skb)->csum = skb->csum;

                        NAPI_GRO_CB(skb)->csum_valid = 1;

                        NAPI_GRO_CB(skb)->csum_cnt = 0;

                        break;

                ...

}

tcp4_gro_receive()被调到的时候skb_gro_checksum_validate会根据NAPI_GRO_CB(skb)->csum和伪头

(inet_gro_compute_pseudo是用来计算伪头的)算出tcp checksum。如果是0xffff,就是正确的。这时line 2733会返回0

 

2728 static inline __sum16 __skb_gro_checksum_validate_complete(struct sk_buff *skb,

2729                                                            __wsum psum)

2730 {

2731         if (NAPI_GRO_CB(skb)->csum_valid &&

2732             !csum_fold(csum_add(psum, NAPI_GRO_CB(skb)->csum)))

2733                 return 0;

2734

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值