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:

committed by
Rahul Choudhary

parent
84a9b935b3
commit
fe6d7d0625
@@ -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)
|
||||
|
@@ -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
|
||||
|
@@ -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 +
|
||||
|
@@ -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;
|
||||
|
@@ -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;
|
||||
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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");
|
||||
|
@@ -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
|
||||
|
@@ -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))) {
|
||||
|
@@ -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",
|
||||
|
@@ -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;
|
||||
|
@@ -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;
|
||||
|
||||
|
@@ -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",
|
||||
|
Reference in New Issue
Block a user