brcmfmac: flush queue upon MACDESC_DEL firmware signal
authorArend van Spriel <arend@broadcom.com>
Tue, 23 Apr 2013 10:53:13 +0000 (12:53 +0200)
committerJohn W. Linville <linville@tuxdriver.com>
Tue, 23 Apr 2013 18:17:02 +0000 (14:17 -0400)
When firmware signals the driver to remove a destination entry
it may have sk_buff packets queued for it. These should be freed.

Reviewed-by: Pieter-Paul Giesberts <pieterpg@broadcom.com>
Reviewed-by: Hante Meuleman <meuleman@broadcom.com>
Signed-off-by: Arend van Spriel <arend@broadcom.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/brcm80211/brcmfmac/fwsignal.c

index 66cdc45..b0591e3 100644 (file)
@@ -871,9 +871,10 @@ int brcmf_fws_macdesc_indicate(struct brcmf_fws_info *fws, u8 type, u8 *data)
        entry = &fws->desc.nodes[mac_handle & 0x1F];
        if (type == BRCMF_FWS_TYPE_MACDESC_DEL) {
                brcmf_dbg(TRACE, "deleting mac %pM idx %d\n", addr, ifidx);
-               if (entry->occupied)
+               if (entry->occupied) {
+                       brcmf_fws_mac_desc_cleanup(fws, entry, -1);
                        brcmf_fws_clear_mac_descriptor(entry);
-               else
+               else
                        fws->stats.mac_update_failed++;
                return 0;
        }