diff mbox

PROBLEM: VLAN LRO issue

Message ID 599E416D1C5C994980C45977191D726906AB2FE86E@MTKMBS03.mediatek.inc
State Changes Requested, archived
Delegated to: David Miller
Headers show

Commit Message

Steven Liu (劉人豪) May 10, 2012, 1:01 a.m. UTC
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.




Regards,

Steven


************* Email Confidentiality Notice ********************
The information contained in this e-mail message (including any 
attachments) may be confidential, proprietary, privileged, or otherwise
exempt from disclosure under applicable laws. It is intended to be 
conveyed only to the designated recipient(s). Any use, dissemination, 
distribution, printing, retaining or copying of this e-mail (including its 
attachments) by unintended recipient(s) is strictly prohibited and may 
be unlawful. If you are not an intended recipient of this e-mail, or believe 
that you have received this e-mail in error, please notify the sender 
immediately (by replying to this e-mail), delete any and all copies of 
this e-mail (including any attachments) from your system, and do not
disclose the content of this e-mail to any other person. Thank you!

Comments

Eric Dumazet May 10, 2012, 1:25 a.m. UTC | #1
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
diff mbox

Patch

--- 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);