| From 56a831a909eaf58f10eee0bcb2380a458c77ecbe Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Thu, 6 Feb 2020 01:20:02 -0800 |
| Subject: ice: Don't allow same value for Rx tail to be written twice |
| |
| From: Brett Creeley <brett.creeley@intel.com> |
| |
| [ Upstream commit 168983a8e19b89efd175661e53faa6246be363a0 ] |
| |
| Currently we compare the value we are about to write to the Rx tail |
| register with the previous value of next_to_use. The problem with this |
| is we only write tail on 8 descriptor boundaries, but next_to_use is |
| updated whenever we clean Rx descriptors. Fix this by comparing the |
| value we are about to write to tail with the previously written tail |
| value. This will prevent duplicate Rx tail bumps. |
| |
| Signed-off-by: Brett Creeley <brett.creeley@intel.com> |
| Tested-by: Andrew Bowers <andrewx.bowers@intel.com> |
| Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/net/ethernet/intel/ice/ice_txrx_lib.c | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| diff --git a/drivers/net/ethernet/intel/ice/ice_txrx_lib.c b/drivers/net/ethernet/intel/ice/ice_txrx_lib.c |
| index 35bbc4ff603cd..6da048a6ca7c1 100644 |
| --- a/drivers/net/ethernet/intel/ice/ice_txrx_lib.c |
| +++ b/drivers/net/ethernet/intel/ice/ice_txrx_lib.c |
| @@ -10,7 +10,7 @@ |
| */ |
| void ice_release_rx_desc(struct ice_ring *rx_ring, u32 val) |
| { |
| - u16 prev_ntu = rx_ring->next_to_use; |
| + u16 prev_ntu = rx_ring->next_to_use & ~0x7; |
| |
| rx_ring->next_to_use = val; |
| |
| -- |
| 2.20.1 |
| |