From: Johannes Berg <[email protected]>

Add information about the LDCP extra symbol segment to the HE
data when applicable (not for trigger-based PPDUs).

While at it, clean up the code for UL/DL a bit.

Signed-off-by: Johannes Berg <[email protected]>
Signed-off-by: Luca Coelho <[email protected]>
---
 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c | 16 +++++++++++-----
 1 file changed, 11 insertions(+), 5 deletions(-)

diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c 
b/drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c
index 52709130cb0b..b6f7fae0d757 100644
--- a/drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c
+++ b/drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c
@@ -1054,11 +1054,17 @@ static void iwl_mvm_decode_he_phy_data(struct iwl_mvm 
*mvm,
        }
 
        if (he_type != RATE_MCS_HE_TYPE_TRIG) {
-               he->data1 |=
-                       cpu_to_le16(IEEE80211_RADIOTAP_HE_DATA1_UL_DL_KNOWN);
-               if (FIELD_GET(IWL_RX_HE_PHY_UPLINK, he_phy_data))
-                       he->data3 |=
-                               cpu_to_le16(IEEE80211_RADIOTAP_HE_DATA3_UL_DL);
+               u16 d1known = IEEE80211_RADIOTAP_HE_DATA1_LDPC_XSYMSEG_KNOWN |
+                             IEEE80211_RADIOTAP_HE_DATA1_UL_DL_KNOWN;
+
+               he->data1 |= cpu_to_le16(d1known);
+
+               he->data3 |= le16_encode_bits(FIELD_GET(IWL_RX_HE_PHY_UPLINK,
+                                                       he_phy_data),
+                                             
IEEE80211_RADIOTAP_HE_DATA3_UL_DL);
+               he->data3 |= 
le16_encode_bits(FIELD_GET(IWL_RX_HE_PHY_LDPC_EXT_SYM,
+                                                       he_phy_data),
+                                             
IEEE80211_RADIOTAP_HE_DATA3_LDPC_XSYMSEG);
        }
 
        switch (FIELD_GET(IWL_RX_HE_PHY_INFO_TYPE_MASK, he_phy_data)) {
-- 
2.19.0

Reply via email to