Skip to content

Commit fa75968

Browse files
committed
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 <[email protected]>
1 parent 8a96dfb commit fa75968

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
@@ -407,6 +407,7 @@ struct brcmf_pciedev_info {
407407
wait_queue_head_t mbdata_resp_wait;
408408
bool mbdata_completed;
409409
bool irq_allocated;
410+
bool irq_ready;
410411
bool have_msi;
411412
bool wowl_enabled;
412413
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)