Message ID | 599E416D1C5C994980C45977191D726906AB2FE86E@MTKMBS03.mediatek.inc |
---|---|
State | Changes Requested, archived |
Delegated to: | David Miller |
Headers | show |
On Thu, 2012-05-10 at 09:01 +0800, Steven Liu (劉人豪) wrote: > Hi Sir, > > I found the issue about VLAN LRO feature and below is bug description and patch for your reference, thanks. > > [1.] One line summary of the problem: > VLAN LRO issue > > [2.] Full description of the problem/report: > LRO implementation cannot handle VLAN tagged packets correctly. > It uses correct packet length when creating new LRO session, but uses wrong packet length when putting following packets into exist LRO session. > > [3.] Keywords (i.e., modules, networking, kernel): > Networking > > [4.] Kernel version (from /proc/version): > Linux-3.4-rc3 and below > > [5.] Output of Oops.. message (if applicable) with symbolic information > resolved (see Documentation/oops-tracing.txt) System is still working, but cannot speed up VLAN tagged traffic. > > [X.] Other notes, patches, fixes, workarounds: > We have to apply below patch to fix this issue. > > --- linux-3.4-rc3/net/ipv4/inet_lro.orig 2012-05-08 20:09:44.810366089 +0800 > +++ linux-3.4-rc3/net/ipv4/inet_lro.c 2012-05-08 20:09:33.331679419 +0800 > @@ -353,7 +353,7 @@ static int __lro_proc_skb(struct net_lro > if (lro_desc->tcp_next_seq != ntohl(tcph->seq)) > goto out2; > > - if (lro_tcp_ip_check(iph, tcph, skb->len, lro_desc)) > + if (lro_tcp_ip_check(iph, tcph, skb->len - vlan_hdr_len, lro_desc)) > goto out2; > > lro_add_packet(lro_desc, skb, iph, tcph); > Hi This looks like a good fix, could you please submit an official patch ? Documentation/SubmittingPatches -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
--- linux-3.4-rc3/net/ipv4/inet_lro.orig 2012-05-08 20:09:44.810366089 +0800 +++ linux-3.4-rc3/net/ipv4/inet_lro.c 2012-05-08 20:09:33.331679419 +0800 @@ -353,7 +353,7 @@ static int __lro_proc_skb(struct net_lro if (lro_desc->tcp_next_seq != ntohl(tcph->seq)) goto out2; - if (lro_tcp_ip_check(iph, tcph, skb->len, lro_desc)) + if (lro_tcp_ip_check(iph, tcph, skb->len - vlan_hdr_len, lro_desc)) goto out2; lro_add_packet(lro_desc, skb, iph, tcph);