Linux wireless drivers development
 help / color / mirror / Atom feed
* Re: [PATCH] net: enable wireless core features with WIRELESS_ALLCONFIG
From: Marcel Holtmann @ 2019-09-06 18:31 UTC (permalink / raw)
  To: Mark Salyzyn
  Cc: linux-kernel, kernel-team, Johannes Berg, David S. Miller,
	linux-wireless, netdev, stable
In-Reply-To: <20190906180551.163714-1-salyzyn@android.com>

Hi Mark,

> In embedded environments the requirements are to be able to pick and
> chose which features one requires built into the kernel.  If an
> embedded environment wants to supports loading modules that have been
> kbuilt out of tree, there is a need to enable hidden configurations
> for core features to provide the API surface for them to load.
> 
> Introduce CONFIG_WIRELESS_ALLCONFIG to select all wireless core
> features by activating all the hidden configuration options, without
> having to specifically select any wireless module(s).
> 
> Signed-off-by: Mark Salyzyn <salyzyn@android.com>
> Cc: kernel-team@android.com
> Cc: Johannes Berg <johannes@sipsolutions.net>
> Cc: "David S. Miller" <davem@davemloft.net>
> Cc: linux-wireless@vger.kernel.org
> Cc: netdev@vger.kernel.org
> Cc: linux-kernel@vger.kernel.org
> Cc: stable@vger.kernel.org # 4.19
> ---
> net/wireless/Kconfig | 14 ++++++++++++++
> 1 file changed, 14 insertions(+)
> 
> diff --git a/net/wireless/Kconfig b/net/wireless/Kconfig
> index 67f8360dfcee..0d32350e1729 100644
> --- a/net/wireless/Kconfig
> +++ b/net/wireless/Kconfig
> @@ -17,6 +17,20 @@ config WEXT_SPY
> config WEXT_PRIV
> 	bool
> 
> +config WIRELESS_ALLCONFIG
> +	bool "allconfig for wireless core"
> +	select WIRELESS_EXT
> +	select WEXT_CORE
> +	select WEXT_PROC
> +	select WEXT_SPY
> +	select WEXT_PRIV
> +	help
> +	  Config option used to enable all the wireless core functionality
> +	  used by modules.
> +
> +	  If you are not building a kernel to be used for a variety of
> +	  out-of-kernel built wireless modules, say N here.
> +

this looks rather legacy Wireless Extension (wext) specific. So it might be better to clearly name the option “legacy” and “wext” to not confuse anybody running an actual modern driver and userspace.

Regards

Marcel


^ permalink raw reply

* [PATCH] ath9k_htc: release allocated buffer if timed out
From: Navid Emamdoost @ 2019-09-06 18:26 UTC (permalink / raw)
  Cc: emamd001, smccaman, kjlu, Navid Emamdoost, QCA ath9k Development,
	Kalle Valo, David S. Miller, linux-wireless, netdev, linux-kernel

In htc_config_pipe_credits, htc_setup_complete, and htc_connect_service
if time out happens, the allocated buffer needs to be released.
Otherwise there will be memory leak.

Signed-off-by: Navid Emamdoost <navid.emamdoost@gmail.com>
---
 drivers/net/wireless/ath/ath9k/htc_hst.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/net/wireless/ath/ath9k/htc_hst.c b/drivers/net/wireless/ath/ath9k/htc_hst.c
index 1bf63a4efb4c..d091c8ebdcf0 100644
--- a/drivers/net/wireless/ath/ath9k/htc_hst.c
+++ b/drivers/net/wireless/ath/ath9k/htc_hst.c
@@ -170,6 +170,7 @@ static int htc_config_pipe_credits(struct htc_target *target)
 	time_left = wait_for_completion_timeout(&target->cmd_wait, HZ);
 	if (!time_left) {
 		dev_err(target->dev, "HTC credit config timeout\n");
+		kfree_skb(skb);
 		return -ETIMEDOUT;
 	}
 
@@ -205,6 +206,7 @@ static int htc_setup_complete(struct htc_target *target)
 	time_left = wait_for_completion_timeout(&target->cmd_wait, HZ);
 	if (!time_left) {
 		dev_err(target->dev, "HTC start timeout\n");
+		kfree_skb(skb);
 		return -ETIMEDOUT;
 	}
 
@@ -277,6 +279,7 @@ int htc_connect_service(struct htc_target *target,
 	if (!time_left) {
 		dev_err(target->dev, "Service connection timeout for: %d\n",
 			service_connreq->service_id);
+		kfree_skb(skb);
 		return -ETIMEDOUT;
 	}
 
-- 
2.17.1


^ permalink raw reply related

* [PATCH] net: enable wireless core features with WIRELESS_ALLCONFIG
From: Mark Salyzyn @ 2019-09-06 18:05 UTC (permalink / raw)
  To: linux-kernel
  Cc: kernel-team, Mark Salyzyn, Johannes Berg, David S. Miller,
	linux-wireless, netdev, stable

In embedded environments the requirements are to be able to pick and
chose which features one requires built into the kernel.  If an
embedded environment wants to supports loading modules that have been
kbuilt out of tree, there is a need to enable hidden configurations
for core features to provide the API surface for them to load.

Introduce CONFIG_WIRELESS_ALLCONFIG to select all wireless core
features by activating all the hidden configuration options, without
having to specifically select any wireless module(s).

Signed-off-by: Mark Salyzyn <salyzyn@android.com>
Cc: kernel-team@android.com
Cc: Johannes Berg <johannes@sipsolutions.net>
Cc: "David S. Miller" <davem@davemloft.net>
Cc: linux-wireless@vger.kernel.org
Cc: netdev@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Cc: stable@vger.kernel.org # 4.19
---
 net/wireless/Kconfig | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/net/wireless/Kconfig b/net/wireless/Kconfig
index 67f8360dfcee..0d32350e1729 100644
--- a/net/wireless/Kconfig
+++ b/net/wireless/Kconfig
@@ -17,6 +17,20 @@ config WEXT_SPY
 config WEXT_PRIV
 	bool
 
+config WIRELESS_ALLCONFIG
+	bool "allconfig for wireless core"
+	select WIRELESS_EXT
+	select WEXT_CORE
+	select WEXT_PROC
+	select WEXT_SPY
+	select WEXT_PRIV
+	help
+	  Config option used to enable all the wireless core functionality
+	  used by modules.
+
+	  If you are not building a kernel to be used for a variety of
+	  out-of-kernel built wireless modules, say N here.
+
 config CFG80211
 	tristate "cfg80211 - wireless configuration API"
 	depends on RFKILL || !RFKILL
-- 
2.23.0.187.g17f5b7556c-goog


^ permalink raw reply related

* Re: [PATCH] mt76: mt7615: enable SCS by default
From: Toke Høiland-Jørgensen @ 2019-09-06 17:44 UTC (permalink / raw)
  To: Lorenzo Bianconi, nbd; +Cc: lorenzo.bianconi, linux-wireless, ryder.lee, royluo
In-Reply-To: <5933942ffd23f71b925cc6be26e9918fd663ed46.1567783646.git.lorenzo@kernel.org>

Lorenzo Bianconi <lorenzo@kernel.org> writes:

> Enable Smart Carrier Sense algorithm by default in order to improve
> performances in a noisy environment

What does that do (the algorithm, that is)? :)

-Toke

^ permalink raw reply

* [RFCv3 3/3] nl80211: Send large new_wiphy events
From: Denis Kenzior @ 2019-09-06 15:43 UTC (permalink / raw)
  To: linux-wireless, johannes; +Cc: Denis Kenzior
In-Reply-To: <20190906154303.9303-1-denkenz@gmail.com>

Send large NEW_WIPHY events on a new multicast group so that clients
that can accept larger messages do not need to round-trip to the kernel
and perform extra filtered wiphy dumps.

A new multicast group is introduced and the large message is sent before
the legacy message.  This way clients that listen on both multicast
groups can ignore duplicate legacy messages if needed.

Signed-off-by: Denis Kenzior <denkenz@gmail.com>
---
 include/uapi/linux/nl80211.h | 31 +++++++++++++++++++++++++++++++
 net/wireless/nl80211.c       | 34 ++++++++++++++++++++++++++++++++--
 2 files changed, 63 insertions(+), 2 deletions(-)

Changes in this version:

- Updated the docs based on Johannes' feedback
- Added WARN_ON in case the large message building fails (e.g. our
  buffer size needs to be increased)
- Minor style fixes based on Johannes' feedback
- Added a missing skb_get to take an extra reference when sending
  NEW/DEL INTERFACE events.

diff --git a/include/uapi/linux/nl80211.h b/include/uapi/linux/nl80211.h
index beee59c831a7..7a125cb4d9d9 100644
--- a/include/uapi/linux/nl80211.h
+++ b/include/uapi/linux/nl80211.h
@@ -50,6 +50,7 @@
 #define NL80211_MULTICAST_GROUP_MLME		"mlme"
 #define NL80211_MULTICAST_GROUP_VENDOR		"vendor"
 #define NL80211_MULTICAST_GROUP_NAN		"nan"
+#define NL80211_MULTICAST_GROUP_CONFIG2		"config2"
 #define NL80211_MULTICAST_GROUP_TESTMODE	"testmode"
 
 #define NL80211_EDMG_BW_CONFIG_MIN	4
@@ -267,8 +268,30 @@
  * @NL80211_CMD_NEW_WIPHY: Newly created wiphy, response to get request
  *	or rename notification. Has attributes %NL80211_ATTR_WIPHY and
  *	%NL80211_ATTR_WIPHY_NAME.
+ *
+ *	Note that when %NL80211_CMD_NEW_WIPHY is being sent as an event, it
+ *	will be multicast on two groups: "config" and "config2".  The messages
+ *	on the two multicast groups will be different.  On "config" multicast
+ *	group, %NL80211_CMD_NEW_WIPHY messages will be 'reduced' size and will
+ *	only contain legacy information.  This is due to historical kernel
+ *	behavior that limited such messages to 4096 bytes.  The "config2"
+ *	multicast group was introduced to support applications that can
+ *	allocate larger buffers and can thus accept new wiphy events with
+ *	the full set of information included.  Messages on the "config2"
+ *	multicast group are sent before the "config" multicast group.
+ *
+ *	There are no limits (outside of netlink protocol limits) on
+ *	message sizes that can be sent over the "config2" multicast group. It
+ *	is assumed that applications utilizing "config2" multicast group
+ *	utilize buffers that are inherently large enough or can utilize
+ *	MSG_PEEK/MSG_TRUNC in the netlink transport in order to allocate big
+ *	enough buffers.
  * @NL80211_CMD_DEL_WIPHY: Wiphy deleted. Has attributes
  *	%NL80211_ATTR_WIPHY and %NL80211_ATTR_WIPHY_NAME.
