Linux wireless drivers development
 help / color / mirror / Atom feed
* Re: [PATCH -next] carl9170: remove set but not used variable 'udev'
From: Kalle Valo @ 2019-09-04  6:10 UTC (permalink / raw)
  To: YueHaibing
  Cc: chunkeey, linux-kernel, netdev, linux-wireless, davem, YueHaibing
In-Reply-To: <20190702141207.47552-1-yuehaibing@huawei.com>

YueHaibing <yuehaibing@huawei.com> wrote:

> Fixes gcc '-Wunused-but-set-variable' warning:
> 
> drivers/net/wireless/ath/carl9170/usb.c: In function carl9170_usb_disconnect:
> drivers/net/wireless/ath/carl9170/usb.c:1110:21:
>  warning: variable udev set but not used [-Wunused-but-set-variable]
> 
> It is not use since commit feb09b293327 ("carl9170:
> fix misuse of device driver API")
> 
> Reported-by: Hulk Robot <hulkci@huawei.com>
> Signed-off-by: YueHaibing <yuehaibing@huawei.com>
> Acked-by: Christian Lamparter <chunkeey@gmail.com>
> Signed-off-by: Kalle Valo <kvalo@codeaurora.org>

Patch applied to ath-next branch of ath.git, thanks.

68092f9cf932 carl9170: remove set but not used variable 'udev'

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

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


^ permalink raw reply

* Re: [PATCH v4] ath9k: add loader for AR92XX (and older) pci(e)
From: Kalle Valo @ 2019-09-04  6:13 UTC (permalink / raw)
  To: Christian Lamparter
  Cc: QCA ath9k Development, linux-wireless, Julian Calaby,
	Martin Blumenstingl
In-Reply-To: <20190705175313.19482-1-chunkeey@gmail.com>

Christian Lamparter <chunkeey@gmail.com> wrote:

> Atheros cards with a AR92XX generation (and older) chip usually
> store their pci(e) initialization vectors on an external eeprom chip.
> However these chips technically don't need the eeprom chip attached,
> the AR9280 Datasheet in section "6.1.2 DEVICE_ID" describes that
> "... if the EEPROM content is not valid, a value of 0xFF1C returns
> when read from the register". So, they will show up on the system's
> pci bus. However in that state, ath9k can't load, since it relies
> on having the correct pci-id, otherwise it doesn't know what chip it
> actually is. This happens on many embedded devices like routers
> and accesspoint since they want to keep the BOM low and store the
> pci(e) initialization vectors together with the calibration data
> on the system's FLASH, which is out of reach of the ath9k chip.
> 
> Furthermore, Some devices (like the Cisco Meraki Z1 Cloud Managed
> Teleworker Gateway) need to be able to initialize the PCIe wifi device.
> Normally, this should be done as a pci quirk during the early stages of
> booting linux. However, this isn't possible for devices which have the
> init code for the Atheros chip stored on NAND in an UBI volume.
> Hence, this module can be used to initialize the chip when the
> user-space is ready to extract the init code.
> 
> Martin Blumenstingl prodived the following fixes:
> owl-loader: add support for OWL emulation PCI devices
> owl-loader: don't re-scan the bus when ath9k_pci_fixup failed
> owl-loader: use dev_* instead of pr_* logging functions
> owl-loader: auto-generate the eeprom filename as fallback
> owl-loader: add a debug message when swapping the eeprom data
> owl-loader: add missing newlines in log messages
> 
> Reviewed-by: Julian Calaby <julian.calaby@gmail.com>
> Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
> Signed-off-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
> Signed-off-by: Kalle Valo <kvalo@codeaurora.org>

Patch applied to ath-next branch of ath.git, thanks.

5a4f2040fd07 ath9k: add loader for AR92XX (and older) pci(e)

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

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


^ permalink raw reply

* Re: [PATCH] ath9k: dynack: fix possible deadlock in ath_dynack_node_{de}init
From: Kalle Valo @ 2019-09-04  6:14 UTC (permalink / raw)
  To: Lorenzo Bianconi; +Cc: lorenzo.bianconi, linux-wireless
In-Reply-To: <3c5c90cd62da2db9a661b3045391da537dccf90f.1566200274.git.lorenzo@kernel.org>

Lorenzo Bianconi <lorenzo@kernel.org> wrote:

> Fix following lockdep warning disabling bh in
> ath_dynack_node_init/ath_dynack_node_deinit
> 
> [   75.955878] --------------------------------
> [   75.955880] inconsistent {SOFTIRQ-ON-W} -> {IN-SOFTIRQ-W} usage.
> [   75.955884] swapper/0/0 [HC0[0]:SC1[3]:HE1:SE0] takes:
> [   75.955888] 00000000792a7ee0 (&(&da->qlock)->rlock){+.?.}, at: ath_dynack_sample_ack_ts+0x4d/0xa0 [ath9k_hw]
> [   75.955905] {SOFTIRQ-ON-W} state was registered at:
> [   75.955912]   lock_acquire+0x9a/0x160
> [   75.955917]   _raw_spin_lock+0x2c/0x70
> [   75.955927]   ath_dynack_node_init+0x2a/0x60 [ath9k_hw]
> [   75.955934]   ath9k_sta_state+0xec/0x160 [ath9k]
> [   75.955976]   drv_sta_state+0xb2/0x740 [mac80211]
> [   75.956008]   sta_info_insert_finish+0x21a/0x420 [mac80211]
> [   75.956039]   sta_info_insert_rcu+0x12b/0x2c0 [mac80211]
> [   75.956069]   sta_info_insert+0x7/0x70 [mac80211]
> [   75.956093]   ieee80211_prep_connection+0x42e/0x730 [mac80211]
> [   75.956120]   ieee80211_mgd_auth.cold+0xb9/0x15c [mac80211]
> [   75.956152]   cfg80211_mlme_auth+0x143/0x350 [cfg80211]
> [   75.956169]   nl80211_authenticate+0x25e/0x2b0 [cfg80211]
> [   75.956172]   genl_family_rcv_msg+0x198/0x400
> [   75.956174]   genl_rcv_msg+0x42/0x90
> [   75.956176]   netlink_rcv_skb+0x35/0xf0
> [   75.956178]   genl_rcv+0x1f/0x30
> [   75.956180]   netlink_unicast+0x154/0x200
> [   75.956182]   netlink_sendmsg+0x1bf/0x3d0
> [   75.956186]   ___sys_sendmsg+0x2c2/0x2f0
> [   75.956187]   __sys_sendmsg+0x44/0x80
> [   75.956190]   do_syscall_64+0x55/0x1a0
> [   75.956192]   entry_SYSCALL_64_after_hwframe+0x49/0xbe
> [   75.956194] irq event stamp: 2357092
> [   75.956196] hardirqs last  enabled at (2357092): [<ffffffff818c62de>] _raw_spin_unlock_irqrestore+0x3e/0x50
> [   75.956199] hardirqs last disabled at (2357091): [<ffffffff818c60b1>] _raw_spin_lock_irqsave+0x11/0x80
> [   75.956202] softirqs last  enabled at (2357072): [<ffffffff8106dc09>] irq_enter+0x59/0x60
> [   75.956204] softirqs last disabled at (2357073): [<ffffffff8106dcbe>] irq_exit+0xae/0xc0
> [   75.956206]
>                other info that might help us debug this:
> [   75.956207]  Possible unsafe locking scenario:
> 
> [   75.956208]        CPU0
> [   75.956209]        ----
> [   75.956210]   lock(&(&da->qlock)->rlock);
> [   75.956213]   <Interrupt>
> [   75.956214]     lock(&(&da->qlock)->rlock);
> [   75.956216]
>                 *** DEADLOCK ***
> 
> [   75.956217] 1 lock held by swapper/0/0:
> [   75.956219]  #0: 000000003bb5675c (&(&sc->sc_pcu_lock)->rlock){+.-.}, at: ath9k_tasklet+0x55/0x240 [ath9k]
> [   75.956225]
>                stack backtrace:
> [   75.956228] CPU: 0 PID: 0 Comm: swapper/0 Not tainted 5.3.0-rc1-wdn+ #13
> [   75.956229] Hardware name: Dell Inc. Studio XPS 1340/0K183D, BIOS A11 09/08/2009
> [   75.956231] Call Trace:
> [   75.956233]  <IRQ>
> [   75.956236]  dump_stack+0x67/0x90
> [   75.956239]  mark_lock+0x4c1/0x640
> [   75.956242]  ? check_usage_backwards+0x130/0x130
> [   75.956245]  ? sched_clock_local+0x12/0x80
> [   75.956247]  __lock_acquire+0x484/0x7a0
> [   75.956250]  ? __lock_acquire+0x3b9/0x7a0
> [   75.956252]  lock_acquire+0x9a/0x160
> [   75.956259]  ? ath_dynack_sample_ack_ts+0x4d/0xa0 [ath9k_hw]
> [   75.956262]  _raw_spin_lock_bh+0x34/0x80
> [   75.956268]  ? ath_dynack_sample_ack_ts+0x4d/0xa0 [ath9k_hw]
> [   75.956275]  ath_dynack_sample_ack_ts+0x4d/0xa0 [ath9k_hw]
> [   75.956280]  ath_rx_tasklet+0xd09/0xe90 [ath9k]
> [   75.956286]  ath9k_tasklet+0x102/0x240 [ath9k]
> [   75.956288]  tasklet_action_common.isra.0+0x6d/0x170
> [   75.956291]  __do_softirq+0xcc/0x425
> [   75.956294]  irq_exit+0xae/0xc0
> [   75.956296]  do_IRQ+0x8a/0x110
> [   75.956298]  common_interrupt+0xf/0xf
> [   75.956300]  </IRQ>
> [   75.956303] RIP: 0010:cpuidle_enter_state+0xb2/0x400
> [   75.956308] RSP: 0018:ffffffff82203e70 EFLAGS: 00000202 ORIG_RAX: ffffffffffffffd7
> [   75.956310] RAX: ffffffff82219800 RBX: ffffffff822bd0a0 RCX: 0000000000000000
> [   75.956312] RDX: 0000000000000046 RSI: 0000000000000006 RDI: ffffffff82219800
> [   75.956314] RBP: ffff888155a01c00 R08: 00000011af51aabe R09: 0000000000000000
> [   75.956315] R10: 0000000000000000 R11: 0000000000000000 R12: 0000000000000002
> [   75.956317] R13: 00000011af51aabe R14: 0000000000000003 R15: ffffffff82219800
> [   75.956321]  cpuidle_enter+0x24/0x40
> [   75.956323]  do_idle+0x1ac/0x220
> [   75.956326]  cpu_startup_entry+0x14/0x20
> [   75.956329]  start_kernel+0x482/0x489
> [   75.956332]  secondary_startup_64+0xa4/0xb0
> 
> Fixes: c774d57fd47c ("ath9k: add dynamic ACK timeout estimation")
> Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
> Tested-by: Koen Vandeputte <koen.vandeputte@ncentric.com>
> Signed-off-by: Kalle Valo <kvalo@codeaurora.org>

Patch applied to ath-next branch of ath.git, thanks.

e1aa1a1db3b0 ath9k: dynack: fix possible deadlock in ath_dynack_node_{de}init

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

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


^ permalink raw reply

* [PATCH] mac80211: Store max_mtu in ieee80211_hw
From: Wen Gong @ 2019-09-04  6:15 UTC (permalink / raw)
  To: ath10k, johannes; +Cc: linux-wireless

Make it possibly for drivers to adjust the default mat_mtu
by storing it in the hardware struct.

Signed-off-by: Wen Gong <wgong@codeaurora.org>
---
 include/net/mac80211.h | 3 +++
 net/mac80211/iface.c   | 5 ++++-
 2 files changed, 7 insertions(+), 1 deletion(-)

diff --git a/include/net/mac80211.h b/include/net/mac80211.h
index d26da01..8545b03 100644
--- a/include/net/mac80211.h
+++ b/include/net/mac80211.h
@@ -2454,6 +2454,8 @@ enum ieee80211_hw_flags {
  *
  * @weight_multiplier: Driver specific airtime weight multiplier used while
  *	refilling deficit of each TXQ.
+ *
+ * @max_mtu: the max mtu could be set.
  */
 struct ieee80211_hw {
 	struct ieee80211_conf conf;
@@ -2491,6 +2493,7 @@ struct ieee80211_hw {
 	u8 max_nan_de_entries;
 	u8 tx_sk_pacing_shift;
 	u8 weight_multiplier;
+	u32 max_mtu;
 };
 
 static inline bool _ieee80211_hw_check(struct ieee80211_hw *hw,
diff --git a/net/mac80211/iface.c b/net/mac80211/iface.c
index 06aac0a..00c33e6 100644
--- a/net/mac80211/iface.c
+++ b/net/mac80211/iface.c
@@ -1877,7 +1877,10 @@ int ieee80211_if_add(struct ieee80211_local *local, const char *name,
 
 		/* MTU range: 256 - 2304 */
 		ndev->min_mtu = 256;
-		ndev->max_mtu = IEEE80211_MAX_DATA_LEN;
+		if (local->hw.max_mtu)
+			ndev->max_mtu = local->hw.max_mtu;
+		else
+			ndev->max_mtu = IEEE80211_MAX_DATA_LEN;
 
 		ret = register_netdevice(ndev);
 		if (ret) {
-- 
1.9.1


^ permalink raw reply related

* Re: [PATCH 1/4] ath9k: dyanck: introduce ath_dynack_set_timeout routine
From: Kalle Valo @ 2019-09-04  6:20 UTC (permalink / raw)
  To: Lorenzo Bianconi; +Cc: lorenzo.bianconi, linux-wireless, koen.vandeputte
In-Reply-To: <4d64a2f91fcb8dbadaad8fef2e693abde47e6b5c.1566317488.git.lorenzo@kernel.org>

Lorenzo Bianconi <lorenzo@kernel.org> wrote:

> Introduce ath_dynack_set_timeout routine to configure slottime/ack/cts
> timeouts and remove duplicated code
> 
> Tested-by: Koen Vandeputte <koen.vandeputte@ncentric.com>
> Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
> Signed-off-by: Kalle Valo <kvalo@codeaurora.org>

4 patches applied to ath-next branch of ath.git, thanks.

5df65dd52dd5 ath9k: dyanck: introduce ath_dynack_set_timeout routine
6999e40d5f1d ath9k: dynack: properly set last timeout timestamp in ath_dynack_reset
86e392994dee ath9k: dynack: set max timeout according to channel width
72bb1aa91ff8 ath9k: dynack: set ackto to max timeout in ath_dynack_reset

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

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


^ permalink raw reply

* Re: [PATCH] ath6kl: Fix a possible null-pointer dereference in ath6kl_htc_mbox_create()
From: Kalle Valo @ 2019-09-04  6:21 UTC (permalink / raw)
  To: Jia-Ju Bai; +Cc: davem, linux-wireless, netdev, linux-kernel, Jia-Ju Bai
In-Reply-To: <20190729030305.18410-1-baijiaju1990@gmail.com>

Jia-Ju Bai <baijiaju1990@gmail.com> wrote:

> In ath6kl_htc_mbox_create(), when kzalloc() on line 2855 fails,
> target->dev is assigned to NULL, and ath6kl_htc_mbox_cleanup(target) is
> called on line 2885.
> 
> In ath6kl_htc_mbox_cleanup(), target->dev is used on line 2895:
>     ath6kl_hif_cleanup_scatter(target->dev->ar);
> 
> Thus, a null-pointer dereference may occur.
> 
> To fix this bug, kfree(target) is called and NULL is returned when
> kzalloc() on line 2855 fails.
> 
> This bug is found by a static analysis tool STCheck written by us.
> 
> Signed-off-by: Jia-Ju Bai <baijiaju1990@gmail.com>
> Signed-off-by: Kalle Valo <kvalo@codeaurora.org>

Patch applied to ath-next branch of ath.git, thanks.

0e7bf23e4967 ath6kl: Fix a possible null-pointer dereference in ath6kl_htc_mbox_create()

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

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


^ permalink raw reply

* Re: [PATCH] wcn36xx: use dynamic allocation for large variables
From: Kalle Valo @ 2019-09-04  6:22 UTC (permalink / raw)
  To: Arnd Bergmann
  Cc: Arnd Bergmann, Eugene Krasnikov, John W. Linville,
	David S. Miller, YueHaibing, wcn36xx, linux-wireless, netdev,
	linux-kernel, clang-built-linux
In-Reply-To: <20190722145910.1156473-1-arnd@arndb.de>

Arnd Bergmann <arnd@arndb.de> wrote:

> clang triggers a warning about oversized stack frames that gcc does not
> notice because of slightly different inlining decisions:
> 
> ath/wcn36xx/smd.c:1409:5: error: stack frame size of 1040 bytes in function 'wcn36xx_smd_config_bss' [-Werror,-Wframe-larger-than=]
> ath/wcn36xx/smd.c:640:5: error: stack frame size of 1032 bytes in function 'wcn36xx_smd_start_hw_scan' [-Werror,-Wframe-larger-than=]
> 
> Basically the wcn36xx_hal_start_scan_offload_req_msg,
> wcn36xx_hal_config_bss_req_msg_v1, and wcn36xx_hal_config_bss_req_msg
> structures are too large to be put on the kernel stack, but small
> enough that gcc does not warn about them.
> 
> Use kzalloc() to allocate them all. There are similar structures in other
> parts of this driver, but they are all smaller, with the next largest
> stack frame at 480 bytes for wcn36xx_smd_send_beacon.
> 
> Fixes: 8e84c2582169 ("wcn36xx: mac80211 driver for Qualcomm WCN3660/WCN3680 hardware")
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
> Signed-off-by: Kalle Valo <kvalo@codeaurora.org>

Patch applied to ath-next branch of ath.git, thanks.

355cf3191201 wcn36xx: use dynamic allocation for large variables

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

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


^ permalink raw reply

* Re: [PATCH 1/2] Fix a NULL-ptr-deref bug in ath6kl_usb_alloc_urb_from_pipe
From: Kalle Valo @ 2019-09-04  6:23 UTC (permalink / raw)
  To: Hui Peng
  Cc: davem, Hui Peng, Mathias Payer, linux-wireless, netdev,
	linux-kernel
In-Reply-To: <20190804002905.11292-1-benquike@gmail.com>

Hui Peng <benquike@gmail.com> wrote:

> The `ar_usb` field of `ath6kl_usb_pipe_usb_pipe` objects
> are initialized to point to the containing `ath6kl_usb` object
> according to endpoint descriptors read from the device side, as shown
> below in `ath6kl_usb_setup_pipe_resources`:
> 
> for (i = 0; i < iface_desc->desc.bNumEndpoints; ++i) {
> 	endpoint = &iface_desc->endpoint[i].desc;
> 
> 	// get the address from endpoint descriptor
> 	pipe_num = ath6kl_usb_get_logical_pipe_num(ar_usb,
> 						endpoint->bEndpointAddress,
> 						&urbcount);
> 	......
> 	// select the pipe object
> 	pipe = &ar_usb->pipes[pipe_num];
> 
> 	// initialize the ar_usb field
> 	pipe->ar_usb = ar_usb;
> }
> 
> The driver assumes that the addresses reported in endpoint
> descriptors from device side  to be complete. If a device is
> malicious and does not report complete addresses, it may trigger
> NULL-ptr-deref `ath6kl_usb_alloc_urb_from_pipe` and
> `ath6kl_usb_free_urb_to_pipe`.
> 
> This patch fixes the bug by preventing potential NULL-ptr-deref
> (CVE-2019-15098).
> 
> Signed-off-by: Hui Peng <benquike@gmail.com>
> Reported-by: Hui Peng <benquike@gmail.com>
> Reported-by: Mathias Payer <mathias.payer@nebelwelt.net>
> Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> Signed-off-by: Kalle Valo <kvalo@codeaurora.org>

Patch applied to ath-next branch of ath.git, thanks.

39d170b3cb62 ath6kl: fix a NULL-ptr-deref bug in ath6kl_usb_alloc_urb_from_pipe()

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

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


^ permalink raw reply

* [PATCH] ath9k: Remove unneeded variable to store return value
From: zhong jiang @ 2019-09-04  6:43 UTC (permalink / raw)
  To: kvalo; +Cc: davem, linux-wireless, zhongjiang, netdev, linux-kernel

ath9k_reg_rmw_single do not need return value to cope with different
cases. And change functon return type to void.

Signed-off-by: zhong jiang <zhongjiang@huawei.com>
---
 drivers/net/wireless/ath/ath9k/htc_drv_init.c | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/drivers/net/wireless/ath/ath9k/htc_drv_init.c b/drivers/net/wireless/ath/ath9k/htc_drv_init.c
index 214c682..d961095 100644
--- a/drivers/net/wireless/ath/ath9k/htc_drv_init.c
+++ b/drivers/net/wireless/ath/ath9k/htc_drv_init.c
@@ -463,7 +463,7 @@ static void ath9k_enable_rmw_buffer(void *hw_priv)
 	atomic_inc(&priv->wmi->m_rmw_cnt);
 }
 
-static u32 ath9k_reg_rmw_single(void *hw_priv,
+static void ath9k_reg_rmw_single(void *hw_priv,
 				 u32 reg_offset, u32 set, u32 clr)
 {
 	struct ath_hw *ah = hw_priv;
@@ -471,7 +471,6 @@ static u32 ath9k_reg_rmw_single(void *hw_priv,
 	struct ath9k_htc_priv *priv = (struct ath9k_htc_priv *) common->priv;
 	struct register_rmw buf, buf_ret;
 	int ret;
-	u32 val = 0;
 
 	buf.reg = cpu_to_be32(reg_offset);
 	buf.set = cpu_to_be32(set);
@@ -485,7 +484,6 @@ static u32 ath9k_reg_rmw_single(void *hw_priv,
 		ath_dbg(common, WMI, "REGISTER RMW FAILED:(0x%04x, %d)\n",
 			reg_offset, ret);
 	}
-	return val;
 }
 
 static u32 ath9k_reg_rmw(void *hw_priv, u32 reg_offset, u32 set, u32 clr)
-- 
1.7.12.4


^ permalink raw reply related

* Re: [PATCH] mac80211: Store max_mtu in ieee80211_hw
From: Johannes Berg @ 2019-09-04  7:03 UTC (permalink / raw)
  To: Wen Gong, ath10k; +Cc: linux-wireless
In-Reply-To: <1567577743-27684-1-git-send-email-wgong@codeaurora.org>

On Wed, 2019-09-04 at 14:15 +0800, Wen Gong wrote:
> Make it possibly for drivers to adjust the default mat_mtu
> by storing it in the hardware struct.
> 
> +++ b/net/mac80211/iface.c
> @@ -1877,7 +1877,10 @@ int ieee80211_if_add(struct ieee80211_local *local, const char *name,
>  
>  		/* MTU range: 256 - 2304 */
>  		ndev->min_mtu = 256;
> -		ndev->max_mtu = IEEE80211_MAX_DATA_LEN;
> +		if (local->hw.max_mtu)
> +			ndev->max_mtu = local->hw.max_mtu;
> +		else
> +			ndev->max_mtu = IEEE80211_MAX_DATA_LEN;

It seems (slightly) preferable to me to just initialize the value in
local->hw.max_mtu in alloc_hw(), so the driver can override it before
register_hw(), and then use it here unconditionally. Any particular
reason for it being this way?

johannes


^ permalink raw reply

* Re: Issue with intel wireless-AC 9260 in wifi direct in 5Ghz
From: Equipe Soft @ 2019-09-04  7:19 UTC (permalink / raw)
  To: linux-wireless
In-Reply-To: <CAFb4eQksH4B8fO8kShaLSPk+-tNsE3tdUHb7qbXXSneSwjt9QA@mail.gmail.com>

Hello, Did you have any news about the issue?
Regards.

Le mer. 28 août 2019 à 19:21, Equipe Soft
<equipe.soft.isere@gmail.com> a écrit :
>
> Hello,
> I'm trying to set up a wifi direct group between my AC9260 wifi board
> and a android tablet supporting WifiDirect.
>
> I tried several configurations and I faced some issues.
> Here follow the testing sequence. All the following command are sent
> through wpa_cli:
>
> > p2p_find
> P2P-DEVICE-FOUND f2:ee:10:c2:ce:68 p2p_dev_addr=f2:ee:10:c2:ce:68
> pri_dev_type=10-0050F204-5 name='[Tablet] Galaxy Tab S3'
> config_methods=0x188 dev_capab=0x25 group_capab=0x0 vendor_elems=1
> new=1
>
> >p2p_connect f2:ee:10:c2:ce:68 pin 1234 go_intent=1
> 74493685
>
> PIN is set on the tablet then, on my terminal I see:
>
> P2P-GO-NEG-SUCCESS role=GO freq=5785 ht40=0 peer_dev=f2:ee:10:c2:ce:68
> peer_iface=f2:ee:10:c2:4e:68 wps_method=Display
> P2P-GROUP-FORMATION-FAILURE
> P2P-GROUP-REMOVED p2p-wlan0-0 GO reason=FORMATION_FAILED
>
> dmesg :
>
> [ 1875.593069] IPv6: ADDRCONF(NETDEV_UP): p2p-wlan0-0: link is not ready
> [ 1875.659199] iwlwifi 0000:01:00.0: Microcode SW error detected.
> Restarting 0x2000000.
> [ 1875.667246] iwlwifi 0000:01:00.0: Start IWL Error Log Dump:
> [ 1875.672851] iwlwifi 0000:01:00.0: Status: 0x00000100, count: 6
> [ 1875.678718] iwlwifi 0000:01:00.0: Loaded firmware version: 38.755cfdd8.0
> [ 1875.685466] iwlwifi 0000:01:00.0: 0x000014FC | ADVANCED_SYSASSERT
> [ 1875.692498] iwlwifi 0000:01:00.0: 0x00A0A200 | trm_hw_status0
> [ 1875.698270] iwlwifi 0000:01:00.0: 0x00000000 | trm_hw_status1
> [ 1875.704048] iwlwifi 0000:01:00.0: 0x00454EF6 | branchlink2
> [ 1875.709561] iwlwifi 0000:01:00.0: 0x0045E90E | interruptlink1
> [ 1875.715330] iwlwifi 0000:01:00.0: 0x00000000 | interruptlink2
> [ 1875.721096] iwlwifi 0000:01:00.0: 0x00009D00 | data1
> [ 1875.726084] iwlwifi 0000:01:00.0: 0x00000741 | data2
> [ 1875.731070] iwlwifi 0000:01:00.0: 0x00090010 | data3
> [ 1875.736076] iwlwifi 0000:01:00.0: 0x00000000 | beacon time
> [ 1875.741589] iwlwifi 0000:01:00.0: 0x6F091C80 | tsf low
> [ 1875.746757] iwlwifi 0000:01:00.0: 0x00000000 | tsf hi
> [ 1875.751833] iwlwifi 0000:01:00.0: 0x00000000 | time gp1
> [ 1875.757081] iwlwifi 0000:01:00.0: 0x6F091C81 | time gp2
> [ 1875.762325] iwlwifi 0000:01:00.0: 0x00000001 | uCode revision type
> [ 1875.768529] iwlwifi 0000:01:00.0: 0x00000026 | uCode version major
> [ 1875.774731] iwlwifi 0000:01:00.0: 0x755CFDD8 | uCode version minor
> [ 1875.780934] iwlwifi 0000:01:00.0: 0x00000321 | hw version
> [ 1875.786352] iwlwifi 0000:01:00.0: 0x00C89004 | board version
> [ 1875.792044] iwlwifi 0000:01:00.0: 0x801BF402 | hcmd
> [ 1875.796951] iwlwifi 0000:01:00.0: 0x24022000 | isr0
> [ 1875.801853] iwlwifi 0000:01:00.0: 0x01000000 | isr1
> [ 1875.806751] iwlwifi 0000:01:00.0: 0x08301802 | isr2
> [ 1875.811653] iwlwifi 0000:01:00.0: 0x00415CC0 | isr3
> [ 1875.816559] iwlwifi 0000:01:00.0: 0x00000000 | isr4
> [ 1875.821462] iwlwifi 0000:01:00.0: 0x000501D1 | last cmd Id
> [ 1875.826975] iwlwifi 0000:01:00.0: 0x00000000 | wait_event
> [ 1875.832399] iwlwifi 0000:01:00.0: 0x000000D0 | l2p_control
> [ 1875.837928] iwlwifi 0000:01:00.0: 0x00018014 | l2p_duration
> [ 1875.843527] iwlwifi 0000:01:00.0: 0x0000003F | l2p_mhvalid
> [ 1875.849040] iwlwifi 0000:01:00.0: 0x00000000 | l2p_addr_match
> [ 1875.854811] iwlwifi 0000:01:00.0: 0x0000000D | lmpm_pmg_sel
> [ 1875.860412] iwlwifi 0000:01:00.0: 0x04071046 | timestamp
> [ 1875.865758] iwlwifi 0000:01:00.0: 0x0000C0E4 | flow_handler
> [ 1875.871405] iwlwifi 0000:01:00.0: Start IWL Error Log Dump:
> [ 1875.877037] iwlwifi 0000:01:00.0: Status: 0x00000100, count: 7
> [ 1875.882889] iwlwifi 0000:01:00.0: 0x00000070 | ADVANCED_SYSASSERT
> [ 1875.889020] iwlwifi 0000:01:00.0: 0x00000000 | umac branchlink1
> [ 1875.894959] iwlwifi 0000:01:00.0: 0xC0087CB8 | umac branchlink2
> [ 1875.900904] iwlwifi 0000:01:00.0: 0xC0084264 | umac interruptlink1
> [ 1875.907134] iwlwifi 0000:01:00.0: 0xC00847C8 | umac interruptlink2
> [ 1875.913344] iwlwifi 0000:01:00.0: 0x00000800 | umac data1
> [ 1875.918764] iwlwifi 0000:01:00.0: 0xC00847C8 | umac data2
> [ 1875.924184] iwlwifi 0000:01:00.0: 0xDEADBEEF | umac data3
> [ 1875.929606] iwlwifi 0000:01:00.0: 0x00000026 | umac major
> [ 1875.935026] iwlwifi 0000:01:00.0: 0x755CFDD8 | umac minor
> [ 1875.940448] iwlwifi 0000:01:00.0: 0xC0887F30 | frame pointer
> [ 1875.946128] iwlwifi 0000:01:00.0: 0xC0887F30 | stack pointer
> [ 1875.951810] iwlwifi 0000:01:00.0: 0x0006012B | last host cmd
> [ 1875.957488] iwlwifi 0000:01:00.0: 0x00000000 | isr status reg
> [ 1875.963268] ieee80211 phy0: Hardware restart was requested
> [ 1875.968932] iwlwifi 0000:01:00.0: iwlwifi transaction failed,
> dumping registers
> [ 1875.976275] iwlwifi 0000:01:00.0: iwlwifi device config registers:
> [ 1875.983647] iwlwifi 0000:01:00.0: 00000000: 25268086 00100406
> 02800029 00000000 e0000004 00000000 00000000 00000000
> [ 1875.994312] iwlwifi 0000:01:00.0: 00000020: 00000000 00000000
> 00000000 00148086 00000000 000000c8 00000000 0000012b
> [ 1876.004835] iwlwifi 0000:01:00.0: iwlwifi device memory mapped registers:
> [ 1876.011780] iwlwifi 0000:01:00.0: 00000000: 00c89004 00000040
> 00000000 ba00008b 00000000 00000000 00027e1f 00000000
> [ 1876.022251] iwlwifi 0000:01:00.0: 00000020: 00000000 0c040005
> 00000321 d55555d5 d55555d5 d55555d5 80008040 041f0044
> [ 1876.032714] iwlwifi 0000:01:00.0: iwlwifi device AER capability structure:
> [ 1876.039694] iwlwifi 0000:01:00.0: 00000000: 14c10001 00000000
> 00000000 00462031 00000000 00002000 00000000 00000000
> [ 1876.050219] iwlwifi 0000:01:00.0: 00000020: 00000000 00000000 00000000
> [ 1876.056838] iwlwifi 0000:01:00.0: iwlwifi parent port
> (0000:00:00.0) config registers:
> [ 1876.064933] iwlwifi 0000:00:00.0: 00000000: d02110ee 00100006
> 06040000 00010000 00000000 00000000 000c0100 00000000
> [ 1876.075399] iwlwifi 0000:00:00.0: 00000020: e000e000 0001fff1
> 00000000 00000000 00000000 00000040 00000000 0000012b
> [ 1876.085869] iwlwifi 0000:01:00.0: FW error in SYNC CMD BINDING_CONTEXT_CMD
> [ 1876.092773] CPU: 1 PID: 498 Comm: wpa_supplicant Not tainted
> 4.18.31-yocto-standard #1
> [ 1876.100680] Hardware name: ********
> [ 1876.105290] Call trace:
> [ 1876.107744]  dump_backtrace+0x0/0x158
> [ 1876.111403]  show_stack+0x24/0x30
> [ 1876.114723]  dump_stack+0x80/0xa4
> [ 1876.118064]  iwl_trans_pcie_send_hcmd+0x5d0/0x5e8 [iwlwifi]
> [ 1876.123649]  iwl_trans_send_cmd+0x68/0x108 [iwlwifi]
> [ 1876.128644]  iwl_mvm_send_cmd_status+0x44/0xe0 [iwlmvm]
> [ 1876.133889]  iwl_mvm_send_cmd_pdu_status+0x6c/0x98 [iwlmvm]
> [ 1876.139480]  iwl_mvm_binding_update+0x148/0x230 [iwlmvm]
> [ 1876.144809]  iwl_mvm_binding_add_vif+0x5c/0x80 [iwlmvm]
> [ 1876.150048]  iwl_mvm_start_ap_ibss+0xe0/0x238 [iwlmvm]
> [ 1876.155268]  ieee80211_start_ap+0x218/0x488 [mac80211]
> [ 1876.160473]  nl80211_start_ap+0x3f4/0x6a8 [cfg80211]
> [ 1876.165446]  genl_family_rcv_msg+0x1cc/0x338
> [ 1876.169718]  genl_rcv_msg+0xa0/0xd8
> [ 1876.173207]  netlink_rcv_skb+0x60/0x120
> [ 1876.177043]  genl_rcv+0x3c/0x50
> [ 1876.180186]  netlink_unicast+0x194/0x210
> [ 1876.184109]  netlink_sendmsg+0x1a0/0x348
> [ 1876.188036]  sock_sendmsg+0x34/0x50
> [ 1876.191523]  ___sys_sendmsg+0x288/0x2c8
> [ 1876.195357]  __sys_sendmsg+0x7c/0xd0
> [ 1876.198933]  sys_sendmsg+0x38/0x48
> [ 1876.202330]  el0_svc_naked+0x30/0x34
> [ 1876.206366] iwlwifi 0000:01:00.0: Failed to send binding (action:1): -5
> [ 1876.213092] iwlwifi 0000:01:00.0: Failed to remove MAC context: -5
> [ 1876.219353] iwlwifi 0000:01:00.0: PHY ctxt cmd error. ret=-5
>
> It looks like the module firmware got an error when trying to set the
> module in AP in 5GHz. I know there could be some regulatory limitation
> for IBSS in 5Ghz, but why this does not work for wifi direct.
> Thanks for your time.
> @team.

^ permalink raw reply

* Re: Issue with Intel(R) Wireless-AC 9260 in wifi direct in 5GHz
From: Equipe Soft @ 2019-09-04  7:20 UTC (permalink / raw)
  To: linuxwifi, linux-wireless
In-Reply-To: <CAFb4eQnHy5GFRq21C-knnOc9jrcXUYYameoS2Onk9jqp2Pjqig@mail.gmail.com>

Hello, do you have any news about the issue?

Le mer. 28 août 2019 à 19:17, Equipe Soft
<equipe.soft.isere@gmail.com> a écrit :
>
> Hello,
> I'm trying to set up a wifi direct group between my AC9260 wifi board and a android tablet supporting WifiDirect.
>
> I tried several configurations and I faced some issues.
> Here follow the testing sequence. All the following command are sent through wpa_cli:
>
> > p2p_find
> P2P-DEVICE-FOUND f2:ee:10:c2:ce:68 p2p_dev_addr=f2:ee:10:c2:ce:68 pri_dev_type=10-0050F204-5 name='[Tablet] Galaxy Tab S3' config_methods=0x188 dev_capab=0x25 group_capab=0x0 vendor_elems=1 new=1
>
> >p2p_connect f2:ee:10:c2:ce:68 pin 1234 go_intent=1
> 74493685
>
> PIN is set on the tablet then, on my terminal I see:
>
> P2P-GO-NEG-SUCCESS role=GO freq=5785 ht40=0 peer_dev=f2:ee:10:c2:ce:68 peer_iface=f2:ee:10:c2:4e:68 wps_method=Display
> P2P-GROUP-FORMATION-FAILURE
> P2P-GROUP-REMOVED p2p-wlan0-0 GO reason=FORMATION_FAILED
>
> dmesg :
>
> [ 1875.593069] IPv6: ADDRCONF(NETDEV_UP): p2p-wlan0-0: link is not ready
> [ 1875.659199] iwlwifi 0000:01:00.0: Microcode SW error detected.  Restarting 0x2000000.
> [ 1875.667246] iwlwifi 0000:01:00.0: Start IWL Error Log Dump:
> [ 1875.672851] iwlwifi 0000:01:00.0: Status: 0x00000100, count: 6
> [ 1875.678718] iwlwifi 0000:01:00.0: Loaded firmware version: 38.755cfdd8.0
> [ 1875.685466] iwlwifi 0000:01:00.0: 0x000014FC | ADVANCED_SYSASSERT
> [ 1875.692498] iwlwifi 0000:01:00.0: 0x00A0A200 | trm_hw_status0
> [ 1875.698270] iwlwifi 0000:01:00.0: 0x00000000 | trm_hw_status1
> [ 1875.704048] iwlwifi 0000:01:00.0: 0x00454EF6 | branchlink2
> [ 1875.709561] iwlwifi 0000:01:00.0: 0x0045E90E | interruptlink1
> [ 1875.715330] iwlwifi 0000:01:00.0: 0x00000000 | interruptlink2
> [ 1875.721096] iwlwifi 0000:01:00.0: 0x00009D00 | data1
> [ 1875.726084] iwlwifi 0000:01:00.0: 0x00000741 | data2
> [ 1875.731070] iwlwifi 0000:01:00.0: 0x00090010 | data3
> [ 1875.736076] iwlwifi 0000:01:00.0: 0x00000000 | beacon time
> [ 1875.741589] iwlwifi 0000:01:00.0: 0x6F091C80 | tsf low
> [ 1875.746757] iwlwifi 0000:01:00.0: 0x00000000 | tsf hi
> [ 1875.751833] iwlwifi 0000:01:00.0: 0x00000000 | time gp1
> [ 1875.757081] iwlwifi 0000:01:00.0: 0x6F091C81 | time gp2
> [ 1875.762325] iwlwifi 0000:01:00.0: 0x00000001 | uCode revision type
> [ 1875.768529] iwlwifi 0000:01:00.0: 0x00000026 | uCode version major
> [ 1875.774731] iwlwifi 0000:01:00.0: 0x755CFDD8 | uCode version minor
> [ 1875.780934] iwlwifi 0000:01:00.0: 0x00000321 | hw version
> [ 1875.786352] iwlwifi 0000:01:00.0: 0x00C89004 | board version
> [ 1875.792044] iwlwifi 0000:01:00.0: 0x801BF402 | hcmd
> [ 1875.796951] iwlwifi 0000:01:00.0: 0x24022000 | isr0
> [ 1875.801853] iwlwifi 0000:01:00.0: 0x01000000 | isr1
> [ 1875.806751] iwlwifi 0000:01:00.0: 0x08301802 | isr2
> [ 1875.811653] iwlwifi 0000:01:00.0: 0x00415CC0 | isr3
> [ 1875.816559] iwlwifi 0000:01:00.0: 0x00000000 | isr4
> [ 1875.821462] iwlwifi 0000:01:00.0: 0x000501D1 | last cmd Id
> [ 1875.826975] iwlwifi 0000:01:00.0: 0x00000000 | wait_event
> [ 1875.832399] iwlwifi 0000:01:00.0: 0x000000D0 | l2p_control
> [ 1875.837928] iwlwifi 0000:01:00.0: 0x00018014 | l2p_duration
> [ 1875.843527] iwlwifi 0000:01:00.0: 0x0000003F | l2p_mhvalid
> [ 1875.849040] iwlwifi 0000:01:00.0: 0x00000000 | l2p_addr_match
> [ 1875.854811] iwlwifi 0000:01:00.0: 0x0000000D | lmpm_pmg_sel
> [ 1875.860412] iwlwifi 0000:01:00.0: 0x04071046 | timestamp
> [ 1875.865758] iwlwifi 0000:01:00.0: 0x0000C0E4 | flow_handler
> [ 1875.871405] iwlwifi 0000:01:00.0: Start IWL Error Log Dump:
> [ 1875.877037] iwlwifi 0000:01:00.0: Status: 0x00000100, count: 7
> [ 1875.882889] iwlwifi 0000:01:00.0: 0x00000070 | ADVANCED_SYSASSERT
> [ 1875.889020] iwlwifi 0000:01:00.0: 0x00000000 | umac branchlink1
> [ 1875.894959] iwlwifi 0000:01:00.0: 0xC0087CB8 | umac branchlink2
> [ 1875.900904] iwlwifi 0000:01:00.0: 0xC0084264 | umac interruptlink1
> [ 1875.907134] iwlwifi 0000:01:00.0: 0xC00847C8 | umac interruptlink2
> [ 1875.913344] iwlwifi 0000:01:00.0: 0x00000800 | umac data1
> [ 1875.918764] iwlwifi 0000:01:00.0: 0xC00847C8 | umac data2
> [ 1875.924184] iwlwifi 0000:01:00.0: 0xDEADBEEF | umac data3
> [ 1875.929606] iwlwifi 0000:01:00.0: 0x00000026 | umac major
> [ 1875.935026] iwlwifi 0000:01:00.0: 0x755CFDD8 | umac minor
> [ 1875.940448] iwlwifi 0000:01:00.0: 0xC0887F30 | frame pointer
> [ 1875.946128] iwlwifi 0000:01:00.0: 0xC0887F30 | stack pointer
> [ 1875.951810] iwlwifi 0000:01:00.0: 0x0006012B | last host cmd
> [ 1875.957488] iwlwifi 0000:01:00.0: 0x00000000 | isr status reg
> [ 1875.963268] ieee80211 phy0: Hardware restart was requested
> [ 1875.968932] iwlwifi 0000:01:00.0: iwlwifi transaction failed, dumping registers
> [ 1875.976275] iwlwifi 0000:01:00.0: iwlwifi device config registers:
> [ 1875.983647] iwlwifi 0000:01:00.0: 00000000: 25268086 00100406 02800029 00000000 e0000004 00000000 00000000 00000000
> [ 1875.994312] iwlwifi 0000:01:00.0: 00000020: 00000000 00000000 00000000 00148086 00000000 000000c8 00000000 0000012b
> [ 1876.004835] iwlwifi 0000:01:00.0: iwlwifi device memory mapped registers:
> [ 1876.011780] iwlwifi 0000:01:00.0: 00000000: 00c89004 00000040 00000000 ba00008b 00000000 00000000 00027e1f 00000000
> [ 1876.022251] iwlwifi 0000:01:00.0: 00000020: 00000000 0c040005 00000321 d55555d5 d55555d5 d55555d5 80008040 041f0044
> [ 1876.032714] iwlwifi 0000:01:00.0: iwlwifi device AER capability structure:
> [ 1876.039694] iwlwifi 0000:01:00.0: 00000000: 14c10001 00000000 00000000 00462031 00000000 00002000 00000000 00000000
> [ 1876.050219] iwlwifi 0000:01:00.0: 00000020: 00000000 00000000 00000000
> [ 1876.056838] iwlwifi 0000:01:00.0: iwlwifi parent port (0000:00:00.0) config registers:
> [ 1876.064933] iwlwifi 0000:00:00.0: 00000000: d02110ee 00100006 06040000 00010000 00000000 00000000 000c0100 00000000
> [ 1876.075399] iwlwifi 0000:00:00.0: 00000020: e000e000 0001fff1 00000000 00000000 00000000 00000040 00000000 0000012b
> [ 1876.085869] iwlwifi 0000:01:00.0: FW error in SYNC CMD BINDING_CONTEXT_CMD
> [ 1876.092773] CPU: 1 PID: 498 Comm: wpa_supplicant Not tainted 4.18.31-yocto-standard #1
> [ 1876.100680] Hardware name: ********
> [ 1876.105290] Call trace:
> [ 1876.107744]  dump_backtrace+0x0/0x158
> [ 1876.111403]  show_stack+0x24/0x30
> [ 1876.114723]  dump_stack+0x80/0xa4
> [ 1876.118064]  iwl_trans_pcie_send_hcmd+0x5d0/0x5e8 [iwlwifi]
> [ 1876.123649]  iwl_trans_send_cmd+0x68/0x108 [iwlwifi]
> [ 1876.128644]  iwl_mvm_send_cmd_status+0x44/0xe0 [iwlmvm]
> [ 1876.133889]  iwl_mvm_send_cmd_pdu_status+0x6c/0x98 [iwlmvm]
> [ 1876.139480]  iwl_mvm_binding_update+0x148/0x230 [iwlmvm]
> [ 1876.144809]  iwl_mvm_binding_add_vif+0x5c/0x80 [iwlmvm]
> [ 1876.150048]  iwl_mvm_start_ap_ibss+0xe0/0x238 [iwlmvm]
> [ 1876.155268]  ieee80211_start_ap+0x218/0x488 [mac80211]
> [ 1876.160473]  nl80211_start_ap+0x3f4/0x6a8 [cfg80211]
> [ 1876.165446]  genl_family_rcv_msg+0x1cc/0x338
> [ 1876.169718]  genl_rcv_msg+0xa0/0xd8
> [ 1876.173207]  netlink_rcv_skb+0x60/0x120
> [ 1876.177043]  genl_rcv+0x3c/0x50
> [ 1876.180186]  netlink_unicast+0x194/0x210
> [ 1876.184109]  netlink_sendmsg+0x1a0/0x348
> [ 1876.188036]  sock_sendmsg+0x34/0x50
> [ 1876.191523]  ___sys_sendmsg+0x288/0x2c8
> [ 1876.195357]  __sys_sendmsg+0x7c/0xd0
> [ 1876.198933]  sys_sendmsg+0x38/0x48
> [ 1876.202330]  el0_svc_naked+0x30/0x34
> [ 1876.206366] iwlwifi 0000:01:00.0: Failed to send binding (action:1): -5
> [ 1876.213092] iwlwifi 0000:01:00.0: Failed to remove MAC context: -5
> [ 1876.219353] iwlwifi 0000:01:00.0: PHY ctxt cmd error. ret=-5
>
> It looks like the module firmware got an error when trying to set the module in AP in 5GHz. I know there could be some regulatory limitation for IBSS in 5Ghz, but why this does not work for wifi direct.
> Thanks for your time.
> @team.
>

^ permalink raw reply

* [PATCH] ath10k: Use ARRAY_SIZE instead of dividing sizeof array with sizeof an element
From: zhong jiang @ 2019-09-04  7:41 UTC (permalink / raw)
  To: kvalo, davem; +Cc: ath10k, linux-wireless, zhongjiang, netdev, linux-kernel

With the help of Coccinelle, ARRAY_SIZE can be replaced in ath10k_snoc_wlan_enable.

Signed-off-by: zhong jiang <zhongjiang@huawei.com>
---
 drivers/net/wireless/ath/ath10k/snoc.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/drivers/net/wireless/ath/ath10k/snoc.c b/drivers/net/wireless/ath/ath10k/snoc.c
index b491361..49fc044 100644
--- a/drivers/net/wireless/ath/ath10k/snoc.c
+++ b/drivers/net/wireless/ath/ath10k/snoc.c
@@ -976,8 +976,7 @@ static int ath10k_snoc_wlan_enable(struct ath10k *ar,
 				  sizeof(struct ath10k_svc_pipe_cfg);
 	cfg.ce_svc_cfg = (struct ath10k_svc_pipe_cfg *)
 		&target_service_to_ce_map_wlan;
-	cfg.num_shadow_reg_cfg = sizeof(target_shadow_reg_cfg_map) /
-					sizeof(struct ath10k_shadow_reg_cfg);
+	cfg.num_shadow_reg_cfg = ARRAY_SIZE(target_shadow_reg_cfg_map);
 	cfg.shadow_reg_cfg = (struct ath10k_shadow_reg_cfg *)
 		&target_shadow_reg_cfg_map;
 
-- 
1.7.12.4


^ permalink raw reply related

* Re: [linuxwifi] Issue with Intel(R) Wireless-AC 9260 in wifi direct in 5GHz
From: Luciano Coelho @ 2019-09-04  7:55 UTC (permalink / raw)
  To: Equipe Soft, linuxwifi, linux-wireless
In-Reply-To: <CAFb4eQ=MhqhKL9_wCo++g94F+z_-15ZJitiYh1dLqf99CKwTog@mail.gmail.com>

Hi,

Sorry for the delay.  This bug was already reported[1] and fixed[2]. 
But it seems that you are unfortunately using an old kernel (v4.18)
that hasn't been maintained for about 10 months... Please update your
kernel or try to cherry-pick the patch on top of your tree.

[1] https://bugzilla.kernel.org/show_bug.cgi?id=201105
[2] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=82715ac71e6b94a2c2136

HTH.

--
Cheers,
Luca.


On Wed, 2019-09-04 at 09:20 +0200, Equipe Soft wrote:
> Hello, do you have any news about the issue?
> 
> Le mer. 28 août 2019 à 19:17, Equipe Soft
> <equipe.soft.isere@gmail.com> a écrit :
> > Hello,
> > I'm trying to set up a wifi direct group between my AC9260 wifi board and a android tablet supporting WifiDirect.
> > 
> > I tried several configurations and I faced some issues.
> > Here follow the testing sequence. All the following command are sent through wpa_cli:
> > 
> > > p2p_find
> > P2P-DEVICE-FOUND f2:ee:10:c2:ce:68 p2p_dev_addr=f2:ee:10:c2:ce:68 pri_dev_type=10-0050F204-5 name='[Tablet] Galaxy Tab S3' config_methods=0x188 dev_capab=0x25 group_capab=0x0 vendor_elems=1 new=1
> > 
> > > p2p_connect f2:ee:10:c2:ce:68 pin 1234 go_intent=1
> > 74493685
> > 
> > PIN is set on the tablet then, on my terminal I see:
> > 
> > P2P-GO-NEG-SUCCESS role=GO freq=5785 ht40=0 peer_dev=f2:ee:10:c2:ce:68 peer_iface=f2:ee:10:c2:4e:68 wps_method=Display
> > P2P-GROUP-FORMATION-FAILURE
> > P2P-GROUP-REMOVED p2p-wlan0-0 GO reason=FORMATION_FAILED
> > 
> > dmesg :
> > 
> > [ 1875.593069] IPv6: ADDRCONF(NETDEV_UP): p2p-wlan0-0: link is not ready
> > [ 1875.659199] iwlwifi 0000:01:00.0: Microcode SW error detected.  Restarting 0x2000000.
> > [ 1875.667246] iwlwifi 0000:01:00.0: Start IWL Error Log Dump:
> > [ 1875.672851] iwlwifi 0000:01:00.0: Status: 0x00000100, count: 6
> > [ 1875.678718] iwlwifi 0000:01:00.0: Loaded firmware version: 38.755cfdd8.0
> > [ 1875.685466] iwlwifi 0000:01:00.0: 0x000014FC | ADVANCED_SYSASSERT
> > [ 1875.692498] iwlwifi 0000:01:00.0: 0x00A0A200 | trm_hw_status0
> > [ 1875.698270] iwlwifi 0000:01:00.0: 0x00000000 | trm_hw_status1
> > [ 1875.704048] iwlwifi 0000:01:00.0: 0x00454EF6 | branchlink2
> > [ 1875.709561] iwlwifi 0000:01:00.0: 0x0045E90E | interruptlink1
> > [ 1875.715330] iwlwifi 0000:01:00.0: 0x00000000 | interruptlink2
> > [ 1875.721096] iwlwifi 0000:01:00.0: 0x00009D00 | data1
> > [ 1875.726084] iwlwifi 0000:01:00.0: 0x00000741 | data2
> > [ 1875.731070] iwlwifi 0000:01:00.0: 0x00090010 | data3
> > [ 1875.736076] iwlwifi 0000:01:00.0: 0x00000000 | beacon time
> > [ 1875.741589] iwlwifi 0000:01:00.0: 0x6F091C80 | tsf low
> > [ 1875.746757] iwlwifi 0000:01:00.0: 0x00000000 | tsf hi
> > [ 1875.751833] iwlwifi 0000:01:00.0: 0x00000000 | time gp1
> > [ 1875.757081] iwlwifi 0000:01:00.0: 0x6F091C81 | time gp2
> > [ 1875.762325] iwlwifi 0000:01:00.0: 0x00000001 | uCode revision type
> > [ 1875.768529] iwlwifi 0000:01:00.0: 0x00000026 | uCode version major
> > [ 1875.774731] iwlwifi 0000:01:00.0: 0x755CFDD8 | uCode version minor
> > [ 1875.780934] iwlwifi 0000:01:00.0: 0x00000321 | hw version
> > [ 1875.786352] iwlwifi 0000:01:00.0: 0x00C89004 | board version
> > [ 1875.792044] iwlwifi 0000:01:00.0: 0x801BF402 | hcmd
> > [ 1875.796951] iwlwifi 0000:01:00.0: 0x24022000 | isr0
> > [ 1875.801853] iwlwifi 0000:01:00.0: 0x01000000 | isr1
> > [ 1875.806751] iwlwifi 0000:01:00.0: 0x08301802 | isr2
> > [ 1875.811653] iwlwifi 0000:01:00.0: 0x00415CC0 | isr3
> > [ 1875.816559] iwlwifi 0000:01:00.0: 0x00000000 | isr4
> > [ 1875.821462] iwlwifi 0000:01:00.0: 0x000501D1 | last cmd Id
> > [ 1875.826975] iwlwifi 0000:01:00.0: 0x00000000 | wait_event
> > [ 1875.832399] iwlwifi 0000:01:00.0: 0x000000D0 | l2p_control
> > [ 1875.837928] iwlwifi 0000:01:00.0: 0x00018014 | l2p_duration
> > [ 1875.843527] iwlwifi 0000:01:00.0: 0x0000003F | l2p_mhvalid
> > [ 1875.849040] iwlwifi 0000:01:00.0: 0x00000000 | l2p_addr_match
> > [ 1875.854811] iwlwifi 0000:01:00.0: 0x0000000D | lmpm_pmg_sel
> > [ 1875.860412] iwlwifi 0000:01:00.0: 0x04071046 | timestamp
> > [ 1875.865758] iwlwifi 0000:01:00.0: 0x0000C0E4 | flow_handler
> > [ 1875.871405] iwlwifi 0000:01:00.0: Start IWL Error Log Dump:
> > [ 1875.877037] iwlwifi 0000:01:00.0: Status: 0x00000100, count: 7
> > [ 1875.882889] iwlwifi 0000:01:00.0: 0x00000070 | ADVANCED_SYSASSERT
> > [ 1875.889020] iwlwifi 0000:01:00.0: 0x00000000 | umac branchlink1
> > [ 1875.894959] iwlwifi 0000:01:00.0: 0xC0087CB8 | umac branchlink2
> > [ 1875.900904] iwlwifi 0000:01:00.0: 0xC0084264 | umac interruptlink1
> > [ 1875.907134] iwlwifi 0000:01:00.0: 0xC00847C8 | umac interruptlink2
> > [ 1875.913344] iwlwifi 0000:01:00.0: 0x00000800 | umac data1
> > [ 1875.918764] iwlwifi 0000:01:00.0: 0xC00847C8 | umac data2
> > [ 1875.924184] iwlwifi 0000:01:00.0: 0xDEADBEEF | umac data3
> > [ 1875.929606] iwlwifi 0000:01:00.0: 0x00000026 | umac major
> > [ 1875.935026] iwlwifi 0000:01:00.0: 0x755CFDD8 | umac minor
> > [ 1875.940448] iwlwifi 0000:01:00.0: 0xC0887F30 | frame pointer
> > [ 1875.946128] iwlwifi 0000:01:00.0: 0xC0887F30 | stack pointer
> > [ 1875.951810] iwlwifi 0000:01:00.0: 0x0006012B | last host cmd
> > [ 1875.957488] iwlwifi 0000:01:00.0: 0x00000000 | isr status reg
> > [ 1875.963268] ieee80211 phy0: Hardware restart was requested
> > [ 1875.968932] iwlwifi 0000:01:00.0: iwlwifi transaction failed, dumping registers
> > [ 1875.976275] iwlwifi 0000:01:00.0: iwlwifi device config registers:
> > [ 1875.983647] iwlwifi 0000:01:00.0: 00000000: 25268086 00100406 02800029 00000000 e0000004 00000000 00000000 00000000
> > [ 1875.994312] iwlwifi 0000:01:00.0: 00000020: 00000000 00000000 00000000 00148086 00000000 000000c8 00000000 0000012b
> > [ 1876.004835] iwlwifi 0000:01:00.0: iwlwifi device memory mapped registers:
> > [ 1876.011780] iwlwifi 0000:01:00.0: 00000000: 00c89004 00000040 00000000 ba00008b 00000000 00000000 00027e1f 00000000
> > [ 1876.022251] iwlwifi 0000:01:00.0: 00000020: 00000000 0c040005 00000321 d55555d5 d55555d5 d55555d5 80008040 041f0044
> > [ 1876.032714] iwlwifi 0000:01:00.0: iwlwifi device AER capability structure:
> > [ 1876.039694] iwlwifi 0000:01:00.0: 00000000: 14c10001 00000000 00000000 00462031 00000000 00002000 00000000 00000000
> > [ 1876.050219] iwlwifi 0000:01:00.0: 00000020: 00000000 00000000 00000000
> > [ 1876.056838] iwlwifi 0000:01:00.0: iwlwifi parent port (0000:00:00.0) config registers:
> > [ 1876.064933] iwlwifi 0000:00:00.0: 00000000: d02110ee 00100006 06040000 00010000 00000000 00000000 000c0100 00000000
> > [ 1876.075399] iwlwifi 0000:00:00.0: 00000020: e000e000 0001fff1 00000000 00000000 00000000 00000040 00000000 0000012b
> > [ 1876.085869] iwlwifi 0000:01:00.0: FW error in SYNC CMD BINDING_CONTEXT_CMD
> > [ 1876.092773] CPU: 1 PID: 498 Comm: wpa_supplicant Not tainted 4.18.31-yocto-standard #1
> > [ 1876.100680] Hardware name: ********
> > [ 1876.105290] Call trace:
> > [ 1876.107744]  dump_backtrace+0x0/0x158
> > [ 1876.111403]  show_stack+0x24/0x30
> > [ 1876.114723]  dump_stack+0x80/0xa4
> > [ 1876.118064]  iwl_trans_pcie_send_hcmd+0x5d0/0x5e8 [iwlwifi]
> > [ 1876.123649]  iwl_trans_send_cmd+0x68/0x108 [iwlwifi]
> > [ 1876.128644]  iwl_mvm_send_cmd_status+0x44/0xe0 [iwlmvm]
> > [ 1876.133889]  iwl_mvm_send_cmd_pdu_status+0x6c/0x98 [iwlmvm]
> > [ 1876.139480]  iwl_mvm_binding_update+0x148/0x230 [iwlmvm]
> > [ 1876.144809]  iwl_mvm_binding_add_vif+0x5c/0x80 [iwlmvm]
> > [ 1876.150048]  iwl_mvm_start_ap_ibss+0xe0/0x238 [iwlmvm]
> > [ 1876.155268]  ieee80211_start_ap+0x218/0x488 [mac80211]
> > [ 1876.160473]  nl80211_start_ap+0x3f4/0x6a8 [cfg80211]
> > [ 1876.165446]  genl_family_rcv_msg+0x1cc/0x338
> > [ 1876.169718]  genl_rcv_msg+0xa0/0xd8
> > [ 1876.173207]  netlink_rcv_skb+0x60/0x120
> > [ 1876.177043]  genl_rcv+0x3c/0x50
> > [ 1876.180186]  netlink_unicast+0x194/0x210
> > [ 1876.184109]  netlink_sendmsg+0x1a0/0x348
> > [ 1876.188036]  sock_sendmsg+0x34/0x50
> > [ 1876.191523]  ___sys_sendmsg+0x288/0x2c8
> > [ 1876.195357]  __sys_sendmsg+0x7c/0xd0
> > [ 1876.198933]  sys_sendmsg+0x38/0x48
> > [ 1876.202330]  el0_svc_naked+0x30/0x34
> > [ 1876.206366] iwlwifi 0000:01:00.0: Failed to send binding (action:1): -5
> > [ 1876.213092] iwlwifi 0000:01:00.0: Failed to remove MAC context: -5
> > [ 1876.219353] iwlwifi 0000:01:00.0: PHY ctxt cmd error. ret=-5
> > 
> > It looks like the module firmware got an error when trying to set the module in AP in 5GHz. I know there could be some regulatory limitation for IBSS in 5Ghz, but why this does not work for wifi direct.
> > Thanks for your time.
> > @team.
> > 
> -------------------------------------
> linuxwifi@eclists.intel.com
> https://eclists.intel.com/sympa/info/linuxwifi
> Unsubscribe by sending email to sympa@eclists.intel.com with subject "Unsubscribe linuxwifi"


^ permalink raw reply

* [PATCH v2] mac80211: Store max_mtu in ieee80211_hw
From: Wen Gong @ 2019-09-04  8:58 UTC (permalink / raw)
  To: ath10k, johannes; +Cc: linux-wireless

Make it possibly for drivers to adjust the default mat_mtu
by storing it in the hardware struct.

Signed-off-by: Wen Gong <wgong@codeaurora.org>
---
v2: change to set max_mtu to IEEE80211_MAX_DATA_LEN in alloc_hw
 include/net/mac80211.h | 3 +++
 net/mac80211/iface.c   | 2 +-
 net/mac80211/main.c    | 1 +
 3 files changed, 5 insertions(+), 1 deletion(-)

diff --git a/include/net/mac80211.h b/include/net/mac80211.h
index d26da01..8545b03 100644
--- a/include/net/mac80211.h
+++ b/include/net/mac80211.h
@@ -2454,6 +2454,8 @@ enum ieee80211_hw_flags {
  *
  * @weight_multiplier: Driver specific airtime weight multiplier used while
  *	refilling deficit of each TXQ.
+ *
+ * @max_mtu: the max mtu could be set.
  */
 struct ieee80211_hw {
 	struct ieee80211_conf conf;
@@ -2491,6 +2493,7 @@ struct ieee80211_hw {
 	u8 max_nan_de_entries;
 	u8 tx_sk_pacing_shift;
 	u8 weight_multiplier;
+	u32 max_mtu;
 };
 
 static inline bool _ieee80211_hw_check(struct ieee80211_hw *hw,
diff --git a/net/mac80211/iface.c b/net/mac80211/iface.c
index 06aac0a..32d87f0 100644
--- a/net/mac80211/iface.c
+++ b/net/mac80211/iface.c
@@ -1877,7 +1877,7 @@ int ieee80211_if_add(struct ieee80211_local *local, const char *name,
 
 		/* MTU range: 256 - 2304 */
 		ndev->min_mtu = 256;
-		ndev->max_mtu = IEEE80211_MAX_DATA_LEN;
+		ndev->max_mtu = local->hw.max_mtu;
 
 		ret = register_netdevice(ndev);
 		if (ret) {
diff --git a/net/mac80211/main.c b/net/mac80211/main.c
index 85e4162..89a6a09 100644
--- a/net/mac80211/main.c
+++ b/net/mac80211/main.c
@@ -638,6 +638,7 @@ struct ieee80211_hw *ieee80211_alloc_hw_nm(size_t priv_data_len,
 					 IEEE80211_RADIOTAP_VHT_KNOWN_BANDWIDTH;
 	local->hw.uapsd_queues = IEEE80211_DEFAULT_UAPSD_QUEUES;
 	local->hw.uapsd_max_sp_len = IEEE80211_DEFAULT_MAX_SP_LEN;
+	local->hw.max_mtu = IEEE80211_MAX_DATA_LEN;
 	local->user_power_level = IEEE80211_UNSET_POWER_LEVEL;
 	wiphy->ht_capa_mod_mask = &mac80211_ht_capa_mod_mask;
 	wiphy->vht_capa_mod_mask = &mac80211_vht_capa_mod_mask;
-- 
1.9.1


^ permalink raw reply related

* RE: [PATCH] mac80211: Store max_mtu in ieee80211_hw
From: Wen Gong @ 2019-09-04  9:16 UTC (permalink / raw)
  To: Johannes Berg, Wen Gong, ath10k@lists.infradead.org
  Cc: linux-wireless@vger.kernel.org
In-Reply-To: <582e0a7eef96bb7d97fee4bae340ded97fda86a2.camel@sipsolutions.net>

> -----Original Message-----
> From: ath10k <ath10k-bounces@lists.infradead.org> On Behalf Of Johannes
> Berg
> Sent: Wednesday, September 4, 2019 3:04 PM
> To: Wen Gong <wgong@codeaurora.org>; ath10k@lists.infradead.org
> Cc: linux-wireless@vger.kernel.org
> Subject: [EXT] Re: [PATCH] mac80211: Store max_mtu in ieee80211_hw
> 
Patch v2 sent, https://patchwork.kernel.org/patch/11129707/
> _______________________________________________
> ath10k mailing list
> ath10k@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/ath10k

^ permalink raw reply

* QCA6174 ath10k firmware crash on kernel 5.x
From: Timur Kristóf @ 2019-09-04 10:01 UTC (permalink / raw)
  To: ath10k, Kalle Valo; +Cc: linux-wireless@vger.kernel.org

Hi,

I've got a QCA6174 wireless device in my Dell XPS 13 9370. There is a
problematic AP, and every time I connect to this AP, the connection
only works for a couple of hours and then it stops working until I
disable and re-enable the wireless adapter.

Here is the dmesg log:
https://pastebin.com/CnbBSNg3

There is a firmware crash. Then the driver fails to read the firmware
dump.

Note that I've only seen the problem with this specific AP and not
others. Is there any way I can figure out what exactly is it with this
AP that triggers the problem?

Thanks & best regards,
Tim

ps. I'm not on the mailing list, please CC me on your replies.


^ permalink raw reply

* [PATCH 2/2] staging: wilc1000: look for rtc_clk clock
From: Eugen.Hristev @ 2019-09-04 13:34 UTC (permalink / raw)
  To: Adham.Abozaeid, Ajay.Kathat, linux-wireless, devel, linux-kernel
  Cc: Claudiu.Beznea, Eugen.Hristev
In-Reply-To: <1567603548-13355-1-git-send-email-eugen.hristev@microchip.com>

From: Eugen Hristev <eugen.hristev@microchip.com>

If rtc_clk is provided from DT, use it and enable it.
This is optional.
The signal may be hardcoded and no need to be requested,
but if DT provides it, use it.

Signed-off-by: Eugen Hristev <eugen.hristev@microchip.com>
---
 drivers/staging/wilc1000/wilc_sdio.c          | 14 ++++++++++++++
 drivers/staging/wilc1000/wilc_wfi_netdevice.h |  1 +
 2 files changed, 15 insertions(+)

diff --git a/drivers/staging/wilc1000/wilc_sdio.c b/drivers/staging/wilc1000/wilc_sdio.c
index 4c1c81f..41b69fd 100644
--- a/drivers/staging/wilc1000/wilc_sdio.c
+++ b/drivers/staging/wilc1000/wilc_sdio.c
@@ -4,6 +4,7 @@
  * All rights reserved.
  */
 
+#include <linux/clk.h>
 #include <linux/mmc/sdio_func.h>
 #include <linux/mmc/host.h>
 
@@ -151,6 +152,12 @@ static int wilc_sdio_probe(struct sdio_func *func,
 	wilc->dev = &func->dev;
 	wilc->gpio_irq = gpio;
 
+	wilc->rtc_clk = devm_clk_get(&func->card->dev, "rtc_clk");
+	if (PTR_ERR_OR_ZERO(wilc->rtc_clk) == -EPROBE_DEFER)
+		return -EPROBE_DEFER;
+	else if (!IS_ERR(wilc->rtc_clk))
+		clk_prepare_enable(wilc->rtc_clk);
+
 	dev_info(&func->dev, "Driver Initializing success\n");
 	return 0;
 }
@@ -162,6 +169,10 @@ static void wilc_sdio_remove(struct sdio_func *func)
 	/* free the GPIO in module remove */
 	if (wilc->gpio_irq)
 		gpiod_put(wilc->gpio_irq);
+
+	if (!IS_ERR(wilc->rtc_clk))
+		clk_disable_unprepare(wilc->rtc_clk);
+
 	wilc_netdev_cleanup(wilc);
 }
 
@@ -193,6 +204,9 @@ static int wilc_sdio_suspend(struct device *dev)
 	dev_info(dev, "sdio suspend\n");
 	chip_wakeup(wilc);
 
+	if (!IS_ERR(wilc->rtc_clk))
+		clk_disable_unprepare(wilc->rtc_clk);
+
 	if (!wilc->suspend_event) {
 		wilc_chip_sleep_manually(wilc);
 	} else {
diff --git a/drivers/staging/wilc1000/wilc_wfi_netdevice.h b/drivers/staging/wilc1000/wilc_wfi_netdevice.h
index 1e74a08..d8f3ebe 100644
--- a/drivers/staging/wilc1000/wilc_wfi_netdevice.h
+++ b/drivers/staging/wilc1000/wilc_wfi_netdevice.h
@@ -217,6 +217,7 @@ struct wilc {
 	int io_type;
 	s8 mac_status;
 	struct gpio_desc *gpio_irq;
+	struct clk *rtc_clk;
 	bool initialized;
 	int dev_irq_num;
 	int close;
-- 
2.7.4


^ permalink raw reply related

* [PATCH 1/2] staging: dt-bindings: wilc1000: add optional rtc_clk property
From: Eugen.Hristev @ 2019-09-04 13:33 UTC (permalink / raw)
  To: Adham.Abozaeid, Ajay.Kathat, linux-wireless, devel, linux-kernel
  Cc: Claudiu.Beznea, Eugen.Hristev

From: Eugen Hristev <eugen.hristev@microchip.com>

Add bindings for optional rtc clock pin.

Signed-off-by: Eugen Hristev <eugen.hristev@microchip.com>
---
 drivers/staging/wilc1000/microchip,wilc1000,sdio.txt | 8 +++++++-
 drivers/staging/wilc1000/microchip,wilc1000,spi.txt  | 8 ++++++++
 2 files changed, 15 insertions(+), 1 deletion(-)

diff --git a/drivers/staging/wilc1000/microchip,wilc1000,sdio.txt b/drivers/staging/wilc1000/microchip,wilc1000,sdio.txt
index 4f7d1c2..da52359 100644
--- a/drivers/staging/wilc1000/microchip,wilc1000,sdio.txt
+++ b/drivers/staging/wilc1000/microchip,wilc1000,sdio.txt
@@ -10,7 +10,9 @@ Required properties:
 
 Optional:
 - bus-width	:	Number of data lines wired up the slot. Default 1 bit.
-
+- rtc_clk	:	Clock connected on the rtc clock line. Must be assigned
+			a frequency with assigned-clocks property, and must be
+			connected to a clock provider.
 
 Examples:
 mmc1: mmc@fc000000 {
@@ -24,6 +26,10 @@ mmc1: mmc@fc000000 {
 		wilc_sdio@0 {
 			compatible = "microchip,wilc1000-sdio";
 			irq-gpios = <&pioC 27 0>;
+			clocks = <&pck1>;
+			clock-names = "rtc_clk";
+			assigned-clocks = <&pck1>;
+			assigned-clock-rates = <32768>;
 			status = "okay";
 			reg = <0>;
 			bus-width = <4>;
diff --git a/drivers/staging/wilc1000/microchip,wilc1000,spi.txt b/drivers/staging/wilc1000/microchip,wilc1000,spi.txt
index 87db87b..3423693 100644
--- a/drivers/staging/wilc1000/microchip,wilc1000,spi.txt
+++ b/drivers/staging/wilc1000/microchip,wilc1000,spi.txt
@@ -9,6 +9,10 @@ Required properties:
 - reg			: Chip select address of device
 - irq-gpios		: Connect to a host IRQ
 
+Optional:
+- rtc_clk	:	Clock connected on the rtc clock line. Must be assigned
+			a frequency with assigned-clocks property, and must be
+			connected to a clock provider.
 
 Examples:
 
@@ -21,6 +25,10 @@ spi1: spi@fc018000 {
 			spi-max-frequency = <48000000>;
 			reg = <0>;
 			irq-gpios = <&pioC 27 0>;
+			clocks = <&pck1>;
+			clock-names = "rtc_clk";
+			assigned-clocks = <&pck1>;
+			assigned-clock-rates = <32768>;
 			status = "okay";
 		};
 };
-- 
2.7.4


^ permalink raw reply related

* Re: [PATCH 2/7] ath10k: change max RX bundle size from 8 to 32 for sdio
From: Dave Taht @ 2019-09-04 13:34 UTC (permalink / raw)
  To: Wen Gong; +Cc: ath10k@lists.infradead.org, linux-wireless@vger.kernel.org
In-Reply-To: <259d8d7f8c2a4c428ae14ff211c83c1a@aptaiexm02f.ap.qualcomm.com>

Wen Gong <wgong@qti.qualcomm.com> writes:

>> -----Original Message-----
>> From: Dave Taht <dave@taht.net>
>> Sent: Wednesday, September 4, 2019 12:10 AM
>> To: Wen Gong <wgong@qti.qualcomm.com>; ath10k@lists.infradead.org;
>> linux-wireless@vger.kernel.org
>> Subject: [EXT] Re: [PATCH 2/7] ath10k: change max RX bundle size from 8 to
>> 32 for sdio
>> 
>> 
>> In terms of deeply grokking what increasing buffering to achieve high
>> bandwidth on a testbench, vs what it can do to clobber latency in the
>> real world at low bandwidths, I tend to point folk at:
>> 
>> https://www.youtube.com/watch?v=Rb-UnHDw02o&t=25m40s
>> 
>> where I got a whole bunch of hackers to stand up and act like packets
>> in an aggregating FIFO wifi queue.
>> 
>> This key section is only 8 minutes long, and I promise, y'all laugh
>> at least 3 times at the demonstration.
>> 
>> At the time, also, the ath10k was so overbuffered that on one test
>> I could try to start 100 flows, and only get five.
>> 
>> https://lwn.net/Articles/705884/
>> 
>> and on my slides:
>> 
>> https://blog.linuxplumbersconf.org/2016/ocw//system/presentations/3963/
>> original/linuxplumbers_wifi_latency-3Nov.pdf
>> 
> Hi Dave,
> So your mean is change 8  to 32 will impact latency? It will increase latency of rx?

Heh. for rx, in this case, probably not!

I just get twitchy every time folk fiddle with buffer sizes. In one
recent case someone had fiddled with the interrupt polling interval on
something, going from 1ms to 10ms - it saved on cpu, but...
... just trying to make sure folk grok the tradoffs with a bit of
laughter.

carry on!

>
>> 
>> 0xFFFEFFFF

^ permalink raw reply

* [PATCH] rtw88: fix seq_file memory leak
From: Wei Yongjun @ 2019-09-04 14:16 UTC (permalink / raw)
  To: Yan-Hsuan Chuang, Kalle Valo; +Cc: Wei Yongjun, linux-wireless, kernel-janitors

When using single_open(), single_release() should be used instead
of seq_release(), otherwise there is a memory leak.

This is detected by Coccinelle semantic patch.

Fixes: e3037485c68e ("rtw88: new Realtek 802.11ac driver")
Signed-off-by: Wei Yongjun <weiyongjun1@huawei.com>
---
 drivers/net/wireless/realtek/rtw88/debug.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/wireless/realtek/rtw88/debug.c b/drivers/net/wireless/realtek/rtw88/debug.c
index f0ae26018f97..a7d45f4d34c4 100644
--- a/drivers/net/wireless/realtek/rtw88/debug.c
+++ b/drivers/net/wireless/realtek/rtw88/debug.c
@@ -76,7 +76,7 @@ static const struct file_operations file_ops_single_r = {
 	.open = rtw_debugfs_single_open_rw,
 	.read = seq_read,
 	.llseek = seq_lseek,
-	.release = seq_release,
+	.release = single_release,
 };
 
 static const struct file_operations file_ops_single_rw = {




^ permalink raw reply related

* [PATCH] rtlwifi: Fix file release memory leak
From: Wei Yongjun @ 2019-09-04 14:16 UTC (permalink / raw)
  To: Ping-Ke Shih, Kalle Valo; +Cc: Wei Yongjun, linux-wireless, kernel-janitors

When using single_open() for opening, single_release() should be
used instead of seq_release(), otherwise there is a memory leak.

This is detected by Coccinelle semantic patch.

Fixes: 610247f46feb ("rtlwifi: Improve debugging by using debugfs")
Signed-off-by: Wei Yongjun <weiyongjun1@huawei.com>
---
 drivers/net/wireless/realtek/rtlwifi/debug.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/wireless/realtek/rtlwifi/debug.c b/drivers/net/wireless/realtek/rtlwifi/debug.c
index a051de16284d..55db71c766fe 100644
--- a/drivers/net/wireless/realtek/rtlwifi/debug.c
+++ b/drivers/net/wireless/realtek/rtlwifi/debug.c
@@ -88,7 +88,7 @@ static const struct file_operations file_ops_common = {
 	.open = dl_debug_open_common,
 	.read = seq_read,
 	.llseek = seq_lseek,
-	.release = seq_release,
+	.release = single_release,
 };
 
 static int rtl_debug_get_mac_page(struct seq_file *m, void *v)




^ permalink raw reply related

* [PATCH] nl80211: Support mgmt frame unregistrations
From: Denis Kenzior @ 2019-09-04 16:22 UTC (permalink / raw)
  To: linux-wireless; +Cc: Denis Kenzior

Currently nl80211 supports purging management frame registrations
only under the following circumstances:
	- If the underlying wireless device is destroyed
	- If userspace closes the socket associated with that frame
	registration

Thus userspace applications that want to gracefully support changing
interface modes (and thus the set of management frames they're
interested in seeing) must resort to opening multiple genl sockets and
manage these sockets appropriately.  To state another way, it is
currently not possible to write a userspace application that utilizes a
single nl80211 genl socket, instead it must open multiple genl sockets
for multiple wdevs on multiple phys.

This commit introduces two new NL80211 commands:
NL80211_CMD_REGISTER_FRAME2 and NL80211_CMD_UNREGISTER_FRAME.  The
former acts very much like NL80211_CMD_REGISTER_FRAME, except it returns
an NL80211_ATTR_COOKIE with a unique id identifying the management frame
registration.  This cookie can then be used with
NL80211_CMD_UNREGISTER_FRAME to delete a previous registration.

NL80211_CMD_UNREGISTER_FRAME can also be used to remove all frame
registrations currently associated with the calling socket.  This is
done by omitting the NL80211_ATTR_COOKIE attribute.  Only frame
registrations owned by the calling socket can be removed.

NL80211_CMD_REGISTER_FRAME2 was added to keep backwards compatibility
with older clients which rely on NL80211_CMD_REGISTER_FRAME and might
not be able to deal with introduction of a new attribute as a part of
the return value.

Signed-off-by: Denis Kenzior <denkenz@gmail.com>
---
 include/uapi/linux/nl80211.h | 17 ++++++++
 net/wireless/core.h          |  4 +-
 net/wireless/mlme.c          | 37 +++++++++++++++-
 net/wireless/nl80211.c       | 83 +++++++++++++++++++++++++++++++++++-
 4 files changed, 137 insertions(+), 4 deletions(-)

diff --git a/include/uapi/linux/nl80211.h b/include/uapi/linux/nl80211.h
index beee59c831a7..cef7e6920a6d 100644
--- a/include/uapi/linux/nl80211.h
+++ b/include/uapi/linux/nl80211.h
@@ -1101,6 +1101,20 @@
  *	peer MAC address and %NL80211_ATTR_FRAME is used to specify the frame
  *	content. The frame is ethernet data.
  *
+ * @NL80211_CMD_REGISTER_FRAME2: Same as %NL80211_CMD_REGISTER_FRAME,
+ *	except returns an ATTR_COOKIE so that the frame can be unregistered
+ *	Unlike %NL80211_CMD_REGISTER_FRAME, this command requires a frame
+ *	type attribute.  Registration can be dropped
+ *	using %NL80211_CMD_UNREGISTER_FRAME
+ *
+ * @NL80211_CMD_UNREGISTER_FRAME: Unregisters a previously registered frame
+ *	that was registered with %NL80211_CMD_REGISTER_FRAME2.  If
+ *	%NL80211_ATTR_COOKIE is provided, then a single frame registration
+ *	matching that cookie is unregistered.  Otherwise, all frames
+ *	associated with the current socket are unregistered.  Note that this
+ *	command can only affect registrations for a single wdev.  So
+ *	%NL80211_ATTR_IFINDEX or %NL80211_ATTR_WDEV must be provided.
+ *
  * @NL80211_CMD_MAX: highest used command number
  * @__NL80211_CMD_AFTER_LAST: internal use
  */
@@ -1325,6 +1339,9 @@ enum nl80211_commands {
 
 	NL80211_CMD_PROBE_MESH_LINK,
 
+	NL80211_CMD_REGISTER_FRAME2,
+	NL80211_CMD_UNREGISTER_FRAME,
+
 	/* add new commands above here */
 
 	/* used to define NL80211_CMD_MAX below */
diff --git a/net/wireless/core.h b/net/wireless/core.h
index 77556c58d9ac..c81a03fa8d39 100644
--- a/net/wireless/core.h
+++ b/net/wireless/core.h
@@ -385,9 +385,11 @@ void cfg80211_mlme_down(struct cfg80211_registered_device *rdev,
 			struct net_device *dev);
 int cfg80211_mlme_register_mgmt(struct wireless_dev *wdev, u32 snd_pid,
 				u16 frame_type, const u8 *match_data,
-				int match_len);
+				int match_len, u64 cookie);
 void cfg80211_mlme_unreg_wk(struct work_struct *wk);
 void cfg80211_mlme_unregister_socket(struct wireless_dev *wdev, u32 nlpid);
+bool cfg80211_mlme_remove_registrations(struct wireless_dev *wdev,
+					u32 nlportid, u64 cookie);
 void cfg80211_mlme_purge_registrations(struct wireless_dev *wdev);
 int cfg80211_mlme_mgmt_tx(struct cfg80211_registered_device *rdev,
 			  struct wireless_dev *wdev,
diff --git a/net/wireless/mlme.c b/net/wireless/mlme.c
index f9462010575f..3cf189742dfb 100644
--- a/net/wireless/mlme.c
+++ b/net/wireless/mlme.c
@@ -425,6 +425,8 @@ struct cfg80211_mgmt_registration {
 
 	__le16 frame_type;
 
+	u64 cookie;
+
 	u8 match[];
 };
 
@@ -470,7 +472,7 @@ void cfg80211_mlme_unreg_wk(struct work_struct *wk)
 
 int cfg80211_mlme_register_mgmt(struct wireless_dev *wdev, u32 snd_portid,
 				u16 frame_type, const u8 *match_data,
-				int match_len)
+				int match_len, u64 cookie)
 {
 	struct wiphy *wiphy = wdev->wiphy;
 	struct cfg80211_registered_device *rdev = wiphy_to_rdev(wiphy);
@@ -519,6 +521,7 @@ int cfg80211_mlme_register_mgmt(struct wireless_dev *wdev, u32 snd_portid,
 	nreg->nlportid = snd_portid;
 	nreg->frame_type = cpu_to_le16(frame_type);
 	nreg->wdev = wdev;
+	nreg->cookie = cookie;
 	list_add(&nreg->list, &wdev->mgmt_registrations);
 	spin_unlock_bh(&wdev->mgmt_registrations_lock);
 
@@ -567,6 +570,38 @@ void cfg80211_mlme_unregister_socket(struct wireless_dev *wdev, u32 nlportid)
 		wdev->ap_unexpected_nlportid = 0;
 }
 
+bool cfg80211_mlme_remove_registrations(struct wireless_dev *wdev,
+					u32 nlportid, u64 cookie)
+{
+	struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy);
+	struct cfg80211_mgmt_registration *reg, *tmp;
+	bool removed = false;
+
+	spin_lock_bh(&wdev->mgmt_registrations_lock);
+
+	list_for_each_entry_safe(reg, tmp, &wdev->mgmt_registrations, list) {
+		/* always match nlportid so that clients cannot mess with
+		 * entries of other clients
+		 */
+		if (reg->nlportid != nlportid)
+			continue;
+
+		if (cookie && reg->cookie != cookie)
+			continue;
+
+		list_del(&reg->list);
+		removed = true;
+		spin_lock(&rdev->mlme_unreg_lock);
+		list_add_tail(&reg->list, &rdev->mlme_unreg);
+		spin_unlock(&rdev->mlme_unreg_lock);
+	}
+
+	spin_unlock_bh(&wdev->mgmt_registrations_lock);
+	cfg80211_process_mlme_unregistrations(rdev);
+
+	return removed;
+}
+
 void cfg80211_mlme_purge_registrations(struct wireless_dev *wdev)
 {
 	struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy);
diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c
index 3e30e18d1d89..749ededbff19 100644
--- a/net/wireless/nl80211.c
+++ b/net/wireless/nl80211.c
@@ -10464,10 +10464,18 @@ static int nl80211_register_mgmt(struct sk_buff *skb, struct genl_info *info)
 	struct cfg80211_registered_device *rdev = info->user_ptr[0];
 	struct wireless_dev *wdev = info->user_ptr[1];
 	u16 frame_type = IEEE80211_FTYPE_MGMT | IEEE80211_STYPE_ACTION;
+	int err;
+	u64 cookie = 0;
+	struct sk_buff *msg = NULL;
+	void *hdr = NULL;
 
 	if (!info->attrs[NL80211_ATTR_FRAME_MATCH])
 		return -EINVAL;
 
+	if (info->genlhdr->cmd == NL80211_CMD_REGISTER_FRAME2 &&
+	    !info->attrs[NL80211_ATTR_FRAME_TYPE])
+		return -EINVAL;
+
 	if (info->attrs[NL80211_ATTR_FRAME_TYPE])
 		frame_type = nla_get_u16(info->attrs[NL80211_ATTR_FRAME_TYPE]);
 
@@ -10490,9 +10498,64 @@ static int nl80211_register_mgmt(struct sk_buff *skb, struct genl_info *info)
 	if (!rdev->ops->mgmt_tx)
 		return -EOPNOTSUPP;
 
-	return cfg80211_mlme_register_mgmt(wdev, info->snd_portid, frame_type,
+	if (info->genlhdr->cmd == NL80211_CMD_REGISTER_FRAME2) {
+		msg = nlmsg_new(NLMSG_DEFAULT_SIZE, GFP_KERNEL);
+		if (!msg)
+			return -ENOMEM;
+
+		hdr = nl80211hdr_put(msg, info->snd_portid, info->snd_seq, 0,
+				     NL80211_CMD_REGISTER_FRAME2);
+		if (!hdr) {
+			err = -ENOBUFS;
+			goto free_msg;
+		}
+
+		cookie = cfg80211_assign_cookie(rdev);
+	}
+
+	err = cfg80211_mlme_register_mgmt(wdev, info->snd_portid, frame_type,
 			nla_data(info->attrs[NL80211_ATTR_FRAME_MATCH]),
-			nla_len(info->attrs[NL80211_ATTR_FRAME_MATCH]));
+			nla_len(info->attrs[NL80211_ATTR_FRAME_MATCH]),
+			cookie);
+
+	if (info->genlhdr->cmd == NL80211_CMD_REGISTER_FRAME2) {
+		if (err)
+			goto free_msg;
+
+		if (nla_put_u64_64bit(msg, NL80211_ATTR_COOKIE, cookie,
+				      NL80211_ATTR_PAD))
+			goto nla_put_failure;
+
+		genlmsg_end(msg, hdr);
+
+		return genlmsg_reply(msg, info);
+	}
+
+	return err;
+
+ nla_put_failure:
+	err = -ENOBUFS;
+ free_msg:
+	nlmsg_free(msg);
+	return err;
+}
+
+static int nl80211_unregister_mgmt(struct sk_buff *skb, struct genl_info *info)
+{
+	struct wireless_dev *wdev = info->user_ptr[1];
+	u64 cookie = 0;
+
+	if (info->attrs[NL80211_ATTR_COOKIE]) {
+		cookie = nla_get_u64(info->attrs[NL80211_ATTR_COOKIE]);
+		if (!cookie)
+			return -EINVAL;
+	}
+
+	if (!cfg80211_mlme_remove_registrations(wdev, info->snd_portid,
+						cookie))
+		return -ENOENT;
+
+	return 0;
 }
 
 static int nl80211_tx_mgmt(struct sk_buff *skb, struct genl_info *info)
@@ -14283,6 +14346,22 @@ static const struct genl_ops nl80211_ops[] = {
 		.internal_flags = NL80211_FLAG_NEED_WDEV |
 				  NL80211_FLAG_NEED_RTNL,
 	},
+	{
+		.cmd = NL80211_CMD_REGISTER_FRAME2,
+		.validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
+		.doit = nl80211_register_mgmt,
+		.flags = GENL_UNS_ADMIN_PERM,
+		.internal_flags = NL80211_FLAG_NEED_WDEV |
+				  NL80211_FLAG_NEED_RTNL,
+	},
+	{
+		.cmd = NL80211_CMD_UNREGISTER_FRAME,
+		.validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
+		.doit = nl80211_unregister_mgmt,
+		.flags = GENL_UNS_ADMIN_PERM,
+		.internal_flags = NL80211_FLAG_NEED_WDEV |
+				  NL80211_FLAG_NEED_RTNL,
+	},
 	{
 		.cmd = NL80211_CMD_FRAME,
 		.validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
-- 
2.19.2


^ permalink raw reply related

* [PATCH v1] hostap: use %*ph to print small buffer
From: Andy Shevchenko @ 2019-09-04 17:43 UTC (permalink / raw)
  To: Jouni Malinen, Kalle Valo, linux-wireless; +Cc: Andy Shevchenko

Use %*ph format to print small buffer as hex string.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---
 drivers/net/wireless/intersil/hostap/hostap_download.c | 6 ++----
 drivers/net/wireless/intersil/hostap/hostap_plx.c      | 3 +--
 2 files changed, 3 insertions(+), 6 deletions(-)

diff --git a/drivers/net/wireless/intersil/hostap/hostap_download.c b/drivers/net/wireless/intersil/hostap/hostap_download.c
index 4507614a7c5a..8722000b6c27 100644
--- a/drivers/net/wireless/intersil/hostap/hostap_download.c
+++ b/drivers/net/wireless/intersil/hostap/hostap_download.c
@@ -407,10 +407,8 @@ static int prism2_enable_genesis(local_info_t *local, int hcr)
 		       hcr);
 		return 0;
 	} else {
-		printk(KERN_DEBUG "Readback test failed, HCR 0x%02x "
-		       "write %02x %02x %02x %02x read %02x %02x %02x %02x\n",
-		       hcr, initseq[0], initseq[1], initseq[2], initseq[3],
-		       readbuf[0], readbuf[1], readbuf[2], readbuf[3]);
+		printk(KERN_DEBUG "Readback test failed, HCR 0x%02x write %4ph read %4ph\n",
+		       hcr, initseq, readbuf);
 		return 1;
 	}
 }
diff --git a/drivers/net/wireless/intersil/hostap/hostap_plx.c b/drivers/net/wireless/intersil/hostap/hostap_plx.c
index 943070d39b1e..841cfc68ce84 100644
--- a/drivers/net/wireless/intersil/hostap/hostap_plx.c
+++ b/drivers/net/wireless/intersil/hostap/hostap_plx.c
@@ -352,8 +352,7 @@ static int prism2_plx_check_cis(void __iomem *attr_mem, int attr_len,
 	/* read CIS; it is in even offsets in the beginning of attr_mem */
 	for (i = 0; i < CIS_MAX_LEN; i++)
 		cis[i] = readb(attr_mem + 2 * i);
-	printk(KERN_DEBUG "%s: CIS: %02x %02x %02x %02x %02x %02x ...\n",
-	       dev_info, cis[0], cis[1], cis[2], cis[3], cis[4], cis[5]);
+	printk(KERN_DEBUG "%s: CIS: %6ph ...\n", dev_info, cis);
 
 	/* set reasonable defaults for Prism2 cards just in case CIS parsing
 	 * fails */
-- 
2.23.0.rc1


^ permalink raw reply related

* [PATCH v1] brcmfmac: use %*ph to print small buffer
From: Andy Shevchenko @ 2019-09-04 17:50 UTC (permalink / raw)
  To: Arend van Spriel, Franky Lin, Hante Meuleman, Chi-Hsien Lin,
	Wright Feng, linux-wireless, Kalle Valo, brcm80211-dev-list.pdl,
	brcm80211-dev-list
  Cc: Andy Shevchenko

Use %*ph format to print small buffer as hex string.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---
 .../broadcom/brcm80211/brcmfmac/cfg80211.c     | 18 ++++++------------
 1 file changed, 6 insertions(+), 12 deletions(-)

diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
index 5dcaaf65799e..dd6303f5f72e 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
@@ -4222,10 +4222,8 @@ brcmf_parse_vndr_ies(const u8 *vndr_ie_buf, u32 vndr_ie_len,
 
 		vndr_ies->count++;
 
-		brcmf_dbg(TRACE, "** OUI %02x %02x %02x, type 0x%02x\n",
-			  parsed_info->vndrie.oui[0],
-			  parsed_info->vndrie.oui[1],
-			  parsed_info->vndrie.oui[2],
+		brcmf_dbg(TRACE, "** OUI %3ph, type 0x%02x\n",
+			  parsed_info->vndrie.oui,
 			  parsed_info->vndrie.oui_type);
 
 		if (vndr_ies->count >= VNDR_IE_PARSE_LIMIT)
@@ -4349,12 +4347,10 @@ s32 brcmf_vif_set_mgmt_ie(struct brcmf_cfg80211_vif *vif, s32 pktflag,
 		for (i = 0; i < old_vndr_ies.count; i++) {
 			vndrie_info = &old_vndr_ies.ie_info[i];
 
-			brcmf_dbg(TRACE, "DEL ID : %d, Len: %d , OUI:%02x:%02x:%02x\n",
+			brcmf_dbg(TRACE, "DEL ID : %d, Len: %d , OUI:%3ph\n",
 				  vndrie_info->vndrie.id,
 				  vndrie_info->vndrie.len,
-				  vndrie_info->vndrie.oui[0],
-				  vndrie_info->vndrie.oui[1],
-				  vndrie_info->vndrie.oui[2]);
+				  vndrie_info->vndrie.oui);
 
 			del_add_ie_buf_len = brcmf_vndr_ie(curr_ie_buf, pktflag,
 							   vndrie_info->ie_ptr,
@@ -4386,12 +4382,10 @@ s32 brcmf_vif_set_mgmt_ie(struct brcmf_cfg80211_vif *vif, s32 pktflag,
 			remained_buf_len -= (vndrie_info->ie_len +
 					     VNDR_IE_VSIE_OFFSET);
 
-			brcmf_dbg(TRACE, "ADDED ID : %d, Len: %d, OUI:%02x:%02x:%02x\n",
+			brcmf_dbg(TRACE, "ADDED ID : %d, Len: %d, OUI:%3ph\n",
 				  vndrie_info->vndrie.id,
 				  vndrie_info->vndrie.len,
-				  vndrie_info->vndrie.oui[0],
-				  vndrie_info->vndrie.oui[1],
-				  vndrie_info->vndrie.oui[2]);
+				  vndrie_info->vndrie.oui);
 
 			del_add_ie_buf_len = brcmf_vndr_ie(curr_ie_buf, pktflag,
 							   vndrie_info->ie_ptr,
-- 
2.23.0.rc1


^ permalink raw reply related


This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox