All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH V2 0/2] brcmfmac: fix for 160MHz and firmware capabilities
@ 2018-09-05  7:48 Arend van Spriel
  2018-09-05  7:48 ` [PATCH V2 1/2] brcmfmac: fix for proper support of 160MHz bandwidth Arend van Spriel
  2018-09-05  7:48 ` [PATCH V2 2/2] brcmfmac: increase buffer for obtaining firmware capabilities Arend van Spriel
  0 siblings, 2 replies; 4+ messages in thread
From: Arend van Spriel @ 2018-09-05  7:48 UTC (permalink / raw)
  To: Kalle Valo; +Cc: linux-wireless, Arend van Spriel

Resending two patches which apply to the master branch of the
wireless-drivers-next repository.

Arend van Spriel (2):
  brcmfmac: fix for proper support of 160MHz bandwidth
  brcmfmac: increase buffer for obtaining firmware capabilities

 .../wireless/broadcom/brcm80211/brcmfmac/feature.c |  2 +-
 .../net/wireless/broadcom/brcm80211/brcmutil/d11.c | 34 +++++++++++++++++++++-
 .../broadcom/brcm80211/include/brcmu_wifi.h        |  2 ++
 3 files changed, 36 insertions(+), 2 deletions(-)

-- 
1.9.1

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

* [PATCH V2 1/2] brcmfmac: fix for proper support of 160MHz bandwidth
  2018-09-05  7:48 [PATCH V2 0/2] brcmfmac: fix for 160MHz and firmware capabilities Arend van Spriel
