aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless
diff options
context:
space:
mode:
authorJohannes Berg <johannes.berg@intel.com>2018-06-14 08:52:19 -0400
committerLuca Coelho <luciano.coelho@intel.com>2018-10-06 03:25:47 -0400
commit42d8a9d5783e4efdbdf746b139dc98e2b64f3ce3 (patch)
tree50cc0495e5fd64fd00942c9c5dc8cfc3984a80e1 /drivers/net/wireless
parentffe9d734b8b556737c87acaa08666d0a6c1686ab (diff)
iwlwifi: mvm: move HE-MU LTF_NUM parsing to he_phy_data parsing
This code gets shorter if it doesn't have to check all the conditions, so move it to an appropriate place that has all of them validated already. Signed-off-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
Diffstat (limited to 'drivers/net/wireless')
-rw-r--r--drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c35
1 files changed, 10 insertions, 25 deletions
diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c b/drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c
index 757ff6b9efe0..647fa905ebba 100644
--- a/drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c
+++ b/drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c
@@ -1039,6 +1039,13 @@ static void iwl_mvm_decode_he_phy_data(struct iwl_mvm *mvm,
1039 IWL_RX_HE_PHY_INFO_TYPE_MU_EXT_INFO; 1039 IWL_RX_HE_PHY_INFO_TYPE_MU_EXT_INFO;
1040 if (sigb_data) 1040 if (sigb_data)
1041 iwl_mvm_decode_he_sigb(mvm, desc, rate_n_flags, he_mu); 1041 iwl_mvm_decode_he_sigb(mvm, desc, rate_n_flags, he_mu);
1042
1043 he->data2 |=
1044 cpu_to_le16(IEEE80211_RADIOTAP_HE_DATA2_NUM_LTF_SYMS_KNOWN);
1045 he->data5 |=
1046 le16_encode_bits(FIELD_GET(IWL_RX_HE_PHY_HE_LTF_NUM_MASK,
1047 he_phy_data),
1048 IEEE80211_RADIOTAP_HE_DATA5_NUM_LTF_SYMS);
1042 } 1049 }
1043 1050
1044 if (he_type != RATE_MCS_HE_TYPE_TRIG) { 1051 if (he_type != RATE_MCS_HE_TYPE_TRIG) {
@@ -1222,9 +1229,8 @@ static void iwl_mvm_rx_he(struct iwl_mvm *mvm, struct sk_buff *skb,
1222 1229
1223 he->data5 |= le16_encode_bits(ltf, IEEE80211_RADIOTAP_HE_DATA5_LTF_SIZE); 1230 he->data5 |= le16_encode_bits(ltf, IEEE80211_RADIOTAP_HE_DATA5_LTF_SIZE);
1224 1231
1225 switch (he_type) { 1232 if (he_type == RATE_MCS_HE_TYPE_SU ||
1226 case RATE_MCS_HE_TYPE_SU: 1233 he_type == RATE_MCS_HE_TYPE_EXT_SU) {
1227 case RATE_MCS_HE_TYPE_EXT_SU: {
1228 u16 val; 1234 u16 val;
1229 1235
1230 /* LTF syms correspond to streams */ 1236 /* LTF syms correspond to streams */
@@ -1254,31 +1260,10 @@ static void iwl_mvm_rx_he(struct iwl_mvm *mvm, struct sk_buff *skb,
1254 rx_status->nss); 1260 rx_status->nss);
1255 val = 0; 1261 val = 0;
1256 } 1262 }
1263
1257 he->data5 |= 1264 he->data5 |=
1258 le16_encode_bits(val, 1265 le16_encode_bits(val,
1259 IEEE80211_RADIOTAP_HE_DATA5_NUM_LTF_SYMS); 1266 IEEE80211_RADIOTAP_HE_DATA5_NUM_LTF_SYMS);
1260 }
1261 break;
1262 case RATE_MCS_HE_TYPE_MU: {
1263 u16 val;
1264
1265 if (he_phy_data == HE_PHY_DATA_INVAL)
1266 break;
1267
1268 val = FIELD_GET(IWL_RX_HE_PHY_HE_LTF_NUM_MASK,
1269 he_phy_data);
1270
1271 he->data2 |=
1272 cpu_to_le16(IEEE80211_RADIOTAP_HE_DATA2_NUM_LTF_SYMS_KNOWN);
1273 he->data5 |=
1274 cpu_to_le16(FIELD_PREP(
1275 IEEE80211_RADIOTAP_HE_DATA5_NUM_LTF_SYMS,
1276 val));
1277 }
1278 break;
1279 case RATE_MCS_HE_TYPE_TRIG:
1280 /* not supported */
1281 break;
1282 } 1267 }
1283} 1268}
1284 1269