mirror of https://gitee.com/openkylin/linux.git
bnxt_en: Refactor logic to re-enable SRIOV after firmware reset detected.
Put the current logic in bnxt_open() to re-enable SRIOV after detecting firmware reset into a new function bnxt_reenable_sriov(). This call needs to be invoked in the firmware reset path also in the next patch. Signed-off-by: Michael Chan <michael.chan@broadcom.com> Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
14b41a2959
commit
c16d4ee0e3
|
@ -9241,6 +9241,17 @@ void bnxt_half_close_nic(struct bnxt *bp)
|
|||
bnxt_free_mem(bp, false);
|
||||
}
|
||||
|
||||
static void bnxt_reenable_sriov(struct bnxt *bp)
|
||||
{
|
||||
if (BNXT_PF(bp)) {
|
||||
struct bnxt_pf_info *pf = &bp->pf;
|
||||
int n = pf->active_vfs;
|
||||
|
||||
if (n)
|
||||
bnxt_cfg_hw_sriov(bp, &n, true);
|
||||
}
|
||||
}
|
||||
|
||||
static int bnxt_open(struct net_device *dev)
|
||||
{
|
||||
struct bnxt *bp = netdev_priv(dev);
|
||||
|
@ -9259,13 +9270,7 @@ static int bnxt_open(struct net_device *dev)
|
|||
bnxt_hwrm_if_change(bp, false);
|
||||
} else {
|
||||
if (test_and_clear_bit(BNXT_STATE_FW_RESET_DET, &bp->state)) {
|
||||
if (BNXT_PF(bp)) {
|
||||
struct bnxt_pf_info *pf = &bp->pf;
|
||||
int n = pf->active_vfs;
|
||||
|
||||
if (n)
|
||||
bnxt_cfg_hw_sriov(bp, &n, true);
|
||||
}
|
||||
bnxt_reenable_sriov(bp);
|
||||
if (!test_bit(BNXT_STATE_IN_FW_RESET, &bp->state))
|
||||
bnxt_ulp_start(bp, 0);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue