Alexander Duyck 3eb1a40f4b 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>
2013-02-15 21:46:51 -08:00
..
2013-02-08 14:22:05 -05:00
2013-01-23 20:30:52 -08:00
2013-01-30 11:38:25 +01:00
2013-01-14 09:08:38 -08:00
2012-12-11 14:08:47 -08:00
2012-12-18 15:19:06 +10:30
2013-01-22 16:36:23 -08:00
2012-12-12 11:45:16 -08:00
2013-01-08 18:53:56 -08:00
2012-12-19 08:19:07 -08:00
2012-12-11 13:13:55 -08:00
2012-12-12 12:05:15 -08:00
2013-01-15 10:45:26 -07:00
2013-02-08 11:55:27 +11:00