diff options
author | Anjali Singhai Jain <anjali.singhai@intel.com> | 2013-12-21 00:44:44 -0500 |
---|---|---|
committer | Jeff Kirsher <jeffrey.t.kirsher@intel.com> | 2014-01-10 19:30:34 -0500 |
commit | 3b867b28ceeef2f958937c7ed1121fd6c99fead2 (patch) | |
tree | 2cfa744b8929f01457f04726fb46b2a1909e6a98 | |
parent | 5f90f42298e547cb721196f3d3f882276e338190 (diff) |
i40e: do not bail when disabling if Tx queue disable fails
Fix a bug where the driver was erroneously exiting the driver unload
path if one part of the unload failed. Instead of the original way
the driver should always continue when disabling and be sure to disable
all queues.
Change-ID: Ib8c81c596bc87c31d8e9ca97ebf871168475279d
Signed-off-by: Anjali Singhai Jain <anjali.singhai@intel.com>
Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
Tested-by: Kavindya Deegala <kavindya.s.deegala@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
-rw-r--r-- | drivers/net/ethernet/intel/i40e/i40e_main.c | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/drivers/net/ethernet/intel/i40e/i40e_main.c b/drivers/net/ethernet/intel/i40e/i40e_main.c index 80c83eb5c6c5..65c27cb1e9ec 100644 --- a/drivers/net/ethernet/intel/i40e/i40e_main.c +++ b/drivers/net/ethernet/intel/i40e/i40e_main.c | |||
@@ -3113,7 +3113,7 @@ static int i40e_vsi_control_rx(struct i40e_vsi *vsi, bool enable) | |||
3113 | **/ | 3113 | **/ |
3114 | int i40e_vsi_control_rings(struct i40e_vsi *vsi, bool request) | 3114 | int i40e_vsi_control_rings(struct i40e_vsi *vsi, bool request) |
3115 | { | 3115 | { |
3116 | int ret; | 3116 | int ret = 0; |
3117 | 3117 | ||
3118 | /* do rx first for enable and last for disable */ | 3118 | /* do rx first for enable and last for disable */ |
3119 | if (request) { | 3119 | if (request) { |
@@ -3122,10 +3122,9 @@ int i40e_vsi_control_rings(struct i40e_vsi *vsi, bool request) | |||
3122 | return ret; | 3122 | return ret; |
3123 | ret = i40e_vsi_control_tx(vsi, request); | 3123 | ret = i40e_vsi_control_tx(vsi, request); |
3124 | } else { | 3124 | } else { |
3125 | ret = i40e_vsi_control_tx(vsi, request); | 3125 | /* Ignore return value, we need to shutdown whatever we can */ |
3126 | if (ret) | 3126 | i40e_vsi_control_tx(vsi, request); |
3127 | return ret; | 3127 | i40e_vsi_control_rx(vsi, request); |
3128 | ret = i40e_vsi_control_rx(vsi, request); | ||
3129 | } | 3128 | } |
3130 | 3129 | ||
3131 | return ret; | 3130 | return ret; |