svn commit: r218056 - head/sys/dev/xen/netfront

Justin T. Gibbs gibbs at FreeBSD.org
Sat Jan 29 02:36:46 UTC 2011


Author: gibbs
Date: Sat Jan 29 02:36:45 2011
New Revision: 218056
URL: http://svn.freebsd.org/changeset/base/218056

Log:
  Fix bug in the netfront driver that caused excessive packet drops during
  receive processing.
  
  Remove unnecessary restrictions on the mbuf chain length built during an
  LRO receive.  This restriction was copied from the Linux netfront driver
  where the LRO implementation cannot handle more than 18 discontinuities.
  The FreeBSD implementation has no such restriction.
  
  MFC after: 1 week

Modified:
  head/sys/dev/xen/netfront/netfront.c

Modified: head/sys/dev/xen/netfront/netfront.c
==============================================================================
--- head/sys/dev/xen/netfront/netfront.c	Sat Jan 29 00:53:58 2011	(r218055)
+++ head/sys/dev/xen/netfront/netfront.c	Sat Jan 29 02:36:45 2011	(r218056)
@@ -1273,7 +1273,6 @@ xennet_get_responses(struct netfront_inf
 	struct mbuf *m, *m0, *m_prev;
 	grant_ref_t ref = xennet_get_rx_ref(np, *cons);
 	RING_IDX ref_cons = *cons;
-	int max = 5 /* MAX_TX_REQ_FRAGS + (rx->status <= RX_COPY_THRESHOLD) */;
 	int frags = 1;
 	int err = 0;
 	u_long ret;
@@ -1416,20 +1415,10 @@ next_skip_queue:
 		frags++;
 	}
 	*list = m0;
-
-	if (unlikely(frags > max)) {
-		if (net_ratelimit())
-			WPRINTK("Too many frags\n");
-		printf("%s: too many frags %d > max %d\n", __func__, frags,
-		       max);
-		err = E2BIG;
-	}
-
 	*cons += frags;
-
 	*pages_flipped_p = pages_flipped;
 
-	return err;
+	return (err);
 }
 
 static void


More information about the svn-src-head mailing list