diff options
author | adrian <adrian@FreeBSD.org> | 2014-10-11 22:09:46 +0000 |
---|---|---|
committer | adrian <adrian@FreeBSD.org> | 2014-10-11 22:09:46 +0000 |
commit | d927fae9b728ec0b8f05bde21ec30ca7f0317e80 (patch) | |
tree | 5ad4cf665f3e2118eec52a70caa7a403dc13e1bf /sys/dev/ixgbe | |
parent | 8128ee7851b62e1d1a975b817b3a86e66c5331ca (diff) | |
download | FreeBSD-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.
Diffstat (limited to 'sys/dev/ixgbe')
-rw-r--r-- | sys/dev/ixgbe/ixgbe.c | 8 | ||||
-rw-r--r-- | sys/dev/ixgbe/ixgbe.h | 1 |
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; |