qcacld-3.0: replace mac checing with correct API

Check whether the two connections are on the same mac with
policy_mgr_are_2_freq_on_same_mac().

Change-Id: I480a344386d22aa2a210b6b4663f68998d9af8b1
CRs-Fixed: 3103087
This commit is contained in:
Yu Wang
2022-01-14 14:29:19 +08:00
committed by Madan Koyyalamudi
parent 0257976d59
commit 9191958c92
4 changed files with 172 additions and 133 deletions

View File

@@ -1349,8 +1349,10 @@ policy_mgr_dump_dual_mac_concurrency(struct policy_mgr_psoc_priv_obj *pm_ctx,
char buf[4] = {0};
qdf_mutex_acquire(&pm_ctx->qdf_conc_list_lock);
if (pm_conc_connection_list[0].mac ==
pm_conc_connection_list[1].mac) {
if (policy_mgr_are_2_freq_on_same_mac(pm_ctx->psoc,
pm_conc_connection_list[0].freq,
pm_conc_connection_list[1].freq)
) {
if (pm_conc_connection_list[0].freq ==
pm_conc_connection_list[1].freq)
strlcat(cc_mode,
@@ -1362,7 +1364,11 @@ policy_mgr_dump_dual_mac_concurrency(struct policy_mgr_psoc_priv_obj *pm_ctx,
length);
mac = pm_conc_connection_list[0].mac;
}
if (pm_conc_connection_list[0].mac == pm_conc_connection_list[2].mac) {
if (policy_mgr_are_2_freq_on_same_mac(pm_ctx->psoc,
pm_conc_connection_list[0].freq,
pm_conc_connection_list[2].freq)
) {
if (pm_conc_connection_list[0].freq ==
pm_conc_connection_list[2].freq)
strlcat(cc_mode,
@@ -1374,7 +1380,11 @@ policy_mgr_dump_dual_mac_concurrency(struct policy_mgr_psoc_priv_obj *pm_ctx,
length);
mac = pm_conc_connection_list[0].mac;
}
if (pm_conc_connection_list[1].mac == pm_conc_connection_list[2].mac) {
if (policy_mgr_are_2_freq_on_same_mac(pm_ctx->psoc,
pm_conc_connection_list[1].freq,
pm_conc_connection_list[2].freq)
) {
if (pm_conc_connection_list[1].freq ==
pm_conc_connection_list[2].freq)
strlcat(cc_mode,
@@ -1494,15 +1504,13 @@ void policy_mgr_dump_current_concurrency(struct wlan_objmgr_psoc *psoc)
pm_conc_connection_list[0].freq ==
pm_conc_connection_list[2].freq){
qdf_mutex_release(&pm_ctx->qdf_conc_list_lock);
strlcat(cc_mode, " SCC",
sizeof(cc_mode));
} else if ((pm_conc_connection_list[0].mac ==
pm_conc_connection_list[1].mac)
&& (pm_conc_connection_list[0].mac ==
pm_conc_connection_list[2].mac)) {
strlcat(cc_mode, " SCC", sizeof(cc_mode));
} else if (policy_mgr_are_3_freq_on_same_mac(psoc,
pm_conc_connection_list[0].freq,
pm_conc_connection_list[1].freq,
pm_conc_connection_list[2].freq)) {
qdf_mutex_release(&pm_ctx->qdf_conc_list_lock);
strlcat(cc_mode, " MCC on single MAC",
sizeof(cc_mode));
strlcat(cc_mode, " MCC on single MAC", sizeof(cc_mode));
} else {
qdf_mutex_release(&pm_ctx->qdf_conc_list_lock);
if (policy_mgr_is_current_hwmode_dbs(psoc))
@@ -3370,50 +3378,45 @@ bool policy_mgr_allow_new_home_channel(
{
bool status = true;
struct policy_mgr_psoc_priv_obj *pm_ctx;
uint32_t mcc_to_scc_switch;
bool on_same_mac = false, force_switch_without_dis = false;
pm_ctx = policy_mgr_get_context(psoc);
if (!pm_ctx) {
policy_mgr_err("Invalid Context");
return false;
}
mcc_to_scc_switch =
policy_mgr_get_mcc_to_scc_switch_mode(psoc);
force_switch_without_dis =
policy_mgr_get_mcc_to_scc_switch_mode(psoc) ==
QDF_MCC_TO_SCC_SWITCH_FORCE_PREFERRED_WITHOUT_DISCONNECTION;
qdf_mutex_acquire(&pm_ctx->qdf_conc_list_lock);
if (num_connections == 2) {
/* No SCC or MCC combination is allowed with / on DFS channel */
if ((mcc_to_scc_switch ==
QDF_MCC_TO_SCC_SWITCH_FORCE_PREFERRED_WITHOUT_DISCONNECTION) &&
is_dfs_ch &&
on_same_mac = policy_mgr_are_2_freq_on_same_mac(psoc,
pm_conc_connection_list[0].freq,
pm_conc_connection_list[1].freq);
if (force_switch_without_dis && is_dfs_ch &&
((pm_conc_connection_list[0].ch_flagext &
(IEEE80211_CHAN_DFS | IEEE80211_CHAN_DFS_CFREQ2)) ||
(pm_conc_connection_list[1].ch_flagext &
(IEEE80211_CHAN_DFS | IEEE80211_CHAN_DFS_CFREQ2)))) {
policy_mgr_rl_debug("Existing DFS connection, new 3-port DFS connection is not allowed");
status = false;
} else if (((pm_conc_connection_list[0].freq !=
pm_conc_connection_list[1].freq)
|| (mcc_to_scc_switch ==
QDF_MCC_TO_SCC_SWITCH_FORCE_PREFERRED_WITHOUT_DISCONNECTION)
) && (pm_conc_connection_list[0].mac ==
pm_conc_connection_list[1].mac)) {
pm_conc_connection_list[1].freq) ||
force_switch_without_dis) && on_same_mac) {
status = policy_mgr_allow_same_mac_diff_freq(psoc,
ch_freq);
} else if (pm_conc_connection_list[0].mac ==
pm_conc_connection_list[1].mac) {
} else if (on_same_mac) {
status = policy_mgr_allow_same_mac_same_freq(psoc,
ch_freq,
mode);
}
} else if ((num_connections == 1) &&
(mcc_to_scc_switch ==
QDF_MCC_TO_SCC_SWITCH_FORCE_PREFERRED_WITHOUT_DISCONNECTION) &&
} else if (num_connections == 1 && force_switch_without_dis &&
is_dfs_ch &&
(pm_conc_connection_list[0].ch_flagext &
(IEEE80211_CHAN_DFS | IEEE80211_CHAN_DFS_CFREQ2))) {
policy_mgr_rl_debug("Existing DFS connection, new 2-port DFS connection is not allowed");
status = false;
} else if ((num_connections == 1) &&

View File

@@ -718,7 +718,7 @@ policy_mgr_update_freq_info(struct policy_mgr_psoc_priv_obj *pm_ctx,
policy_mgr_update_5Ghz_freq_info(mac_range, mac_cap);
}
static void
static QDF_STATUS
policy_mgr_modify_sbs_freq(struct policy_mgr_psoc_priv_obj *pm_ctx,
uint8_t phy_id)
{
@@ -733,11 +733,11 @@ policy_mgr_modify_sbs_freq(struct policy_mgr_psoc_priv_obj *pm_ctx,
* keep the range as it is in SBS
*/
if (sbs_mac_range->low_2ghz_freq && sbs_mac_range->low_5ghz_freq)
return;
return QDF_STATUS_SUCCESS;
if (sbs_mac_range->low_2ghz_freq && !sbs_mac_range->low_5ghz_freq) {
policy_mgr_err("Invalid DBS/SBS mode with only 2.4Ghz");
policy_mgr_dump_freq_range_per_mac(sbs_mac_range, MODE_SBS);
return;
return QDF_STATUS_E_INVAL;
}
non_shared_range = sbs_mac_range;
@@ -777,8 +777,11 @@ policy_mgr_modify_sbs_freq(struct policy_mgr_psoc_priv_obj *pm_ctx,
QDF_MIN(shared_mac_range->high_5ghz_freq + 10,
non_shared_range->high_5ghz_freq);
} else {
policy_mgr_debug("All 5Ghz shared, Do nothing");
policy_mgr_info("Invalid SBS range with all 5Ghz shared");
return QDF_STATUS_E_INVAL;
}
return QDF_STATUS_SUCCESS;
}
static qdf_freq_t
@@ -901,6 +904,7 @@ policy_mgr_update_sbs_freq_info(struct policy_mgr_psoc_priv_obj *pm_ctx)
uint16_t sbs_range_sep;
struct policy_mgr_freq_range *mac_range;
uint8_t phy_id;
QDF_STATUS status;
mac_range = pm_ctx->hw_mode.freq_range_caps[MODE_SBS];
@@ -923,8 +927,14 @@ policy_mgr_update_sbs_freq_info(struct policy_mgr_psoc_priv_obj *pm_ctx)
* If sbs_lower_band_end_freq is not set that means FW will send one
* shared mac range and one non-shared mac range. so update that freq.
*/
for (phy_id = 0; phy_id < MAX_MAC; phy_id++)
policy_mgr_modify_sbs_freq(pm_ctx, phy_id);
for (phy_id = 0; phy_id < MAX_MAC; phy_id++) {
status = policy_mgr_modify_sbs_freq(pm_ctx, phy_id);
if (QDF_IS_STATUS_ERROR(status)) {
/* Reset the SBS range */
qdf_mem_zero(mac_range, sizeof(*mac_range) * MAX_MAC);
break;
}
}
}
static void
@@ -2524,8 +2534,9 @@ bool policy_mgr_current_concurrency_is_scc(struct wlan_objmgr_psoc *psoc)
case 2:
if (pm_conc_connection_list[0].freq ==
pm_conc_connection_list[1].freq &&
pm_conc_connection_list[0].mac ==
pm_conc_connection_list[1].mac)
policy_mgr_are_2_freq_on_same_mac(psoc,
pm_conc_connection_list[0].freq,
pm_conc_connection_list[1].freq))
is_scc = true;
break;
case 3:
@@ -2582,8 +2593,9 @@ bool policy_mgr_current_concurrency_is_mcc(struct wlan_objmgr_psoc *psoc)
case 2:
if (pm_conc_connection_list[0].freq !=
pm_conc_connection_list[1].freq &&
pm_conc_connection_list[0].mac ==
pm_conc_connection_list[1].mac)
policy_mgr_are_2_freq_on_same_mac(psoc,
pm_conc_connection_list[0].freq,
pm_conc_connection_list[1].freq))
is_mcc = true;
break;
case 3:
@@ -2593,16 +2605,19 @@ bool policy_mgr_current_concurrency_is_mcc(struct wlan_objmgr_psoc *psoc)
*/
if ((pm_conc_connection_list[0].freq !=
pm_conc_connection_list[1].freq &&
pm_conc_connection_list[0].mac ==
pm_conc_connection_list[1].mac) ||
policy_mgr_are_2_freq_on_same_mac(psoc,
pm_conc_connection_list[0].freq,
pm_conc_connection_list[1].freq)) ||
(pm_conc_connection_list[0].freq !=
pm_conc_connection_list[2].freq &&
pm_conc_connection_list[0].mac ==
pm_conc_connection_list[2].mac) ||
policy_mgr_are_2_freq_on_same_mac(psoc,
pm_conc_connection_list[0].freq,
pm_conc_connection_list[2].freq)) ||
(pm_conc_connection_list[1].freq !=
pm_conc_connection_list[2].freq &&
pm_conc_connection_list[1].mac ==
pm_conc_connection_list[2].mac))
policy_mgr_are_2_freq_on_same_mac(psoc,
pm_conc_connection_list[1].freq,
pm_conc_connection_list[2].freq)))
is_mcc = true;
break;
default:
@@ -4296,12 +4311,13 @@ QDF_STATUS policy_mgr_set_user_cfg(struct wlan_objmgr_psoc *psoc,
*
* Return: true or false
*/
static bool policy_mgr_is_two_connection_mcc(void)
static bool policy_mgr_is_two_connection_mcc(struct wlan_objmgr_psoc *psoc)
{
return ((pm_conc_connection_list[0].freq !=
pm_conc_connection_list[1].freq) &&
(pm_conc_connection_list[0].mac ==
pm_conc_connection_list[1].mac) &&
(policy_mgr_are_2_freq_on_same_mac(psoc,
pm_conc_connection_list[0].freq,
pm_conc_connection_list[1].freq)) &&
(pm_conc_connection_list[0].freq <=
WLAN_REG_MAX_24GHZ_CHAN_FREQ) &&
(pm_conc_connection_list[1].freq <=
@@ -4343,7 +4359,7 @@ bool policy_mgr_is_mcc_in_24G(struct wlan_objmgr_psoc *psoc)
case 1:
break;
case 2:
if (policy_mgr_is_two_connection_mcc())
if (policy_mgr_is_two_connection_mcc(psoc))
is_24G_mcc = true;
break;
case 3:
@@ -5741,8 +5757,9 @@ bool policy_mgr_allow_sap_go_concurrency(struct wlan_objmgr_psoc *psoc,
policy_mgr_debug("DBS unsupported, mcc and scc unsupported too, don't allow 2nd AP");
return false;
}
if (policy_mgr_are_2_freq_on_same_mac(psoc, ch_freq,
con_freq)){
con_freq)) {
policy_mgr_debug("DBS supported, 2 SAP on same band, reject 2nd AP");
return false;
}
@@ -6143,10 +6160,9 @@ bool policy_mgr_is_restart_sap_required(struct wlan_objmgr_psoc *psoc,
qdf_freq_t freq,
tQDF_MCC_TO_SCC_SWITCH_MODE scc_mode)
{
uint8_t i, mac = 0;
uint8_t i;
bool restart_required = false;
bool is_sta_p2p_cli;
bool is_same_mac;
bool sap_on_dfs = false;
struct policy_mgr_psoc_priv_obj *pm_ctx;
struct policy_mgr_conc_connection_info *connection;
@@ -6167,8 +6183,6 @@ bool policy_mgr_is_restart_sap_required(struct wlan_objmgr_psoc *psoc,
for (i = 0; i < MAX_NUMBER_OF_CONC_CONNECTIONS; i++) {
if (connection[i].vdev_id == vdev_id &&
connection[i].in_use) {
mac = connection[i].mac;
if (WLAN_REG_IS_5GHZ_CH_FREQ(connection[i].freq) &&
(connection[i].ch_flagext & (IEEE80211_CHAN_DFS |
IEEE80211_CHAN_DFS_CFREQ2)))
@@ -6190,10 +6204,10 @@ bool policy_mgr_is_restart_sap_required(struct wlan_objmgr_psoc *psoc,
connection[i].mode == PM_P2P_CLIENT_MODE);
if (!is_sta_p2p_cli)
continue;
is_same_mac = connection[i].freq != freq &&
(connection[i].mac == mac ||
!policy_mgr_is_hw_dbs_capable(psoc));
if (is_same_mac) {
if (connection[i].freq != freq &&
policy_mgr_are_2_freq_on_same_mac(psoc, freq,
connection[i].freq)) {
restart_required = true;
break;
}

View File

@@ -1376,6 +1376,7 @@ policy_mgr_check_and_get_third_connection_pcl_table_index_for_scc(
*/
static enum policy_mgr_two_connection_mode
policy_mgr_check_and_get_third_connection_pcl_table_index_for_mcc(
struct wlan_objmgr_psoc *psoc,
enum policy_mgr_two_connection_mode mcc_2g_1x1,
enum policy_mgr_two_connection_mode mcc_2g_2x2,
enum policy_mgr_two_connection_mode mcc_5g_1x1,
@@ -1385,7 +1386,10 @@ policy_mgr_check_and_get_third_connection_pcl_table_index_for_mcc(
{
enum policy_mgr_two_connection_mode index = PM_MAX_TWO_CONNECTION_MODE;
if (pm_conc_connection_list[0].mac == pm_conc_connection_list[1].mac) {
if (policy_mgr_are_2_freq_on_same_mac(psoc,
pm_conc_connection_list[0].freq,
pm_conc_connection_list[1].freq)
) {
if ((WLAN_REG_IS_24GHZ_CH_FREQ(
pm_conc_connection_list[0].freq)) &&
(WLAN_REG_IS_24GHZ_CH_FREQ(
@@ -1429,6 +1433,7 @@ policy_mgr_check_and_get_third_connection_pcl_table_index_for_mcc(
*/
static enum policy_mgr_two_connection_mode
policy_mgr_check_and_get_third_connection_pcl_table_index_for_dbs(
struct wlan_objmgr_psoc *psoc,
enum policy_mgr_two_connection_mode sbs_5g_1x1,
enum policy_mgr_two_connection_mode sbs_5g_2x2,
enum policy_mgr_two_connection_mode dbs_1x1,
@@ -1436,7 +1441,10 @@ policy_mgr_check_and_get_third_connection_pcl_table_index_for_dbs(
{
enum policy_mgr_two_connection_mode index = PM_MAX_TWO_CONNECTION_MODE;
if (pm_conc_connection_list[0].mac != pm_conc_connection_list[1].mac) {
if (!policy_mgr_are_2_freq_on_same_mac(psoc,
pm_conc_connection_list[0].freq,
pm_conc_connection_list[1].freq)
) {
/* SBS */
if (!(WLAN_REG_IS_24GHZ_CH_FREQ(
pm_conc_connection_list[0].freq)) &&
@@ -1461,7 +1469,8 @@ policy_mgr_check_and_get_third_connection_pcl_table_index_for_dbs(
}
static enum policy_mgr_two_connection_mode
policy_mgr_get_third_connection_pcl_table_index_cli_sap(void)
policy_mgr_get_third_connection_pcl_table_index_cli_sap(
struct wlan_objmgr_psoc *psoc)
{
enum policy_mgr_two_connection_mode index = PM_MAX_TWO_CONNECTION_MODE;
@@ -1475,7 +1484,7 @@ static enum policy_mgr_two_connection_mode
return index;
index =
policy_mgr_check_and_get_third_connection_pcl_table_index_for_mcc(
policy_mgr_check_and_get_third_connection_pcl_table_index_for_mcc(psoc,
PM_P2P_CLI_SAP_MCC_24_1x1,
PM_P2P_CLI_SAP_MCC_24_2x2,
PM_P2P_CLI_SAP_MCC_5_1x1,
@@ -1487,7 +1496,7 @@ static enum policy_mgr_two_connection_mode
return index;
index =
policy_mgr_check_and_get_third_connection_pcl_table_index_for_dbs(
policy_mgr_check_and_get_third_connection_pcl_table_index_for_dbs(psoc,
PM_P2P_CLI_SAP_SBS_5_1x1,
PM_P2P_CLI_SAP_SBS_5_2x2,
PM_P2P_CLI_SAP_DBS_1x1,
@@ -1497,7 +1506,8 @@ static enum policy_mgr_two_connection_mode
}
static enum policy_mgr_two_connection_mode
policy_mgr_get_third_connection_pcl_table_index_sta_sap(void)
policy_mgr_get_third_connection_pcl_table_index_sta_sap(
struct wlan_objmgr_psoc *psoc)
{
enum policy_mgr_two_connection_mode index = PM_MAX_TWO_CONNECTION_MODE;
@@ -1511,7 +1521,7 @@ static enum policy_mgr_two_connection_mode
return index;
index =
policy_mgr_check_and_get_third_connection_pcl_table_index_for_mcc(
policy_mgr_check_and_get_third_connection_pcl_table_index_for_mcc(psoc,
PM_STA_SAP_MCC_24_1x1,
PM_STA_SAP_MCC_24_2x2,
PM_STA_SAP_MCC_5_1x1,
@@ -1523,7 +1533,7 @@ static enum policy_mgr_two_connection_mode
return index;
index =
policy_mgr_check_and_get_third_connection_pcl_table_index_for_dbs(
policy_mgr_check_and_get_third_connection_pcl_table_index_for_dbs(psoc,
PM_STA_SAP_SBS_5_1x1,
PM_STA_SAP_SBS_5_2x2,
PM_STA_SAP_DBS_1x1,
@@ -1533,7 +1543,8 @@ static enum policy_mgr_two_connection_mode
}
static enum policy_mgr_two_connection_mode
policy_mgr_get_third_connection_pcl_table_index_sap_sap(void)
policy_mgr_get_third_connection_pcl_table_index_sap_sap(
struct wlan_objmgr_psoc *psoc)
{
enum policy_mgr_two_connection_mode index = PM_MAX_TWO_CONNECTION_MODE;
@@ -1547,7 +1558,7 @@ static enum policy_mgr_two_connection_mode
return index;
index =
policy_mgr_check_and_get_third_connection_pcl_table_index_for_mcc(
policy_mgr_check_and_get_third_connection_pcl_table_index_for_mcc(psoc,
PM_SAP_SAP_MCC_24_1x1,
PM_SAP_SAP_MCC_24_2x2,
PM_SAP_SAP_MCC_5_1x1,
@@ -1559,7 +1570,7 @@ static enum policy_mgr_two_connection_mode
return index;
index =
policy_mgr_check_and_get_third_connection_pcl_table_index_for_dbs(
policy_mgr_check_and_get_third_connection_pcl_table_index_for_dbs(psoc,
PM_SAP_SAP_SBS_5_1x1,
PM_SAP_SAP_SBS_5_2x2,
PM_SAP_SAP_DBS_1x1,
@@ -1569,7 +1580,8 @@ static enum policy_mgr_two_connection_mode
}
static enum policy_mgr_two_connection_mode
policy_mgr_get_third_connection_pcl_table_index_sta_go(void)
policy_mgr_get_third_connection_pcl_table_index_sta_go(
struct wlan_objmgr_psoc *psoc)
{
enum policy_mgr_two_connection_mode index = PM_MAX_TWO_CONNECTION_MODE;
@@ -1583,7 +1595,7 @@ static enum policy_mgr_two_connection_mode
return index;
index =
policy_mgr_check_and_get_third_connection_pcl_table_index_for_mcc(
policy_mgr_check_and_get_third_connection_pcl_table_index_for_mcc(psoc,
PM_STA_P2P_GO_MCC_24_1x1,
PM_STA_P2P_GO_MCC_24_2x2,
PM_STA_P2P_GO_MCC_5_1x1,
@@ -1595,7 +1607,7 @@ static enum policy_mgr_two_connection_mode
return index;
index =
policy_mgr_check_and_get_third_connection_pcl_table_index_for_dbs(
policy_mgr_check_and_get_third_connection_pcl_table_index_for_dbs(psoc,
PM_STA_P2P_GO_SBS_5_1x1,
PM_STA_P2P_GO_SBS_5_2x2,
PM_STA_P2P_GO_DBS_1x1,
@@ -1605,7 +1617,8 @@ static enum policy_mgr_two_connection_mode
}
static enum policy_mgr_two_connection_mode
policy_mgr_get_third_connection_pcl_table_index_sta_cli(void)
policy_mgr_get_third_connection_pcl_table_index_sta_cli(
struct wlan_objmgr_psoc *psoc)
{
enum policy_mgr_two_connection_mode index = PM_MAX_TWO_CONNECTION_MODE;
@@ -1619,7 +1632,7 @@ static enum policy_mgr_two_connection_mode
return index;
index =
policy_mgr_check_and_get_third_connection_pcl_table_index_for_mcc(
policy_mgr_check_and_get_third_connection_pcl_table_index_for_mcc(psoc,
PM_STA_P2P_CLI_MCC_24_1x1,
PM_STA_P2P_CLI_MCC_24_2x2,
PM_STA_P2P_CLI_MCC_5_1x1,
@@ -1631,7 +1644,7 @@ static enum policy_mgr_two_connection_mode
return index;
index =
policy_mgr_check_and_get_third_connection_pcl_table_index_for_dbs(
policy_mgr_check_and_get_third_connection_pcl_table_index_for_dbs(psoc,
PM_STA_P2P_CLI_SBS_5_1x1,
PM_STA_P2P_CLI_SBS_5_2x2,
PM_STA_P2P_CLI_DBS_1x1,
@@ -1641,7 +1654,8 @@ static enum policy_mgr_two_connection_mode
}
static enum policy_mgr_two_connection_mode
policy_mgr_get_third_connection_pcl_table_index_go_cli(void)
policy_mgr_get_third_connection_pcl_table_index_go_cli(
struct wlan_objmgr_psoc *psoc)
{
enum policy_mgr_two_connection_mode index;
@@ -1655,7 +1669,7 @@ static enum policy_mgr_two_connection_mode
return index;
index =
policy_mgr_check_and_get_third_connection_pcl_table_index_for_mcc(
policy_mgr_check_and_get_third_connection_pcl_table_index_for_mcc(psoc,
PM_P2P_GO_P2P_CLI_MCC_24_1x1,
PM_P2P_GO_P2P_CLI_MCC_24_2x2,
PM_P2P_GO_P2P_CLI_MCC_5_1x1,
@@ -1667,7 +1681,7 @@ static enum policy_mgr_two_connection_mode
return index;
index =
policy_mgr_check_and_get_third_connection_pcl_table_index_for_dbs(
policy_mgr_check_and_get_third_connection_pcl_table_index_for_dbs(psoc,
PM_P2P_GO_P2P_CLI_SBS_5_1x1,
PM_P2P_GO_P2P_CLI_SBS_5_2x2,
PM_P2P_GO_P2P_CLI_DBS_1x1,
@@ -1677,7 +1691,8 @@ static enum policy_mgr_two_connection_mode
}
static enum policy_mgr_two_connection_mode
policy_mgr_get_third_connection_pcl_table_index_go_sap(void)
policy_mgr_get_third_connection_pcl_table_index_go_sap(
struct wlan_objmgr_psoc *psoc)
{
enum policy_mgr_two_connection_mode index;
@@ -1691,7 +1706,7 @@ static enum policy_mgr_two_connection_mode
return index;
index =
policy_mgr_check_and_get_third_connection_pcl_table_index_for_mcc(
policy_mgr_check_and_get_third_connection_pcl_table_index_for_mcc(psoc,
PM_P2P_GO_SAP_MCC_24_1x1,
PM_P2P_GO_SAP_MCC_24_2x2,
PM_P2P_GO_SAP_MCC_5_1x1,
@@ -1703,7 +1718,7 @@ static enum policy_mgr_two_connection_mode
return index;
index =
policy_mgr_check_and_get_third_connection_pcl_table_index_for_dbs(
policy_mgr_check_and_get_third_connection_pcl_table_index_for_dbs(psoc,
PM_P2P_GO_SAP_SBS_5_1x1,
PM_P2P_GO_SAP_SBS_5_2x2,
PM_P2P_GO_SAP_DBS_1x1,
@@ -1713,7 +1728,8 @@ static enum policy_mgr_two_connection_mode
}
static enum policy_mgr_two_connection_mode
policy_mgr_get_third_connection_pcl_table_index_sta_sta(void)
policy_mgr_get_third_connection_pcl_table_index_sta_sta(
struct wlan_objmgr_psoc *psoc)
{
enum policy_mgr_two_connection_mode index;
@@ -1727,7 +1743,7 @@ static enum policy_mgr_two_connection_mode
return index;
index =
policy_mgr_check_and_get_third_connection_pcl_table_index_for_mcc(
policy_mgr_check_and_get_third_connection_pcl_table_index_for_mcc(psoc,
PM_STA_STA_MCC_24_1x1,
PM_STA_STA_MCC_24_2x2,
PM_STA_STA_MCC_5_1x1,
@@ -1739,7 +1755,7 @@ static enum policy_mgr_two_connection_mode
return index;
index =
policy_mgr_check_and_get_third_connection_pcl_table_index_for_dbs(
policy_mgr_check_and_get_third_connection_pcl_table_index_for_dbs(psoc,
PM_STA_STA_SBS_5_1x1,
PM_STA_STA_SBS_5_2x2,
PM_STA_STA_DBS_1x1,
@@ -1749,7 +1765,8 @@ static enum policy_mgr_two_connection_mode
}
static enum policy_mgr_two_connection_mode
policy_mgr_get_third_connection_pcl_table_index_cli_cli(void)
policy_mgr_get_third_connection_pcl_table_index_cli_cli(
struct wlan_objmgr_psoc *psoc)
{
enum policy_mgr_two_connection_mode index;
@@ -1763,7 +1780,7 @@ static enum policy_mgr_two_connection_mode
return index;
index =
policy_mgr_check_and_get_third_connection_pcl_table_index_for_mcc(
policy_mgr_check_and_get_third_connection_pcl_table_index_for_mcc(psoc,
PM_P2P_CLI_P2P_CLI_MCC_24_1x1,
PM_P2P_CLI_P2P_CLI_MCC_24_2x2,
PM_P2P_CLI_P2P_CLI_MCC_5_1x1,
@@ -1775,7 +1792,7 @@ static enum policy_mgr_two_connection_mode
return index;
index =
policy_mgr_check_and_get_third_connection_pcl_table_index_for_dbs(
policy_mgr_check_and_get_third_connection_pcl_table_index_for_dbs(psoc,
PM_P2P_CLI_P2P_CLI_SBS_5_1x1,
PM_P2P_CLI_P2P_CLI_SBS_5_2x2,
PM_P2P_CLI_P2P_CLI_DBS_1x1,
@@ -1785,7 +1802,8 @@ static enum policy_mgr_two_connection_mode
}
static enum policy_mgr_two_connection_mode
policy_mgr_get_third_connection_pcl_table_index_go_go(void)
policy_mgr_get_third_connection_pcl_table_index_go_go(
struct wlan_objmgr_psoc *psoc)
{
enum policy_mgr_two_connection_mode index;
@@ -1799,7 +1817,7 @@ static enum policy_mgr_two_connection_mode
return index;
index =
policy_mgr_check_and_get_third_connection_pcl_table_index_for_mcc(
policy_mgr_check_and_get_third_connection_pcl_table_index_for_mcc(psoc,
PM_P2P_GO_P2P_GO_MCC_24_1x1,
PM_P2P_GO_P2P_GO_MCC_24_2x2,
PM_P2P_GO_P2P_GO_MCC_5_1x1,
@@ -1810,7 +1828,7 @@ static enum policy_mgr_two_connection_mode
return index;
index =
policy_mgr_check_and_get_third_connection_pcl_table_index_for_dbs(
policy_mgr_check_and_get_third_connection_pcl_table_index_for_dbs(psoc,
PM_P2P_GO_P2P_GO_SBS_5_1x1,
PM_P2P_GO_P2P_GO_SBS_5_2x2,
PM_P2P_GO_P2P_GO_DBS_1x1,
@@ -1819,7 +1837,8 @@ static enum policy_mgr_two_connection_mode
}
static enum policy_mgr_two_connection_mode
policy_mgr_get_third_connection_pcl_table_index_nan_ndi(void)
policy_mgr_get_third_connection_pcl_table_index_nan_ndi(
struct wlan_objmgr_psoc *psoc)
{
enum policy_mgr_two_connection_mode index = PM_MAX_TWO_CONNECTION_MODE;
/* SCC */
@@ -1831,16 +1850,16 @@ static enum policy_mgr_two_connection_mode
else
index = PM_NAN_DISC_NDI_SCC_24_2x2;
/* MCC */
} else if (pm_conc_connection_list[0].mac ==
pm_conc_connection_list[1].mac) {
} else if (policy_mgr_are_2_freq_on_same_mac(psoc,
pm_conc_connection_list[0].freq,
pm_conc_connection_list[1].freq)) {
/* Policy mgr only considers NAN Disc ch in 2.4GHz */
if (POLICY_MGR_ONE_ONE == pm_conc_connection_list[0].chain_mask)
index = PM_NAN_DISC_NDI_MCC_24_1x1;
else
index = PM_NAN_DISC_NDI_MCC_24_2x2;
/* DBS */
} else if (pm_conc_connection_list[0].mac !=
pm_conc_connection_list[1].mac) {
} else {
if (POLICY_MGR_ONE_ONE == pm_conc_connection_list[0].chain_mask)
index = PM_NAN_DISC_NDI_DBS_1x1;
else
@@ -1850,7 +1869,8 @@ static enum policy_mgr_two_connection_mode
}
static enum policy_mgr_two_connection_mode
policy_mgr_get_third_connection_pcl_table_index_sta_nan(void)
policy_mgr_get_third_connection_pcl_table_index_sta_nan(
struct wlan_objmgr_psoc *psoc)
{
enum policy_mgr_two_connection_mode index = PM_MAX_TWO_CONNECTION_MODE;
/* SCC */
@@ -1862,16 +1882,16 @@ static enum policy_mgr_two_connection_mode
else
index = PM_STA_NAN_DISC_SCC_24_2x2;
/* MCC */
} else if (pm_conc_connection_list[0].mac ==
pm_conc_connection_list[1].mac) {
} else if (policy_mgr_are_2_freq_on_same_mac(psoc,
pm_conc_connection_list[0].freq,
pm_conc_connection_list[1].freq)) {
/* Policy mgr only considers NAN Disc ch in 2.4 GHz */
if (POLICY_MGR_ONE_ONE == pm_conc_connection_list[0].chain_mask)
index = PM_STA_NAN_DISC_MCC_24_1x1;
else
index = PM_STA_NAN_DISC_MCC_24_2x2;
/* DBS */
} else if (pm_conc_connection_list[0].mac !=
pm_conc_connection_list[1].mac) {
} else {
if (POLICY_MGR_ONE_ONE == pm_conc_connection_list[0].chain_mask)
index = PM_STA_NAN_DISC_DBS_1x1;
else
@@ -1881,7 +1901,8 @@ static enum policy_mgr_two_connection_mode
}
static enum policy_mgr_two_connection_mode
policy_mgr_get_third_connection_pcl_table_index_sap_nan(void)
policy_mgr_get_third_connection_pcl_table_index_sap_nan(
struct wlan_objmgr_psoc *psoc)
{
enum policy_mgr_two_connection_mode index = PM_MAX_TWO_CONNECTION_MODE;
/* SCC */
@@ -1893,16 +1914,16 @@ static enum policy_mgr_two_connection_mode
else
index = PM_SAP_NAN_DISC_SCC_24_2x2;
/* MCC */
} else if (pm_conc_connection_list[0].mac ==
pm_conc_connection_list[1].mac) {
} else if (policy_mgr_are_2_freq_on_same_mac(psoc,
pm_conc_connection_list[0].freq,
pm_conc_connection_list[1].freq)) {
/* Policy mgr only considers NAN Disc ch in 2.4GHz */
if (POLICY_MGR_ONE_ONE == pm_conc_connection_list[0].chain_mask)
index = PM_SAP_NAN_DISC_MCC_24_1x1;
else
index = PM_SAP_NAN_DISC_MCC_24_2x2;
/* DBS */
} else if (pm_conc_connection_list[0].mac !=
pm_conc_connection_list[1].mac) {
} else {
if (POLICY_MGR_ONE_ONE == pm_conc_connection_list[0].chain_mask)
index = PM_SAP_NAN_DISC_DBS_1x1;
else
@@ -1912,7 +1933,7 @@ static enum policy_mgr_two_connection_mode
}
enum policy_mgr_two_connection_mode
policy_mgr_get_third_connection_pcl_table_index(
policy_mgr_get_third_connection_pcl_table_index(
struct wlan_objmgr_psoc *psoc)
{
enum policy_mgr_two_connection_mode index = PM_MAX_TWO_CONNECTION_MODE;
@@ -1930,74 +1951,74 @@ enum policy_mgr_two_connection_mode
((PM_SAP_MODE == pm_conc_connection_list[0].mode) &&
(PM_P2P_CLIENT_MODE == pm_conc_connection_list[1].mode)))
index =
policy_mgr_get_third_connection_pcl_table_index_cli_sap();
policy_mgr_get_third_connection_pcl_table_index_cli_sap(psoc);
else if (((PM_STA_MODE == pm_conc_connection_list[0].mode) &&
(PM_SAP_MODE == pm_conc_connection_list[1].mode)) ||
((PM_SAP_MODE == pm_conc_connection_list[0].mode) &&
(PM_STA_MODE == pm_conc_connection_list[1].mode)))
index =
policy_mgr_get_third_connection_pcl_table_index_sta_sap();
policy_mgr_get_third_connection_pcl_table_index_sta_sap(psoc);
else if ((PM_SAP_MODE == pm_conc_connection_list[0].mode) &&
(PM_SAP_MODE == pm_conc_connection_list[1].mode))
index =
policy_mgr_get_third_connection_pcl_table_index_sap_sap();
policy_mgr_get_third_connection_pcl_table_index_sap_sap(psoc);
else if (((PM_STA_MODE == pm_conc_connection_list[0].mode) &&
(PM_P2P_GO_MODE == pm_conc_connection_list[1].mode)) ||
((PM_P2P_GO_MODE == pm_conc_connection_list[0].mode) &&
(PM_STA_MODE == pm_conc_connection_list[1].mode)))
index =
policy_mgr_get_third_connection_pcl_table_index_sta_go();
policy_mgr_get_third_connection_pcl_table_index_sta_go(psoc);
else if (((PM_STA_MODE == pm_conc_connection_list[0].mode) &&
(PM_P2P_CLIENT_MODE == pm_conc_connection_list[1].mode)) ||
((PM_P2P_CLIENT_MODE == pm_conc_connection_list[0].mode) &&
(PM_STA_MODE == pm_conc_connection_list[1].mode)))
index =
policy_mgr_get_third_connection_pcl_table_index_sta_cli();
policy_mgr_get_third_connection_pcl_table_index_sta_cli(psoc);
else if (((PM_P2P_GO_MODE == pm_conc_connection_list[0].mode) &&
(PM_P2P_CLIENT_MODE == pm_conc_connection_list[1].mode)) ||
((PM_P2P_CLIENT_MODE == pm_conc_connection_list[0].mode) &&
(PM_P2P_GO_MODE == pm_conc_connection_list[1].mode)))
index =
policy_mgr_get_third_connection_pcl_table_index_go_cli();
policy_mgr_get_third_connection_pcl_table_index_go_cli(psoc);
else if (((PM_SAP_MODE == pm_conc_connection_list[0].mode) &&
(PM_P2P_GO_MODE == pm_conc_connection_list[1].mode)) ||
((PM_P2P_GO_MODE == pm_conc_connection_list[0].mode) &&
(PM_SAP_MODE == pm_conc_connection_list[1].mode)))
index =
policy_mgr_get_third_connection_pcl_table_index_go_sap();
policy_mgr_get_third_connection_pcl_table_index_go_sap(psoc);
else if (((PM_STA_MODE == pm_conc_connection_list[0].mode) &&
(PM_STA_MODE == pm_conc_connection_list[1].mode)) ||
((PM_STA_MODE == pm_conc_connection_list[0].mode) &&
(PM_STA_MODE == pm_conc_connection_list[1].mode)))
index =
policy_mgr_get_third_connection_pcl_table_index_sta_sta();
policy_mgr_get_third_connection_pcl_table_index_sta_sta(psoc);
else if (((PM_NAN_DISC_MODE == pm_conc_connection_list[0].mode) &&
(PM_STA_MODE == pm_conc_connection_list[1].mode)) ||
((PM_STA_MODE == pm_conc_connection_list[0].mode) &&
(PM_NAN_DISC_MODE == pm_conc_connection_list[1].mode)))
index =
policy_mgr_get_third_connection_pcl_table_index_sta_nan();
policy_mgr_get_third_connection_pcl_table_index_sta_nan(psoc);
else if (((PM_NAN_DISC_MODE == pm_conc_connection_list[0].mode) &&
(PM_NDI_MODE == pm_conc_connection_list[1].mode)) ||
((PM_NDI_MODE == pm_conc_connection_list[0].mode) &&
(PM_NAN_DISC_MODE == pm_conc_connection_list[1].mode)))
index =
policy_mgr_get_third_connection_pcl_table_index_nan_ndi();
policy_mgr_get_third_connection_pcl_table_index_nan_ndi(psoc);
else if (((PM_SAP_MODE == pm_conc_connection_list[0].mode) &&
(PM_NAN_DISC_MODE == pm_conc_connection_list[1].mode)) ||
((PM_NAN_DISC_MODE == pm_conc_connection_list[0].mode) &&
(PM_SAP_MODE == pm_conc_connection_list[1].mode)))
index =
policy_mgr_get_third_connection_pcl_table_index_sap_nan();
policy_mgr_get_third_connection_pcl_table_index_sap_nan(psoc);
else if ((pm_conc_connection_list[0].mode == PM_P2P_GO_MODE) &&
(pm_conc_connection_list[1].mode == PM_P2P_GO_MODE))
index =
policy_mgr_get_third_connection_pcl_table_index_go_go();
policy_mgr_get_third_connection_pcl_table_index_go_go(psoc);
else if ((pm_conc_connection_list[0].mode == PM_P2P_CLIENT_MODE) &&
(pm_conc_connection_list[1].mode == PM_P2P_CLIENT_MODE))
index =
policy_mgr_get_third_connection_pcl_table_index_cli_cli();
policy_mgr_get_third_connection_pcl_table_index_cli_cli(psoc);
policy_mgr_debug("mode0:%d mode1:%d freq0:%d freq1:%d chain:%d index:%d",
pm_conc_connection_list[0].mode,

View File

@@ -2127,8 +2127,9 @@ int wlan_hdd_cfg80211_start_acs(struct hdd_adapter *adapter)
uint32_t i;
conc_connection_info = policy_mgr_get_conn_info(&i);
if (conc_connection_info[0].mac ==
conc_connection_info[1].mac) {
if (policy_mgr_are_2_freq_on_same_mac(hdd_ctx->psoc,
conc_connection_info[0].freq,
conc_connection_info[1].freq)) {
if (!WLAN_REG_IS_24GHZ_CH_FREQ(
sap_config->acs_cfg.pcl_chan_freq[0])) {
sap_config->acs_cfg.band =
@@ -2665,9 +2666,9 @@ int hdd_cfg80211_update_acs_config(struct hdd_adapter *adapter,
struct policy_mgr_conc_connection_info *conc_connection_info;
conc_connection_info = policy_mgr_get_conn_info(&i);
if (conc_connection_info[0].mac ==
conc_connection_info[1].mac) {
if (policy_mgr_are_2_freq_on_same_mac(hdd_ctx->psoc,
conc_connection_info[0].freq,
conc_connection_info[1].freq)) {
if (!WLAN_REG_IS_24GHZ_CH_FREQ(
sap_config->acs_cfg.pcl_chan_freq[0])) {
sap_config->acs_cfg.band =