From: Emmanuel Grumbach <emmanuel.grumb...@intel.com>

[ Upstream commit 6344436e9d3f4fb4878c12169477d4beb5b825ea ]

When we get large sends on non-QoS association, we had a
bug that mangled the SNAP header. Fix that.

Fixes: a6d5e32f247c ("iwlwifi: mvm: send large SKBs to the transport")
Signed-off-by: Emmanuel Grumbach <emmanuel.grumb...@intel.com>
Signed-off-by: Luca Coelho <luciano.coe...@intel.com>
Signed-off-by: Sasha Levin <alexander.le...@microsoft.com>
---
 drivers/net/wireless/intel/iwlwifi/mvm/tx.c | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/tx.c 
b/drivers/net/wireless/intel/iwlwifi/mvm/tx.c
index 790952e48262..5dfd6a775e2b 100644
--- a/drivers/net/wireless/intel/iwlwifi/mvm/tx.c
+++ b/drivers/net/wireless/intel/iwlwifi/mvm/tx.c
@@ -786,11 +786,13 @@ segment:
                if (tcp_payload_len > mss) {
                        skb_shinfo(tmp)->gso_size = mss;
                } else {
-                       qc = ieee80211_get_qos_ctl((void *)tmp->data);
+                       if (ieee80211_is_data_qos(hdr->frame_control)) {
+                               qc = ieee80211_get_qos_ctl((void *)tmp->data);
 
-                       if (ipv4)
-                               ip_send_check(ip_hdr(tmp));
-                       *qc &= ~IEEE80211_QOS_CTL_A_MSDU_PRESENT;
+                               if (ipv4)
+                                       ip_send_check(ip_hdr(tmp));
+                               *qc &= ~IEEE80211_QOS_CTL_A_MSDU_PRESENT;
+                       }
                        skb_shinfo(tmp)->gso_size = 0;
                }
 
-- 
2.15.1

Reply via email to