summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoradrian <adrian@FreeBSD.org>2014-10-11 22:09:46 +0000
committeradrian <adrian@FreeBSD.org>2014-10-11 22:09:46 +0000
commitd927fae9b728ec0b8f05bde21ec30ca7f0317e80 (patch)
tree5ad4cf665f3e2118eec52a70caa7a403dc13e1bf
parent8128ee7851b62e1d1a975b817b3a86e66c5331ca (diff)
downloadFreeBSD-src-d927fae9b728ec0b8f05bde21ec30ca7f0317e80.zip
FreeBSD-src-d927fae9b728ec0b8f05bde21ec30ca7f0317e80.tar.gz
MFC r271648 - 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> Sponsored by: Verisign, Inc.
-rw-r--r--sys/dev/ixgbe/ixgbe.c8
-rw-r--r--sys/dev/ixgbe/ixgbe.h1
2 files changed, 1 insertions, 8 deletions
diff --git a/sys/dev/ixgbe/ixgbe.c b/sys/dev/ixgbe/ixgbe.c
index c2f258a..e87a496 100644
--- a/sys/dev/ixgbe/ixgbe.c
+++ b/sys/dev/ixgbe/ixgbe.c
@@ -4062,7 +4062,6 @@ ixgbe_setup_receive_ring(struct rx_ring *rxr)
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,
@@ -4461,13 +4460,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;
}
diff --git a/sys/dev/ixgbe/ixgbe.h b/sys/dev/ixgbe/ixgbe.h
index 77b72ed..622ead6 100644
--- a/sys/dev/ixgbe/ixgbe.h
+++ b/sys/dev/ixgbe/ixgbe.h
@@ -341,7 +341,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;
OpenPOWER on IntegriCloud