diff options
author | Hante Meuleman <meuleman@broadcom.com> | 2014-12-03 15:05:28 -0500 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2014-12-04 11:35:02 -0500 |
commit | 94a612086f5e78272e831c04b673778f8546ea73 (patch) | |
tree | 41250b5d33753da33a167aa65e94dfc6ce6c1c18 | |
parent | 333c2aa029b847051a2db76a6ca59f699a520030 (diff) |
brcmfmac: Fix ifidx for rx data by msgbuf.
The ifidx provided by FW needs to be offsetted when receiving data
packets.
Cc: stable@vger.kernel.org # v3.17, v3.18
Reviewed-by: Arend Van Spriel <arend@broadcom.com>
Reviewed-by: Pieter-Paul Giesberts <pieterpg@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>
-rw-r--r-- | drivers/net/wireless/brcm80211/brcmfmac/msgbuf.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/msgbuf.c b/drivers/net/wireless/brcm80211/brcmfmac/msgbuf.c index 5b0b70fa1aea..456944a6a2db 100644 --- a/drivers/net/wireless/brcm80211/brcmfmac/msgbuf.c +++ b/drivers/net/wireless/brcm80211/brcmfmac/msgbuf.c | |||
@@ -1080,8 +1080,17 @@ brcmf_msgbuf_rx_skb(struct brcmf_msgbuf *msgbuf, struct sk_buff *skb, | |||
1080 | { | 1080 | { |
1081 | struct brcmf_if *ifp; | 1081 | struct brcmf_if *ifp; |
1082 | 1082 | ||
1083 | /* The ifidx is the idx to map to matching netdev/ifp. When receiving | ||
1084 | * events this is easy because it contains the bssidx which maps | ||
1085 | * 1-on-1 to the netdev/ifp. But for data frames the ifidx is rcvd. | ||
1086 | * bssidx 1 is used for p2p0 and no data can be received or | ||
1087 | * transmitted on it. Therefor bssidx is ifidx + 1 if ifidx > 0 | ||
1088 | */ | ||
1089 | if (ifidx) | ||
1090 | (ifidx)++; | ||
1083 | ifp = msgbuf->drvr->iflist[ifidx]; | 1091 | ifp = msgbuf->drvr->iflist[ifidx]; |
1084 | if (!ifp || !ifp->ndev) { | 1092 | if (!ifp || !ifp->ndev) { |
1093 | brcmf_err("Received pkt for invalid ifidx %d\n", ifidx); | ||
1085 | brcmu_pkt_buf_free_skb(skb); | 1094 | brcmu_pkt_buf_free_skb(skb); |
1086 | return; | 1095 | return; |
1087 | } | 1096 | } |