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 b0a8d91..1e03acf 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 */