瀏覽代碼

qcacld-3.0: Support for CLI+SAP in the PCL tables for third connection

Add support for CLI+SAP combination in the PCL tables which will be
used before deciding the PCL for the third connection that is going to
come up.

CRs-Fixed: 932277
Change-Id: I87e0d6306a40129931268d869b09c5bf763fab95
Chandrasekaran, Manishekar 9 年之前
父節點
當前提交
d9e9b12193
共有 2 個文件被更改,包括 338 次插入0 次删除
  1. 33 0
      core/cds/inc/cds_concurrency.h
  2. 305 0
      core/cds/src/cds_concurrency.c

+ 33 - 0
core/cds/inc/cds_concurrency.h

@@ -300,6 +300,28 @@ enum cds_one_connection_mode {
  *			MCC using 2x2@5 Ghz
  * @CDS_P2P_GO_SAP_DBS_1x1: P2P GO & SAP connection on DBS using
  *			1x1
+ * @CDS_P2P_CLI_SAP_SCC_24_1x1: CLI & SAP connection on SCC using
+ *			[email protected] Ghz
+ * @CDS_P2P_CLI_SAP_SCC_24_2x2: CLI & SAP connection on SCC using
+ *			[email protected] Ghz
+ * @CDS_P2P_CLI_SAP_MCC_24_1x1: CLI & SAP connection on MCC using
+ *			[email protected] Ghz
+ * @CDS_P2P_CLI_SAP_MCC_24_2x2: CLI & SAP connection on MCC using
+ *			[email protected] Ghz
+ * @CDS_P2P_CLI_SAP_SCC_5_1x1: CLI & SAP connection on SCC using
+ *			1x1@5 Ghz
+ * @CDS_P2P_CLI_SAP_SCC_5_2x2: CLI & SAP connection on SCC using
+ *			2x2@5 Ghz
+ * @CDS_P2P_CLI_SAP_MCC_5_1x1: CLI & SAP connection on MCC using
+ *			1x1@5 Ghz
+ * @CDS_P2P_CLI_SAP_MCC_5_2x2: CLI & SAP connection on MCC using
+ *			2x2@5 Ghz
+ * @CDS_P2P_STA_SAP_MCC_24_5_1x1: CLI and SAP connecting on MCC
+ *			in 2.4 and 5GHz 1x1
+ * @CDS_P2P_STA_SAP_MCC_24_5_2x2: CLI and SAP connecting on MCC
+			in 2.4 and 5GHz 2x2
+ * @CDS_P2P_CLI_SAP_DBS_1x1,: CLI & SAP connection on DBS using 1x1
+
  * @CDS_MAX_TWO_CONNECTION_MODE: Max place holder
  *
  * These are generic IDs that identify the various roles
@@ -361,6 +383,17 @@ enum cds_two_connection_mode {
 	CDS_P2P_GO_SAP_MCC_24_5_1x1,
 	CDS_P2P_GO_SAP_MCC_24_5_2x2,
 	CDS_P2P_GO_SAP_DBS_1x1,
+	CDS_P2P_CLI_SAP_SCC_24_1x1,
+	CDS_P2P_CLI_SAP_SCC_24_2x2,
+	CDS_P2P_CLI_SAP_MCC_24_1x1,
+	CDS_P2P_CLI_SAP_MCC_24_2x2,
+	CDS_P2P_CLI_SAP_SCC_5_1x1,
+	CDS_P2P_CLI_SAP_SCC_5_2x2,
+	CDS_P2P_CLI_SAP_MCC_5_1x1,
+	CDS_P2P_CLI_SAP_MCC_5_2x2,
+	CDS_P2P_CLI_SAP_MCC_24_5_1x1,
+	CDS_P2P_CLI_SAP_MCC_24_5_2x2,
+	CDS_P2P_CLI_SAP_DBS_1x1,
 
 	CDS_MAX_TWO_CONNECTION_MODE
 };

+ 305 - 0
core/cds/src/cds_concurrency.c

@@ -1032,6 +1032,131 @@ third_connection_pcl_dbs_table[CDS_MAX_TWO_CONNECTION_MODE]
 	[CDS_IBSS_MODE] = {
 		CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} },
 #endif
