Skip to content

Commit 8ee3bde

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 543ca20 commit 8ee3bde

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
@@ -409,6 +409,7 @@ struct brcmf_pciedev_info {
409409
wait_queue_head_t mbdata_resp_wait;
410410
bool mbdata_completed;
411411
bool irq_allocated;
412+
bool irq_ready;
412413
bool have_msi;
413414
bool wowl_enabled;
414415
u8 dma_idx_sz;
@@ -989,6 +990,8 @@ static void brcmf_pcie_bus_console_read(struct brcmf_pciedev_info *devinfo,
989990
static void brcmf_pcie_intr_disable(struct brcmf_pciedev_info *devinfo)
990991
{
991992
brcmf_pcie_write_reg32(devinfo, devinfo->reginfo->mailboxmask, 0);
993+
994+
devinfo->irq_ready = false;
992995
}
993996

994997

@@ -997,6 +1000,8 @@ static void brcmf_pcie_intr_enable(struct brcmf_pciedev_info *devinfo)
9971000
brcmf_pcie_write_reg32(devinfo, devinfo->reginfo->mailboxmask,
9981001
devinfo->reginfo->int_d2h_db |
9991002
devinfo->reginfo->int_fn0);
1003+
1004+
devinfo->irq_ready = true;
10001005
}
10011006

10021007
static void brcmf_pcie_hostready(struct brcmf_pciedev_info *devinfo)
@@ -1042,7 +1047,7 @@ static irqreturn_t brcmf_pcie_isr_thread(int irq, void *arg)
10421047
brcmf_pcie_poll_mb_data(devinfo);
10431048
}
10441049
if (devinfo->have_msi || status & devinfo->reginfo->int_d2h_db) {
1045-
if (devinfo->state == BRCMFMAC_PCIE_STATE_UP)
1050+
if (devinfo->state == BRCMFMAC_PCIE_STATE_UP && devinfo->irq_ready)
10461051
brcmf_proto_msgbuf_rx_trigger(&devinfo->pdev->dev);
10471052
}
10481053

0 commit comments

Comments
 (0)