Skip to content

Commit 7fcc5db

Browse files
marcanjannau
authored andcommitted
wifi: brcmfmac: Do not service msgbuf IRQs until ready in MSI mode
This is the counterpart to b50255c. In MSI mode we can still get MSIs even with IRQs disabled, so add an explicit gate for it. Signed-off-by: Hector Martin <marcan@marcan.st>
1 parent 138457e commit 7fcc5db

1 file changed

Lines changed: 6 additions & 1 deletion

File tree

  • drivers/net/wireless/broadcom/brcm80211/brcmfmac

drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -406,6 +406,7 @@ struct brcmf_pciedev_info {
406406
wait_queue_head_t mbdata_resp_wait;
407407
bool mbdata_completed;
408408
bool irq_allocated;
409+
bool irq_ready;
409410
bool have_msi;
410411
bool wowl_enabled;
411412
u8 dma_idx_sz;
@@ -987,6 +988,8 @@ static void brcmf_pcie_bus_console_read(struct brcmf_pciedev_info *devinfo,
987988
static void brcmf_pcie_intr_disable(struct brcmf_pciedev_info *devinfo)
988989
{
989990
brcmf_pcie_write_reg32(devinfo, devinfo->reginfo->mailboxmask, 0);
991+
992+
devinfo->irq_ready = false;
990993
}
991994

992995

@@ -995,6 +998,8 @@ static void brcmf_pcie_intr_enable(struct brcmf_pciedev_info *devinfo)
995998
brcmf_pcie_write_reg32(devinfo, devinfo->reginfo->mailboxmask,
996999
devinfo->reginfo->int_d2h_db |
9971000
devinfo->reginfo->int_fn0);
1001+
1002+
devinfo->irq_ready = true;
9981003
}
9991004

10001005
static void brcmf_pcie_hostready(struct brcmf_pciedev_info *devinfo)
@@ -1040,7 +1045,7 @@ static irqreturn_t brcmf_pcie_isr_thread(int irq, void *arg)
10401045
brcmf_pcie_poll_mb_data(devinfo);
10411046
}
10421047
if (devinfo->have_msi || status & devinfo->reginfo->int_d2h_db) {
1043-
if (devinfo->state == BRCMFMAC_PCIE_STATE_UP)
1048+
if (devinfo->state == BRCMFMAC_PCIE_STATE_UP && devinfo->irq_ready)
10441049
brcmf_proto_msgbuf_rx_trigger(&devinfo->pdev->dev);
10451050
}
10461051

0 commit comments

Comments
 (0)