@ 2018-09-05  7:48 ` Arend van Spriel
  2018-09-20 12:10   ` Kalle Valo
  2018-09-05  7:48 ` [PATCH V2 2/2] brcmfmac: increase buffer for obtaining firmware capabilities Arend van Spriel
  1 sibling, 1 reply; 4+ messages in thread
From: Arend van Spriel @ 2018-09-05  7:48 UTC (permalink / raw)
  To: Kalle Valo; +Cc: linux-wireless, Arend van Spriel

Decoding of firmware channel information was not complete for 160MHz
support. This resulted in the following warning:

  WARNING: CPU: 2 PID: 2222 at .../broadcom/brcm80211/brcmutil/d11.c:196
	brcmu_d11ac_decchspec+0x2e/0x100 [brcmutil]
  Modules linked in: brcmfmac(O) brcmutil(O) sha256_generic cfg80211 ...
  CPU: 2 PID: 2222 Comm: kworker/2:0 Tainted: G           O
  4.17.0-wt-testing-x64-00002-gf1bed50 #1
  Hardware name: Dell Inc. Latitude E6410/07XJP9, BIOS A07 02/15/2011
  Workqueue: events request_firmware_work_func
  RIP: 0010:brcmu_d11ac_decchspec+0x2e/0x100 [brcmutil]
  RSP: 0018:ffffc90000047bd0 EFLAGS: 00010206
  RAX: 000000000000e832 RBX: ffff8801146fe910 RCX: ffff8801146fd3c0
  RDX: 0000000000002800 RSI: 0000000000000070 RDI: ffffc90000047c30
  RBP: ffffc90000047bd0 R08: 0000000000000000 R09: ffffffffa0798c80
  R10: ffff88012bca55e0 R11: ffff880110a4ea00 R12: ffff8801146f8000
  R13: ffffc90000047c30 R14: ffff8801146fe930 R15: ffff8801138e02e0
  FS:  0000000000000000(0000) GS:ffff88012bc80000(0000) knlGS:0000000000000000
  CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
  CR2: 00007f18ce8b8070 CR3: 000000000200a003 CR4: 00000000000206e0
  Call Trace:
   brcmf_setup_wiphybands+0x212/0x780 [brcmfmac]
   brcmf_cfg80211_attach+0xae2/0x11a0 [brcmfmac]
   brcmf_attach+0x1fc/0x4b0 [brcmfmac]
   ? __kmalloc+0x13c/0x1c0
   brcmf_pcie_setup+0x99b/0xe00 [brcmfmac]
   brcmf_fw_request_done+0x16a/0x1f0 [brcmfmac]
   request_firmware_work_func+0x36/0x60
   process_one_work+0x146/0x350
   worker_thread+0x4a/0x3b0
   kthread+0x102/0x140
   ? process_one_work+0x350/0x350
   ? kthread_bind+0x20/0x20
   ret_from_fork+0x35/0x40
  Code: 66 90 0f b7 07 55 48 89 e5 89 c2 88 47 02 88 47 03 66 81 e2 00 38
	66 81 fa 00 18 74 6e 66 81 fa 00 20 74 39 66 81 fa 00 10 74 14 <0f>
	0b 66 25 00 c0 74 20 66 3d 00 c0 75 20 c6 47 04 01 5d c3 66
  ---[ end trace 550c46682415b26d ]---
  brcmfmac: brcmf_construct_chaninfo: Ignoring unexpected firmware channel 50

This patch adds the missing stuff to properly handle this.

Reviewed-by: Hante Meuleman <hante.meuleman@broadcom.com>
Reviewed-by: Pieter-Paul Giesberts <pieter-paul.giesberts@broadcom.com>
Reviewed-by: Franky Lin <franky.lin@broadcom.com>
Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com>
---
 .../net/wireless/broadcom/brcm80211/brcmutil/d11.c | 34 +++++++++++++++++++++-
 .../broadcom/brcm80211/include/brcmu_wifi.h        |  2 ++
 2 files changed, 35 insertions(+), 1 deletion(-)

diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmutil/d11.c b/drivers/net/wireless/broadcom/brcm80211/brcmutil/d11.c
index d8b79cb..e7584b8 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmutil/d11.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmutil/d11.c
@@ -77,6 +77,8 @@ static u16 d11ac_bw(enum brcmu_chan_bw bw)
 		return BRCMU_CHSPEC_D11AC_BW_40;
 	case BRCMU_CHAN_BW_80:
 		return BRCMU_CHSPEC_D11AC_BW_80;
+	case BRCMU_CHAN_BW_160:
+		return BRCMU_CHSPEC_D11AC_BW_160;
 	default:
 		WARN_ON(1);
 	}
@@ -190,8 +192,38 @@ static void brcmu_d11ac_decchspec(struct brcmu_chan *ch)
 			break;
 		}
 		break;
-	case BRCMU_CHSPEC_D11AC_BW_8080:
 	case BRCMU_CHSPEC_D11AC_BW_160:
+		switch (ch->sb) {
+		case BRCMU_CHAN_SB_LLL:
+			ch->control_ch_num -= CH_70MHZ_APART;
+			break;
+		case BRCMU_CHAN_SB_LLU:
+			ch->control_ch_num -= CH_50MHZ_APART;
+			break;
+		case BRCMU_CHAN_SB_LUL:
+			ch->control_ch_num -= CH_30MHZ_APART;
+			break;
+		case BRCMU_CHAN_SB_LUU:
+			ch->control_ch_num -= CH_10MHZ_APART;
+			break;
+		case BRCMU_CHAN_SB_ULL:
+			ch->control_ch_num += CH_10MHZ_APART;
+			break;
+		case BRCMU_CHAN_SB_ULU:
+			ch->control_ch_num += CH_30MHZ_APART;
+			break;
+		case BRCMU_CHAN_SB_UUL:
+			ch->control_ch_num += CH_50MHZ_APART;
+			break;
+		case BRCMU_CHAN_SB_UUU:
+			ch->control_ch_num += CH_70MHZ_APART;
+			break;
+		default:
+			WARN_ON_ONCE(1);
+			break;
+		}
+		break;
+	case BRCMU_CHSPEC_D11AC_BW_8080:
 	default:
 		WARN_ON_ONCE(1);
 		break;
diff --git a/drivers/net/wireless/broadcom/brcm80211/include/brcmu_wifi.h b/drivers/net/wireless/broadcom/brcm80211/include/brcmu_wifi.h
index 91fca79..dddebaa 100644
--- a/drivers/net/wireless/broadcom/brcm80211/include/brcmu_wifi.h
+++ b/drivers/net/wireless/broadcom/brcm80211/include/brcmu_wifi.h
@@ -29,6 +29,8 @@
 #define CH_UPPER_SB			0x01
 #define CH_LOWER_SB			0x02
 #define CH_EWA_VALID			0x04
+#define CH_70MHZ_APART			14
+#define CH_50MHZ_APART			10
 #define CH_30MHZ_APART			6
 #define CH_20MHZ_APART			4
 #define CH_10MHZ_APART			2
-- 
1.9.1

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

* [PATCH V2 2/2] brcmfmac: increase buffer for obtaining firmware capabilities
  2018-09-05  7:48 [PATCH V2 0/2] brcmfmac: fix for 160MHz and firmware capabilities Arend van Spriel
  2018-09-05  7:48 ` [PATCH V2 1/2] brcmfmac: fix for proper support of 160MHz bandwidth Arend van Spriel
@ 2018-09-05  7:48 ` Arend van Spriel
  1 sibling, 0 replies; 4+ messages in thread
From: Arend van Spriel @ 2018-09-05  7:48 UTC (permalink / raw)
  To: Kalle Valo; +Cc: linux-wireless, Arend van Spriel

When obtaining the firmware capability a buffer is provided of 512
bytes. However, if all features in firmware are supported the buffer
needs to be 565 bytes as otherwise truncated information is retrieved
from firmware. Increasing the buffer to 768 bytes on stack.

Reviewed-by: Hante Meuleman <hante.meuleman@broadcom.com>
Reviewed-by: Pieter-Paul Giesberts <pieter-paul.giesberts@broadcom.com>
Reviewed-by: Franky Lin <franky.lin@broadcom.com>
Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com>
---
 drivers/net/wireless/broadcom/brcm80211/brcmfmac/feature.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/feature.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/feature.c
index 8347da6..4c5a399 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/feature.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/feature.c
@@ -178,7 +178,7 @@ static void brcmf_feat_iovar_data_set(struct brcmf_if *ifp,
 	ifp->fwil_fwerr = false;
 }
 
-#define MAX_CAPS_BUFFER_SIZE	512
+#define MAX_CAPS_BUFFER_SIZE	768
 static void brcmf_feat_firmware_capabilities(struct brcmf_if *ifp)
 {
 	char caps[MAX_CAPS_BUFFER_SIZE];
-- 
1.9.1

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

* Re: [PATCH V2 1/2] brcmfmac: fix for proper support of 160MHz bandwidth
  2018-09-05  7:48 ` [PATCH V2 1/2] brcmfmac: fix for proper support of 160MHz bandwidth Arend van Spriel
