brcmfmac: simply remove flowring if bus is down
authorArend van Spriel <arend.vanspriel@broadcom.com>
Thu, 11 Jul 2019 09:05:11 +0000 (11:05 +0200)
committerKalle Valo <kvalo@codeaurora.org>
Wed, 24 Jul 2019 11:51:25 +0000 (14:51 +0300)
When the bus is down, eg. due to rmmod, there is no need to
attempt to inform firmware about it.

Reviewed-by: Hante Meuleman <hante.meuleman@broadcom.com>
Reviewed-by: Pieter-Paul Giesberts <pieter-paul.giesberts@broadcom.com>
Reviewed-by: Franky Lin <franky.lin@broadcom.com>
Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
drivers/net/wireless/broadcom/brcm80211/brcmfmac/msgbuf.c

index 241747b..8428be8 100644 (file)
@@ -1398,6 +1398,13 @@ void brcmf_msgbuf_delete_flowring(struct brcmf_pub *drvr, u16 flowid)
        u8 ifidx;
        int err;
 
+       /* no need to submit if firmware can not be reached */
+       if (drvr->bus_if->state != BRCMF_BUS_UP) {
+               brcmf_dbg(MSGBUF, "bus down, flowring will be removed\n");
+               brcmf_msgbuf_remove_flowring(msgbuf, flowid);
+               return;
+       }
+
        commonring = msgbuf->commonrings[BRCMF_H2D_MSGRING_CONTROL_SUBMIT];
        brcmf_commonring_lock(commonring);
        ret_ptr = brcmf_commonring_reserve_for_write(commonring);