mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-28 11:18:45 +07:00
bnxt_en: Disable MSIX before re-reserving NQs/CMPL rings.
When bringing up a device, the code checks to see if the number of MSIX has changed. pci_disable_msix() should be called first before changing the number of reserved NQs/CMPL rings. This ensures that the MSIX vectors associated with the NQs/CMPL rings are still properly mapped when pci_disable_msix() masks the vectors. This patch will prevent errors when RDMA support is added for the new 57500 chips. When the RDMA driver shuts down, the number of NQs is decreased and we must use the new sequence to prevent MSIX errors. Signed-off-by: Michael Chan <michael.chan@broadcom.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
780baad44f
commit
36d65be9a8
@ -7241,23 +7241,26 @@ static void bnxt_clear_int_mode(struct bnxt *bp)
|
||||
int bnxt_reserve_rings(struct bnxt *bp)
|
||||
{
|
||||
int tcs = netdev_get_num_tc(bp->dev);
|
||||
bool reinit_irq = false;
|
||||
int rc;
|
||||
|
||||
if (!bnxt_need_reserve_rings(bp))
|
||||
return 0;
|
||||
|
||||
rc = __bnxt_reserve_rings(bp);
|
||||
if (rc) {
|
||||
netdev_err(bp->dev, "ring reservation failure rc: %d\n", rc);
|
||||
return rc;
|
||||
}
|
||||
if (BNXT_NEW_RM(bp) && (bnxt_get_num_msix(bp) != bp->total_irqs)) {
|
||||
bnxt_ulp_irq_stop(bp);
|
||||
bnxt_clear_int_mode(bp);
|
||||
rc = bnxt_init_int_mode(bp);
|
||||
reinit_irq = true;
|
||||
}
|
||||
rc = __bnxt_reserve_rings(bp);
|
||||
if (reinit_irq) {
|
||||
if (!rc)
|
||||
rc = bnxt_init_int_mode(bp);
|
||||
bnxt_ulp_irq_restart(bp, rc);
|
||||
if (rc)
|
||||
return rc;
|
||||
}
|
||||
if (rc) {
|
||||
netdev_err(bp->dev, "ring reservation/IRQ init failure rc: %d\n", rc);
|
||||
return rc;
|
||||
}
|
||||
if (tcs && (bp->tx_nr_rings_per_tc * tcs != bp->tx_nr_rings)) {
|
||||
netdev_err(bp->dev, "tx ring reservation failure\n");
|
||||
|
Loading…
Reference in New Issue
Block a user