|
|
@@ -2009,15 +2009,14 @@ static int ixgbe_clean_rx_irq(struct ixgbe_q_vector *q_vector,
|
|
|
|
|
|
rx_desc = IXGBE_RX_DESC(rx_ring, rx_ring->next_to_clean);
|
|
|
|
|
|
- if (!ixgbe_test_staterr(rx_desc, IXGBE_RXD_STAT_DD))
|
|
|
+ if (!rx_desc->wb.upper.status_error)
|
|
|
break;
|
|
|
|
|
|
- /*
|
|
|
- * This memory barrier is needed to keep us from reading
|
|
|
+ /* This memory barrier is needed to keep us from reading
|
|
|
* any other fields out of the rx_desc until we know the
|
|
|
- * RXD_STAT_DD bit is set
|
|
|
+ * descriptor has been written back
|
|
|
*/
|
|
|
- rmb();
|
|
|
+ dma_rmb();
|
|
|
|
|
|
/* retrieve a buffer from the ring */
|
|
|
skb = ixgbe_fetch_rx_buffer(rx_ring, rx_desc);
|