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.
This commit is contained in:
parent
5894690d0d
commit
e45d876dd7
@ -4142,7 +4142,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,
|
||||
@ -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;
|
||||
}
|
||||
|
@ -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;
|
||||
|
Loading…
x
Reference in New Issue
Block a user