aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/igbvf/netdev.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/igbvf/netdev.c')
-rw-r--r--drivers/net/igbvf/netdev.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/net/igbvf/netdev.c b/drivers/net/igbvf/netdev.c
index ec808fa8dc21..c539f7c9c3e0 100644
--- a/drivers/net/igbvf/netdev.c
+++ b/drivers/net/igbvf/netdev.c
@@ -248,6 +248,7 @@ static bool igbvf_clean_rx_irq(struct igbvf_adapter *adapter,
248 if (*work_done >= work_to_do) 248 if (*work_done >= work_to_do)
249 break; 249 break;
250 (*work_done)++; 250 (*work_done)++;
251 rmb(); /* read descriptor and rx_buffer_info after status DD */
251 252
252 buffer_info = &rx_ring->buffer_info[i]; 253 buffer_info = &rx_ring->buffer_info[i];
253 254
@@ -780,6 +781,7 @@ static bool igbvf_clean_tx_irq(struct igbvf_ring *tx_ring)
780 781
781 while ((eop_desc->wb.status & cpu_to_le32(E1000_TXD_STAT_DD)) && 782 while ((eop_desc->wb.status & cpu_to_le32(E1000_TXD_STAT_DD)) &&
782 (count < tx_ring->count)) { 783 (count < tx_ring->count)) {
784 rmb(); /* read buffer_info after eop_desc status */
783 for (cleaned = false; !cleaned; count++) { 785 for (cleaned = false; !cleaned; count++) {
784 tx_desc = IGBVF_TX_DESC_ADV(*tx_ring, i); 786 tx_desc = IGBVF_TX_DESC_ADV(*tx_ring, i);
785 buffer_info = &tx_ring->buffer_info[i]; 787 buffer_info = &tx_ring->buffer_info[i];