Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 76fdddbc authored by Vinod Kumar Myadam's avatar Vinod Kumar Myadam Committed by Madan Koyyalamudi
Browse files

qcacld-3.0: Add support for 3rd mode when CLI+CLI exists

Currently support is not there for 3rd mode when CLI+CLI
connection is there on DUT.

Update PCL table for 3rd mode when CLI+CLI exsits and add
support to fetch index based on new connection band and
concurrency.

Change-Id: I6041c40b3208d0b33dff2b4f9dc854d2d2dc17a1
CRs-Fixed: 3050537
parent fe0fe964
Loading
Loading
Loading
Loading
+60 −28
Original line number Diff line number Diff line
@@ -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
};

+177 −29
Original line number Diff line number Diff line
@@ -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) {
		if (WLAN_REG_IS_24GHZ_CH_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;
				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))) {
			if (POLICY_MGR_ONE_ONE ==
					pm_conc_connection_list[0].chain_mask)
				index = PM_P2P_GO_P2P_GO_MCC_24_1x1;
				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;
				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,
+176 −0
Original line number Diff line number Diff line
@@ -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},