aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/brcm80211/brcmfmac
diff options
context:
space:
mode:
authorHante Meuleman <meuleman@broadcom.com>2015-01-25 14:31:36 -0500
committerKalle Valo <kvalo@codeaurora.org>2015-01-29 02:59:05 -0500
commit649f38ae9e482098da94d30f7f802621e66c6b74 (patch)
tree0e2e3df8162cfc753eb048f7d12e5a5260c17c92 /drivers/net/wireless/brcm80211/brcmfmac
parenta1cee865c3e79b71c10cd6a3de03d0dd73f7bdd9 (diff)
brcmfmac: Reopen netdev queue on bus state data.
During suspend the bus state is put in the down state. When data is being transmitted during this state then the netdev queue will be close. This patch will wake the queue on state data if the queue was closed. Reviewed-by: Arend Van Spriel <arend@broadcom.com> Reviewed-by: Franky (Zhenhui) Lin <frankyl@broadcom.com> Reviewed-by: Pieter-Paul Giesberts <pieterpg@broadcom.com> Reviewed-by: Daniel (Deognyoun) Kim <dekim@broadcom.com> Signed-off-by: Hante Meuleman <meuleman@broadcom.com> Signed-off-by: Arend van Spriel <arend@broadcom.com> Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Diffstat (limited to 'drivers/net/wireless/brcm80211/brcmfmac')
-rw-r--r--drivers/net/wireless/brcm80211/brcmfmac/bus.h10
-rw-r--r--drivers/net/wireless/brcm80211/brcmfmac/core.c21
2 files changed, 24 insertions, 7 deletions
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/bus.h b/drivers/net/wireless/brcm80211/brcmfmac/bus.h
index 55d36ff5439d..89e6a4dc105e 100644
--- a/drivers/net/wireless/brcm80211/brcmfmac/bus.h
+++ b/drivers/net/wireless/brcm80211/brcmfmac/bus.h
@@ -185,13 +185,6 @@ void brcmf_bus_wowl_config(struct brcmf_bus *bus, bool enabled)
185 bus->ops->wowl_config(bus->dev, enabled); 185 bus->ops->wowl_config(bus->dev, enabled);
186} 186}
187 187
188static inline void brcmf_bus_change_state(struct brcmf_bus *bus,
189 enum brcmf_bus_state new_state)
190{
191 brcmf_dbg(TRACE, "%d -> %d\n", bus->state, new_state);
192 bus->state = new_state;
193}
194
195/* 188/*
196 * interface functions from common layer 189 * interface functions from common layer
197 */ 190 */
@@ -214,6 +207,9 @@ void brcmf_txflowblock(struct device *dev, bool state);
214/* Notify the bus has transferred the tx packet to firmware */ 207/* Notify the bus has transferred the tx packet to firmware */
215void brcmf_txcomplete(struct device *dev, struct sk_buff *txp, bool success); 208void brcmf_txcomplete(struct device *dev, struct sk_buff *txp, bool success);
216 209
210/* Configure the "global" bus state used by upper layers */
211void brcmf_bus_change_state(struct brcmf_bus *bus, enum brcmf_bus_state state);
212
217int brcmf_bus_start(struct device *dev); 213int brcmf_bus_start(struct device *dev);
218s32 brcmf_iovar_data_set(struct device *dev, char *name, void *data, u32 len); 214s32 brcmf_iovar_data_set(struct device *dev, char *name, void *data, u32 len);
219void brcmf_bus_add_txhdrlen(struct device *dev, uint len); 215void brcmf_bus_add_txhdrlen(struct device *dev, uint len);
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/core.c b/drivers/net/wireless/brcm80211/brcmfmac/core.c
index ff8c97ba4bc5..b8520c30af7c 100644
--- a/drivers/net/wireless/brcm80211/brcmfmac/core.c
+++ b/drivers/net/wireless/brcm80211/brcmfmac/core.c
@@ -1106,6 +1106,27 @@ int brcmf_netdev_wait_pend8021x(struct brcmf_if *ifp)
1106 return !err; 1106 return !err;
1107} 1107}
1108 1108
1109void brcmf_bus_change_state(struct brcmf_bus *bus, enum brcmf_bus_state state)
1110{
1111 struct brcmf_pub *drvr = bus->drvr;
1112 struct net_device *ndev;
1113 int ifidx;
1114
1115 brcmf_dbg(TRACE, "%d -> %d\n", bus->state, state);
1116 bus->state = state;
1117
1118 if (state == BRCMF_BUS_UP) {
1119 for (ifidx = 0; ifidx < BRCMF_MAX_IFS; ifidx++) {
1120 if ((drvr->iflist[ifidx]) &&
1121 (drvr->iflist[ifidx]->ndev)) {
1122 ndev = drvr->iflist[ifidx]->ndev;
1123 if (netif_queue_stopped(ndev))
1124 netif_wake_queue(ndev);
1125 }
1126 }
1127 }
1128}
1129
1109static void brcmf_driver_register(struct work_struct *work) 1130static void brcmf_driver_register(struct work_struct *work)
1110{ 1131{
1111#ifdef CONFIG_BRCMFMAC_SDIO 1132#ifdef CONFIG_BRCMFMAC_SDIO