+ *	Note that when %NL80211_CMD_DEL_WIPHY is being sent as an event, it
+ *	will be multicast on two groups: "config" and "config2".  Messages on
+ *	the "config2" multicast group are sent before the "config" multicast
+ *	group.
  *
  * @NL80211_CMD_GET_INTERFACE: Request an interface's configuration;
  *	either a dump request for all interfaces or a specific get with a
@@ -281,10 +304,18 @@
  *	be sent from userspace to request creation of a new virtual interface,
  *	then requires attributes %NL80211_ATTR_WIPHY, %NL80211_ATTR_IFTYPE and
  *	%NL80211_ATTR_IFNAME.
+ *	Note that when %NL80211_CMD_NEW_INTERFACE is being sent as an event, it
+ *	will be multicast on two groups: "config" and "config2".  Messages on
+ *	the "config2" multicast group are sent before the "config" multicast
+ *	group.
  * @NL80211_CMD_DEL_INTERFACE: Virtual interface was deleted, has attributes
  *	%NL80211_ATTR_IFINDEX and %NL80211_ATTR_WIPHY. Can also be sent from
  *	userspace to request deletion of a virtual interface, then requires
  *	attribute %NL80211_ATTR_IFINDEX.
+ *	Note that when %NL80211_CMD_DEL_INTERFACE is being sent as an event, it
+ *	will be multicast on two groups: "config" and "config2".  Messages on
+ *	the "config2" multicast group are sent before the "config" multicast
+ *	group.
  *
  * @NL80211_CMD_GET_KEY: Get sequence counter information for a key specified
  *	by %NL80211_ATTR_KEY_IDX and/or %NL80211_ATTR_MAC.
diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c
index 03421f66eea3..68f496c0c0a4 100644
--- a/net/wireless/nl80211.c
+++ b/net/wireless/nl80211.c
@@ -46,6 +46,7 @@ enum nl80211_multicast_groups {
 	NL80211_MCGRP_MLME,
 	NL80211_MCGRP_VENDOR,
 	NL80211_MCGRP_NAN,
+	NL80211_MCGRP_CONFIG2,
 	NL80211_MCGRP_TESTMODE /* keep last - ifdef! */
 };
 
