mirror of https://gitee.com/openkylin/linux.git
igb: Use dma_wmb() instead of wmb() before doorbell writes
igb writes to doorbells to post transmit and receive descriptors; after writing descriptors to memory but before writing to doorbells, use dma_wmb() rather than wmb(). wmb() is more heavyweight than necessary before doorbell writes. On x86, this avoids SFENCEs before doorbell writes in both the tx and rx refill paths. Signed-off-by: Venkatesh Srinivas <venkateshs@google.com> Tested-by: Aaron Brown <aaron.f.brown@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
This commit is contained in:
parent
2a83fba6ca
commit
73017f4e05
|
@ -6031,7 +6031,7 @@ static int igb_tx_map(struct igb_ring *tx_ring,
|
|||
* We also need this memory barrier to make certain all of the
|
||||
* status bits have been updated before next_to_watch is written.
|
||||
*/
|
||||
wmb();
|
||||
dma_wmb();
|
||||
|
||||
/* set next_to_watch value indicating a packet is present */
|
||||
first->next_to_watch = tx_desc;
|
||||
|
@ -8531,7 +8531,7 @@ void igb_alloc_rx_buffers(struct igb_ring *rx_ring, u16 cleaned_count)
|
|||
* applicable for weak-ordered memory model archs,
|
||||
* such as IA-64).
|
||||
*/
|
||||
wmb();
|
||||
dma_wmb();
|
||||
writel(i, rx_ring->tail);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue