Home Home > GIT Browse
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2018-10-25 15:32:01 +0200
committerTakashi Iwai <tiwai@suse.de>2018-10-25 15:32:09 +0200
commitfa1f306cb86431d58482731d2b2c553980a08263 (patch)
treea83c008bae2205768aed4d0d08afa574a2a19b23
parent9487773c3a79d3279e3ef8dd4a4302b9a000821c (diff)
iwlwifi: pcie: gen2: build A-MSDU only for GSO (bsc#1051510).
-rw-r--r--patches.drivers/iwlwifi-pcie-gen2-build-A-MSDU-only-for-GSO.patch38
-rw-r--r--series.conf1
2 files changed, 39 insertions, 0 deletions
diff --git a/patches.drivers/iwlwifi-pcie-gen2-build-A-MSDU-only-for-GSO.patch b/patches.drivers/iwlwifi-pcie-gen2-build-A-MSDU-only-for-GSO.patch
new file mode 100644
index 0000000000..fe47464f9d
--- /dev/null
+++ b/patches.drivers/iwlwifi-pcie-gen2-build-A-MSDU-only-for-GSO.patch
@@ -0,0 +1,38 @@
+From 53f474e6a8d74d5dc0c3a015d889471f9a157685 Mon Sep 17 00:00:00 2001
+From: Johannes Berg <johannes.berg@intel.com>
+Date: Fri, 1 Jun 2018 09:45:55 +0200
+Subject: [PATCH] iwlwifi: pcie: gen2: build A-MSDU only for GSO
+Git-commit: 53f474e6a8d74d5dc0c3a015d889471f9a157685
+Patch-mainline: v4.20-rc1
+References: bsc#1051510
+
+If the incoming frame should be an A-MSDU, it may already be one,
+for example in the case of NAN multicast being encapsulated in an
+A-MSDU. Thus, use the GSO algorithm to build A-MSDU only if the
+skb actually contains GSO data.
+
+Fixes: 6ffe5de35b05 ("iwlwifi: pcie: add AMSDU to gen2")
+Signed-off-by: Johannes Berg <johannes.berg@intel.com>
+Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
+Acked-by: Takashi Iwai <tiwai@suse.de>
+
+---
+ drivers/net/wireless/intel/iwlwifi/pcie/tx-gen2.c | 7 ++++++-
+ 1 file changed, 6 insertions(+), 1 deletion(-)
+
+--- a/drivers/net/wireless/intel/iwlwifi/pcie/tx-gen2.c
++++ b/drivers/net/wireless/intel/iwlwifi/pcie/tx-gen2.c
+@@ -414,7 +414,12 @@ struct iwl_tfh_tfd *iwl_pcie_gen2_build_
+
+ hdr_len = ieee80211_hdrlen(hdr->frame_control);
+
+- if (amsdu) {
++ /*
++ * Only build A-MSDUs here if doing so by GSO, otherwise it may be
++ * an A-MSDU for other reasons, e.g. NAN or an A-MSDU having been
++ * built in the higher layers already.
++ */
++ if (amsdu && skb_shinfo(skb)->gso_size) {
+ if (iwl_pcie_gen2_build_amsdu(trans, skb, tfd,
+ tb1_len + IWL_FIRST_TB_SIZE,
+ hdr_len, dev_cmd))
diff --git a/series.conf b/series.conf
index 0d869a52e9..a0039665eb 100644
--- a/series.conf
+++ b/series.conf
@@ -18049,6 +18049,7 @@
patches.drivers/ACPI-processor-Fix-the-return-value-of-acpi_processo.patch
patches.drivers/iwlwifi-mvm-send-BCAST-management-frames-to-the-righ.patch
patches.drivers/iwlwifi-dbg-don-t-crash-if-the-firmware-crashes-in-t.patch
+ patches.drivers/iwlwifi-pcie-gen2-build-A-MSDU-only-for-GSO.patch
patches.drivers/iwlwifi-mvm-Allow-TKIP-for-AP-mode.patch
patches.drivers/iwlwifi-mvm-check-for-n_profiles-validity-in-EWRD-AC.patch
patches.drivers/iwlwifi-mvm-clear-HW_RESTART_REQUESTED-when-stopping.patch