Skip to content

Commit 091bc2c

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 831dcb6 commit 091bc2c

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
@@ -408,6 +408,7 @@ struct brcmf_pciedev_info {
408408
wait_queue_head_t mbdata_resp_wait;
409409
bool mbdata_completed;
410410
bool irq_allocated;
411+
bool irq_ready;
411412
bool have_msi;
412413
bool wowl_enabled;
413414
u8 dma_idx_sz;
@@ -991,6 +992,8 @@ static void brcmf_pcie_bus_console_read(struct brcmf_pciedev_info *devinfo,
991992
static void brcmf_pcie_intr_disable(struct brcmf_pciedev_info *devinfo)
992993
{
993994
brcmf_pcie_write_reg32(devinfo, devinfo->reginfo->mailboxmask, 0);
995+
996+
devinfo->irq_ready = false;
994997
}
995998

996999

@@ -999,6 +1002,8 @@ static void brcmf_pcie_intr_enable(struct brcmf_pciedev_info *devinfo)
9991002
brcmf_pcie_write_reg32(devinfo, devinfo->reginfo->mailboxmask,
10001003
devinfo->reginfo->int_d2h_db |
10011004
devinfo->reginfo->int_fn0);
1005+
1006+
devinfo->irq_ready = true;
10021007
}
10031008

10041009
static void brcmf_pcie_hostready(struct brcmf_pciedev_info *devinfo)
@@ -1044,7 +1049,7 @@ static irqreturn_t brcmf_pcie_isr_thread(int irq, void *arg)
10441049
brcmf_pcie_poll_mb_data(devinfo);
10451050
}
10461051
if (devinfo->have_msi || status & devinfo->reginfo->int_d2h_db) {
1047-
if (devinfo->state == BRCMFMAC_PCIE_STATE_UP)
1052+
if (devinfo->state == BRCMFMAC_PCIE_STATE_UP && devinfo->irq_ready)
10481053
brcmf_proto_msgbuf_rx_trigger(&devinfo->pdev->dev);
10491054
}
10501055

0 commit comments

Comments
 (0)