WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

[Xen-devel] Re: [PATCH] netfront/back: do not mark packets of length < M

To: xen-devel@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-devel] Re: [PATCH] netfront/back: do not mark packets of length < MSS as GSO
From: Ian Campbell <Ian.Campbell@xxxxxxxxxx>
Date: Tue, 13 Jan 2009 12:51:37 +0000
Delivery-date: Tue, 13 Jan 2009 04:52:08 -0800
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
In-reply-to: <5b29f1081b2061cf56fa.1231847973@xxxxxxxxxxxxxxxxxxxxx>
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
Organization: Citrix Systems, Inc.
References: <5b29f1081b2061cf56fa.1231847973@xxxxxxxxxxxxxxxxxxxxx>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
Should clear gso_type too:

changeset:   774:cb5ad51f5206cb2b756ac1c5731ee47f7e3b8273
tag:         tip
user:        Ian Campbell <ian.campbell@xxxxxxxxxx>
date:        Tue Jan 13 12:50:26 2009 +0000
files:       drivers/xen/netback/netback.c drivers/xen/netfront/netfront.c
description:
netfront/back: do not mark packets of length < MSS as GSO

Linux assumes that skbs marked for GSO are longer than MSS. In
particular tcp_tso_segment assumes that skb_segment will return a
chain of at least 2 skbs.

Both netfront and back should therefor not pass such a packet up the
stack.

Signed-off-by: Ian Campbell <ian.campbell@xxxxxxxxxx>


diff -r 28acedb66302a29c9ef14a3084b4736d3fc192f1 -r 
cb5ad51f5206cb2b756ac1c5731ee47f7e3b8273 drivers/xen/netback/netback.c
--- a/drivers/xen/netback/netback.c     Wed Jan 07 12:21:54 2009 +0900
+++ b/drivers/xen/netback/netback.c     Tue Jan 13 12:50:26 2009 +0000
@@ -1345,6 +1345,11 @@ static void net_tx_action(unsigned long 
                        skb_shinfo(skb)->frags[0].page = (void *)~0UL;
                }
 
+               if (skb->data_len < skb_shinfo(skb)->gso_size) {
+                       skb_shinfo(skb)->gso_size = 0;
+                       skb_shinfo(skb)->gso_type = 0;
+               }
+
                __skb_queue_tail(&tx_queue, skb);
 
                pending_cons++;
diff -r 28acedb66302a29c9ef14a3084b4736d3fc192f1 -r 
cb5ad51f5206cb2b756ac1c5731ee47f7e3b8273 drivers/xen/netfront/netfront.c
--- a/drivers/xen/netfront/netfront.c   Wed Jan 07 12:21:54 2009 +0900
+++ b/drivers/xen/netfront/netfront.c   Tue Jan 13 12:50:26 2009 +0000
@@ -1439,6 +1439,14 @@ err:
                np->stats.rx_packets++;
                np->stats.rx_bytes += skb->len;
 
+#if HAVE_TSO
+               if (skb->data_len < skb_shinfo(skb)->gso_size) {
+                       skb_shinfo(skb)->gso_size = 0;
+#if HAVE_GSO
+                       skb_shinfo(skb)->gso_type = 0;
+#endif
+               }
+#endif
                __skb_queue_tail(&rxq, skb);
 
                np->rx.rsp_cons = ++i;



_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel

<Prev in Thread] Current Thread [Next in Thread>