]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
iwlwifi: mvm: fix the spatial reuse parsing for HE_TRIG PPDUs
authorEmmanuel Grumbach <emmanuel.grumbach@intel.com>
Thu, 17 Jan 2019 03:49:24 +0000 (19:49 -0800)
committerLuca Coelho <luciano.coelho@intel.com>
Thu, 14 Feb 2019 09:29:51 +0000 (11:29 +0200)
The spatial reuse 4 words fields are fetched from the HE-SIGA
by the firmware and propagated to the driver through the
Rx info. This is useful to populate the radiotap header.

We were looking at the wrong place in the firmware data and
got bogus values. Fix that.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Fixes: bdf180c8d375 ("iwlwifi: mvm: change PHY data RX for HE radiotap")
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c

index b0a8d910c5c40253214dcbb194f8321453e37d2d..1e03acf30762df6778335bda0d6acd60c11d01cb 100644 (file)
@@ -1074,16 +1074,16 @@ static void iwl_mvm_decode_he_phy_data(struct iwl_mvm *mvm,
                                         IEEE80211_RADIOTAP_HE_DATA1_SPTL_REUSE2_KNOWN |
                                         IEEE80211_RADIOTAP_HE_DATA1_SPTL_REUSE3_KNOWN |
                                         IEEE80211_RADIOTAP_HE_DATA1_SPTL_REUSE4_KNOWN);
-               he->data4 |= le16_encode_bits(le32_get_bits(phy_data->d0,
+               he->data4 |= le16_encode_bits(le32_get_bits(phy_data->d2,
                                                            IWL_RX_PHY_DATA2_HE_TB_EXT_SPTL_REUSE1),
                                              IEEE80211_RADIOTAP_HE_DATA4_TB_SPTL_REUSE1);
-               he->data4 |= le16_encode_bits(le32_get_bits(phy_data->d0,
+               he->data4 |= le16_encode_bits(le32_get_bits(phy_data->d2,
                                                            IWL_RX_PHY_DATA2_HE_TB_EXT_SPTL_REUSE2),
                                              IEEE80211_RADIOTAP_HE_DATA4_TB_SPTL_REUSE2);
-               he->data4 |= le16_encode_bits(le32_get_bits(phy_data->d0,
+               he->data4 |= le16_encode_bits(le32_get_bits(phy_data->d2,
                                                            IWL_RX_PHY_DATA2_HE_TB_EXT_SPTL_REUSE3),
                                              IEEE80211_RADIOTAP_HE_DATA4_TB_SPTL_REUSE3);
-               he->data4 |= le16_encode_bits(le32_get_bits(phy_data->d0,
+               he->data4 |= le16_encode_bits(le32_get_bits(phy_data->d2,
                                                            IWL_RX_PHY_DATA2_HE_TB_EXT_SPTL_REUSE4),
                                              IEEE80211_RADIOTAP_HE_DATA4_TB_SPTL_REUSE4);
                /* fall through */