Message ID | 20240208185302.9c6a4acabdb3.I501de5c0d86b9702bf61158a2e91c954a1da9a2a@changeid (mailing list archive) |
---|---|
State | Accepted |
Delegated to: | Johannes Berg |
Headers | show |
Series | wifi: iwlwifi: updates - 2024-02-08 | expand |
Hi Miri, 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.8-rc3 next-20240208] [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/Miri-Korenblit/wifi-iwlwifi-nvm-parse-the-VLP-AFC-bit-from-regulatory/20240209-010143 base: https://git.kernel.org/pub/scm/linux/kernel/git/wireless/wireless-next.git main patch link: https://lore.kernel.org/r/20240208185302.9c6a4acabdb3.I501de5c0d86b9702bf61158a2e91c954a1da9a2a%40changeid patch subject: [PATCH 01/13] wifi: iwlwifi: nvm: parse the VLP/AFC bit from regulatory config: loongarch-allmodconfig (https://download.01.org/0day-ci/archive/20240209/202402091145.eSxJkrSO-lkp@intel.com/config) compiler: loongarch64-linux-gcc (GCC) 13.2.0 reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240209/202402091145.eSxJkrSO-lkp@intel.com/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@intel.com> | Closes: https://lore.kernel.org/oe-kbuild-all/202402091145.eSxJkrSO-lkp@intel.com/ All errors (new ones prefixed by >>): drivers/net/wireless/intel/iwlwifi/iwl-nvm-parse.c: In function 'iwl_get_channel_flags': >> drivers/net/wireless/intel/iwlwifi/iwl-nvm-parse.c:377:26: error: 'IEEE80211_CHAN_NO_6GHZ_VLP_CLIENT' undeclared (first use in this function); did you mean 'IEEE80211_CHAN_NO_UHB_VLP_CLIENT'? 377 | flags |= IEEE80211_CHAN_NO_6GHZ_VLP_CLIENT; | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | IEEE80211_CHAN_NO_UHB_VLP_CLIENT drivers/net/wireless/intel/iwlwifi/iwl-nvm-parse.c:377:26: note: each undeclared identifier is reported only once for each function it appears in >> drivers/net/wireless/intel/iwlwifi/iwl-nvm-parse.c:379:26: error: 'IEEE80211_CHAN_NO_6GHZ_AFC_CLIENT' undeclared (first use in this function); did you mean 'IEEE80211_CHAN_NO_UHB_AFC_CLIENT'? 379 | flags |= IEEE80211_CHAN_NO_6GHZ_AFC_CLIENT; | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | IEEE80211_CHAN_NO_UHB_AFC_CLIENT drivers/net/wireless/intel/iwlwifi/iwl-nvm-parse.c: In function 'iwl_nvm_get_regdom_bw_flags': >> drivers/net/wireless/intel/iwlwifi/iwl-nvm-parse.c:1665:34: error: 'NL80211_RRF_NO_6GHZ_VLP_CLIENT' undeclared (first use in this function); did you mean 'NL80211_RRF_NO_UHB_VLP_CLIENT'? 1665 | flags |= NL80211_RRF_NO_6GHZ_VLP_CLIENT; | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | NL80211_RRF_NO_UHB_VLP_CLIENT >> drivers/net/wireless/intel/iwlwifi/iwl-nvm-parse.c:1668:34: error: 'NL80211_RRF_NO_6GHZ_AFC_CLIENT' undeclared (first use in this function); did you mean 'NL80211_RRF_NO_UHB_AFC_CLIENT'? 1668 | flags |= NL80211_RRF_NO_6GHZ_AFC_CLIENT; | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | NL80211_RRF_NO_UHB_AFC_CLIENT vim +377 drivers/net/wireless/intel/iwlwifi/iwl-nvm-parse.c 334 335 static u32 iwl_get_channel_flags(u8 ch_num, int ch_idx, enum nl80211_band band, 336 u32 nvm_flags, const struct iwl_cfg *cfg) 337 { 338 u32 flags = IEEE80211_CHAN_NO_HT40; 339 340 if (band == NL80211_BAND_2GHZ && (nvm_flags & NVM_CHANNEL_40MHZ)) { 341 if (ch_num <= LAST_2GHZ_HT_PLUS) 342 flags &= ~IEEE80211_CHAN_NO_HT40PLUS; 343 if (ch_num >= FIRST_2GHZ_HT_MINUS) 344 flags &= ~IEEE80211_CHAN_NO_HT40MINUS; 345 } else if (nvm_flags & NVM_CHANNEL_40MHZ) { 346 if ((ch_idx - NUM_2GHZ_CHANNELS) % 2 == 0) 347 flags &= ~IEEE80211_CHAN_NO_HT40PLUS; 348 else 349 flags &= ~IEEE80211_CHAN_NO_HT40MINUS; 350 } 351 if (!(nvm_flags & NVM_CHANNEL_80MHZ)) 352 flags |= IEEE80211_CHAN_NO_80MHZ; 353 if (!(nvm_flags & NVM_CHANNEL_160MHZ)) 354 flags |= IEEE80211_CHAN_NO_160MHZ; 355 356 if (!(nvm_flags & NVM_CHANNEL_IBSS)) 357 flags |= IEEE80211_CHAN_NO_IR; 358 359 if (!(nvm_flags & NVM_CHANNEL_ACTIVE)) 360 flags |= IEEE80211_CHAN_NO_IR; 361 362 if (nvm_flags & NVM_CHANNEL_RADAR) 363 flags |= IEEE80211_CHAN_RADAR; 364 365 if (nvm_flags & NVM_CHANNEL_INDOOR_ONLY) 366 flags |= IEEE80211_CHAN_INDOOR_ONLY; 367 368 /* Set the GO concurrent flag only in case that NO_IR is set. 369 * Otherwise it is meaningless 370 */ 371 if ((nvm_flags & NVM_CHANNEL_GO_CONCURRENT) && 372 (flags & IEEE80211_CHAN_NO_IR)) 373 flags |= IEEE80211_CHAN_IR_CONCURRENT; 374 375 /* Set the AP type for the UHB case. */ 376 if (!(nvm_flags & NVM_CHANNEL_VLP)) > 377 flags |= IEEE80211_CHAN_NO_6GHZ_VLP_CLIENT; 378 if (!(nvm_flags & NVM_CHANNEL_AFC)) > 379 flags |= IEEE80211_CHAN_NO_6GHZ_AFC_CLIENT; 380 381 return flags; 382 } 383
Hi Miri, 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.8-rc3 next-20240209] [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/Miri-Korenblit/wifi-iwlwifi-nvm-parse-the-VLP-AFC-bit-from-regulatory/20240209-010143 base: https://git.kernel.org/pub/scm/linux/kernel/git/wireless/wireless-next.git main patch link: https://lore.kernel.org/r/20240208185302.9c6a4acabdb3.I501de5c0d86b9702bf61158a2e91c954a1da9a2a%40changeid patch subject: [PATCH 01/13] wifi: iwlwifi: nvm: parse the VLP/AFC bit from regulatory config: arm64-allmodconfig (https://download.01.org/0day-ci/archive/20240210/202402102159.h0x3mL2v-lkp@intel.com/config) compiler: clang version 19.0.0git (https://github.com/llvm/llvm-project 7dd790db8b77c4a833c06632e903dc4f13877a64) reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240210/202402102159.h0x3mL2v-lkp@intel.com/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@intel.com> | Closes: https://lore.kernel.org/oe-kbuild-all/202402102159.h0x3mL2v-lkp@intel.com/ All errors (new ones prefixed by >>): >> drivers/net/wireless/intel/iwlwifi/iwl-nvm-parse.c:377:12: error: use of undeclared identifier 'IEEE80211_CHAN_NO_6GHZ_VLP_CLIENT'; did you mean 'IEEE80211_CHAN_NO_UHB_VLP_CLIENT'? 377 | flags |= IEEE80211_CHAN_NO_6GHZ_VLP_CLIENT; | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | IEEE80211_CHAN_NO_UHB_VLP_CLIENT include/net/cfg80211.h:149:2: note: 'IEEE80211_CHAN_NO_UHB_VLP_CLIENT' declared here 149 | IEEE80211_CHAN_NO_UHB_VLP_CLIENT= 1<<22, | ^ >> drivers/net/wireless/intel/iwlwifi/iwl-nvm-parse.c:379:12: error: use of undeclared identifier 'IEEE80211_CHAN_NO_6GHZ_AFC_CLIENT'; did you mean 'IEEE80211_CHAN_NO_UHB_AFC_CLIENT'? 379 | flags |= IEEE80211_CHAN_NO_6GHZ_AFC_CLIENT; | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | IEEE80211_CHAN_NO_UHB_AFC_CLIENT include/net/cfg80211.h:150:2: note: 'IEEE80211_CHAN_NO_UHB_AFC_CLIENT' declared here 150 | IEEE80211_CHAN_NO_UHB_AFC_CLIENT= 1<<23, | ^ >> drivers/net/wireless/intel/iwlwifi/iwl-nvm-parse.c:1665:13: error: use of undeclared identifier 'NL80211_RRF_NO_6GHZ_VLP_CLIENT'; did you mean 'NL80211_RRF_NO_UHB_VLP_CLIENT'? 1665 | flags |= NL80211_RRF_NO_6GHZ_VLP_CLIENT; | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | NL80211_RRF_NO_UHB_VLP_CLIENT include/uapi/linux/nl80211.h:4543:2: note: 'NL80211_RRF_NO_UHB_VLP_CLIENT' declared here 4543 | NL80211_RRF_NO_UHB_VLP_CLIENT = 1<<22, | ^ >> drivers/net/wireless/intel/iwlwifi/iwl-nvm-parse.c:1668:13: error: use of undeclared identifier 'NL80211_RRF_NO_6GHZ_AFC_CLIENT'; did you mean 'NL80211_RRF_NO_UHB_AFC_CLIENT'? 1668 | flags |= NL80211_RRF_NO_6GHZ_AFC_CLIENT; | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | NL80211_RRF_NO_UHB_AFC_CLIENT include/uapi/linux/nl80211.h:4544:2: note: 'NL80211_RRF_NO_UHB_AFC_CLIENT' declared here 4544 | NL80211_RRF_NO_UHB_AFC_CLIENT = 1<<23, | ^ 4 errors generated. vim +377 drivers/net/wireless/intel/iwlwifi/iwl-nvm-parse.c 334 335 static u32 iwl_get_channel_flags(u8 ch_num, int ch_idx, enum nl80211_band band, 336 u32 nvm_flags, const struct iwl_cfg *cfg) 337 { 338 u32 flags = IEEE80211_CHAN_NO_HT40; 339 340 if (band == NL80211_BAND_2GHZ && (nvm_flags & NVM_CHANNEL_40MHZ)) { 341 if (ch_num <= LAST_2GHZ_HT_PLUS) 342 flags &= ~IEEE80211_CHAN_NO_HT40PLUS; 343 if (ch_num >= FIRST_2GHZ_HT_MINUS) 344 flags &= ~IEEE80211_CHAN_NO_HT40MINUS; 345 } else if (nvm_flags & NVM_CHANNEL_40MHZ) { 346 if ((ch_idx - NUM_2GHZ_CHANNELS) % 2 == 0) 347 flags &= ~IEEE80211_CHAN_NO_HT40PLUS; 348 else 349 flags &= ~IEEE80211_CHAN_NO_HT40MINUS; 350 } 351 if (!(nvm_flags & NVM_CHANNEL_80MHZ)) 352 flags |= IEEE80211_CHAN_NO_80MHZ; 353 if (!(nvm_flags & NVM_CHANNEL_160MHZ)) 354 flags |= IEEE80211_CHAN_NO_160MHZ; 355 356 if (!(nvm_flags & NVM_CHANNEL_IBSS)) 357 flags |= IEEE80211_CHAN_NO_IR; 358 359 if (!(nvm_flags & NVM_CHANNEL_ACTIVE)) 360 flags |= IEEE80211_CHAN_NO_IR; 361 362 if (nvm_flags & NVM_CHANNEL_RADAR) 363 flags |= IEEE80211_CHAN_RADAR; 364 365 if (nvm_flags & NVM_CHANNEL_INDOOR_ONLY) 366 flags |= IEEE80211_CHAN_INDOOR_ONLY; 367 368 /* Set the GO concurrent flag only in case that NO_IR is set. 369 * Otherwise it is meaningless 370 */ 371 if ((nvm_flags & NVM_CHANNEL_GO_CONCURRENT) && 372 (flags & IEEE80211_CHAN_NO_IR)) 373 flags |= IEEE80211_CHAN_IR_CONCURRENT; 374 375 /* Set the AP type for the UHB case. */ 376 if (!(nvm_flags & NVM_CHANNEL_VLP)) > 377 flags |= IEEE80211_CHAN_NO_6GHZ_VLP_CLIENT; 378 if (!(nvm_flags & NVM_CHANNEL_AFC)) > 379 flags |= IEEE80211_CHAN_NO_6GHZ_AFC_CLIENT; 380 381 return flags; 382 } 383
diff --git a/drivers/net/wireless/intel/iwlwifi/iwl-nvm-parse.c b/drivers/net/wireless/intel/iwlwifi/iwl-nvm-parse.c index d2f133255ee6..baa39a18087a 100644 --- a/drivers/net/wireless/intel/iwlwifi/iwl-nvm-parse.c +++ b/drivers/net/wireless/intel/iwlwifi/iwl-nvm-parse.c @@ -156,6 +156,8 @@ static struct ieee80211_rate iwl_cfg80211_rates[] = { * @NVM_CHANNEL_80MHZ: 80 MHz channel okay * @NVM_CHANNEL_160MHZ: 160 MHz channel okay * @NVM_CHANNEL_DC_HIGH: DC HIGH required/allowed (?) + * @NVM_CHANNEL_VLP: client support connection to UHB VLP AP + * @NVM_CHANNEL_AFC: client support connection to UHB AFC AP */ enum iwl_nvm_channel_flags { NVM_CHANNEL_VALID = BIT(0), @@ -170,6 +172,8 @@ enum iwl_nvm_channel_flags { NVM_CHANNEL_80MHZ = BIT(10), NVM_CHANNEL_160MHZ = BIT(11), NVM_CHANNEL_DC_HIGH = BIT(12), + NVM_CHANNEL_VLP = BIT(13), + NVM_CHANNEL_AFC = BIT(14), }; /** @@ -309,7 +313,7 @@ static inline void iwl_nvm_print_channel_flags(struct device *dev, u32 level, /* Note: already can print up to 101 characters, 110 is the limit! */ IWL_DEBUG_DEV(dev, level, - "Ch. %d: 0x%x:%s%s%s%s%s%s%s%s%s%s%s%s\n", + "Ch. %d: 0x%x:%s%s%s%s%s%s%s%s%s%s%s%s%s%s\n", chan, flags, CHECK_AND_PRINT_I(VALID), CHECK_AND_PRINT_I(IBSS), @@ -322,7 +326,9 @@ static inline void iwl_nvm_print_channel_flags(struct device *dev, u32 level, CHECK_AND_PRINT_I(40MHZ), CHECK_AND_PRINT_I(80MHZ), CHECK_AND_PRINT_I(160MHZ), - CHECK_AND_PRINT_I(DC_HIGH)); + CHECK_AND_PRINT_I(DC_HIGH), + CHECK_AND_PRINT_I(VLP), + CHECK_AND_PRINT_I(AFC)); #undef CHECK_AND_PRINT_I } @@ -366,6 +372,12 @@ static u32 iwl_get_channel_flags(u8 ch_num, int ch_idx, enum nl80211_band band, (flags & IEEE80211_CHAN_NO_IR)) flags |= IEEE80211_CHAN_IR_CONCURRENT; + /* Set the AP type for the UHB case. */ + if (!(nvm_flags & NVM_CHANNEL_VLP)) + flags |= IEEE80211_CHAN_NO_6GHZ_VLP_CLIENT; + if (!(nvm_flags & NVM_CHANNEL_AFC)) + flags |= IEEE80211_CHAN_NO_6GHZ_AFC_CLIENT; + return flags; } @@ -1600,7 +1612,8 @@ IWL_EXPORT_SYMBOL(iwl_parse_nvm_data); static u32 iwl_nvm_get_regdom_bw_flags(const u16 *nvm_chan, int ch_idx, u16 nvm_flags, struct iwl_reg_capa reg_capa, - const struct iwl_cfg *cfg) + const struct iwl_cfg *cfg, + bool uats_enabled) { u32 flags = NL80211_RRF_NO_HT40; @@ -1645,6 +1658,16 @@ static u32 iwl_nvm_get_regdom_bw_flags(const u16 *nvm_chan, flags &= ~NL80211_RRF_NO_IR; } } + + /* Set the AP type for the UHB case. */ + if (uats_enabled) { + if (!(nvm_flags & NVM_CHANNEL_VLP)) + flags |= NL80211_RRF_NO_6GHZ_VLP_CLIENT; + + if (!(nvm_flags & NVM_CHANNEL_AFC)) + flags |= NL80211_RRF_NO_6GHZ_AFC_CLIENT; + } + /* * reg_capa is per regulatory domain so apply it for every channel */ @@ -1699,7 +1722,7 @@ static struct iwl_reg_capa iwl_get_reg_capa(u32 flags, u8 resp_ver) struct ieee80211_regdomain * iwl_parse_nvm_mcc_info(struct device *dev, const struct iwl_cfg *cfg, int num_of_ch, __le32 *channels, u16 fw_mcc, - u16 geo_info, u32 cap, u8 resp_ver) + u16 geo_info, u32 cap, u8 resp_ver, bool uats_enabled) { int ch_idx; u16 ch_flags; @@ -1765,7 +1788,7 @@ iwl_parse_nvm_mcc_info(struct device *dev, const struct iwl_cfg *cfg, reg_rule_flags = iwl_nvm_get_regdom_bw_flags(nvm_chan, ch_idx, ch_flags, reg_capa, - cfg); + cfg, uats_enabled); /* we can't continue the same rule */ if (ch_idx == 0 || prev_reg_rule_flags != reg_rule_flags || diff --git a/drivers/net/wireless/intel/iwlwifi/iwl-nvm-parse.h b/drivers/net/wireless/intel/iwlwifi/iwl-nvm-parse.h index 651ed25b683b..fd9c3bed9407 100644 --- a/drivers/net/wireless/intel/iwlwifi/iwl-nvm-parse.h +++ b/drivers/net/wireless/intel/iwlwifi/iwl-nvm-parse.h @@ -50,7 +50,7 @@ iwl_parse_nvm_data(struct iwl_trans *trans, const struct iwl_cfg *cfg, struct ieee80211_regdomain * iwl_parse_nvm_mcc_info(struct device *dev, const struct iwl_cfg *cfg, int num_of_ch, __le32 *channels, u16 fw_mcc, - u16 geo_info, u32 cap, u8 resp_ver); + u16 geo_info, u32 cap, u8 resp_ver, bool uats_enabled); /** * struct iwl_nvm_section - describes an NVM section in memory. diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c b/drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c index a051e0c955d5..4a6b4f82eab4 100644 --- a/drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c +++ b/drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c @@ -138,7 +138,8 @@ struct ieee80211_regdomain *iwl_mvm_get_regdomain(struct wiphy *wiphy, resp->channels, __le16_to_cpu(resp->mcc), __le16_to_cpu(resp->geo_info), - le32_to_cpu(resp->cap), resp_ver); + le32_to_cpu(resp->cap), resp_ver, + mvm->fwrt.uats_enabled); /* Store the return source id */ src_id = resp->source_id; if (IS_ERR_OR_NULL(regd)) {