Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 15 Sep 2014 20:54:12 +0000 (UTC)
From:      Adrian Chadd <adrian@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r271648 - head/sys/dev/ixgbe
Message-ID:  <201409152054.s8FKsCSr004055@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: adrian
Date: Mon Sep 15 20:54:12 2014
New Revision: 271648
URL: http://svnweb.freebsd.org/changeset/base/271648

Log:
  The error bits are not valid with EOP=0; so intermediary fragments should
  not be discarded.
  
  Submitted by:	Marc De La Gueronniere <mdelagueronniere@verisign.com>
  MFC after:	1 week
  Sponsored by:	Verisign, Inc.

Modified:
  head/sys/dev/ixgbe/ixgbe.c
  head/sys/dev/ixgbe/ixgbe.h

Modified: head/sys/dev/ixgbe/ixgbe.c
==============================================================================
--- head/sys/dev/ixgbe/ixgbe.c	Mon Sep 15 20:50:26 2014	(r271647)
+++ head/sys/dev/ixgbe/ixgbe.c	Mon Sep 15 20:54:12 2014	(r271648)
@@ -4142,7 +4142,6 @@ ixgbe_setup_receive_ring(struct rx_ring 
 	rxr->lro_enabled = FALSE;
 	rxr->rx_copies = 0;
 	rxr->rx_bytes = 0;
-	rxr->discard = FALSE;
 	rxr->vtag_strip = FALSE;
 
 	bus_dmamap_sync(rxr->rxdma.dma_tag, rxr->rxdma.dma_map,
@@ -4618,13 +4617,8 @@ ixgbe_rxeof(struct ix_queue *que)
 		eop = ((staterr & IXGBE_RXD_STAT_EOP) != 0);
 
 		/* Make sure bad packets are discarded */
-		if (((staterr & IXGBE_RXDADV_ERR_FRAME_ERR_MASK) != 0) ||
-		    (rxr->discard)) {
+		if (eop && (staterr & IXGBE_RXDADV_ERR_FRAME_ERR_MASK) != 0) {
 			rxr->rx_discarded++;
-			if (eop)
-				rxr->discard = FALSE;
-			else
-				rxr->discard = TRUE;
 			ixgbe_rx_discard(rxr, i);
 			goto next_desc;
 		}

Modified: head/sys/dev/ixgbe/ixgbe.h
==============================================================================
--- head/sys/dev/ixgbe/ixgbe.h	Mon Sep 15 20:50:26 2014	(r271647)
+++ head/sys/dev/ixgbe/ixgbe.h	Mon Sep 15 20:54:12 2014	(r271648)
@@ -331,7 +331,6 @@ struct rx_ring {
 	struct lro_ctrl		lro;
 	bool			lro_enabled;
 	bool			hw_rsc;
-	bool			discard;
 	bool			vtag_strip;
         u16			next_to_refresh;
         u16 			next_to_check;



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201409152054.s8FKsCSr004055>