|
@@ -1080,8 +1080,17 @@ brcmf_msgbuf_rx_skb(struct brcmf_msgbuf *msgbuf, struct sk_buff *skb,
|
|
|
{
|
|
|
struct brcmf_if *ifp;
|
|
|
|
|
|
+ /* The ifidx is the idx to map to matching netdev/ifp. When receiving
|
|
|
+ * events this is easy because it contains the bssidx which maps
|
|
|
+ * 1-on-1 to the netdev/ifp. But for data frames the ifidx is rcvd.
|
|
|
+ * bssidx 1 is used for p2p0 and no data can be received or
|
|
|
+ * transmitted on it. Therefor bssidx is ifidx + 1 if ifidx > 0
|
|
|
+ */
|
|
|
+ if (ifidx)
|
|
|
+ (ifidx)++;
|
|
|
ifp = msgbuf->drvr->iflist[ifidx];
|
|
|
if (!ifp || !ifp->ndev) {
|
|
|
+ brcmf_err("Received pkt for invalid ifidx %d\n", ifidx);
|
|
|
brcmu_pkt_buf_free_skb(skb);
|
|
|
return;
|
|
|
}
|