+	[CDS_P2P_CLI_SAP_SCC_24_1x1] = {
+	[CDS_STA_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH},
+	[CDS_SAP_MODE] = {CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE},
+	[CDS_P2P_CLIENT_MODE] = {
+			CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE},
+	[CDS_P2P_GO_MODE] = {
+			CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE},
+	[CDS_IBSS_MODE] = {
+		CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} },
+
+	[CDS_P2P_CLI_SAP_SCC_24_2x2] = {
+	[CDS_STA_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH},
+	[CDS_SAP_MODE] = {CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE},
+	[CDS_P2P_CLIENT_MODE] = {
+			CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE},
+	[CDS_P2P_GO_MODE] = {
+			CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE},
+	[CDS_IBSS_MODE] = {
+		CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} },
+
+	[CDS_P2P_CLI_SAP_MCC_24_1x1] = {
+	[CDS_STA_MODE] = {CDS_5G_MCC_CH, CDS_5G, CDS_5G_MCC_CH},
+	[CDS_SAP_MODE] = {CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE},
+	[CDS_P2P_CLIENT_MODE] = {
+			CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE},
+	[CDS_P2P_GO_MODE] = {
+		CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE},
+	[CDS_IBSS_MODE] = {
+		CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} },
+
+	[CDS_P2P_CLI_SAP_MCC_24_2x2] = {
+	[CDS_STA_MODE] = {CDS_5G_MCC_CH, CDS_5G, CDS_5G_MCC_CH},
+	[CDS_SAP_MODE] = {CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE},
+	[CDS_P2P_CLIENT_MODE] = {
+			CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE},
+	[CDS_P2P_GO_MODE] = {
+		CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE},
+	[CDS_IBSS_MODE] = {
+		CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} },
+
+	[CDS_P2P_CLI_SAP_SCC_5_1x1] = {
+	[CDS_STA_MODE] = {CDS_SCC_CH_24G, CDS_24G_SCC_CH, CDS_SCC_CH_24G},
+	[CDS_SAP_MODE] = {CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE},
+	[CDS_P2P_CLIENT_MODE] = {
+			CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE},
+	[CDS_P2P_GO_MODE] = {
+		CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE},
+	[CDS_IBSS_MODE] = {
+		CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} },
+
+	[CDS_P2P_CLI_SAP_SCC_5_2x2] = {
+	[CDS_STA_MODE] = {CDS_SCC_CH_24G, CDS_24G_SCC_CH, CDS_SCC_CH_24G},
+	[CDS_SAP_MODE] = {CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE},
+	[CDS_P2P_CLIENT_MODE] = {
+			CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE},
+	[CDS_P2P_GO_MODE] = {
+		CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE},
+	[CDS_IBSS_MODE] = {
+		CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} },
+
+	[CDS_P2P_CLI_SAP_MCC_5_1x1] = {
+	[CDS_STA_MODE] = {CDS_MCC_CH_24G, CDS_24G, CDS_24G},
+	[CDS_SAP_MODE] = {CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE},
+	[CDS_P2P_CLIENT_MODE] = {
+			CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE},
+	[CDS_P2P_GO_MODE] = {
+		CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE},
+	[CDS_IBSS_MODE] = {
+		CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} },
+
+	[CDS_P2P_CLI_SAP_MCC_5_2x2] = {
+	[CDS_STA_MODE] = {CDS_MCC_CH_24G, CDS_24G, CDS_24G},
+	[CDS_SAP_MODE] = {CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE},
+	[CDS_P2P_CLIENT_MODE] = {
+			CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE},
+	[CDS_P2P_GO_MODE] = {
+			CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE},
+	[CDS_IBSS_MODE] = {
+		CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} },
+
+	[CDS_P2P_CLI_SAP_MCC_24_5_1x1] = {
+	[CDS_STA_MODE] = {CDS_MCC_CH_5G, CDS_5G, CDS_5G},
+	[CDS_SAP_MODE] = {CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE},
+	[CDS_P2P_CLIENT_MODE] = {
+			CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE},
+	[CDS_P2P_GO_MODE] = {
+		CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE},
+	[CDS_IBSS_MODE] = {
+		CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} },
+
+	[CDS_P2P_CLI_SAP_MCC_24_5_2x2] = {
+	[CDS_STA_MODE] = {CDS_MCC_CH_5G, CDS_5G, CDS_5G},
+	[CDS_SAP_MODE] = {CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE},
+	[CDS_P2P_CLIENT_MODE] = {
+			CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE},
+	[CDS_P2P_GO_MODE] = {
+		CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE},
+	[CDS_IBSS_MODE] = {
+		CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} },
+#ifndef QCA_WIFI_3_0_EMU
+	[CDS_P2P_CLI_SAP_DBS_1x1] = {
+	[CDS_STA_MODE] = {
+		CDS_SCC_ON_5_SCC_ON_24_5G, CDS_NONE, CDS_SCC_ON_5_SCC_ON_24},
+	[CDS_SAP_MODE] = {
+		CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE},
+	[CDS_P2P_CLIENT_MODE] = {
+		CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE},
+	[CDS_P2P_GO_MODE] = {
+		CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE},
+	[CDS_IBSS_MODE] = {
+		CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} },
+#else
+	[CDS_P2P_CLI_SAP_DBS_1x1] = {
+	[CDS_STA_MODE] = {
+		CDS_SCC_ON_5_SCC_ON_24, CDS_NONE, CDS_SCC_ON_5_SCC_ON_24},
+	[CDS_SAP_MODE] = {
+		CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE},
+	[CDS_P2P_CLIENT_MODE] = {
+		CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE},
+	[CDS_P2P_GO_MODE] = {
+		CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE},
+	[CDS_IBSS_MODE] = {
+		CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} },
+#endif
+
 };
 
 /**
@@ -1553,6 +1678,120 @@ third_connection_pcl_nodbs_table[CDS_MAX_TWO_CONNECTION_MODE]
 			CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE},
 	[CDS_IBSS_MODE] = {
 		CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} },
+
+
+	[CDS_P2P_CLI_SAP_SCC_24_1x1] = {
+	[CDS_STA_MODE] = {CDS_5G,        CDS_SCC_CH, CDS_SCC_CH},
+	[CDS_SAP_MODE] = {CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE},
+	[CDS_P2P_CLIENT_MODE] = {
+			CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE},
+	[CDS_P2P_GO_MODE] = {
+			CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE},
+	[CDS_IBSS_MODE] = {
+		CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} },
+
+	[CDS_P2P_CLI_SAP_SCC_24_2x2] = {
+	[CDS_STA_MODE] = {CDS_5G,        CDS_SCC_CH, CDS_SCC_CH},
+	[CDS_SAP_MODE] = {CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE},
+	[CDS_P2P_CLIENT_MODE] = {
+			CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE},
+	[CDS_P2P_GO_MODE] = {
+			CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE},
+	[CDS_IBSS_MODE] = {
+		CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} },
+
+	[CDS_P2P_CLI_SAP_MCC_24_1x1] = {
+	[CDS_STA_MODE] = {CDS_5G_MCC_CH, CDS_MCC_CH, CDS_MCC_CH},
+	[CDS_SAP_MODE] = {CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE},
+	[CDS_P2P_CLIENT_MODE] = {
+			CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE},
+	[CDS_P2P_GO_MODE] = {
+			CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE},
+	[CDS_IBSS_MODE] = {
+		CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} },
+
+	[CDS_P2P_CLI_SAP_MCC_24_2x2] = {
+	[CDS_STA_MODE] = {CDS_5G_MCC_CH, CDS_MCC_CH, CDS_MCC_CH},
+	[CDS_SAP_MODE] = {CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE},
+	[CDS_P2P_CLIENT_MODE] = {
+			CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE},
+	[CDS_P2P_GO_MODE] = {
+			CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE},
+	[CDS_IBSS_MODE] = {
+		CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} },
+
+	[CDS_P2P_CLI_SAP_SCC_5_1x1] = {
+	[CDS_STA_MODE] = {CDS_SCC_CH, CDS_SCC_CH, CDS_SCC_CH},
+	[CDS_SAP_MODE] = {CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE},
+	[CDS_P2P_CLIENT_MODE] = {
+			CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE},
+	[CDS_P2P_GO_MODE] = {
+			CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE},
+	[CDS_IBSS_MODE] = {
+		CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} },
+
+	[CDS_P2P_CLI_SAP_SCC_5_2x2] = {
+	[CDS_STA_MODE] = {CDS_SCC_CH, CDS_SCC_CH, CDS_SCC_CH},
+	[CDS_SAP_MODE] = {CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE},
+	[CDS_P2P_CLIENT_MODE] = {
+			CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE},
+	[CDS_P2P_GO_MODE] = {
+			CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE},
+	[CDS_IBSS_MODE] = {
+		CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} },
+
+	[CDS_P2P_CLI_SAP_MCC_5_1x1] = {
+	[CDS_STA_MODE] = {CDS_MCC_CH, CDS_MCC_CH, CDS_MCC_CH},
+	[CDS_SAP_MODE] = {CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE},
+	[CDS_P2P_CLIENT_MODE] = {
+			CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE},
+	[CDS_P2P_GO_MODE] = {
+			CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE},
+	[CDS_IBSS_MODE] = {
+		CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} },
+
+	[CDS_P2P_CLI_SAP_MCC_5_2x2] = {
+	[CDS_STA_MODE] = {CDS_MCC_CH, CDS_MCC_CH, CDS_MCC_CH},
+	[CDS_SAP_MODE] = {CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE},
+	[CDS_P2P_CLIENT_MODE] = {
+			CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE},
+	[CDS_P2P_GO_MODE] = {
+			CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE},
+	[CDS_IBSS_MODE] = {
+		CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} },
+
+	[CDS_P2P_CLI_SAP_MCC_24_5_1x1] = {
+	[CDS_STA_MODE] = {CDS_MCC_CH, CDS_MCC_CH, CDS_MCC_CH},
+	[CDS_SAP_MODE] = {CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE},
+	[CDS_P2P_CLIENT_MODE] = {
+			CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE},
+	[CDS_P2P_GO_MODE] = {
+			CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE},
+	[CDS_IBSS_MODE] = {
+		CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} },
+
+	[CDS_P2P_CLI_SAP_MCC_24_5_2x2] = {
+	[CDS_STA_MODE] = {CDS_MCC_CH, CDS_MCC_CH, CDS_MCC_CH},
+	[CDS_SAP_MODE] = {CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE},
+	[CDS_P2P_CLIENT_MODE] = {
+			CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE},
+	[CDS_P2P_GO_MODE] = {
+			CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE},
+	[CDS_IBSS_MODE] = {
+		CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} },
+
+	[CDS_P2P_CLI_SAP_DBS_1x1] = {
+	[CDS_STA_MODE] = {
+			CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE},
+	[CDS_SAP_MODE] = {
+			CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE},
+	[CDS_P2P_CLIENT_MODE] = {
+			CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE},
+	[CDS_P2P_GO_MODE] = {
+			CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE},
+	[CDS_IBSS_MODE] = {
+		CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} },
+
 };
 
 /**
@@ -1655,6 +1894,18 @@ next_action_three_connection_table[CDS_MAX_TWO_CONNECTION_MODE]
 	[CDS_P2P_GO_SAP_MCC_24_5_2x2] = {
 			CDS_DBS_DOWNGRADE,   CDS_DBS_DOWNGRADE},
 	[CDS_P2P_GO_SAP_DBS_1x1] = {CDS_NOP,             CDS_NOP},
+	[CDS_P2P_CLI_SAP_SCC_24_1x1] = {CDS_NOP,             CDS_DBS},
+	[CDS_P2P_CLI_SAP_SCC_24_2x2] = {CDS_NOP,             CDS_DBS_DOWNGRADE},
+	[CDS_P2P_CLI_SAP_MCC_24_1x1] = {CDS_NOP,             CDS_DBS},
+	[CDS_P2P_CLI_SAP_MCC_24_2x2] = {CDS_NOP,             CDS_DBS_DOWNGRADE},
+	[CDS_P2P_CLI_SAP_SCC_5_1x1] = {CDS_DBS,             CDS_NOP},
+	[CDS_P2P_CLI_SAP_SCC_5_2x2] = {CDS_DBS_DOWNGRADE,   CDS_NOP},
+	[CDS_P2P_CLI_SAP_MCC_5_1x1] = {CDS_DBS,             CDS_NOP},
+	[CDS_P2P_CLI_SAP_MCC_5_2x2] = {CDS_DBS_DOWNGRADE,   CDS_NOP},
+	[CDS_P2P_CLI_SAP_MCC_24_5_1x1] = {CDS_DBS,             CDS_DBS},
+	[CDS_P2P_CLI_SAP_MCC_24_5_2x2] = {CDS_DBS_DOWNGRADE, CDS_DBS_DOWNGRADE},
+	[CDS_P2P_CLI_SAP_DBS_1x1] = {CDS_NOP,             CDS_NOP},
+
 };
 
 /**
@@ -4622,6 +4873,60 @@ enum cds_two_connection_mode cds_get_third_connection_pcl_table_index(
 {
 	enum cds_one_connection_mode index = CDS_MAX_TWO_CONNECTION_MODE;
 
+	/* P2P Client + SAP */
+	if (((CDS_P2P_CLIENT_MODE == conc_connection_list[0].mode) &&
+		(CDS_SAP_MODE == conc_connection_list[1].mode)) ||
+		((CDS_SAP_MODE == conc_connection_list[0].mode) &&
+		(CDS_P2P_CLIENT_MODE == conc_connection_list[1].mode))) {
+		/* SCC */
+		if (conc_connection_list[0].chan ==
+			conc_connection_list[1].chan) {
+			if (CDS_IS_CHANNEL_24GHZ(
+				conc_connection_list[0].chan)) {
+				if (CDS_ONE_ONE ==
+					conc_connection_list[0].chain_mask)
+					index = CDS_P2P_CLI_SAP_SCC_24_1x1;
+				else
+					index = CDS_P2P_CLI_SAP_SCC_24_2x2;
+			} else {
+				if (CDS_ONE_ONE ==
+					conc_connection_list[0].chain_mask)
+					index = CDS_P2P_CLI_SAP_SCC_5_1x1;
+				else
+					index = CDS_P2P_CLI_SAP_SCC_5_2x2;
+			}
+		/* MCC */
+		} else if (conc_connection_list[0].mac ==
+				conc_connection_list[1].mac) {
+			if ((CDS_IS_CHANNEL_24GHZ
+				(conc_connection_list[0].chan)) &&
+				(CDS_IS_CHANNEL_24GHZ
+				(conc_connection_list[1].chan))) {
+				if (CDS_ONE_ONE ==
+				conc_connection_list[0].chain_mask)
+					index = CDS_P2P_CLI_SAP_MCC_24_1x1;
+				else
+					index = CDS_P2P_CLI_SAP_MCC_24_2x2;
+			} else if ((CDS_IS_CHANNEL_5GHZ(
+				conc_connection_list[0].chan)) &&
+				(CDS_IS_CHANNEL_5GHZ(
+				conc_connection_list[1].chan))) {
+				if (CDS_ONE_ONE ==
+				conc_connection_list[0].chain_mask)
+					index = CDS_P2P_CLI_SAP_MCC_5_1x1;
+				else
+					index = CDS_P2P_CLI_SAP_MCC_5_2x2;
+			} else {
+				if (CDS_ONE_ONE ==
+				conc_connection_list[0].chain_mask)
+					index = CDS_P2P_CLI_SAP_MCC_24_5_1x1;
+				else
+					index = CDS_P2P_CLI_SAP_MCC_24_5_2x2;
+			}
+		/* DBS */
+		} else
+			index = CDS_P2P_CLI_SAP_DBS_1x1;
+	} else
 	/* STA + SAP */
 	if (((CDS_STA_MODE == conc_connection_list[0].mode) &&
 		(CDS_SAP_MODE == conc_connection_list[1].mode)) ||