1 From: Arend van Spriel <arend@broadcom.com>
2 Date: Mon, 11 Apr 2016 11:35:28 +0200
3 Subject: [PATCH] brcmfmac: create common function for handling
6 In receive path brcmf_proto_hdrpull() needs to be called and handled
7 similar in brcmf_rx_frame() and brcmf_rx_event(). Move that duplicated
8 code in separate function.
10 Reviewed-by: Hante Meuleman <hante.meuleman@broadcom.com>
11 Reviewed-by: Pieter-Paul Giesberts <pieter-paul.giesberts@broadcom.com>
12 Reviewed-by: Franky Lin <franky.lin@broadcom.com>
13 Signed-off-by: Arend van Spriel <arend@broadcom.com>
14 Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
17 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
18 +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
19 @@ -322,26 +322,35 @@ void brcmf_netif_rx(struct brcmf_if *ifp
23 -void brcmf_rx_frame(struct device *dev, struct sk_buff *skb, bool handle_event)
24 +static int brcmf_rx_hdrpull(struct brcmf_pub *drvr, struct sk_buff *skb,
25 + struct brcmf_if **ifp)
27 - struct brcmf_if *ifp;
28 - struct brcmf_bus *bus_if = dev_get_drvdata(dev);
29 - struct brcmf_pub *drvr = bus_if->drvr;
32 - brcmf_dbg(DATA, "Enter: %s: rxp=%p\n", dev_name(dev), skb);
34 /* process and remove protocol-specific header */
35 - ret = brcmf_proto_hdrpull(drvr, true, skb, &ifp);
36 + ret = brcmf_proto_hdrpull(drvr, true, skb, ifp);
38 - if (ret || !ifp || !ifp->ndev) {
39 + if (ret || !(*ifp) || !(*ifp)->ndev) {
40 if (ret != -ENODATA && ifp)
41 - ifp->stats.rx_errors++;
42 + (*ifp)->stats.rx_errors++;
43 brcmu_pkt_buf_free_skb(skb);
48 - skb->protocol = eth_type_trans(skb, ifp->ndev);
49 + skb->protocol = eth_type_trans(skb, (*ifp)->ndev);
53 +void brcmf_rx_frame(struct device *dev, struct sk_buff *skb, bool handle_event)
55 + struct brcmf_if *ifp;
56 + struct brcmf_bus *bus_if = dev_get_drvdata(dev);
57 + struct brcmf_pub *drvr = bus_if->drvr;
59 + brcmf_dbg(DATA, "Enter: %s: rxp=%p\n", dev_name(dev), skb);
61 + if (brcmf_rx_hdrpull(drvr, skb, &ifp))
64 if (brcmf_proto_is_reorder_skb(skb)) {
65 brcmf_proto_rxreorder(ifp, skb);
66 @@ -359,21 +368,11 @@ void brcmf_rx_event(struct device *dev,
68 struct brcmf_bus *bus_if = dev_get_drvdata(dev);
69 struct brcmf_pub *drvr = bus_if->drvr;
72 brcmf_dbg(EVENT, "Enter: %s: rxp=%p\n", dev_name(dev), skb);
74 - /* process and remove protocol-specific header */
75 - ret = brcmf_proto_hdrpull(drvr, true, skb, &ifp);
77 - if (ret || !ifp || !ifp->ndev) {
78 - if (ret != -ENODATA && ifp)
79 - ifp->stats.rx_errors++;
80 - brcmu_pkt_buf_free_skb(skb);
81 + if (brcmf_rx_hdrpull(drvr, skb, &ifp))
85 - skb->protocol = eth_type_trans(skb, ifp->ndev);
87 brcmf_fweh_process_skb(ifp->drvr, skb);
88 brcmu_pkt_buf_free_skb(skb);