iwlwifi: mvm: add HE TB PPDU SIG-A BW to radiotap
Expose the trigger-based PPDU SIG-A bandwidth to radiotap in the newly defined bits thereof. Signed-off-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
This commit is contained in:
parent
0ec7bfb26a
commit
74cf15cb69
|
@ -960,6 +960,7 @@ iwl_mvm_decode_he_phy_ru_alloc(struct iwl_mvm_rx_phy_data *phy_data,
|
||||||
* the TSF/timers are not be transmitted in HE-MU.
|
* the TSF/timers are not be transmitted in HE-MU.
|
||||||
*/
|
*/
|
||||||
u8 ru = le32_get_bits(phy_data->d1, IWL_RX_PHY_DATA1_HE_RU_ALLOC_MASK);
|
u8 ru = le32_get_bits(phy_data->d1, IWL_RX_PHY_DATA1_HE_RU_ALLOC_MASK);
|
||||||
|
u32 he_type = rate_n_flags & RATE_MCS_HE_TYPE_MSK;
|
||||||
u8 offs = 0;
|
u8 offs = 0;
|
||||||
|
|
||||||
rx_status->bw = RATE_INFO_BW_HE_RU;
|
rx_status->bw = RATE_INFO_BW_HE_RU;
|
||||||
|
@ -1002,19 +1003,27 @@ iwl_mvm_decode_he_phy_ru_alloc(struct iwl_mvm_rx_phy_data *phy_data,
|
||||||
he->data2 |=
|
he->data2 |=
|
||||||
cpu_to_le16(IEEE80211_RADIOTAP_HE_DATA2_PRISEC_80_SEC);
|
cpu_to_le16(IEEE80211_RADIOTAP_HE_DATA2_PRISEC_80_SEC);
|
||||||
|
|
||||||
if (he_mu) {
|
|
||||||
#define CHECK_BW(bw) \
|
#define CHECK_BW(bw) \
|
||||||
BUILD_BUG_ON(IEEE80211_RADIOTAP_HE_MU_FLAGS2_BW_FROM_SIG_A_BW_ ## bw ## MHZ != \
|
BUILD_BUG_ON(IEEE80211_RADIOTAP_HE_MU_FLAGS2_BW_FROM_SIG_A_BW_ ## bw ## MHZ != \
|
||||||
|
RATE_MCS_CHAN_WIDTH_##bw >> RATE_MCS_CHAN_WIDTH_POS); \
|
||||||
|
BUILD_BUG_ON(IEEE80211_RADIOTAP_HE_DATA6_TB_PPDU_BW_ ## bw ## MHZ != \
|
||||||
RATE_MCS_CHAN_WIDTH_##bw >> RATE_MCS_CHAN_WIDTH_POS)
|
RATE_MCS_CHAN_WIDTH_##bw >> RATE_MCS_CHAN_WIDTH_POS)
|
||||||
CHECK_BW(20);
|
CHECK_BW(20);
|
||||||
CHECK_BW(40);
|
CHECK_BW(40);
|
||||||
CHECK_BW(80);
|
CHECK_BW(80);
|
||||||
CHECK_BW(160);
|
CHECK_BW(160);
|
||||||
|
|
||||||
|
if (he_mu)
|
||||||
he_mu->flags2 |=
|
he_mu->flags2 |=
|
||||||
le16_encode_bits(FIELD_GET(RATE_MCS_CHAN_WIDTH_MSK,
|
le16_encode_bits(FIELD_GET(RATE_MCS_CHAN_WIDTH_MSK,
|
||||||
rate_n_flags),
|
rate_n_flags),
|
||||||
IEEE80211_RADIOTAP_HE_MU_FLAGS2_BW_FROM_SIG_A_BW);
|
IEEE80211_RADIOTAP_HE_MU_FLAGS2_BW_FROM_SIG_A_BW);
|
||||||
}
|
else if (he_type == RATE_MCS_HE_TYPE_TRIG)
|
||||||
|
he->data6 |=
|
||||||
|
cpu_to_le16(IEEE80211_RADIOTAP_HE_DATA6_TB_PPDU_BW_KNOWN) |
|
||||||
|
le16_encode_bits(FIELD_GET(RATE_MCS_CHAN_WIDTH_MSK,
|
||||||
|
rate_n_flags),
|
||||||
|
IEEE80211_RADIOTAP_HE_DATA6_TB_PPDU_BW);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void iwl_mvm_decode_he_phy_data(struct iwl_mvm *mvm,
|
static void iwl_mvm_decode_he_phy_data(struct iwl_mvm *mvm,
|
||||||
|
|
|
@ -291,6 +291,12 @@ enum ieee80211_radiotap_he_bits {
|
||||||
|
|
||||||
IEEE80211_RADIOTAP_HE_DATA6_NSTS = 0x000f,
|
IEEE80211_RADIOTAP_HE_DATA6_NSTS = 0x000f,
|
||||||
IEEE80211_RADIOTAP_HE_DATA6_DOPPLER = 0x0010,
|
IEEE80211_RADIOTAP_HE_DATA6_DOPPLER = 0x0010,
|
||||||
|
IEEE80211_RADIOTAP_HE_DATA6_TB_PPDU_BW_KNOWN = 0x0020,
|
||||||
|
IEEE80211_RADIOTAP_HE_DATA6_TB_PPDU_BW = 0x00c0,
|
||||||
|
IEEE80211_RADIOTAP_HE_DATA6_TB_PPDU_BW_20MHZ = 0,
|
||||||
|
IEEE80211_RADIOTAP_HE_DATA6_TB_PPDU_BW_40MHZ = 1,
|
||||||
|
IEEE80211_RADIOTAP_HE_DATA6_TB_PPDU_BW_80MHZ = 2,
|
||||||
|
IEEE80211_RADIOTAP_HE_DATA6_TB_PPDU_BW_160MHZ = 3,
|
||||||
IEEE80211_RADIOTAP_HE_DATA6_TXOP = 0x7f00,
|
IEEE80211_RADIOTAP_HE_DATA6_TXOP = 0x7f00,
|
||||||
IEEE80211_RADIOTAP_HE_DATA6_MIDAMBLE_PDCTY = 0x8000,
|
IEEE80211_RADIOTAP_HE_DATA6_MIDAMBLE_PDCTY = 0x8000,
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue