ice: Add support to enable/disable all Rx queues before waiting
Currently when we enable/disable all Rx queues we do the following sequence for each Rx queue and then move to the next queue. 1. Enable/Disable the Rx queue via register write. 2. Read the configuration register to determine if the Rx queue was enabled/disabled successfully. In some cases enabling/disabling queue 0 fails because of step 2 above. Fix this by doing step 1 for all of the Rx queues and then step 2 for all of the Rx queues. Also, there are cases where we enable/disable a single queue (i.e. SR-IOV and XDP) so add a new function that does step 1 and 2 above with a read flush in between. This change also required a single Rx queue to be enabled/disabled with and without waiting for the change to propagate through hardware. Fix this by adding a boolean wait flag to the necessary functions. Also, add the keywords "one" and "all" to distinguish between enabling/disabling a single Rx queue and all Rx queues respectively. 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>
Showing
- drivers/net/ethernet/intel/ice/ice_base.c 31 additions, 11 deletionsdrivers/net/ethernet/intel/ice/ice_base.c
- drivers/net/ethernet/intel/ice/ice_base.h 3 additions, 1 deletiondrivers/net/ethernet/intel/ice/ice_base.h
- drivers/net/ethernet/intel/ice/ice_ethtool.c 2 additions, 2 deletionsdrivers/net/ethernet/intel/ice/ice_ethtool.c
- drivers/net/ethernet/intel/ice/ice_lib.c 21 additions, 11 deletionsdrivers/net/ethernet/intel/ice/ice_lib.c
- drivers/net/ethernet/intel/ice/ice_lib.h 2 additions, 2 deletionsdrivers/net/ethernet/intel/ice/ice_lib.h
- drivers/net/ethernet/intel/ice/ice_main.c 2 additions, 2 deletionsdrivers/net/ethernet/intel/ice/ice_main.c
- drivers/net/ethernet/intel/ice/ice_virtchnl_pf.c 4 additions, 3 deletionsdrivers/net/ethernet/intel/ice/ice_virtchnl_pf.c
- drivers/net/ethernet/intel/ice/ice_xsk.c 2 additions, 2 deletionsdrivers/net/ethernet/intel/ice/ice_xsk.c
Please register or sign in to comment