aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/intel/i40e/i40e_main.c
diff options
context:
space:
mode:
authorNeerav Parikh <neerav.parikh@intel.com>2014-11-11 19:18:51 -0500
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>2014-11-18 04:09:22 -0500
commitd341b7a52be79520f8e8b1ed0e3df657b2442e5b (patch)
tree655eba3ec5dfd6ba11c6fe7e5c8f956ca75fd63c /drivers/net/ethernet/intel/i40e/i40e_main.c
parent69129dc39fac45e0ea1dbbca995abdac279df376 (diff)
i40e: Do not disable/enable FCoE VSI with DCB reconfig
FCoE VSI Tx queue disable times out when reconfiguring as a result of DCB TC configuration change event. The hardware allows us to skip disabling and enabling of Tx queues for VSIs with single TC enabled. As FCoE VSI is configured to have only single TC we skip it from disable/enable flow. Change-ID: Ia73ff3df8785ba2aa3db91e6f2c9005e61ebaec2 Signed-off-by: Neerav Parikh <neerav.parikh@intel.com> Tested-By: Jack Morgan <jack.morgan@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Diffstat (limited to 'drivers/net/ethernet/intel/i40e/i40e_main.c')
-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;