Browse Source

Merge tag 'mac80211-for-davem-2018-03-02' of git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211

Johannes Berg says:

====================
Three more patches:
 * fix for a regression in 4-addr mode with fast-RX
 * fix for a Kconfig problem with the new regdb
 * fix for the long-standing TCP performance issue in
   wifi using the new sk_pacing_shift_update()
====================

Signed-off-by: David S. Miller <davem@davemloft.net>
David S. Miller 7 years ago
parent
commit
d69242bf20
3 changed files with 14 additions and 9 deletions
  1. 1 1
      net/mac80211/rx.c
  2. 8 0
      net/mac80211/tx.c
  3. 5 8
      net/wireless/Kconfig

+ 1 - 1
net/mac80211/rx.c

@@ -3921,7 +3921,7 @@ static bool ieee80211_invoke_fast_rx(struct ieee80211_rx_data *rx,
 	if ((hdr->frame_control & cpu_to_le16(IEEE80211_FCTL_FROMDS |
 	if ((hdr->frame_control & cpu_to_le16(IEEE80211_FCTL_FROMDS |
 					      IEEE80211_FCTL_TODS)) !=
 					      IEEE80211_FCTL_TODS)) !=
 	    fast_rx->expected_ds_bits)
 	    fast_rx->expected_ds_bits)
-		goto drop;
+		return false;
 
 
 	/* assign the key to drop unencrypted frames (later)
 	/* assign the key to drop unencrypted frames (later)
 	 * and strip the IV/MIC if necessary
 	 * and strip the IV/MIC if necessary

+ 8 - 0
net/mac80211/tx.c

@@ -3574,6 +3574,14 @@ void __ieee80211_subif_start_xmit(struct sk_buff *skb,
 	if (!IS_ERR_OR_NULL(sta)) {
 	if (!IS_ERR_OR_NULL(sta)) {
 		struct ieee80211_fast_tx *fast_tx;
 		struct ieee80211_fast_tx *fast_tx;
 
 
+		/* We need a bit of data queued to build aggregates properly, so
+		 * instruct the TCP stack to allow more than a single ms of data
+		 * to be queued in the stack. The value is a bit-shift of 1
+		 * second, so 8 is ~4ms of queued data. Only affects local TCP
+		 * sockets.
+		 */
+		sk_pacing_shift_update(skb->sk, 8);
+
 		fast_tx = rcu_dereference(sta->fast_tx);
 		fast_tx = rcu_dereference(sta->fast_tx);
 
 
 		if (fast_tx &&
 		if (fast_tx &&

+ 5 - 8
net/wireless/Kconfig

@@ -34,9 +34,10 @@ config CFG80211
 
 
 	  When built as a module it will be called cfg80211.
 	  When built as a module it will be called cfg80211.
 
 
+if CFG80211
+
 config NL80211_TESTMODE
 config NL80211_TESTMODE
 	bool "nl80211 testmode command"
 	bool "nl80211 testmode command"
-	depends on CFG80211
 	help
 	help
 	  The nl80211 testmode command helps implementing things like
 	  The nl80211 testmode command helps implementing things like
 	  factory calibration or validation tools for wireless chips.
 	  factory calibration or validation tools for wireless chips.
@@ -51,7 +52,6 @@ config NL80211_TESTMODE
 
 
 config CFG80211_DEVELOPER_WARNINGS
 config CFG80211_DEVELOPER_WARNINGS
 	bool "enable developer warnings"
 	bool "enable developer warnings"
-	depends on CFG80211
 	default n
 	default n
 	help
 	help
 	  This option enables some additional warnings that help
 	  This option enables some additional warnings that help
@@ -68,7 +68,7 @@ config CFG80211_DEVELOPER_WARNINGS
 
 
 config CFG80211_CERTIFICATION_ONUS
 config CFG80211_CERTIFICATION_ONUS
 	bool "cfg80211 certification onus"
 	bool "cfg80211 certification onus"
-	depends on CFG80211 && EXPERT
+	depends on EXPERT
 	default n
 	default n
 	---help---
 	---help---
 	  You should disable this option unless you are both capable
 	  You should disable this option unless you are both capable
@@ -159,7 +159,6 @@ config CFG80211_REG_RELAX_NO_IR
 
 
 config CFG80211_DEFAULT_PS
 config CFG80211_DEFAULT_PS
 	bool "enable powersave by default"
 	bool "enable powersave by default"
-	depends on CFG80211
 	default y
 	default y
 	help
 	help
 	  This option enables powersave mode by default.
 	  This option enables powersave mode by default.
@@ -170,7 +169,6 @@ config CFG80211_DEFAULT_PS
 
 
 config CFG80211_DEBUGFS
 config CFG80211_DEBUGFS
 	bool "cfg80211 DebugFS entries"
 	bool "cfg80211 DebugFS entries"
-	depends on CFG80211
 	depends on DEBUG_FS
 	depends on DEBUG_FS
 	---help---
 	---help---
 	  You can enable this if you want debugfs entries for cfg80211.
 	  You can enable this if you want debugfs entries for cfg80211.
@@ -180,7 +178,6 @@ config CFG80211_DEBUGFS
 config CFG80211_CRDA_SUPPORT
 config CFG80211_CRDA_SUPPORT
 	bool "support CRDA" if EXPERT
 	bool "support CRDA" if EXPERT
 	default y
 	default y
-	depends on CFG80211
 	help
 	help
 	  You should enable this option unless you know for sure you have no
 	  You should enable this option unless you know for sure you have no
 	  need for it, for example when using internal regdb (above) or the
 	  need for it, for example when using internal regdb (above) or the
@@ -190,7 +187,6 @@ config CFG80211_CRDA_SUPPORT
 
 
 config CFG80211_WEXT
 config CFG80211_WEXT
 	bool "cfg80211 wireless extensions compatibility" if !CFG80211_WEXT_EXPORT
 	bool "cfg80211 wireless extensions compatibility" if !CFG80211_WEXT_EXPORT
-	depends on CFG80211
 	select WEXT_CORE
 	select WEXT_CORE
 	default y if CFG80211_WEXT_EXPORT
 	default y if CFG80211_WEXT_EXPORT
 	help
 	help
@@ -199,11 +195,12 @@ config CFG80211_WEXT
 
 
 config CFG80211_WEXT_EXPORT
 config CFG80211_WEXT_EXPORT
 	bool
 	bool
-	depends on CFG80211
 	help
 	help
 	  Drivers should select this option if they require cfg80211's
 	  Drivers should select this option if they require cfg80211's
 	  wext compatibility symbols to be exported.
 	  wext compatibility symbols to be exported.
 
 
+endif # CFG80211
+
 config LIB80211
 config LIB80211
 	tristate
 	tristate
 	default n
 	default n