qcacld-3.0: Add support for LL_LT_SAP_MODE in policy mgr

Currently PM_LL_LT_SAP_MODE is not handled in policy manager.
With this change add support for PM_LL_LT_SAP_MODE in the policy
manager.

Change-Id: Icfbb3a95dc65225fc7dad5df7dca9306a5029402
CRs-Fixed: 3536491
This commit is contained in:
Ashish Kumar Dhanotiya
2023-06-21 11:09:38 +05:30
committed by Rahul Choudhary
parent 84a9b935b3
commit fe6d7d0625
14 changed files with 142 additions and 161 deletions

View File

@@ -67,9 +67,9 @@ QDF_STATUS if_mgr_connect_start(struct wlan_objmgr_vdev *vdev,
sta_cnt = policy_mgr_get_mode_specific_conn_info(psoc, NULL,
vdev_id_list,
PM_STA_MODE);
sap_cnt = policy_mgr_get_mode_specific_conn_info(psoc, NULL,
&vdev_id_list[sta_cnt],
PM_SAP_MODE);
sap_cnt = policy_mgr_get_sap_mode_info(psoc, NULL,
&vdev_id_list[sta_cnt]);
op_mode = wlan_vdev_mlme_get_opmode(vdev);
if (op_mode == QDF_STA_MODE || op_mode == QDF_P2P_CLIENT_MODE)

View File

@@ -145,6 +145,7 @@ static inline const char *device_mode_to_string(uint32_t idx)
CASE_RETURN_STRING(PM_P2P_GO_MODE);
CASE_RETURN_STRING(PM_NDI_MODE);
CASE_RETURN_STRING(PM_NAN_DISC_MODE);
CASE_RETURN_STRING(PM_LL_LT_SAP_MODE);
default:
return "Unknown";
}
@@ -2409,19 +2410,6 @@ bool policy_mgr_is_mcc_on_any_sta_vdev(struct wlan_objmgr_psoc *psoc);
void policy_mgr_soc_set_dual_mac_cfg_cb(enum set_hw_mode_status status,
uint32_t scan_config, uint32_t fw_mode_config);
/**
* policy_mgr_map_concurrency_mode() - to map concurrency mode
* between sme and hdd
* @old_mode: sme provided adapter mode
* @new_mode: hdd provided concurrency mode
*
* This routine will map concurrency mode between sme and hdd
*
* Return: true or false
*/
bool policy_mgr_map_concurrency_mode(enum QDF_OPMODE *old_mode,
enum policy_mgr_con_mode *new_mode);
/**
* policy_mgr_mode_specific_num_open_sessions() - to get number of open sessions
* for a specific mode

View File

@@ -385,8 +385,8 @@ QDF_STATUS policy_mgr_update_connection_info(struct wlan_objmgr_psoc *psoc,
cur_freq = pm_conc_connection_list[conn_index].freq;
mode = policy_mgr_get_mode(conn_table_entry.type,
conn_table_entry.sub_type);
mode = policy_mgr_get_mode(psoc, conn_table_entry.type,
conn_table_entry.sub_type, vdev_id);
ch_freq = conn_table_entry.mhz;
status = policy_mgr_get_nss_for_vdev(psoc, mode, &nss_2g, &nss_5g);
if (QDF_IS_STATUS_SUCCESS(status)) {
@@ -1535,8 +1535,7 @@ static bool policy_mgr_is_sap_go_existed(struct wlan_objmgr_psoc *psoc)
{
uint32_t ap_present, go_present;
ap_present = policy_mgr_mode_specific_connection_count(
psoc, PM_SAP_MODE, NULL);
ap_present = policy_mgr_get_sap_mode_count(psoc, NULL);
if (ap_present)
return true;
@@ -1963,7 +1962,7 @@ policy_mgr_nan_sap_pre_enable_conc_check(struct wlan_objmgr_psoc *psoc,
return false;
}
if (!(mode == PM_SAP_MODE || mode == PM_NAN_DISC_MODE)) {
if (!policy_mgr_is_sap_mode(mode) || mode == PM_NAN_DISC_MODE) {
policy_mgr_debug("Not NAN or SAP mode");
return true;
}
@@ -1987,6 +1986,13 @@ policy_mgr_nan_sap_pre_enable_conc_check(struct wlan_objmgr_psoc *psoc,
sap_freq = policy_mgr_mode_specific_get_channel(pm_ctx->psoc,
PM_SAP_MODE);
policy_mgr_debug("FREQ SAP: %d NAN: %d", sap_freq, ch_freq);
if (!sap_freq) {
sap_freq = policy_mgr_mode_specific_get_channel(
pm_ctx->psoc,
PM_LL_LT_SAP_MODE);
policy_mgr_debug("FREQ LL_LT_SAP: %d NAN: %d",
sap_freq, ch_freq);
}
if (ucfg_is_nan_dbs_supported(pm_ctx->psoc) &&
!WLAN_REG_IS_SAME_BAND_FREQS(sap_freq, ch_freq))
return true;
@@ -2005,7 +2011,7 @@ policy_mgr_nan_sap_pre_enable_conc_check(struct wlan_objmgr_psoc *psoc,
policy_mgr_debug("NAN+SAP unsafe ch SCC disabled");
return false;
}
} else if (mode == PM_SAP_MODE) {
} else if (policy_mgr_is_sap_mode(mode)) {
nan_2g_freq =
policy_mgr_mode_specific_get_channel(pm_ctx->psoc,
PM_NAN_DISC_MODE);
@@ -2063,7 +2069,7 @@ policy_mgr_nan_sap_post_enable_conc_check(struct wlan_objmgr_psoc *psoc)
qdf_mutex_acquire(&pm_ctx->qdf_conc_list_lock);
for (i = 0; i < MAX_NUMBER_OF_CONC_CONNECTIONS; i++) {
if (pm_conc_connection_list[i].mode == PM_SAP_MODE &&
if (policy_mgr_is_sap_mode(pm_conc_connection_list[i].mode) &&
pm_conc_connection_list[i].in_use) {
sap_info = &pm_conc_connection_list[i];
break;
@@ -2571,9 +2577,10 @@ static void __policy_mgr_check_sta_ap_concurrent_ch_intf(
if (!policy_mgr_is_sap_go_existed(pm_ctx->psoc))
goto end;
cc_count = policy_mgr_get_mode_specific_conn_info(
pm_ctx->psoc, &op_ch_freq_list[cc_count],
&vdev_id[cc_count], PM_SAP_MODE);
cc_count = policy_mgr_get_sap_mode_info(pm_ctx->psoc,
&op_ch_freq_list[cc_count],
&vdev_id[cc_count]);
policy_mgr_debug("Number of concurrent SAP: %d", cc_count);
if (cc_count < MAX_NUMBER_OF_CONC_CONNECTIONS)
cc_count = cc_count +

View File

@@ -529,7 +529,7 @@ void policy_mgr_update_conc_list(struct wlan_objmgr_psoc *psoc,
pm_ctx->cdp_cbacks.cdp_update_mac_id(psoc, vdev_id, mac);
/* IPA only cares about STA or SAP mode */
if (mode == PM_STA_MODE || mode == PM_SAP_MODE) {
if (mode == PM_STA_MODE || policy_mgr_is_sap_mode(mode)) {
mcc_mode = policy_mgr_current_concurrency_is_mcc(psoc);
if (pm_ctx->dp_cbacks.hdd_ipa_set_mcc_mode_cb)
@@ -1166,6 +1166,9 @@ static uint32_t policy_mgr_dump_current_concurrency_one_connection(
case PM_NDI_MODE:
count = strlcat(cc_mode, "NDI", length);
break;
case PM_LL_LT_SAP_MODE:
count = strlcat(cc_mode, "LT_SAP", length);
break;
default:
policy_mgr_err("unexpected mode %d", mode);
break;
@@ -1237,6 +1240,12 @@ static uint32_t policy_mgr_dump_current_concurrency_two_connection(
psoc, cc_mode, length);
count += strlcat(cc_mode, "+NAN Disc", length);
break;
case PM_LL_LT_SAP_MODE:
count = policy_mgr_dump_current_concurrency_one_connection(
psoc, cc_mode, length);
count += strlcat(cc_mode, "+LT_SAP",
length);
break;
default:
policy_mgr_err("unexpected mode %d", mode);
break;
@@ -1309,6 +1318,13 @@ static uint32_t policy_mgr_dump_current_concurrency_three_connection(
count += strlcat(cc_mode, "+NDI",
length);
break;
case PM_LL_LT_SAP_MODE:
count = policy_mgr_dump_current_concurrency_two_connection(
psoc, cc_mode, length);
count += strlcat(cc_mode, "+LT_SAP",
length);
break;
default:
policy_mgr_err("unexpected mode %d", mode);
break;
@@ -1519,6 +1535,13 @@ static uint32_t policy_mgr_dump_current_concurrency_4_connection(
count += strlcat(cc_mode, "+NDI",
length);
break;
case PM_LL_LT_SAP_MODE:
count = policy_mgr_dump_current_concurrency_three_connection(
psoc, cc_mode, length);
count += strlcat(cc_mode, "+LT_SAP",
length);
break;
default:
policy_mgr_err("unexpected mode %d", mode);
break;
@@ -2082,25 +2105,26 @@ uint32_t policy_mgr_get_connection_for_vdev_id(struct wlan_objmgr_psoc *psoc,
return conn_index;
}
/**
* policy_mgr_get_mode() - Get mode from type and subtype
* @type: type
* @subtype: subtype
*
* Get the concurrency mode from the type and subtype
* of the interface
*
* Return: policy_mgr_con_mode
*/
enum policy_mgr_con_mode policy_mgr_get_mode(uint8_t type,
uint8_t subtype)
enum policy_mgr_con_mode policy_mgr_get_mode(struct wlan_objmgr_psoc *psoc,
uint8_t type, uint8_t subtype,
uint32_t vdev_id)
{
enum policy_mgr_con_mode mode = PM_MAX_NUM_OF_MODE;
if (type == WMI_VDEV_TYPE_AP) {
switch (subtype) {
case 0:
mode = PM_SAP_MODE;
/*
* This feature flag is added on temporary basis, once LL_LT_SAP is
* enabled, this feature flag will be removed.
*/
#ifdef WLAN_FEATURE_LL_LT_SAP
if (policy_mgr_is_vdev_ll_lt_sap(psoc, vdev_id))
mode = PM_LL_LT_SAP_MODE;
else
#endif
mode = PM_SAP_MODE;
break;
case WMI_UNIFIED_VDEV_SUBTYPE_P2P_GO:
mode = PM_P2P_GO_MODE;
@@ -4409,8 +4433,8 @@ QDF_STATUS policy_mgr_nss_update(struct wlan_objmgr_psoc *psoc,
}
}
count = policy_mgr_mode_specific_connection_count(psoc,
PM_SAP_MODE, list);
count = policy_mgr_get_sap_mode_count(psoc, list);
for (index = 0; index < count; index++) {
qdf_mutex_acquire(&pm_ctx->qdf_conc_list_lock);
vdev_id = pm_conc_connection_list[list[index]].vdev_id;

View File

@@ -4912,10 +4912,9 @@ void policy_mgr_incr_active_session(struct wlan_objmgr_psoc *psoc,
* there are more than one STA connections
*/
if ((policy_mgr_mode_specific_connection_count(psoc, PM_STA_MODE, NULL) > 1) ||
(policy_mgr_mode_specific_connection_count(psoc, PM_SAP_MODE, NULL) > 0) ||
(policy_mgr_get_beaconing_mode_count(psoc, NULL) > 0) ||
(policy_mgr_mode_specific_connection_count(psoc, PM_P2P_CLIENT_MODE, NULL) >
0) ||
(policy_mgr_mode_specific_connection_count(psoc, PM_P2P_GO_MODE, NULL) > 0) ||
(policy_mgr_mode_specific_connection_count(psoc,
PM_NDI_MODE,
NULL) > 0)) {
@@ -4924,8 +4923,7 @@ void policy_mgr_incr_active_session(struct wlan_objmgr_psoc *psoc,
};
/* Enable RPS if SAP interface has come up */
if (policy_mgr_mode_specific_connection_count(psoc, PM_SAP_MODE, NULL)
== 1) {
if (policy_mgr_get_sap_mode_count(psoc, NULL) == 1) {
if (pm_ctx->dp_cbacks.hdd_set_rx_mode_rps_cb)
pm_ctx->dp_cbacks.hdd_set_rx_mode_rps_cb(true);
}
@@ -5080,15 +5078,10 @@ QDF_STATUS policy_mgr_decr_active_session(struct wlan_objmgr_psoc *psoc,
((policy_mgr_mode_specific_connection_count(psoc,
PM_STA_MODE,
NULL) == 1) &&
(policy_mgr_mode_specific_connection_count(psoc,
PM_SAP_MODE,
NULL) == 0) &&
(policy_mgr_get_beaconing_mode_count(psoc, NULL) == 0) &&
(policy_mgr_mode_specific_connection_count(psoc,
PM_P2P_CLIENT_MODE,
NULL) == 0) &&
(policy_mgr_mode_specific_connection_count(psoc,
PM_P2P_GO_MODE,
NULL) == 0) &&
(policy_mgr_mode_specific_connection_count(psoc,
PM_NDI_MODE,
NULL) == 0))) {
@@ -5097,8 +5090,7 @@ QDF_STATUS policy_mgr_decr_active_session(struct wlan_objmgr_psoc *psoc,
};
/* Disable RPS if SAP interface has come up */
if (policy_mgr_mode_specific_connection_count(psoc, PM_SAP_MODE, NULL)
== 0) {
if (policy_mgr_get_sap_mode_count(psoc, NULL) == 0) {
if (pm_ctx->dp_cbacks.hdd_set_rx_mode_rps_cb)
pm_ctx->dp_cbacks.hdd_set_rx_mode_rps_cb(false);
}
@@ -5181,8 +5173,8 @@ QDF_STATUS policy_mgr_incr_connection_count(struct wlan_objmgr_psoc *psoc,
return QDF_STATUS_E_FAILURE;
}
mode = policy_mgr_get_mode(conn_table_entry.type,
conn_table_entry.sub_type);
mode = policy_mgr_get_mode(psoc, conn_table_entry.type,
conn_table_entry.sub_type, vdev_id);
ch_freq = conn_table_entry.mhz;
status = policy_mgr_get_nss_for_vdev(psoc, mode, &nss_2g, &nss_5g);
if (QDF_IS_STATUS_SUCCESS(status)) {
@@ -5293,40 +5285,6 @@ QDF_STATUS policy_mgr_decr_connection_count(struct wlan_objmgr_psoc *psoc,
return QDF_STATUS_SUCCESS;
}
bool policy_mgr_map_concurrency_mode(enum QDF_OPMODE *old_mode,
enum policy_mgr_con_mode *new_mode)
{
bool status = true;
switch (*old_mode) {
case QDF_STA_MODE:
*new_mode = PM_STA_MODE;
break;
case QDF_SAP_MODE:
*new_mode = PM_SAP_MODE;
break;
case QDF_P2P_CLIENT_MODE:
*new_mode = PM_P2P_CLIENT_MODE;
break;
case QDF_P2P_GO_MODE:
*new_mode = PM_P2P_GO_MODE;
break;
case QDF_NAN_DISC_MODE:
*new_mode = PM_NAN_DISC_MODE;
break;
case QDF_NDI_MODE:
*new_mode = PM_NDI_MODE;
break;
default:
*new_mode = PM_MAX_NUM_OF_MODE;
status = false;
break;
}
return status;
}
uint32_t policy_mgr_get_mode_specific_conn_info(
struct wlan_objmgr_psoc *psoc,
uint32_t *ch_freq_list, uint8_t *vdev_id,
@@ -5719,8 +5677,7 @@ static bool policy_mgr_is_6g_channel_allowed(
is_dfs = (conn->ch_flagext &
(IEEE80211_CHAN_DFS | IEEE80211_CHAN_DFS_CFREQ2)) &&
WLAN_REG_IS_5GHZ_CH_FREQ(conn->freq);
if ((conn->mode == PM_SAP_MODE ||
conn->mode == PM_P2P_GO_MODE) &&
if (policy_mgr_is_beaconing_mode(conn->mode) &&
is_dfs && (ch_freq != conn->freq &&
!policy_mgr_are_sbs_chan(psoc, ch_freq,
conn->freq))) {
@@ -7224,12 +7181,10 @@ policy_mgr_handle_ml_sta_link_concurrency(struct wlan_objmgr_psoc *psoc,
* the link, disabled by SAP/P2P logic, as this API only consider
* STA specific counts and ignore other counts.
*/
if (policy_mgr_mode_specific_connection_count(psoc,
PM_SAP_MODE, NULL) ||
if (policy_mgr_get_beaconing_mode_count(psoc, NULL) ||
policy_mgr_mode_specific_connection_count(psoc,
PM_P2P_CLIENT_MODE, NULL) ||
policy_mgr_mode_specific_connection_count(psoc,
PM_P2P_GO_MODE, NULL)) {
PM_P2P_CLIENT_MODE,
NULL)) {
policy_mgr_debug("SAP/GO/CLI exist ignore this check");
return QDF_STATUS_E_INVAL;
}
@@ -7271,8 +7226,8 @@ policy_mgr_handle_ml_sta_link_concurrency(struct wlan_objmgr_psoc *psoc,
static bool
policy_mgr_is_mode_p2p_sap(enum policy_mgr_con_mode mode)
{
return (mode == PM_SAP_MODE) || (mode == PM_P2P_CLIENT_MODE) ||
(mode == PM_P2P_GO_MODE);
return (policy_mgr_is_beaconing_mode(mode) ||
(mode == PM_P2P_CLIENT_MODE));
}
bool
@@ -10248,9 +10203,8 @@ uint32_t policy_mgr_get_sap_go_count_on_mac(struct wlan_objmgr_psoc *psoc,
conn_index++) {
if (pm_conc_connection_list[conn_index].mac == mac_id &&
pm_conc_connection_list[conn_index].in_use &&
(pm_conc_connection_list[conn_index].mode == PM_SAP_MODE ||
pm_conc_connection_list[conn_index].mode ==
PM_P2P_GO_MODE)) {
policy_mgr_is_beaconing_mode(
pm_conc_connection_list[conn_index].mode)) {
if (list)
list[count] =
pm_conc_connection_list[conn_index].vdev_id;
@@ -10314,9 +10268,9 @@ QDF_STATUS policy_mgr_is_chan_ok_for_dnbs(struct wlan_objmgr_psoc *psoc,
return QDF_STATUS_E_INVAL;
}
cc_count = policy_mgr_get_mode_specific_conn_info(
psoc, &op_ch_freq_list[cc_count],
&vdev_id[cc_count], PM_SAP_MODE);
cc_count = policy_mgr_get_sap_mode_info(psoc,
&op_ch_freq_list[cc_count],
&vdev_id[cc_count]);
if (cc_count < MAX_NUMBER_OF_CONC_CONNECTIONS)
cc_count = cc_count +
@@ -10748,7 +10702,7 @@ bool policy_mgr_is_multi_sap_allowed_on_same_band(
return false;
}
if (!ch_freq || mode != PM_SAP_MODE)
if (!ch_freq || !policy_mgr_is_sap_mode(mode))
return true;
status = policy_mgr_get_multi_sap_allowed_on_same_band(psoc,
@@ -10763,8 +10717,7 @@ bool policy_mgr_is_multi_sap_allowed_on_same_band(
uint32_t list[MAX_NUMBER_OF_CONC_CONNECTIONS];
struct policy_mgr_conc_connection_info *ap_info;
ap_cnt = policy_mgr_mode_specific_connection_count(psoc,
PM_SAP_MODE, list);
ap_cnt = policy_mgr_get_sap_mode_count(psoc, list);
if (!ap_cnt)
return true;
@@ -11031,7 +10984,8 @@ void policy_mgr_init_ap_6ghz_capable(struct wlan_objmgr_psoc *psoc,
for (conn_index = 0; conn_index < MAX_NUMBER_OF_CONC_CONNECTIONS;
conn_index++) {
conn_info = &pm_conc_connection_list[conn_index];
if (conn_info->in_use && PM_SAP_MODE == conn_info->mode &&
if (conn_info->in_use &&
policy_mgr_is_sap_mode(conn_info->mode) &&
vdev_id == conn_info->vdev_id) {
conn_info->conn_6ghz_flag = ap_6ghz_capable;
conn_info->conn_6ghz_flag |= CONN_6GHZ_FLAG_VALID;
@@ -11063,8 +11017,8 @@ void policy_mgr_set_ap_6ghz_capable(struct wlan_objmgr_psoc *psoc,
for (conn_index = 0; conn_index < MAX_NUMBER_OF_CONC_CONNECTIONS;
conn_index++) {
conn_info = &pm_conc_connection_list[conn_index];
if (conn_info->in_use && (PM_SAP_MODE == conn_info->mode ||
PM_P2P_GO_MODE == conn_info->mode) &&
if (conn_info->in_use &&
policy_mgr_is_beaconing_mode(conn_info->mode) &&
policy_mgr_is_6ghz_conc_mode_supported(
psoc, conn_info->mode) &&
vdev_id == conn_info->vdev_id) {
@@ -11104,8 +11058,8 @@ bool policy_mgr_get_ap_6ghz_capable(struct wlan_objmgr_psoc *psoc,
for (conn_index = 0; conn_index < MAX_NUMBER_OF_CONC_CONNECTIONS;
conn_index++) {
conn_info = &pm_conc_connection_list[conn_index];
if (conn_info->in_use && (PM_SAP_MODE == conn_info->mode ||
PM_P2P_GO_MODE == conn_info->mode) &&
if (conn_info->in_use &&
policy_mgr_is_beaconing_mode(conn_info->mode) &&
policy_mgr_is_6ghz_conc_mode_supported(
psoc, conn_info->mode) &&
vdev_id == conn_info->vdev_id) {
@@ -11249,10 +11203,8 @@ policy_mgr_fetch_existing_con_info(struct wlan_objmgr_psoc *psoc,
qdf_mutex_acquire(&pm_ctx->qdf_conc_list_lock);
for (conn_index = 0; conn_index < MAX_NUMBER_OF_CONC_CONNECTIONS;
conn_index++) {
if ((pm_conc_connection_list[conn_index].mode ==
PM_P2P_GO_MODE ||
pm_conc_connection_list[conn_index].mode ==
PM_SAP_MODE ||
if ((policy_mgr_is_beaconing_mode(
pm_conc_connection_list[conn_index].mode) ||
pm_conc_connection_list[conn_index].mode ==
PM_P2P_CLIENT_MODE ||
pm_conc_connection_list[conn_index].mode ==
@@ -11591,10 +11543,7 @@ QDF_STATUS policy_mgr_check_mon_concurrency(struct wlan_objmgr_psoc *psoc)
return QDF_STATUS_E_BUSY;
}
num_open_session = policy_mgr_mode_specific_connection_count(
psoc,
PM_SAP_MODE,
NULL);
num_open_session = policy_mgr_get_sap_mode_count(psoc, NULL);
if (num_open_session) {
policy_mgr_err("cannot add monitor mode, due to SAP concurrency");
@@ -11858,8 +11807,8 @@ static qdf_freq_t _policy_mgr_get_ll_sap_freq(struct wlan_objmgr_psoc *psoc,
qdf_mutex_acquire(&pm_ctx->qdf_conc_list_lock);
for (conn_idx = 0; conn_idx < MAX_NUMBER_OF_CONC_CONNECTIONS;
conn_idx++) {
if (!(pm_conc_connection_list[conn_idx].mode ==
PM_SAP_MODE &&
if (!(policy_mgr_is_sap_mode(
pm_conc_connection_list[conn_idx].mode) &&
pm_conc_connection_list[conn_idx].in_use))
continue;

View File

@@ -818,8 +818,20 @@ policy_mgr_dump_disabled_ml_links(struct policy_mgr_psoc_priv_obj *pm_ctx) {}
void policy_mgr_dump_current_concurrency(struct wlan_objmgr_psoc *psoc);
void pm_dbs_opportunistic_timer_handler(void *data);
enum policy_mgr_con_mode policy_mgr_get_mode(uint8_t type,
uint8_t subtype);
/**
* policy_mgr_get_mode() - Get policy manager mode
* @psoc: psoc handle
* @type: WMI vdev type for which policy mgr mode is required
* @subtype: Subtype of the vdev type
* @vdev_id: Vdev id for which the policy mgr type is required
*
*
* Return: policy_mgr_con_mode
*/
enum policy_mgr_con_mode policy_mgr_get_mode(struct wlan_objmgr_psoc *psoc,
uint8_t type, uint8_t subtype,
uint32_t vdev_id);
/**
* policy_mgr_get_channel_list() - Get channel list based on PCL and mode

View File

@@ -3479,7 +3479,7 @@ QDF_STATUS policy_mgr_get_valid_chans_from_range(
ch_weight_len = *ch_cnt;
/* check the channel avoidance list for beaconing entities */
if (mode == PM_SAP_MODE || mode == PM_P2P_GO_MODE)
if (policy_mgr_is_beaconing_mode(mode))
policy_mgr_update_with_safe_channel_list(
psoc, ch_freq_list, ch_cnt, ch_weight_list,
ch_weight_len);
@@ -3930,10 +3930,7 @@ QDF_STATUS policy_mgr_get_valid_chan_weights(struct wlan_objmgr_psoc *psoc,
* vdev is SAP/P2PGO/P2PGC.
*/
if ((mode == PM_P2P_GO_MODE || mode == PM_P2P_CLIENT_MODE) &&
(policy_mgr_mode_specific_connection_count(
psoc, PM_SAP_MODE, NULL) ||
policy_mgr_mode_specific_connection_count(
psoc, PM_P2P_GO_MODE, NULL) ||
((policy_mgr_get_beaconing_mode_count(psoc, NULL)) ||
policy_mgr_mode_specific_connection_count(
psoc, PM_P2P_CLIENT_MODE, NULL)))
strict_follow_pcl = true;
@@ -4308,8 +4305,7 @@ bool policy_mgr_is_sta_chan_valid_for_connect_and_roam(
skip_6g_and_indoor_freq =
wlan_scan_cfg_skip_6g_and_indoor_freq(psoc);
sap_count =
policy_mgr_mode_specific_connection_count(psoc, PM_SAP_MODE,
NULL);
policy_mgr_get_sap_mode_count(psoc, NULL);
/*
* Do not allow STA to connect/roam on 6Ghz or indoor channel for
* non-dbs hardware if SAP is present and skip_6g_and_indoor_freq_scan

View File

@@ -1256,8 +1256,7 @@ QDF_STATUS nan_discovery_pre_enable(struct wlan_objmgr_pdev *pdev,
goto pre_enable_failure;
}
if (policy_mgr_mode_specific_connection_count(psoc, PM_SAP_MODE,
NULL) &&
if ((policy_mgr_get_sap_mode_count(psoc, NULL)) &&
!policy_mgr_nan_sap_pre_enable_conc_check(psoc, PM_NAN_DISC_MODE,
nan_ch_freq)) {
nan_debug("NAN not enabled due to concurrency constraints");

View File

@@ -14762,7 +14762,7 @@ static uint32_t wlan_hdd_populate_weigh_pcl(
w_pcl[i].freq = chan_weights->pcl_list[i];
w_pcl[i].weight = chan_weights->weight_list[i];
if (intf_mode == PM_SAP_MODE || intf_mode == PM_P2P_GO_MODE)
if (policy_mgr_is_beaconing_mode(intf_mode))
w_pcl[i].flag = PCL_CHANNEL_SUPPORT_GO;
else
w_pcl[i].flag = PCL_CHANNEL_SUPPORT_CLI;
@@ -14797,8 +14797,8 @@ static uint32_t wlan_hdd_populate_weigh_pcl(
PCL_CHANNEL_EXCLUDE_IN_GO_NEG;
w_pcl[chan_idx].weight = 0;
} else {
if (intf_mode == PM_SAP_MODE ||
intf_mode == PM_P2P_GO_MODE)
if (policy_mgr_is_beaconing_mode(
intf_mode))
w_pcl[chan_idx].flag =
PCL_CHANNEL_SUPPORT_GO;
else

View File

@@ -2033,12 +2033,7 @@ hdd_hostapd_check_channel_post_csa(struct hdd_context *hdd_ctx,
return;
}
sap_cnt = policy_mgr_mode_specific_connection_count(hdd_ctx->psoc,
PM_SAP_MODE,
NULL);
sap_cnt += policy_mgr_mode_specific_connection_count(hdd_ctx->psoc,
PM_P2P_GO_MODE,
NULL);
sap_cnt = policy_mgr_get_beaconing_mode_count(hdd_ctx->psoc, NULL);
if (sap_cnt > 1)
policy_mgr_check_concurrent_intf_and_restart_sap(
hdd_ctx->psoc,
@@ -4058,7 +4053,7 @@ uint32_t hdd_get_ap_6ghz_capable(struct wlan_objmgr_psoc *psoc, uint8_t vdev_id)
con_mode = policy_mgr_qdf_opmode_to_pm_con_mode(psoc,
ap_adapter->device_mode,
vdev_id);
if ((con_mode != PM_SAP_MODE && con_mode != PM_P2P_GO_MODE) ||
if (!policy_mgr_is_beaconing_mode(con_mode) ||
!policy_mgr_is_6ghz_conc_mode_supported(psoc, con_mode)) {
hdd_err("unexpected device mode %d", ap_adapter->device_mode);
wlan_objmgr_vdev_release_ref(vdev, WLAN_HDD_ID_OBJ_MGR);
@@ -7864,9 +7859,9 @@ static int __wlan_hdd_cfg80211_start_ap(struct wiphy *wiphy,
sta_cnt = policy_mgr_get_mode_specific_conn_info(hdd_ctx->psoc, NULL,
vdev_id_list,
PM_STA_MODE);
sap_cnt = policy_mgr_get_mode_specific_conn_info(hdd_ctx->psoc, NULL,
&vdev_id_list[sta_cnt],
PM_SAP_MODE);
sap_cnt = policy_mgr_get_sap_mode_info(hdd_ctx->psoc, NULL,
&vdev_id_list[sta_cnt]);
/* Disable NAN Disc before starting P2P GO or STA+SAP or SAP+SAP */
if (adapter->device_mode == QDF_P2P_GO_MODE || sta_cnt ||
(sap_cnt > (MAX_SAP_NUM_CONCURRENCY_WITH_NAN - 1))) {

View File

@@ -4776,9 +4776,7 @@ void __hdd_twt_update_work_handler(struct hdd_context *hdd_ctx)
sta_count = policy_mgr_mode_specific_connection_count(hdd_ctx->psoc,
PM_STA_MODE,
NULL);
sap_count = policy_mgr_mode_specific_connection_count(hdd_ctx->psoc,
PM_SAP_MODE,
NULL);
sap_count = policy_mgr_get_sap_mode_count(hdd_ctx->psoc, NULL);
twt_arg.hdd_ctx = hdd_ctx;
hdd_debug("Total connection %d, sta_count %d, sap_count %d",

View File

@@ -10374,9 +10374,8 @@ QDF_STATUS lim_ap_mlme_vdev_rnr_notify(struct pe_session *session)
return status;
pe_debug("vdev id %d non mlo 6G AP notify co-located AP to update RNR",
wlan_vdev_get_id(session->vdev));
vdev_num = policy_mgr_get_mode_specific_conn_info(
mac_ctx->psoc, freq_list, vdev_id_list,
PM_SAP_MODE);
vdev_num = policy_mgr_get_sap_mode_info(mac_ctx->psoc, freq_list,
vdev_id_list);
for (i = 0; i < vdev_num; i++) {
if (vdev_id_list[i] == session->vdev_id)
continue;

View File

@@ -3460,6 +3460,7 @@ wlansap_get_safe_channel(struct sap_context *sap_ctx,
mac_handle_t mac_handle;
uint32_t pcl_len = 0, i;
uint32_t selected_freq;
enum policy_mgr_con_mode mode;
if (!sap_ctx) {
sap_err("NULL parameter");
@@ -3473,6 +3474,9 @@ wlansap_get_safe_channel(struct sap_context *sap_ctx,
}
mac_handle = MAC_HANDLE(mac);
mode = policy_mgr_qdf_opmode_to_pm_con_mode(mac->psoc,
QDF_SAP_MODE,
sap_ctx->vdev_id);
/* get the channel list for current domain */
status = policy_mgr_get_valid_chans(mac->psoc, pcl_freqs, &pcl_len);
if (QDF_IS_STATUS_ERROR(status)) {
@@ -3491,7 +3495,7 @@ wlansap_get_safe_channel(struct sap_context *sap_ctx,
status = policy_mgr_get_valid_chans_from_range(mac->psoc,
pcl_freqs,
&pcl_len,
PM_SAP_MODE);
mode);
if (QDF_IS_STATUS_ERROR(status) || !pcl_len) {
sap_err("failed to get valid channel: %d len %d",
status, pcl_len);
@@ -3574,6 +3578,7 @@ wlansap_get_safe_channel_from_pcl_and_acs_range(struct sap_context *sap_ctx,
QDF_STATUS status;
mac_handle_t mac_handle;
uint32_t pcl_len = 0;
enum policy_mgr_con_mode mode;
if (!sap_ctx) {
sap_err("NULL parameter");
@@ -3592,8 +3597,11 @@ wlansap_get_safe_channel_from_pcl_and_acs_range(struct sap_context *sap_ctx,
return wlansap_get_safe_channel(sap_ctx, ch_width);
}
mode = policy_mgr_qdf_opmode_to_pm_con_mode(mac->psoc, QDF_SAP_MODE,
sap_ctx->vdev_id);
status =
policy_mgr_get_pcl_for_scc_in_same_mode(mac->psoc, PM_SAP_MODE,
policy_mgr_get_pcl_for_scc_in_same_mode(mac->psoc, mode,
pcl_freqs, &pcl_len,
pcl.weight_list,
QDF_ARRAY_SIZE(pcl.weight_list),
@@ -3697,6 +3705,7 @@ uint32_t wlansap_get_safe_channel_from_pcl_for_sap(struct sap_context *sap_ctx)
uint32_t pcl_freqs[NUM_CHANNELS] = {0};
QDF_STATUS status;
uint32_t pcl_len = 0;
enum policy_mgr_con_mode mode;
if (!sap_ctx) {
sap_err("NULL parameter");
@@ -3714,7 +3723,10 @@ uint32_t wlansap_get_safe_channel_from_pcl_for_sap(struct sap_context *sap_ctx)
sap_err("NULL pdev");
}
status = policy_mgr_get_pcl_for_vdev_id(mac->psoc, PM_SAP_MODE,
mode = policy_mgr_qdf_opmode_to_pm_con_mode(mac->psoc, QDF_SAP_MODE,
sap_ctx->vdev_id);
status = policy_mgr_get_pcl_for_vdev_id(mac->psoc, mode,
pcl_freqs, &pcl_len,
pcl.weight_list,
QDF_ARRAY_SIZE(pcl.weight_list),
@@ -3743,6 +3755,9 @@ uint32_t wlansap_get_safe_channel_from_pcl_for_sap(struct sap_context *sap_ctx)
sap_debug("pcl length is zero!");
}
if (mode == PM_LL_LT_SAP_MODE)
return INVALID_CHANNEL_ID;
return wlansap_get_2g_first_safe_chan_freq(sap_ctx);
}
@@ -4043,8 +4058,8 @@ bool wlansap_filter_vendor_unsafe_ch_freq(
if (!mac)
return false;
count = policy_mgr_mode_specific_connection_count(mac->psoc,
PM_SAP_MODE, NULL);
count = policy_mgr_get_sap_mode_count(mac->psoc, NULL);
if (count != policy_mgr_get_connection_count(mac->psoc))
return false;

View File

@@ -1379,9 +1379,8 @@ void osif_twt_concurrency_update_handler(struct wlan_objmgr_psoc *psoc,
sta_count = policy_mgr_mode_specific_connection_count(psoc,
PM_STA_MODE,
NULL);
sap_count = policy_mgr_mode_specific_connection_count(psoc,
PM_SAP_MODE,
NULL);
sap_count = policy_mgr_get_sap_mode_count(psoc, NULL);
twt_arg.psoc = psoc;
osif_debug("Total connection %d, sta_count %d, sap_count %d",