mac80211: add pending brcmfmac patches fixing multiple interfaces
[openwrt.git] / package / kernel / mac80211 / patches / 329-brcmfmac-change-prototype-for-brcmf_fws_hdrpull.patch
1 From: Arend van Spriel <arend@broadcom.com>
2 Date: Wed, 26 Aug 2015 22:15:03 +0200
3 Subject: [PATCH] brcmfmac: change prototype for brcmf_fws_hdrpull()
4
5 Instead of passing ifidx and drvr just pass struct brcmf_if pointer
6 which holds both parameters.
7
8 Reviewed-by: Hante Meuleman <meuleman@broadcom.com>
9 Reviewed-by: Franky (Zhenhui) Lin <frankyl@broadcom.com>
10 Reviewed-by: Pieter-Paul Giesberts <pieterpg@broadcom.com>
11 Signed-off-by: Arend van Spriel <arend@broadcom.com>
12 ---
13
14 --- a/drivers/net/wireless/brcm80211/brcmfmac/bcdc.c
15 +++ b/drivers/net/wireless/brcm80211/brcmfmac/bcdc.c
16 @@ -312,8 +312,7 @@ brcmf_proto_bcdc_hdrpull(struct brcmf_pu
17  
18         skb_pull(pktbuf, BCDC_HEADER_LEN);
19         if (do_fws)
20 -               brcmf_fws_hdrpull(drvr, tmp_if->ifidx, h->data_offset << 2,
21 -                                 pktbuf);
22 +               brcmf_fws_hdrpull(tmp_if, h->data_offset << 2, pktbuf);
23         else
24                 skb_pull(pktbuf, h->data_offset << 2);
25  
26 --- a/drivers/net/wireless/brcm80211/brcmfmac/fwsignal.c
27 +++ b/drivers/net/wireless/brcm80211/brcmfmac/fwsignal.c
28 @@ -1616,11 +1616,10 @@ static int brcmf_fws_notify_bcmc_credit_
29         return 0;
30  }
31  
32 -int brcmf_fws_hdrpull(struct brcmf_pub *drvr, int ifidx, s16 signal_len,
33 -                     struct sk_buff *skb)
34 +void brcmf_fws_hdrpull(struct brcmf_if *ifp, s16 siglen, struct sk_buff *skb)
35  {
36         struct brcmf_skb_reorder_data *rd;
37 -       struct brcmf_fws_info *fws = drvr->fws;
38 +       struct brcmf_fws_info *fws = ifp->drvr->fws;
39         u8 *signal_data;
40         s16 data_len;
41         u8 type;
42 @@ -1630,20 +1629,20 @@ int brcmf_fws_hdrpull(struct brcmf_pub *
43         s32 err;
44  
45         brcmf_dbg(HDRS, "enter: ifidx %d, skblen %u, sig %d\n",
46 -                 ifidx, skb->len, signal_len);
47 +                 ifp->ifidx, skb->len, siglen);
48  
49 -       WARN_ON(signal_len > skb->len);
50 +       WARN_ON(siglen > skb->len);
51  
52 -       if (!signal_len)
53 -               return 0;
54 +       if (!siglen)
55 +               return;
56         /* if flow control disabled, skip to packet data and leave */
57         if ((!fws) || (!fws->fw_signals)) {
58 -               skb_pull(skb, signal_len);
59 -               return 0;
60 +               skb_pull(skb, siglen);
61 +               return;
62         }
63  
64         fws->stats.header_pulls++;
65 -       data_len = signal_len;
66 +       data_len = siglen;
67         signal_data = skb->data;
68  
69         status = BRCMF_FWS_RET_OK_NOSCHEDULE;
70 @@ -1731,14 +1730,12 @@ int brcmf_fws_hdrpull(struct brcmf_pub *
71         /* signalling processing result does
72          * not affect the actual ethernet packet.
73          */
74 -       skb_pull(skb, signal_len);
75 +       skb_pull(skb, siglen);
76  
77         /* this may be a signal-only packet
78          */
79         if (skb->len == 0)
80                 fws->stats.header_only_pkt++;
81 -
82 -       return 0;
83  }
84  
85  static u8 brcmf_fws_precommit_skb(struct brcmf_fws_info *fws, int fifo,
86 --- a/drivers/net/wireless/brcm80211/brcmfmac/fwsignal.h
87 +++ b/drivers/net/wireless/brcm80211/brcmfmac/fwsignal.h
88 @@ -21,8 +21,7 @@
89  int brcmf_fws_init(struct brcmf_pub *drvr);
90  void brcmf_fws_deinit(struct brcmf_pub *drvr);
91  bool brcmf_fws_fc_active(struct brcmf_fws_info *fws);
92 -int brcmf_fws_hdrpull(struct brcmf_pub *drvr, int ifidx, s16 signal_len,
93 -                     struct sk_buff *skb);
94 +void brcmf_fws_hdrpull(struct brcmf_if *ifp, s16 siglen, struct sk_buff *skb);
95  int brcmf_fws_process_skb(struct brcmf_if *ifp, struct sk_buff *skb);
96  
97  void brcmf_fws_reset_interface(struct brcmf_if *ifp);