@ 2018-09-20 12:10   ` Kalle Valo
  0 siblings, 0 replies; 4+ messages in thread
From: Kalle Valo @ 2018-09-20 12:10 UTC (permalink / raw)
  To: Arend van Spriel; +Cc: linux-wireless, Arend van Spriel

Arend van Spriel <arend.vanspriel@broadcom.com> wrote:

> Decoding of firmware channel information was not complete for 160MHz
> support. This resulted in the following warning:
> 
>   WARNING: CPU: 2 PID: 2222 at .../broadcom/brcm80211/brcmutil/d11.c:196
> 	brcmu_d11ac_decchspec+0x2e/0x100 [brcmutil]
>   Modules linked in: brcmfmac(O) brcmutil(O) sha256_generic cfg80211 ...
>   CPU: 2 PID: 2222 Comm: kworker/2:0 Tainted: G           O
>   4.17.0-wt-testing-x64-00002-gf1bed50 #1
>   Hardware name: Dell Inc. Latitude E6410/07XJP9, BIOS A07 02/15/2011
>   Workqueue: events request_firmware_work_func
>   RIP: 0010:brcmu_d11ac_decchspec+0x2e/0x100 [brcmutil]
>   RSP: 0018:ffffc90000047bd0 EFLAGS: 00010206
>   RAX: 000000000000e832 RBX: ffff8801146fe910 RCX: ffff8801146fd3c0
>   RDX: 0000000000002800 RSI: 0000000000000070 RDI: ffffc90000047c30
>   RBP: ffffc90000047bd0 R08: 0000000000000000 R09: ffffffffa0798c80
>   R10: ffff88012bca55e0 R11: ffff880110a4ea00 R12: ffff8801146f8000
>   R13: ffffc90000047c30 R14: ffff8801146fe930 R15: ffff8801138e02e0
>   FS:  0000000000000000(0000) GS:ffff88012bc80000(0000) knlGS:0000000000000000
>   CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
>   CR2: 00007f18ce8b8070 CR3: 000000000200a003 CR4: 00000000000206e0
>   Call Trace:
>    brcmf_setup_wiphybands+0x212/0x780 [brcmfmac]
>    brcmf_cfg80211_attach+0xae2/0x11a0 [brcmfmac]
>    brcmf_attach+0x1fc/0x4b0 [brcmfmac]
>    ? __kmalloc+0x13c/0x1c0
>    brcmf_pcie_setup+0x99b/0xe00 [brcmfmac]
>    brcmf_fw_request_done+0x16a/0x1f0 [brcmfmac]
>    request_firmware_work_func+0x36/0x60
>    process_one_work+0x146/0x350
>    worker_thread+0x4a/0x3b0
>    kthread+0x102/0x140
>    ? process_one_work+0x350/0x350
>    ? kthread_bind+0x20/0x20
>    ret_from_fork+0x35/0x40
>   Code: 66 90 0f b7 07 55 48 89 e5 89 c2 88 47 02 88 47 03 66 81 e2 00 38
> 	66 81 fa 00 18 74 6e 66 81 fa 00 20 74 39 66 81 fa 00 10 74 14 <0f>
> 	0b 66 25 00 c0 74 20 66 3d 00 c0 75 20 c6 47 04 01 5d c3 66
>   ---[ end trace 550c46682415b26d ]---
>   brcmfmac: brcmf_construct_chaninfo: Ignoring unexpected firmware channel 50
> 
> This patch adds the missing stuff to properly handle this.
> 
> Reviewed-by: Hante Meuleman <hante.meuleman@broadcom.com>
> Reviewed-by: Pieter-Paul Giesberts <pieter-paul.giesberts@broadcom.com>
> Reviewed-by: Franky Lin <franky.lin@broadcom.com>
> Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com>

2 patches applied to wireless-drivers-next.git, thanks.

330994e8e8ec brcmfmac: fix for proper support of 160MHz bandwidth
59c2a30d36c8 brcmfmac: increase buffer for obtaining firmware capabilities

-- 
https://patchwork.kernel.org/patch/10588375/

https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches

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

end of thread, other threads:[~2018-09-20 17:53 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-09-05  7:48 [PATCH V2 0/2] brcmfmac: fix for 160MHz and firmware capabilities Arend van Spriel
2018-09-05  7:48 ` [PATCH V2 1/2] brcmfmac: fix for proper support of 160MHz bandwidth Arend van Spriel
2018-09-20 12:10   ` Kalle Valo
2018-09-05  7:48 ` [PATCH V2 2/2] brcmfmac: increase buffer for obtaining firmware capabilities 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.