bnxt_en: Reserve rings after PCIe AER recovery if NIC interface is down
[ Upstream commit 5311598f7f3293683cdc761df71ae3469327332c ] After successful PCIe AER recovery, FW will reset all resource reservations. If it is IF_UP, the driver will call bnxt_open() and all resources will be reserved again. It it is IF_DOWN, we should call bnxt_reserve_rings() so that we can reserve resources including RoCE resources to allow RoCE to resume after AER. Without this patch, RoCE fails to resume in this IF_DOWN scenario. Later, if it becomes IF_UP, bnxt_open() will see that resources have been reserved and will not reserve again. Fixes: fb1e6e562b37 ("bnxt_en: Fix AER recovery.") Reviewed-by: Somnath Kotur <somnath.kotur@broadcom.com> Reviewed-by: Pavan Chebbi <pavan.chebbi@broadcom.com> Reviewed-by: Kashyap Desai <kashyap.desai@broadcom.com> Signed-off-by: Saravanan Vajravel <saravanan.vajravel@broadcom.com> Signed-off-by: Michael Chan <michael.chan@broadcom.com> Signed-off-by: Paolo Abeni <pabeni@redhat.com> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
3ff9d46acf
commit
d2072c5543
1 changed files with 6 additions and 2 deletions
|
@ -13107,8 +13107,12 @@ static void bnxt_io_resume(struct pci_dev *pdev)
|
||||||
rtnl_lock();
|
rtnl_lock();
|
||||||
|
|
||||||
err = bnxt_hwrm_func_qcaps(bp);
|
err = bnxt_hwrm_func_qcaps(bp);
|
||||||
if (!err && netif_running(netdev))
|
if (!err) {
|
||||||
err = bnxt_open(netdev);
|
if (netif_running(netdev))
|
||||||
|
err = bnxt_open(netdev);
|
||||||
|
else
|
||||||
|
err = bnxt_reserve_rings(bp, true);
|
||||||
|
}
|
||||||
|
|
||||||
bnxt_ulp_start(bp, err);
|
bnxt_ulp_start(bp, err);
|
||||||
if (!err) {
|
if (!err) {
|
||||||
|
|
Loading…
Add table
Reference in a new issue