diff --git a/components/cmn_services/policy_mgr/inc/wlan_policy_mgr_public_struct.h b/components/cmn_services/policy_mgr/inc/wlan_policy_mgr_public_struct.h index 35b10c4fb676..793bd23707a3 100644 --- a/components/cmn_services/policy_mgr/inc/wlan_policy_mgr_public_struct.h +++ b/components/cmn_services/policy_mgr/inc/wlan_policy_mgr_public_struct.h @@ -523,6 +523,21 @@ enum policy_mgr_one_connection_mode { * 2x2 * @PM_P2P_GO_SAP_SBS_5_1x1: P2P GO & SAP connection on 5G SBS * using 1x1 + * @PM_P2P_GO_P2P_GO_SCC_24_1x1: P2P GO & P2P GO SCC on 2.4G using 1x1 + * @PM_P2P_GO_P2P_GO_SCC_24_2x2: P2P GO & P2P GO SCC on 2.4G using 2x2 + * @PM_P2P_GO_P2P_GO_MCC_24_1x1: P2P GO & P2P GO MCC on 2.4G using 1x1 + * @PM_P2P_GO_P2P_GO_MCC_24_2x2: P2P GO & P2P GO MCC on 2.4G using 2x2 + * @PM_P2P_GO_P2P_GO_SCC_5_1x1: P2P GO & P2P GO SCC on 5G using 1x1 + * @PM_P2P_GO_P2P_GO_SCC_5_2x2: P2P GO & P2P GO SCC on 5G using 2x2 + * @PM_P2P_GO_P2P_GO_MCC_5_1x1: P2P GO & P2P GO MCC on 5G using 1x1 + * @PM_P2P_GO_P2P_GO_MCC_5_2x2: P2P GO & P2P GO MCC on 5G using 2x2 + * @PM_P2P_GO_P2P_GO_MCC_24_5_1x1: P2P GO 2.4G & P2P GO 5G dual band MCC + * using 1x1 + * @PM_P2P_GO_P2P_GO_MCC_24_5_2x2: P2P GO 2.4G & P2P GO 5G dual band MCC + * using 2x2 + * @PM_P2P_GO_P2P_GO_DBS_1x1: P2P GO & P2P GO on DBS using 1x1 + * @PM_P2P_GO_P2P_GO_DBS_2x2: P2P GO & P2P GO on DBS using 2x2 + * @PM_P2P_GO_P2P_GO_SBS_5_1x1: P2P GO & P2P GO on SBS using 1x1 * @PM_P2P_CLI_SAP_SCC_24_1x1: CLI & SAP connection on SCC using * 1x1@2.4 Ghz * @PM_P2P_CLI_SAP_SCC_24_2x2: CLI & SAP connection on SCC using @@ -548,6 +563,21 @@ enum policy_mgr_one_connection_mode { * 2x2 * @PM_P2P_CLI_SAP_SBS_5_1x1: P2P CLI & SAP connection on 5G SBS * using 1x1 + * @PM_P2P_CLI_P2P_CLI_SCC_24_1x1: P2P CLI & P2P CLI SCC on 2.4G using 1x1 + * @PM_P2P_CLI_P2P_CLI_SCC_24_2x2: P2P CLI & P2P CLI SCC on 2.4G using 2x2 + * @PM_P2P_CLI_P2P_CLI_MCC_24_1x1: P2P CLI & P2P CLI MCC on 2.4G using 1x1 + * @PM_P2P_CLI_P2P_CLI_MCC_24_2x2: P2P CLI & P2P CLI MCC on 2.4G using 2x2 + * @PM_P2P_CLI_P2P_CLI_SCC_5_1x1: P2P CLI & P2P CLI SCC on 5G using 1x1 + * @PM_P2P_CLI_P2P_CLI_SCC_5_2x2: P2P CLI & P2P CLI SCC on 5G using 2x2 + * @PM_P2P_CLI_P2P_CLI_MCC_5_1x1: P2P CLI & P2P CLI MCC on 5G using 1x1 + * @PM_P2P_CLI_P2P_CLI_MCC_5_2x2: P2P CLI & P2P CLI MCC on 5G using 2x2 + * @PM_P2P_CLI_P2P_CLI_MCC_24_5_1x1: P2P CLI 2.4G & P2P CLI 5G dual band MCC + * using 1x1 + * @PM_P2P_CLI_P2P_CLI_MCC_24_5_2x2: P2P CLI 2.4G & P2P CLI 5G dual band MCC + * using 2x2 + * @PM_P2P_CLI_P2P_CLI_DBS_1x1: P2P CLI & P2P CLI on DBS using 1x1 + * @PM_P2P_CLI_P2P_CLI_DBS_2x2: P2P CLI & P2P CLI on DBS using 2x2 + * @PM_P2P_CLI_P2P_CLI_SBS_5_1x1: P2P CLI & P2P CLI on SBS using 1x1 * @PM_SAP_SAP_SCC_24_1x1: SAP & SAP connection on * SCC using 1x1@2.4 Ghz * @PM_SAP_SAP_SCC_24_2x2: SAP & SAP connection on @@ -618,21 +648,6 @@ enum policy_mgr_one_connection_mode { * @PM_NAN_DISC_NDI_MCC_24_2x2: NAN & NDI connection on MCC using 2x2 on 2.4 GHz * @PM_NAN_DISC_NDI_DBS_1x1: NAN & NDI connection on DBS using 1x1 * @PM_NAN_DISC_NDI_DBS_2x2: NAN & NDI connection on DBS using 2x2 - * @PM_P2P_GO_P2P_GO_SCC_24_1x1: P2P GO & P2P GO SCC on 2.4G using 1x1 - * @PM_P2P_GO_P2P_GO_SCC_24_2x2: P2P GO & P2P GO SCC on 2.4G using 2x2 - * @PM_P2P_GO_P2P_GO_MCC_24_1x1: P2P GO & P2P GO MCC on 2.4G using 1x1 - * @PM_P2P_GO_P2P_GO_MCC_24_2x2: P2P GO & P2P GO MCC on 2.4G using 2x2 - * @PM_P2P_GO_P2P_GO_SCC_5_1x1: P2P GO & P2P GO SCC on 5G using 1x1 - * @PM_P2P_GO_P2P_GO_SCC_5_2x2: P2P GO & P2P GO SCC on 5G using 2x2 - * @PM_P2P_GO_P2P_GO_MCC_5_1x1: P2P GO & P2P GO MCC on 5G using 1x1 - * @PM_P2P_GO_P2P_GO_MCC_5_2x2: P2P GO & P2P GO MCC on 5G using 2x2 - * @PM_P2P_GO_P2P_GO_MCC_24_5_1x1: P2P GO 2.4G & P2P GO 5G dual band MCC - * using 1x1 - * @PM_P2P_GO_P2P_GO_MCC_24_5_2x2: P2P GO 2.4G & P2P GO 5G dual band MCC - * using 2x2 - * @PM_P2P_GO_P2P_GO_DBS_1x1: P2P GO & P2P GO on DBS using 1x1 - * @PM_P2P_GO_P2P_GO_DBS_2x2: P2P GO & P2P GO on DBS using 2x2 - * @PM_P2P_GO_P2P_GO_SBS_5_1x1: P2P GO & P2P GO on SBS using 1x1 * * These are generic IDs that identify the various roles in the * software system @@ -703,6 +718,21 @@ enum policy_mgr_two_connection_mode { PM_P2P_GO_SAP_DBS_1x1, PM_P2P_GO_SAP_DBS_2x2, PM_P2P_GO_SAP_SBS_5_1x1, + PM_P2P_GO_SAP_SBS_5_2x2 = PM_P2P_GO_SAP_SBS_5_1x1, + PM_P2P_GO_P2P_GO_SCC_24_1x1, + PM_P2P_GO_P2P_GO_SCC_24_2x2, + PM_P2P_GO_P2P_GO_MCC_24_1x1, + PM_P2P_GO_P2P_GO_MCC_24_2x2, + PM_P2P_GO_P2P_GO_SCC_5_1x1, + PM_P2P_GO_P2P_GO_SCC_5_2x2, + PM_P2P_GO_P2P_GO_MCC_5_1x1, + PM_P2P_GO_P2P_GO_MCC_5_2x2, + PM_P2P_GO_P2P_GO_MCC_24_5_1x1, + PM_P2P_GO_P2P_GO_MCC_24_5_2x2, + PM_P2P_GO_P2P_GO_DBS_1x1, + PM_P2P_GO_P2P_GO_DBS_2x2, + PM_P2P_GO_P2P_GO_SBS_5_1x1, + PM_P2P_GO_P2P_GO_SBS_5_2x2 = PM_P2P_GO_P2P_GO_SBS_5_1x1, PM_P2P_CLI_SAP_SCC_24_1x1, PM_P2P_CLI_SAP_SCC_24_2x2, PM_P2P_CLI_SAP_MCC_24_1x1, @@ -716,6 +746,21 @@ enum policy_mgr_two_connection_mode { PM_P2P_CLI_SAP_DBS_1x1, PM_P2P_CLI_SAP_DBS_2x2, PM_P2P_CLI_SAP_SBS_5_1x1, + PM_P2P_CLI_SAP_SBS_5_2x2 = PM_P2P_CLI_SAP_SBS_5_1x1, + PM_P2P_CLI_P2P_CLI_SCC_24_1x1, + PM_P2P_CLI_P2P_CLI_SCC_24_2x2, + PM_P2P_CLI_P2P_CLI_MCC_24_1x1, + PM_P2P_CLI_P2P_CLI_MCC_24_2x2, + PM_P2P_CLI_P2P_CLI_SCC_5_1x1, + PM_P2P_CLI_P2P_CLI_SCC_5_2x2, + PM_P2P_CLI_P2P_CLI_MCC_5_1x1, + PM_P2P_CLI_P2P_CLI_MCC_5_2x2, + PM_P2P_CLI_P2P_CLI_MCC_24_5_1x1, + PM_P2P_CLI_P2P_CLI_MCC_24_5_2x2, + PM_P2P_CLI_P2P_CLI_DBS_1x1, + PM_P2P_CLI_P2P_CLI_DBS_2x2, + PM_P2P_CLI_P2P_CLI_SBS_5_1x1, + PM_P2P_CLI_P2P_CLI_SBS_5_2x2 = PM_P2P_CLI_P2P_CLI_SBS_5_1x1, PM_SAP_SAP_SCC_24_1x1, PM_SAP_SAP_SCC_24_2x2, PM_SAP_SAP_MCC_24_1x1, @@ -760,19 +805,6 @@ enum policy_mgr_two_connection_mode { PM_NAN_DISC_NDI_MCC_24_2x2, PM_NAN_DISC_NDI_DBS_1x1, PM_NAN_DISC_NDI_DBS_2x2, - PM_P2P_GO_P2P_GO_SCC_24_1x1, - PM_P2P_GO_P2P_GO_SCC_24_2x2, - PM_P2P_GO_P2P_GO_MCC_24_1x1, - PM_P2P_GO_P2P_GO_MCC_24_2x2, - PM_P2P_GO_P2P_GO_SCC_5_1x1, - PM_P2P_GO_P2P_GO_SCC_5_2x2, - PM_P2P_GO_P2P_GO_MCC_5_1x1, - PM_P2P_GO_P2P_GO_MCC_5_2x2, - PM_P2P_GO_P2P_GO_MCC_24_5_1x1, - PM_P2P_GO_P2P_GO_MCC_24_5_2x2, - PM_P2P_GO_P2P_GO_DBS_1x1, - PM_P2P_GO_P2P_GO_DBS_2x2, - PM_P2P_GO_P2P_GO_SBS_5_1x1, PM_MAX_TWO_CONNECTION_MODE }; diff --git a/components/cmn_services/policy_mgr/src/wlan_policy_mgr_pcl.c b/components/cmn_services/policy_mgr/src/wlan_policy_mgr_pcl.c index af6e19b92fe5..5be8fa6d3e8d 100644 --- a/components/cmn_services/policy_mgr/src/wlan_policy_mgr_pcl.c +++ b/components/cmn_services/policy_mgr/src/wlan_policy_mgr_pcl.c @@ -1729,58 +1729,128 @@ static enum policy_mgr_two_connection_mode return index; } +/* + * policy_mgr_check_and_get_third_connection_pcl_table_index_for_scc() - + * This function checks connection mode is in scc or not and returns + * index value based on mode and prvided index inputs. + * + * @scc_2g_1x1: index of scc_2g_1x1 for provided concurrency + * @scc_2g_2x2: index of scc_2g_2x2 for provided concurrency + * @scc_5g_1x1: index of scc_5g_1x1 for provided concurrency + * @scc_5g_2x2: index of scc_5g_2x2 for provided concurrency + * + * Return: policy_mgr_two_connection_mode index + */ static enum policy_mgr_two_connection_mode - policy_mgr_get_third_connection_pcl_table_index_go_go(void) +policy_mgr_check_and_get_third_connection_pcl_table_index_for_scc( + enum policy_mgr_two_connection_mode scc_2g_1x1, + enum policy_mgr_two_connection_mode scc_2g_2x2, + enum policy_mgr_two_connection_mode scc_5g_1x1, + enum policy_mgr_two_connection_mode scc_5g_2x2) { enum policy_mgr_two_connection_mode index = PM_MAX_TWO_CONNECTION_MODE; - /* SCC */ + if (pm_conc_connection_list[0].freq == - pm_conc_connection_list[1].freq) { + pm_conc_connection_list[1].freq) { if (WLAN_REG_IS_24GHZ_CH_FREQ( - pm_conc_connection_list[0].freq)) { + pm_conc_connection_list[0].freq)) { if (POLICY_MGR_ONE_ONE == - pm_conc_connection_list[0].chain_mask) - index = PM_P2P_GO_P2P_GO_SCC_24_1x1; + pm_conc_connection_list[0].chain_mask) + index = scc_2g_1x1; else - index = PM_P2P_GO_P2P_GO_SCC_24_2x2; + index = scc_2g_2x2; } else { if (POLICY_MGR_ONE_ONE == pm_conc_connection_list[0].chain_mask) - index = PM_P2P_GO_P2P_GO_SCC_5_1x1; + index = scc_5g_1x1; else - index = PM_P2P_GO_P2P_GO_SCC_5_2x2; + index = scc_5g_2x2; } - /* MCC */ - } else if (pm_conc_connection_list[0].mac == - pm_conc_connection_list[1].mac) { + } + return index; +} + +/* + * policy_mgr_check_and_get_third_connection_pcl_table_index_for_mcc() - + * This function checks connection mode is in mcc or not and returns + * index value based on mode and prvided index inputs. + * + * @mcc_2g_1x1: index of mcc_2g_1x1 for provided concurrency + * @mcc_2g_2x2: index of mcc_2g_2x2 for provided concurrency + * @mcc_5g_1x1: index of mcc_5g_1x1 for provided concurrency + * @mcc_5g_2x2: index of mcc_5g_2x2 for provided concurrency + * @mcc_24_5_1x1: index of mcc_24_5_1x1 for provided concurrency + * @mcc_24_5_2x2: index of mcc_24_5_2x2 for provided concurrency + * + * Return: policy_mgr_two_connection_mode index + */ +static enum policy_mgr_two_connection_mode +policy_mgr_check_and_get_third_connection_pcl_table_index_for_mcc( + 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, + enum policy_mgr_two_connection_mode mcc_5g_2x2, + enum policy_mgr_two_connection_mode mcc_24_5_1x1, + enum policy_mgr_two_connection_mode mcc_24_5_2x2) +{ + 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 ((WLAN_REG_IS_24GHZ_CH_FREQ( - pm_conc_connection_list[0].freq)) && - (WLAN_REG_IS_24GHZ_CH_FREQ( - pm_conc_connection_list[1].freq))) { + pm_conc_connection_list[0].freq)) && + (WLAN_REG_IS_24GHZ_CH_FREQ( + pm_conc_connection_list[1].freq))) { if (POLICY_MGR_ONE_ONE == - pm_conc_connection_list[0].chain_mask) - index = PM_P2P_GO_P2P_GO_MCC_24_1x1; + pm_conc_connection_list[0].chain_mask) + index = mcc_2g_1x1; else - index = PM_P2P_GO_P2P_GO_MCC_24_2x2; + index = mcc_2g_2x2; } else if ((WLAN_REG_IS_5GHZ_CH_FREQ( pm_conc_connection_list[0].freq)) && (WLAN_REG_IS_5GHZ_CH_FREQ( pm_conc_connection_list[1].freq))) { + } else if (!(WLAN_REG_IS_24GHZ_CH_FREQ( + pm_conc_connection_list[0].freq)) && + !(WLAN_REG_IS_24GHZ_CH_FREQ( + pm_conc_connection_list[1].freq))) { if (POLICY_MGR_ONE_ONE == - pm_conc_connection_list[0].chain_mask) - index = PM_P2P_GO_P2P_GO_MCC_5_1x1; + pm_conc_connection_list[0].chain_mask) + index = mcc_5g_1x1; else - index = PM_P2P_GO_P2P_GO_MCC_5_2x2; + index = mcc_5g_2x2; } else { if (POLICY_MGR_ONE_ONE == pm_conc_connection_list[0].chain_mask) - index = PM_P2P_GO_P2P_GO_MCC_24_5_1x1; + index = mcc_24_5_1x1; else - index = PM_P2P_GO_P2P_GO_MCC_24_5_2x2; + index = mcc_24_5_2x2; } - /* SBS or DBS */ - } else if (pm_conc_connection_list[0].mac != - pm_conc_connection_list[1].mac) { + } + return index; +} + +/* + * policy_mgr_check_and_get_third_connection_pcl_table_index_for_dbs() - + * This function checks connection mode is in dbs or sbs and returns index + * value based on mode and prvided index inputs. + * + * @sbs_5g_1x1: index of sbs_5g_1x1 for provided concurrency + * @sbs_5g_2x2: index of sbs_5g_2x2 for provided concurrency + * @dbs_1x1: index of dbs_1x1 for provided concurrency + * @dbs_2x2: index of dbs_2x2 for provided concurrency + * + * Return: policy_mgr_two_connection_mode index + */ +static enum policy_mgr_two_connection_mode +policy_mgr_check_and_get_third_connection_pcl_table_index_for_dbs( + 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, + enum policy_mgr_two_connection_mode dbs_2x2) +{ + 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) { /* SBS */ if ((WLAN_REG_IS_5GHZ_CH_FREQ( pm_conc_connection_list[0].freq)) && @@ -1788,16 +1858,89 @@ static enum policy_mgr_two_connection_mode pm_conc_connection_list[1].freq))) { if (POLICY_MGR_ONE_ONE == pm_conc_connection_list[0].chain_mask) - index = PM_P2P_GO_P2P_GO_SBS_5_1x1; + index = sbs_5g_1x1; + else + index = sbs_5g_2x2; } else { /* DBS */ if (POLICY_MGR_ONE_ONE == pm_conc_connection_list[0].chain_mask) - index = PM_P2P_GO_P2P_GO_DBS_1x1; + index = dbs_1x1; else - index = PM_P2P_GO_P2P_GO_DBS_2x2; + index = dbs_2x2; } } + + return index; +} + +static enum policy_mgr_two_connection_mode + policy_mgr_get_third_connection_pcl_table_index_cli_cli(void) +{ + enum policy_mgr_two_connection_mode index; + + index = + policy_mgr_check_and_get_third_connection_pcl_table_index_for_scc( + PM_P2P_CLI_P2P_CLI_SCC_24_1x1, + PM_P2P_CLI_P2P_CLI_SCC_24_2x2, + PM_P2P_CLI_P2P_CLI_SCC_5_1x1, + PM_P2P_CLI_P2P_CLI_SCC_5_2x2); + if (index != PM_MAX_TWO_CONNECTION_MODE) + return index; + + index = + policy_mgr_check_and_get_third_connection_pcl_table_index_for_mcc( + PM_P2P_CLI_P2P_CLI_MCC_24_1x1, + PM_P2P_CLI_P2P_CLI_MCC_24_2x2, + PM_P2P_CLI_P2P_CLI_MCC_5_1x1, + PM_P2P_CLI_P2P_CLI_MCC_5_2x2, + PM_P2P_CLI_P2P_CLI_MCC_24_5_1x1, + PM_P2P_CLI_P2P_CLI_MCC_24_5_2x2); + + if (index != PM_MAX_TWO_CONNECTION_MODE) + return index; + + index = + policy_mgr_check_and_get_third_connection_pcl_table_index_for_dbs( + PM_P2P_CLI_P2P_CLI_SBS_5_1x1, + PM_P2P_CLI_P2P_CLI_SBS_5_2x2, + PM_P2P_CLI_P2P_CLI_DBS_1x1, + PM_P2P_CLI_P2P_CLI_DBS_2x2); + + return index; +} + +static enum policy_mgr_two_connection_mode + policy_mgr_get_third_connection_pcl_table_index_go_go(void) +{ + enum policy_mgr_two_connection_mode index; + + index = + policy_mgr_check_and_get_third_connection_pcl_table_index_for_scc( + PM_P2P_GO_P2P_GO_SCC_24_1x1, + PM_P2P_GO_P2P_GO_SCC_24_2x2, + PM_P2P_GO_P2P_GO_SCC_5_1x1, + PM_P2P_GO_P2P_GO_SCC_5_2x2); + if (index != PM_MAX_TWO_CONNECTION_MODE) + return index; + + index = + policy_mgr_check_and_get_third_connection_pcl_table_index_for_mcc( + PM_P2P_GO_P2P_GO_MCC_24_1x1, + PM_P2P_GO_P2P_GO_MCC_24_2x2, + PM_P2P_GO_P2P_GO_MCC_5_1x1, + PM_P2P_GO_P2P_GO_MCC_5_2x2, + PM_P2P_GO_P2P_GO_MCC_24_5_1x1, + PM_P2P_GO_P2P_GO_MCC_24_5_2x2); + if (index != PM_MAX_TWO_CONNECTION_MODE) + return index; + + index = + policy_mgr_check_and_get_third_connection_pcl_table_index_for_dbs( + PM_P2P_GO_P2P_GO_SBS_5_1x1, + PM_P2P_GO_P2P_GO_SBS_5_2x2, + PM_P2P_GO_P2P_GO_DBS_1x1, + PM_P2P_GO_P2P_GO_DBS_2x2); return index; } @@ -1977,6 +2120,11 @@ enum policy_mgr_two_connection_mode index = policy_mgr_get_third_connection_pcl_table_index_go_go(); + 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_debug("mode0:%d mode1:%d freq0:%d freq1:%d chain:%d index:%d", pm_conc_connection_list[0].mode, pm_conc_connection_list[1].mode, diff --git a/components/cmn_services/policy_mgr/src/wlan_policy_mgr_tables_2x2_dbs_i.h b/components/cmn_services/policy_mgr/src/wlan_policy_mgr_tables_2x2_dbs_i.h index b5fc5f169436..fe458df7fd2d 100644 --- a/components/cmn_services/policy_mgr/src/wlan_policy_mgr_tables_2x2_dbs_i.h +++ b/components/cmn_services/policy_mgr/src/wlan_policy_mgr_tables_2x2_dbs_i.h @@ -1147,6 +1147,182 @@ pm_third_connection_pcl_dbs_2x2_table = { PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE}, [PM_NDI_MODE] = {PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE} }, + [PM_P2P_CLI_P2P_CLI_SCC_24_1x1] = { + [PM_STA_MODE] = {PM_5G, PM_5G, PM_5G}, + [PM_SAP_MODE] = {PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, + PM_MAX_PCL_TYPE}, + [PM_P2P_CLIENT_MODE] = { + PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE}, + [PM_P2P_GO_MODE] = {PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, + PM_MAX_PCL_TYPE}, + [PM_NAN_DISC_MODE] = { + PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE}, + [PM_NDI_MODE] = {PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, + PM_MAX_PCL_TYPE} }, + + [PM_P2P_CLI_P2P_CLI_SCC_24_2x2] = { + [PM_STA_MODE] = {PM_5G, PM_5G, PM_5G}, + [PM_SAP_MODE] = {PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, + PM_MAX_PCL_TYPE}, + [PM_P2P_CLIENT_MODE] = { + PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE}, + [PM_P2P_GO_MODE] = {PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, + PM_MAX_PCL_TYPE}, + [PM_NAN_DISC_MODE] = { + PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE}, + [PM_NDI_MODE] = {PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, + PM_MAX_PCL_TYPE} }, + + [PM_P2P_CLI_P2P_CLI_MCC_24_1x1] = { + [PM_STA_MODE] = {PM_5G, PM_5G, PM_5G}, + [PM_SAP_MODE] = {PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, + PM_MAX_PCL_TYPE}, + [PM_P2P_CLIENT_MODE] = { + PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE}, + [PM_P2P_GO_MODE] = { + PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE}, + [PM_NAN_DISC_MODE] = { + PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE}, + [PM_NDI_MODE] = {PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, + PM_MAX_PCL_TYPE} }, + + [PM_P2P_CLI_P2P_CLI_MCC_24_2x2] = { + [PM_STA_MODE] = {PM_5G, PM_5G, PM_5G}, + [PM_SAP_MODE] = {PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, + PM_MAX_PCL_TYPE}, + [PM_P2P_CLIENT_MODE] = { + PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE}, + [PM_P2P_GO_MODE] = { + PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE}, + [PM_NAN_DISC_MODE] = { + PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE}, + [PM_NDI_MODE] = {PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, + PM_MAX_PCL_TYPE} }, + + [PM_P2P_CLI_P2P_CLI_SCC_5_1x1] = { + [PM_STA_MODE] = {PM_24G, PM_24G, PM_24G}, + [PM_SAP_MODE] = {PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, + PM_MAX_PCL_TYPE}, + [PM_P2P_CLIENT_MODE] = { + PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE}, + [PM_P2P_GO_MODE] = { + PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE}, + [PM_NAN_DISC_MODE] = { + PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE}, + [PM_NDI_MODE] = {PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, + PM_MAX_PCL_TYPE} }, + + [PM_P2P_CLI_P2P_CLI_SCC_5_2x2] = { + [PM_STA_MODE] = {PM_24G, PM_24G, PM_24G}, + [PM_SAP_MODE] = {PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, + PM_MAX_PCL_TYPE}, + [PM_P2P_CLIENT_MODE] = { + PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE}, + [PM_P2P_GO_MODE] = { + PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE}, + [PM_NAN_DISC_MODE] = { + PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE}, + [PM_NDI_MODE] = {PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, + PM_MAX_PCL_TYPE} }, + + [PM_P2P_CLI_P2P_CLI_MCC_5_1x1] = { + [PM_STA_MODE] = {PM_24G, PM_24G, PM_24G}, + [PM_SAP_MODE] = {PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, + PM_MAX_PCL_TYPE}, + [PM_P2P_CLIENT_MODE] = { + PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE}, + [PM_P2P_GO_MODE] = { + PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE}, + [PM_NAN_DISC_MODE] = { + PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE}, + [PM_NDI_MODE] = {PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, + PM_MAX_PCL_TYPE} }, + + [PM_P2P_CLI_P2P_CLI_MCC_5_2x2] = { + [PM_STA_MODE] = {PM_24G, PM_24G, PM_24G}, + [PM_SAP_MODE] = {PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, + PM_MAX_PCL_TYPE}, + [PM_P2P_CLIENT_MODE] = { + PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE}, + [PM_P2P_GO_MODE] = { + PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE}, + [PM_NAN_DISC_MODE] = { + PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE}, + [PM_NDI_MODE] = {PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, + PM_MAX_PCL_TYPE} }, + + [PM_P2P_CLI_P2P_CLI_MCC_24_5_1x1] = { + [PM_STA_MODE] = {PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, + PM_MAX_PCL_TYPE}, + [PM_SAP_MODE] = {PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, + PM_MAX_PCL_TYPE}, + [PM_P2P_CLIENT_MODE] = { + PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE}, + [PM_P2P_GO_MODE] = { + PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE}, + [PM_NAN_DISC_MODE] = { + PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE}, + [PM_NDI_MODE] = {PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, + PM_MAX_PCL_TYPE} }, + + [PM_P2P_CLI_P2P_CLI_MCC_24_5_2x2] = { + [PM_STA_MODE] = {PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, + PM_MAX_PCL_TYPE}, + [PM_SAP_MODE] = {PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, + PM_MAX_PCL_TYPE}, + [PM_P2P_CLIENT_MODE] = { + PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE}, + [PM_P2P_GO_MODE] = { + PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE}, + [PM_NAN_DISC_MODE] = { + PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE}, + [PM_NDI_MODE] = {PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, + PM_MAX_PCL_TYPE} }, + + [PM_P2P_CLI_P2P_CLI_DBS_1x1] = { + [PM_STA_MODE] = { + PM_SCC_ON_5_SCC_ON_24_5G, PM_SCC_ON_5_SCC_ON_24_5G, + PM_SCC_ON_5_SCC_ON_24_5G}, + [PM_SAP_MODE] = { + PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE}, + [PM_P2P_CLIENT_MODE] = { + PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE}, + [PM_P2P_GO_MODE] = { + PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE}, + [PM_NAN_DISC_MODE] = { + PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE}, + [PM_NDI_MODE] = {PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, + PM_MAX_PCL_TYPE} }, + + [PM_P2P_CLI_P2P_CLI_DBS_2x2] = { + [PM_STA_MODE] = { PM_SCC_ON_5_SCC_ON_24_5G, + PM_SCC_ON_5_SCC_ON_24_5G, + PM_SCC_ON_5_SCC_ON_24_5G}, + [PM_SAP_MODE] = { + PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE}, + [PM_P2P_CLIENT_MODE] = { + PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE}, + [PM_P2P_GO_MODE] = { + PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE}, + [PM_NAN_DISC_MODE] = { + PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE}, + [PM_NDI_MODE] = {PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, + PM_MAX_PCL_TYPE} }, + + [PM_P2P_CLI_P2P_CLI_SBS_5_1x1] = { + [PM_STA_MODE] = { + PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE}, + [PM_SAP_MODE] = { + PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE}, + [PM_P2P_CLIENT_MODE] = { + PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE}, + [PM_P2P_GO_MODE] = { + PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE}, + [PM_NAN_DISC_MODE] = { + PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE}, + [PM_NDI_MODE] = {PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, + PM_MAX_PCL_TYPE} }, + [PM_STA_P2P_CLI_SCC_24_1x1] = { [PM_STA_MODE] = { PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},