|
@@ -1385,7 +1385,7 @@ static struct sk_buff **inet_gro_receive(struct sk_buff **head,
|
|
|
goto out_unlock;
|
|
|
|
|
|
id = ntohl(*(__be32 *)&iph->id);
|
|
|
- flush = (u16)((ntohl(*(__be32 *)iph) ^ skb_gro_len(skb)) | (id ^ IP_DF));
|
|
|
+ flush = (u16)((ntohl(*(__be32 *)iph) ^ skb_gro_len(skb)) | (id & ~IP_DF));
|
|
|
id >>= 16;
|
|
|
|
|
|
for (p = *head; p; p = p->next) {
|
|
@@ -1407,6 +1407,7 @@ static struct sk_buff **inet_gro_receive(struct sk_buff **head,
|
|
|
NAPI_GRO_CB(p)->flush |=
|
|
|
(iph->ttl ^ iph2->ttl) |
|
|
|
(iph->tos ^ iph2->tos) |
|
|
|
+ ((iph->frag_off ^ iph2->frag_off) & htons(IP_DF)) |
|
|
|
((u16)(ntohs(iph2->id) + NAPI_GRO_CB(p)->count) ^ id);
|
|
|
|
|
|
NAPI_GRO_CB(p)->flush |= flush;
|