|
@@ -509,9 +509,8 @@ netif_rx:
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-void brcmf_rx_frames(struct device *dev, struct sk_buff_head *skb_list)
|
|
|
+void brcmf_rx_frame(struct device *dev, struct sk_buff *skb)
|
|
|
{
|
|
|
- struct sk_buff *skb, *pnext;
|
|
|
struct brcmf_if *ifp;
|
|
|
struct brcmf_bus *bus_if = dev_get_drvdata(dev);
|
|
|
struct brcmf_pub *drvr = bus_if->drvr;
|
|
@@ -519,29 +518,24 @@ void brcmf_rx_frames(struct device *dev, struct sk_buff_head *skb_list)
|
|
|
u8 ifidx;
|
|
|
int ret;
|
|
|
|
|
|
- brcmf_dbg(DATA, "Enter: %s: count=%u\n", dev_name(dev),
|
|
|
- skb_queue_len(skb_list));
|
|
|
+ brcmf_dbg(DATA, "Enter: %s: rxp=%p\n", dev_name(dev), skb);
|
|
|
|
|
|
- skb_queue_walk_safe(skb_list, skb, pnext) {
|
|
|
- skb_unlink(skb, skb_list);
|
|
|
-
|
|
|
- /* process and remove protocol-specific header */
|
|
|
- ret = brcmf_proto_hdrpull(drvr, true, &ifidx, skb);
|
|
|
- ifp = drvr->iflist[ifidx];
|
|
|
-
|
|
|
- if (ret || !ifp || !ifp->ndev) {
|
|
|
- if ((ret != -ENODATA) && ifp)
|
|
|
- ifp->stats.rx_errors++;
|
|
|
- brcmu_pkt_buf_free_skb(skb);
|
|
|
- continue;
|
|
|
- }
|
|
|
+ /* process and remove protocol-specific header */
|
|
|
+ ret = brcmf_proto_hdrpull(drvr, true, &ifidx, skb);
|
|
|
+ ifp = drvr->iflist[ifidx];
|
|
|
|
|
|
- rd = (struct brcmf_skb_reorder_data *)skb->cb;
|
|
|
- if (rd->reorder)
|
|
|
- brcmf_rxreorder_process_info(ifp, rd->reorder, skb);
|
|
|
- else
|
|
|
- brcmf_netif_rx(ifp, skb);
|
|
|
+ if (ret || !ifp || !ifp->ndev) {
|
|
|
+ if ((ret != -ENODATA) && ifp)
|
|
|
+ ifp->stats.rx_errors++;
|
|
|
+ brcmu_pkt_buf_free_skb(skb);
|
|
|
+ return;
|
|
|
}
|
|
|
+
|
|
|
+ rd = (struct brcmf_skb_reorder_data *)skb->cb;
|
|
|
+ if (rd->reorder)
|
|
|
+ brcmf_rxreorder_process_info(ifp, rd->reorder, skb);
|
|
|
+ else
|
|
|
+ brcmf_netif_rx(ifp, skb);
|
|
|
}
|
|
|
|
|
|
void brcmf_txfinalize(struct brcmf_pub *drvr, struct sk_buff *txp,
|