mirror of
https://github.com/torvalds/linux
synced 2024-11-05 18:23:50 +00:00
i40e: fix inconsistent statuses after a PF reset
This patch fixes a problem of possibly getting inconsistent flow control statuses after a PF reset. Requested_mode was being set with a default value during probing, but the initial HW state could be different from this mode. Change-ID: I772bf07b78616e87086418d4bd87954b66fa17cd Signed-off-by: Helin Zhang <helin.zhang@intel.com> Tested-by: Andrew Bowers <andrewx.bowers@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
This commit is contained in:
parent
40d01366e6
commit
58fc3267f1
1 changed files with 20 additions and 0 deletions
|
@ -10183,6 +10183,7 @@ static int i40e_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
|
|||
int err;
|
||||
u32 len;
|
||||
u32 i;
|
||||
u8 set_fc_aq_fail;
|
||||
|
||||
err = pci_enable_device_mem(pdev);
|
||||
if (err)
|
||||
|
@ -10447,6 +10448,25 @@ static int i40e_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
|
|||
dev_info(&pdev->dev, "setup_pf_switch failed: %d\n", err);
|
||||
goto err_vsis;
|
||||
}
|
||||
|
||||
/* Make sure flow control is set according to current settings */
|
||||
err = i40e_set_fc(hw, &set_fc_aq_fail, true);
|
||||
if (set_fc_aq_fail & I40E_SET_FC_AQ_FAIL_GET)
|
||||
dev_dbg(&pf->pdev->dev,
|
||||
"Set fc with err %s aq_err %s on get_phy_cap\n",
|
||||
i40e_stat_str(hw, err),
|
||||
i40e_aq_str(hw, hw->aq.asq_last_status));
|
||||
if (set_fc_aq_fail & I40E_SET_FC_AQ_FAIL_SET)
|
||||
dev_dbg(&pf->pdev->dev,
|
||||
"Set fc with err %s aq_err %s on set_phy_config\n",
|
||||
i40e_stat_str(hw, err),
|
||||
i40e_aq_str(hw, hw->aq.asq_last_status));
|
||||
if (set_fc_aq_fail & I40E_SET_FC_AQ_FAIL_UPDATE)
|
||||
dev_dbg(&pf->pdev->dev,
|
||||
"Set fc with err %s aq_err %s on get_link_info\n",
|
||||
i40e_stat_str(hw, err),
|
||||
i40e_aq_str(hw, hw->aq.asq_last_status));
|
||||
|
||||
/* if FDIR VSI was set up, start it now */
|
||||
for (i = 0; i < pf->num_alloc_vsi; i++) {
|
||||
if (pf->vsi[i] && pf->vsi[i]->type == I40E_VSI_FDIR) {
|
||||
|
|
Loading…
Reference in a new issue