Hi Juan, kernel test robot noticed the following build errors: [auto build test ERROR on wireless-next/main] [also build test ERROR on wireless/main linus/master v6.11-rc3 next-20240816] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch#_base_tree_information] url: https://github.com/intel-lab-lkp/linux/commits/Juan-Jos-Arboleda/iwlwifi-mvm-Improve-code-style-in-pointer-declarations/20240818-145152 base: https://git.kernel.org/pub/scm/linux/kernel/git/wireless/wireless-next.git main patch link: https://lore.kernel.org/r/959e76da152811a723415545a3cf6ab1d8e17fbc.1723963126.git.soyjuanarbol%40gmail.com patch subject: [PATCH 2/3] iwlwifi: mvm: Enclose multi-statement macro in a do while config: alpha-allyesconfig (https://download.01.org/0day-ci/archive/20240819/202408190044.FGyKKgGE-lkp@xxxxxxxxx/config) compiler: alpha-linux-gcc (GCC) 13.3.0 reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240819/202408190044.FGyKKgGE-lkp@xxxxxxxxx/reproduce) If you fix the issue in a separate patch/commit (i.e. not just a new version of the same patch/commit), kindly add following tags | Reported-by: kernel test robot <lkp@xxxxxxxxx> | Closes: https://lore.kernel.org/oe-kbuild-all/202408190044.FGyKKgGE-lkp@xxxxxxxxx/ All error/warnings (new ones prefixed by >>): drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c: In function 'iwl_mvm_decode_he_phy_ru_alloc': >> drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c:1051:9: error: expected ';' before 'while' 1051 | while (0); | ^~~~~ drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c:1053:9: note: in expansion of macro 'CHECK_BW' 1053 | CHECK_BW(20); | ^~~~~~~~ >> drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c:1051:9: error: expected ';' before 'while' 1051 | while (0); | ^~~~~ drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c:1054:9: note: in expansion of macro 'CHECK_BW' 1054 | CHECK_BW(40); | ^~~~~~~~ >> drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c:1051:9: error: expected ';' before 'while' 1051 | while (0); | ^~~~~ drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c:1055:9: note: in expansion of macro 'CHECK_BW' 1055 | CHECK_BW(80); | ^~~~~~~~ >> drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c:1051:9: error: expected ';' before 'while' 1051 | while (0); | ^~~~~ drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c:1056:9: note: in expansion of macro 'CHECK_BW' 1056 | CHECK_BW(160); | ^~~~~~~~ >> drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c:1071:1: error: expected 'while' before 'static' 1071 | static void iwl_mvm_decode_he_phy_data(struct iwl_mvm *mvm, | ^~~~~~ >> drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c:1252:13: error: invalid storage class for function 'iwl_mvm_decode_eht_ext_mu' 1252 | static void iwl_mvm_decode_eht_ext_mu(struct iwl_mvm *mvm, | ^~~~~~~~~~~~~~~~~~~~~~~~~ >> drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c:1362:13: error: invalid storage class for function 'iwl_mvm_decode_eht_ext_tb' 1362 | static void iwl_mvm_decode_eht_ext_tb(struct iwl_mvm *mvm, | ^~~~~~~~~~~~~~~~~~~~~~~~~ >> drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c:1409:13: error: invalid storage class for function 'iwl_mvm_decode_eht_ru' 1409 | static void iwl_mvm_decode_eht_ru(struct iwl_mvm *mvm, | ^~~~~~~~~~~~~~~~~~~~~ >> drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c:1478:13: error: invalid storage class for function 'iwl_mvm_decode_eht_phy_data' 1478 | static void iwl_mvm_decode_eht_phy_data(struct iwl_mvm *mvm, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~ >> drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c:1595:13: error: invalid storage class for function 'iwl_mvm_rx_eht' 1595 | static void iwl_mvm_rx_eht(struct iwl_mvm *mvm, struct sk_buff *skb, | ^~~~~~~~~~~~~~ >> drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c:1738:13: error: invalid storage class for function 'iwl_mvm_rx_he' 1738 | static void iwl_mvm_rx_he(struct iwl_mvm *mvm, struct sk_buff *skb, | ^~~~~~~~~~~~~ drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c: In function 'iwl_mvm_rx_he': >> drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c:1784:17: error: implicit declaration of function 'iwl_mvm_decode_he_phy_data'; did you mean 'iwl_mvm_decode_eht_phy_data'? [-Werror=implicit-function-declaration] 1784 | iwl_mvm_decode_he_phy_data(mvm, phy_data, he, he_mu, rx_status, | ^~~~~~~~~~~~~~~~~~~~~~~~~~ | iwl_mvm_decode_eht_phy_data drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c: In function 'iwl_mvm_decode_he_phy_ru_alloc': >> drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c:1865:13: error: invalid storage class for function 'iwl_mvm_decode_lsig' 1865 | static void iwl_mvm_decode_lsig(struct sk_buff *skb, | ^~~~~~~~~~~~~~~~~~~ >> drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c:1901:13: error: invalid storage class for function 'iwl_mvm_rx_get_sta_block_tx' 1901 | static void iwl_mvm_rx_get_sta_block_tx(void *data, struct ieee80211_sta *sta) | ^~~~~~~~~~~~~~~~~~~~~~~~~~~ >> drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c:1917:13: error: invalid storage class for function 'iwl_mvm_rx_fill_status' 1917 | static void iwl_mvm_rx_fill_status(struct iwl_mvm *mvm, | ^~~~~~~~~~~~~~~~~~~~~~ >> drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c:2561:1: error: expected declaration or statement at end of input 2561 | } | ^ >> drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c:2561:1: error: expected declaration or statement at end of input >> drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c:2561:1: error: expected declaration or statement at end of input >> drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c:2561:1: error: expected declaration or statement at end of input drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c: At top level: >> drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c:2517:6: warning: 'iwl_mvm_rx_bar_frame_release' defined but not used [-Wunused-function] 2517 | void iwl_mvm_rx_bar_frame_release(struct iwl_mvm *mvm, struct napi_struct *napi, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c:2503:6: warning: 'iwl_mvm_rx_frame_release' defined but not used [-Wunused-function] 2503 | void iwl_mvm_rx_frame_release(struct iwl_mvm *mvm, struct napi_struct *napi, | ^~~~~~~~~~~~~~~~~~~~~~~~ drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c:2370:6: warning: 'iwl_mvm_rx_monitor_no_data' defined but not used [-Wunused-function] 2370 | void iwl_mvm_rx_monitor_no_data(struct iwl_mvm *mvm, struct napi_struct *napi, | ^~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c:2038:6: warning: 'iwl_mvm_rx_mpdu_mq' defined but not used [-Wunused-function] 2038 | void iwl_mvm_rx_mpdu_mq(struct iwl_mvm *mvm, struct napi_struct *napi, | ^~~~~~~~~~~~~~~~~~ drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c:987:1: warning: 'iwl_mvm_decode_he_phy_ru_alloc' defined but not used [-Wunused-function] 987 | iwl_mvm_decode_he_phy_ru_alloc(struct iwl_mvm_rx_phy_data *phy_data, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c:935:13: warning: 'iwl_mvm_decode_he_mu_ext' defined but not used [-Wunused-function] 935 | static void iwl_mvm_decode_he_mu_ext(struct iwl_mvm *mvm, | ^~~~~~~~~~~~~~~~~~~~~~~~ cc1: some warnings being treated as errors vim +1051 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c 934 > 935 static void iwl_mvm_decode_he_mu_ext(struct iwl_mvm *mvm, 936 struct iwl_mvm_rx_phy_data *phy_data, 937 struct ieee80211_radiotap_he_mu *he_mu) 938 { 939 u32 phy_data2 = le32_to_cpu(phy_data->d2); 940 u32 phy_data3 = le32_to_cpu(phy_data->d3); 941 u16 phy_data4 = le16_to_cpu(phy_data->d4); 942 u32 rate_n_flags = phy_data->rate_n_flags; 943 944 if (FIELD_GET(IWL_RX_PHY_DATA4_HE_MU_EXT_CH1_CRC_OK, phy_data4)) { 945 he_mu->flags1 |= 946 cpu_to_le16(IEEE80211_RADIOTAP_HE_MU_FLAGS1_CH1_RU_KNOWN | 947 IEEE80211_RADIOTAP_HE_MU_FLAGS1_CH1_CTR_26T_RU_KNOWN); 948 949 he_mu->flags1 |= 950 le16_encode_bits(FIELD_GET(IWL_RX_PHY_DATA4_HE_MU_EXT_CH1_CTR_RU, 951 phy_data4), 952 IEEE80211_RADIOTAP_HE_MU_FLAGS1_CH1_CTR_26T_RU); 953 954 he_mu->ru_ch1[0] = FIELD_GET(IWL_RX_PHY_DATA2_HE_MU_EXT_CH1_RU0, 955 phy_data2); 956 he_mu->ru_ch1[1] = FIELD_GET(IWL_RX_PHY_DATA3_HE_MU_EXT_CH1_RU1, 957 phy_data3); 958 he_mu->ru_ch1[2] = FIELD_GET(IWL_RX_PHY_DATA2_HE_MU_EXT_CH1_RU2, 959 phy_data2); 960 he_mu->ru_ch1[3] = FIELD_GET(IWL_RX_PHY_DATA3_HE_MU_EXT_CH1_RU3, 961 phy_data3); 962 } 963 964 if (FIELD_GET(IWL_RX_PHY_DATA4_HE_MU_EXT_CH2_CRC_OK, phy_data4) && 965 (rate_n_flags & RATE_MCS_CHAN_WIDTH_MSK_V1) != RATE_MCS_CHAN_WIDTH_20) { 966 he_mu->flags1 |= 967 cpu_to_le16(IEEE80211_RADIOTAP_HE_MU_FLAGS1_CH2_RU_KNOWN | 968 IEEE80211_RADIOTAP_HE_MU_FLAGS1_CH2_CTR_26T_RU_KNOWN); 969 970 he_mu->flags2 |= 971 le16_encode_bits(FIELD_GET(IWL_RX_PHY_DATA4_HE_MU_EXT_CH2_CTR_RU, 972 phy_data4), 973 IEEE80211_RADIOTAP_HE_MU_FLAGS2_CH2_CTR_26T_RU); 974 975 he_mu->ru_ch2[0] = FIELD_GET(IWL_RX_PHY_DATA2_HE_MU_EXT_CH2_RU0, 976 phy_data2); 977 he_mu->ru_ch2[1] = FIELD_GET(IWL_RX_PHY_DATA3_HE_MU_EXT_CH2_RU1, 978 phy_data3); 979 he_mu->ru_ch2[2] = FIELD_GET(IWL_RX_PHY_DATA2_HE_MU_EXT_CH2_RU2, 980 phy_data2); 981 he_mu->ru_ch2[3] = FIELD_GET(IWL_RX_PHY_DATA3_HE_MU_EXT_CH2_RU3, 982 phy_data3); 983 } 984 } 985 986 static void > 987 iwl_mvm_decode_he_phy_ru_alloc(struct iwl_mvm_rx_phy_data *phy_data, 988 struct ieee80211_radiotap_he *he, 989 struct ieee80211_radiotap_he_mu *he_mu, 990 struct ieee80211_rx_status *rx_status) 991 { 992 /* 993 * Unfortunately, we have to leave the mac80211 data 994 * incorrect for the case that we receive an HE-MU 995 * transmission and *don't* have the HE phy data (due 996 * to the bits being used for TSF). This shouldn't 997 * happen though as management frames where we need 998 * the TSF/timers are not be transmitted in HE-MU. 999 */ 1000 u8 ru = le32_get_bits(phy_data->d1, IWL_RX_PHY_DATA1_HE_RU_ALLOC_MASK); 1001 u32 rate_n_flags = phy_data->rate_n_flags; 1002 u32 he_type = rate_n_flags & RATE_MCS_HE_TYPE_MSK_V1; 1003 u8 offs = 0; 1004 1005 rx_status->bw = RATE_INFO_BW_HE_RU; 1006 1007 he->data1 |= cpu_to_le16(IEEE80211_RADIOTAP_HE_DATA1_BW_RU_ALLOC_KNOWN); 1008 1009 switch (ru) { 1010 case 0 ... 36: 1011 rx_status->he_ru = NL80211_RATE_INFO_HE_RU_ALLOC_26; 1012 offs = ru; 1013 break; 1014 case 37 ... 52: 1015 rx_status->he_ru = NL80211_RATE_INFO_HE_RU_ALLOC_52; 1016 offs = ru - 37; 1017 break; 1018 case 53 ... 60: 1019 rx_status->he_ru = NL80211_RATE_INFO_HE_RU_ALLOC_106; 1020 offs = ru - 53; 1021 break; 1022 case 61 ... 64: 1023 rx_status->he_ru = NL80211_RATE_INFO_HE_RU_ALLOC_242; 1024 offs = ru - 61; 1025 break; 1026 case 65 ... 66: 1027 rx_status->he_ru = NL80211_RATE_INFO_HE_RU_ALLOC_484; 1028 offs = ru - 65; 1029 break; 1030 case 67: 1031 rx_status->he_ru = NL80211_RATE_INFO_HE_RU_ALLOC_996; 1032 break; 1033 case 68: 1034 rx_status->he_ru = NL80211_RATE_INFO_HE_RU_ALLOC_2x996; 1035 break; 1036 } 1037 he->data2 |= le16_encode_bits(offs, 1038 IEEE80211_RADIOTAP_HE_DATA2_RU_OFFSET); 1039 he->data2 |= cpu_to_le16(IEEE80211_RADIOTAP_HE_DATA2_PRISEC_80_KNOWN | 1040 IEEE80211_RADIOTAP_HE_DATA2_RU_OFFSET_KNOWN); 1041 if (phy_data->d1 & cpu_to_le32(IWL_RX_PHY_DATA1_HE_RU_ALLOC_SEC80)) 1042 he->data2 |= 1043 cpu_to_le16(IEEE80211_RADIOTAP_HE_DATA2_PRISEC_80_SEC); 1044 1045 #define CHECK_BW(bw) \ 1046 do { \ 1047 BUILD_BUG_ON(IEEE80211_RADIOTAP_HE_MU_FLAGS2_BW_FROM_SIG_A_BW_ ## bw ## MHZ != \ 1048 RATE_MCS_CHAN_WIDTH_##bw >> RATE_MCS_CHAN_WIDTH_POS); \ 1049 BUILD_BUG_ON(IEEE80211_RADIOTAP_HE_DATA6_TB_PPDU_BW_ ## bw ## MHZ != \ 1050 RATE_MCS_CHAN_WIDTH_##bw >> RATE_MCS_CHAN_WIDTH_POS) \ > 1051 while (0); 1052 1053 CHECK_BW(20); 1054 CHECK_BW(40); > 1055 CHECK_BW(80); > 1056 CHECK_BW(160); 1057 1058 if (he_mu) 1059 he_mu->flags2 |= 1060 le16_encode_bits(FIELD_GET(RATE_MCS_CHAN_WIDTH_MSK_V1, 1061 rate_n_flags), 1062 IEEE80211_RADIOTAP_HE_MU_FLAGS2_BW_FROM_SIG_A_BW); 1063 else if (he_type == RATE_MCS_HE_TYPE_TRIG_V1) 1064 he->data6 |= 1065 cpu_to_le16(IEEE80211_RADIOTAP_HE_DATA6_TB_PPDU_BW_KNOWN) | 1066 le16_encode_bits(FIELD_GET(RATE_MCS_CHAN_WIDTH_MSK_V1, 1067 rate_n_flags), 1068 IEEE80211_RADIOTAP_HE_DATA6_TB_PPDU_BW); 1069 } 1070 > 1071 static void iwl_mvm_decode_he_phy_data(struct iwl_mvm *mvm, 1072 struct iwl_mvm_rx_phy_data *phy_data, 1073 struct ieee80211_radiotap_he *he, 1074 struct ieee80211_radiotap_he_mu *he_mu, 1075 struct ieee80211_rx_status *rx_status, 1076 int queue) 1077 { 1078 switch (phy_data->info_type) { 1079 case IWL_RX_PHY_INFO_TYPE_NONE: 1080 case IWL_RX_PHY_INFO_TYPE_CCK: 1081 case IWL_RX_PHY_INFO_TYPE_OFDM_LGCY: 1082 case IWL_RX_PHY_INFO_TYPE_HT: 1083 case IWL_RX_PHY_INFO_TYPE_VHT_SU: 1084 case IWL_RX_PHY_INFO_TYPE_VHT_MU: 1085 case IWL_RX_PHY_INFO_TYPE_EHT_MU: 1086 case IWL_RX_PHY_INFO_TYPE_EHT_TB: 1087 case IWL_RX_PHY_INFO_TYPE_EHT_MU_EXT: 1088 case IWL_RX_PHY_INFO_TYPE_EHT_TB_EXT: 1089 return; 1090 case IWL_RX_PHY_INFO_TYPE_HE_TB_EXT: 1091 he->data1 |= cpu_to_le16(IEEE80211_RADIOTAP_HE_DATA1_SPTL_REUSE_KNOWN | 1092 IEEE80211_RADIOTAP_HE_DATA1_SPTL_REUSE2_KNOWN | 1093 IEEE80211_RADIOTAP_HE_DATA1_SPTL_REUSE3_KNOWN | 1094 IEEE80211_RADIOTAP_HE_DATA1_SPTL_REUSE4_KNOWN); 1095 he->data4 |= le16_encode_bits(le32_get_bits(phy_data->d2, 1096 IWL_RX_PHY_DATA2_HE_TB_EXT_SPTL_REUSE1), 1097 IEEE80211_RADIOTAP_HE_DATA4_TB_SPTL_REUSE1); 1098 he->data4 |= le16_encode_bits(le32_get_bits(phy_data->d2, 1099 IWL_RX_PHY_DATA2_HE_TB_EXT_SPTL_REUSE2), 1100 IEEE80211_RADIOTAP_HE_DATA4_TB_SPTL_REUSE2); 1101 he->data4 |= le16_encode_bits(le32_get_bits(phy_data->d2, 1102 IWL_RX_PHY_DATA2_HE_TB_EXT_SPTL_REUSE3), 1103 IEEE80211_RADIOTAP_HE_DATA4_TB_SPTL_REUSE3); 1104 he->data4 |= le16_encode_bits(le32_get_bits(phy_data->d2, 1105 IWL_RX_PHY_DATA2_HE_TB_EXT_SPTL_REUSE4), 1106 IEEE80211_RADIOTAP_HE_DATA4_TB_SPTL_REUSE4); 1107 fallthrough; 1108 case IWL_RX_PHY_INFO_TYPE_HE_SU: 1109 case IWL_RX_PHY_INFO_TYPE_HE_MU: 1110 case IWL_RX_PHY_INFO_TYPE_HE_MU_EXT: 1111 case IWL_RX_PHY_INFO_TYPE_HE_TB: 1112 /* HE common */ 1113 he->data1 |= cpu_to_le16(IEEE80211_RADIOTAP_HE_DATA1_LDPC_XSYMSEG_KNOWN | 1114 IEEE80211_RADIOTAP_HE_DATA1_DOPPLER_KNOWN | 1115 IEEE80211_RADIOTAP_HE_DATA1_BSS_COLOR_KNOWN); 1116 he->data2 |= cpu_to_le16(IEEE80211_RADIOTAP_HE_DATA2_PRE_FEC_PAD_KNOWN | 1117 IEEE80211_RADIOTAP_HE_DATA2_PE_DISAMBIG_KNOWN | 1118 IEEE80211_RADIOTAP_HE_DATA2_TXOP_KNOWN | 1119 IEEE80211_RADIOTAP_HE_DATA2_NUM_LTF_SYMS_KNOWN); 1120 he->data3 |= le16_encode_bits(le32_get_bits(phy_data->d0, 1121 IWL_RX_PHY_DATA0_HE_BSS_COLOR_MASK), 1122 IEEE80211_RADIOTAP_HE_DATA3_BSS_COLOR); 1123 if (phy_data->info_type != IWL_RX_PHY_INFO_TYPE_HE_TB && 1124 phy_data->info_type != IWL_RX_PHY_INFO_TYPE_HE_TB_EXT) { 1125 he->data1 |= cpu_to_le16(IEEE80211_RADIOTAP_HE_DATA1_UL_DL_KNOWN); 1126 he->data3 |= le16_encode_bits(le32_get_bits(phy_data->d0, 1127 IWL_RX_PHY_DATA0_HE_UPLINK), 1128 IEEE80211_RADIOTAP_HE_DATA3_UL_DL); 1129 } 1130 he->data3 |= le16_encode_bits(le32_get_bits(phy_data->d0, 1131 IWL_RX_PHY_DATA0_HE_LDPC_EXT_SYM), 1132 IEEE80211_RADIOTAP_HE_DATA3_LDPC_XSYMSEG); 1133 he->data5 |= le16_encode_bits(le32_get_bits(phy_data->d0, 1134 IWL_RX_PHY_DATA0_HE_PRE_FEC_PAD_MASK), 1135 IEEE80211_RADIOTAP_HE_DATA5_PRE_FEC_PAD); 1136 he->data5 |= le16_encode_bits(le32_get_bits(phy_data->d0, 1137 IWL_RX_PHY_DATA0_HE_PE_DISAMBIG), 1138 IEEE80211_RADIOTAP_HE_DATA5_PE_DISAMBIG); 1139 he->data5 |= le16_encode_bits(le32_get_bits(phy_data->d1, 1140 IWL_RX_PHY_DATA1_HE_LTF_NUM_MASK), 1141 IEEE80211_RADIOTAP_HE_DATA5_NUM_LTF_SYMS); 1142 he->data6 |= le16_encode_bits(le32_get_bits(phy_data->d0, 1143 IWL_RX_PHY_DATA0_HE_TXOP_DUR_MASK), 1144 IEEE80211_RADIOTAP_HE_DATA6_TXOP); 1145 he->data6 |= le16_encode_bits(le32_get_bits(phy_data->d0, 1146 IWL_RX_PHY_DATA0_HE_DOPPLER), 1147 IEEE80211_RADIOTAP_HE_DATA6_DOPPLER); 1148 break; 1149 } 1150 1151 switch (phy_data->info_type) { 1152 case IWL_RX_PHY_INFO_TYPE_HE_MU_EXT: 1153 case IWL_RX_PHY_INFO_TYPE_HE_MU: 1154 case IWL_RX_PHY_INFO_TYPE_HE_SU: 1155 he->data1 |= cpu_to_le16(IEEE80211_RADIOTAP_HE_DATA1_SPTL_REUSE_KNOWN); 1156 he->data4 |= le16_encode_bits(le32_get_bits(phy_data->d0, 1157 IWL_RX_PHY_DATA0_HE_SPATIAL_REUSE_MASK), 1158 IEEE80211_RADIOTAP_HE_DATA4_SU_MU_SPTL_REUSE); 1159 break; 1160 default: 1161 /* nothing here */ 1162 break; 1163 } 1164 1165 switch (phy_data->info_type) { 1166 case IWL_RX_PHY_INFO_TYPE_HE_MU_EXT: 1167 he_mu->flags1 |= 1168 le16_encode_bits(le16_get_bits(phy_data->d4, 1169 IWL_RX_PHY_DATA4_HE_MU_EXT_SIGB_DCM), 1170 IEEE80211_RADIOTAP_HE_MU_FLAGS1_SIG_B_DCM); 1171 he_mu->flags1 |= 1172 le16_encode_bits(le16_get_bits(phy_data->d4, 1173 IWL_RX_PHY_DATA4_HE_MU_EXT_SIGB_MCS_MASK), 1174 IEEE80211_RADIOTAP_HE_MU_FLAGS1_SIG_B_MCS); 1175 he_mu->flags2 |= 1176 le16_encode_bits(le16_get_bits(phy_data->d4, 1177 IWL_RX_PHY_DATA4_HE_MU_EXT_PREAMBLE_PUNC_TYPE_MASK), 1178 IEEE80211_RADIOTAP_HE_MU_FLAGS2_PUNC_FROM_SIG_A_BW); 1179 iwl_mvm_decode_he_mu_ext(mvm, phy_data, he_mu); 1180 fallthrough; 1181 case IWL_RX_PHY_INFO_TYPE_HE_MU: 1182 he_mu->flags2 |= 1183 le16_encode_bits(le32_get_bits(phy_data->d1, 1184 IWL_RX_PHY_DATA1_HE_MU_SIBG_SYM_OR_USER_NUM_MASK), 1185 IEEE80211_RADIOTAP_HE_MU_FLAGS2_SIG_B_SYMS_USERS); 1186 he_mu->flags2 |= 1187 le16_encode_bits(le32_get_bits(phy_data->d1, 1188 IWL_RX_PHY_DATA1_HE_MU_SIGB_COMPRESSION), 1189 IEEE80211_RADIOTAP_HE_MU_FLAGS2_SIG_B_COMP); 1190 fallthrough; 1191 case IWL_RX_PHY_INFO_TYPE_HE_TB: 1192 case IWL_RX_PHY_INFO_TYPE_HE_TB_EXT: 1193 iwl_mvm_decode_he_phy_ru_alloc(phy_data, he, he_mu, rx_status); 1194 break; 1195 case IWL_RX_PHY_INFO_TYPE_HE_SU: 1196 he->data1 |= cpu_to_le16(IEEE80211_RADIOTAP_HE_DATA1_BEAM_CHANGE_KNOWN); 1197 he->data3 |= le16_encode_bits(le32_get_bits(phy_data->d0, 1198 IWL_RX_PHY_DATA0_HE_BEAM_CHNG), 1199 IEEE80211_RADIOTAP_HE_DATA3_BEAM_CHANGE); 1200 break; 1201 default: 1202 /* nothing */ 1203 break; 1204 } 1205 } 1206 -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki