aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c25
1 files changed, 15 insertions, 10 deletions
diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c b/drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c
index 580de5851fc7..4a4ccfd11e5b 100644
--- a/drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c
+++ b/drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c
@@ -831,6 +831,16 @@ out:
831 rcu_read_unlock(); 831 rcu_read_unlock();
832} 832}
833 833
834static void iwl_mvm_flip_address(u8 *addr)
835{
836 int i;
837 u8 mac_addr[ETH_ALEN];
838
839 for (i = 0; i < ETH_ALEN; i++)
840 mac_addr[i] = addr[ETH_ALEN - i - 1];
841 ether_addr_copy(addr, mac_addr);
842}
843
834void iwl_mvm_rx_mpdu_mq(struct iwl_mvm *mvm, struct napi_struct *napi, 844void iwl_mvm_rx_mpdu_mq(struct iwl_mvm *mvm, struct napi_struct *napi,
835 struct iwl_rx_cmd_buffer *rxb, int queue) 845 struct iwl_rx_cmd_buffer *rxb, int queue)
836{ 846{
@@ -985,21 +995,16 @@ void iwl_mvm_rx_mpdu_mq(struct iwl_mvm *mvm, struct napi_struct *napi,
985 */ 995 */
986 if ((desc->mac_flags2 & IWL_RX_MPDU_MFLG2_AMSDU) && 996 if ((desc->mac_flags2 & IWL_RX_MPDU_MFLG2_AMSDU) &&
987 !WARN_ON(!ieee80211_is_data_qos(hdr->frame_control))) { 997 !WARN_ON(!ieee80211_is_data_qos(hdr->frame_control))) {
988 int i;
989 u8 *qc = ieee80211_get_qos_ctl(hdr); 998 u8 *qc = ieee80211_get_qos_ctl(hdr);
990 u8 mac_addr[ETH_ALEN];
991 999
992 *qc &= ~IEEE80211_QOS_CTL_A_MSDU_PRESENT; 1000 *qc &= ~IEEE80211_QOS_CTL_A_MSDU_PRESENT;
993 1001
994 for (i = 0; i < ETH_ALEN; i++) 1002 if (mvm->trans->cfg->device_family ==
995 mac_addr[i] = hdr->addr3[ETH_ALEN - i - 1]; 1003 IWL_DEVICE_FAMILY_9000) {
996 ether_addr_copy(hdr->addr3, mac_addr); 1004 iwl_mvm_flip_address(hdr->addr3);
997 1005
998 if (ieee80211_has_a4(hdr->frame_control)) { 1006 if (ieee80211_has_a4(hdr->frame_control))
999 for (i = 0; i < ETH_ALEN; i++) 1007 iwl_mvm_flip_address(hdr->addr4);
1000 mac_addr[i] =
1001 hdr->addr4[ETH_ALEN - i - 1];
1002 ether_addr_copy(hdr->addr4, mac_addr);
1003 } 1008 }
1004 } 1009 }
1005 if (baid != IWL_RX_REORDER_DATA_INVALID_BAID) { 1010 if (baid != IWL_RX_REORDER_DATA_INVALID_BAID) {