@@ -56,6 +57,7 @@ static const struct genl_multicast_group nl80211_mcgrps[] = {
 	[NL80211_MCGRP_MLME] = { .name = NL80211_MULTICAST_GROUP_MLME },
 	[NL80211_MCGRP_VENDOR] = { .name = NL80211_MULTICAST_GROUP_VENDOR },
 	[NL80211_MCGRP_NAN] = { .name = NL80211_MULTICAST_GROUP_NAN },
+	[NL80211_MCGRP_CONFIG2] = { .name = NL80211_MULTICAST_GROUP_CONFIG2 },
 #ifdef CONFIG_NL80211_TESTMODE
 	[NL80211_MCGRP_TESTMODE] = { .name = NL80211_MULTICAST_GROUP_TESTMODE }
 #endif
@@ -1856,6 +1858,7 @@ struct nl80211_dump_wiphy_state {
 	long start;
 	long split_start, band_start, chan_start;
 	bool legacy;
+	bool large_message;
 };
 
 static int nl80211_send_wiphy(struct cfg80211_registered_device *rdev,
@@ -2414,7 +2417,7 @@ static int nl80211_send_wiphy(struct cfg80211_registered_device *rdev,
 
  nla_put_failure:
 	if ((state->legacy && state->split_start < 9) ||
-	    !last_good_pos) {
+	    !last_good_pos || state->large_message) {
 		genlmsg_cancel(msg, hdr);
 		return -EMSGSIZE;
 	}
@@ -14732,14 +14735,37 @@ void nl80211_notify_wiphy(struct cfg80211_registered_device *rdev,
 			  enum nl80211_commands cmd)
 {
 	struct sk_buff *msg;
+	size_t alloc_size;
 	struct nl80211_dump_wiphy_state state = {};
 
 	WARN_ON(cmd != NL80211_CMD_NEW_WIPHY &&
 		cmd != NL80211_CMD_DEL_WIPHY);
 
+	if (cmd == NL80211_CMD_NEW_WIPHY) {
+		state.large_message = true;
+		alloc_size = 8192UL;
+	} else {
+		alloc_size = NLMSG_DEFAULT_SIZE;
+	}
+
+	msg = nlmsg_new(alloc_size, GFP_KERNEL);
+	if (!msg)
+		goto legacy;
+
+	if (WARN_ON(nl80211_send_wiphy(rdev, cmd, msg, 0, 0, 0, &state) < 0)) {
+		nlmsg_free(msg);
+		goto legacy;
+	}
+
+	genlmsg_multicast_netns(&nl80211_fam, wiphy_net(&rdev->wiphy), msg, 0,
+				NL80211_MCGRP_CONFIG2, GFP_KERNEL);
+
+legacy:
+	state.large_message = false;
 	state.legacy = true;
 
-	msg = nlmsg_new(NLMSG_DEFAULT_SIZE, GFP_KERNEL);
+	alloc_size = NLMSG_DEFAULT_SIZE;
+	msg = nlmsg_new(alloc_size, GFP_KERNEL);
 	if (!msg)
 		return;
 
@@ -14767,6 +14793,10 @@ void nl80211_notify_iface(struct cfg80211_registered_device *rdev,
 		return;
 	}
 
+	/* We will be sending the same message twice, grab an extra ref */
+	msg = skb_get(msg);
+	genlmsg_multicast_netns(&nl80211_fam, wiphy_net(&rdev->wiphy), msg, 0,
+				NL80211_MCGRP_CONFIG2, GFP_KERNEL);
 	genlmsg_multicast_netns(&nl80211_fam, wiphy_net(&rdev->wiphy), msg, 0,
 				NL80211_MCGRP_CONFIG, GFP_KERNEL);
 }
-- 
2.19.2


^ permalink raw reply related

* [RFCv3 2/3] nl80211: Support >4096 byte NEW_WIPHY event nlmsg
From: Denis Kenzior @ 2019-09-06 15:43 UTC (permalink / raw)
  To: linux-wireless, johannes; +Cc: Denis Kenzior
In-Reply-To: <20190906154303.9303-1-denkenz@gmail.com>

For historical reasons, NEW_WIPHY messages generated by dumps or
GET_WIPHY commands were limited to 4096 bytes.  This was due to the
fact that the kernel only allocated 4k buffers prior to commit
9063e21fb026 ("netlink: autosize skb lengthes").  Once the sizes of
NEW_WIPHY messages exceeded these sizes, split dumps were introduced.

Any new, non-legacy data was added only to messages using split-dumps
(including filtered dumps).

However, split-dumping has quite a significant overhead.  On cards
tested, split dumps generated message sizes 1.7-1.8x compared to
non-split dumps, while still comfortably fitting into an 8k buffer.  The
kernel now expects userspace to provide 16k buffers by default, and 32k
buffers are possible.

The kernel netlink layer is now much smarter and utilizes certain
heuristics for figuring out what buffer sizes userspace provides, so it
can allocate optimally sized buffers for netlink messages accordingly.
This commit changes the split logic so that messages are packed more
compactly into the (potentially) larger buffers provided by userspace.

If large-enough buffers are provided, then split dumps will generate a
single netlink NEW_WIPHY message for each wiphy being dumped, removing
any overhead.

Signed-off-by: Denis Kenzior <denkenz@gmail.com>
---
 net/wireless/nl80211.c | 222 +++++++++++++++++++++--------------------
 1 file changed, 112 insertions(+), 110 deletions(-)

Changes since last version:

- Patch completely rewritten based on Johannes' feedback.  We now try to
  pack as many attributes as can fit into the current message.  If the
  application uses large enough buffers (typically 8k is sufficient as
  of the time of this writing), then no splitting is even required.
- Rewrote the commit description based on Johannes' git history
  findings.  E.g. the kernel was at fault for the 4096 byte buffer size
  limits and not userspace.
- Patch 3 was dropped as it was no longer required

Other thoughts:

- I tested the split dump with 3k, 4k and 8k userspace buffers and
  things seem to work as expected.
- The code in case '3' is quite complex, but it does try to support a
  message running out of room in the middle of a channel dump and
  restarting from where it left off in the next split message.  Perhaps
  this can be simplified, but it seems this capability is useful.
  Please take extra care when reviewing this.
- I dropped the split and restart logic in case 13 as no current driver
  besides iwlwifi seems to support the attributes here, and the
  attributes appear to be quite small anyway.

diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c
index ff6200fcd492..03421f66eea3 100644
--- a/net/wireless/nl80211.c
+++ b/net/wireless/nl80211.c
@@ -1854,8 +1854,8 @@ static int nl80211_send_pmsr_capa(struct cfg80211_registered_device *rdev,
 struct nl80211_dump_wiphy_state {
 	s64 filter_wiphy;
 	long start;
-	long split_start, band_start, chan_start, capa_start;
-	bool split;
+	long split_start, band_start, chan_start;
+	bool legacy;
 };
 
 static int nl80211_send_wiphy(struct cfg80211_registered_device *rdev,
@@ -1867,8 +1867,9 @@ static int nl80211_send_wiphy(struct cfg80211_registered_device *rdev,
 	struct nlattr *nl_bands, *nl_band;
 	struct nlattr *nl_freqs, *nl_freq;
 	struct nlattr *nl_cmds;
-	enum nl80211_band band;
 	struct ieee80211_channel *chan;
+	void *last_good_pos = 0;
+	void *last_channel_pos;
 	int i;
 	const struct ieee80211_txrx_stypes *mgmt_stypes =
 				rdev->wiphy.mgmt_stypes;
@@ -1939,9 +1940,9 @@ static int nl80211_send_wiphy(struct cfg80211_registered_device *rdev,
 		if ((rdev->wiphy.flags & WIPHY_FLAG_TDLS_EXTERNAL_SETUP) &&
 		    nla_put_flag(msg, NL80211_ATTR_TDLS_EXTERNAL_SETUP))
 			goto nla_put_failure;
+
+		last_good_pos = nlmsg_get_pos(msg);
 		state->split_start++;
-		if (state->split)
-			break;
 		/* fall through */
 	case 1:
 		if (nla_put(msg, NL80211_ATTR_CIPHER_SUITES,
@@ -1986,17 +1987,16 @@ static int nl80211_send_wiphy(struct cfg80211_registered_device *rdev,
 			}
 		}
 
+		last_good_pos = nlmsg_get_pos(msg);
 		state->split_start++;
-		if (state->split)
-			break;
 		/* fall through */
 	case 2:
 		if (nl80211_put_iftypes(msg, NL80211_ATTR_SUPPORTED_IFTYPES,
 					rdev->wiphy.interface_modes))
 				goto nla_put_failure;
+
+		last_good_pos = nlmsg_get_pos(msg);
 		state->split_start++;
-		if (state->split)
-			break;
 		/* fall through */
 	case 3:
 		nl_bands = nla_nest_start_noflag(msg,
@@ -2004,81 +2004,78 @@ static int nl80211_send_wiphy(struct cfg80211_registered_device *rdev,
 		if (!nl_bands)
 			goto nla_put_failure;
 
-		for (band = state->band_start;
-		     band < NUM_NL80211_BANDS; band++) {
+		/* Position in the buffer if we added a set of channel info */
+		last_channel_pos = 0;
+
+		while (state->band_start < NUM_NL80211_BANDS) {
 			struct ieee80211_supported_band *sband;
 
-			sband = rdev->wiphy.bands[band];
+			sband = rdev->wiphy.bands[state->band_start];
 
-			if (!sband)
+			if (!sband) {
+				state->band_start++;
 				continue;
+			}
 
-			nl_band = nla_nest_start_noflag(msg, band);
+			nl_band = nla_nest_start_noflag(msg, state->band_start);
 			if (!nl_band)
-				goto nla_put_failure;
+				goto band_put_failure;
 
-			switch (state->chan_start) {
-			case 0:
-				if (nl80211_send_band_rateinfo(msg, sband))
-					goto nla_put_failure;
-				state->chan_start++;
-				if (state->split)
-					break;
-				/* fall through */
-			default:
-				/* add frequencies */
-				nl_freqs = nla_nest_start_noflag(msg,
-								 NL80211_BAND_ATTR_FREQS);
-				if (!nl_freqs)
-					goto nla_put_failure;
+			if (!state->chan_start &&
+			    nl80211_send_band_rateinfo(msg, sband))
+				goto band_put_failure;
+
+			nl_freqs = nla_nest_start_noflag(msg,
+							 NL80211_BAND_ATTR_FREQS);
+			if (!nl_freqs)
+				goto band_put_failure;
 
-				for (i = state->chan_start - 1;
-				     i < sband->n_channels;
-				     i++) {
-					nl_freq = nla_nest_start_noflag(msg,
-									i);
-					if (!nl_freq)
-						goto nla_put_failure;
+			while (state->chan_start < sband->n_channels) {
+				nl_freq = nla_nest_start_noflag(msg,
+								state->chan_start);
+				if (!nl_freq)
+					goto chan_put_failure;
 
-					chan = &sband->channels[i];
+				chan = &sband->channels[state->chan_start];
 
-					if (nl80211_msg_put_channel(
-							msg, &rdev->wiphy, chan,
-							state->split))
-						goto nla_put_failure;
+				if (nl80211_msg_put_channel(msg, &rdev->wiphy,
+							    chan,
+							    !state->legacy))
+					goto chan_put_failure;
 
-					nla_nest_end(msg, nl_freq);
-					if (state->split)
-						break;
-				}
-				if (i < sband->n_channels)
-					state->chan_start = i + 2;
-				else
-					state->chan_start = 0;
-				nla_nest_end(msg, nl_freqs);
+				nla_nest_end(msg, nl_freq);
+				state->chan_start++;
+				last_channel_pos = nlmsg_get_pos(msg);
 			}
 
+chan_put_failure:
+			if (!last_channel_pos)
+				goto nla_put_failure;
+
+			nlmsg_trim(msg, last_channel_pos);
+			nla_nest_end(msg, nl_freqs);
 			nla_nest_end(msg, nl_band);
 
-			if (state->split) {
-				/* start again here */
-				if (state->chan_start)
-					band--;
+			if (state->chan_start < sband->n_channels)
 				break;
-			}
+
+			state->chan_start = 0;
+			state->band_start++;
 		}
-		nla_nest_end(msg, nl_bands);
 
-		if (band < NUM_NL80211_BANDS)
-			state->band_start = band + 1;
-		else
-			state->band_start = 0;
+band_put_failure:
+		if (!last_channel_pos)
+			goto nla_put_failure;
+
+		nla_nest_end(msg, nl_bands);
 
-		/* if bands & channels are done, continue outside */
-		if (state->band_start == 0 && state->chan_start == 0)
-			state->split_start++;
-		if (state->split)
+		if (state->band_start < NUM_NL80211_BANDS)
 			break;
+
+		state->band_start = 0;
+
+		last_good_pos = nlmsg_get_pos(msg);
+		state->split_start++;
 		/* fall through */
 	case 4:
 		nl_cmds = nla_nest_start_noflag(msg,
@@ -2089,7 +2086,7 @@ static int nl80211_send_wiphy(struct cfg80211_registered_device *rdev,
 		i = nl80211_add_commands_unsplit(rdev, msg);
 		if (i < 0)
 			goto nla_put_failure;
-		if (state->split) {
+		if (!state->legacy) {
 			CMD(crit_proto_start, CRIT_PROTOCOL_START);
 			CMD(crit_proto_stop, CRIT_PROTOCOL_STOP);
 			if (rdev->wiphy.flags & WIPHY_FLAG_HAS_CHANNEL_SWITCH)
@@ -2105,9 +2102,8 @@ static int nl80211_send_wiphy(struct cfg80211_registered_device *rdev,
 #undef CMD
 
 		nla_nest_end(msg, nl_cmds);
+		last_good_pos = nlmsg_get_pos(msg);
 		state->split_start++;
-		if (state->split)
-			break;
 		/* fall through */
 	case 5:
 		if (rdev->ops->remain_on_channel &&
@@ -2123,20 +2119,17 @@ static int nl80211_send_wiphy(struct cfg80211_registered_device *rdev,
 
 		if (nl80211_send_mgmt_stypes(msg, mgmt_stypes))
 			goto nla_put_failure;
+
+		last_good_pos = nlmsg_get_pos(msg);
 		state->split_start++;
-		if (state->split)
-			break;
 		/* fall through */
 	case 6:
 #ifdef CONFIG_PM
-		if (nl80211_send_wowlan(msg, rdev, state->split))
+		if (nl80211_send_wowlan(msg, rdev, !state->legacy))
 			goto nla_put_failure;
-		state->split_start++;
-		if (state->split)
-			break;
-#else
-		state->split_start++;
 #endif
+		last_good_pos = nlmsg_get_pos(msg);
+		state->split_start++;
 		/* fall through */
 	case 7:
 		if (nl80211_put_iftypes(msg, NL80211_ATTR_SOFTWARE_IFTYPES,
@@ -2144,12 +2137,11 @@ static int nl80211_send_wiphy(struct cfg80211_registered_device *rdev,
 			goto nla_put_failure;
 
 		if (nl80211_put_iface_combinations(&rdev->wiphy, msg,
-						   state->split))
+						   !state->legacy))
 			goto nla_put_failure;
 
+		last_good_pos = nlmsg_get_pos(msg);
 		state->split_start++;
-		if (state->split)
-			break;
 		/* fall through */
 	case 8:
 		if ((rdev->wiphy.flags & WIPHY_FLAG_HAVE_AP_SME) &&
@@ -2160,10 +2152,10 @@ static int nl80211_send_wiphy(struct cfg80211_registered_device *rdev,
 		features = rdev->wiphy.features;
 		/*
 		 * We can only add the per-channel limit information if the
-		 * dump is split, otherwise it makes it too big. Therefore
-		 * only advertise it in that case.
+		 * dump is for a non-legacy message, otherwise it makes it too
+		 * big. Therefore only advertise it in that case.
 		 */
-		if (state->split)
+		if (!state->legacy)
 			features |= NL80211_FEATURE_ADVERTISE_CHAN_LIMITS;
 		if (nla_put_u32(msg, NL80211_ATTR_FEATURE_FLAGS, features))
 			goto nla_put_failure;
@@ -2182,19 +2174,19 @@ static int nl80211_send_wiphy(struct cfg80211_registered_device *rdev,
 
 		/*
 		 * Any information below this point is only available to
-		 * applications that can deal with it being split. This
-		 * helps ensure that newly added capabilities don't break
-		 * older tools by overrunning their buffers.
-		 *
-		 * We still increment split_start so that in the split
-		 * case we'll continue with more data in the next round,
-		 * but break unconditionally so unsplit data stops here.
+		 * applications that are not legacy, e.g. ones that requested
+		 * a split-dump or using large buffers.  This helps ensure
+		 * that newly added capabilities don't break older tools by
+		 * overrunning their buffers.
 		 */
-		state->split_start++;
-
-		if (!state->split)
+		if (state->legacy) {
 			state->split_start = 0;
-		break;
+			break;
+		}
+
+		last_good_pos = nlmsg_get_pos(msg);
+		state->split_start++;
+		/* Fall through */
 	case 9:
 		if (rdev->wiphy.extended_capabilities &&
 		    (nla_put(msg, NL80211_ATTR_EXT_CAPA,
@@ -2235,8 +2227,9 @@ static int nl80211_send_wiphy(struct cfg80211_registered_device *rdev,
 			nla_nest_end(msg, attr);
 		}
 
+		last_good_pos = nlmsg_get_pos(msg);
 		state->split_start++;
-		break;
+		/* Fall through */
 	case 10:
 		if (nl80211_send_coalesce(msg, rdev))
 			goto nla_put_failure;
@@ -2251,8 +2244,9 @@ static int nl80211_send_wiphy(struct cfg80211_registered_device *rdev,
 				rdev->wiphy.max_ap_assoc_sta))
 			goto nla_put_failure;
 
+		last_good_pos = nlmsg_get_pos(msg);
 		state->split_start++;
-		break;
+		/* Fall through */
 	case 11:
 		if (rdev->wiphy.n_vendor_commands) {
 			const struct nl80211_vendor_cmd_info *info;
@@ -2287,8 +2281,10 @@ static int nl80211_send_wiphy(struct cfg80211_registered_device *rdev,
 			}
 			nla_nest_end(msg, nested);
 		}
+
+		last_good_pos = nlmsg_get_pos(msg);
 		state->split_start++;
-		break;
+		/* Fall through */
 	case 12:
 		if (rdev->wiphy.flags & WIPHY_FLAG_HAS_CHANNEL_SWITCH &&
 		    nla_put_u8(msg, NL80211_ATTR_MAX_CSA_COUNTERS,
@@ -2329,8 +2325,9 @@ static int nl80211_send_wiphy(struct cfg80211_registered_device *rdev,
 			nla_nest_end(msg, nested);
 		}
 
+		last_good_pos = nlmsg_get_pos(msg);
 		state->split_start++;
-		break;
+		/* Fall through */
 	case 13:
 		if (rdev->wiphy.num_iftype_ext_capab &&
 		    rdev->wiphy.iftype_ext_capab) {
@@ -2341,8 +2338,7 @@ static int nl80211_send_wiphy(struct cfg80211_registered_device *rdev,
 			if (!nested)
 				goto nla_put_failure;
 
-			for (i = state->capa_start;
-			     i < rdev->wiphy.num_iftype_ext_capab; i++) {
+			for (i = 0; i < rdev->wiphy.num_iftype_ext_capab; i++) {
 				const struct wiphy_iftype_ext_capab *capab;
 
 				capab = &rdev->wiphy.iftype_ext_capab[i];
@@ -2361,14 +2357,8 @@ static int nl80211_send_wiphy(struct cfg80211_registered_device *rdev,
 					goto nla_put_failure;
 
 				nla_nest_end(msg, nested_ext_capab);
-				if (state->split)
-					break;
 			}
 			nla_nest_end(msg, nested);
-			if (i < rdev->wiphy.num_iftype_ext_capab) {
-				state->capa_start = i + 1;
-				break;
-			}
 		}
 
 		if (nla_put_u32(msg, NL80211_ATTR_BANDS,
@@ -2397,14 +2387,16 @@ static int nl80211_send_wiphy(struct cfg80211_registered_device *rdev,
 				goto nla_put_failure;
 		}
 
+		last_good_pos = nlmsg_get_pos(msg);
 		state->split_start++;
-		break;
+		/* Fall through */
 	case 14:
 		if (nl80211_send_pmsr_capa(rdev, msg))
 			goto nla_put_failure;
 
+		last_good_pos = nlmsg_get_pos(msg);
 		state->split_start++;
-		break;
+		/* Fall through */
 	case 15:
 		if (rdev->wiphy.akm_suites &&
 		    nla_put(msg, NL80211_ATTR_AKM_SUITES,
@@ -2421,8 +2413,14 @@ static int nl80211_send_wiphy(struct cfg80211_registered_device *rdev,
 	return 0;
 
  nla_put_failure:
-	genlmsg_cancel(msg, hdr);
-	return -EMSGSIZE;
+	if ((state->legacy && state->split_start < 9) ||
+	    !last_good_pos) {
+		genlmsg_cancel(msg, hdr);
+		return -EMSGSIZE;
+	}
+
+	nlmsg_trim(msg, last_good_pos);
+	goto finish;
 }
 
 static int nl80211_dump_wiphy_parse(struct sk_buff *skb,
@@ -2445,7 +2443,7 @@ static int nl80211_dump_wiphy_parse(struct sk_buff *skb,
 		goto out;
 	}
 
-	state->split = tb[NL80211_ATTR_SPLIT_WIPHY_DUMP];
+	state->legacy = !tb[NL80211_ATTR_SPLIT_WIPHY_DUMP];
 	if (tb[NL80211_ATTR_WIPHY])
 		state->filter_wiphy = nla_get_u32(tb[NL80211_ATTR_WIPHY]);
 	if (tb[NL80211_ATTR_WDEV])
@@ -2526,7 +2524,7 @@ static int nl80211_dump_wiphy(struct sk_buff *skb, struct netlink_callback *cb)
 				 * We can then retry with the larger buffer.
 				 */
 				if ((ret == -ENOBUFS || ret == -EMSGSIZE) &&
-				    !skb->len && !state->split &&
+				    !skb->len && state->legacy &&
 				    cb->min_dump_alloc < 4096) {
 					cb->min_dump_alloc = 4096;
 					state->split_start = 0;
@@ -2558,6 +2556,8 @@ static int nl80211_get_wiphy(struct sk_buff *skb, struct genl_info *info)
 	struct cfg80211_registered_device *rdev = info->user_ptr[0];
 	struct nl80211_dump_wiphy_state state = {};
 
+	state.legacy = true;
+
 	msg = nlmsg_new(4096, GFP_KERNEL);
 	if (!msg)
 		return -ENOMEM;
@@ -14737,6 +14737,8 @@ void nl80211_notify_wiphy(struct cfg80211_registered_device *rdev,
 	WARN_ON(cmd != NL80211_CMD_NEW_WIPHY &&
 		cmd != NL80211_CMD_DEL_WIPHY);
 
+	state.legacy = true;
+
 	msg = nlmsg_new(NLMSG_DEFAULT_SIZE, GFP_KERNEL);
 	if (!msg)
 		return;
-- 
2.19.2


^ permalink raw reply related

* [RFCv3 1/3] nl80211: Fix broken non-split wiphy dumps
From: Denis Kenzior @ 2019-09-06 15:43 UTC (permalink / raw)
  To: linux-wireless, johannes; +Cc: Denis Kenzior

If a (legacy) client requested a wiphy dump but did not provide the
NL80211_ATTR_SPLIT_WIPHY_DUMP attribute, the dump was supposed to be
composed of purely non-split NEW_WIPHY messages, with 1 wiphy per
message.  At least this was the intent after commit:
3713b4e364ef ("nl80211: allow splitting wiphy information in dumps")

However, in reality the non-split dumps were broken very shortly after.
Perhaps around commit:
fe1abafd942f ("nl80211: re-add channel width and extended capa advertising")

The reason for the bug is a missing setting of split_start to 0 in the
case of a non-split dump.

Here is a sample non-split dump performed on kernel 4.19, some parts
were cut for brevity:
< Request: Get Wiphy (0x01) len 0 [ack,0x300]
> Result: New Wiphy (0x03) len 3496 [multi]
    Wiphy: 0 (0x00000000)
    Wiphy Name: phy0
    Generation: 1 (0x00000001)
<snip>
> Result: New Wiphy (0x03) len 68 [multi]
    Wiphy: 0 (0x00000000)
    Wiphy Name: phy0
    Generation: 1 (0x00000001)
    Extended Capabilities: len 8
        Capability: bit  2: Extended channel switching
        Capability: bit 62: Opmode Notification
    Extended Capabilities Mask: len 8
        04 00 00 00 00 00 00 40                          .......@
    VHT Capability Mask: len 12
        f0 1f 80 33 ff ff 00 00 ff ff 00 00              ...3........
> Result: New Wiphy (0x03) len 28 [multi]
    Wiphy: 0 (0x00000000)
    Wiphy Name: phy0
    Generation: 1 (0x00000001)
> Result: New Wiphy (0x03) len 28 [multi]
    Wiphy: 0 (0x00000000)
    Wiphy Name: phy0
    Generation: 1 (0x00000001)
> Result: New Wiphy (0x03) len 52 [multi]
    Wiphy: 0 (0x00000000)
    Wiphy Name: phy0
    Generation: 1 (0x00000001)
    Max CSA Counters: len 1
        02                                               .
    Scheduled Scan Maximum Requests: len 4
        01 00 00 00                                      ....
    Extended Features: len 4
        02 02 00 04                                      ....
> Result: New Wiphy (0x03) len 36 [multi]
    Wiphy: 0 (0x00000000)
    Wiphy Name: phy0
    Generation: 1 (0x00000001)
    Reserved: len 4
        00 00 00 00                                      ....
> Complete: Get Wiphy (0x01) len 4 [multi]
    Status: 0

Signed-off-by: Denis Kenzior <denkenz@gmail.com>
---
 net/wireless/nl80211.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c
index 3e30e18d1d89..ff6200fcd492 100644
--- a/net/wireless/nl80211.c
+++ b/net/wireless/nl80211.c
@@ -2191,6 +2191,9 @@ static int nl80211_send_wiphy(struct cfg80211_registered_device *rdev,
 		 * but break unconditionally so unsplit data stops here.
 		 */
 		state->split_start++;
+
+		if (!state->split)
+			state->split_start = 0;
 		break;
 	case 9:
 		if (rdev->wiphy.extended_capabilities &&
-- 
2.19.2


^ permalink raw reply related

* [PATCH] ssb: make array pwr_info_offset static const, makes object smaller
From: Colin King @ 2019-09-06 15:40 UTC (permalink / raw)
  To: Michael Buesch, linux-wireless; +Cc: kernel-janitors, linux-kernel

From: Colin Ian King <colin.king@canonical.com>

Don't populate the array pwr_info_offset on the stack but instead make it
static const. Makes the object code smaller by 207 bytes.

Before:
   text	   data	    bss	    dec	    hex	filename
  26066	   3000	     64	  29130	   71ca	drivers/ssb/pci.o

After:
   text	   data	    bss	    dec	    hex	filename
  25763	   3096	     64	  28923	   70fb	drivers/ssb/pci.o

(gcc version 9.2.1, amd64)

Signed-off-by: Colin Ian King <colin.king@canonical.com>
---
 drivers/ssb/pci.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/ssb/pci.c b/drivers/ssb/pci.c
index da2d2ab8104d..7c3ae52f2b15 100644
--- a/drivers/ssb/pci.c
+++ b/drivers/ssb/pci.c
@@ -595,7 +595,7 @@ static void sprom_extract_r8(struct ssb_sprom *out, const u16 *in)
 {
 	int i;
 	u16 o;
-	u16 pwr_info_offset[] = {
+	static const u16 pwr_info_offset[] = {
 		SSB_SROM8_PWR_INFO_CORE0, SSB_SROM8_PWR_INFO_CORE1,
 		SSB_SROM8_PWR_INFO_CORE2, SSB_SROM8_PWR_INFO_CORE3
 	};
-- 
2.20.1


^ permalink raw reply related

* [PATCH] mt76: mt7615: enable SCS by default
From: Lorenzo Bianconi @ 2019-09-06 15:29 UTC (permalink / raw)
  To: nbd; +Cc: lorenzo.bianconi, linux-wireless, ryder.lee, royluo

Enable Smart Carrier Sense algorithm by default in order to improve
performances in a noisy environment

Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
---
 drivers/net/wireless/mediatek/mt76/mt7615/init.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/wireless/mediatek/mt76/mt7615/init.c b/drivers/net/wireless/mediatek/mt76/mt7615/init.c
index 1104e4c8aaa6..835499979b73 100644
--- a/drivers/net/wireless/mediatek/mt76/mt7615/init.c
+++ b/drivers/net/wireless/mediatek/mt76/mt7615/init.c
@@ -50,7 +50,7 @@ static void mt7615_mac_init(struct mt7615_dev *dev)
 		 MT_TMAC_CTCR0_INS_DDLMT_EN);
 
 	mt7615_mcu_set_rts_thresh(dev, 0x92b);
-	mt7615_mac_set_scs(dev, false);
+	mt7615_mac_set_scs(dev, true);
 
 	mt76_rmw(dev, MT_AGG_SCR, MT_AGG_SCR_NLNAV_MID_PTEC_DIS,
 		 MT_AGG_SCR_NLNAV_MID_PTEC_DIS);
-- 
2.21.0


^ permalink raw reply related

* Re: [PATCH v1] zd1211rw: use %*ph to print small buffer
From: Kalle Valo @ 2019-09-06 14:15 UTC (permalink / raw)
  To: Andy Shevchenko
  Cc: Daniel Drake, Ulrich Kunitz, linux-wireless, Andy Shevchenko
In-Reply-To: <20190904175323.77984-1-andriy.shevchenko@linux.intel.com>

Andy Shevchenko <andriy.shevchenko@linux.intel.com> wrote:

> Use %*ph format to print small buffer as hex string.
> 
> Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>

Patch applied to wireless-drivers-next.git, thanks.

d13b12c30c34 zd1211rw: use %*ph to print small buffer

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

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


^ permalink raw reply

* Re: [PATCH v1] brcmfmac: use %*ph to print small buffer
From: Kalle Valo @ 2019-09-06 14:15 UTC (permalink / raw)
  To: Andy Shevchenko
  Cc: Arend van Spriel, Franky Lin, Hante Meuleman, Chi-Hsien Lin,
	Wright Feng, linux-wireless, brcm80211-dev-list.pdl,
	brcm80211-dev-list, Andy Shevchenko
In-Reply-To: <20190904175052.77596-1-andriy.shevchenko@linux.intel.com>

Andy Shevchenko <andriy.shevchenko@linux.intel.com> wrote:

> Use %*ph format to print small buffer as hex string.
> 
> Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>

Patch applied to wireless-drivers-next.git, thanks.

0e48b86d9a8f brcmfmac: use %*ph to print small buffer

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

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


^ permalink raw reply

* Re: [PATCH v1] hostap: use %*ph to print small buffer
From: Kalle Valo @ 2019-09-06 14:14 UTC (permalink / raw)
  To: Andy Shevchenko; +Cc: Jouni Malinen, linux-wireless, Andy Shevchenko
In-Reply-To: <20190904174321.76826-1-andriy.shevchenko@linux.intel.com>

Andy Shevchenko <andriy.shevchenko@linux.intel.com> wrote:

> Use %*ph format to print small buffer as hex string.
> 
> Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>

Patch applied to wireless-drivers-next.git, thanks.

290890df5a8a hostap: use %*ph to print small buffer

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

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


^ permalink raw reply

* Re: [PATCH 4/8] rtw88: 8822c: add FW IQK support
From: Kalle Valo @ 2019-09-06 14:13 UTC (permalink / raw)
  To: Tony Chuang
  Cc: linux-wireless@vger.kernel.org, briannorris@chromium.org,
	sgruszka@redhat.com
In-Reply-To: <F7CD281DE3E379468C6D07993EA72F84D18C6B3B@RTITMBSVM04.realtek.com.tw>

Tony Chuang <yhchuang@realtek.com> writes:

>> 
>> <yhchuang@realtek.com> wrote:
>> 
>> > From: Yan-Hsuan Chuang <yhchuang@realtek.com>
>> >
>> > Add support for doing IQK in firmware
>> >
>> > Signed-off-by: Yan-Hsuan Chuang <yhchuang@realtek.com>
>> 
>> The commit log does not answer "Why?". What is IQK and how does it help?
>> 
>> No need to resend, I can update the commit log but just let me know what to
>> add.
>> 
>
> Ideally the RF component's I/Q vectors should be orthogonal, but usually they are not.
> So we need to calibrate for the RF components, ex. PA/LNA, ADC/DAC.
>
> And if the I/Q vectors are more orthogonal, the mixed signal will have less deviation.
> This helps with those rates with higher modulation (MCS8-9), because they have more
> strict EVM/SNR requirement. Also the better of the quality of the signal, the longer it
> can propagate, and the better throughput performance we can get.

I added this to patch 4 but there were some warnings so I had drop the
patches. So please send v2 and remember to add this description to patch
4.

-- 
Kalle Valo

^ permalink raw reply

* Re: [PATCH] rtlwifi: Fix file release memory leak
From: Kalle Valo @ 2019-09-06 14:11 UTC (permalink / raw)
  To: Wei Yongjun; +Cc: Ping-Ke Shih, Wei Yongjun, linux-wireless, kernel-janitors
In-Reply-To: <20190904141611.4780-1-weiyongjun1@huawei.com>

Wei Yongjun <weiyongjun1@huawei.com> wrote:

> 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>

Patch applied to wireless-drivers-next.git, thanks.

4c3e48794dec rtlwifi: Fix file release memory leak

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

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


^ permalink raw reply

* Re: [PATCH] rtw88: fix seq_file memory leak
From: Kalle Valo @ 2019-09-06 14:10 UTC (permalink / raw)
  To: Wei Yongjun
  Cc: Yan-Hsuan Chuang, Wei Yongjun, linux-wireless, kernel-janitors
In-Reply-To: <20190904141601.186107-1-weiyongjun1@huawei.com>

Wei Yongjun <weiyongjun1@huawei.com> wrote:

> 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>

Patch applied to wireless-drivers-next.git, thanks.

eb9affaeff70 rtw88: fix seq_file memory leak

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

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


^ permalink raw reply

* Re: [PATCH] hostap: remove set but not used variable 'copied' in prism2_io_debug_proc_read
From: Kalle Valo @ 2019-09-06 14:10 UTC (permalink / raw)
  To: zhong jiang; +Cc: davem, zhongjiang, linux-wireless, netdev, linux-kernel
In-Reply-To: <1567497430-22539-1-git-send-email-zhongjiang@huawei.com>

zhong jiang <zhongjiang@huawei.com> wrote:

> Obviously, variable 'copied' is initialized to zero. But it is not used.
> hence just remove it.
> 
> Signed-off-by: zhong jiang <zhongjiang@huawei.com>

Patch applied to wireless-drivers-next.git, thanks.

64827a6ac049 hostap: remove set but not used variable 'copied' in prism2_io_debug_proc_read

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

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


^ permalink raw reply

* Re: [PATCH V2 1/2] brcmfmac: add stub version of brcmf_debugfs_get_devdir()
From: Kalle Valo @ 2019-09-06 14:09 UTC (permalink / raw)
  To: Rafał Miłecki
  Cc: Arend van Spriel, Franky Lin, Hante Meuleman, Chi-Hsien Lin,
	Wright Feng, Winnie Chang, linux-wireless, brcm80211-dev-list.pdl,
	brcm80211-dev-list, Rafał Miłecki
In-Reply-To: <20190901113436.23665-1-zajec5@gmail.com>

Rafał Miłecki wrote:

> From: Rafał Miłecki <rafal@milecki.pl>
> 
> In case of compiling driver without DEBUG expose a stub function to make
> writing debug code much simpler (no extra conditions). This will allow
> e.g. using debugfs_create_file() without any magic if or #ifdef.
> 
> Signed-off-by: Rafał Miłecki <rafal@milecki.pl>

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

cb34212b1c25 brcmfmac: add stub version of brcmf_debugfs_get_devdir()
2f8c8e62cd50 brcmfmac: add "reset" debugfs entry for testing reset

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

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


^ permalink raw reply

* Re: [PATCH 1/8] rtw88: 8822c: update PHY parameter to v38
From: Kalle Valo @ 2019-09-06 14:06 UTC (permalink / raw)
  To: yhchuang; +Cc: linux-wireless, briannorris, sgruszka
In-Reply-To: <1565174405-2689-2-git-send-email-yhchuang@realtek.com>

<yhchuang@realtek.com> wrote:

> From: Yan-Hsuan Chuang <yhchuang@realtek.com>
> 
> Update PHY hardware parameters to v38.
> 
> Signed-off-by: Yan-Hsuan Chuang <yhchuang@realtek.com>

New warnings:

drivers/net/wireless/realtek/rtw88/phy.c: In function 'rtw_phy_get_dis_dpd_by_rate_diff':
drivers/net/wireless/realtek/rtw88/phy.c:1553:6: warning: this statement may fall through [-Wimplicit-fallthrough=]
   if (DIS_DPD_RATE ## _rate & chip->dpd_ratemask)  \
      ^
drivers/net/wireless/realtek/rtw88/phy.c:1557:2: note: in expansion of macro 'RTW_DPD_RATE_CHECK'
  RTW_DPD_RATE_CHECK(6M);
  ^~~~~~~~~~~~~~~~~~
drivers/net/wireless/realtek/rtw88/phy.c:1552:2: note: here
  case DESC_RATE ## _rate:     \
  ^~~~
drivers/net/wireless/realtek/rtw88/phy.c:1558:2: note: in expansion of macro 'RTW_DPD_RATE_CHECK'
  RTW_DPD_RATE_CHECK(9M);
  ^~~~~~~~~~~~~~~~~~
drivers/net/wireless/realtek/rtw88/phy.c:1553:6: warning: this statement may fall through [-Wimplicit-fallthrough=]
   if (DIS_DPD_RATE ## _rate & chip->dpd_ratemask)  \
      ^
drivers/net/wireless/realtek/rtw88/phy.c:1558:2: note: in expansion of macro 'RTW_DPD_RATE_CHECK'
  RTW_DPD_RATE_CHECK(9M);
  ^~~~~~~~~~~~~~~~~~
drivers/net/wireless/realtek/rtw88/phy.c:1552:2: note: here
  case DESC_RATE ## _rate:     \
  ^~~~
drivers/net/wireless/realtek/rtw88/phy.c:1559:2: note: in expansion of macro 'RTW_DPD_RATE_CHECK'
  RTW_DPD_RATE_CHECK(MCS0);
  ^~~~~~~~~~~~~~~~~~
drivers/net/wireless/realtek/rtw88/phy.c:1553:6: warning: this statement may fall through [-Wimplicit-fallthrough=]
   if (DIS_DPD_RATE ## _rate & chip->dpd_ratemask)  \
      ^
drivers/net/wireless/realtek/rtw88/phy.c:1559:2: note: in expansion of macro 'RTW_DPD_RATE_CHECK'
  RTW_DPD_RATE_CHECK(MCS0);
  ^~~~~~~~~~~~~~~~~~
drivers/net/wireless/realtek/rtw88/phy.c:1552:2: note: here
  case DESC_RATE ## _rate:     \
  ^~~~
drivers/net/wireless/realtek/rtw88/phy.c:1560:2: note: in expansion of macro 'RTW_DPD_RATE_CHECK'
  RTW_DPD_RATE_CHECK(MCS1);
  ^~~~~~~~~~~~~~~~~~
drivers/net/wireless/realtek/rtw88/phy.c:1553:6: warning: this statement may fall through [-Wimplicit-fallthrough=]
   if (DIS_DPD_RATE ## _rate & chip->dpd_ratemask)  \
      ^
drivers/net/wireless/realtek/rtw88/phy.c:1560:2: note: in expansion of macro 'RTW_DPD_RATE_CHECK'
  RTW_DPD_RATE_CHECK(MCS1);
  ^~~~~~~~~~~~~~~~~~
drivers/net/wireless/realtek/rtw88/phy.c:1552:2: note: here
  case DESC_RATE ## _rate:     \
  ^~~~
drivers/net/wireless/realtek/rtw88/phy.c:1561:2: note: in expansion of macro 'RTW_DPD_RATE_CHECK'
  RTW_DPD_RATE_CHECK(MCS8);
  ^~~~~~~~~~~~~~~~~~
drivers/net/wireless/realtek/rtw88/phy.c:1553:6: warning: this statement may fall through [-Wimplicit-fallthrough=]
   if (DIS_DPD_RATE ## _rate & chip->dpd_ratemask)  \
      ^
drivers/net/wireless/realtek/rtw88/phy.c:1561:2: note: in expansion of macro 'RTW_DPD_RATE_CHECK'
  RTW_DPD_RATE_CHECK(MCS8);
  ^~~~~~~~~~~~~~~~~~
drivers/net/wireless/realtek/rtw88/phy.c:1552:2: note: here
  case DESC_RATE ## _rate:     \
  ^~~~
drivers/net/wireless/realtek/rtw88/phy.c:1562:2: note: in expansion of macro 'RTW_DPD_RATE_CHECK'
  RTW_DPD_RATE_CHECK(MCS9);
  ^~~~~~~~~~~~~~~~~~
drivers/net/wireless/realtek/rtw88/phy.c:1553:6: warning: this statement may fall through [-Wimplicit-fallthrough=]
   if (DIS_DPD_RATE ## _rate & chip->dpd_ratemask)  \
      ^
drivers/net/wireless/realtek/rtw88/phy.c:1562:2: note: in expansion of macro 'RTW_DPD_RATE_CHECK'
  RTW_DPD_RATE_CHECK(MCS9);
  ^~~~~~~~~~~~~~~~~~
drivers/net/wireless/realtek/rtw88/phy.c:1552:2: note: here
  case DESC_RATE ## _rate:     \
  ^~~~
drivers/net/wireless/realtek/rtw88/phy.c:1563:2: note: in expansion of macro 'RTW_DPD_RATE_CHECK'
  RTW_DPD_RATE_CHECK(VHT1SS_MCS0);
  ^~~~~~~~~~~~~~~~~~
drivers/net/wireless/realtek/rtw88/phy.c:1553:6: warning: this statement may fall through [-Wimplicit-fallthrough=]
   if (DIS_DPD_RATE ## _rate & chip->dpd_ratemask)  \
      ^
drivers/net/wireless/realtek/rtw88/phy.c:1563:2: note: in expansion of macro 'RTW_DPD_RATE_CHECK'
  RTW_DPD_RATE_CHECK(VHT1SS_MCS0);
  ^~~~~~~~~~~~~~~~~~
drivers/net/wireless/realtek/rtw88/phy.c:1552:2: note: here
  case DESC_RATE ## _rate:     \
  ^~~~
drivers/net/wireless/realtek/rtw88/phy.c:1564:2: note: in expansion of macro 'RTW_DPD_RATE_CHECK'
  RTW_DPD_RATE_CHECK(VHT1SS_MCS1);
  ^~~~~~~~~~~~~~~~~~
drivers/net/wireless/realtek/rtw88/phy.c:1553:6: warning: this statement may fall through [-Wimplicit-fallthrough=]
   if (DIS_DPD_RATE ## _rate & chip->dpd_ratemask)  \
      ^
drivers/net/wireless/realtek/rtw88/phy.c:1564:2: note: in expansion of macro 'RTW_DPD_RATE_CHECK'
  RTW_DPD_RATE_CHECK(VHT1SS_MCS1);
  ^~~~~~~~~~~~~~~~~~
drivers/net/wireless/realtek/rtw88/phy.c:1552:2: note: here
  case DESC_RATE ## _rate:     \
  ^~~~
drivers/net/wireless/realtek/rtw88/phy.c:1565:2: note: in expansion of macro 'RTW_DPD_RATE_CHECK'
  RTW_DPD_RATE_CHECK(VHT2SS_MCS0);
  ^~~~~~~~~~~~~~~~~~
drivers/net/wireless/realtek/rtw88/phy.c:1553:6: warning: this statement may fall through [-Wimplicit-fallthrough=]
   if (DIS_DPD_RATE ## _rate & chip->dpd_ratemask)  \
      ^
drivers/net/wireless/realtek/rtw88/phy.c:1565:2: note: in expansion of macro 'RTW_DPD_RATE_CHECK'
  RTW_DPD_RATE_CHECK(VHT2SS_MCS0);
  ^~~~~~~~~~~~~~~~~~
drivers/net/wireless/realtek/rtw88/phy.c:1552:2: note: here
  case DESC_RATE ## _rate:     \
  ^~~~
drivers/net/wireless/realtek/rtw88/phy.c:1566:2: note: in expansion of macro 'RTW_DPD_RATE_CHECK'
  RTW_DPD_RATE_CHECK(VHT2SS_MCS1);
  ^~~~~~~~~~~~~~~~~~

8 patches set to Changes Requested.

11081855 [1/8] rtw88: 8822c: update PHY parameter to v38
11081853 [2/8] rtw88: 8822c: update pwr_seq to v13
11081843 [3/8] rtw88: 8822c: Enable interrupt migration
11081851 [PATCH 4/8] rtw88: 8822c: add FW IQK support
11081857 [5/8] rtw88: 8822c: add SW DPK support
11081845 [6/8] rtw88: move IQK/DPK into phy_calibration
11081849 [7/8] rtw88: add dynamic cck pd mechanism
11081847 [8/8] rtw88: allows to receive AMSDU in AMPDU

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

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


^ permalink raw reply

* Re: pull request: mt76 2019-09-05
From: Kalle Valo @ 2019-09-06 13:39 UTC (permalink / raw)
  To: Felix Fietkau; +Cc: linux-wireless
In-Reply-To: <9ff2d7b9-e014-ba60-5872-289765ac3a7f@nbd.name>

Felix Fietkau <nbd@nbd.name> writes:

> here's my first pull request for 5.4
>
> - Felix
>
> The following changes since commit 84b0b66352470e6491c06159735ac916dc69a2ef:
>
>   zd1211rw: zd_usb: Use struct_size() helper (2019-09-03 16:45:35 +0300)
>
> are available in the Git repository at:
>
>   https://github.com/nbd168/wireless tags/mt76-for-kvalo-2019-09-05
>
> for you to fetch changes up to 0e6a29e477f3905ceba37d5ec545e5927e047bc4:
>
>   mt76: mt7615: add support to read temperature from mcu (2019-09-05 18:14:15 +0200)
>
> ----------------------------------------------------------------
> mt76 patches for 5.4
>
> * beacon tx fix for mt76x02
> * sparse/checkpatch warning fixes
> * DFS pattern detector for mt7615 (DFS channels not enabled yet)
> * CSA support for mt7615
> * mt7615 cleanup/fixes
> * mt7615 rate control improvements
> * usb fixes
> * mt7615 powersave buffering fix
> * new device support for mt76x0
> * support for more ciphers in mt7615
> * watchdog time fixes
> * smart carrier sense on mt7615
> * survey support on mt7615
> * multiple interfaces on mt76x02u
> * calibration data fix for mt7615
> * fix for sending BAR after disassoc
>
> ----------------------------------------------------------------

Pulled, thanks Felix.

-- 
Kalle Valo

^ permalink raw reply

* pull-request: iwlwifi-next 2019-09-06
From: Luca Coelho @ 2019-09-06 13:22 UTC (permalink / raw)
  To: kvalo; +Cc: linux-wireless, linuxwifi, david.e.box, joe.konno

[-- Attachment #1: Type: text/plain, Size: 13110 bytes --]

Hi Kalle,

Here's a batch of patches intended for v5.4.  This includes the last
patchset 4 patchsets I sent.  Usual development work.  More details
about the contents in the tag
description.

I pushed this to my pending branch and I got results from kbuildbot to
some of the series, but I didn't get any results yet from the two last
v2 series I sent.  I'll let you know if I get any results in the next
couple of days.

Please let me know if there are any issues.

Cheers,
Luca.


The following changes since commit a18da8f6194978c2b32a8367fb0df81cc6417848:

  Merge tag 'mt76-for-kvalo-2019-09-05' of https://github.com/nbd168/wireless (2019-09-06 11:59:32 +0300)

are available in the Git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/iwlwifi/iwlwifi-next.git tags/iwlwifi-next-for-kalle-2019-09-06

for you to fetch changes up to 787350ef8d8044754582e79d28a0d5ef4df08ba4:

  iwlwifi: dbg: remove iwl_fw_cancel_dumps function (2019-09-06 15:52:07 +0300)

----------------------------------------------------------------
Patches intended for v5.4

* Remove (broken) d0i3 support;
* Debug infrastructure work continues;
* Bump support FW API version to 50;
* Fix for the SN value in certain suspend/resume situations;
* Some work on new FW scan APIs;
* Work on LTR FW APIs;
* New FW channel-switch support;
* Support new ACPI value for per-platform antenna gain;
* Support for single antenna diversity;
* Support for new WoWLAN FW API;
* Initial refactoring of the device selection code;
* A bunch of clean-ups;
* Other small fixes and improvements;

----------------------------------------------------------------
Alex Malamud (2):
      iwlwifi: LTR updates
      iwlwifi: Set w-pointer upon resume according to SN

Ayala Beker (2):
      iwlwifi: scan: add support for new scan request command version
      iwlwifi: scan: don't pass large argument by value

Beker Ayala (1):
      iwlwifi: mvm: fix scan config command size

Christoph Hellwig (1):
      iwlwifi: stop passing bogus gfp flags arguments to dma_alloc_coherent

Emmanuel Grumbach (20):
      iwlwifi: mvm: remove redundant condition in iwl_mvm_set_hw_rfkill_state
      iwlwifi: mvm: start to remove the code for d0i3
      iwlwifi: remove all the d0i3 references
      iwlwifi: mvm: remove the tx defer for d0i3
      iwlwifi: mvm: remove the d0i3 entry/exit flow
      iwlwifi: mvm: iwl_mvm_wowlan_config_key_params is for wowlan only
      iwlwifi: mvm: remove d0i3_ap_sta_id
      iwlwifi: mvm: remove iwl_mvm_update_d0i3_power_mode
      iwlwifi: mvm: remove last leftovers of d0i3
      iwlwifi: remove CMD_HIGH_PRIO
      iwlwifi: trans: remove suspending flag
      iwlwifi: remove the code under IWLWIFI_PCIE_RTPM
      iwlwifi: remove runtime_pm_mode
      iwlwifi: remove the opmode's d0i3 handlers
      iwlwifi: pcie: remove the refs / unrefs from the transport
      iwlwifi: pcie: remove some more d0i3 code from the transport
      iwlwifi: remove the d0i3 related module parameters
      iwlwifi: remove pm_runtime completely
      iwlwifi: mvm: simplify the channel switch flow for newer firmware
      iwlwifi: mvm: don't log un-decrypted frames

Gil Adam (1):
      iwlwifi: support per-platform antenna gain

Haim Dreyfuss (4):
      iwlwifi: remove unused regdb_ptrs allocation
      iwlwifi: add support for suspend-resume flow for new device generation
      iwlwifi: add sta_id to WOWLAN_CONFIG_CMD
      iwlwifi: mvm: add support for single antenna diversity

Hariprasad Kelam (1):
      iwlwifi: fix warning iwl-trans.h is included more than once

Ilan Peer (1):
      iwlwifi: mvm: Block 26-tone RU OFDMA transmissions

Ilia Lin (1):
      iwlwifi: Send DQA enable command only if TVL is on

Johannes Berg (5):
      iwlwifi: mvm: remove unnecessary forward declarations
      iwlwifi: mvm: use FW thermal monitoring regardless of CONFIG_THERMAL
      iwlwifi: api: fix FTM struct documentation
      iwlwifi: mvm: drop BA sessions on too many old-SN frames
      iwlwifi: mvm: handle BAR_FRAME_RELEASE (0xc2) notification

Luca Coelho (12):
      iwlwifi: bump FW API to 49 for 22000 series
      iwlwifi: mvm: remove check for lq_sta in __iwl_mvm_rs_tx_status()
      iwlwifi: bump FW API to 50 for 22000 series
      iwlwifi: remove duplicate FW string definitions
      iwlwifi: remove unnecessary IWL_DEVICE_AX200_COMMON definition
      iwlwifi: separate elements from cfg that are needed by trans_alloc
      iwlwifi: pcie: use the cfg we passed to iwl_trans_pcie_alloc()
      iwlwifi: pcie: move some cfg mangling from trans_pcie_alloc to probe
      iwlwifi: pcie: set iwl_trans->cfg later in the probe function
      iwlwifi: pass the iwl_config_trans_params when needed
      iwlwifi: add a pointer to the trans_cfg directly in trans
      iwlwifi: always access the trans configuration via trans

Mordechay Goodstein (1):
      iwlwifi: mvm: name magic numbers with enum

Shahar S Matityahu (24):
      iwlwifi: dbg: move monitor recording functionality from header file
      iwlwifi: dbg: move debug recording stop from trans to op mode
      iwlwifi: dbg: support debug recording suspend resume command
      iwlwifi: add ldbg config cmd debug print
      iwlwifi: dbg_ini: align dbg tlv functions names to a single format
      iwlwifi: dbg: add debug periphery registers to 9000 device family
      iwlwifi: dbg_ini: maintain buffer allocations from trans instead of TLVs buffer
      iwlwifi: dbg_ini: use linked list to store debug TLVs
      iwlwifi: dbg_ini: remove periphery phy and aux regions handling
      iwlwifi: dbg_ini: use function to check if ini dbg mode is on
      iwlwifi: dbg_ini: verify debug TLVs at allocation phase
      iwlwifi: dbg_ini: remove debug flow TLV
      iwlwifi: dbg: align wrt log prints to the same format
      iwlwifi: dbg_ini: separate cfg and dump flows to different modules
      iwlwifi: dbg_ini: use linked list for dump TLVs during dump creation
      iwlwifi: dbg_ini: move tx fifo data into fw runtime
      iwlwifi: dbg_ini: make a single ops struct for paging collect
      iwlwifi: dbg_ini: use regions ops array instead of switch case in dump flow
      iwlwifi: add iwl_tlv_array_len()
      iwlwifi: dbg_ini: remove apply point, switch to time point API
      iwlwifi: fw api: add DRAM buffer allocation command
      iwlwifi: dbg_ini: fix dump structs doc
      iwlwifi: dbg_ini: remove periodic trigger
      iwlwifi: dbg: remove iwl_fw_cancel_dumps function

Shaul Triebitz (2):
      iwlwifi: mvm: add the skb length to a print
      iwlwifi: pass the iwl_trans instead of cfg to some functions

Tova Mussai (2):
      iwlwifi: allocate bigger nvm data in case of UHB
      iwlwifi: mvm: look for the first supported channel when add/remove phy ctxt

 drivers/net/wireless/intel/iwlwifi/Kconfig               |   14 --
 drivers/net/wireless/intel/iwlwifi/cfg/1000.c            |   14 +-
 drivers/net/wireless/intel/iwlwifi/cfg/2000.c            |   26 +--
 drivers/net/wireless/intel/iwlwifi/cfg/22000.c           |   46 ++--
 drivers/net/wireless/intel/iwlwifi/cfg/5000.c            |   18 +-
 drivers/net/wireless/intel/iwlwifi/cfg/6000.c            |   44 ++--
 drivers/net/wireless/intel/iwlwifi/cfg/7000.c            |   10 +-
 drivers/net/wireless/intel/iwlwifi/cfg/8000.c            |   10 +-
 drivers/net/wireless/intel/iwlwifi/cfg/9000.c            |   10 +-
 drivers/net/wireless/intel/iwlwifi/dvm/devices.c         |    3 +-
 drivers/net/wireless/intel/iwlwifi/dvm/led.c             |    5 +-
 drivers/net/wireless/intel/iwlwifi/dvm/mac80211.c        |    4 +-
 drivers/net/wireless/intel/iwlwifi/dvm/main.c            |   12 +-
 drivers/net/wireless/intel/iwlwifi/dvm/power.c           |    3 +-
 drivers/net/wireless/intel/iwlwifi/dvm/tx.c              |    5 +-
 drivers/net/wireless/intel/iwlwifi/fw/acpi.h             |   12 +
 drivers/net/wireless/intel/iwlwifi/fw/api/commands.h     |    7 +
 drivers/net/wireless/intel/iwlwifi/fw/api/d3.h           |    6 +-
 drivers/net/wireless/intel/iwlwifi/fw/api/dbg-tlv.h      |  102 +++++---
 drivers/net/wireless/intel/iwlwifi/fw/api/debug.h        |   83 ++++---
 drivers/net/wireless/intel/iwlwifi/fw/api/location.h     |    4 +-
 drivers/net/wireless/intel/iwlwifi/fw/api/mac.h          |    4 +
 drivers/net/wireless/intel/iwlwifi/fw/api/phy.h          |    7 +
 drivers/net/wireless/intel/iwlwifi/fw/api/power.h        |   12 +
 drivers/net/wireless/intel/iwlwifi/fw/api/rs.h           |   18 +-
 drivers/net/wireless/intel/iwlwifi/fw/api/rx.h           |   32 +++
 drivers/net/wireless/intel/iwlwifi/fw/api/scan.h         |   55 ++++-
 drivers/net/wireless/intel/iwlwifi/fw/dbg.c              | 1155 +++++++++++++++++++++++++++++--------------------------------------------------------------
 drivers/net/wireless/intel/iwlwifi/fw/dbg.h              |  121 +---------
 drivers/net/wireless/intel/iwlwifi/fw/error-dump.h       |   38 ++-
 drivers/net/wireless/intel/iwlwifi/fw/file.h             |   29 ++-
 drivers/net/wireless/intel/iwlwifi/fw/img.h              |    9 -
 drivers/net/wireless/intel/iwlwifi/fw/init.c             |    2 -
 drivers/net/wireless/intel/iwlwifi/fw/paging.c           |    6 +-
 drivers/net/wireless/intel/iwlwifi/fw/runtime.h          |   23 +-
 drivers/net/wireless/intel/iwlwifi/fw/smem.c             |    2 +-
 drivers/net/wireless/intel/iwlwifi/iwl-config.h          |   51 ++--
 drivers/net/wireless/intel/iwlwifi/iwl-dbg-tlv.c         |  236 ++++++++-----------
 drivers/net/wireless/intel/iwlwifi/iwl-dbg-tlv.h         |   36 +--
 drivers/net/wireless/intel/iwlwifi/iwl-devtrace.h        |    1 -
 drivers/net/wireless/intel/iwlwifi/iwl-drv.c             |   30 +--
 drivers/net/wireless/intel/iwlwifi/iwl-eeprom-parse.c    |   21 +-
 drivers/net/wireless/intel/iwlwifi/iwl-eeprom-parse.h    |    4 +-
 drivers/net/wireless/intel/iwlwifi/iwl-eeprom-read.c     |   14 +-
 drivers/net/wireless/intel/iwlwifi/iwl-fh.h              |    6 +-
 drivers/net/wireless/intel/iwlwifi/iwl-io.c              |   21 +-
 drivers/net/wireless/intel/iwlwifi/iwl-io.h              |   18 +-
 drivers/net/wireless/intel/iwlwifi/iwl-modparams.h       |    9 +-
 drivers/net/wireless/intel/iwlwifi/iwl-nvm-parse.c       |   60 +++--
 drivers/net/wireless/intel/iwlwifi/iwl-op-mode.h         |   27 +--
 drivers/net/wireless/intel/iwlwifi/iwl-prph.h            |    5 +
 drivers/net/wireless/intel/iwlwifi/iwl-trans.c           |   16 --
 drivers/net/wireless/intel/iwlwifi/iwl-trans.h           |  150 +++++-------
 drivers/net/wireless/intel/iwlwifi/mvm/constants.h       |    1 +
 drivers/net/wireless/intel/iwlwifi/mvm/d3.c              |  224 ++++--------------
 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c         |  154 ++++---------
 drivers/net/wireless/intel/iwlwifi/mvm/fw.c              |  183 ++++++++++++---
 drivers/net/wireless/intel/iwlwifi/mvm/led.c             |    6 +-
 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c        |    9 +-
 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c        |  424 +++++++++-------------------------
 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h             |  150 +++---------
 drivers/net/wireless/intel/iwlwifi/mvm/nvm.c             |    4 +-
 drivers/net/wireless/intel/iwlwifi/mvm/ops.c             |  480 ++------------------------------------
 drivers/net/wireless/intel/iwlwifi/mvm/phy-ctxt.c        |   11 +-
 drivers/net/wireless/intel/iwlwifi/mvm/power.c           |   82 +------
 drivers/net/wireless/intel/iwlwifi/mvm/rs-fw.c           |   19 +-
 drivers/net/wireless/intel/iwlwifi/mvm/rs.c              |    8 +-
 drivers/net/wireless/intel/iwlwifi/mvm/rx.c              |   18 +-
 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c            |  115 ++++++++-
 drivers/net/wireless/intel/iwlwifi/mvm/scan.c            |   98 +++++---
 drivers/net/wireless/intel/iwlwifi/mvm/sta.c             |   29 +--
 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c            |    9 -
 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c      |    8 +-
 drivers/net/wireless/intel/iwlwifi/mvm/tt.c              |   12 +-
 drivers/net/wireless/intel/iwlwifi/mvm/tx.c              |    9 +-
 drivers/net/wireless/intel/iwlwifi/mvm/utils.c           |   19 +-
 drivers/net/wireless/intel/iwlwifi/pcie/ctxt-info-gen3.c |    4 +-
 drivers/net/wireless/intel/iwlwifi/pcie/drv.c            |  326 ++++++++------------------
 drivers/net/wireless/intel/iwlwifi/pcie/internal.h       |   38 +--
 drivers/net/wireless/intel/iwlwifi/pcie/rx.c             |   77 ++++---
 drivers/net/wireless/intel/iwlwifi/pcie/trans-gen2.c     |   19 +-
 drivers/net/wireless/intel/iwlwifi/pcie/trans.c          |  380 ++++++++++++------------------
 drivers/net/wireless/intel/iwlwifi/pcie/tx-gen2.c        |   52 +----
 drivers/net/wireless/intel/iwlwifi/pcie/tx.c             |  176 ++++++--------
 84 files changed, 2167 insertions(+), 3633 deletions(-)

[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply

* Re: pull-request: wireless-drivers 2019-09-05
From: David Miller @ 2019-09-06 13:22 UTC (permalink / raw)
  To: kvalo; +Cc: linux-wireless, netdev, linux-kernel
In-Reply-To: <87k1amluae.fsf@kamboji.qca.qualcomm.com>

From: Kalle Valo <kvalo@codeaurora.org>
Date: Thu, 05 Sep 2019 16:58:01 +0300

> here's a pull request to net tree for v5.3, more info below. Please let
> me know if there are any problems.

Pulled, thanks Kalle.

^ permalink raw reply

* [PATCH] mt76: mt76x0e: make array mt76x0_chan_map static const, makes object smaller
From: Colin King @ 2019-09-06 12:19 UTC (permalink / raw)
  To: Felix Fietkau, Lorenzo Bianconi, Ryder Lee, Roy Luo, Kalle Valo,
	David S . Miller, Matthias Brugger, linux-wireless, netdev,
	linux-arm-kernel, linux-mediatek
  Cc: kernel-janitors, linux-kernel

From: Colin Ian King <colin.king@canonical.com>

Don't populate the array mt76x0_chan_map on the stack but instead make it
static const. Makes the object code smaller by 80 bytes.

Before:
   text	   data	    bss	    dec	    hex	filename
   7685	   1192	      0	   8877	   22ad	mediatek/mt76/mt76x0/eeprom.o

After:
   text	   data	    bss	    dec	    hex	filename
   7541	   1256	      0	   8797	   225d	mediatek/mt76/mt76x0/eeprom.o

(gcc version 9.2.1, amd64)

Signed-off-by: Colin Ian King <colin.king@canonical.com>
---
 drivers/net/wireless/mediatek/mt76/mt76x0/eeprom.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/wireless/mediatek/mt76/mt76x0/eeprom.c b/drivers/net/wireless/mediatek/mt76/mt76x0/eeprom.c
index 9d4426f6905f..96368fac4228 100644
--- a/drivers/net/wireless/mediatek/mt76/mt76x0/eeprom.c
+++ b/drivers/net/wireless/mediatek/mt76/mt76x0/eeprom.c
@@ -212,7 +212,7 @@ void mt76x0_get_tx_power_per_rate(struct mt76x02_dev *dev,
 void mt76x0_get_power_info(struct mt76x02_dev *dev,
 			   struct ieee80211_channel *chan, s8 *tp)
 {
-	struct mt76x0_chan_map {
+	static const struct mt76x0_chan_map {
 		u8 chan;
 		u8 offset;
 	} chan_map[] = {
-- 
2.20.1


^ permalink raw reply related

* Re: [PATCH] rtl8xxxu: add bluetooth co-existence support for single antenna
From: Kalle Valo @ 2019-09-06 11:40 UTC (permalink / raw)
  To: Chris Chiu; +Cc: linux-wireless
In-Reply-To: <CAB4CAwfT58Twi-TdtyDMRx+vBQeJg6G5tnyxxC=eRZM14JykHQ@mail.gmail.com>

(please don't drop linux-wireless, I don't normally reply to private email)

Chris Chiu <chiu@endlessm.com> writes:

> On Fri, Sep 6, 2019 at 3:17 PM Kalle Valo <kvalo@codeaurora.org> wrote:
>>
>> Chris Chiu <chiu@endlessm.com> writes:
>>
>> > Gentle ping. Cheers.
>>
>> Please edit your quotes. Including the full patch in quotes makes my use
>> of patchwork horrible:
>>
>> https://patchwork.kernel.org/patch/11127227/
>
>     Sorry that I don't really get what you mean about the quote
>problem. Can you give me an example that I can follow?

See what I did. I didn't include hundreds of lines of unnecessary
context from your previous email, instead I edited all that out to keep
my mail short and precise. This is really important for fluent email
discussions, as not all email clients filter out quotes automatically.

Also I would assume there's some kernel newbie documentation somewhere,
maybe others can help or at least google should.


-- 
Kalle Valo

^ permalink raw reply

* [PATCH] ath10k: remove the warning of sdio not full support
From: Wen Gong @ 2019-09-06 10:55 UTC (permalink / raw)
  To: ath10k; +Cc: linux-wireless

Recently, it has the basic feature of sdio tested success, so remove
it.

Tested with QCA6174 SDIO with firmware
WLAN.RMH.4.4.1-00017-QCARMSWP-1.

Signed-off-by: Wen Gong <wgong@codeaurora.org>
---
 drivers/net/wireless/ath/ath10k/sdio.c | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/drivers/net/wireless/ath/ath10k/sdio.c b/drivers/net/wireless/ath/ath10k/sdio.c
index 8ed4fbd..0801215 100644
--- a/drivers/net/wireless/ath/ath10k/sdio.c
+++ b/drivers/net/wireless/ath/ath10k/sdio.c
@@ -2073,9 +2073,6 @@ static int ath10k_sdio_probe(struct sdio_func *func,
 		goto err_free_wq;
 	}
 
-	/* TODO: remove this once SDIO support is fully implemented */
-	ath10k_warn(ar, "WARNING: ath10k SDIO support is work-in-progress, problems may arise!\n");
-
 	return 0;
 
 err_free_wq:
-- 
1.9.1


^ permalink raw reply related

* [PATCH] CREDITS: Update email address
From: Luis Correia @ 2019-09-06  8:55 UTC (permalink / raw)
  To: linux-wireless

Signed-off-by: Luis Correia <luisfcorreia@gmail.com>

---

diff --git a/CREDITS b/CREDITS
index a738760..8b67a85 100644
--- a/CREDITS
+++ b/CREDITS
@@ -751,7 +751,7 @@ S: Santa Cruz, California
 S: USA

 N: Luis Correia
-E: lfcorreia@users.sf.net
+E: luisfcorreia@gmail.com
 D: Ralink rt2x00 WLAN driver
 S: Belas, Portugal

^ 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