diff options
| author | Alexander Duyck <alexander.h.duyck@intel.com> | 2013-01-31 07:15:51 +0000 |
|---|---|---|
| committer | Jeff Kirsher <jeffrey.t.kirsher@intel.com> | 2013-02-15 21:46:51 -0800 |
| commit | 3eb1a40f4b6d0c41feb60e55b53d11f70fc8ee8e (patch) | |
| tree | 832de933f9b809bb53ec4071442ebb9d7e300aeb /drivers/net/ethernet/intel/igb/igb_ethtool.c | |
| parent | e792cd916cf74315bddb2c8b2323ef498cd7bfde (diff) | |
| download | olio-linux-3.10-3eb1a40f4b6d0c41feb60e55b53d11f70fc8ee8e.tar.xz olio-linux-3.10-3eb1a40f4b6d0c41feb60e55b53d11f70fc8ee8e.zip | |
igbvf: Make next_to_watch a pointer and adjust memory barriers to avoid races
This change is meant to address several race issues that become possible
because next_to_watch could possibly be set to a value that shows that the
descriptor is done when it is not. In order to correct that we instead make
next_to_watch a pointer that is set to NULL during cleanup, and set to the
eop_desc after the descriptor rings have been written.
To enforce proper ordering the next_to_watch pointer is not set until after
a wmb writing the values to the last descriptor in a transmit. In order to
guarantee that the descriptor is not read until after the eop_desc we use the
read_barrier_depends which is only really necessary on the alpha architecture.
Signed-off-by: Alexander Duyck <alexander.h.duyck@intel.com>
Acked-by: Greg Rose <gregory.v.rose@intel.com>
Tested-by: Sibai Li <sibai.li@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Diffstat (limited to 'drivers/net/ethernet/intel/igb/igb_ethtool.c')
0 files changed, 0 insertions, 0 deletions