]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
wifi: iwlwifi: mvm: rxmq: further unify some VHT/HE code
authorJohannes Berg <johannes.berg@intel.com>
Tue, 6 Sep 2022 13:42:08 +0000 (16:42 +0300)
committerGregory Greenman <gregory.greenman@intel.com>
Sun, 18 Sep 2022 11:40:13 +0000 (14:40 +0300)
There's some duplication here, unify it so that adding EHT
becomes easier.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Gregory Greenman <gregory.greenman@intel.com>
Link: https://lore.kernel.org/r/20220906161827.d1e8673b9443.I6d81fc9dd0856d75e3a799c23f0f8d212b077fca@changeid
Signed-off-by: Gregory Greenman <gregory.greenman@intel.com>
drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c

index c0a77986793834b27c1bcb55fc972e40ef9a7e81..1aadccd8841fd2c536b7934384c2f256ac819c59 100644 (file)
@@ -1473,7 +1473,7 @@ static void iwl_mvm_rx_he(struct iwl_mvm *mvm, struct sk_buff *skb,
        struct ieee80211_radiotap_he_mu *he_mu = NULL;
        u32 rate_n_flags = phy_data->rate_n_flags;
        u32 he_type = rate_n_flags & RATE_MCS_HE_TYPE_MSK;
-       u8 stbc, ltf;
+       u8 ltf;
        static const struct ieee80211_radiotap_he known = {
                .data1 = cpu_to_le16(IEEE80211_RADIOTAP_HE_DATA1_DATA_MCS_KNOWN |
                                     IEEE80211_RADIOTAP_HE_DATA1_DATA_DCM_KNOWN |
@@ -1538,19 +1538,6 @@ static void iwl_mvm_rx_he(struct iwl_mvm *mvm, struct sk_buff *skb,
                he->data1 |=
                        cpu_to_le16(IEEE80211_RADIOTAP_HE_DATA1_BW_RU_ALLOC_KNOWN);
 
-       stbc = (rate_n_flags & RATE_MCS_STBC_MSK) >> RATE_MCS_STBC_POS;
-       rx_status->nss =
-               ((rate_n_flags & RATE_MCS_NSS_MSK) >>
-                RATE_MCS_NSS_POS) + 1;
-       rx_status->rate_idx = rate_n_flags & RATE_MCS_CODE_MSK;
-       rx_status->encoding = RX_ENC_HE;
-       rx_status->enc_flags |= stbc << RX_ENC_FLAG_STBC_SHIFT;
-       if (rate_n_flags & RATE_MCS_BF_MSK)
-               rx_status->enc_flags |= RX_ENC_FLAG_BF;
-
-       rx_status->he_dcm =
-               !!(rate_n_flags & RATE_HE_DUAL_CARRIER_MODE_MSK);
-
 #define CHECK_TYPE(F)                                                  \
        BUILD_BUG_ON(IEEE80211_RADIOTAP_HE_DATA1_FORMAT_ ## F !=        \
                     (RATE_MCS_HE_TYPE_ ## F >> RATE_MCS_HE_TYPE_POS))
@@ -1730,6 +1717,17 @@ static void iwl_mvm_rx_fill_status(struct iwl_mvm *mvm,
        if (rate_n_flags & RATE_MCS_LDPC_MSK)
                rx_status->enc_flags |= RX_ENC_FLAG_LDPC;
 
+       switch (format) {
+       case RATE_MCS_VHT_MSK:
+               rx_status->encoding = RX_ENC_VHT;
+               break;
+       case RATE_MCS_HE_MSK:
+               rx_status->encoding = RX_ENC_HE;
+               rx_status->he_dcm =
+                       !!(rate_n_flags & RATE_HE_DUAL_CARRIER_MODE_MSK);
+               break;
+       }
+
        switch (format) {
        case RATE_MCS_HT_MSK:
                rx_status->encoding = RX_ENC_HT;
@@ -1737,17 +1735,11 @@ static void iwl_mvm_rx_fill_status(struct iwl_mvm *mvm,
                rx_status->enc_flags |= stbc << RX_ENC_FLAG_STBC_SHIFT;
                break;
        case RATE_MCS_VHT_MSK:
+       case RATE_MCS_HE_MSK:
                rx_status->nss =
-                       ((rate_n_flags & RATE_MCS_NSS_MSK) >>
-                       RATE_MCS_NSS_POS) + 1;
+                       u32_get_bits(rate_n_flags, RATE_MCS_NSS_MSK) + 1;
                rx_status->rate_idx = rate_n_flags & RATE_MCS_CODE_MSK;
-               rx_status->encoding = RX_ENC_VHT;
                rx_status->enc_flags |= stbc << RX_ENC_FLAG_STBC_SHIFT;
-               if (rate_n_flags & RATE_MCS_BF_MSK)
-                       rx_status->enc_flags |= RX_ENC_FLAG_BF;
-               break;
-       case RATE_MCS_HE_MSK:
-               /* handled above */
                break;
        default: {
                int rate = iwl_mvm_legacy_hw_idx_to_mac80211_idx(rate_n_flags,