All the mail mirrored from lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 00/10] brcmfmac: new device support and more
@ 2014-12-21 11:43 Arend van Spriel
  2014-12-21 11:43 ` [PATCH 01/10] brcmfmac: Fix incorrect casting of 64 bit physical address Arend van Spriel
                   ` (10 more replies)
  0 siblings, 11 replies; 21+ messages in thread
From: Arend van Spriel @ 2014-12-21 11:43 UTC (permalink / raw
  To: Kalle Valo; +Cc: linux-wireless, Arend van Spriel

Here a first batch for v3.20. This series adds support for the
BCM43340 and BCM43341 SDIO chipsets. A number of changes are
related to AP mode and some fixes of potential issues that do
not seem to qualify for the wireless tree.

This series is intended for v3.20 and applies to the master
branch of the *new* wireless-next repository.

Arend van Spriel (5):
  brcmfmac: Add support for bcm43340/1 wireless chipsets
  brcmfmac: get rid of duplicate SDIO device identifiers
  brcmfmac: remove unused/duplicate defines in chip.c
  brcmfmac: follow user-space regulatory domain selection
  brcmfmac: enable 802.11d support in firmware

Hante Meuleman (5):
  brcmfmac: Fix incorrect casting of 64 bit physical address.
  brcmfmac: Fix possible dereference of NULL pointer.
  brcmfmac: Fix WEP configuration for AP mode.
  brcmfmac: Change error log in standard log for rxbufpost.
  brcmfmac: signal completion of 802.1x.

 drivers/net/wireless/brcm80211/brcmfmac/bcmsdh.c   |  22 +--
 drivers/net/wireless/brcm80211/brcmfmac/cfg80211.c | 176 ++++++++++++++++++---
 drivers/net/wireless/brcm80211/brcmfmac/cfg80211.h |   5 +
 drivers/net/wireless/brcm80211/brcmfmac/chip.c     |  15 +-
 drivers/net/wireless/brcm80211/brcmfmac/common.c   |   3 +
 drivers/net/wireless/brcm80211/brcmfmac/common.h   |  20 +++
 drivers/net/wireless/brcm80211/brcmfmac/core.c     |   3 +-
 drivers/net/wireless/brcm80211/brcmfmac/core.h     |   4 +-
 drivers/net/wireless/brcm80211/brcmfmac/flowring.c |   6 +-
 drivers/net/wireless/brcm80211/brcmfmac/fwil.h     |   4 +
 .../net/wireless/brcm80211/brcmfmac/fwil_types.h   |  14 ++
 drivers/net/wireless/brcm80211/brcmfmac/msgbuf.c   |  24 +--
 drivers/net/wireless/brcm80211/brcmfmac/pcie.c     |  10 +-
 drivers/net/wireless/brcm80211/brcmfmac/sdio.c     |   7 +-
 .../net/wireless/brcm80211/include/brcm_hw_ids.h   |  12 +-
 include/linux/mmc/sdio_ids.h                       |   2 +
 16 files changed, 239 insertions(+), 88 deletions(-)
 create mode 100644 drivers/net/wireless/brcm80211/brcmfmac/common.h

-- 
1.9.1


^ permalink raw reply	[flat|nested] 21+ messages in thread

* [PATCH 01/10] brcmfmac: Fix incorrect casting of 64 bit physical address.
  2014-12-21 11:43 [PATCH 00/10] brcmfmac: new device support and more Arend van Spriel
@ 2014-12-21 11:43 ` Arend van Spriel
  2014-12-21 17:24   ` Joe Perches
  2014-12-21 11:43 ` [PATCH 02/10] brcmfmac: Fix possible dereference of NULL pointer Arend van Spriel
                   ` (9 subsequent siblings)
  10 siblings, 1 reply; 21+ messages in thread
From: Arend van Spriel @ 2014-12-21 11:43 UTC (permalink / raw
  To: Kalle Valo; +Cc: linux-wireless, Hante Meuleman, Arend van Spriel

From: Hante Meuleman <meuleman@broadcom.com>

The physical addresses being used by pcie and msgbuf were using
a cast to long, which incorrectly caused it to limit the address
to 32bit. Now explicit u64 is used where needed.

Reviewed-by: Arend Van Spriel <arend@broadcom.com>
Reviewed-by: Pieter-Paul Giesberts <pieterpg@broadcom.com>
Signed-off-by: Hante Meuleman <meuleman@broadcom.com>
Signed-off-by: Arend van Spriel <arend@broadcom.com>
---
 drivers/net/wireless/brcm80211/brcmfmac/msgbuf.c | 22 +++++++++++-----------
 drivers/net/wireless/brcm80211/brcmfmac/pcie.c   | 10 +++++-----
 2 files changed, 16 insertions(+), 16 deletions(-)

diff --git a/drivers/net/wireless/brcm80211/brcmfmac/msgbuf.c b/drivers/net/wireless/brcm80211/brcmfmac/msgbuf.c
index 456944a..3ff6acf 100644
--- a/drivers/net/wireless/brcm80211/brcmfmac/msgbuf.c
+++ b/drivers/net/wireless/brcm80211/brcmfmac/msgbuf.c
@@ -583,7 +583,7 @@ brcmf_msgbuf_flowring_create_worker(struct brcmf_msgbuf *msgbuf,
 	u32 flowid;
 	void *dma_buf;
 	u32 dma_sz;
-	long long address;
+	u64 address;
 	int err;
 
 	flowid = work->flowid;
@@ -620,7 +620,7 @@ brcmf_msgbuf_flowring_create_worker(struct brcmf_msgbuf *msgbuf,
 					   BRCMF_NROF_H2D_COMMON_MSGRINGS);
 	memcpy(create->sa, work->sa, ETH_ALEN);
 	memcpy(create->da, work->da, ETH_ALEN);
-	address = (long long)(long)msgbuf->flowring_dma_handle[flowid];
+	address = (u64)msgbuf->flowring_dma_handle[flowid];
 	create->flow_ring_addr.high_addr = cpu_to_le32(address >> 32);
 	create->flow_ring_addr.low_addr = cpu_to_le32(address & 0xffffffff);
 	create->max_items = cpu_to_le16(BRCMF_H2D_TXFLOWRING_MAX_ITEM);
@@ -698,7 +698,7 @@ static void brcmf_msgbuf_txflow(struct brcmf_msgbuf *msgbuf, u8 flowid)
 	dma_addr_t physaddr;
 	u32 pktid;
 	struct msgbuf_tx_msghdr *tx_msghdr;
-	long long address;
+	u64 address;
 
 	commonring = msgbuf->flowrings[flowid];
 	if (!brcmf_commonring_write_available(commonring))
@@ -742,7 +742,7 @@ static void brcmf_msgbuf_txflow(struct brcmf_msgbuf *msgbuf, u8 flowid)
 		tx_msghdr->seg_cnt = 1;
 		memcpy(tx_msghdr->txhdr, skb->data, ETH_HLEN);
 		tx_msghdr->data_len = cpu_to_le16(skb->len - ETH_HLEN);
-		address = (long long)(long)physaddr;
+		address = (u64)physaddr;
 		tx_msghdr->data_buf_addr.high_addr = cpu_to_le32(address >> 32);
 		tx_msghdr->data_buf_addr.low_addr =
 			cpu_to_le32(address & 0xffffffff);
@@ -885,7 +885,7 @@ static u32 brcmf_msgbuf_rxbuf_data_post(struct brcmf_msgbuf *msgbuf, u32 count)
 	u32 pktlen;
 	dma_addr_t physaddr;
 	struct msgbuf_rx_bufpost *rx_bufpost;
-	long long address;
+	u64 address;
 	u32 pktid;
 	u32 i;
 
@@ -921,7 +921,7 @@ static u32 brcmf_msgbuf_rxbuf_data_post(struct brcmf_msgbuf *msgbuf, u32 count)
 		}
 
 		if (msgbuf->rx_metadata_offset) {
-			address = (long long)(long)physaddr;
+			address = (u64)physaddr;
 			rx_bufpost->metadata_buf_len =
 				cpu_to_le16(msgbuf->rx_metadata_offset);
 			rx_bufpost->metadata_buf_addr.high_addr =
@@ -936,7 +936,7 @@ static u32 brcmf_msgbuf_rxbuf_data_post(struct brcmf_msgbuf *msgbuf, u32 count)
 		rx_bufpost->msg.msgtype = MSGBUF_TYPE_RXBUF_POST;
 		rx_bufpost->msg.request_id = cpu_to_le32(pktid);
 
-		address = (long long)(long)physaddr;
+		address = (u64)physaddr;
 		rx_bufpost->data_buf_len = cpu_to_le16((u16)pktlen);
 		rx_bufpost->data_buf_addr.high_addr =
 			cpu_to_le32(address >> 32);
@@ -992,7 +992,7 @@ brcmf_msgbuf_rxbuf_ctrl_post(struct brcmf_msgbuf *msgbuf, bool event_buf,
 	u32 pktlen;
 	dma_addr_t physaddr;
 	struct msgbuf_rx_ioctl_resp_or_event *rx_bufpost;
-	long long address;
+	u64 address;
 	u32 pktid;
 	u32 i;
 
@@ -1035,7 +1035,7 @@ brcmf_msgbuf_rxbuf_ctrl_post(struct brcmf_msgbuf *msgbuf, bool event_buf,
 				MSGBUF_TYPE_IOCTLRESP_BUF_POST;
 		rx_bufpost->msg.request_id = cpu_to_le32(pktid);
 
-		address = (long long)(long)physaddr;
+		address = (u64)physaddr;
 		rx_bufpost->host_buf_len = cpu_to_le16((u16)pktlen);
 		rx_bufpost->host_buf_addr.high_addr =
 			cpu_to_le32(address >> 32);
@@ -1348,7 +1348,7 @@ int brcmf_proto_msgbuf_attach(struct brcmf_pub *drvr)
 {
 	struct brcmf_bus_msgbuf *if_msgbuf;
 	struct brcmf_msgbuf *msgbuf;
-	long long address;
+	u64 address;
 	u32 count;
 
 	if_msgbuf = drvr->bus_if->msgbuf;
@@ -1379,7 +1379,7 @@ int brcmf_proto_msgbuf_attach(struct brcmf_pub *drvr)
 					     GFP_KERNEL);
 	if (!msgbuf->ioctbuf)
 		goto fail;
-	address = (long long)(long)msgbuf->ioctbuf_handle;
+	address = (u64)msgbuf->ioctbuf_handle;
 	msgbuf->ioctbuf_phys_hi = address >> 32;
 	msgbuf->ioctbuf_phys_lo = address & 0xffffffff;
 
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/pcie.c b/drivers/net/wireless/brcm80211/brcmfmac/pcie.c
index 905991f..e91fa9a 100644
--- a/drivers/net/wireless/brcm80211/brcmfmac/pcie.c
+++ b/drivers/net/wireless/brcm80211/brcmfmac/pcie.c
@@ -959,14 +959,14 @@ brcmf_pcie_init_dmabuffer_for_device(struct brcmf_pciedev_info *devinfo,
 				     dma_addr_t *dma_handle)
 {
 	void *ring;
-	long long address;
+	u64 address;
 
 	ring = dma_alloc_coherent(&devinfo->pdev->dev, size, dma_handle,
 				  GFP_KERNEL);
 	if (!ring)
 		return NULL;
 
-	address = (long long)(long)*dma_handle;
+	address = (u64)*dma_handle;
 	brcmf_pcie_write_tcm32(devinfo, tcm_dma_phys_addr,
 			       address & 0xffffffff);
 	brcmf_pcie_write_tcm32(devinfo, tcm_dma_phys_addr + 4, address >> 32);
@@ -1166,7 +1166,7 @@ brcmf_pcie_release_scratchbuffers(struct brcmf_pciedev_info *devinfo)
 
 static int brcmf_pcie_init_scratchbuffers(struct brcmf_pciedev_info *devinfo)
 {
-	long long address;
+	u64 address;
 	u32 addr;
 
 	devinfo->shared.scratch = dma_alloc_coherent(&devinfo->pdev->dev,
@@ -1180,7 +1180,7 @@ static int brcmf_pcie_init_scratchbuffers(struct brcmf_pciedev_info *devinfo)
 
 	addr = devinfo->shared.tcm_base_address +
 	       BRCMF_SHARED_DMA_SCRATCH_ADDR_OFFSET;
-	address = (long long)(long)devinfo->shared.scratch_dmahandle;
+	address = (u64)devinfo->shared.scratch_dmahandle;
 	brcmf_pcie_write_tcm32(devinfo, addr, address & 0xffffffff);
 	brcmf_pcie_write_tcm32(devinfo, addr + 4, address >> 32);
 	addr = devinfo->shared.tcm_base_address +
@@ -1198,7 +1198,7 @@ static int brcmf_pcie_init_scratchbuffers(struct brcmf_pciedev_info *devinfo)
 
 	addr = devinfo->shared.tcm_base_address +
 	       BRCMF_SHARED_DMA_RINGUPD_ADDR_OFFSET;
-	address = (long long)(long)devinfo->shared.ringupd_dmahandle;
+	address = (u64)devinfo->shared.ringupd_dmahandle;
 	brcmf_pcie_write_tcm32(devinfo, addr, address & 0xffffffff);
 	brcmf_pcie_write_tcm32(devinfo, addr + 4, address >> 32);
 	addr = devinfo->shared.tcm_base_address +
-- 
1.9.1


^ permalink raw reply related	[flat|nested] 21+ messages in thread

* [PATCH 02/10] brcmfmac: Fix possible dereference of NULL pointer.
  2014-12-21 11:43 [PATCH 00/10] brcmfmac: new device support and more Arend van Spriel
  2014-12-21 11:43 ` [PATCH 01/10] brcmfmac: Fix incorrect casting of 64 bit physical address Arend van Spriel
@ 2014-12-21 11:43 ` Arend van Spriel
  2014-12-23 17:07   ` Arend van Spriel
  2014-12-21 11:43 ` [PATCH 03/10] brcmfmac: Add support for bcm43340/1 wireless chipsets Arend van Spriel
                   ` (8 subsequent siblings)
  10 siblings, 1 reply; 21+ messages in thread
From: Arend van Spriel @ 2014-12-21 11:43 UTC (permalink / raw
  To: Kalle Valo; +Cc: linux-wireless, Hante Meuleman, Arend van Spriel

From: Hante Meuleman <meuleman@broadcom.com>

With the introduction of WOWL for SDIO a possible dereference of a
NULL pointer got introduced. Found by static checker.

Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
Reviewed-by: Arend Van Spriel <arend@broadcom.com>
Reviewed-by: Pieter-Paul Giesberts <pieterpg@broadcom.com>
Signed-off-by: Hante Meuleman <meuleman@broadcom.com>
Signed-off-by: Arend van Spriel <arend@broadcom.com>
---
 drivers/net/wireless/brcm80211/brcmfmac/bcmsdh.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/wireless/brcm80211/brcmfmac/bcmsdh.c b/drivers/net/wireless/brcm80211/brcmfmac/bcmsdh.c
index 3c06e93..9583dcd 100644
--- a/drivers/net/wireless/brcm80211/brcmfmac/bcmsdh.c
+++ b/drivers/net/wireless/brcm80211/brcmfmac/bcmsdh.c
@@ -1070,7 +1070,7 @@ static int brcmf_ops_sdio_probe(struct sdio_func *func,
 	 */
 	if ((sdio_get_host_pm_caps(sdiodev->func[1]) & MMC_PM_KEEP_POWER) &&
 	    ((sdio_get_host_pm_caps(sdiodev->func[1]) & MMC_PM_WAKE_SDIO_IRQ) ||
-	     (sdiodev->pdata->oob_irq_supported)))
+	     ((sdiodev->pdata) && (sdiodev->pdata->oob_irq_supported))))
 		bus_if->wowl_supported = true;
 #endif
 
-- 
1.9.1


^ permalink raw reply related	[flat|nested] 21+ messages in thread

* [PATCH 03/10] brcmfmac: Add support for bcm43340/1 wireless chipsets
  2014-12-21 11:43 [PATCH 00/10] brcmfmac: new device support and more Arend van Spriel
  2014-12-21 11:43 ` [PATCH 01/10] brcmfmac: Fix incorrect casting of 64 bit physical address Arend van Spriel
  2014-12-21 11:43 ` [PATCH 02/10] brcmfmac: Fix possible dereference of NULL pointer Arend van Spriel
@ 2014-12-21 11:43 ` Arend van Spriel
  2014-12-21 17:50   ` Marcel Holtmann
  2014-12-21 11:43 ` [PATCH 04/10] brcmfmac: get rid of duplicate SDIO device identifiers Arend van Spriel
                   ` (7 subsequent siblings)
  10 siblings, 1 reply; 21+ messages in thread
From: Arend van Spriel @ 2014-12-21 11:43 UTC (permalink / raw
  To: Kalle Valo
  Cc: linux-wireless, Arend van Spriel, Samuel Ortiz, Rob Herring,
	John Stultz

This patch adds support for the bcm43340 and bcm43341 wireless
chipsets. These two chipsets are identical from wireless parts
perspective. As such they use the same firmware image.

Cc: Samuel Ortiz <sameo@linux.intel.com>
Cc: Rob Herring <rob.herring@linaro.org>
Signed-off-by: John Stultz <john.stultz@linaro.org>
[arend@broadcom.com: squash to single commit, remove 43341 chipid]
Reviewed-by: Pieter-Paul Giesberts <pieterpg@broadcom.com>
Reviewed-by: Hante Meuleman <meuleman@broadcom.com>
Signed-off-by: Arend van Spriel <arend@broadcom.com>
---
 drivers/net/wireless/brcm80211/brcmfmac/bcmsdh.c     | 2 ++
 drivers/net/wireless/brcm80211/brcmfmac/chip.c       | 1 +
 drivers/net/wireless/brcm80211/brcmfmac/sdio.c       | 5 +++++
 drivers/net/wireless/brcm80211/include/brcm_hw_ids.h | 3 +++
 include/linux/mmc/sdio_ids.h                         | 2 ++
 5 files changed, 13 insertions(+)

diff --git a/drivers/net/wireless/brcm80211/brcmfmac/bcmsdh.c b/drivers/net/wireless/brcm80211/brcmfmac/bcmsdh.c
index 9583dcd..7cf42e56 100644
--- a/drivers/net/wireless/brcm80211/brcmfmac/bcmsdh.c
+++ b/drivers/net/wireless/brcm80211/brcmfmac/bcmsdh.c
@@ -1005,6 +1005,8 @@ static const struct sdio_device_id brcmf_sdmmc_ids[] = {
 	BRCMF_SDIO_DEVICE(BRCM_SDIO_4329_DEVICE_ID),
 	BRCMF_SDIO_DEVICE(BRCM_SDIO_4330_DEVICE_ID),
 	BRCMF_SDIO_DEVICE(BRCM_SDIO_4334_DEVICE_ID),
+	BRCMF_SDIO_DEVICE(BRCM_SDIO_43340_DEVICE_ID),
+	BRCMF_SDIO_DEVICE(BRCM_SDIO_43341_DEVICE_ID),
 	BRCMF_SDIO_DEVICE(BRCM_SDIO_43362_DEVICE_ID),
 	BRCMF_SDIO_DEVICE(BRCM_SDIO_4335_4339_DEVICE_ID),
 	BRCMF_SDIO_DEVICE(BRCM_SDIO_4354_DEVICE_ID),
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/chip.c b/drivers/net/wireless/brcm80211/brcmfmac/chip.c
index ddae0b5..0393d84 100644
--- a/drivers/net/wireless/brcm80211/brcmfmac/chip.c
+++ b/drivers/net/wireless/brcm80211/brcmfmac/chip.c
@@ -495,6 +495,7 @@ static void brcmf_chip_get_raminfo(struct brcmf_chip_priv *ci)
 		ci->pub.ramsize = 0x48000;
 		break;
 	case BRCM_CC_4334_CHIP_ID:
+	case BRCM_CC_43340_CHIP_ID:
 		ci->pub.ramsize = 0x80000;
 		break;
 	case BRCM_CC_4335_CHIP_ID:
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/sdio.c b/drivers/net/wireless/brcm80211/brcmfmac/sdio.c
index 0b0d51a..551da35 100644
--- a/drivers/net/wireless/brcm80211/brcmfmac/sdio.c
+++ b/drivers/net/wireless/brcm80211/brcmfmac/sdio.c
@@ -608,6 +608,8 @@ static const struct sdiod_drive_str sdiod_drvstr_tab2_3v3[] = {
 #define BCM4330_NVRAM_NAME		"brcm/brcmfmac4330-sdio.txt"
 #define BCM4334_FIRMWARE_NAME		"brcm/brcmfmac4334-sdio.bin"
 #define BCM4334_NVRAM_NAME		"brcm/brcmfmac4334-sdio.txt"
+#define BCM43340_FIRMWARE_NAME		"brcm/brcmfmac43340-sdio.bin"
+#define BCM43340_NVRAM_NAME		"brcm/brcmfmac43340-sdio.txt"
 #define BCM4335_FIRMWARE_NAME		"brcm/brcmfmac4335-sdio.bin"
 #define BCM4335_NVRAM_NAME		"brcm/brcmfmac4335-sdio.txt"
 #define BCM43362_FIRMWARE_NAME		"brcm/brcmfmac43362-sdio.bin"
@@ -629,6 +631,8 @@ MODULE_FIRMWARE(BCM4330_FIRMWARE_NAME);
 MODULE_FIRMWARE(BCM4330_NVRAM_NAME);
 MODULE_FIRMWARE(BCM4334_FIRMWARE_NAME);
 MODULE_FIRMWARE(BCM4334_NVRAM_NAME);
+MODULE_FIRMWARE(BCM43340_FIRMWARE_NAME);
+MODULE_FIRMWARE(BCM43340_NVRAM_NAME);
 MODULE_FIRMWARE(BCM4335_FIRMWARE_NAME);
 MODULE_FIRMWARE(BCM4335_NVRAM_NAME);
 MODULE_FIRMWARE(BCM43362_FIRMWARE_NAME);
@@ -660,6 +664,7 @@ static const struct brcmf_firmware_names brcmf_fwname_data[] = {
 	{ BRCM_CC_4329_CHIP_ID, 0xFFFFFFFF, BRCMF_FIRMWARE_NVRAM(BCM4329) },
 	{ BRCM_CC_4330_CHIP_ID, 0xFFFFFFFF, BRCMF_FIRMWARE_NVRAM(BCM4330) },
 	{ BRCM_CC_4334_CHIP_ID, 0xFFFFFFFF, BRCMF_FIRMWARE_NVRAM(BCM4334) },
+	{ BRCM_CC_43340_CHIP_ID, 0xFFFFFFFF, BRCMF_FIRMWARE_NVRAM(BCM43340) },
 	{ BRCM_CC_4335_CHIP_ID, 0xFFFFFFFF, BRCMF_FIRMWARE_NVRAM(BCM4335) },
 	{ BRCM_CC_43362_CHIP_ID, 0xFFFFFFFE, BRCMF_FIRMWARE_NVRAM(BCM43362) },
 	{ BRCM_CC_4339_CHIP_ID, 0xFFFFFFFF, BRCMF_FIRMWARE_NVRAM(BCM4339) },
diff --git a/drivers/net/wireless/brcm80211/include/brcm_hw_ids.h b/drivers/net/wireless/brcm80211/include/brcm_hw_ids.h
index 6996fcc..00215ef 100644
--- a/drivers/net/wireless/brcm80211/include/brcm_hw_ids.h
+++ b/drivers/net/wireless/brcm80211/include/brcm_hw_ids.h
@@ -34,6 +34,7 @@
 #define BRCM_CC_4329_CHIP_ID		0x4329
 #define BRCM_CC_4330_CHIP_ID		0x4330
 #define BRCM_CC_4334_CHIP_ID		0x4334
+#define BRCM_CC_43340_CHIP_ID		43340
 #define BRCM_CC_43362_CHIP_ID		43362
 #define BRCM_CC_4335_CHIP_ID		0x4335
 #define BRCM_CC_4339_CHIP_ID		0x4339
@@ -51,6 +52,8 @@
 #define BRCM_SDIO_4329_DEVICE_ID	BRCM_CC_4329_CHIP_ID
 #define BRCM_SDIO_4330_DEVICE_ID	BRCM_CC_4330_CHIP_ID
 #define BRCM_SDIO_4334_DEVICE_ID	BRCM_CC_4334_CHIP_ID
+#define BRCM_SDIO_43340_DEVICE_ID	BRCM_CC_43340_CHIP_ID
+#define BRCM_SDIO_43341_DEVICE_ID	43341
 #define BRCM_SDIO_43362_DEVICE_ID	BRCM_CC_43362_CHIP_ID
 #define BRCM_SDIO_4335_4339_DEVICE_ID	BRCM_CC_4335_CHIP_ID
 #define BRCM_SDIO_4354_DEVICE_ID	BRCM_CC_4354_CHIP_ID
diff --git a/include/linux/mmc/sdio_ids.h b/include/linux/mmc/sdio_ids.h
index 0f01fe0..61f8318 100644
--- a/include/linux/mmc/sdio_ids.h
+++ b/include/linux/mmc/sdio_ids.h
@@ -29,6 +29,8 @@
 #define SDIO_DEVICE_ID_BROADCOM_4329		0x4329
 #define SDIO_DEVICE_ID_BROADCOM_4330		0x4330
 #define SDIO_DEVICE_ID_BROADCOM_4334		0x4334
+#define SDIO_DEVICE_ID_BROADCOM_43340		43340
+#define SDIO_DEVICE_ID_BROADCOM_43341		43341
 #define SDIO_DEVICE_ID_BROADCOM_4335_4339	0x4335
 #define SDIO_DEVICE_ID_BROADCOM_43362		43362
 #define SDIO_DEVICE_ID_BROADCOM_4354		0x4354
-- 
1.9.1


^ permalink raw reply related	[flat|nested] 21+ messages in thread

* [PATCH 04/10] brcmfmac: get rid of duplicate SDIO device identifiers
  2014-12-21 11:43 [PATCH 00/10] brcmfmac: new device support and more Arend van Spriel
                   ` (2 preceding siblings ...)
  2014-12-21 11:43 ` [PATCH 03/10] brcmfmac: Add support for bcm43340/1 wireless chipsets Arend van Spriel
@ 2014-12-21 11:43 ` Arend van Spriel
  2015-01-06 18:35   ` Kalle Valo
  2014-12-21 11:43 ` [PATCH 05/10] brcmfmac: remove unused/duplicate defines in chip.c Arend van Spriel
                   ` (6 subsequent siblings)
  10 siblings, 1 reply; 21+ messages in thread
From: Arend van Spriel @ 2014-12-21 11:43 UTC (permalink / raw
  To: Kalle Valo; +Cc: linux-wireless, Arend van Spriel

Instead of defining SDIO device identifier in brcm80211 code use
the defintions in linux/mmc/sdio_ids.h directly.

Reviewed-by: Hante Meuleman <meuleman@broadcom.com>
Reviewed-by: Pieter-Paul Giesberts <pieterpg@broadcom.com>
Signed-off-by: Arend van Spriel <arend@broadcom.com>
---
 drivers/net/wireless/brcm80211/brcmfmac/bcmsdh.c   | 22 +++++++++++-----------
 drivers/net/wireless/brcm80211/brcmfmac/sdio.c     |  2 +-
 .../net/wireless/brcm80211/include/brcm_hw_ids.h   | 13 -------------
 3 files changed, 12 insertions(+), 25 deletions(-)

diff --git a/drivers/net/wireless/brcm80211/brcmfmac/bcmsdh.c b/drivers/net/wireless/brcm80211/brcmfmac/bcmsdh.c
index 7cf42e56..eaead8b 100644
--- a/drivers/net/wireless/brcm80211/brcmfmac/bcmsdh.c
+++ b/drivers/net/wireless/brcm80211/brcmfmac/bcmsdh.c
@@ -996,20 +996,20 @@ out:
 }
 
 #define BRCMF_SDIO_DEVICE(dev_id)	\
-	{SDIO_DEVICE(BRCM_SDIO_VENDOR_ID_BROADCOM, dev_id)}
+	{SDIO_DEVICE(SDIO_VENDOR_ID_BROADCOM, dev_id)}
 
 /* devices we support, null terminated */
 static const struct sdio_device_id brcmf_sdmmc_ids[] = {
-	BRCMF_SDIO_DEVICE(BRCM_SDIO_43143_DEVICE_ID),
-	BRCMF_SDIO_DEVICE(BRCM_SDIO_43241_DEVICE_ID),
-	BRCMF_SDIO_DEVICE(BRCM_SDIO_4329_DEVICE_ID),
-	BRCMF_SDIO_DEVICE(BRCM_SDIO_4330_DEVICE_ID),
-	BRCMF_SDIO_DEVICE(BRCM_SDIO_4334_DEVICE_ID),
-	BRCMF_SDIO_DEVICE(BRCM_SDIO_43340_DEVICE_ID),
-	BRCMF_SDIO_DEVICE(BRCM_SDIO_43341_DEVICE_ID),
-	BRCMF_SDIO_DEVICE(BRCM_SDIO_43362_DEVICE_ID),
-	BRCMF_SDIO_DEVICE(BRCM_SDIO_4335_4339_DEVICE_ID),
-	BRCMF_SDIO_DEVICE(BRCM_SDIO_4354_DEVICE_ID),
+	BRCMF_SDIO_DEVICE(SDIO_DEVICE_ID_BROADCOM_43143),
+	BRCMF_SDIO_DEVICE(SDIO_DEVICE_ID_BROADCOM_43241),
+	BRCMF_SDIO_DEVICE(SDIO_DEVICE_ID_BROADCOM_4329),
+	BRCMF_SDIO_DEVICE(SDIO_DEVICE_ID_BROADCOM_4330),
+	BRCMF_SDIO_DEVICE(SDIO_DEVICE_ID_BROADCOM_4334),
+	BRCMF_SDIO_DEVICE(SDIO_DEVICE_ID_BROADCOM_43340),
+	BRCMF_SDIO_DEVICE(SDIO_DEVICE_ID_BROADCOM_43341),
+	BRCMF_SDIO_DEVICE(SDIO_DEVICE_ID_BROADCOM_43362),
+	BRCMF_SDIO_DEVICE(SDIO_DEVICE_ID_BROADCOM_4335_4339),
+	BRCMF_SDIO_DEVICE(SDIO_DEVICE_ID_BROADCOM_4354),
 	{ /* end: all zeroes */ }
 };
 MODULE_DEVICE_TABLE(sdio, brcmf_sdmmc_ids);
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/sdio.c b/drivers/net/wireless/brcm80211/brcmfmac/sdio.c
index 551da35..99a3776 100644
--- a/drivers/net/wireless/brcm80211/brcmfmac/sdio.c
+++ b/drivers/net/wireless/brcm80211/brcmfmac/sdio.c
@@ -3816,7 +3816,7 @@ static u32 brcmf_sdio_buscore_read32(void *ctx, u32 addr)
 	u32 val, rev;
 
 	val = brcmf_sdiod_regrl(sdiodev, addr, NULL);
-	if (sdiodev->func[0]->device == BRCM_SDIO_4335_4339_DEVICE_ID &&
+	if (sdiodev->func[0]->device == SDIO_DEVICE_ID_BROADCOM_4335_4339 &&
 	    addr == CORE_CC_REG(SI_ENUM_BASE, chipid)) {
 		rev = (val & CID_REV_MASK) >> CID_REV_SHIFT;
 		if (rev >= 2) {
diff --git a/drivers/net/wireless/brcm80211/include/brcm_hw_ids.h b/drivers/net/wireless/brcm80211/include/brcm_hw_ids.h
index 00215ef..2124a17 100644
--- a/drivers/net/wireless/brcm80211/include/brcm_hw_ids.h
+++ b/drivers/net/wireless/brcm80211/include/brcm_hw_ids.h
@@ -22,7 +22,6 @@
 
 #define BRCM_USB_VENDOR_ID_BROADCOM	0x0a5c
 #define BRCM_PCIE_VENDOR_ID_BROADCOM	PCI_VENDOR_ID_BROADCOM
-#define BRCM_SDIO_VENDOR_ID_BROADCOM	SDIO_VENDOR_ID_BROADCOM
 
 /* Chipcommon Core Chip IDs */
 #define BRCM_CC_43143_CHIP_ID		43143
@@ -46,18 +45,6 @@
 #define BRCM_CC_43570_CHIP_ID		43570
 #define BRCM_CC_43602_CHIP_ID		43602
 
-/* SDIO Device IDs */
-#define BRCM_SDIO_43143_DEVICE_ID	BRCM_CC_43143_CHIP_ID
-#define BRCM_SDIO_43241_DEVICE_ID	BRCM_CC_43241_CHIP_ID
-#define BRCM_SDIO_4329_DEVICE_ID	BRCM_CC_4329_CHIP_ID
-#define BRCM_SDIO_4330_DEVICE_ID	BRCM_CC_4330_CHIP_ID
-#define BRCM_SDIO_4334_DEVICE_ID	BRCM_CC_4334_CHIP_ID
-#define BRCM_SDIO_43340_DEVICE_ID	BRCM_CC_43340_CHIP_ID
-#define BRCM_SDIO_43341_DEVICE_ID	43341
-#define BRCM_SDIO_43362_DEVICE_ID	BRCM_CC_43362_CHIP_ID
-#define BRCM_SDIO_4335_4339_DEVICE_ID	BRCM_CC_4335_CHIP_ID
-#define BRCM_SDIO_4354_DEVICE_ID	BRCM_CC_4354_CHIP_ID
-
 /* USB Device IDs */
 #define BRCM_USB_43143_DEVICE_ID	0xbd1e
 #define BRCM_USB_43236_DEVICE_ID	0xbd17
-- 
1.9.1


^ permalink raw reply related	[flat|nested] 21+ messages in thread

* [PATCH 05/10] brcmfmac: remove unused/duplicate defines in chip.c
  2014-12-21 11:43 [PATCH 00/10] brcmfmac: new device support and more Arend van Spriel
                   ` (3 preceding siblings ...)
  2014-12-21 11:43 ` [PATCH 04/10] brcmfmac: get rid of duplicate SDIO device identifiers Arend van Spriel
@ 2014-12-21 11:43 ` Arend van Spriel
  2014-12-21 11:43 ` [PATCH 06/10] brcmfmac: Fix WEP configuration for AP mode Arend van Spriel
                   ` (5 subsequent siblings)
  10 siblings, 0 replies; 21+ messages in thread
From: Arend van Spriel @ 2014-12-21 11:43 UTC (permalink / raw
  To: Kalle Valo; +Cc: linux-wireless, Arend van Spriel

The source file chip.c contained some duplicate defines and
some unused ones. Removing them.

Reviewed-by: Hante Meuleman <meuleman@broadcom.com>
Reviewed-by: Pieter-Paul Giesberts <pieterpg@broadcom.com>
Signed-off-by: Arend van Spriel <arend@broadcom.com>
---
 drivers/net/wireless/brcm80211/brcmfmac/chip.c | 14 --------------
 1 file changed, 14 deletions(-)

diff --git a/drivers/net/wireless/brcm80211/brcmfmac/chip.c b/drivers/net/wireless/brcm80211/brcmfmac/chip.c
index 0393d84..04d2ca0 100644
--- a/drivers/net/wireless/brcm80211/brcmfmac/chip.c
+++ b/drivers/net/wireless/brcm80211/brcmfmac/chip.c
@@ -101,14 +101,7 @@
 /* ARM Cortex M3 core, ID 0x82a */
 #define BCM4329_CORE_ARM_BASE		0x18002000
 #define BCM4329_RAMSIZE			0x48000
-
 /* bcm43143 */
-/* SDIO device core */
-#define BCM43143_CORE_BUS_BASE		0x18002000
-/* internal memory core */
-#define BCM43143_CORE_SOCRAM_BASE	0x18004000
-/* ARM Cortex M3 core, ID 0x82a */
-#define BCM43143_CORE_ARM_BASE		0x18003000
 #define BCM43143_RAMSIZE		0x70000
 
 #define CORE_SB(base, field) \
@@ -164,13 +157,6 @@ struct brcmf_core_priv {
 	struct brcmf_chip_priv *chip;
 };
 
-/* ARM CR4 core specific control flag bits */
-#define ARMCR4_BCMA_IOCTL_CPUHALT	0x0020
-
-/* D11 core specific control flag bits */
-#define D11_BCMA_IOCTL_PHYCLOCKEN	0x0004
-#define D11_BCMA_IOCTL_PHYRESET		0x0008
-
 struct brcmf_chip_priv {
 	struct brcmf_chip pub;
 	const struct brcmf_buscore_ops *ops;
-- 
1.9.1


^ permalink raw reply related	[flat|nested] 21+ messages in thread

* [PATCH 06/10] brcmfmac: Fix WEP configuration for AP mode.
  2014-12-21 11:43 [PATCH 00/10] brcmfmac: new device support and more Arend van Spriel
                   ` (4 preceding siblings ...)
  2014-12-21 11:43 ` [PATCH 05/10] brcmfmac: remove unused/duplicate defines in chip.c Arend van Spriel
@ 2014-12-21 11:43 ` Arend van Spriel
  2014-12-21 11:43 ` [PATCH 07/10] brcmfmac: Change error log in standard log for rxbufpost Arend van Spriel
                   ` (4 subsequent siblings)
  10 siblings, 0 replies; 21+ messages in thread
From: Arend van Spriel @ 2014-12-21 11:43 UTC (permalink / raw
  To: Kalle Valo; +Cc: linux-wireless, Hante Meuleman, Arend van Spriel

From: Hante Meuleman <meuleman@broadcom.com>

When a device is configured for AP mode and it is configured for
WEP then the keys are plumbed first, followed by AP configuration.
During configuration a down command is given to the firmware which
will clear the configured keys. This patch reprograms the WEP keys
after AP has been brought up.

Reviewed-by: Arend Van Spriel <arend@broadcom.com>
Reviewed-by: Pieter-Paul Giesberts <pieterpg@broadcom.com>
Signed-off-by: Hante Meuleman <meuleman@broadcom.com>
Signed-off-by: Arend van Spriel <arend@broadcom.com>
---
 drivers/net/wireless/brcm80211/brcmfmac/cfg80211.c | 95 ++++++++++++++++------
 drivers/net/wireless/brcm80211/brcmfmac/cfg80211.h |  4 +
 drivers/net/wireless/brcm80211/brcmfmac/core.c     |  3 +-
 drivers/net/wireless/brcm80211/brcmfmac/core.h     |  4 +-
 4 files changed, 76 insertions(+), 30 deletions(-)

diff --git a/drivers/net/wireless/brcm80211/brcmfmac/cfg80211.c b/drivers/net/wireless/brcm80211/brcmfmac/cfg80211.c
index 3aecc5f..1172551 100644
--- a/drivers/net/wireless/brcm80211/brcmfmac/cfg80211.c
+++ b/drivers/net/wireless/brcm80211/brcmfmac/cfg80211.c
@@ -452,16 +452,16 @@ static void convert_key_from_CPU(struct brcmf_wsec_key *key,
 }
 
 static int
-send_key_to_dongle(struct net_device *ndev, struct brcmf_wsec_key *key)
+send_key_to_dongle(struct brcmf_if *ifp, struct brcmf_wsec_key *key)
 {
 	int err;
 	struct brcmf_wsec_key_le key_le;
 
 	convert_key_from_CPU(key, &key_le);
 
-	brcmf_netdev_wait_pend8021x(ndev);
+	brcmf_netdev_wait_pend8021x(ifp);
 
-	err = brcmf_fil_bsscfg_data_set(netdev_priv(ndev), "wsec_key", &key_le,
+	err = brcmf_fil_bsscfg_data_set(ifp, "wsec_key", &key_le,
 					sizeof(key_le));
 
 	if (err)
@@ -1670,7 +1670,7 @@ brcmf_set_sharedkey(struct net_device *ndev,
 	brcmf_dbg(CONN, "key length (%d) key index (%d) algo (%d)\n",
 		  key.len, key.index, key.algo);
 	brcmf_dbg(CONN, "key \"%s\"\n", key.data);
-	err = send_key_to_dongle(ndev, &key);
+	err = send_key_to_dongle(netdev_priv(ndev), &key);
 	if (err)
 		return err;
 
@@ -2052,7 +2052,7 @@ brcmf_add_keyext(struct wiphy *wiphy, struct net_device *ndev,
 	/* check for key index change */
 	if (key.len == 0) {
 		/* key delete */
-		err = send_key_to_dongle(ndev, &key);
+		err = send_key_to_dongle(ifp, &key);
 		if (err)
 			brcmf_err("key delete error (%d)\n", err);
 	} else {
@@ -2108,7 +2108,7 @@ brcmf_add_keyext(struct wiphy *wiphy, struct net_device *ndev,
 			brcmf_err("Invalid cipher (0x%x)\n", params->cipher);
 			return -EINVAL;
 		}
-		err = send_key_to_dongle(ndev, &key);
+		err = send_key_to_dongle(ifp, &key);
 		if (err)
 			brcmf_err("wsec_key error (%d)\n", err);
 	}
@@ -2121,7 +2121,7 @@ brcmf_cfg80211_add_key(struct wiphy *wiphy, struct net_device *ndev,
 		    struct key_params *params)
 {
 	struct brcmf_if *ifp = netdev_priv(ndev);
-	struct brcmf_wsec_key key;
+	struct brcmf_wsec_key *key;
 	s32 val;
 	s32 wsec;
 	s32 err = 0;
@@ -2132,54 +2132,62 @@ brcmf_cfg80211_add_key(struct wiphy *wiphy, struct net_device *ndev,
 	if (!check_vif_up(ifp->vif))
 		return -EIO;
 
+	if (key_idx >= BRCMF_MAX_DEFAULT_KEYS) {
+		/* we ignore this key index in this case */
+		brcmf_err("invalid key index (%d)\n", key_idx);
+		return -EINVAL;
+	}
+
 	if (mac_addr &&
 		(params->cipher != WLAN_CIPHER_SUITE_WEP40) &&
 		(params->cipher != WLAN_CIPHER_SUITE_WEP104)) {
 		brcmf_dbg(TRACE, "Exit");
 		return brcmf_add_keyext(wiphy, ndev, key_idx, mac_addr, params);
 	}
-	memset(&key, 0, sizeof(key));
 
-	key.len = (u32) params->key_len;
-	key.index = (u32) key_idx;
+	key = &ifp->vif->profile.key[key_idx];
+	memset(key, 0, sizeof(*key));
 
-	if (key.len > sizeof(key.data)) {
-		brcmf_err("Too long key length (%u)\n", key.len);
+	if (params->key_len > sizeof(key->data)) {
+		brcmf_err("Too long key length (%u)\n", params->key_len);
 		err = -EINVAL;
 		goto done;
 	}
-	memcpy(key.data, params->key, key.len);
+	key->len = params->key_len;
+	key->index = key_idx;
 
-	key.flags = BRCMF_PRIMARY_KEY;
+	memcpy(key->data, params->key, key->len);
+
+	key->flags = BRCMF_PRIMARY_KEY;
 	switch (params->cipher) {
 	case WLAN_CIPHER_SUITE_WEP40:
-		key.algo = CRYPTO_ALGO_WEP1;
+		key->algo = CRYPTO_ALGO_WEP1;
 		val = WEP_ENABLED;
 		brcmf_dbg(CONN, "WLAN_CIPHER_SUITE_WEP40\n");
 		break;
 	case WLAN_CIPHER_SUITE_WEP104:
-		key.algo = CRYPTO_ALGO_WEP128;
+		key->algo = CRYPTO_ALGO_WEP128;
 		val = WEP_ENABLED;
 		brcmf_dbg(CONN, "WLAN_CIPHER_SUITE_WEP104\n");
 		break;
 	case WLAN_CIPHER_SUITE_TKIP:
 		if (!brcmf_is_apmode(ifp->vif)) {
 			brcmf_dbg(CONN, "Swapping RX/TX MIC key\n");
-			memcpy(keybuf, &key.data[24], sizeof(keybuf));
-			memcpy(&key.data[24], &key.data[16], sizeof(keybuf));
-			memcpy(&key.data[16], keybuf, sizeof(keybuf));
+			memcpy(keybuf, &key->data[24], sizeof(keybuf));
+			memcpy(&key->data[24], &key->data[16], sizeof(keybuf));
+			memcpy(&key->data[16], keybuf, sizeof(keybuf));
 		}
-		key.algo = CRYPTO_ALGO_TKIP;
+		key->algo = CRYPTO_ALGO_TKIP;
 		val = TKIP_ENABLED;
 		brcmf_dbg(CONN, "WLAN_CIPHER_SUITE_TKIP\n");
 		break;
 	case WLAN_CIPHER_SUITE_AES_CMAC:
-		key.algo = CRYPTO_ALGO_AES_CCM;
+		key->algo = CRYPTO_ALGO_AES_CCM;
 		val = AES_ENABLED;
 		brcmf_dbg(CONN, "WLAN_CIPHER_SUITE_AES_CMAC\n");
 		break;
 	case WLAN_CIPHER_SUITE_CCMP:
-		key.algo = CRYPTO_ALGO_AES_CCM;
+		key->algo = CRYPTO_ALGO_AES_CCM;
 		val = AES_ENABLED;
 		brcmf_dbg(CONN, "WLAN_CIPHER_SUITE_CCMP\n");
 		break;
@@ -2189,7 +2197,7 @@ brcmf_cfg80211_add_key(struct wiphy *wiphy, struct net_device *ndev,
 		goto done;
 	}
 
-	err = send_key_to_dongle(ndev, &key);
+	err = send_key_to_dongle(ifp, key);
 	if (err)
 		goto done;
 
@@ -2222,7 +2230,7 @@ brcmf_cfg80211_del_key(struct wiphy *wiphy, struct net_device *ndev,
 	if (!check_vif_up(ifp->vif))
 		return -EIO;
 
-	if (key_idx >= DOT11_MAX_DEFAULT_KEYS) {
+	if (key_idx >= BRCMF_MAX_DEFAULT_KEYS) {
 		/* we ignore this key index in this case */
 		brcmf_err("invalid key index (%d)\n", key_idx);
 		return -EINVAL;
@@ -2237,7 +2245,7 @@ brcmf_cfg80211_del_key(struct wiphy *wiphy, struct net_device *ndev,
 	brcmf_dbg(CONN, "key index (%d)\n", key_idx);
 
 	/* Set the new key/index */
-	err = send_key_to_dongle(ndev, &key);
+	err = send_key_to_dongle(ifp, &key);
 
 	brcmf_dbg(TRACE, "Exit\n");
 	return err;
@@ -2305,6 +2313,39 @@ brcmf_cfg80211_config_default_mgmt_key(struct wiphy *wiphy,
 	return -EOPNOTSUPP;
 }
 
+static void
+brcmf_cfg80211_reconfigure_wep(struct brcmf_if *ifp)
+{
+	s32 err;
+	u8 key_idx;
+	struct brcmf_wsec_key *key;
+	s32 wsec;
+
+	for (key_idx = 0; key_idx < BRCMF_MAX_DEFAULT_KEYS; key_idx++) {
+		key = &ifp->vif->profile.key[key_idx];
+		if ((key->algo == CRYPTO_ALGO_WEP1) ||
+		    (key->algo == CRYPTO_ALGO_WEP128))
+			break;
+	}
+	if (key_idx == BRCMF_MAX_DEFAULT_KEYS)
+		return;
+
+	err = send_key_to_dongle(ifp, key);
+	if (err) {
+		brcmf_err("Setting WEP key failed (%d)\n", err);
+		return;
+	}
+	err = brcmf_fil_bsscfg_int_get(ifp, "wsec", &wsec);
+	if (err) {
+		brcmf_err("get wsec error (%d)\n", err);
+		return;
+	}
+	wsec |= WEP_ENABLED;
+	err = brcmf_fil_bsscfg_int_set(ifp, "wsec", wsec);
+	if (err)
+		brcmf_err("set wsec error (%d)\n", err);
+}
+
 static s32
 brcmf_cfg80211_get_station(struct wiphy *wiphy, struct net_device *ndev,
 			   const u8 *mac, struct station_info *sinfo)
@@ -4057,6 +4098,10 @@ brcmf_cfg80211_start_ap(struct wiphy *wiphy, struct net_device *ndev,
 			brcmf_err("BRCMF_C_UP error (%d)\n", err);
 			goto exit;
 		}
+		/* On DOWN the firmware removes the WEP keys, reconfigure
+		 * them if they were set.
+		 */
+		brcmf_cfg80211_reconfigure_wep(ifp);
 
 		memset(&join_params, 0, sizeof(join_params));
 		/* join parameters starts with ssid */
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/cfg80211.h b/drivers/net/wireless/brcm80211/brcmfmac/cfg80211.h
index 9e98b8d..a5242af 100644
--- a/drivers/net/wireless/brcm80211/brcmfmac/cfg80211.h
+++ b/drivers/net/wireless/brcm80211/brcmfmac/cfg80211.h
@@ -75,6 +75,8 @@
 
 #define BRCMF_VNDR_IE_P2PAF_SHIFT	12
 
+#define BRCMF_MAX_DEFAULT_KEYS		4
+
 
 /**
  * enum brcmf_scan_status - scan engine status
@@ -125,11 +127,13 @@ struct brcmf_cfg80211_security {
  * @ssid: ssid of associated/associating ap.
  * @bssid: bssid of joined/joining ibss.
  * @sec: security information.
+ * @key: key information
  */
 struct brcmf_cfg80211_profile {
 	struct brcmf_ssid ssid;
 	u8 bssid[ETH_ALEN];
 	struct brcmf_cfg80211_security sec;
+	struct brcmf_wsec_key key[BRCMF_MAX_DEFAULT_KEYS];
 };
 
 /**
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/core.c b/drivers/net/wireless/brcm80211/brcmfmac/core.c
index effe6d7..e2a9e33 100644
--- a/drivers/net/wireless/brcm80211/brcmfmac/core.c
+++ b/drivers/net/wireless/brcm80211/brcmfmac/core.c
@@ -1093,9 +1093,8 @@ static int brcmf_get_pend_8021x_cnt(struct brcmf_if *ifp)
 	return atomic_read(&ifp->pend_8021x_cnt);
 }
 
-int brcmf_netdev_wait_pend8021x(struct net_device *ndev)
+int brcmf_netdev_wait_pend8021x(struct brcmf_if *ifp)
 {
-	struct brcmf_if *ifp = netdev_priv(ndev);
 	int err;
 
 	err = wait_event_timeout(ifp->pend_8021x_wait,
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/core.h b/drivers/net/wireless/brcm80211/brcmfmac/core.h
index 23f74b1..f2f7d3d 100644
--- a/drivers/net/wireless/brcm80211/brcmfmac/core.h
+++ b/drivers/net/wireless/brcm80211/brcmfmac/core.h
@@ -29,8 +29,6 @@
 /* For supporting multiple interfaces */
 #define BRCMF_MAX_IFS	16
 
-#define DOT11_MAX_DEFAULT_KEYS	4
-
 /* Small, medium and maximum buffer size for dcmd
  */
 #define BRCMF_DCMD_SMLEN	256
@@ -167,7 +165,7 @@ struct brcmf_skb_reorder_data {
 	u8 *reorder;
 };
 
-int brcmf_netdev_wait_pend8021x(struct net_device *ndev);
+int brcmf_netdev_wait_pend8021x(struct brcmf_if *ifp);
 
 /* Return pointer to interface name */
 char *brcmf_ifname(struct brcmf_pub *drvr, int idx);
-- 
1.9.1


^ permalink raw reply related	[flat|nested] 21+ messages in thread

* [PATCH 07/10] brcmfmac: Change error log in standard log for rxbufpost.
  2014-12-21 11:43 [PATCH 00/10] brcmfmac: new device support and more Arend van Spriel
                   ` (5 preceding siblings ...)
  2014-12-21 11:43 ` [PATCH 06/10] brcmfmac: Fix WEP configuration for AP mode Arend van Spriel
@ 2014-12-21 11:43 ` Arend van Spriel
  2014-12-21 11:43 ` [PATCH 08/10] brcmfmac: follow user-space regulatory domain selection Arend van Spriel
                   ` (3 subsequent siblings)
  10 siblings, 0 replies; 21+ messages in thread
From: Arend van Spriel @ 2014-12-21 11:43 UTC (permalink / raw
  To: Kalle Valo; +Cc: linux-wireless, Hante Meuleman, Arend van Spriel

From: Hante Meuleman <meuleman@broadcom.com>

When there is no room in the ring for rxbufpost an error is logged,
however this happens quite frequently and can be considered normal
and is certainly recoverable. This patch changes the erorr into
a normal msgbuf log.

Reviewed-by: Arend Van Spriel <arend@broadcom.com>
Reviewed-by: Pieter-Paul Giesberts <pieterpg@broadcom.com>
Signed-off-by: Hante Meuleman <meuleman@broadcom.com>
Signed-off-by: Arend van Spriel <arend@broadcom.com>
---
 drivers/net/wireless/brcm80211/brcmfmac/msgbuf.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/wireless/brcm80211/brcmfmac/msgbuf.c b/drivers/net/wireless/brcm80211/brcmfmac/msgbuf.c
index 3ff6acf..ee147f5 100644
--- a/drivers/net/wireless/brcm80211/brcmfmac/msgbuf.c
+++ b/drivers/net/wireless/brcm80211/brcmfmac/msgbuf.c
@@ -894,7 +894,7 @@ static u32 brcmf_msgbuf_rxbuf_data_post(struct brcmf_msgbuf *msgbuf, u32 count)
 							      count,
 							      &alloced);
 	if (!ret_ptr) {
-		brcmf_err("Failed to reserve space in commonring\n");
+		brcmf_dbg(MSGBUF, "Failed to reserve space in commonring\n");
 		return 0;
 	}
 
-- 
1.9.1


^ permalink raw reply related	[flat|nested] 21+ messages in thread

* [PATCH 08/10] brcmfmac: follow user-space regulatory domain selection
  2014-12-21 11:43 [PATCH 00/10] brcmfmac: new device support and more Arend van Spriel
                   ` (6 preceding siblings ...)
  2014-12-21 11:43 ` [PATCH 07/10] brcmfmac: Change error log in standard log for rxbufpost Arend van Spriel
@ 2014-12-21 11:43 ` Arend van Spriel
  2014-12-21 11:43 ` [PATCH 09/10] brcmfmac: signal completion of 802.1x Arend van Spriel
                   ` (2 subsequent siblings)
  10 siblings, 0 replies; 21+ messages in thread
From: Arend van Spriel @ 2014-12-21 11:43 UTC (permalink / raw
  To: Kalle Valo; +Cc: linux-wireless, Arend van Spriel

When user-space uses a valid ISO-3166-1 country code for its
regulatory domain selection, the driver will try to configure
the firmware to use the same.

Reviewed-by: Pieter-Paul Giesberts <pieterpg@broadcom.com>
Reviewed-by: Hante Meuleman <meuleman@broadcom.com>
Signed-off-by: Arend van Spriel <arend@broadcom.com>
---
 drivers/net/wireless/brcm80211/brcmfmac/cfg80211.c | 25 +++++++++++++++++++++-
 .../net/wireless/brcm80211/brcmfmac/fwil_types.h   | 14 ++++++++++++
 2 files changed, 38 insertions(+), 1 deletion(-)

diff --git a/drivers/net/wireless/brcm80211/brcmfmac/cfg80211.c b/drivers/net/wireless/brcm80211/brcmfmac/cfg80211.c
index 1172551..2471dd5 100644
--- a/drivers/net/wireless/brcm80211/brcmfmac/cfg80211.c
+++ b/drivers/net/wireless/brcm80211/brcmfmac/cfg80211.c
@@ -3982,7 +3982,6 @@ brcmf_cfg80211_start_ap(struct wiphy *wiphy, struct net_device *ndev,
 	brcmf_dbg(TRACE, "ssid=%s(%zu), auth_type=%d, inactivity_timeout=%d\n",
 		  settings->ssid, settings->ssid_len, settings->auth_type,
 		  settings->inactivity_timeout);
-
 	dev_role = ifp->vif->wdev.iftype;
 	mbss = ifp->vif->mbss;
 
@@ -5921,6 +5920,29 @@ int brcmf_cfg80211_wait_vif_event_timeout(struct brcmf_cfg80211_info *cfg,
 				  vif_event_equals(event, action), timeout);
 }
 
+static void brcmf_cfg80211_reg_notifier(struct wiphy *wiphy,
+					struct regulatory_request *req)
+{
+	struct brcmf_cfg80211_info *cfg = wiphy_priv(wiphy);
+	struct brcmf_if *ifp = netdev_priv(cfg_to_ndev(cfg));
+	struct brcmf_fil_country_le ccreq;
+	int i;
+
+	brcmf_dbg(TRACE, "enter: initiator=%d, alpha=%c%c\n", req->initiator,
+		  req->alpha2[0], req->alpha2[1]);
+
+	/* ignore non-ISO3166 country codes */
+	for (i = 0; i < sizeof(req->alpha2); i++)
+		if (req->alpha2[i] < 'A' || req->alpha2[i] > 'Z') {
+			brcmf_err("not a ISO3166 code\n");
+			return;
+		}
+	memset(&ccreq, 0, sizeof(ccreq));
+	ccreq.rev = cpu_to_le32(-1);
+	memcpy(ccreq.ccode, req->alpha2, sizeof(req->alpha2));
+	brcmf_fil_iovar_data_set(ifp, "country", &ccreq, sizeof(ccreq));
+}
+
 static void brcmf_free_wiphy(struct wiphy *wiphy)
 {
 	kfree(wiphy->iface_combinations);
@@ -5997,6 +6019,7 @@ struct brcmf_cfg80211_info *brcmf_cfg80211_attach(struct brcmf_pub *drvr,
 		goto priv_out;
 
 	brcmf_dbg(INFO, "Registering custom regulatory\n");
+	wiphy->reg_notifier = brcmf_cfg80211_reg_notifier;
 	wiphy->regulatory_flags |= REGULATORY_CUSTOM_REG;
 	wiphy_apply_custom_regulatory(wiphy, &brcmf_regdom);
 
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/fwil_types.h b/drivers/net/wireless/brcm80211/brcmfmac/fwil_types.h
index 50891c0..619669b 100644
--- a/drivers/net/wireless/brcm80211/brcmfmac/fwil_types.h
+++ b/drivers/net/wireless/brcm80211/brcmfmac/fwil_types.h
@@ -112,6 +112,7 @@
 #define BRCMF_WOWL_MAXPATTERNS		8
 #define BRCMF_WOWL_MAXPATTERNSIZE	128
 
+#define BRCMF_COUNTRY_BUF_SZ		4
 
 /* join preference types for join_pref iovar */
 enum brcmf_join_pref_types {
@@ -525,4 +526,17 @@ struct brcmf_mbss_ssid_le {
 	unsigned char SSID[32];
 };
 
+/**
+ * struct brcmf_fil_country_le - country configuration structure.
+ *
+ * @country_abbrev: null-terminated country code used in the country IE.
+ * @rev: revision specifier for ccode. on set, -1 indicates unspecified.
+ * @ccode: null-terminated built-in country code.
+ */
+struct brcmf_fil_country_le {
+	char country_abbrev[BRCMF_COUNTRY_BUF_SZ];
+	__le32 rev;
+	char ccode[BRCMF_COUNTRY_BUF_SZ];
+};
+
 #endif /* FWIL_TYPES_H_ */
-- 
1.9.1


^ permalink raw reply related	[flat|nested] 21+ messages in thread

* [PATCH 09/10] brcmfmac: signal completion of 802.1x.
  2014-12-21 11:43 [PATCH 00/10] brcmfmac: new device support and more Arend van Spriel
                   ` (7 preceding siblings ...)
  2014-12-21 11:43 ` [PATCH 08/10] brcmfmac: follow user-space regulatory domain selection Arend van Spriel
@ 2014-12-21 11:43 ` Arend van Spriel
  2014-12-21 11:43 ` [PATCH 10/10] brcmfmac: enable 802.11d support in firmware Arend van Spriel
  2015-01-06 18:36 ` [PATCH 00/10] brcmfmac: new device support and more Kalle Valo
  10 siblings, 0 replies; 21+ messages in thread
From: Arend van Spriel @ 2014-12-21 11:43 UTC (permalink / raw
  To: Kalle Valo; +Cc: linux-wireless, Hante Meuleman, Arend van Spriel

From: Hante Meuleman <meuleman@broadcom.com>

Use cfg80211 change_station to signal the completion of 802.1x
to firmware. This allows FW to take appropriate actions.

Reviewed-by: Arend Van Spriel <arend@broadcom.com>
Reviewed-by: Pieter-Paul Giesberts <pieterpg@broadcom.com>
Signed-off-by: Hante Meuleman <meuleman@broadcom.com>
Signed-off-by: Arend van Spriel <arend@broadcom.com>
---
 drivers/net/wireless/brcm80211/brcmfmac/cfg80211.c | 30 ++++++++++++++++++++++
 drivers/net/wireless/brcm80211/brcmfmac/common.c   |  3 +++
 drivers/net/wireless/brcm80211/brcmfmac/common.h   | 20 +++++++++++++++
 drivers/net/wireless/brcm80211/brcmfmac/flowring.c |  6 ++---
 drivers/net/wireless/brcm80211/brcmfmac/fwil.h     |  2 ++
 5 files changed, 57 insertions(+), 4 deletions(-)
 create mode 100644 drivers/net/wireless/brcm80211/brcmfmac/common.h

diff --git a/drivers/net/wireless/brcm80211/brcmfmac/cfg80211.c b/drivers/net/wireless/brcm80211/brcmfmac/cfg80211.c
index 2471dd5..c896fe2 100644
--- a/drivers/net/wireless/brcm80211/brcmfmac/cfg80211.c
+++ b/drivers/net/wireless/brcm80211/brcmfmac/cfg80211.c
@@ -38,6 +38,7 @@
 #include "proto.h"
 #include "vendor.h"
 #include "bus.h"
+#include "common.h"
 
 #define BRCMF_SCAN_IE_LEN_MAX		2048
 #define BRCMF_PNO_VERSION		2
@@ -4241,6 +4242,34 @@ brcmf_cfg80211_del_station(struct wiphy *wiphy, struct net_device *ndev,
 	return err;
 }
 
+static int
+brcmf_cfg80211_change_station(struct wiphy *wiphy, struct net_device *ndev,
+			      const u8 *mac, struct station_parameters *params)
+{
+	struct brcmf_if *ifp = netdev_priv(ndev);
+	s32 err;
+
+	brcmf_dbg(TRACE, "Enter, MAC %pM, mask 0x%04x set 0x%04x\n", mac,
+		  params->sta_flags_mask, params->sta_flags_set);
+
+	/* Ignore all 00 MAC */
+	if (is_zero_ether_addr(mac))
+		return 0;
+
+	if (!(params->sta_flags_mask & BIT(NL80211_STA_FLAG_AUTHORIZED)))
+		return 0;
+
+	if (params->sta_flags_set & BIT(NL80211_STA_FLAG_AUTHORIZED))
+		err = brcmf_fil_cmd_data_set(ifp, BRCMF_C_SET_SCB_AUTHORIZE,
+					     (void *)mac, ETH_ALEN);
+	else
+		err = brcmf_fil_cmd_data_set(ifp, BRCMF_C_SET_SCB_DEAUTHORIZE,
+					     (void *)mac, ETH_ALEN);
+	if (err < 0)
+		brcmf_err("Setting SCB (de-)authorize failed, %d\n", err);
+
+	return err;
+}
 
 static void
 brcmf_cfg80211_mgmt_frame_register(struct wiphy *wiphy,
@@ -4515,6 +4544,7 @@ static struct cfg80211_ops wl_cfg80211_ops = {
 	.stop_ap = brcmf_cfg80211_stop_ap,
 	.change_beacon = brcmf_cfg80211_change_beacon,
 	.del_station = brcmf_cfg80211_del_station,
+	.change_station = brcmf_cfg80211_change_station,
 	.sched_scan_start = brcmf_cfg80211_sched_scan_start,
 	.sched_scan_stop = brcmf_cfg80211_sched_scan_stop,
 	.mgmt_frame_register = brcmf_cfg80211_mgmt_frame_register,
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/common.c b/drivers/net/wireless/brcm80211/brcmfmac/common.c
index 1861a13..ddf05af 100644
--- a/drivers/net/wireless/brcm80211/brcmfmac/common.c
+++ b/drivers/net/wireless/brcm80211/brcmfmac/common.c
@@ -25,6 +25,9 @@
 #include "fwil.h"
 #include "fwil_types.h"
 #include "tracepoint.h"
+#include "common.h"
+
+const u8 ALLFFMAC[ETH_ALEN] = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff };
 
 #define BRCMF_DEFAULT_BCN_TIMEOUT	3
 #define BRCMF_DEFAULT_SCAN_CHANNEL_TIME	40
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/common.h b/drivers/net/wireless/brcm80211/brcmfmac/common.h
new file mode 100644
index 0000000..0d39d80
--- /dev/null
+++ b/drivers/net/wireless/brcm80211/brcmfmac/common.h
@@ -0,0 +1,20 @@
+/* Copyright (c) 2014 Broadcom Corporation
+ *
+ * Permission to use, copy, modify, and/or distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+ * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
+ * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+#ifndef BRCMFMAC_COMMON_H
+#define BRCMFMAC_COMMON_H
+
+extern const u8 ALLFFMAC[ETH_ALEN];
+
+#endif /* BRCMFMAC_COMMON_H */
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/flowring.c b/drivers/net/wireless/brcm80211/brcmfmac/flowring.c
index 44f3a84..910fbb5 100644
--- a/drivers/net/wireless/brcm80211/brcmfmac/flowring.c
+++ b/drivers/net/wireless/brcm80211/brcmfmac/flowring.c
@@ -25,6 +25,7 @@
 #include "proto.h"
 #include "flowring.h"
 #include "msgbuf.h"
+#include "common.h"
 
 
 #define BRCMF_FLOWRING_HIGH		1024
@@ -34,9 +35,6 @@
 #define BRCMF_FLOWRING_HASH_AP(da, fifo, ifidx) (da[5] + fifo + ifidx * 16)
 #define BRCMF_FLOWRING_HASH_STA(fifo, ifidx) (fifo + ifidx * 16)
 
-static const u8 ALLZEROMAC[ETH_ALEN] = { 0, 0, 0, 0, 0, 0 };
-static const u8 ALLFFMAC[ETH_ALEN] = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff };
-
 static const u8 brcmf_flowring_prio2fifo[] = {
 	1,
 	0,
@@ -137,7 +135,7 @@ u32 brcmf_flowring_create(struct brcmf_flowring *flow, u8 da[ETH_ALEN],
 	hash = flow->hash;
 	for (i = 0; i < BRCMF_FLOWRING_HASHSIZE; i++) {
 		if ((hash[hash_idx].ifidx == BRCMF_FLOWRING_INVALID_IFIDX) &&
-		    (memcmp(hash[hash_idx].mac, ALLZEROMAC, ETH_ALEN) == 0)) {
+		    (is_zero_ether_addr(hash[hash_idx].mac))) {
 			found = true;
 			break;
 		}
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/fwil.h b/drivers/net/wireless/brcm80211/brcmfmac/fwil.h
index a30be68..3ede91d 100644
--- a/drivers/net/wireless/brcm80211/brcmfmac/fwil.h
+++ b/drivers/net/wireless/brcm80211/brcmfmac/fwil.h
@@ -60,6 +60,8 @@
 #define BRCMF_C_GET_CURR_RATESET		114
 #define BRCMF_C_GET_AP				117
 #define BRCMF_C_SET_AP				118
+#define BRCMF_C_SET_SCB_AUTHORIZE		121
+#define BRCMF_C_SET_SCB_DEAUTHORIZE		122
 #define BRCMF_C_GET_RSSI			127
 #define BRCMF_C_GET_WSEC			133
 #define BRCMF_C_SET_WSEC			134
-- 
1.9.1


^ permalink raw reply related	[flat|nested] 21+ messages in thread

* [PATCH 10/10] brcmfmac: enable 802.11d support in firmware
  2014-12-21 11:43 [PATCH 00/10] brcmfmac: new device support and more Arend van Spriel
                   ` (8 preceding siblings ...)
  2014-12-21 11:43 ` [PATCH 09/10] brcmfmac: signal completion of 802.1x Arend van Spriel
@ 2014-12-21 11:43 ` Arend van Spriel
  2015-01-06 18:36 ` [PATCH 00/10] brcmfmac: new device support and more Kalle Valo
  10 siblings, 0 replies; 21+ messages in thread
From: Arend van Spriel @ 2014-12-21 11:43 UTC (permalink / raw
  To: Kalle Valo; +Cc: linux-wireless, Arend van Spriel

When the driver gets beacon info containing a country IE from user-space
upon .start_ap() callback, it will enable regulatory 802.11d support.

Reviewed-by: Pieter-Paul Giesberts <pieterpg@broadcom.com>
Reviewed-by: Hante Meuleman <meuleman@broadcom.com>
Signed-off-by: Arend van Spriel <arend@broadcom.com>
---
 drivers/net/wireless/brcm80211/brcmfmac/cfg80211.c | 26 ++++++++++++++++++++++
 drivers/net/wireless/brcm80211/brcmfmac/cfg80211.h |  1 +
 drivers/net/wireless/brcm80211/brcmfmac/fwil.h     |  2 ++
 3 files changed, 29 insertions(+)

diff --git a/drivers/net/wireless/brcm80211/brcmfmac/cfg80211.c b/drivers/net/wireless/brcm80211/brcmfmac/cfg80211.c
index c896fe2..1783c03 100644
--- a/drivers/net/wireless/brcm80211/brcmfmac/cfg80211.c
+++ b/drivers/net/wireless/brcm80211/brcmfmac/cfg80211.c
@@ -3966,6 +3966,7 @@ brcmf_cfg80211_start_ap(struct wiphy *wiphy, struct net_device *ndev,
 	struct brcmf_cfg80211_info *cfg = wiphy_to_cfg(wiphy);
 	struct brcmf_if *ifp = netdev_priv(ndev);
 	const struct brcmf_tlv *ssid_ie;
+	const struct brcmf_tlv *country_ie;
 	struct brcmf_ssid_le ssid_le;
 	s32 err = -EPERM;
 	const struct brcmf_tlv *rsn_ie;
@@ -3975,6 +3976,7 @@ brcmf_cfg80211_start_ap(struct wiphy *wiphy, struct net_device *ndev,
 	struct brcmf_fil_bss_enable_le bss_enable;
 	u16 chanspec;
 	bool mbss;
+	int is_11d;
 
 	brcmf_dbg(TRACE, "ctrlchn=%d, center=%d, bw=%d, beacon_interval=%d, dtim_period=%d,\n",
 		  settings->chandef.chan->hw_value,
@@ -3986,6 +3988,13 @@ brcmf_cfg80211_start_ap(struct wiphy *wiphy, struct net_device *ndev,
 	dev_role = ifp->vif->wdev.iftype;
 	mbss = ifp->vif->mbss;
 
+	/* store current 11d setting */
+	brcmf_fil_cmd_int_get(ifp, BRCMF_C_GET_REGULATORY, &ifp->vif->is_11d);
+	country_ie = brcmf_parse_tlvs((u8 *)settings->beacon.tail,
+				      settings->beacon.tail_len,
+				      WLAN_EID_COUNTRY);
+	is_11d = country_ie ? 1 : 0;
+
 	memset(&ssid_le, 0, sizeof(ssid_le));
 	if (settings->ssid == NULL || settings->ssid_len == 0) {
 		ie_offset = DOT11_MGMT_HDR_LEN + DOT11_BCN_PRB_FIXED_LEN;
@@ -4051,6 +4060,14 @@ brcmf_cfg80211_start_ap(struct wiphy *wiphy, struct net_device *ndev,
 			goto exit;
 		}
 
+		if (is_11d != ifp->vif->is_11d) {
+			err = brcmf_fil_cmd_int_set(ifp, BRCMF_C_SET_REGULATORY,
+						    is_11d);
+			if (err < 0) {
+				brcmf_err("Regulatory Set Error, %d\n", err);
+				goto exit;
+			}
+		}
 		if (settings->beacon_interval) {
 			err = brcmf_fil_cmd_int_set(ifp, BRCMF_C_SET_BCNPRD,
 						    settings->beacon_interval);
@@ -4083,6 +4100,10 @@ brcmf_cfg80211_start_ap(struct wiphy *wiphy, struct net_device *ndev,
 			brcmf_err("SET INFRA error %d\n", err);
 			goto exit;
 		}
+	} else if (WARN_ON(is_11d != ifp->vif->is_11d)) {
+		/* Multiple-BSS should use same 11d configuration */
+		err = -EINVAL;
+		goto exit;
 	}
 	if (dev_role == NL80211_IFTYPE_AP) {
 		if ((brcmf_feat_is_enabled(ifp, BRCMF_FEAT_MBSS)) && (!mbss))
@@ -4178,6 +4199,11 @@ static int brcmf_cfg80211_stop_ap(struct wiphy *wiphy, struct net_device *ndev)
 			brcmf_err("setting INFRA mode failed %d\n", err);
 		if (brcmf_feat_is_enabled(ifp, BRCMF_FEAT_MBSS))
 			brcmf_fil_iovar_int_set(ifp, "mbss", 0);
+		err = brcmf_fil_cmd_int_set(ifp, BRCMF_C_SET_REGULATORY,
+					    ifp->vif->is_11d);
+		if (err < 0)
+			brcmf_err("restoring REGULATORY setting failed %d\n",
+				  err);
 		/* Bring device back up so it can be used again */
 		err = brcmf_fil_cmd_int_set(ifp, BRCMF_C_UP, 1);
 		if (err < 0)
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/cfg80211.h b/drivers/net/wireless/brcm80211/brcmfmac/cfg80211.h
index a5242af..d9e6d01 100644
--- a/drivers/net/wireless/brcm80211/brcmfmac/cfg80211.h
+++ b/drivers/net/wireless/brcm80211/brcmfmac/cfg80211.h
@@ -200,6 +200,7 @@ struct brcmf_cfg80211_vif {
 	struct list_head list;
 	u16 mgmt_rx_reg;
 	bool mbss;
+	int is_11d;
 };
 
 /* association inform */
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/fwil.h b/drivers/net/wireless/brcm80211/brcmfmac/fwil.h
index 3ede91d..37345e7 100644
--- a/drivers/net/wireless/brcm80211/brcmfmac/fwil.h
+++ b/drivers/net/wireless/brcm80211/brcmfmac/fwil.h
@@ -43,6 +43,8 @@
 #define BRCMF_C_SET_RADIO			38
 #define BRCMF_C_GET_PHYTYPE			39
 #define BRCMF_C_SET_KEY				45
+#define BRCMF_C_GET_REGULATORY			46
+#define BRCMF_C_SET_REGULATORY			47
 #define BRCMF_C_SET_PASSIVE_SCAN		49
 #define BRCMF_C_SCAN				50
 #define BRCMF_C_SCAN_RESULTS			51
-- 
1.9.1


^ permalink raw reply related	[flat|nested] 21+ messages in thread

* Re: [PATCH 01/10] brcmfmac: Fix incorrect casting of 64 bit physical address.
  2014-12-21 11:43 ` [PATCH 01/10] brcmfmac: Fix incorrect casting of 64 bit physical address Arend van Spriel
@ 2014-12-21 17:24   ` Joe Perches
  0 siblings, 0 replies; 21+ messages in thread
From: Joe Perches @ 2014-12-21 17:24 UTC (permalink / raw
  To: Arend van Spriel; +Cc: Kalle Valo, linux-wireless, Hante Meuleman

On Sun, 2014-12-21 at 12:43 +0100, Arend van Spriel wrote:
> The physical addresses being used by pcie and msgbuf were using
> a cast to long, which incorrectly caused it to limit the address
> to 32bit. Now explicit u64 is used where needed.

Maybe these should be phys_addr_t instead?

> diff --git a/drivers/net/wireless/brcm80211/brcmfmac/msgbuf.c b/drivers/net/wireless/brcm80211/brcmfmac/msgbuf.c
[]
> @@ -583,7 +583,7 @@ brcmf_msgbuf_flowring_create_worker(struct brcmf_msgbuf *msgbuf,
>  	u32 flowid;
>  	void *dma_buf;
>  	u32 dma_sz;
> -	long long address;
> +	u64 address;



^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [PATCH 03/10] brcmfmac: Add support for bcm43340/1 wireless chipsets
  2014-12-21 11:43 ` [PATCH 03/10] brcmfmac: Add support for bcm43340/1 wireless chipsets Arend van Spriel
@ 2014-12-21 17:50   ` Marcel Holtmann
  2014-12-21 19:56     ` Arend van Spriel
  0 siblings, 1 reply; 21+ messages in thread
From: Marcel Holtmann @ 2014-12-21 17:50 UTC (permalink / raw
  To: Arend van Spriel
  Cc: Kalle Valo, linux-wireless, Samuel Ortiz, Rob Herring,
	John Stultz

Hi Arend,

> diff --git a/include/linux/mmc/sdio_ids.h b/include/linux/mmc/sdio_ids.h
> index 0f01fe0..61f8318 100644
> --- a/include/linux/mmc/sdio_ids.h
> +++ b/include/linux/mmc/sdio_ids.h
> @@ -29,6 +29,8 @@
> #define SDIO_DEVICE_ID_BROADCOM_4329		0x4329
> #define SDIO_DEVICE_ID_BROADCOM_4330		0x4330
> #define SDIO_DEVICE_ID_BROADCOM_4334		0x4334
> +#define SDIO_DEVICE_ID_BROADCOM_43340		43340
> +#define SDIO_DEVICE_ID_BROADCOM_43341		43341

the general preference is to have these values in hex. I get the fact that they map the marketing number, but that could be just stated in a comment after the hex number.

> #define SDIO_DEVICE_ID_BROADCOM_4335_4339	0x4335
> #define SDIO_DEVICE_ID_BROADCOM_43362		43362
> #define SDIO_DEVICE_ID_BROADCOM_4354		0x4354

Is there any chance that you can also send patches against sdio.ids database from systemd:

http://cgit.freedesktop.org/systemd/systemd/tree/hwdb/sdio.ids

That would allow for udev to provide friendly names and they would also be shown using networkctl.

Regards

Marcel


^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [PATCH 03/10] brcmfmac: Add support for bcm43340/1 wireless chipsets
  2014-12-21 17:50   ` Marcel Holtmann
@ 2014-12-21 19:56     ` Arend van Spriel
  2014-12-21 20:14       ` Rafał Miłecki
  0 siblings, 1 reply; 21+ messages in thread
From: Arend van Spriel @ 2014-12-21 19:56 UTC (permalink / raw
  To: Marcel Holtmann
  Cc: Kalle Valo, linux-wireless, Samuel Ortiz, Rob Herring,
	John Stultz

On 12/21/14 18:50, Marcel Holtmann wrote:
> Hi Arend,
>
>> diff --git a/include/linux/mmc/sdio_ids.h b/include/linux/mmc/sdio_ids.h
>> index 0f01fe0..61f8318 100644
>> --- a/include/linux/mmc/sdio_ids.h
>> +++ b/include/linux/mmc/sdio_ids.h
>> @@ -29,6 +29,8 @@
>> #define SDIO_DEVICE_ID_BROADCOM_4329		0x4329
>> #define SDIO_DEVICE_ID_BROADCOM_4330		0x4330
>> #define SDIO_DEVICE_ID_BROADCOM_4334		0x4334
>> +#define SDIO_DEVICE_ID_BROADCOM_43340		43340
>> +#define SDIO_DEVICE_ID_BROADCOM_43341		43341
>
> the general preference is to have these values in hex. I get the fact that they map the marketing number, but that could be just stated in a comment after the hex number.

Will change that.

>> #define SDIO_DEVICE_ID_BROADCOM_4335_4339	0x4335
>> #define SDIO_DEVICE_ID_BROADCOM_43362		43362
>> #define SDIO_DEVICE_ID_BROADCOM_4354		0x4354
>
> Is there any chance that you can also send patches against sdio.ids database from systemd:
>
> http://cgit.freedesktop.org/systemd/systemd/tree/hwdb/sdio.ids
>
> That would allow for udev to provide friendly names and they would also be shown using networkctl.

Ah, my bad. I recall you asking that question a while ago when I started 
adding broadcom device ids here. I found a git clone on my system and 
already had a patch there for almost a year ;-)

Regards,
Arend

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [PATCH 03/10] brcmfmac: Add support for bcm43340/1 wireless chipsets
  2014-12-21 19:56     ` Arend van Spriel
@ 2014-12-21 20:14       ` Rafał Miłecki
  2014-12-22  9:05         ` Arend van Spriel
  0 siblings, 1 reply; 21+ messages in thread
From: Rafał Miłecki @ 2014-12-21 20:14 UTC (permalink / raw
  To: Arend van Spriel
  Cc: Marcel Holtmann, Kalle Valo, linux-wireless, Samuel Ortiz,
	Rob Herring, John Stultz

On 21 December 2014 at 20:56, Arend van Spriel <arend@broadcom.com> wrote:
> On 12/21/14 18:50, Marcel Holtmann wrote:
>>
>> Hi Arend,
>>
>>> diff --git a/include/linux/mmc/sdio_ids.h b/include/linux/mmc/sdio_ids.h
>>> index 0f01fe0..61f8318 100644
>>> --- a/include/linux/mmc/sdio_ids.h
>>> +++ b/include/linux/mmc/sdio_ids.h
>>> @@ -29,6 +29,8 @@
>>> #define SDIO_DEVICE_ID_BROADCOM_4329            0x4329
>>> #define SDIO_DEVICE_ID_BROADCOM_4330            0x4330
>>> #define SDIO_DEVICE_ID_BROADCOM_4334            0x4334
>>> +#define SDIO_DEVICE_ID_BROADCOM_43340          43340
>>> +#define SDIO_DEVICE_ID_BROADCOM_43341          43341
>>
>>
>> the general preference is to have these values in hex. I get the fact that
>> they map the marketing number, but that could be just stated in a comment
>> after the hex number.
>
> Will change that.

I vote for keeping user-friendly numbers as comments :)

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [PATCH 03/10] brcmfmac: Add support for bcm43340/1 wireless chipsets
  2014-12-21 20:14       ` Rafał Miłecki
@ 2014-12-22  9:05         ` Arend van Spriel
  2014-12-22  9:33           ` Rafał Miłecki
  0 siblings, 1 reply; 21+ messages in thread
From: Arend van Spriel @ 2014-12-22  9:05 UTC (permalink / raw
  To: Rafał Miłecki
  Cc: Marcel Holtmann, Kalle Valo, linux-wireless, Samuel Ortiz,
	Rob Herring, John Stultz

On 12/21/14 21:14, Rafał Miłecki wrote:
> On 21 December 2014 at 20:56, Arend van Spriel<arend@broadcom.com>  wrote:
>> On 12/21/14 18:50, Marcel Holtmann wrote:
>>>
>>> Hi Arend,
>>>
>>>> diff --git a/include/linux/mmc/sdio_ids.h b/include/linux/mmc/sdio_ids.h
>>>> index 0f01fe0..61f8318 100644
>>>> --- a/include/linux/mmc/sdio_ids.h
>>>> +++ b/include/linux/mmc/sdio_ids.h
>>>> @@ -29,6 +29,8 @@
>>>> #define SDIO_DEVICE_ID_BROADCOM_4329            0x4329
>>>> #define SDIO_DEVICE_ID_BROADCOM_4330            0x4330
>>>> #define SDIO_DEVICE_ID_BROADCOM_4334            0x4334
>>>> +#define SDIO_DEVICE_ID_BROADCOM_43340          43340
>>>> +#define SDIO_DEVICE_ID_BROADCOM_43341          43341
>>>
>>>
>>> the general preference is to have these values in hex. I get the fact that
>>> they map the marketing number, but that could be just stated in a comment
>>> after the hex number.
>>
>> Will change that.
>
> I vote for keeping user-friendly numbers as comments :)

I don't see added value as the define id ends with the marketing number.

Regards,
Arend

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [PATCH 03/10] brcmfmac: Add support for bcm43340/1 wireless chipsets
  2014-12-22  9:05         ` Arend van Spriel
@ 2014-12-22  9:33           ` Rafał Miłecki
  0 siblings, 0 replies; 21+ messages in thread
From: Rafał Miłecki @ 2014-12-22  9:33 UTC (permalink / raw
  To: Arend van Spriel
  Cc: Marcel Holtmann, Kalle Valo, linux-wireless, Samuel Ortiz,
	Rob Herring, John Stultz

On 22 December 2014 at 10:05, Arend van Spriel <arend@broadcom.com> wrote:
> On 12/21/14 21:14, Rafał Miłecki wrote:
>>
>> On 21 December 2014 at 20:56, Arend van Spriel<arend@broadcom.com>  wrote:
>>>
>>> On 12/21/14 18:50, Marcel Holtmann wrote:
>>>>
>>>>
>>>> Hi Arend,
>>>>
>>>>> diff --git a/include/linux/mmc/sdio_ids.h
>>>>> b/include/linux/mmc/sdio_ids.h
>>>>> index 0f01fe0..61f8318 100644
>>>>> --- a/include/linux/mmc/sdio_ids.h
>>>>> +++ b/include/linux/mmc/sdio_ids.h
>>>>> @@ -29,6 +29,8 @@
>>>>> #define SDIO_DEVICE_ID_BROADCOM_4329            0x4329
>>>>> #define SDIO_DEVICE_ID_BROADCOM_4330            0x4330
>>>>> #define SDIO_DEVICE_ID_BROADCOM_4334            0x4334
>>>>> +#define SDIO_DEVICE_ID_BROADCOM_43340          43340
>>>>> +#define SDIO_DEVICE_ID_BROADCOM_43341          43341
>>>>
>>>>
>>>>
>>>> the general preference is to have these values in hex. I get the fact
>>>> that
>>>> they map the marketing number, but that could be just stated in a
>>>> comment
>>>> after the hex number.
>>>
>>>
>>> Will change that.
>>
>>
>> I vote for keeping user-friendly numbers as comments :)
>
>
> I don't see added value as the define id ends with the marketing number.

Ah, right. I was thinking about some less common cases like
#define BCMA_CHIP_ID_BCM4707 0x0xCF12 /* 53010 */
but this is not such case obviously.

-- 
Rafał

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [PATCH 02/10] brcmfmac: Fix possible dereference of NULL pointer.
  2014-12-21 11:43 ` [PATCH 02/10] brcmfmac: Fix possible dereference of NULL pointer Arend van Spriel
@ 2014-12-23 17:07   ` Arend van Spriel
  0 siblings, 0 replies; 21+ messages in thread
From: Arend van Spriel @ 2014-12-23 17:07 UTC (permalink / raw
  To: Kalle Valo; +Cc: Arend van Spriel, linux-wireless, Hante Meuleman

On 12/21/14 12:43, Arend van Spriel wrote:
> From: Hante Meuleman<meuleman@broadcom.com>
>
> With the introduction of WOWL for SDIO a possible dereference of a
> NULL pointer got introduced. Found by static checker.

Kalle,

Can you drop this patch and take the one from Mika instead with 
Message-ID: 
1419346112-173303-1-git-send-email-mika.westerberg@linux.intel.com [1]

Regards,
Arend

[1] 
http://mid.gmane.org/1419346112-173303-1-git-send-email-mika.westerberg@linux.intel.com

> Reported-by: Dan Carpenter<dan.carpenter@oracle.com>
> Reviewed-by: Arend Van Spriel<arend@broadcom.com>
> Reviewed-by: Pieter-Paul Giesberts<pieterpg@broadcom.com>
> Signed-off-by: Hante Meuleman<meuleman@broadcom.com>
> Signed-off-by: Arend van Spriel<arend@broadcom.com>
> ---
>   drivers/net/wireless/brcm80211/brcmfmac/bcmsdh.c | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/net/wireless/brcm80211/brcmfmac/bcmsdh.c b/drivers/net/wireless/brcm80211/brcmfmac/bcmsdh.c
> index 3c06e93..9583dcd 100644
> --- a/drivers/net/wireless/brcm80211/brcmfmac/bcmsdh.c
> +++ b/drivers/net/wireless/brcm80211/brcmfmac/bcmsdh.c
> @@ -1070,7 +1070,7 @@ static int brcmf_ops_sdio_probe(struct sdio_func *func,
>   	 */
>   	if ((sdio_get_host_pm_caps(sdiodev->func[1])&  MMC_PM_KEEP_POWER)&&
>   	((sdio_get_host_pm_caps(sdiodev->func[1])&  MMC_PM_WAKE_SDIO_IRQ) ||
> -	     (sdiodev->pdata->oob_irq_supported)))
> +	     ((sdiodev->pdata)&&  (sdiodev->pdata->oob_irq_supported))))
>   		bus_if->wowl_supported = true;
>   #endif
>


^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [PATCH 04/10] brcmfmac: get rid of duplicate SDIO device identifiers
  2014-12-21 11:43 ` [PATCH 04/10] brcmfmac: get rid of duplicate SDIO device identifiers Arend van Spriel
@ 2015-01-06 18:35   ` Kalle Valo
  0 siblings, 0 replies; 21+ messages in thread
From: Kalle Valo @ 2015-01-06 18:35 UTC (permalink / raw
  To: Arend van Spriel; +Cc: linux-wireless

Arend van Spriel <arend@broadcom.com> writes:

> Instead of defining SDIO device identifier in brcm80211 code use
> the defintions in linux/mmc/sdio_ids.h directly.
>
> Reviewed-by: Hante Meuleman <meuleman@broadcom.com>
> Reviewed-by: Pieter-Paul Giesberts <pieterpg@broadcom.com>
> Signed-off-by: Arend van Spriel <arend@broadcom.com>

I tried to apply this but got:

Applying: brcmfmac: get rid of duplicate SDIO device identifiers
error: patch failed: drivers/net/wireless/brcm80211/brcmfmac/bcmsdh.c:996
error: drivers/net/wireless/brcm80211/brcmfmac/bcmsdh.c: patch does not apply
error: patch failed: drivers/net/wireless/brcm80211/include/brcm_hw_ids.h:46
error: drivers/net/wireless/brcm80211/include/brcm_hw_ids.h: patch does not apply
Patch failed at 0001 brcmfmac: get rid of duplicate SDIO device identifiers

Please resend.

-- 
Kalle Valo

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [PATCH 00/10] brcmfmac: new device support and more
  2014-12-21 11:43 [PATCH 00/10] brcmfmac: new device support and more Arend van Spriel
                   ` (9 preceding siblings ...)
  2014-12-21 11:43 ` [PATCH 10/10] brcmfmac: enable 802.11d support in firmware Arend van Spriel
@ 2015-01-06 18:36 ` Kalle Valo
  2015-01-06 19:07   ` Arend van Spriel
  10 siblings, 1 reply; 21+ messages in thread
From: Kalle Valo @ 2015-01-06 18:36 UTC (permalink / raw
  To: Arend van Spriel; +Cc: linux-wireless

Arend van Spriel <arend@broadcom.com> writes:

> Here a first batch for v3.20. This series adds support for the
> BCM43340 and BCM43341 SDIO chipsets. A number of changes are
> related to AP mode and some fixes of potential issues that do
> not seem to qualify for the wireless tree.
>
> This series is intended for v3.20 and applies to the master
> branch of the *new* wireless-next repository.
>
> Arend van Spriel (5):
>   brcmfmac: Add support for bcm43340/1 wireless chipsets
>   brcmfmac: get rid of duplicate SDIO device identifiers
>   brcmfmac: remove unused/duplicate defines in chip.c
>   brcmfmac: follow user-space regulatory domain selection
>   brcmfmac: enable 802.11d support in firmware
>
> Hante Meuleman (5):
>   brcmfmac: Fix incorrect casting of 64 bit physical address.
>   brcmfmac: Fix possible dereference of NULL pointer.
>   brcmfmac: Fix WEP configuration for AP mode.
>   brcmfmac: Change error log in standard log for rxbufpost.
>   brcmfmac: signal completion of 802.1x.

I applied these patches:

98027769828f brcmfmac: enable 802.11d support in firmware
6b89dcb35bfc brcmfmac: signal completion of 802.1x.
63db1a499cee brcmfmac: follow user-space regulatory domain selection
d2e2472cd197 brcmfmac: Change error log in standard log for rxbufpost.
118eb304d055 brcmfmac: Fix WEP configuration for AP mode.
f714e58e19a5 brcmfmac: remove unused/duplicate defines in chip.c
83297aaa8fde brcmfmac: Fix incorrect casting of 64 bit physical address.

I dropped two due based on discussion and one patch didn't apply.

-- 
Kalle Valo

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [PATCH 00/10] brcmfmac: new device support and more
  2015-01-06 18:36 ` [PATCH 00/10] brcmfmac: new device support and more Kalle Valo
@ 2015-01-06 19:07   ` Arend van Spriel
  0 siblings, 0 replies; 21+ messages in thread
From: Arend van Spriel @ 2015-01-06 19:07 UTC (permalink / raw
  To: Kalle Valo; +Cc: linux-wireless

On 01/06/15 19:36, Kalle Valo wrote:
> Arend van Spriel<arend@broadcom.com>  writes:
>
>> Here a first batch for v3.20. This series adds support for the
>> BCM43340 and BCM43341 SDIO chipsets. A number of changes are
>> related to AP mode and some fixes of potential issues that do
>> not seem to qualify for the wireless tree.
>>
>> This series is intended for v3.20 and applies to the master
>> branch of the *new* wireless-next repository.
>>
>> Arend van Spriel (5):
>>    brcmfmac: Add support for bcm43340/1 wireless chipsets
>>    brcmfmac: get rid of duplicate SDIO device identifiers
>>    brcmfmac: remove unused/duplicate defines in chip.c
>>    brcmfmac: follow user-space regulatory domain selection
>>    brcmfmac: enable 802.11d support in firmware
>>
>> Hante Meuleman (5):
>>    brcmfmac: Fix incorrect casting of 64 bit physical address.
>>    brcmfmac: Fix possible dereference of NULL pointer.
>>    brcmfmac: Fix WEP configuration for AP mode.
>>    brcmfmac: Change error log in standard log for rxbufpost.
>>    brcmfmac: signal completion of 802.1x.
>
> I applied these patches:
>
> 98027769828f brcmfmac: enable 802.11d support in firmware
> 6b89dcb35bfc brcmfmac: signal completion of 802.1x.
> 63db1a499cee brcmfmac: follow user-space regulatory domain selection
> d2e2472cd197 brcmfmac: Change error log in standard log for rxbufpost.
> 118eb304d055 brcmfmac: Fix WEP configuration for AP mode.
> f714e58e19a5 brcmfmac: remove unused/duplicate defines in chip.c
> 83297aaa8fde brcmfmac: Fix incorrect casting of 64 bit physical address.
>
> I dropped two due based on discussion and one patch didn't apply.
>
Thanks, Kalle

I will resend that last one mentioned. Probably depends on (one of) the 
two dropped patches.

Regards,
Arend


^ permalink raw reply	[flat|nested] 21+ messages in thread

end of thread, other threads:[~2015-01-06 19:07 UTC | newest]

Thread overview: 21+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-12-21 11:43 [PATCH 00/10] brcmfmac: new device support and more Arend van Spriel
2014-12-21 11:43 ` [PATCH 01/10] brcmfmac: Fix incorrect casting of 64 bit physical address Arend van Spriel
2014-12-21 17:24   ` Joe Perches
2014-12-21 11:43 ` [PATCH 02/10] brcmfmac: Fix possible dereference of NULL pointer Arend van Spriel
2014-12-23 17:07   ` Arend van Spriel
2014-12-21 11:43 ` [PATCH 03/10] brcmfmac: Add support for bcm43340/1 wireless chipsets Arend van Spriel
2014-12-21 17:50   ` Marcel Holtmann
2014-12-21 19:56     ` Arend van Spriel
2014-12-21 20:14       ` Rafał Miłecki
2014-12-22  9:05         ` Arend van Spriel
2014-12-22  9:33           ` Rafał Miłecki
2014-12-21 11:43 ` [PATCH 04/10] brcmfmac: get rid of duplicate SDIO device identifiers Arend van Spriel
2015-01-06 18:35   ` Kalle Valo
2014-12-21 11:43 ` [PATCH 05/10] brcmfmac: remove unused/duplicate defines in chip.c Arend van Spriel
2014-12-21 11:43 ` [PATCH 06/10] brcmfmac: Fix WEP configuration for AP mode Arend van Spriel
2014-12-21 11:43 ` [PATCH 07/10] brcmfmac: Change error log in standard log for rxbufpost Arend van Spriel
2014-12-21 11:43 ` [PATCH 08/10] brcmfmac: follow user-space regulatory domain selection Arend van Spriel
2014-12-21 11:43 ` [PATCH 09/10] brcmfmac: signal completion of 802.1x Arend van Spriel
2014-12-21 11:43 ` [PATCH 10/10] brcmfmac: enable 802.11d support in firmware Arend van Spriel
2015-01-06 18:36 ` [PATCH 00/10] brcmfmac: new device support and more Kalle Valo
2015-01-06 19:07   ` Arend van Spriel

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.