From: Sara Sharon <[email protected]>

Our hardware de-aggregates AMSDUs but copies the mac header
as it to the de-aggregated MPDUs. We need to turn off the AMSDU
bit in the QoS control ourselves.

Signed-off-by: Sara Sharon <[email protected]>
Signed-off-by: Emmanuel Grumbach <[email protected]>
---
 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c 
b/drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c
index cd6ca37..9a54f2d 100644
--- a/drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c
+++ b/drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c
@@ -519,6 +519,18 @@ void iwl_mvm_rx_mpdu_mq(struct iwl_mvm *mvm, struct 
napi_struct *napi,
                        rcu_read_unlock();
                        return;
                }
+
+               /*
+                * Our hardware de-aggregates AMSDUs but copies the mac header
+                * as it to the de-aggregated MPDUs. We need to turn off the
+                * AMSDU bit in the QoS control ourselves.
+                */
+               if ((desc->mac_flags2 & IWL_RX_MPDU_MFLG2_AMSDU) &&
+                   !WARN_ON(!ieee80211_is_data_qos(hdr->frame_control))) {
+                       u8 *qc = ieee80211_get_qos_ctl(hdr);
+
+                       *qc &= ~IEEE80211_QOS_CTL_A_MSDU_PRESENT;
+               }
        }
 
        /*
-- 
2.5.0

--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to