diff options
Diffstat (limited to 'drivers/net/ethernet/intel/i40e/i40e_main.c')
-rw-r--r-- | drivers/net/ethernet/intel/i40e/i40e_main.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/drivers/net/ethernet/intel/i40e/i40e_main.c b/drivers/net/ethernet/intel/i40e/i40e_main.c index b825f978d441..4a9873ec28c7 100644 --- a/drivers/net/ethernet/intel/i40e/i40e_main.c +++ b/drivers/net/ethernet/intel/i40e/i40e_main.c | |||
@@ -10295,6 +10295,12 @@ static int i40e_probe(struct pci_dev *pdev, const struct pci_device_id *ent) | |||
10295 | /* set up a default setting for link flow control */ | 10295 | /* set up a default setting for link flow control */ |
10296 | pf->hw.fc.requested_mode = I40E_FC_NONE; | 10296 | pf->hw.fc.requested_mode = I40E_FC_NONE; |
10297 | 10297 | ||
10298 | /* set up the locks for the AQ, do this only once in probe | ||
10299 | * and destroy them only once in remove | ||
10300 | */ | ||
10301 | mutex_init(&hw->aq.asq_mutex); | ||
10302 | mutex_init(&hw->aq.arq_mutex); | ||
10303 | |||
10298 | err = i40e_init_adminq(hw); | 10304 | err = i40e_init_adminq(hw); |
10299 | 10305 | ||
10300 | /* provide nvm, fw, api versions */ | 10306 | /* provide nvm, fw, api versions */ |
@@ -10697,7 +10703,6 @@ static void i40e_remove(struct pci_dev *pdev) | |||
10697 | set_bit(__I40E_DOWN, &pf->state); | 10703 | set_bit(__I40E_DOWN, &pf->state); |
10698 | del_timer_sync(&pf->service_timer); | 10704 | del_timer_sync(&pf->service_timer); |
10699 | cancel_work_sync(&pf->service_task); | 10705 | cancel_work_sync(&pf->service_task); |
10700 | i40e_fdir_teardown(pf); | ||
10701 | 10706 | ||
10702 | if (pf->flags & I40E_FLAG_SRIOV_ENABLED) { | 10707 | if (pf->flags & I40E_FLAG_SRIOV_ENABLED) { |
10703 | i40e_free_vfs(pf); | 10708 | i40e_free_vfs(pf); |
@@ -10740,6 +10745,10 @@ static void i40e_remove(struct pci_dev *pdev) | |||
10740 | "Failed to destroy the Admin Queue resources: %d\n", | 10745 | "Failed to destroy the Admin Queue resources: %d\n", |
10741 | ret_code); | 10746 | ret_code); |
10742 | 10747 | ||
10748 | /* destroy the locks only once, here */ | ||
10749 | mutex_destroy(&hw->aq.arq_mutex); | ||
10750 | mutex_destroy(&hw->aq.asq_mutex); | ||
10751 | |||
10743 | /* Clear all dynamic memory lists of rings, q_vectors, and VSIs */ | 10752 | /* Clear all dynamic memory lists of rings, q_vectors, and VSIs */ |
10744 | i40e_clear_interrupt_scheme(pf); | 10753 | i40e_clear_interrupt_scheme(pf); |
10745 | for (i = 0; i < pf->num_alloc_vsi; i++) { | 10754 | for (i = 0; i < pf->num_alloc_vsi; i++) { |