mac80211: fix FEC flag in radio tap header
authorP Praneesh <quic_ppranees@quicinc.com>
Tue, 30 Nov 2021 17:50:47 +0000 (23:20 +0530)
committerJohannes Berg <johannes.berg@intel.com>
Mon, 20 Dec 2021 09:25:00 +0000 (10:25 +0100)
In mac80211, while building radiotap header
IEEE80211_RADIOTAP_MCS_HAVE_FEC flag is missing when LDPC enabled
from driver, hence LDPC is not updated properly in radiotap header.
Fix that by adding HAVE_FEC flag while building radiotap header.

Signed-off-by: P Praneesh <quic_ppranees@quicinc.com>
Link: https://lore.kernel.org/r/1638294648-844-2-git-send-email-quic_ppranees@quicinc.com
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
net/mac80211/rx.c

index 9541a4c30aca7c071d254c987839f723728312eb..be12fa8f263387202aafa82edc69d45bb46d7520 100644 (file)
@@ -465,7 +465,12 @@ ieee80211_add_rx_radiotap_header(struct ieee80211_local *local,
                unsigned int stbc;
 
                rthdr->it_present |= cpu_to_le32(BIT(IEEE80211_RADIOTAP_MCS));
-               *pos++ = local->hw.radiotap_mcs_details;
+               *pos = local->hw.radiotap_mcs_details;
+               if (status->enc_flags & RX_ENC_FLAG_HT_GF)
+                       *pos |= IEEE80211_RADIOTAP_MCS_HAVE_FMT;
+               if (status->enc_flags & RX_ENC_FLAG_LDPC)
+                       *pos |= IEEE80211_RADIOTAP_MCS_HAVE_FEC;
+               pos++;
                *pos = 0;
                if (status->enc_flags & RX_ENC_FLAG_SHORT_GI)
                        *pos |= IEEE80211_RADIOTAP_MCS_SGI;