diff --git a/core/hdd/src/wlan_hdd_cfg80211.c b/core/hdd/src/wlan_hdd_cfg80211.c index c9f279dedc70..d09a0fb57c79 100644 --- a/core/hdd/src/wlan_hdd_cfg80211.c +++ b/core/hdd/src/wlan_hdd_cfg80211.c @@ -2957,9 +2957,17 @@ static int __wlan_hdd_cfg80211_do_acs(struct wiphy *wiphy, wlan_reg_freq_to_chan(hdd_ctx->pdev, sap_config->acs_cfg.ht_sec_ch_freq); sap_config->ch_params.center_freq_seg0 = - sap_config->acs_cfg.vht_seg0_center_ch; + wlan_reg_freq_to_chan( + hdd_ctx->pdev, + sap_config->acs_cfg.vht_seg0_center_ch_freq); sap_config->ch_params.center_freq_seg1 = - sap_config->acs_cfg.vht_seg1_center_ch; + wlan_reg_freq_to_chan( + hdd_ctx->pdev, + sap_config->acs_cfg.vht_seg1_center_ch_freq); + sap_config->ch_params.mhz_freq_seg0 = + sap_config->acs_cfg.vht_seg0_center_ch_freq; + sap_config->ch_params.mhz_freq_seg1 = + sap_config->acs_cfg.vht_seg1_center_ch_freq; /*notify hostapd about channel override */ wlan_hdd_cfg80211_acs_ch_select_evt(adapter); ret = 0; @@ -3157,6 +3165,7 @@ void wlan_hdd_cfg80211_acs_ch_select_evt(struct hdd_adapter *adapter) uint16_t ch_width; uint8_t pri_channel; uint8_t ht_sec_channel; + uint8_t vht_seg0_center_ch, vht_seg1_center_ch; vendor_event = cfg80211_vendor_event_alloc(hdd_ctx->wiphy, &(adapter->wdev), @@ -3192,19 +3201,23 @@ void wlan_hdd_cfg80211_acs_ch_select_evt(struct hdd_adapter *adapter) kfree_skb(vendor_event); return; } - + vht_seg0_center_ch = wlan_reg_freq_to_chan( + hdd_ctx->pdev, + sap_cfg->acs_cfg.vht_seg0_center_ch_freq); ret_val = nla_put_u8(vendor_event, QCA_WLAN_VENDOR_ATTR_ACS_VHT_SEG0_CENTER_CHANNEL, - sap_cfg->acs_cfg.vht_seg0_center_ch); + vht_seg0_center_ch); if (ret_val) { hdd_err("QCA_WLAN_VENDOR_ATTR_ACS_VHT_SEG0_CENTER_CHANNEL put fail"); kfree_skb(vendor_event); return; } - + vht_seg1_center_ch = wlan_reg_freq_to_chan( + hdd_ctx->pdev, + sap_cfg->acs_cfg.vht_seg1_center_ch_freq); ret_val = nla_put_u8(vendor_event, QCA_WLAN_VENDOR_ATTR_ACS_VHT_SEG1_CENTER_CHANNEL, - sap_cfg->acs_cfg.vht_seg1_center_ch); + vht_seg1_center_ch); if (ret_val) { hdd_err("QCA_WLAN_VENDOR_ATTR_ACS_VHT_SEG1_CENTER_CHANNEL put fail"); kfree_skb(vendor_event); @@ -3246,8 +3259,8 @@ void wlan_hdd_cfg80211_acs_ch_select_evt(struct hdd_adapter *adapter) hdd_debug("ACS result for %s: PRI_CH_FREQ: %d SEC_CH_FREQ: %d VHT_SEG0: %d VHT_SEG1: %d ACS_BW: %d", adapter->dev->name, sap_cfg->acs_cfg.pri_ch_freq, sap_cfg->acs_cfg.ht_sec_ch_freq, - sap_cfg->acs_cfg.vht_seg0_center_ch, - sap_cfg->acs_cfg.vht_seg1_center_ch, ch_width); + sap_cfg->acs_cfg.vht_seg0_center_ch_freq, + sap_cfg->acs_cfg.vht_seg1_center_ch_freq, ch_width); cfg80211_vendor_event(vendor_event, GFP_KERNEL); /* ***Note*** As already mentioned Completion variable usage is not @@ -10964,10 +10977,13 @@ static void hdd_update_acs_sap_config(struct hdd_context *hdd_ctx, sap_config->acs_cfg.pri_ch_freq = wlan_reg_chan_to_freq(hdd_ctx->pdev, channel_list->pri_ch); sap_config->acs_cfg.ch_width = channel_list->chan_width; - sap_config->acs_cfg.vht_seg0_center_ch = - channel_list->vht_seg0_center_ch; - sap_config->acs_cfg.vht_seg1_center_ch = - channel_list->vht_seg1_center_ch; + sap_config->acs_cfg.vht_seg0_center_ch_freq = + wlan_reg_chan_to_freq( + hdd_ctx->pdev, channel_list->vht_seg0_center_ch); + sap_config->acs_cfg.vht_seg1_center_ch_freq = + wlan_reg_chan_to_freq( + hdd_ctx->pdev, channel_list->vht_seg1_center_ch); + sap_config->acs_cfg.ht_sec_ch_freq = wlan_reg_chan_to_freq(hdd_ctx->pdev, channel_list->ht_sec_ch); } diff --git a/core/hdd/src/wlan_hdd_hostapd.c b/core/hdd/src/wlan_hdd_hostapd.c index 7850cdbef8ca..e246bd9c34c1 100644 --- a/core/hdd/src/wlan_hdd_hostapd.c +++ b/core/hdd/src/wlan_hdd_hostapd.c @@ -2527,24 +2527,28 @@ QDF_STATUS hdd_hostapd_sap_event_cb(struct sap_event *sap_event, sap_event->sapevt.sap_ch_selected.pri_ch_freq; ap_ctx->sap_config.acs_cfg.ht_sec_ch_freq = sap_event->sapevt.sap_ch_selected.ht_sec_ch_freq; - ap_ctx->sap_config.acs_cfg.vht_seg0_center_ch = - sap_event->sapevt.sap_ch_selected.vht_seg0_center_ch; - ap_ctx->sap_config.acs_cfg.vht_seg1_center_ch = - sap_event->sapevt.sap_ch_selected.vht_seg1_center_ch; + ap_ctx->sap_config.acs_cfg.vht_seg0_center_ch_freq = + sap_event->sapevt.sap_ch_selected.vht_seg0_center_ch_freq; + ap_ctx->sap_config.acs_cfg.vht_seg1_center_ch_freq = + sap_event->sapevt.sap_ch_selected.vht_seg1_center_ch_freq; ap_ctx->sap_config.acs_cfg.ch_width = sap_event->sapevt.sap_ch_selected.ch_width; sap_ch_param.ch_width = sap_event->sapevt.sap_ch_selected.ch_width; sap_ch_param.center_freq_seg0 = - sap_event->sapevt.sap_ch_selected.vht_seg0_center_ch; + wlan_reg_freq_to_chan( + hdd_ctx->pdev, + sap_event->sapevt.sap_ch_selected.vht_seg0_center_ch_freq); + sap_ch_param.center_freq_seg1 = - sap_event->sapevt.sap_ch_selected.vht_seg1_center_ch; - wlan_reg_set_channel_params(hdd_ctx->pdev, - wlan_reg_freq_to_chan(hdd_ctx->pdev, - sap_event->sapevt.sap_ch_selected.pri_ch_freq), - wlan_reg_freq_to_chan(hdd_ctx->pdev, - sap_event->sapevt.sap_ch_selected.ht_sec_ch_freq), + wlan_reg_freq_to_chan( + hdd_ctx->pdev, + sap_event->sapevt.sap_ch_selected.vht_seg1_center_ch_freq); + wlan_reg_set_channel_params_for_freq( + hdd_ctx->pdev, + sap_event->sapevt.sap_ch_selected.pri_ch_freq, + sap_event->sapevt.sap_ch_selected.ht_sec_ch_freq, &sap_ch_param); cdp_hl_fc_set_td_limit(cds_get_context(QDF_MODULE_ID_SOC), @@ -2577,9 +2581,13 @@ QDF_STATUS hdd_hostapd_sap_event_cb(struct sap_event *sap_event, chan_change.chan_params.sec_ch_offset = sap_ch_param.sec_ch_offset; chan_change.chan_params.center_freq_seg0 = - sap_event->sapevt.sap_ch_selected.vht_seg0_center_ch; + wlan_reg_freq_to_chan( + hdd_ctx->pdev, + sap_event->sapevt.sap_ch_selected.vht_seg0_center_ch_freq); chan_change.chan_params.center_freq_seg1 = - sap_event->sapevt.sap_ch_selected.vht_seg1_center_ch; + wlan_reg_freq_to_chan( + hdd_ctx->pdev, + sap_event->sapevt.sap_ch_selected.vht_seg1_center_ch_freq); return hdd_chan_change_notify(adapter, dev, chan_change, legacy_phymode); @@ -2595,10 +2603,10 @@ QDF_STATUS hdd_hostapd_sap_event_cb(struct sap_event *sap_event, sap_event->sapevt.sap_ch_selected.pri_ch_freq; ap_ctx->sap_config.acs_cfg.ht_sec_ch_freq = sap_event->sapevt.sap_ch_selected.ht_sec_ch_freq; - ap_ctx->sap_config.acs_cfg.vht_seg0_center_ch = - sap_event->sapevt.sap_ch_selected.vht_seg0_center_ch; - ap_ctx->sap_config.acs_cfg.vht_seg1_center_ch = - sap_event->sapevt.sap_ch_selected.vht_seg1_center_ch; + ap_ctx->sap_config.acs_cfg.vht_seg0_center_ch_freq = + sap_event->sapevt.sap_ch_selected.vht_seg0_center_ch_freq; + ap_ctx->sap_config.acs_cfg.vht_seg1_center_ch_freq = + sap_event->sapevt.sap_ch_selected.vht_seg1_center_ch_freq; ap_ctx->sap_config.acs_cfg.ch_width = sap_event->sapevt.sap_ch_selected.ch_width; wlan_hdd_cfg80211_acs_ch_select_evt(adapter); diff --git a/core/sap/inc/sap_api.h b/core/sap/inc/sap_api.h index 94a16eced256..e1959cbf9182 100644 --- a/core/sap/inc/sap_api.h +++ b/core/sap/inc/sap_api.h @@ -350,8 +350,8 @@ typedef struct sap_MaxAssocExceededEvent_s { struct sap_ch_selected_s { uint32_t pri_ch_freq; uint32_t ht_sec_ch_freq; - uint16_t vht_seg0_center_ch; - uint16_t vht_seg1_center_ch; + uint16_t vht_seg0_center_ch_freq; + uint16_t vht_seg1_center_ch_freq; uint16_t ch_width; }; @@ -452,8 +452,8 @@ struct sap_acs_cfg { /* ACS Algo Output */ uint32_t pri_ch_freq; uint32_t ht_sec_ch_freq; - uint8_t vht_seg0_center_ch; - uint8_t vht_seg1_center_ch; + uint32_t vht_seg0_center_ch_freq; + uint32_t vht_seg1_center_ch_freq; uint32_t band; }; diff --git a/core/sap/src/sap_api_link_cntl.c b/core/sap/src/sap_api_link_cntl.c index 7b5f6b61d28b..7c10dc3aa780 100644 --- a/core/sap/src/sap_api_link_cntl.c +++ b/core/sap/src/sap_api_link_cntl.c @@ -97,27 +97,26 @@ void sap_config_acs_result(mac_handle_t mac_handle, struct sap_context *sap_ctx, uint32_t sec_ch_freq) { - uint32_t channel = wlan_freq_to_chan(sap_ctx->acs_cfg->pri_ch_freq); struct ch_params ch_params = {0}; struct mac_context *mac_ctx = MAC_CONTEXT(mac_handle); - uint8_t sec_ch; - sec_ch = wlan_freq_to_chan(sec_ch_freq); ch_params.ch_width = sap_ctx->acs_cfg->ch_width; - wlan_reg_set_channel_params(mac_ctx->pdev, channel, sec_ch, - &ch_params); + wlan_reg_set_channel_params_for_freq( + mac_ctx->pdev, sap_ctx->acs_cfg->pri_ch_freq, + sec_ch_freq, &ch_params); sap_ctx->acs_cfg->ch_width = ch_params.ch_width; - if (sap_ctx->acs_cfg->ch_width > CH_WIDTH_40MHZ) - sap_ctx->acs_cfg->vht_seg0_center_ch = - ch_params.center_freq_seg0; + if (sap_ctx->acs_cfg->ch_width > CH_WIDTH_40MHZ || + WLAN_REG_IS_6GHZ_CHAN_FREQ(sap_ctx->acs_cfg->pri_ch_freq)) + sap_ctx->acs_cfg->vht_seg0_center_ch_freq = + ch_params.mhz_freq_seg0; else - sap_ctx->acs_cfg->vht_seg0_center_ch = 0; + sap_ctx->acs_cfg->vht_seg0_center_ch_freq = 0; if (sap_ctx->acs_cfg->ch_width == CH_WIDTH_80P80MHZ) - sap_ctx->acs_cfg->vht_seg1_center_ch = - ch_params.center_freq_seg1; + sap_ctx->acs_cfg->vht_seg1_center_ch_freq = + ch_params.mhz_freq_seg1; else - sap_ctx->acs_cfg->vht_seg1_center_ch = 0; + sap_ctx->acs_cfg->vht_seg1_center_ch_freq = 0; if (ch_params.sec_ch_offset == PHY_DOUBLE_CHANNEL_HIGH_PRIMARY) sap_ctx->acs_cfg->ht_sec_ch_freq = diff --git a/core/sap/src/sap_fsm.c b/core/sap/src/sap_fsm.c index 873923d1a8a9..54b33bbd1ab5 100644 --- a/core/sap/src/sap_fsm.c +++ b/core/sap/src/sap_fsm.c @@ -1505,10 +1505,10 @@ QDF_STATUS sap_signal_hdd_event(struct sap_context *sap_ctx, acs_selected->ht_sec_ch_freq = sap_ctx->acs_cfg->ht_sec_ch_freq; acs_selected->ch_width = sap_ctx->acs_cfg->ch_width; - acs_selected->vht_seg0_center_ch = - sap_ctx->acs_cfg->vht_seg0_center_ch; - acs_selected->vht_seg1_center_ch = - sap_ctx->acs_cfg->vht_seg1_center_ch; + acs_selected->vht_seg0_center_ch_freq = + sap_ctx->acs_cfg->vht_seg0_center_ch_freq; + acs_selected->vht_seg1_center_ch_freq = + sap_ctx->acs_cfg->vht_seg1_center_ch_freq; } else if (eSAP_STATUS_FAILURE == (eSapStatus)context) { acs_selected->pri_ch_freq = 0; } @@ -1750,10 +1750,10 @@ QDF_STATUS sap_signal_hdd_event(struct sap_context *sap_ctx, acs_selected->ht_sec_ch_freq = sap_ctx->sec_ch_freq; acs_selected->ch_width = sap_ctx->csr_roamProfile.ch_params.ch_width; - acs_selected->vht_seg0_center_ch = - sap_ctx->csr_roamProfile.ch_params.center_freq_seg0; - acs_selected->vht_seg1_center_ch = - sap_ctx->csr_roamProfile.ch_params.center_freq_seg1; + acs_selected->vht_seg0_center_ch_freq = + sap_ctx->csr_roamProfile.ch_params.mhz_freq_seg0; + acs_selected->vht_seg1_center_ch_freq = + sap_ctx->csr_roamProfile.ch_params.mhz_freq_seg1; break; case eSAP_ECSA_CHANGE_CHAN_IND: