}
if (params->beacon.uhr_oper) {
+ const struct ieee80211_uhr_npca_info *npca;
+ struct ieee80211_bss_npca_params npca_params = {};
+
if (!link_conf->eht_support)
return -EOPNOTSUPP;
link_conf->uhr_support = true;
+
+ npca = ieee80211_uhr_npca_info(params->beacon.uhr_oper);
+ if (!npca) {
+ chanreq.oper.npca_chan = NULL;
+ chanreq.oper.npca_punctured = 0;
+ } else {
+ npca_params.min_dur_thresh =
+ le32_get_bits(npca->params,
+ IEEE80211_UHR_NPCA_PARAMS_MIN_DUR_THRESH);
+ npca_params.switch_delay =
+ le32_get_bits(npca->params,
+ IEEE80211_UHR_NPCA_PARAMS_SWITCH_DELAY);
+ npca_params.switch_back_delay =
+ le32_get_bits(npca->params,
+ IEEE80211_UHR_NPCA_PARAMS_SWITCH_BACK_DELAY);
+ npca_params.init_qsrc =
+ le32_get_bits(npca->params,
+ IEEE80211_UHR_NPCA_PARAMS_INIT_QSRC);
+ npca_params.moplen =
+ le32_get_bits(npca->params,
+ IEEE80211_UHR_NPCA_PARAMS_MOPLEN);
+ npca_params.enabled = true;
+ }
+
+ if (memcmp(&npca_params, &link->conf->npca,
+ sizeof(npca_params))) {
+ link->conf->npca = npca_params;
+ changed |= BSS_CHANGED_NPCA;
+ }
}
if (sdata->vif.type == NL80211_IFTYPE_AP &&