aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/ethernet')
-rw-r--r--drivers/net/ethernet/intel/i40e/i40e_main.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/drivers/net/ethernet/intel/i40e/i40e_main.c b/drivers/net/ethernet/intel/i40e/i40e_main.c
index 3e55cef3176f..c3107dca24da 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_main.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_main.c
@@ -3862,6 +3862,15 @@ static void i40e_quiesce_vsi(struct i40e_vsi *vsi)
3862 if (test_bit(__I40E_DOWN, &vsi->state)) 3862 if (test_bit(__I40E_DOWN, &vsi->state))
3863 return; 3863 return;
3864 3864
3865 /* No need to disable FCoE VSI when Tx suspended */
3866 if ((test_bit(__I40E_PORT_TX_SUSPENDED, &vsi->back->state)) &&
3867 vsi->type == I40E_VSI_FCOE) {
3868 dev_dbg(&vsi->back->pdev->dev,
3869 "%s: VSI seid %d skipping FCoE VSI disable\n",
3870 __func__, vsi->seid);
3871 return;
3872 }
3873
3865 set_bit(__I40E_NEEDS_RESTART, &vsi->state); 3874 set_bit(__I40E_NEEDS_RESTART, &vsi->state);
3866 if (vsi->netdev && netif_running(vsi->netdev)) { 3875 if (vsi->netdev && netif_running(vsi->netdev)) {
3867 vsi->netdev->netdev_ops->ndo_stop(vsi->netdev); 3876 vsi->netdev->netdev_ops->ndo_stop(vsi->netdev);
@@ -3953,7 +3962,8 @@ static int i40e_pf_wait_txq_disabled(struct i40e_pf *pf)
3953 int v, ret = 0; 3962 int v, ret = 0;
3954 3963
3955 for (v = 0; v < pf->hw.func_caps.num_vsis; v++) { 3964 for (v = 0; v < pf->hw.func_caps.num_vsis; v++) {
3956 if (pf->vsi[v]) { 3965 /* No need to wait for FCoE VSI queues */
3966 if (pf->vsi[v] && pf->vsi[v]->type != I40E_VSI_FCOE) {
3957 ret = i40e_vsi_wait_txq_disabled(pf->vsi[v]); 3967 ret = i40e_vsi_wait_txq_disabled(pf->vsi[v]);
3958 if (ret) 3968 if (ret)
3959 break; 3969 break;