ath10k-firmware: remove dependency on kmod-ath10k so that it can be selected instead
[15.05/openwrt.git] / package / kernel / mac80211 / patches / 374-0002-brcmfmac-Simplify-and-fix-usage-of-brcmf_ifname.patch
1 From: Hante Meuleman <meuleman@broadcom.com>
2 Date: Thu, 29 Oct 2015 20:33:12 +0100
3 Subject: [PATCH] brcmfmac: Simplify and fix usage of brcmf_ifname.
4
5 brcmf_ifname is a debug function to return a name related to an ifp,
6 but is using a rather complex implementation. It was also used
7 wrongly from bcdc as it did not use the bsscfgidx as it was supposed
8 to, but bssidx. This patch fixes that bug and simplifies
9 brcmf_ifname.
10
11 Reviewed-by: Arend Van Spriel <arend@broadcom.com>
12 Reviewed-by: Pieter-Paul Giesberts <pieterpg@broadcom.com>
13 Signed-off-by: Hante Meuleman <meuleman@broadcom.com>
14 Signed-off-by: Arend van Spriel <arend@broadcom.com>
15 Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
16 ---
17
18 --- a/drivers/net/wireless/brcm80211/brcmfmac/bcdc.c
19 +++ b/drivers/net/wireless/brcm80211/brcmfmac/bcdc.c
20 @@ -187,7 +187,8 @@ retry:
21                 goto retry;
22         if (id != bcdc->reqid) {
23                 brcmf_err("%s: unexpected request id %d (expected %d)\n",
24 -                         brcmf_ifname(drvr, ifidx), id, bcdc->reqid);
25 +                         brcmf_ifname(brcmf_get_ifp(drvr, ifidx)), id,
26 +                         bcdc->reqid);
27                 ret = -EINVAL;
28                 goto done;
29         }
30 @@ -234,7 +235,8 @@ brcmf_proto_bcdc_set_dcmd(struct brcmf_p
31  
32         if (id != bcdc->reqid) {
33                 brcmf_err("%s: unexpected request id %d (expected %d)\n",
34 -                         brcmf_ifname(drvr, ifidx), id, bcdc->reqid);
35 +                         brcmf_ifname(brcmf_get_ifp(drvr, ifidx)), id,
36 +                         bcdc->reqid);
37                 ret = -EINVAL;
38                 goto done;
39         }
40 @@ -298,13 +300,13 @@ brcmf_proto_bcdc_hdrpull(struct brcmf_pu
41         if (((h->flags & BCDC_FLAG_VER_MASK) >> BCDC_FLAG_VER_SHIFT) !=
42             BCDC_PROTO_VER) {
43                 brcmf_err("%s: non-BCDC packet received, flags 0x%x\n",
44 -                         brcmf_ifname(drvr, tmp_if->ifidx), h->flags);
45 +                         brcmf_ifname(tmp_if), h->flags);
46                 return -EBADE;
47         }
48  
49         if (h->flags & BCDC_FLAG_SUM_GOOD) {
50                 brcmf_dbg(BCDC, "%s: BDC rcv, good checksum, flags 0x%x\n",
51 -                         brcmf_ifname(drvr, tmp_if->ifidx), h->flags);
52 +                         brcmf_ifname(tmp_if), h->flags);
53                 pktbuf->ip_summed = CHECKSUM_UNNECESSARY;
54         }
55  
56 --- a/drivers/net/wireless/brcm80211/brcmfmac/core.c
57 +++ b/drivers/net/wireless/brcm80211/brcmfmac/core.c
58 @@ -66,20 +66,13 @@ static int brcmf_p2p_enable;
59  module_param_named(p2pon, brcmf_p2p_enable, int, 0);
60  MODULE_PARM_DESC(p2pon, "enable legacy p2p management functionality");
61  
62 -char *brcmf_ifname(struct brcmf_pub *drvr, int ifidx)
63 +char *brcmf_ifname(struct brcmf_if *ifp)
64  {
65 -       if (ifidx < 0 || ifidx >= BRCMF_MAX_IFS) {
66 -               brcmf_err("ifidx %d out of range\n", ifidx);
67 -               return "<if_bad>";
68 -       }
69 -
70 -       if (drvr->iflist[ifidx] == NULL) {
71 -               brcmf_err("null i/f %d\n", ifidx);
72 +       if (!ifp)
73                 return "<if_null>";
74 -       }
75  
76 -       if (drvr->iflist[ifidx]->ndev)
77 -               return drvr->iflist[ifidx]->ndev->name;
78 +       if (ifp->ndev)
79 +               return ifp->ndev->name;
80  
81         return "<if_none>";
82  }
83 @@ -237,14 +230,14 @@ static netdev_tx_t brcmf_netdev_start_xm
84                 struct sk_buff *skb2;
85  
86                 brcmf_dbg(INFO, "%s: insufficient headroom\n",
87 -                         brcmf_ifname(drvr, ifp->bssidx));
88 +                         brcmf_ifname(ifp));
89                 drvr->bus_if->tx_realloc++;
90                 skb2 = skb_realloc_headroom(skb, drvr->hdrlen);
91                 dev_kfree_skb(skb);
92                 skb = skb2;
93                 if (skb == NULL) {
94                         brcmf_err("%s: skb_realloc_headroom failed\n",
95 -                                 brcmf_ifname(drvr, ifp->bssidx));
96 +                                 brcmf_ifname(ifp));
97                         ret = -ENOMEM;
98                         goto done;
99                 }
100 --- a/drivers/net/wireless/brcm80211/brcmfmac/core.h
101 +++ b/drivers/net/wireless/brcm80211/brcmfmac/core.h
102 @@ -205,7 +205,7 @@ struct brcmf_skb_reorder_data {
103  int brcmf_netdev_wait_pend8021x(struct brcmf_if *ifp);
104  
105  /* Return pointer to interface name */
106 -char *brcmf_ifname(struct brcmf_pub *drvr, int idx);
107 +char *brcmf_ifname(struct brcmf_if *ifp);
108  struct brcmf_if *brcmf_get_ifp(struct brcmf_pub *drvr, int ifidx);
109  int brcmf_net_attach(struct brcmf_if *ifp, bool rtnl_locked);
110  struct brcmf_if *brcmf_add_if(struct brcmf_pub *drvr, s32 bssidx, s32 ifidx,