brcmfmac: set wpa_auth to WPA_AUTH_DISABLED in AP/OPEN security mode
When setting wpa_auth to WPA_AUTH_NONE(1) in AP mode with WEP security,
firmware will set privacy bit and add WPA OUI in VENDOR IE in beacon and
probe response. The security type in softAP beacons confuse the
supplicant in client side, and the user client will see [WPA-?] in
supplicant scan result. So we set WPA_AUTH_DISABLED in softAP mode with
OPEN security.
Signed-off-by: Wright Feng <[email protected]>
---
v2: fix typo in commit message
---
drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
index 2f8776f..0281a22 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
@@ -3854,6 +3854,7 @@ static s32 brcmf_cfg80211_suspend(struct wiphy *wiphy,
static s32 brcmf_configure_opensecurity(struct brcmf_if *ifp)
{
s32 err;
+ s32 wpa_val;
/* set auth */
err = brcmf_fil_bsscfg_int_set(ifp, "auth", 0);
@@ -3868,7 +3869,11 @@ static s32 brcmf_configure_opensecurity(struct brcmf_if *ifp)
return err;
}
/* set upper-layer auth */
- err = brcmf_fil_bsscfg_int_set(ifp, "wpa_auth", WPA_AUTH_NONE);
+ if (brcmf_is_ibssmode(ifp->vif))
+ wpa_val = WPA_AUTH_NONE;
+ else
+ wpa_val = WPA_AUTH_DISABLED;
+ err = brcmf_fil_bsscfg_int_set(ifp, "wpa_auth", wpa_val);
if (err < 0) {
brcmf_err("wpa_auth error %d\n", err);
return err;
--
1.9.1
On 08/07/2017 8:27, Arend van Spriel wrote:
> On 8/3/2017 11:37 AM, Wright Feng wrote:
>> From: Chi-Hsien Lin <[email protected]>
>>
>> Add support for CYW4373 SDIO/USB chipset.
>> CYW4373 is a 1x1 dual-band 11ac chipset with 20/40/80Mhz channel support.
>> It's a WiFi/BT combo device.
>
> Reviewed-by: Arend van Spriel <[email protected]>
>> Signed-off-by: Chi-Hsien Lin <[email protected]>
>> ---
>> v2: add new chip(4737) info in commit message
>
> comment below...
>
>> ---
>> drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c | 1 +
>> drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c | 2 ++
>> drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c | 4 +++-
>> drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c | 9
>> ++++++++-
>> drivers/net/wireless/broadcom/brcm80211/include/brcm_hw_ids.h | 3 +++
>> include/linux/mmc/sdio_ids.h | 1 +
>> 6 files changed, 18 insertions(+), 2 deletions(-)
>>
>
> [...]
>
>> diff --git a/include/linux/mmc/sdio_ids.h b/include/linux/mmc/sdio_ids.h
>> index b733eb4..abacd54 100644
>> --- a/include/linux/mmc/sdio_ids.h
>> +++ b/include/linux/mmc/sdio_ids.h
>> @@ -39,6 +39,7 @@
>> #define SDIO_DEVICE_ID_BROADCOM_43455 0xa9bf
>> #define SDIO_DEVICE_ID_BROADCOM_4354 0x4354
>> #define SDIO_DEVICE_ID_BROADCOM_4356 0x4356
>> +#define SDIO_DEVICE_ID_CYPRESS_4373 0x4373
>
> So is there no specific Cypress SDIO vendor ID?
There is no Cypress SDIO vid. I believe the legacy chips 4343w ...etc.
shipped are still using BRCM SDIO vid. Also, 4373 project was initiated
in Broadcom so the default id was set to the Broadcom id. Will it a
requirement to add Cypress vid here?
>
>> #define SDIO_VENDOR_ID_INTEL 0x0089
>> #define SDIO_DEVICE_ID_INTEL_IWMC3200WIMAX 0x1402
>>
>
> .
>
From: Chi-Hsien Lin <[email protected]>
Add support for CYW4373 SDIO/USB chipset.
CYW4373 is a 1x1 dual-band 11ac chipset with 20/40/80Mhz channel support.
It's a WiFi/BT combo device.
Signed-off-by: Chi-Hsien Lin <[email protected]>
---
v2: add new chip(4737) info in commit message
---
drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c | 1 +
drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c | 2 ++
drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c | 4 +++-
drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c | 9 ++++++++-
drivers/net/wireless/broadcom/brcm80211/include/brcm_hw_ids.h | 3 +++
include/linux/mmc/sdio_ids.h | 1 +
6 files changed, 18 insertions(+), 2 deletions(-)
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c
index 9b970dc..ea47f75 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c
@@ -1108,6 +1108,7 @@ static int brcmf_sdiod_probe(struct brcmf_sdio_dev *sdiodev)
BRCMF_SDIO_DEVICE(SDIO_DEVICE_ID_BROADCOM_43455),
BRCMF_SDIO_DEVICE(SDIO_DEVICE_ID_BROADCOM_4354),
BRCMF_SDIO_DEVICE(SDIO_DEVICE_ID_BROADCOM_4356),
+ BRCMF_SDIO_DEVICE(SDIO_DEVICE_ID_CYPRESS_4373),
{ /* end: all zeroes */ }
};
MODULE_DEVICE_TABLE(sdio, brcmf_sdmmc_ids);
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c
index 05f22ff..c5d1a1c 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c
@@ -690,6 +690,8 @@ static u32 brcmf_chip_tcm_rambase(struct brcmf_chip_priv *ci)
case BRCM_CC_4365_CHIP_ID:
case BRCM_CC_4366_CHIP_ID:
return 0x200000;
+ case CY_CC_4373_CHIP_ID:
+ return 0x160000;
default:
brcmf_err("unknown chip: %s\n", ci->pub.name);
break;
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
index 5653d6d..b1789b1 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
@@ -616,6 +616,7 @@ struct sdiod_drive_str {
BRCMF_FW_NVRAM_DEF(43455, "brcmfmac43455-sdio.bin", "brcmfmac43455-sdio.txt");
BRCMF_FW_NVRAM_DEF(4354, "brcmfmac4354-sdio.bin", "brcmfmac4354-sdio.txt");
BRCMF_FW_NVRAM_DEF(4356, "brcmfmac4356-sdio.bin", "brcmfmac4356-sdio.txt");
+BRCMF_FW_NVRAM_DEF(4373, "brcmfmac4373-sdio.bin", "brcmfmac4373-sdio.txt");
static struct brcmf_firmware_mapping brcmf_sdio_fwnames[] = {
BRCMF_FW_NVRAM_ENTRY(BRCM_CC_43143_CHIP_ID, 0xFFFFFFFF, 43143),
@@ -633,7 +634,8 @@ struct sdiod_drive_str {
BRCMF_FW_NVRAM_ENTRY(BRCM_CC_43430_CHIP_ID, 0xFFFFFFFF, 43430),
BRCMF_FW_NVRAM_ENTRY(BRCM_CC_4345_CHIP_ID, 0xFFFFFFC0, 43455),
BRCMF_FW_NVRAM_ENTRY(BRCM_CC_4354_CHIP_ID, 0xFFFFFFFF, 4354),
- BRCMF_FW_NVRAM_ENTRY(BRCM_CC_4356_CHIP_ID, 0xFFFFFFFF, 4356)
+ BRCMF_FW_NVRAM_ENTRY(BRCM_CC_4356_CHIP_ID, 0xFFFFFFFF, 4356),
+ BRCMF_FW_NVRAM_ENTRY(CY_CC_4373_CHIP_ID, 0xFFFFFFFF, 4373)
};
static void pkt_align(struct sk_buff *p, int len, int align)
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c
index 0eea48e..8f20a4b 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c
@@ -50,6 +50,7 @@
BRCMF_FW_DEF(43236B, "brcmfmac43236b.bin");
BRCMF_FW_DEF(43242A, "brcmfmac43242a.bin");
BRCMF_FW_DEF(43569, "brcmfmac43569.bin");
+BRCMF_FW_DEF(4373, "brcmfmac4373.bin");
static struct brcmf_firmware_mapping brcmf_usb_fwnames[] = {
BRCMF_FW_ENTRY(BRCM_CC_43143_CHIP_ID, 0xFFFFFFFF, 43143),
@@ -58,7 +59,8 @@
BRCMF_FW_ENTRY(BRCM_CC_43238_CHIP_ID, 0x00000008, 43236B),
BRCMF_FW_ENTRY(BRCM_CC_43242_CHIP_ID, 0xFFFFFFFF, 43242A),
BRCMF_FW_ENTRY(BRCM_CC_43566_CHIP_ID, 0xFFFFFFFF, 43569),
- BRCMF_FW_ENTRY(BRCM_CC_43569_CHIP_ID, 0xFFFFFFFF, 43569)
+ BRCMF_FW_ENTRY(BRCM_CC_43569_CHIP_ID, 0xFFFFFFFF, 43569),
+ BRCMF_FW_ENTRY(CY_CC_4373_CHIP_ID, 0xFFFFFFFF, 4373)
};
#define TRX_MAGIC 0x30524448 /* "HDR0" */
@@ -1463,15 +1465,20 @@ static int brcmf_usb_reset_resume(struct usb_interface *intf)
#define LINKSYS_USB_DEVICE(dev_id) \
{ USB_DEVICE(BRCM_USB_VENDOR_ID_LINKSYS, dev_id) }
+#define CYPRESS_USB_DEVICE(dev_id) \
+ { USB_DEVICE(CY_USB_VENDOR_ID_CYPRESS, dev_id) }
+
static struct usb_device_id brcmf_usb_devid_table[] = {
BRCMF_USB_DEVICE(BRCM_USB_43143_DEVICE_ID),
BRCMF_USB_DEVICE(BRCM_USB_43236_DEVICE_ID),
BRCMF_USB_DEVICE(BRCM_USB_43242_DEVICE_ID),
BRCMF_USB_DEVICE(BRCM_USB_43569_DEVICE_ID),
LINKSYS_USB_DEVICE(BRCM_USB_43235_LINKSYS_DEVICE_ID),
+ CYPRESS_USB_DEVICE(CY_USB_4373_DEVICE_ID),
{ USB_DEVICE(BRCM_USB_VENDOR_ID_LG, BRCM_USB_43242_LG_DEVICE_ID) },
/* special entry for device with firmware loaded and running */
BRCMF_USB_DEVICE(BRCM_USB_BCMFW_DEVICE_ID),
+ CYPRESS_USB_DEVICE(BRCM_USB_BCMFW_DEVICE_ID),
{ /* end: all zeroes */ }
};
diff --git a/drivers/net/wireless/broadcom/brcm80211/include/brcm_hw_ids.h b/drivers/net/wireless/broadcom/brcm80211/include/brcm_hw_ids.h
index f1fb8a3..57544a3 100644
--- a/drivers/net/wireless/broadcom/brcm80211/include/brcm_hw_ids.h
+++ b/drivers/net/wireless/broadcom/brcm80211/include/brcm_hw_ids.h
@@ -23,6 +23,7 @@
#define BRCM_USB_VENDOR_ID_BROADCOM 0x0a5c
#define BRCM_USB_VENDOR_ID_LG 0x043e
#define BRCM_USB_VENDOR_ID_LINKSYS 0x13b1
+#define CY_USB_VENDOR_ID_CYPRESS 0x04b4
#define BRCM_PCIE_VENDOR_ID_BROADCOM PCI_VENDOR_ID_BROADCOM
/* Chipcommon Core Chip IDs */
@@ -57,6 +58,7 @@
#define BRCM_CC_4365_CHIP_ID 0x4365
#define BRCM_CC_4366_CHIP_ID 0x4366
#define BRCM_CC_4371_CHIP_ID 0x4371
+#define CY_CC_4373_CHIP_ID 0x4373
/* USB Device IDs */
#define BRCM_USB_43143_DEVICE_ID 0xbd1e
@@ -66,6 +68,7 @@
#define BRCM_USB_43242_LG_DEVICE_ID 0x3101
#define BRCM_USB_43569_DEVICE_ID 0xbd27
#define BRCM_USB_BCMFW_DEVICE_ID 0x0bdc
+#define CY_USB_4373_DEVICE_ID 0xbd29
/* PCIE Device IDs */
#define BRCM_PCIE_4350_DEVICE_ID 0x43a3
diff --git a/include/linux/mmc/sdio_ids.h b/include/linux/mmc/sdio_ids.h
index b733eb4..abacd54 100644
--- a/include/linux/mmc/sdio_ids.h
+++ b/include/linux/mmc/sdio_ids.h
@@ -39,6 +39,7 @@
#define SDIO_DEVICE_ID_BROADCOM_43455 0xa9bf
#define SDIO_DEVICE_ID_BROADCOM_4354 0x4354
#define SDIO_DEVICE_ID_BROADCOM_4356 0x4356
+#define SDIO_DEVICE_ID_CYPRESS_4373 0x4373
#define SDIO_VENDOR_ID_INTEL 0x0089
#define SDIO_DEVICE_ID_INTEL_IWMC3200WIMAX 0x1402
--
1.9.1
Wright Feng <[email protected]> writes:
> brcmfmac: set wpa_auth to WPA_AUTH_DISABLED in AP/OPEN security mode
>
> When setting wpa_auth to WPA_AUTH_NONE(1) in AP mode with WEP security,
> firmware will set privacy bit and add WPA OUI in VENDOR IE in beacon and
> probe response. The security type in softAP beacons confuse the
> supplicant in client side, and the user client will see [WPA-?] in
> supplicant scan result. So we set WPA_AUTH_DISABLED in softAP mode with
> OPEN security.
The title is now duplicated, it's now in Subject and in the body, but I
can fix that.
--
Kalle Valo
On 8/3/2017 11:37 AM, Wright Feng wrote:
> brcmfmac: set wpa_auth to WPA_AUTH_DISABLED in AP/OPEN security mode
>
> When setting wpa_auth to WPA_AUTH_NONE(1) in AP mode with WEP security,
> firmware will set privacy bit and add WPA OUI in VENDOR IE in beacon and
> probe response. The security type in softAP beacons confuse the
> supplicant in client side, and the user client will see [WPA-?] in
> supplicant scan result. So we set WPA_AUTH_DISABLED in softAP mode with
> OPEN security.
Acked-by: Arend van Spriel <[email protected]>
> Signed-off-by: Wright Feng <[email protected]>
> ---
> v2: fix typo in commit message
> ---
> drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c | 7 ++++++-
> 1 file changed, 6 insertions(+), 1 deletion(-)
On 8/3/2017 11:37 AM, Wright Feng wrote:
> From: Chi-Hsien Lin <[email protected]>
>
> Add support for CYW4373 SDIO/USB chipset.
> CYW4373 is a 1x1 dual-band 11ac chipset with 20/40/80Mhz channel support.
> It's a WiFi/BT combo device.
Reviewed-by: Arend van Spriel <[email protected]>
> Signed-off-by: Chi-Hsien Lin <[email protected]>
> ---
> v2: add new chip(4737) info in commit message
comment below...
> ---
> drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c | 1 +
> drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c | 2 ++
> drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c | 4 +++-
> drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c | 9 ++++++++-
> drivers/net/wireless/broadcom/brcm80211/include/brcm_hw_ids.h | 3 +++
> include/linux/mmc/sdio_ids.h | 1 +
> 6 files changed, 18 insertions(+), 2 deletions(-)
>
[...]
> diff --git a/include/linux/mmc/sdio_ids.h b/include/linux/mmc/sdio_ids.h
> index b733eb4..abacd54 100644
> --- a/include/linux/mmc/sdio_ids.h
> +++ b/include/linux/mmc/sdio_ids.h
> @@ -39,6 +39,7 @@
> #define SDIO_DEVICE_ID_BROADCOM_43455 0xa9bf
> #define SDIO_DEVICE_ID_BROADCOM_4354 0x4354
> #define SDIO_DEVICE_ID_BROADCOM_4356 0x4356
> +#define SDIO_DEVICE_ID_CYPRESS_4373 0x4373
So is there no specific Cypress SDIO vendor ID?
> #define SDIO_VENDOR_ID_INTEL 0x0089
> #define SDIO_DEVICE_ID_INTEL_IWMC3200WIMAX 0x1402
>
Wright Feng <[email protected]> wrote:
> When setting wpa_auth to WPA_AUTH_NONE(1) in AP mode with WEP security,
> firmware will set privacy bit and add WPA OUI in VENDOR IE in beacon and
> probe response. The security type in softAP beacons confuse the
> supplicant in client side, and the user client will see [WPA-?] in
> supplicant scan result. So we set WPA_AUTH_DISABLED in softAP mode with
> OPEN security.
>
> Signed-off-by: Wright Feng <[email protected]>
> Acked-by: Arend van Spriel <[email protected]>
3 patches applied to wireless-drivers-next.git, thanks.
fdfb0f94bfb7 brcmfmac: set wpa_auth to WPA_AUTH_DISABLED in AP/OPEN security mode
0ec9eb90feec brcmfmac: Add support for CYW4373 SDIO/USB chipset
99976fc08412 brcmfmac: fix wrong num_different_channels when mchan feature enabled
--
https://patchwork.kernel.org/patch/9878545/
https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches
On 8/3/2017 11:37 AM, Wright Feng wrote:
> brcmfmac: fix wrong num_different_channels when mchan feature enabled
>
> When the device/firmware supports multi-channel, it can have P2P
> connection and regular connection with AP simultaneous. In this case,
> the num_different_channels in wiphy info was not correct when firmware
> supports multi-channel (The iw wiphy# info showed "#channels <= 1" in
> interface combinations). It caused association failed and error message
> "CTRL-EVENT-FREQ-CONFLICT error" in wpa_supplicant when P2P GO interface
> was running at the same time.
> The root cause is that the num_different_channels was always overridden
> to 1 in brcmf_setup_ifmodes even multi-channel was enabled.
> We correct the logic by moving num_different_channels setting forward.
Acked-by: Arend van Spriel <[email protected]>
> Signed-off-by: Wright Feng <[email protected]>
> ---
> v2: Describe the motivation and reason for this patch in commit message
> ---
> drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c | 4 +++-
> 1 file changed, 3 insertions(+), 1 deletion(-)
On 08-08-17 08:53, Chi-Hsien Lin wrote:
>
>
> On 08/07/2017 8:27, Arend van Spriel wrote:
>> On 8/3/2017 11:37 AM, Wright Feng wrote:
>>> From: Chi-Hsien Lin <[email protected]>
>>>
>>> Add support for CYW4373 SDIO/USB chipset.
>>> CYW4373 is a 1x1 dual-band 11ac chipset with 20/40/80Mhz channel
>>> support.
>>> It's a WiFi/BT combo device.
>>
>> Reviewed-by: Arend van Spriel <[email protected]>
>>> Signed-off-by: Chi-Hsien Lin <[email protected]>
>>> ---
>>> v2: add new chip(4737) info in commit message
>>
>> comment below...
>>
>>> ---
>>> drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c | 1 +
>>> drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c | 2 ++
>>> drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c | 4 +++-
>>> drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c | 9
>>> ++++++++-
>>> drivers/net/wireless/broadcom/brcm80211/include/brcm_hw_ids.h | 3 +++
>>> include/linux/mmc/sdio_ids.h | 1 +
>>> 6 files changed, 18 insertions(+), 2 deletions(-)
>>>
>>
>> [...]
>>
>>> diff --git a/include/linux/mmc/sdio_ids.h b/include/linux/mmc/sdio_ids.h
>>> index b733eb4..abacd54 100644
>>> --- a/include/linux/mmc/sdio_ids.h
>>> +++ b/include/linux/mmc/sdio_ids.h
>>> @@ -39,6 +39,7 @@
>>> #define SDIO_DEVICE_ID_BROADCOM_43455 0xa9bf
>>> #define SDIO_DEVICE_ID_BROADCOM_4354 0x4354
>>> #define SDIO_DEVICE_ID_BROADCOM_4356 0x4356
>>> +#define SDIO_DEVICE_ID_CYPRESS_4373 0x4373
>>
>> So is there no specific Cypress SDIO vendor ID?
> There is no Cypress SDIO vid. I believe the legacy chips 4343w ...etc.
> shipped are still using BRCM SDIO vid. Also, 4373 project was initiated
> in Broadcom so the default id was set to the Broadcom id. Will it a
> requirement to add Cypress vid here?
I was just wondering about it. It seems appropriate to do so although I
understand the 4373 history of things. Also for USB (in this same patch)
you seem to have used a Cypress USB vendor id so things just did not
look consistent. Hence I raised my comment.
Regards,
Arend
>>
>>> #define SDIO_VENDOR_ID_INTEL 0x0089
>>> #define SDIO_DEVICE_ID_INTEL_IWMC3200WIMAX 0x1402
>>>
>>
>> .
>>
Wright Feng <[email protected]> writes:
> brcmfmac: fix wrong num_different_channels when mchan feature enabled
Here also the title is duplicated, but I'll fix that.
> When the device/firmware supports multi-channel, it can have P2P
> connection and regular connection with AP simultaneous. In this case,
> the num_different_channels in wiphy info was not correct when firmware
> supports multi-channel (The iw wiphy# info showed "#channels <= 1" in
> interface combinations). It caused association failed and error message
> "CTRL-EVENT-FREQ-CONFLICT error" in wpa_supplicant when P2P GO interface
> was running at the same time.
> The root cause is that the num_different_channels was always overridden
> to 1 in brcmf_setup_ifmodes even multi-channel was enabled.
> We correct the logic by moving num_different_channels setting forward.
>
> Signed-off-by: Wright Feng <[email protected]>
> ---
> v2: Describe the motivation and reason for this patch in commit message
Perfect, thanks.
--
Kalle Valo
brcmfmac: fix wrong num_different_channels when mchan feature enabled
When the device/firmware supports multi-channel, it can have P2P
connection and regular connection with AP simultaneous. In this case,
the num_different_channels in wiphy info was not correct when firmware
supports multi-channel (The iw wiphy# info showed "#channels <= 1" in
interface combinations). It caused association failed and error message
"CTRL-EVENT-FREQ-CONFLICT error" in wpa_supplicant when P2P GO interface
was running at the same time.
The root cause is that the num_different_channels was always overridden
to 1 in brcmf_setup_ifmodes even multi-channel was enabled.
We correct the logic by moving num_different_channels setting forward.
Signed-off-by: Wright Feng <[email protected]>
---
v2: Describe the motivation and reason for this patch in commit message
---
drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
index 0281a22..0bb3b0b 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
@@ -6315,6 +6315,8 @@ static int brcmf_setup_ifmodes(struct wiphy *wiphy, struct brcmf_if *ifp)
if (p2p) {
if (brcmf_feat_is_enabled(ifp, BRCMF_FEAT_MCHAN))
combo[c].num_different_channels = 2;
+ else
+ combo[c].num_different_channels = 1;
wiphy->interface_modes |= BIT(NL80211_IFTYPE_P2P_CLIENT) |
BIT(NL80211_IFTYPE_P2P_GO) |
BIT(NL80211_IFTYPE_P2P_DEVICE);
@@ -6324,10 +6326,10 @@ static int brcmf_setup_ifmodes(struct wiphy *wiphy, struct brcmf_if *ifp)
c0_limits[i++].types = BIT(NL80211_IFTYPE_P2P_CLIENT) |
BIT(NL80211_IFTYPE_P2P_GO);
} else {
+ combo[c].num_different_channels = 1;
c0_limits[i].max = 1;
c0_limits[i++].types = BIT(NL80211_IFTYPE_AP);
}
- combo[c].num_different_channels = 1;
combo[c].max_interfaces = i;
combo[c].n_limits = i;
combo[c].limits = c0_limits;
--
1.9.1