|
@@ -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) ||
|
|
|
- policy_mgr_mode_specific_connection_count(psoc,
|
|
|
- PM_P2P_CLIENT_MODE, NULL) ||
|
|
|
+ if (policy_mgr_get_beaconing_mode_count(psoc, 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;
|
|
|
|