diff options
| author | Anirudh Venkataramanan <[email protected]> | 2018-10-26 17:40:51 +0000 |
|---|---|---|
| committer | Jeff Kirsher <[email protected]> | 2018-11-06 20:46:46 +0000 |
| commit | afd9d4ab58db20029a75cf82f23b6a5641cd7d6f (patch) | |
| tree | 0ab4a997776eea0b94a7f284955100cc39e496f1 /drivers/net/ethernet/intel/ice/ice_main.c | |
| parent | ice: Set carrier state and start/stop queues in rebuild (diff) | |
| download | kernel-afd9d4ab58db20029a75cf82f23b6a5641cd7d6f.tar.gz kernel-afd9d4ab58db20029a75cf82f23b6a5641cd7d6f.zip | |
ice: Check for reset in progress during remove
The remove path does not currently check to see if a
reset is in progress before proceeding. This can cause
a resource collision resulting in various types of errors.
Check for reset in progress and wait for a reasonable
amount of time before allowing the remove to progress.
Signed-off-by: Dave Ertman <[email protected]>
Signed-off-by: Anirudh Venkataramanan <[email protected]>
Tested-by: Andrew Bowers <[email protected]>
Signed-off-by: Jeff Kirsher <[email protected]>
Diffstat (limited to 'drivers/net/ethernet/intel/ice/ice_main.c')
| -rw-r--r-- | drivers/net/ethernet/intel/ice/ice_main.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/net/ethernet/intel/ice/ice_main.c b/drivers/net/ethernet/intel/ice/ice_main.c index 6d31ffb64940..aee22f11a41a 100644 --- a/drivers/net/ethernet/intel/ice/ice_main.c +++ b/drivers/net/ethernet/intel/ice/ice_main.c @@ -2182,6 +2182,12 @@ static void ice_remove(struct pci_dev *pdev) if (!pf) return; + for (i = 0; i < ICE_MAX_RESET_WAIT; i++) { + if (!ice_is_reset_in_progress(pf->state)) + break; + msleep(100); + } + set_bit(__ICE_DOWN, pf->state); ice_service_task_stop(pf); |
