mac80211: add dev_coredumpm() function
[oweals/openwrt.git] / package / kernel / mac80211 / patches / 323-0006-brcmfmac-move-brcmf_txflowblock-to-bcdc-layer.patch
1 From 20ec4f57498f8770c7a1a3e2a316fa752a424178 Mon Sep 17 00:00:00 2001
2 From: Franky Lin <franky.lin@broadcom.com>
3 Date: Fri, 10 Mar 2017 21:17:02 +0000
4 Subject: [PATCH] brcmfmac: move brcmf_txflowblock to bcdc layer
5
6 brcmf_txflowblock is invoked by sdio and usb bus module which are using
7 bcdc protocol. This patch makes it a bcdc API instead of a core module
8 function.
9
10 Reviewed-by: Arend Van Spriel <arend.vanspriel@broadcom.com>
11 Signed-off-by: Franky Lin <franky.lin@broadcom.com>
12 Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com>
13 Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
14 ---
15  drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcdc.c | 10 ++++++++++
16  drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcdc.h |  1 +
17  drivers/net/wireless/broadcom/brcm80211/brcmfmac/bus.h  |  2 --
18  drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c | 10 ----------
19  drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c |  5 +++--
20  drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c  |  5 +++--
21  6 files changed, 17 insertions(+), 16 deletions(-)
22
23 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcdc.c
24 +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcdc.c
25 @@ -345,6 +345,16 @@ brcmf_proto_bcdc_txdata(struct brcmf_pub
26         return brcmf_bus_txdata(drvr->bus_if, pktbuf);
27  }
28  
29 +void brcmf_proto_bcdc_txflowblock(struct device *dev, bool state)
30 +{
31 +       struct brcmf_bus *bus_if = dev_get_drvdata(dev);
32 +       struct brcmf_pub *drvr = bus_if->drvr;
33 +
34 +       brcmf_dbg(TRACE, "Enter\n");
35 +
36 +       brcmf_fws_bus_blocked(drvr, state);
37 +}
38 +
39  static void
40  brcmf_proto_bcdc_configure_addr_mode(struct brcmf_pub *drvr, int ifidx,
41                                      enum proto_addr_mode addr_mode)
42 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcdc.h
43 +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcdc.h
44 @@ -19,6 +19,7 @@
45  #ifdef CPTCFG_BRCMFMAC_PROTO_BCDC
46  int brcmf_proto_bcdc_attach(struct brcmf_pub *drvr);
47  void brcmf_proto_bcdc_detach(struct brcmf_pub *drvr);
48 +void brcmf_proto_bcdc_txflowblock(struct device *dev, bool state);
49  #else
50  static inline int brcmf_proto_bcdc_attach(struct brcmf_pub *drvr) { return 0; }
51  static inline void brcmf_proto_bcdc_detach(struct brcmf_pub *drvr) {}
52 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bus.h
53 +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bus.h
54 @@ -229,8 +229,6 @@ int brcmf_attach(struct device *dev, str
55  void brcmf_detach(struct device *dev);
56  /* Indication from bus module that dongle should be reset */
57  void brcmf_dev_reset(struct device *dev);
58 -/* Indication from bus module to change flow-control state */
59 -void brcmf_txflowblock(struct device *dev, bool state);
60  
61  /* Notify the bus has transferred the tx packet to firmware */
62  void brcmf_txcomplete(struct device *dev, struct sk_buff *txp, bool success);
63 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
64 +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
65 @@ -283,16 +283,6 @@ void brcmf_txflowblock_if(struct brcmf_i
66         spin_unlock_irqrestore(&ifp->netif_stop_lock, flags);
67  }
68  
69 -void brcmf_txflowblock(struct device *dev, bool state)
70 -{
71 -       struct brcmf_bus *bus_if = dev_get_drvdata(dev);
72 -       struct brcmf_pub *drvr = bus_if->drvr;
73 -
74 -       brcmf_dbg(TRACE, "Enter\n");
75 -
76 -       brcmf_fws_bus_blocked(drvr, state);
77 -}
78 -
79  void brcmf_netif_rx(struct brcmf_if *ifp, struct sk_buff *skb)
80  {
81         if (skb->pkt_type == PACKET_MULTICAST)
82 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
83 +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
84 @@ -44,6 +44,7 @@
85  #include "firmware.h"
86  #include "core.h"
87  #include "common.h"
88 +#include "bcdc.h"
89  
90  #define DCMD_RESP_TIMEOUT      msecs_to_jiffies(2500)
91  #define CTL_DONE_TIMEOUT       msecs_to_jiffies(2500)
92 @@ -2328,7 +2329,7 @@ static uint brcmf_sdio_sendfromq(struct
93         if ((bus->sdiodev->state == BRCMF_SDIOD_DATA) &&
94             bus->txoff && (pktq_len(&bus->txq) < TXLOW)) {
95                 bus->txoff = false;
96 -               brcmf_txflowblock(bus->sdiodev->dev, false);
97 +               brcmf_proto_bcdc_txflowblock(bus->sdiodev->dev, false);
98         }
99  
100         return cnt;
101 @@ -2753,7 +2754,7 @@ static int brcmf_sdio_bus_txdata(struct
102  
103         if (pktq_len(&bus->txq) >= TXHI) {
104                 bus->txoff = true;
105 -               brcmf_txflowblock(dev, true);
106 +               brcmf_proto_bcdc_txflowblock(dev, true);
107         }
108         spin_unlock_bh(&bus->txq_lock);
109  
110 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c
111 +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c
112 @@ -29,6 +29,7 @@
113  #include "usb.h"
114  #include "core.h"
115  #include "common.h"
116 +#include "bcdc.h"
117  
118  
119  #define IOCTL_RESP_TIMEOUT             msecs_to_jiffies(2000)
120 @@ -488,7 +489,7 @@ static void brcmf_usb_tx_complete(struct
121         spin_lock_irqsave(&devinfo->tx_flowblock_lock, flags);
122         if (devinfo->tx_freecount > devinfo->tx_high_watermark &&
123                 devinfo->tx_flowblock) {
124 -               brcmf_txflowblock(devinfo->dev, false);
125 +               brcmf_proto_bcdc_txflowblock(devinfo->dev, false);
126                 devinfo->tx_flowblock = false;
127         }
128         spin_unlock_irqrestore(&devinfo->tx_flowblock_lock, flags);
129 @@ -635,7 +636,7 @@ static int brcmf_usb_tx(struct device *d
130         spin_lock_irqsave(&devinfo->tx_flowblock_lock, flags);
131         if (devinfo->tx_freecount < devinfo->tx_low_watermark &&
132             !devinfo->tx_flowblock) {
133 -               brcmf_txflowblock(dev, true);
134 +               brcmf_proto_bcdc_txflowblock(dev, true);
135                 devinfo->tx_flowblock = true;
136         }
137         spin_unlock_irqrestore(&devinfo->tx_flowblock_lock, flags);