Skip to content

Commit 8f665f6

Browse files
committed
Merge tag 'master-2014-09-16' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless
John W. Linville says: ==================== pull request: wireless 2014-09-17 Please pull this batch of fixes intended for the 3.17 stream... Arend van Spriel sends a trio of minor brcmfmac fixes, including a fix for a Kconfig/build issue, a fix for a crash (null reference), and a regression fix related to event handling on a P2P interface. Hante Meuleman follows-up with a brcmfmac fix for a memory leak. Johannes Stezenbach brings an ath9k_htc fix for a regression related to hardware decryption offload. Marcel Holtmann delivers a one-liner to properly mark a device ID table in rfkill-gpio. ==================== Signed-off-by: David S. Miller <[email protected]>
2 parents 8400dd0 + dda3b19 commit 8f665f6

File tree

9 files changed

+50
-14
lines changed

9 files changed

+50
-14
lines changed

drivers/net/wireless/ath/ath9k/htc_drv_txrx.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -978,7 +978,7 @@ static bool ath9k_rx_prepare(struct ath9k_htc_priv *priv,
978978
struct ath_hw *ah = common->ah;
979979
struct ath_htc_rx_status *rxstatus;
980980
struct ath_rx_status rx_stats;
981-
bool decrypt_error;
981+
bool decrypt_error = false;
982982

983983
if (skb->len < HTC_RX_FRAME_HEADER_SIZE) {
984984
ath_err(common, "Corrupted RX frame, dropping (len: %d)\n",

drivers/net/wireless/brcm80211/Kconfig

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,17 @@ config BRCMFMAC
2727
one of the bus interface support. If you choose to build a module,
2828
it'll be called brcmfmac.ko.
2929

30+
config BRCMFMAC_PROTO_BCDC
31+
bool
32+
33+
config BRCMFMAC_PROTO_MSGBUF
34+
bool
35+
3036
config BRCMFMAC_SDIO
3137
bool "SDIO bus interface support for FullMAC driver"
3238
depends on (MMC = y || MMC = BRCMFMAC)
3339
depends on BRCMFMAC
40+
select BRCMFMAC_PROTO_BCDC
3441
select FW_LOADER
3542
default y
3643
---help---
@@ -42,6 +49,7 @@ config BRCMFMAC_USB
4249
bool "USB bus interface support for FullMAC driver"
4350
depends on (USB = y || USB = BRCMFMAC)
4451
depends on BRCMFMAC
52+
select BRCMFMAC_PROTO_BCDC
4553
select FW_LOADER
4654
---help---
4755
This option enables the USB bus interface support for Broadcom
@@ -52,6 +60,8 @@ config BRCMFMAC_PCIE
5260
bool "PCIE bus interface support for FullMAC driver"
5361
depends on BRCMFMAC
5462
depends on PCI
63+
depends on HAS_DMA
64+
select BRCMFMAC_PROTO_MSGBUF
5565
select FW_LOADER
5666
---help---
5767
This option enables the PCIE bus interface support for Broadcom

drivers/net/wireless/brcm80211/brcmfmac/Makefile

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,16 +30,18 @@ brcmfmac-objs += \
3030
fwsignal.o \
3131
p2p.o \
3232
proto.o \
33-
bcdc.o \
34-
commonring.o \
35-
flowring.o \
36-
msgbuf.o \
3733
dhd_common.o \
3834
dhd_linux.o \
3935
firmware.o \
4036
feature.o \
4137
btcoex.o \
4238
vendor.o
39+
brcmfmac-$(CONFIG_BRCMFMAC_PROTO_BCDC) += \
40+
bcdc.o
41+
brcmfmac-$(CONFIG_BRCMFMAC_PROTO_MSGBUF) += \
42+
commonring.o \
43+
flowring.o \
44+
msgbuf.o
4345
brcmfmac-$(CONFIG_BRCMFMAC_SDIO) += \
4446
dhd_sdio.o \
4547
bcmsdh.o

drivers/net/wireless/brcm80211/brcmfmac/bcdc.h

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,12 @@
1616
#ifndef BRCMFMAC_BCDC_H
1717
#define BRCMFMAC_BCDC_H
1818

19-
19+
#ifdef CONFIG_BRCMFMAC_PROTO_BCDC
2020
int brcmf_proto_bcdc_attach(struct brcmf_pub *drvr);
2121
void brcmf_proto_bcdc_detach(struct brcmf_pub *drvr);
22-
22+
#else
23+
static inline int brcmf_proto_bcdc_attach(struct brcmf_pub *drvr) { return 0; }
24+
static inline void brcmf_proto_bcdc_detach(struct brcmf_pub *drvr) {}
25+
#endif
2326

2427
#endif /* BRCMFMAC_BCDC_H */

drivers/net/wireless/brcm80211/brcmfmac/fweh.c

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -185,7 +185,13 @@ static void brcmf_fweh_handle_if_event(struct brcmf_pub *drvr,
185185
ifevent->action, ifevent->ifidx, ifevent->bssidx,
186186
ifevent->flags, ifevent->role);
187187

188-
if (ifevent->flags & BRCMF_E_IF_FLAG_NOIF) {
188+
/* The P2P Device interface event must not be ignored
189+
* contrary to what firmware tells us. The only way to
190+
* distinguish the P2P Device is by looking at the ifidx
191+
* and bssidx received.
192+
*/
193+
if (!(ifevent->ifidx == 0 && ifevent->bssidx == 1) &&
194+
(ifevent->flags & BRCMF_E_IF_FLAG_NOIF)) {
189195
brcmf_dbg(EVENT, "event can be ignored\n");
190196
return;
191197
}
@@ -210,12 +216,12 @@ static void brcmf_fweh_handle_if_event(struct brcmf_pub *drvr,
210216
return;
211217
}
212218

213-
if (ifevent->action == BRCMF_E_IF_CHANGE)
219+
if (ifp && ifevent->action == BRCMF_E_IF_CHANGE)
214220
brcmf_fws_reset_interface(ifp);
215221

216222
err = brcmf_fweh_call_event_handler(ifp, emsg->event_code, emsg, data);
217223

218-
if (ifevent->action == BRCMF_E_IF_DEL) {
224+
if (ifp && ifevent->action == BRCMF_E_IF_DEL) {
219225
brcmf_fws_del_interface(ifp);
220226
brcmf_del_if(drvr, ifevent->bssidx);
221227
}

drivers/net/wireless/brcm80211/brcmfmac/fweh.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -172,6 +172,8 @@ enum brcmf_fweh_event_code {
172172
#define BRCMF_E_IF_ROLE_STA 0
173173
#define BRCMF_E_IF_ROLE_AP 1
174174
#define BRCMF_E_IF_ROLE_WDS 2
175+
#define BRCMF_E_IF_ROLE_P2P_GO 3
176+
#define BRCMF_E_IF_ROLE_P2P_CLIENT 4
175177

176178
/**
177179
* definitions for event packet validation.

drivers/net/wireless/brcm80211/brcmfmac/msgbuf.h

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
#ifndef BRCMFMAC_MSGBUF_H
1616
#define BRCMFMAC_MSGBUF_H
1717

18+
#ifdef CONFIG_BRCMFMAC_PROTO_MSGBUF
1819

1920
#define BRCMF_H2D_MSGRING_CONTROL_SUBMIT_MAX_ITEM 20
2021
#define BRCMF_H2D_MSGRING_RXPOST_SUBMIT_MAX_ITEM 256
@@ -32,9 +33,15 @@
3233

3334

3435
int brcmf_proto_msgbuf_rx_trigger(struct device *dev);
36+
void brcmf_msgbuf_delete_flowring(struct brcmf_pub *drvr, u8 flowid);
3537
int brcmf_proto_msgbuf_attach(struct brcmf_pub *drvr);
3638
void brcmf_proto_msgbuf_detach(struct brcmf_pub *drvr);
37-
void brcmf_msgbuf_delete_flowring(struct brcmf_pub *drvr, u8 flowid);
38-
39+
#else
40+
static inline int brcmf_proto_msgbuf_attach(struct brcmf_pub *drvr)
41+
{
42+
return 0;
43+
}
44+
static inline void brcmf_proto_msgbuf_detach(struct brcmf_pub *drvr) {}
45+
#endif
3946

4047
#endif /* BRCMFMAC_MSGBUF_H */

drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -497,8 +497,11 @@ brcmf_configure_arp_offload(struct brcmf_if *ifp, bool enable)
497497
static void
498498
brcmf_cfg80211_update_proto_addr_mode(struct wireless_dev *wdev)
499499
{
500-
struct net_device *ndev = wdev->netdev;
501-
struct brcmf_if *ifp = netdev_priv(ndev);
500+
struct brcmf_cfg80211_vif *vif;
501+
struct brcmf_if *ifp;
502+
503+
vif = container_of(wdev, struct brcmf_cfg80211_vif, wdev);
504+
ifp = vif->ifp;
502505

503506
if ((wdev->iftype == NL80211_IFTYPE_ADHOC) ||
504507
(wdev->iftype == NL80211_IFTYPE_AP) ||
@@ -5143,6 +5146,7 @@ static int brcmf_enable_bw40_2g(struct brcmf_cfg80211_info *cfg)
51435146

51445147
ch.band = BRCMU_CHAN_BAND_2G;
51455148
ch.bw = BRCMU_CHAN_BW_40;
5149+
ch.sb = BRCMU_CHAN_SB_NONE;
51465150
ch.chnum = 0;
51475151
cfg->d11inf.encchspec(&ch);
51485152

@@ -5176,6 +5180,7 @@ static int brcmf_enable_bw40_2g(struct brcmf_cfg80211_info *cfg)
51765180

51775181
brcmf_update_bw40_channel_flag(&band->channels[j], &ch);
51785182
}
5183+
kfree(pbuf);
51795184
}
51805185
return err;
51815186
}

net/rfkill/rfkill-gpio.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -163,6 +163,7 @@ static const struct acpi_device_id rfkill_acpi_match[] = {
163163
{ "LNV4752", RFKILL_TYPE_GPS },
164164
{ },
165165
};
166+
MODULE_DEVICE_TABLE(acpi, rfkill_acpi_match);
166167
#endif
167168

168169
static struct platform_driver rfkill_gpio_driver = {

0 commit comments

Comments
 (0)