mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-28 05:24:47 +08:00
i40e: change behavior on PF in response to MDD event
TX MDD events reported on the PF are the result of the PF misconfiguring a descriptor and not because of "bad actions" by anything else. No need to reset now because if it results in a Tx hang, the Tx hang check will take care of it. Signed-off-by: Carolyn Wyborny <carolyn.wyborny@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
a7da7f1626
commit
a1df906c5b
@ -9696,7 +9696,6 @@ static void i40e_handle_mdd_event(struct i40e_pf *pf)
|
|||||||
{
|
{
|
||||||
struct i40e_hw *hw = &pf->hw;
|
struct i40e_hw *hw = &pf->hw;
|
||||||
bool mdd_detected = false;
|
bool mdd_detected = false;
|
||||||
bool pf_mdd_detected = false;
|
|
||||||
struct i40e_vf *vf;
|
struct i40e_vf *vf;
|
||||||
u32 reg;
|
u32 reg;
|
||||||
int i;
|
int i;
|
||||||
@ -9742,19 +9741,12 @@ static void i40e_handle_mdd_event(struct i40e_pf *pf)
|
|||||||
reg = rd32(hw, I40E_PF_MDET_TX);
|
reg = rd32(hw, I40E_PF_MDET_TX);
|
||||||
if (reg & I40E_PF_MDET_TX_VALID_MASK) {
|
if (reg & I40E_PF_MDET_TX_VALID_MASK) {
|
||||||
wr32(hw, I40E_PF_MDET_TX, 0xFFFF);
|
wr32(hw, I40E_PF_MDET_TX, 0xFFFF);
|
||||||
dev_info(&pf->pdev->dev, "TX driver issue detected, PF reset issued\n");
|
dev_dbg(&pf->pdev->dev, "TX driver issue detected on PF\n");
|
||||||
pf_mdd_detected = true;
|
|
||||||
}
|
}
|
||||||
reg = rd32(hw, I40E_PF_MDET_RX);
|
reg = rd32(hw, I40E_PF_MDET_RX);
|
||||||
if (reg & I40E_PF_MDET_RX_VALID_MASK) {
|
if (reg & I40E_PF_MDET_RX_VALID_MASK) {
|
||||||
wr32(hw, I40E_PF_MDET_RX, 0xFFFF);
|
wr32(hw, I40E_PF_MDET_RX, 0xFFFF);
|
||||||
dev_info(&pf->pdev->dev, "RX driver issue detected, PF reset issued\n");
|
dev_dbg(&pf->pdev->dev, "RX driver issue detected on PF\n");
|
||||||
pf_mdd_detected = true;
|
|
||||||
}
|
|
||||||
/* Queue belongs to the PF, initiate a reset */
|
|
||||||
if (pf_mdd_detected) {
|
|
||||||
set_bit(__I40E_PF_RESET_REQUESTED, pf->state);
|
|
||||||
i40e_service_event_schedule(pf);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user