iwlwifi: mvm: don't mess the SNAP header in TSO for non-QoS packets
authorEmmanuel Grumbach <emmanuel.grumbach@intel.com>
Wed, 21 Jun 2017 06:40:15 +0000 (09:40 +0300)
committerLuca Coelho <luciano.coelho@intel.com>
Thu, 29 Jun 2017 17:40:43 +0000 (20:40 +0300)
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.grumbach@intel.com>
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
drivers/net/wireless/intel/iwlwifi/mvm/tx.c

index 172f0aa8d019a5250e9a6701f1604fb2014e1852..584ddc39d5f7edb8bf04a05c560b0b25fe655430 100644 (file)
@@ -849,11 +849,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;
                }