summaryrefslogtreecommitdiff
path: root/drivers/net/wireless/brcm80211
diff options
context:
space:
mode:
authorHante Meuleman <meuleman@broadcom.com>2013-06-06 11:17:58 (GMT)
committerJohn W. Linville <linville@tuxdriver.com>2013-06-12 19:02:20 (GMT)
commit0d24b0eade7d4b6a5d06fe02645449b1fd0f8e17 (patch)
treea2b9d8c735db01af2d79784f6c6bb246bad2ca56 /drivers/net/wireless/brcm80211
parent402e3ba20285f0ebe4f4bebdecb7ab24999f3626 (diff)
downloadlinux-fsl-qoriq-0d24b0eade7d4b6a5d06fe02645449b1fd0f8e17.tar.xz
brcmfmac: Accept only first creditmap event.
During P2P testing it turned out that the firmware sents multiple multiple creditmap event messages. Only the first message from the firmware should be processed. Otherwise the firmware-signalled flow control can run haywire when it has packets outstanding in firmware. Reviewed-by: Arend Van Spriel <arend@broadcom.com> Signed-off-by: Hante Meuleman <meuleman@broadcom.com> Signed-off-by: Arend van Spriel <arend@broadcom.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/brcm80211')
-rw-r--r--drivers/net/wireless/brcm80211/brcmfmac/fwsignal.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/fwsignal.c b/drivers/net/wireless/brcm80211/brcmfmac/fwsignal.c
index 5f38742..bba4ff0 100644
--- a/drivers/net/wireless/brcm80211/brcmfmac/fwsignal.c
+++ b/drivers/net/wireless/brcm80211/brcmfmac/fwsignal.c
@@ -434,6 +434,7 @@ struct brcmf_fws_info {
u32 fifo_delay_map;
unsigned long borrow_defer_timestamp;
bool bus_flow_blocked;
+ bool creditmap_received;
};
/*
@@ -1356,6 +1357,10 @@ static int brcmf_fws_notify_credit_map(struct brcmf_if *ifp,
brcmf_err("event payload too small (%d)\n", e->datalen);
return -EINVAL;
}
+ if (fws->creditmap_received)
+ return 0;
+
+ fws->creditmap_received = true;
brcmf_dbg(TRACE, "enter: credits %pM\n", credits);
brcmf_fws_lock(ifp->drvr, flags);