|
@@ -6096,7 +6096,7 @@ bnx2_request_irq(struct bnx2 *bp)
|
|
|
}
|
|
|
|
|
|
static void
|
|
|
-bnx2_free_irq(struct bnx2 *bp)
|
|
|
+__bnx2_free_irq(struct bnx2 *bp)
|
|
|
{
|
|
|
struct bnx2_irq *irq;
|
|
|
int i;
|
|
@@ -6107,6 +6107,13 @@ bnx2_free_irq(struct bnx2 *bp)
|
|
|
free_irq(irq->vector, &bp->bnx2_napi[i]);
|
|
|
irq->requested = 0;
|
|
|
}
|
|
|
+}
|
|
|
+
|
|
|
+static void
|
|
|
+bnx2_free_irq(struct bnx2 *bp)
|
|
|
+{
|
|
|
+
|
|
|
+ __bnx2_free_irq(bp);
|
|
|
if (bp->flags & BNX2_FLAG_USING_MSI)
|
|
|
pci_disable_msi(bp->pdev);
|
|
|
else if (bp->flags & BNX2_FLAG_USING_MSIX)
|
|
@@ -7092,6 +7099,7 @@ bnx2_change_ring_size(struct bnx2 *bp, u32 rx, u32 tx)
|
|
|
|
|
|
bnx2_netif_stop(bp, true);
|
|
|
bnx2_reset_chip(bp, BNX2_DRV_MSG_CODE_RESET);
|
|
|
+ __bnx2_free_irq(bp);
|
|
|
bnx2_free_skbs(bp);
|
|
|
bnx2_free_mem(bp);
|
|
|
}
|
|
@@ -7103,6 +7111,9 @@ bnx2_change_ring_size(struct bnx2 *bp, u32 rx, u32 tx)
|
|
|
int rc;
|
|
|
|
|
|
rc = bnx2_alloc_mem(bp);
|
|
|
+ if (!rc)
|
|
|
+ rc = bnx2_request_irq(bp);
|
|
|
+
|
|
|
if (!rc)
|
|
|
rc = bnx2_init_nic(bp, 0);
|
|
|
|