From 5b7c2cd51f6a781105153cedb4f7691fbad62006 Mon Sep 17 00:00:00 2001 From: Aravind Narasimhan Date: Thu, 8 Dec 2016 21:04:26 -0800 Subject: [PATCH] qcacld-3.0: Changes for concurrency FR 32755 Add second and third connection pcl tables and next actions for 2X2 dbs solution Change-Id: I4722e137360a4a0d349d856b01255a0fe11d59fb CRs-Fixed: 1068000 --- core/cds/inc/cds_concurrency.h | 110 +- core/cds/inc/cds_concurrency_1x1_dbs.h | 1015 ++++++++++ core/cds/inc/cds_concurrency_2x2_dbs.h | 1207 ++++++++++++ core/cds/inc/cds_concurrency_no_dbs.h | 909 +++++++++ core/cds/inc/cds_reg_service.h | 13 + core/cds/src/cds_concurrency.c | 2520 ++++++------------------ core/cds/src/cds_reg_service.c | 2 +- core/wma/inc/wma_api.h | 2 + core/wma/src/wma_utils.c | 105 + 9 files changed, 3978 insertions(+), 1905 deletions(-) create mode 100644 core/cds/inc/cds_concurrency_1x1_dbs.h create mode 100644 core/cds/inc/cds_concurrency_2x2_dbs.h create mode 100644 core/cds/inc/cds_concurrency_no_dbs.h diff --git a/core/cds/inc/cds_concurrency.h b/core/cds/inc/cds_concurrency.h index 2378e8aa4f51..398bbcdacefa 100644 --- a/core/cds/inc/cds_concurrency.h +++ b/core/cds/inc/cds_concurrency.h @@ -62,6 +62,8 @@ (WEIGHT_OF_GROUP1_PCL_CHANNELS - PCL_GROUPS_WEIGHT_DIFFERENCE) #define WEIGHT_OF_GROUP3_PCL_CHANNELS \ (WEIGHT_OF_GROUP2_PCL_CHANNELS - PCL_GROUPS_WEIGHT_DIFFERENCE) +#define WEIGHT_OF_GROUP4_PCL_CHANNELS \ + (WEIGHT_OF_GROUP3_PCL_CHANNELS - PCL_GROUPS_WEIGHT_DIFFERENCE) #define WEIGHT_OF_NON_PCL_CHANNELS 1 #define WEIGHT_OF_DISALLOWED_CHANNELS 0 @@ -120,7 +122,8 @@ enum hw_mode_sbs_capab { /** * enum cds_pcl_group_id - Identifies the pcl groups to be used * @CDS_PCL_GROUP_ID1_ID2: Use weights of group1 and group2 - * @CDS_PCL_GROUP_ID2_ID2: Use weights of group2 and group3 + * @CDS_PCL_GROUP_ID2_ID3: Use weights of group2 and group3 + * @CDS_PCL_GROUP_ID3_ID4: Use weights of group3 and group4 * * Since maximum of three groups are possible, this will indicate which * PCL group needs to be used. @@ -128,6 +131,7 @@ enum hw_mode_sbs_capab { enum cds_pcl_group_id { CDS_PCL_GROUP_ID1_ID2, CDS_PCL_GROUP_ID2_ID3, + CDS_PCL_GROUP_ID3_ID4, }; /** @@ -242,6 +246,7 @@ enum cds_mac_use { * @CDS_5G: 5 Ghz channels only * @CDS_SCC_CH: SCC channel only * @CDS_MCC_CH: MCC channels only + * @CDS_SBS_CH: SBS channels only * @CDS_SCC_CH_24G: SCC channel & 2.4 Ghz channels * @CDS_SCC_CH_5G: SCC channel & 5 Ghz channels * @CDS_24G_SCC_CH: 2.4 Ghz channels & SCC channel @@ -262,6 +267,11 @@ enum cds_mac_use { * @CDS_MCC_CH_5G: MCC channels & 5 Ghz channels * @CDS_24G_MCC_CH: 2.4 Ghz channels & MCC channels * @CDS_5G_MCC_CH: 5 Ghz channels & MCC channels + * @CDS_SBS_CH_5G: SBS channels & rest of 5 Ghz channels + * @CDS_24G_SCC_CH_SBS_CH: 2.4 Ghz channels, SCC channel & SBS channels + * @CDS_24G_SCC_CH_SBS_CH_5G: 2.4 Ghz channels, SCC channel, + * SBS channels & rest of the 5G channels + * @CDS_24G_SBS_CH_MCC_CH: 2.4 Ghz channels, SBS channels & MCC channels * @CDS_MAX_PCL_TYPE: Max place holder * * These are generic IDs that identify the various roles @@ -273,6 +283,7 @@ enum cds_pcl_type { CDS_5G, CDS_SCC_CH, CDS_MCC_CH, + CDS_SBS_CH, CDS_SCC_CH_24G, CDS_SCC_CH_5G, CDS_24G_SCC_CH, @@ -287,6 +298,10 @@ enum cds_pcl_type { CDS_MCC_CH_5G, CDS_24G_MCC_CH, CDS_5G_MCC_CH, + CDS_SBS_CH_5G, + CDS_24G_SCC_CH_SBS_CH, + CDS_24G_SCC_CH_SBS_CH_5G, + CDS_24G_SBS_CH_MCC_CH, CDS_MAX_PCL_TYPE }; @@ -366,7 +381,9 @@ enum cds_one_connection_mode { * 1x1@5 Ghz * @CDS_STA_SAP_MCC_5_2x2: STA & SAP connection on MCC using * 2x2@5 Ghz - * @CDS_STA_SAP_DBS_1x1,: STA & SAP connection on DBS using 1x1 + * @CDS_STA_SAP_DBS_1x1: STA & SAP connection on DBS using 1x1 + * @CDS_STA_SAP_DBS_2x2: STA & SAP connection on DBS using 2x2 + * @CDS_STA_SAP_SBS_5_1x1: STA & SAP connection on 5G SBS using 1x1 * @CDS_STA_P2P_GO_SCC_24_1x1: STA & P2P GO connection on SCC * using 1x1@2.4 Ghz * @CDS_STA_P2P_GO_SCC_24_2x2: STA & P2P GO connection on SCC @@ -385,6 +402,10 @@ enum cds_one_connection_mode { * using 2x2@5 Ghz * @CDS_STA_P2P_GO_DBS_1x1: STA & P2P GO connection on DBS using * 1x1 + * @CDS_STA_P2P_GO_DBS_2x2: STA & P2P GO connection on DBS using + * 2x2 + * @CDS_STA_P2P_GO_SBS_5_1x1: STA & P2P GO connection on 5G SBS + * using 1x1 * @CDS_STA_P2P_CLI_SCC_24_1x1: STA & P2P CLI connection on SCC * using 1x1@2.4 Ghz * @CDS_STA_P2P_CLI_SCC_24_2x2: STA & P2P CLI connection on SCC @@ -403,6 +424,10 @@ enum cds_one_connection_mode { * using 2x2@5 Ghz * @CDS_STA_P2P_CLI_DBS_1x1: STA & P2P CLI connection on DBS * using 1x1 + * @CDS_STA_P2P_CLI_DBS_2x2: STA & P2P CLI connection on DBS + * using 2x2 + * @CDS_STA_P2P_CLI_SBS_5_1x1: STA & P2P CLI connection on 5G + * SBS using 1x1 * @CDS_P2P_GO_P2P_CLI_SCC_24_1x1: P2P GO & CLI connection on * SCC using 1x1@2.4 Ghz * @CDS_P2P_GO_P2P_CLI_SCC_24_2x2: P2P GO & CLI connection on @@ -421,6 +446,10 @@ enum cds_one_connection_mode { * MCC using 2x2@5 Ghz * @CDS_P2P_GO_P2P_CLI_DBS_1x1: P2P GO & CLI connection on DBS * using 1x1 + * @CDS_P2P_GO_P2P_CLI_DBS_2x2: P2P GO & P2P CLI connection + * on DBS using 2x2 + * @CDS_P2P_GO_P2P_CLI_SBS_5_1x1: P2P GO & P2P CLI connection + * on 5G SBS using 1x1 * @CDS_P2P_GO_SAP_SCC_24_1x1: P2P GO & SAP connection on * SCC using 1x1@2.4 Ghz * @CDS_P2P_GO_SAP_SCC_24_2x2: P2P GO & SAP connection on @@ -439,6 +468,10 @@ 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_GO_SAP_DBS_2x2: P2P GO & SAP connection on DBS using + * 2x2 + * @CDS_P2P_GO_SAP_SBS_5_1x1: P2P GO & SAP connection on 5G SBS + * using 1x1 * @CDS_P2P_CLI_SAP_SCC_24_1x1: CLI & SAP connection on SCC using * 1x1@2.4 Ghz * @CDS_P2P_CLI_SAP_SCC_24_2x2: CLI & SAP connection on SCC using @@ -458,12 +491,33 @@ enum cds_one_connection_mode { * @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 + * in 2.4 and 5GHz 2x2 * @CDS_P2P_CLI_SAP_DBS_1x1,: CLI & SAP connection on DBS using 1x1 + * @CDS_P2P_CLI_SAP_DBS_2x2: P2P CLI & SAP connection on DBS using + * 2x2 + * @CDS_P2P_CLI_SAP_SBS_5_1x1: P2P CLI & SAP connection on 5G SBS + * using 1x1 + * @CDS_SAP_SAP_SCC_24_1x1: SAP & SAP connection on + * SCC using 1x1@2.4 Ghz + * @CDS_SAP_SAP_SCC_24_2x2: SAP & SAP connection on + * SCC using 2x2@2.4 Ghz + * @CDS_SAP_SAP_MCC_24_1x1: SAP & SAP connection on + * MCC using 1x1@2.4 Ghz + * @CDS_SAP_SAP_MCC_24_2x2: SAP & SAP connection on + * MCC using 2x2@2.4 Ghz + * @CDS_SAP_SAP_SCC_5_1x1: SAP & SAP connection on + * SCC using 1x1@5 Ghz + * @CDS_SAP_SAP_SCC_5_2x2: SAP & SAP connection on + * SCC using 2x2@5 Ghz + * @CDS_SAP_SAP_MCC_5_1x1: SAP & SAP connection on + * MCC using 1x1@5 Ghz + * @CDS_SAP_SAP_MCC_5_2x2: SAP & SAP connection on + * MCC using 2x2@5 Ghz + * @CDS_SAP_SAP_DBS_1x1: SAP & SAP connection on DBS using + * 1x1 + * @CDS_SAP_SAP_DBS_2x2: SAP & SAP connection on DBS using 2x2 + * @CDS_SAP_SAP_SBS_5_1x1: SAP & SAP connection on 5G SBS using 1x1 - * @CDS_MAX_TWO_CONNECTION_MODE: Max place holder - * - * These are generic IDs that identify the various roles * in the software system */ enum cds_two_connection_mode { @@ -478,6 +532,8 @@ enum cds_two_connection_mode { CDS_STA_SAP_MCC_24_5_1x1, CDS_STA_SAP_MCC_24_5_2x2, CDS_STA_SAP_DBS_1x1, + CDS_STA_SAP_DBS_2x2, + CDS_STA_SAP_SBS_5_1x1, CDS_STA_P2P_GO_SCC_24_1x1, CDS_STA_P2P_GO_SCC_24_2x2, CDS_STA_P2P_GO_MCC_24_1x1, @@ -489,6 +545,8 @@ enum cds_two_connection_mode { CDS_STA_P2P_GO_MCC_24_5_1x1, CDS_STA_P2P_GO_MCC_24_5_2x2, CDS_STA_P2P_GO_DBS_1x1, + CDS_STA_P2P_GO_DBS_2x2, + CDS_STA_P2P_GO_SBS_5_1x1, CDS_STA_P2P_CLI_SCC_24_1x1, CDS_STA_P2P_CLI_SCC_24_2x2, CDS_STA_P2P_CLI_MCC_24_1x1, @@ -500,6 +558,8 @@ enum cds_two_connection_mode { CDS_STA_P2P_CLI_MCC_24_5_1x1, CDS_STA_P2P_CLI_MCC_24_5_2x2, CDS_STA_P2P_CLI_DBS_1x1, + CDS_STA_P2P_CLI_DBS_2x2, + CDS_STA_P2P_CLI_SBS_5_1x1, CDS_P2P_GO_P2P_CLI_SCC_24_1x1, CDS_P2P_GO_P2P_CLI_SCC_24_2x2, CDS_P2P_GO_P2P_CLI_MCC_24_1x1, @@ -511,6 +571,8 @@ enum cds_two_connection_mode { CDS_P2P_GO_P2P_CLI_MCC_24_5_1x1, CDS_P2P_GO_P2P_CLI_MCC_24_5_2x2, CDS_P2P_GO_P2P_CLI_DBS_1x1, + CDS_P2P_GO_P2P_CLI_DBS_2x2, + CDS_P2P_GO_P2P_CLI_SBS_5_1x1, CDS_P2P_GO_SAP_SCC_24_1x1, CDS_P2P_GO_SAP_SCC_24_2x2, CDS_P2P_GO_SAP_MCC_24_1x1, @@ -522,6 +584,8 @@ 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_GO_SAP_DBS_2x2, + CDS_P2P_GO_SAP_SBS_5_1x1, CDS_P2P_CLI_SAP_SCC_24_1x1, CDS_P2P_CLI_SAP_SCC_24_2x2, CDS_P2P_CLI_SAP_MCC_24_1x1, @@ -533,6 +597,21 @@ enum cds_two_connection_mode { CDS_P2P_CLI_SAP_MCC_24_5_1x1, CDS_P2P_CLI_SAP_MCC_24_5_2x2, CDS_P2P_CLI_SAP_DBS_1x1, + CDS_P2P_CLI_SAP_DBS_2x2, + CDS_P2P_CLI_SAP_SBS_5_1x1, + CDS_SAP_SAP_SCC_24_1x1, + CDS_SAP_SAP_SCC_24_2x2, + CDS_SAP_SAP_MCC_24_1x1, + CDS_SAP_SAP_MCC_24_2x2, + CDS_SAP_SAP_SCC_5_1x1, + CDS_SAP_SAP_SCC_5_2x2, + CDS_SAP_SAP_MCC_5_1x1, + CDS_SAP_SAP_MCC_5_2x2, + CDS_SAP_SAP_MCC_24_5_1x1, + CDS_SAP_SAP_MCC_24_5_2x2, + CDS_SAP_SAP_DBS_1x1, + CDS_SAP_SAP_DBS_2x2, + CDS_SAP_SAP_SBS_5_1x1, CDS_MAX_TWO_CONNECTION_MODE }; @@ -544,8 +623,11 @@ enum cds_two_connection_mode { * @CDS_NOP: No action * @CDS_DBS: switch to DBS mode * @CDS_DBS_DOWNGRADE: switch to DBS mode & downgrade to 1x1 + * @CDS_DBS_UPGRADE: switch to DBS mode & upgrade to 2x2 * @CDS_SINGLE_MAC: switch to MCC/SCC mode * @CDS_SINGLE_MAC_UPGRADE: switch to MCC/SCC mode & upgrade to 2x2 + * @CDS_SBS: switch to SBS mode + * @CDS_SBS_DOWNGRADE: switch to SBS mode & downgrade to 1x1 * @CDS_MAX_CONC_PRIORITY_MODE: Max place holder * * These are generic IDs that identify the various roles @@ -555,8 +637,12 @@ enum cds_conc_next_action { CDS_NOP = 0, CDS_DBS, CDS_DBS_DOWNGRADE, + CDS_DBS_UPGRADE, CDS_SINGLE_MAC, CDS_SINGLE_MAC_UPGRADE, + CDS_SBS, + CDS_SBS_DOWNGRADE, + CDS_MAX_CONC_NEXT_ACTION }; @@ -600,6 +686,18 @@ struct cds_conc_connection_info { bool in_use; }; +typedef const enum cds_pcl_type dbs_pcl_second_connection_table_type +[CDS_MAX_ONE_CONNECTION_MODE][CDS_MAX_NUM_OF_MODE][CDS_MAX_CONC_PRIORITY_MODE]; + +typedef const enum cds_pcl_type dbs_pcl_third_connection_table_type +[CDS_MAX_TWO_CONNECTION_MODE][CDS_MAX_NUM_OF_MODE][CDS_MAX_CONC_PRIORITY_MODE]; + +typedef const enum cds_conc_next_action next_action_two_connection_table_type +[CDS_MAX_ONE_CONNECTION_MODE][CDS_MAX_BAND]; + +typedef const enum cds_conc_next_action next_action_three_connection_table_type +[CDS_MAX_TWO_CONNECTION_MODE][CDS_MAX_BAND]; + bool cds_is_connection_in_progress(void); void cds_dump_concurrency_info(void); diff --git a/core/cds/inc/cds_concurrency_1x1_dbs.h b/core/cds/inc/cds_concurrency_1x1_dbs.h new file mode 100644 index 000000000000..93f036876810 --- /dev/null +++ b/core/cds/inc/cds_concurrency_1x1_dbs.h @@ -0,0 +1,1015 @@ +/* + * Copyright (c) 2012-2016 The Linux Foundation. All rights reserved. + * + * Previously licensed under the ISC license by Qualcomm Atheros, Inc. + * + * + * Permission to use, copy, modify, and/or distribute this software for + * any purpose with or without fee is hereby granted, provided that the + * above copyright notice and this permission notice appear in all + * copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL + * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE + * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL + * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR + * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER + * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ + +/* + * This file was originally distributed by Qualcomm Atheros, Inc. + * under proprietary terms before Copyright ownership was assigned + * to the Linux Foundation. + */ + +#ifndef __CDS_CONCURRENCY_1X1_DBS_H +#define __CDS_CONCURRENCY_1X1_DBS_H + +#include "cds_concurrency.h" + +/** + * second_connection_pcl_dbs_1x1_table - table which provides PCL + * for the 2nd connection, when we have a connection already in + * the system (with DBS supported by HW) + */ +dbs_pcl_second_connection_table_type +second_connection_pcl_dbs_1x1_table = { + [CDS_STA_24_1x1] = { + [CDS_STA_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, + [CDS_SAP_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, + [CDS_P2P_CLIENT_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, + [CDS_P2P_GO_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, + [CDS_IBSS_MODE] = {CDS_5G, CDS_5G, CDS_5G } }, + + [CDS_STA_24_2x2] = { + [CDS_STA_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, + [CDS_SAP_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, + [CDS_P2P_CLIENT_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, + [CDS_P2P_GO_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, + [CDS_IBSS_MODE] = {CDS_5G, CDS_5G, CDS_5G } }, + + [CDS_STA_5_1x1] = { + [CDS_STA_MODE] = {CDS_SCC_CH_24G, CDS_24G_SCC_CH, CDS_SCC_CH_24G}, + [CDS_SAP_MODE] = {CDS_SCC_CH_24G, CDS_24G_SCC_CH, CDS_SCC_CH_24G}, + [CDS_P2P_CLIENT_MODE] = { + CDS_SCC_CH_24G, CDS_24G_SCC_CH, CDS_SCC_CH_24G}, + [CDS_P2P_GO_MODE] = {CDS_SCC_CH_24G, CDS_24G_SCC_CH, CDS_SCC_CH_24G}, + [CDS_IBSS_MODE] = {CDS_24G, CDS_24G, CDS_24G } }, + + [CDS_STA_5_2x2] = { + [CDS_STA_MODE] = {CDS_SCC_CH_24G, CDS_24G_SCC_CH, CDS_SCC_CH_24G}, + [CDS_SAP_MODE] = {CDS_SCC_CH_24G, CDS_24G_SCC_CH, CDS_SCC_CH_24G}, + [CDS_P2P_CLIENT_MODE] = { + CDS_SCC_CH_24G, CDS_24G_SCC_CH, CDS_SCC_CH_24G}, + [CDS_P2P_GO_MODE] = {CDS_SCC_CH_24G, CDS_24G_SCC_CH, CDS_SCC_CH_24G}, + [CDS_IBSS_MODE] = {CDS_24G, CDS_24G, CDS_24G } }, + + [CDS_P2P_CLI_24_1x1] = { + [CDS_STA_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, + [CDS_SAP_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, + [CDS_P2P_CLIENT_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, + [CDS_P2P_GO_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_P2P_CLI_24_2x2] = { + [CDS_STA_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, + [CDS_SAP_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, + [CDS_P2P_CLIENT_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, + [CDS_P2P_GO_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_P2P_CLI_5_1x1] = { + [CDS_STA_MODE] = {CDS_SCC_CH_24G, CDS_24G_SCC_CH, CDS_SCC_CH_24G}, + [CDS_SAP_MODE] = {CDS_SCC_CH_24G, CDS_24G_SCC_CH, CDS_SCC_CH_24G}, + [CDS_P2P_CLIENT_MODE] = { + CDS_SCC_CH_24G, CDS_24G_SCC_CH, CDS_SCC_CH_24G}, + [CDS_P2P_GO_MODE] = {CDS_SCC_CH_24G, CDS_24G_SCC_CH, CDS_SCC_CH_24G}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_P2P_CLI_5_2x2] = { + [CDS_STA_MODE] = {CDS_SCC_CH_24G, CDS_24G_SCC_CH, CDS_SCC_CH_24G}, + [CDS_SAP_MODE] = {CDS_SCC_CH_24G, CDS_24G_SCC_CH, CDS_SCC_CH_24G}, + [CDS_P2P_CLIENT_MODE] = { + CDS_SCC_CH_24G, CDS_24G_SCC_CH, CDS_SCC_CH_24G}, + [CDS_P2P_GO_MODE] = {CDS_SCC_CH_24G, CDS_24G_SCC_CH, CDS_SCC_CH_24G}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_P2P_GO_24_1x1] = { + [CDS_STA_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, + [CDS_SAP_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, + [CDS_P2P_CLIENT_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, + [CDS_P2P_GO_MODE] = {CDS_5G, CDS_5G, CDS_5G}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_P2P_GO_24_2x2] = { + [CDS_STA_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, + [CDS_SAP_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, + [CDS_P2P_CLIENT_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, + [CDS_P2P_GO_MODE] = {CDS_5G, CDS_5G, CDS_5G}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_P2P_GO_5_1x1] = { + [CDS_STA_MODE] = {CDS_SCC_CH_24G, CDS_SCC_CH_24G, CDS_SCC_CH_24G}, + [CDS_SAP_MODE] = {CDS_SCC_CH_24G, CDS_SCC_CH_24G, CDS_SCC_CH_24G}, + [CDS_P2P_CLIENT_MODE] = { + CDS_SCC_CH_24G, CDS_24G_SCC_CH, CDS_SCC_CH_24G}, + [CDS_P2P_GO_MODE] = {CDS_24G, CDS_24G, CDS_24G}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_P2P_GO_5_2x2] = { + [CDS_STA_MODE] = {CDS_SCC_CH_24G, CDS_SCC_CH_24G, CDS_SCC_CH_24G}, + [CDS_SAP_MODE] = {CDS_SCC_CH_24G, CDS_SCC_CH_24G, CDS_SCC_CH_24G}, + [CDS_P2P_CLIENT_MODE] = { + CDS_SCC_CH_24G, CDS_24G_SCC_CH, CDS_SCC_CH_24G}, + [CDS_P2P_GO_MODE] = {CDS_24G, CDS_24G, CDS_24G}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_SAP_24_1x1] = { + [CDS_STA_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, + [CDS_SAP_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, + [CDS_P2P_CLIENT_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, + [CDS_P2P_GO_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_SAP_24_2x2] = { + [CDS_STA_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, + [CDS_SAP_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, + [CDS_P2P_CLIENT_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, + [CDS_P2P_GO_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_SAP_5_1x1] = { + [CDS_STA_MODE] = {CDS_SCC_CH_24G, CDS_SCC_CH_24G, CDS_SCC_CH_24G}, + [CDS_SAP_MODE] = {CDS_SCC_CH_24G, CDS_SCC_CH_24G, CDS_SCC_CH_24G}, + [CDS_P2P_CLIENT_MODE] = { + CDS_SCC_CH_24G, CDS_24G_SCC_CH, CDS_SCC_CH_24G}, + [CDS_P2P_GO_MODE] = {CDS_SCC_CH_24G, CDS_SCC_CH_24G, CDS_SCC_CH_24G}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_SAP_5_2x2] = { + [CDS_STA_MODE] = {CDS_SCC_CH_24G, CDS_SCC_CH_24G, CDS_SCC_CH_24G}, + [CDS_SAP_MODE] = {CDS_SCC_CH_24G, CDS_SCC_CH_24G, CDS_SCC_CH_24G}, + [CDS_P2P_CLIENT_MODE] = { + CDS_SCC_CH_24G, CDS_24G_SCC_CH, CDS_SCC_CH_24G}, + [CDS_P2P_GO_MODE] = {CDS_SCC_CH_24G, CDS_SCC_CH_24G, CDS_SCC_CH_24G}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_IBSS_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_IBSS_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_IBSS_5_1x1] = { + [CDS_STA_MODE] = {CDS_24G_SCC_CH, CDS_24G_SCC_CH, CDS_24G_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_IBSS_5_2x2] = { + [CDS_STA_MODE] = {CDS_24G_SCC_CH, CDS_24G_SCC_CH, CDS_24G_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} }, +}; + +/** + * third_connection_pcl_dbs_table - table which provides PCL for + * the 3rd connection, when we have two connections already in + * the system (with DBS supported by HW) + */ +static dbs_pcl_third_connection_table_type +third_connection_pcl_dbs_1x1_table = { + [CDS_STA_SAP_SCC_24_1x1] = { + [CDS_STA_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, + [CDS_SAP_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, + [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_STA_SAP_SCC_24_2x2] = { + [CDS_STA_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, + [CDS_SAP_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, + [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_STA_SAP_MCC_24_1x1] = { + [CDS_STA_MODE] = {CDS_5G_MCC_CH, CDS_5G, CDS_5G_MCC_CH}, + [CDS_SAP_MODE] = {CDS_5G_MCC_CH, CDS_5G, CDS_5G_MCC_CH}, + [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_STA_SAP_MCC_24_2x2] = { + [CDS_STA_MODE] = {CDS_5G_MCC_CH, CDS_5G, CDS_5G_MCC_CH}, + [CDS_SAP_MODE] = {CDS_5G_MCC_CH, CDS_5G, CDS_5G_MCC_CH}, + [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_STA_SAP_SCC_5_1x1] = { + [CDS_STA_MODE] = {CDS_SCC_CH_24G, CDS_24G_SCC_CH, CDS_SCC_CH_24G}, + [CDS_SAP_MODE] = {CDS_SCC_CH_24G, CDS_24G_SCC_CH, CDS_SCC_CH_24G}, + [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_STA_SAP_SCC_5_2x2] = { + [CDS_STA_MODE] = {CDS_SCC_CH_24G, CDS_24G_SCC_CH, CDS_SCC_CH_24G}, + [CDS_SAP_MODE] = {CDS_SCC_CH_24G, CDS_24G_SCC_CH, CDS_SCC_CH_24G}, + [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_STA_SAP_MCC_5_1x1] = { + [CDS_STA_MODE] = {CDS_MCC_CH_24G, CDS_24G, CDS_24G}, + [CDS_SAP_MODE] = {CDS_24G, CDS_24G, CDS_24G}, + [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_STA_SAP_MCC_5_2x2] = { + [CDS_STA_MODE] = {CDS_MCC_CH_24G, CDS_24G, CDS_24G}, + [CDS_SAP_MODE] = {CDS_24G, CDS_24G, CDS_24G}, + [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_STA_SAP_MCC_24_5_1x1] = { + [CDS_STA_MODE] = {CDS_MCC_CH_5G, CDS_5G, CDS_5G}, + [CDS_SAP_MODE] = {CDS_24G, CDS_24G, CDS_24G}, + [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_STA_SAP_MCC_24_5_2x2] = { + [CDS_STA_MODE] = {CDS_MCC_CH_5G, CDS_5G, CDS_5G}, + [CDS_SAP_MODE] = {CDS_24G, CDS_24G, CDS_24G}, + [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_STA_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_SCC_ON_5_SCC_ON_24_5G, CDS_NONE, CDS_SCC_ON_5_SCC_ON_24}, + [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_STA_P2P_GO_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_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, + [CDS_P2P_GO_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_STA_P2P_GO_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_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, + [CDS_P2P_GO_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_STA_P2P_GO_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_5G_MCC_CH, CDS_5G, CDS_5G_MCC_CH}, + [CDS_P2P_GO_MODE] = {CDS_5G_MCC_CH, CDS_5G, CDS_5G_MCC_CH}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_STA_P2P_GO_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_5G_MCC_CH, CDS_5G, CDS_5G_MCC_CH}, + [CDS_P2P_GO_MODE] = {CDS_5G_MCC_CH, CDS_5G, CDS_5G_MCC_CH}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_STA_P2P_GO_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_SCC_CH_24G, CDS_24G_SCC_CH, CDS_SCC_CH_24G}, + [CDS_P2P_GO_MODE] = {CDS_SCC_CH_24G, CDS_24G_SCC_CH, CDS_SCC_CH_24G}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_STA_P2P_GO_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_SCC_CH_24G, CDS_24G_SCC_CH, CDS_SCC_CH_24G}, + [CDS_P2P_GO_MODE] = {CDS_SCC_CH_24G, CDS_24G_SCC_CH, CDS_SCC_CH_24G}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_STA_P2P_GO_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_MCC_CH_24G, CDS_24G, CDS_24G}, + [CDS_P2P_GO_MODE] = {CDS_MCC_CH_24G, CDS_24G, CDS_24G}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_STA_P2P_GO_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_MCC_CH_24G, CDS_24G, CDS_24G}, + [CDS_P2P_GO_MODE] = {CDS_MCC_CH_24G, CDS_24G, CDS_24G}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_STA_P2P_GO_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_MCC_CH_24G, CDS_24G, CDS_24G}, + [CDS_P2P_GO_MODE] = {CDS_MCC_CH_24G, CDS_24G, CDS_24G}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_STA_P2P_GO_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_MCC_CH_24G, CDS_24G, CDS_24G}, + [CDS_P2P_GO_MODE] = {CDS_MCC_CH_24G, CDS_24G, CDS_24G}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_STA_P2P_GO_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_SCC_ON_5_SCC_ON_24_5G, CDS_NONE, CDS_SCC_ON_5_SCC_ON_24}, + [CDS_P2P_GO_MODE] = { + CDS_SCC_ON_5_SCC_ON_24_5G, CDS_NONE, CDS_SCC_ON_5_SCC_ON_24}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_STA_P2P_CLI_SCC_24_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_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, + [CDS_P2P_GO_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_STA_P2P_CLI_SCC_24_2x2] = { + [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_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, + [CDS_P2P_GO_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_STA_P2P_CLI_MCC_24_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_5G_MCC_CH, CDS_5G, CDS_5G_MCC_CH}, + [CDS_P2P_GO_MODE] = {CDS_5G_MCC_CH, CDS_5G, CDS_5G_MCC_CH}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_STA_P2P_CLI_MCC_24_2x2] = { + [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_5G_MCC_CH, CDS_5G, CDS_5G_MCC_CH}, + [CDS_P2P_GO_MODE] = {CDS_5G_MCC_CH, CDS_5G, CDS_5G_MCC_CH}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_STA_P2P_CLI_SCC_5_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_SCC_CH_24G, CDS_24G_SCC_CH, CDS_SCC_CH_24G}, + [CDS_P2P_GO_MODE] = {CDS_SCC_CH_24G, CDS_24G_SCC_CH, CDS_SCC_CH_24G}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_STA_P2P_CLI_SCC_5_2x2] = { + [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_SCC_CH_24G, CDS_24G_SCC_CH, CDS_SCC_CH_24G}, + [CDS_P2P_GO_MODE] = {CDS_SCC_CH_24G, CDS_24G_SCC_CH, CDS_SCC_CH_24G}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_STA_P2P_CLI_MCC_5_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_MCC_CH_24G, CDS_24G, CDS_MCC_CH_24G}, + [CDS_P2P_GO_MODE] = {CDS_MCC_CH_24G, CDS_24G, CDS_MCC_CH_24G}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_STA_P2P_CLI_MCC_5_2x2] = { + [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_MCC_CH_24G, CDS_24G, CDS_MCC_CH_24G}, + [CDS_P2P_GO_MODE] = {CDS_MCC_CH_24G, CDS_24G, CDS_MCC_CH_24G}, + [CDS_IBSS_MODE] = {CDS_NONE, CDS_NONE, CDS_NONE} }, + + [CDS_STA_P2P_CLI_MCC_24_5_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_MCC_CH_24G, CDS_24G, CDS_MCC_CH_24G}, + [CDS_P2P_GO_MODE] = {CDS_MCC_CH_24G, CDS_24G, CDS_MCC_CH_24G}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_STA_P2P_CLI_MCC_24_5_2x2] = { + [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_MCC_CH_24G, CDS_24G, CDS_MCC_CH_24G}, + [CDS_P2P_GO_MODE] = {CDS_MCC_CH_24G, CDS_24G, CDS_MCC_CH_24G}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_STA_P2P_CLI_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_SCC_ON_5_SCC_ON_24_5G, CDS_NONE, CDS_SCC_ON_5_SCC_ON_24}, + [CDS_P2P_GO_MODE] = { + CDS_SCC_ON_5_SCC_ON_24_5G, CDS_NONE, CDS_SCC_ON_5_SCC_ON_24}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_P2P_GO_P2P_CLI_SCC_24_1x1] = { + [CDS_STA_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, + [CDS_SAP_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, + [CDS_P2P_CLIENT_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, + [CDS_P2P_GO_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_P2P_GO_P2P_CLI_SCC_24_2x2] = { + [CDS_STA_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, + [CDS_SAP_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, + [CDS_P2P_CLIENT_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, + [CDS_P2P_GO_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_P2P_GO_P2P_CLI_MCC_24_1x1] = { + [CDS_STA_MODE] = {CDS_5G_MCC_CH, CDS_5G, CDS_5G_MCC_CH}, + [CDS_SAP_MODE] = {CDS_5G_MCC_CH, CDS_5G, CDS_5G_MCC_CH}, + [CDS_P2P_CLIENT_MODE] = {CDS_5G_MCC_CH, CDS_5G, CDS_5G_MCC_CH}, + [CDS_P2P_GO_MODE] = {CDS_5G_MCC_CH, CDS_5G, CDS_5G_MCC_CH}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_P2P_GO_P2P_CLI_MCC_24_2x2] = { + [CDS_STA_MODE] = {CDS_5G_MCC_CH, CDS_5G, CDS_5G_MCC_CH}, + [CDS_SAP_MODE] = {CDS_5G_MCC_CH, CDS_5G, CDS_5G_MCC_CH}, + [CDS_P2P_CLIENT_MODE] = {CDS_5G_MCC_CH, CDS_5G, CDS_5G_MCC_CH}, + [CDS_P2P_GO_MODE] = {CDS_5G_MCC_CH, CDS_5G, CDS_5G_MCC_CH}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_P2P_GO_P2P_CLI_SCC_5_1x1] = { + [CDS_STA_MODE] = {CDS_SCC_CH_24G, CDS_24G_SCC_CH, CDS_SCC_CH_24G}, + [CDS_SAP_MODE] = {CDS_SCC_CH_24G, CDS_24G_SCC_CH, CDS_SCC_CH_24G}, + [CDS_P2P_CLIENT_MODE] = { + CDS_SCC_CH_24G, CDS_24G_SCC_CH, CDS_SCC_CH_24G}, + [CDS_P2P_GO_MODE] = {CDS_SCC_CH_24G, CDS_24G_SCC_CH, CDS_SCC_CH_24G}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_P2P_GO_P2P_CLI_SCC_5_2x2] = { + [CDS_STA_MODE] = {CDS_SCC_CH_24G, CDS_24G_SCC_CH, CDS_SCC_CH_24G}, + [CDS_SAP_MODE] = {CDS_SCC_CH_24G, CDS_24G_SCC_CH, CDS_SCC_CH_24G}, + [CDS_P2P_CLIENT_MODE] = { + CDS_SCC_CH_24G, CDS_24G_SCC_CH, CDS_SCC_CH_24G}, + [CDS_P2P_GO_MODE] = {CDS_SCC_CH_24G, CDS_24G_SCC_CH, CDS_SCC_CH_24G}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_P2P_GO_P2P_CLI_MCC_5_1x1] = { + [CDS_STA_MODE] = {CDS_MCC_CH_24G, CDS_24G, CDS_24G}, + [CDS_SAP_MODE] = {CDS_24G, CDS_24G, CDS_24G}, + [CDS_P2P_CLIENT_MODE] = {CDS_MCC_CH_24G, CDS_24G, CDS_24G}, + [CDS_P2P_GO_MODE] = {CDS_MCC_CH_24G, CDS_24G, CDS_24G}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_P2P_GO_P2P_CLI_MCC_5_2x2] = { + [CDS_STA_MODE] = {CDS_MCC_CH_24G, CDS_24G, CDS_24G}, + [CDS_SAP_MODE] = {CDS_24G, CDS_24G, CDS_24G}, + [CDS_P2P_CLIENT_MODE] = {CDS_MCC_CH_24G, CDS_24G, CDS_24G}, + [CDS_P2P_GO_MODE] = {CDS_MCC_CH_24G, CDS_24G, CDS_24G}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_P2P_GO_P2P_CLI_MCC_24_5_1x1] = { + [CDS_STA_MODE] = {CDS_MCC_CH_5G, CDS_5G, CDS_5G}, + [CDS_SAP_MODE] = {CDS_24G, CDS_24G, CDS_24G}, + [CDS_P2P_CLIENT_MODE] = {CDS_MCC_CH_24G, CDS_24G, CDS_24G}, + [CDS_P2P_GO_MODE] = {CDS_MCC_CH_24G, CDS_24G, CDS_24G}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_P2P_GO_P2P_CLI_MCC_24_5_2x2] = { + [CDS_STA_MODE] = {CDS_MCC_CH_5G, CDS_5G, CDS_5G}, + [CDS_SAP_MODE] = {CDS_24G, CDS_24G, CDS_24G}, + [CDS_P2P_CLIENT_MODE] = {CDS_MCC_CH_24G, CDS_24G, CDS_24G}, + [CDS_P2P_GO_MODE] = {CDS_MCC_CH_24G, CDS_24G, CDS_24G}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_P2P_GO_P2P_CLI_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_SCC_ON_5_SCC_ON_24_5G, CDS_NONE, CDS_SCC_ON_5_SCC_ON_24}, + [CDS_P2P_CLIENT_MODE] = { + CDS_SCC_ON_5_SCC_ON_24_5G, CDS_NONE, CDS_SCC_ON_5_SCC_ON_24}, + [CDS_P2P_GO_MODE] = { + CDS_SCC_ON_5_SCC_ON_24_5G, CDS_NONE, CDS_SCC_ON_5_SCC_ON_24}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_P2P_GO_SAP_SCC_24_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} }, + + [CDS_P2P_GO_SAP_SCC_24_2x2] = { + [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} }, + + [CDS_P2P_GO_SAP_MCC_24_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} }, + + [CDS_P2P_GO_SAP_MCC_24_2x2] = { + [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} }, + + [CDS_P2P_GO_SAP_SCC_5_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} }, + + [CDS_P2P_GO_SAP_SCC_5_2x2] = { + [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} }, + + [CDS_P2P_GO_SAP_MCC_5_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} }, + + [CDS_P2P_GO_SAP_MCC_5_2x2] = { + [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} }, + + [CDS_P2P_GO_SAP_MCC_24_5_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} }, + + [CDS_P2P_GO_SAP_MCC_24_5_2x2] = { + [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} }, + + [CDS_P2P_GO_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} }, + + [CDS_P2P_CLI_SAP_SCC_24_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} }, + + [CDS_P2P_CLI_SAP_SCC_24_2x2] = { + [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} }, + + [CDS_P2P_CLI_SAP_MCC_24_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} }, + + [CDS_P2P_CLI_SAP_MCC_24_2x2] = { + [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} }, + + [CDS_P2P_CLI_SAP_SCC_5_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} }, + + [CDS_P2P_CLI_SAP_SCC_5_2x2] = { + [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} }, + + [CDS_P2P_CLI_SAP_MCC_5_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} }, + + [CDS_P2P_CLI_SAP_MCC_5_2x2] = { + [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} }, + + [CDS_P2P_CLI_SAP_MCC_24_5_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} }, + + [CDS_P2P_CLI_SAP_MCC_24_5_2x2] = { + [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} }, + + [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} }, + +}; + +/** + * next_action_two_connection_table - table which provides next + * action while a new connection is coming up, with one + * connection already in the system + */ +static next_action_two_connection_table_type + next_action_two_connection_dbs_1x1_table = { + [CDS_STA_24_1x1] = {CDS_NOP, CDS_DBS}, + [CDS_STA_24_2x2] = {CDS_NOP, CDS_DBS_DOWNGRADE}, + [CDS_STA_5_1x1] = {CDS_DBS, CDS_NOP}, + [CDS_STA_5_2x2] = {CDS_DBS_DOWNGRADE, CDS_NOP}, + [CDS_P2P_CLI_24_1x1] = {CDS_NOP, CDS_DBS}, + [CDS_P2P_CLI_24_2x2] = {CDS_NOP, CDS_DBS_DOWNGRADE}, + [CDS_P2P_CLI_5_1x1] = {CDS_DBS, CDS_NOP}, + [CDS_P2P_CLI_5_2x2] = {CDS_DBS_DOWNGRADE, CDS_NOP}, + [CDS_P2P_GO_24_1x1] = {CDS_NOP, CDS_DBS}, + [CDS_P2P_GO_24_2x2] = {CDS_NOP, CDS_DBS_DOWNGRADE}, + [CDS_P2P_GO_5_1x1] = {CDS_DBS, CDS_NOP}, + [CDS_P2P_GO_5_2x2] = {CDS_DBS_DOWNGRADE, CDS_NOP}, + [CDS_SAP_24_1x1] = {CDS_NOP, CDS_DBS}, + [CDS_SAP_24_2x2] = {CDS_NOP, CDS_DBS_DOWNGRADE}, + [CDS_SAP_5_1x1] = {CDS_DBS, CDS_NOP}, + [CDS_SAP_5_2x2] = {CDS_DBS_DOWNGRADE, CDS_NOP}, + [CDS_IBSS_24_1x1] = {CDS_NOP, CDS_DBS}, + [CDS_IBSS_24_2x2] = {CDS_NOP, CDS_DBS_DOWNGRADE}, + [CDS_IBSS_5_1x1] = {CDS_DBS, CDS_NOP}, + [CDS_IBSS_5_2x2] = {CDS_DBS_DOWNGRADE, CDS_NOP}, +}; + +/** + * next_action_three_connection_table - table which provides next + * action while a new connection is coming up, with two + * connections already in the system + */ +static next_action_three_connection_table_type + next_action_three_connection_dbs_1x1_table = { + [CDS_STA_SAP_SCC_24_1x1] = {CDS_NOP, CDS_DBS}, + [CDS_STA_SAP_SCC_24_2x2] = {CDS_NOP, CDS_DBS_DOWNGRADE}, + [CDS_STA_SAP_MCC_24_1x1] = {CDS_NOP, CDS_DBS}, + [CDS_STA_SAP_MCC_24_2x2] = {CDS_NOP, CDS_DBS_DOWNGRADE}, + [CDS_STA_SAP_SCC_5_1x1] = {CDS_DBS, CDS_NOP}, + [CDS_STA_SAP_SCC_5_2x2] = {CDS_DBS_DOWNGRADE, CDS_NOP}, + [CDS_STA_SAP_MCC_5_1x1] = {CDS_DBS, CDS_NOP}, + [CDS_STA_SAP_MCC_5_2x2] = {CDS_DBS_DOWNGRADE, CDS_NOP}, + [CDS_STA_SAP_MCC_24_5_1x1] = {CDS_DBS, CDS_DBS}, + [CDS_STA_SAP_MCC_24_5_2x2] = {CDS_DBS_DOWNGRADE, CDS_DBS_DOWNGRADE}, + [CDS_STA_SAP_DBS_1x1] = {CDS_NOP, CDS_NOP}, + [CDS_STA_P2P_GO_SCC_24_1x1] = {CDS_NOP, CDS_DBS}, + [CDS_STA_P2P_GO_SCC_24_2x2] = {CDS_NOP, CDS_DBS_DOWNGRADE}, + [CDS_STA_P2P_GO_MCC_24_1x1] = {CDS_NOP, CDS_DBS}, + [CDS_STA_P2P_GO_MCC_24_2x2] = {CDS_NOP, CDS_DBS_DOWNGRADE}, + [CDS_STA_P2P_GO_SCC_5_1x1] = {CDS_DBS, CDS_NOP}, + [CDS_STA_P2P_GO_SCC_5_2x2] = {CDS_DBS_DOWNGRADE, CDS_NOP}, + [CDS_STA_P2P_GO_MCC_5_1x1] = {CDS_DBS, CDS_NOP}, + [CDS_STA_P2P_GO_MCC_5_2x2] = {CDS_DBS_DOWNGRADE, CDS_NOP}, + [CDS_STA_P2P_GO_MCC_24_5_1x1] = {CDS_DBS, CDS_DBS}, + [CDS_STA_P2P_GO_MCC_24_5_2x2] = { + CDS_DBS_DOWNGRADE, CDS_DBS_DOWNGRADE}, + [CDS_STA_P2P_GO_DBS_1x1] = {CDS_NOP, CDS_NOP}, + [CDS_STA_P2P_CLI_SCC_24_1x1] = {CDS_NOP, CDS_DBS}, + [CDS_STA_P2P_CLI_SCC_24_2x2] = { + CDS_NOP, CDS_DBS_DOWNGRADE}, + [CDS_STA_P2P_CLI_MCC_24_1x1] = {CDS_NOP, CDS_DBS}, + [CDS_STA_P2P_CLI_MCC_24_2x2] = { + CDS_NOP, CDS_DBS_DOWNGRADE}, + [CDS_STA_P2P_CLI_SCC_5_1x1] = {CDS_DBS, CDS_NOP}, + [CDS_STA_P2P_CLI_SCC_5_2x2] = {CDS_DBS_DOWNGRADE, CDS_NOP}, + [CDS_STA_P2P_CLI_MCC_5_1x1] = {CDS_DBS, CDS_NOP}, + [CDS_STA_P2P_CLI_MCC_5_2x2] = {CDS_DBS_DOWNGRADE, CDS_NOP}, + [CDS_STA_P2P_CLI_MCC_24_5_1x1] = {CDS_DBS, CDS_DBS}, + [CDS_STA_P2P_CLI_MCC_24_5_2x2] = { + CDS_DBS_DOWNGRADE, CDS_DBS_DOWNGRADE}, + [CDS_STA_P2P_CLI_DBS_1x1] = {CDS_NOP, CDS_NOP}, + [CDS_P2P_GO_P2P_CLI_SCC_24_1x1] = {CDS_NOP, CDS_DBS}, + [CDS_P2P_GO_P2P_CLI_SCC_24_2x2] = { + CDS_NOP, CDS_DBS_DOWNGRADE}, + [CDS_P2P_GO_P2P_CLI_MCC_24_1x1] = {CDS_NOP, CDS_DBS}, + [CDS_P2P_GO_P2P_CLI_MCC_24_2x2] = { + CDS_NOP, CDS_DBS_DOWNGRADE}, + [CDS_P2P_GO_P2P_CLI_SCC_5_1x1] = {CDS_DBS, CDS_NOP}, + [CDS_P2P_GO_P2P_CLI_SCC_5_2x2] = {CDS_DBS_DOWNGRADE, CDS_NOP}, + [CDS_P2P_GO_P2P_CLI_MCC_5_1x1] = {CDS_DBS, CDS_NOP}, + [CDS_P2P_GO_P2P_CLI_MCC_5_2x2] = {CDS_DBS_DOWNGRADE, CDS_NOP}, + [CDS_P2P_GO_P2P_CLI_MCC_24_5_1x1] = {CDS_DBS, CDS_DBS}, + [CDS_P2P_GO_P2P_CLI_MCC_24_5_2x2] = { + CDS_DBS_DOWNGRADE, CDS_DBS_DOWNGRADE}, + [CDS_P2P_GO_P2P_CLI_DBS_1x1] = {CDS_NOP, CDS_NOP}, + [CDS_P2P_GO_SAP_SCC_24_1x1] = {CDS_NOP, CDS_DBS}, + [CDS_P2P_GO_SAP_SCC_24_2x2] = {CDS_NOP, CDS_DBS_DOWNGRADE}, + [CDS_P2P_GO_SAP_MCC_24_1x1] = {CDS_NOP, CDS_DBS}, + [CDS_P2P_GO_SAP_MCC_24_2x2] = {CDS_NOP, CDS_DBS_DOWNGRADE}, + [CDS_P2P_GO_SAP_SCC_5_1x1] = {CDS_DBS, CDS_NOP}, + [CDS_P2P_GO_SAP_SCC_5_2x2] = {CDS_DBS_DOWNGRADE, CDS_NOP}, + [CDS_P2P_GO_SAP_MCC_5_1x1] = {CDS_DBS, CDS_NOP}, + [CDS_P2P_GO_SAP_MCC_5_2x2] = {CDS_DBS_DOWNGRADE, CDS_NOP}, + [CDS_P2P_GO_SAP_MCC_24_5_1x1] = {CDS_DBS, CDS_DBS}, + [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}, + +}; + +#endif diff --git a/core/cds/inc/cds_concurrency_2x2_dbs.h b/core/cds/inc/cds_concurrency_2x2_dbs.h new file mode 100644 index 000000000000..2e996320f4c5 --- /dev/null +++ b/core/cds/inc/cds_concurrency_2x2_dbs.h @@ -0,0 +1,1207 @@ +/* + * Copyright (c) 2012-2016 The Linux Foundation. All rights reserved. + * + * Previously licensed under the ISC license by Qualcomm Atheros, Inc. + * + * + * Permission to use, copy, modify, and/or distribute this software for + * any purpose with or without fee is hereby granted, provided that the + * above copyright notice and this permission notice appear in all + * copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL + * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE + * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL + * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR + * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER + * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ + +/* + * This file was originally distributed by Qualcomm Atheros, Inc. + * under proprietary terms before Copyright ownership was assigned + * to the Linux Foundation. + */ + +#ifndef __CDS_CONCURRENCY_2X2_DBS_H +#define __CDS_CONCURRENCY_2X2_DBS_H + +#include "cds_concurrency.h" + +/** + * second_connection_pcl_dbs_2x2_table - table which provides PCL + * for the 2nd connection, when we have a connection already in + * the system (with DBS supported by HW) + * This table consolidates selection for P2PCLI, P2PGO, STA, SAP + * into the single set of STA entries for 2.4G and 5G. + */ +static dbs_pcl_second_connection_table_type +second_connection_pcl_dbs_2x2_table = { + [CDS_STA_24_1x1] = { + [CDS_STA_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, + [CDS_SAP_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, + [CDS_P2P_CLIENT_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, + [CDS_P2P_GO_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, + [CDS_IBSS_MODE] = {CDS_5G, CDS_5G, CDS_5G} }, + + [CDS_STA_24_2x2] = { + [CDS_STA_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, + [CDS_SAP_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, + [CDS_P2P_CLIENT_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, + [CDS_P2P_GO_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, + [CDS_IBSS_MODE] = {CDS_5G, CDS_5G, CDS_5G} }, + + [CDS_STA_5_1x1] = { + [CDS_STA_MODE] = {CDS_24G_SCC_CH_SBS_CH, + CDS_24G_SCC_CH_SBS_CH, CDS_24G_SCC_CH_SBS_CH}, + [CDS_SAP_MODE] = {CDS_24G_SCC_CH_SBS_CH, + CDS_24G_SCC_CH_SBS_CH, CDS_24G_SCC_CH_SBS_CH}, + [CDS_P2P_CLIENT_MODE] = { CDS_24G_SCC_CH_SBS_CH, + CDS_24G_SCC_CH_SBS_CH, CDS_24G_SCC_CH_SBS_CH}, + [CDS_P2P_GO_MODE] = {CDS_24G_SCC_CH_SBS_CH, + CDS_24G_SCC_CH_SBS_CH, CDS_24G_SCC_CH_SBS_CH}, + [CDS_IBSS_MODE] = {CDS_24G, CDS_24G, CDS_24G} }, + + [CDS_STA_5_2x2] = { + [CDS_STA_MODE] = {CDS_24G_SCC_CH_SBS_CH, + CDS_24G_SCC_CH_SBS_CH, CDS_24G_SCC_CH_SBS_CH}, + [CDS_SAP_MODE] = {CDS_24G_SCC_CH_SBS_CH, + CDS_24G_SCC_CH_SBS_CH, CDS_24G_SCC_CH_SBS_CH}, + [CDS_P2P_CLIENT_MODE] = { CDS_24G_SCC_CH_SBS_CH, + CDS_24G_SCC_CH_SBS_CH, CDS_24G_SCC_CH_SBS_CH}, + [CDS_P2P_GO_MODE] = {CDS_24G_SCC_CH_SBS_CH, + CDS_24G_SCC_CH_SBS_CH, CDS_24G_SCC_CH_SBS_CH}, + [CDS_IBSS_MODE] = {CDS_24G, CDS_24G, CDS_24G} }, + + [CDS_P2P_CLI_24_1x1] = { + [CDS_STA_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, + [CDS_SAP_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, + [CDS_P2P_CLIENT_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, + [CDS_P2P_GO_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, + [CDS_IBSS_MODE] = {CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, + CDS_MAX_PCL_TYPE} }, + + [CDS_P2P_CLI_24_2x2] = { + [CDS_STA_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, + [CDS_SAP_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, + [CDS_P2P_CLIENT_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, + [CDS_P2P_GO_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, + [CDS_IBSS_MODE] = {CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, + CDS_MAX_PCL_TYPE} }, + + [CDS_P2P_CLI_5_1x1] = { + [CDS_STA_MODE] = {CDS_24G_SCC_CH_SBS_CH, + CDS_24G_SCC_CH_SBS_CH, CDS_24G_SCC_CH_SBS_CH}, + [CDS_SAP_MODE] = {CDS_24G_SCC_CH_SBS_CH, + CDS_24G_SCC_CH_SBS_CH, CDS_24G_SCC_CH_SBS_CH}, + [CDS_P2P_CLIENT_MODE] = { CDS_24G_SCC_CH_SBS_CH, + CDS_24G_SCC_CH_SBS_CH, CDS_24G_SCC_CH_SBS_CH}, + [CDS_P2P_GO_MODE] = {CDS_24G_SCC_CH_SBS_CH, CDS_24G_SCC_CH_SBS_CH, + CDS_24G_SCC_CH_SBS_CH}, + [CDS_IBSS_MODE] = {CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, + CDS_MAX_PCL_TYPE} }, + + [CDS_P2P_CLI_5_2x2] = { + [CDS_STA_MODE] = {CDS_24G_SCC_CH_SBS_CH, + CDS_24G_SCC_CH_SBS_CH, CDS_24G_SCC_CH_SBS_CH}, + [CDS_SAP_MODE] = {CDS_24G_SCC_CH_SBS_CH, + CDS_24G_SCC_CH_SBS_CH, CDS_24G_SCC_CH_SBS_CH}, + [CDS_P2P_CLIENT_MODE] = { CDS_24G_SCC_CH_SBS_CH, + CDS_24G_SCC_CH_SBS_CH, CDS_24G_SCC_CH_SBS_CH}, + [CDS_P2P_GO_MODE] = {CDS_24G_SCC_CH_SBS_CH, CDS_24G_SCC_CH_SBS_CH, + CDS_24G_SCC_CH_SBS_CH}, + [CDS_IBSS_MODE] = {CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, + CDS_MAX_PCL_TYPE} }, + + [CDS_P2P_GO_24_1x1] = { + [CDS_STA_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, + [CDS_SAP_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, + [CDS_P2P_CLIENT_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, + [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_GO_24_2x2] = { + [CDS_STA_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, + [CDS_SAP_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, + [CDS_P2P_CLIENT_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, + [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_GO_5_1x1] = { + [CDS_STA_MODE] = {CDS_24G_SCC_CH_SBS_CH, + CDS_24G_SCC_CH_SBS_CH, CDS_24G_SCC_CH_SBS_CH}, + [CDS_SAP_MODE] = {CDS_24G_SCC_CH_SBS_CH, + CDS_24G_SCC_CH_SBS_CH, CDS_24G_SCC_CH_SBS_CH}, + [CDS_P2P_CLIENT_MODE] = { CDS_24G_SCC_CH_SBS_CH, + CDS_24G_SCC_CH_SBS_CH, CDS_24G_SCC_CH_SBS_CH}, + [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_GO_5_2x2] = { + [CDS_STA_MODE] = {CDS_24G_SCC_CH_SBS_CH, + CDS_24G_SCC_CH_SBS_CH, CDS_24G_SCC_CH_SBS_CH}, + [CDS_SAP_MODE] = {CDS_24G_SCC_CH_SBS_CH, + CDS_24G_SCC_CH_SBS_CH, CDS_24G_SCC_CH_SBS_CH}, + [CDS_P2P_CLIENT_MODE] = { CDS_24G_SCC_CH_SBS_CH, + CDS_24G_SCC_CH_SBS_CH, CDS_24G_SCC_CH_SBS_CH}, + [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_SAP_24_1x1] = { + [CDS_STA_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, + [CDS_SAP_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, + [CDS_P2P_CLIENT_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, + [CDS_P2P_GO_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, + [CDS_IBSS_MODE] = {CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, + CDS_MAX_PCL_TYPE} }, + + [CDS_SAP_24_2x2] = { + [CDS_STA_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, + [CDS_SAP_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, + [CDS_P2P_CLIENT_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, + [CDS_P2P_GO_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, + [CDS_IBSS_MODE] = {CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, + CDS_MAX_PCL_TYPE} }, + + [CDS_SAP_5_1x1] = { + [CDS_STA_MODE] = {CDS_24G_SCC_CH_SBS_CH, + CDS_24G_SCC_CH_SBS_CH, CDS_24G_SCC_CH_SBS_CH}, + [CDS_SAP_MODE] = {CDS_24G_SCC_CH_SBS_CH, + CDS_24G_SCC_CH_SBS_CH, CDS_24G_SCC_CH_SBS_CH}, + [CDS_P2P_CLIENT_MODE] = { CDS_24G_SCC_CH_SBS_CH, + CDS_24G_SCC_CH_SBS_CH, CDS_24G_SCC_CH_SBS_CH}, + [CDS_P2P_GO_MODE] = {CDS_24G_SCC_CH_SBS_CH, CDS_24G_SCC_CH_SBS_CH, + CDS_24G_SCC_CH_SBS_CH}, + [CDS_IBSS_MODE] = {CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, + CDS_MAX_PCL_TYPE} }, + + [CDS_SAP_5_2x2] = { + [CDS_STA_MODE] = {CDS_24G_SCC_CH_SBS_CH, + CDS_24G_SCC_CH_SBS_CH, CDS_24G_SCC_CH_SBS_CH}, + [CDS_SAP_MODE] = {CDS_24G_SCC_CH_SBS_CH, + CDS_24G_SCC_CH_SBS_CH, CDS_24G_SCC_CH_SBS_CH}, + [CDS_P2P_CLIENT_MODE] = { CDS_24G_SCC_CH_SBS_CH, + CDS_24G_SCC_CH_SBS_CH, CDS_24G_SCC_CH_SBS_CH}, + [CDS_P2P_GO_MODE] = {CDS_24G_SCC_CH_SBS_CH, CDS_24G_SCC_CH_SBS_CH, + CDS_24G_SCC_CH_SBS_CH}, + [CDS_IBSS_MODE] = {CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, + CDS_MAX_PCL_TYPE} }, + + + [CDS_IBSS_24_1x1] = { + [CDS_STA_MODE] = {CDS_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_IBSS_24_2x2] = { + [CDS_STA_MODE] = {CDS_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_IBSS_5_1x1] = { + [CDS_STA_MODE] = {CDS_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_IBSS_5_2x2] = { + [CDS_STA_MODE] = {CDS_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} }, + +}; + +/** + * third_connection_pcl_dbs_table - table which provides PCL for + * the 3rd connection, when we have two connections already in + * the system (with DBS supported by HW) + */ +static dbs_pcl_third_connection_table_type +third_connection_pcl_dbs_2x2_table = { + [CDS_STA_SAP_SCC_24_1x1] = { + [CDS_STA_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, + [CDS_SAP_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, + [CDS_P2P_CLIENT_MODE] = { + CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, + [CDS_P2P_GO_MODE] = { + CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_STA_SAP_SCC_24_2x2] = { + [CDS_STA_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, + [CDS_SAP_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, + [CDS_P2P_CLIENT_MODE] = { + CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, + [CDS_P2P_GO_MODE] = { + CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_STA_SAP_MCC_24_1x1] = { + [CDS_STA_MODE] = {CDS_5G, CDS_5G, CDS_5G}, + [CDS_SAP_MODE] = {CDS_5G, CDS_5G, CDS_5G}, + [CDS_P2P_CLIENT_MODE] = {CDS_5G, CDS_5G, CDS_5G}, + [CDS_P2P_GO_MODE] = {CDS_5G, CDS_5G, CDS_5G}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_STA_SAP_MCC_24_2x2] = { + [CDS_STA_MODE] = {CDS_5G, CDS_5G, CDS_5G}, + [CDS_SAP_MODE] = {CDS_5G, CDS_5G, CDS_5G}, + [CDS_P2P_CLIENT_MODE] = {CDS_5G, CDS_5G, CDS_5G}, + [CDS_P2P_GO_MODE] = {CDS_5G, CDS_5G, CDS_5G}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_STA_SAP_SCC_5_1x1] = { + [CDS_STA_MODE] = {CDS_24G_SCC_CH_SBS_CH_5G, CDS_24G_SCC_CH, + CDS_24G_SCC_CH_SBS_CH}, + [CDS_SAP_MODE] = {CDS_24G_SCC_CH_SBS_CH_5G, CDS_24G_SCC_CH, + CDS_24G_SCC_CH_SBS_CH}, + [CDS_P2P_CLIENT_MODE] = {CDS_24G_SCC_CH_SBS_CH_5G, CDS_24G_SCC_CH, + CDS_24G_SCC_CH_SBS_CH}, + [CDS_P2P_GO_MODE] = {CDS_24G_SCC_CH_SBS_CH_5G, CDS_24G_SCC_CH, + CDS_24G_SCC_CH_SBS_CH}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_STA_SAP_SCC_5_2x2] = { + [CDS_STA_MODE] = {CDS_24G_SCC_CH_SBS_CH_5G, CDS_24G_SCC_CH, + CDS_24G_SCC_CH_SBS_CH}, + [CDS_SAP_MODE] = {CDS_24G_SCC_CH_SBS_CH_5G, CDS_24G_SCC_CH, + CDS_24G_SCC_CH_SBS_CH}, + [CDS_P2P_CLIENT_MODE] = {CDS_24G_SCC_CH_SBS_CH_5G, CDS_24G_SCC_CH, + CDS_24G_SCC_CH_SBS_CH}, + [CDS_P2P_GO_MODE] = {CDS_24G_SCC_CH_SBS_CH_5G, CDS_24G_SCC_CH, + CDS_24G_SCC_CH_SBS_CH}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_STA_SAP_MCC_5_1x1] = { + [CDS_STA_MODE] = {CDS_24G_SBS_CH_MCC_CH, CDS_24G, CDS_24G_MCC_CH}, + [CDS_SAP_MODE] = {CDS_24G_SBS_CH_MCC_CH, CDS_24G, CDS_24G_MCC_CH}, + [CDS_P2P_CLIENT_MODE] = {CDS_24G_SBS_CH_MCC_CH, CDS_24G, + CDS_24G_MCC_CH}, + [CDS_P2P_GO_MODE] = {CDS_24G_MCC_CH, CDS_24G_MCC_CH, CDS_24G_MCC_CH}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_STA_SAP_MCC_5_2x2] = { + [CDS_STA_MODE] = {CDS_24G_SBS_CH_MCC_CH, CDS_24G, CDS_24G_MCC_CH}, + [CDS_SAP_MODE] = {CDS_24G_SBS_CH_MCC_CH, CDS_24G, CDS_24G_MCC_CH}, + [CDS_P2P_CLIENT_MODE] = {CDS_24G_SBS_CH_MCC_CH, CDS_24G, + CDS_24G_MCC_CH}, + [CDS_P2P_GO_MODE] = {CDS_24G_MCC_CH, CDS_24G_MCC_CH, CDS_24G_MCC_CH}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_STA_SAP_MCC_24_5_1x1] = { + [CDS_STA_MODE] = {CDS_5G, CDS_5G, CDS_5G}, + [CDS_SAP_MODE] = {CDS_5G, CDS_5G, CDS_5G}, + [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_STA_SAP_MCC_24_5_2x2] = { + [CDS_STA_MODE] = {CDS_5G, CDS_5G, CDS_5G}, + [CDS_SAP_MODE] = {CDS_5G, CDS_5G, CDS_5G}, + [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_STA_SAP_DBS_1x1] = { + [CDS_STA_MODE] = { CDS_SCC_ON_5_SCC_ON_24_5G, CDS_SCC_ON_5_SCC_ON_24, + CDS_SCC_ON_5_SCC_ON_24}, + [CDS_SAP_MODE] = { CDS_SCC_ON_5_SCC_ON_24_5G, CDS_SCC_ON_5_SCC_ON_24, + CDS_SCC_ON_5_SCC_ON_24}, + [CDS_P2P_CLIENT_MODE] = { CDS_SCC_ON_5_SCC_ON_24_5G, + CDS_SCC_ON_5_SCC_ON_24, CDS_SCC_ON_5_SCC_ON_24}, + [CDS_P2P_GO_MODE] = { CDS_SCC_ON_5_SCC_ON_24_5G, CDS_SCC_ON_5_SCC_ON_24, + CDS_SCC_ON_5_SCC_ON_24}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_STA_SAP_DBS_2x2] = { + [CDS_STA_MODE] = { CDS_SCC_ON_5_SCC_ON_24_5G, CDS_SCC_ON_5_SCC_ON_24, + CDS_SCC_ON_5_SCC_ON_24}, + [CDS_SAP_MODE] = { CDS_SCC_ON_5_SCC_ON_24_5G, CDS_SCC_ON_5_SCC_ON_24, + CDS_SCC_ON_5_SCC_ON_24}, + [CDS_P2P_CLIENT_MODE] = { CDS_SCC_ON_5_SCC_ON_24_5G, + CDS_SCC_ON_5_SCC_ON_24, CDS_SCC_ON_5_SCC_ON_24}, + [CDS_P2P_GO_MODE] = { CDS_SCC_ON_5_SCC_ON_24_5G, CDS_SCC_ON_5_SCC_ON_24, + CDS_SCC_ON_5_SCC_ON_24}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_STA_SAP_SBS_5_1x1] = { + [CDS_STA_MODE] = { + CDS_SBS_CH_5G, CDS_SBS_CH, CDS_SBS_CH}, + [CDS_SAP_MODE] = { + CDS_SBS_CH_5G, CDS_SBS_CH, CDS_SBS_CH}, + [CDS_P2P_CLIENT_MODE] = { + CDS_SBS_CH_5G, CDS_SBS_CH, CDS_SBS_CH}, + [CDS_P2P_GO_MODE] = { + CDS_SBS_CH_5G, CDS_SBS_CH, CDS_SBS_CH}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_SAP_SAP_SCC_24_1x1] = { + [CDS_STA_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, + [CDS_SAP_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, + [CDS_P2P_CLIENT_MODE] = { + CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, + [CDS_P2P_GO_MODE] = { + CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_SAP_SAP_SCC_24_2x2] = { + [CDS_STA_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, + [CDS_SAP_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, + [CDS_P2P_CLIENT_MODE] = { + CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, + [CDS_P2P_GO_MODE] = { + CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_SAP_SAP_MCC_24_1x1] = { + [CDS_STA_MODE] = {CDS_5G, CDS_5G, CDS_5G}, + [CDS_SAP_MODE] = {CDS_5G, CDS_5G, CDS_5G}, + [CDS_P2P_CLIENT_MODE] = {CDS_5G, CDS_5G, CDS_5G}, + [CDS_P2P_GO_MODE] = {CDS_5G, CDS_5G, CDS_5G}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_SAP_SAP_MCC_24_2x2] = { + [CDS_STA_MODE] = {CDS_5G, CDS_5G, CDS_5G}, + [CDS_SAP_MODE] = {CDS_5G, CDS_5G, CDS_5G}, + [CDS_P2P_CLIENT_MODE] = {CDS_5G, CDS_5G, CDS_5G}, + [CDS_P2P_GO_MODE] = {CDS_5G, CDS_5G, CDS_5G}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_SAP_SAP_SCC_5_1x1] = { + [CDS_STA_MODE] = {CDS_24G_SCC_CH_SBS_CH_5G, CDS_24G_SCC_CH, + CDS_24G_SCC_CH_SBS_CH}, + [CDS_SAP_MODE] = {CDS_24G_SCC_CH_SBS_CH_5G, CDS_24G_SCC_CH, + CDS_24G_SCC_CH_SBS_CH}, + [CDS_P2P_CLIENT_MODE] = {CDS_24G_SCC_CH_SBS_CH_5G, CDS_24G_SCC_CH, + CDS_24G_SCC_CH_SBS_CH}, + [CDS_P2P_GO_MODE] = {CDS_24G_SCC_CH_SBS_CH_5G, CDS_24G_SCC_CH, + CDS_24G_SCC_CH_SBS_CH}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_SAP_SAP_SCC_5_2x2] = { + [CDS_STA_MODE] = {CDS_24G_SCC_CH_SBS_CH_5G, CDS_24G_SCC_CH, + CDS_24G_SCC_CH_SBS_CH}, + [CDS_SAP_MODE] = {CDS_24G_SCC_CH_SBS_CH_5G, CDS_24G_SCC_CH, + CDS_24G_SCC_CH_SBS_CH}, + [CDS_P2P_CLIENT_MODE] = {CDS_24G_SCC_CH_SBS_CH_5G, CDS_24G_SCC_CH, + CDS_24G_SCC_CH_SBS_CH}, + [CDS_P2P_GO_MODE] = {CDS_24G_SCC_CH_SBS_CH_5G, CDS_24G_SCC_CH, + CDS_24G_SCC_CH_SBS_CH}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_SAP_SAP_MCC_5_1x1] = { + [CDS_STA_MODE] = {CDS_24G_SBS_CH_MCC_CH, CDS_24G, CDS_24G_MCC_CH}, + [CDS_SAP_MODE] = {CDS_24G_SBS_CH_MCC_CH, CDS_24G, CDS_24G_MCC_CH}, + [CDS_P2P_CLIENT_MODE] = {CDS_24G_SBS_CH_MCC_CH, + CDS_24G, CDS_24G_MCC_CH}, + [CDS_P2P_GO_MODE] = {CDS_24G_MCC_CH, CDS_24G_MCC_CH, CDS_24G_MCC_CH}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_SAP_SAP_MCC_5_2x2] = { + [CDS_STA_MODE] = {CDS_24G_SBS_CH_MCC_CH, CDS_24G, CDS_24G_MCC_CH}, + [CDS_SAP_MODE] = {CDS_24G_SBS_CH_MCC_CH, CDS_24G, CDS_24G_MCC_CH}, + [CDS_P2P_CLIENT_MODE] = {CDS_24G_SBS_CH_MCC_CH, + CDS_24G, CDS_24G_MCC_CH}, + [CDS_P2P_GO_MODE] = {CDS_24G_MCC_CH, CDS_24G_MCC_CH, CDS_24G_MCC_CH}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_SAP_SAP_MCC_24_5_1x1] = { + [CDS_STA_MODE] = {CDS_5G, CDS_5G, CDS_5G}, + [CDS_SAP_MODE] = {CDS_5G, CDS_5G, CDS_5G}, + [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_SAP_SAP_MCC_24_5_2x2] = { + [CDS_STA_MODE] = {CDS_5G, CDS_5G, CDS_5G}, + [CDS_SAP_MODE] = {CDS_5G, CDS_5G, CDS_5G}, + [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_SAP_SAP_DBS_1x1] = { + [CDS_STA_MODE] = { CDS_SCC_ON_5_SCC_ON_24_5G, CDS_SCC_ON_5_SCC_ON_24, + CDS_SCC_ON_5_SCC_ON_24}, + [CDS_SAP_MODE] = { CDS_SCC_ON_5_SCC_ON_24_5G, CDS_SCC_ON_5_SCC_ON_24, + CDS_SCC_ON_5_SCC_ON_24}, + [CDS_P2P_CLIENT_MODE] = { CDS_SCC_ON_5_SCC_ON_24_5G, + CDS_SCC_ON_5_SCC_ON_24, CDS_SCC_ON_5_SCC_ON_24}, + [CDS_P2P_GO_MODE] = { CDS_SCC_ON_5_SCC_ON_24_5G, CDS_SCC_ON_5_SCC_ON_24, + CDS_SCC_ON_5_SCC_ON_24}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_SAP_SAP_DBS_2x2] = { + [CDS_STA_MODE] = { CDS_SCC_ON_5_SCC_ON_24_5G, CDS_SCC_ON_5_SCC_ON_24, + CDS_SCC_ON_5_SCC_ON_24}, + [CDS_SAP_MODE] = { CDS_SCC_ON_5_SCC_ON_24_5G, CDS_SCC_ON_5_SCC_ON_24, + CDS_SCC_ON_5_SCC_ON_24}, + [CDS_P2P_CLIENT_MODE] = { CDS_SCC_ON_5_SCC_ON_24_5G, + CDS_SCC_ON_5_SCC_ON_24, CDS_SCC_ON_5_SCC_ON_24}, + [CDS_P2P_GO_MODE] = { CDS_SCC_ON_5_SCC_ON_24_5G, CDS_SCC_ON_5_SCC_ON_24, + CDS_SCC_ON_5_SCC_ON_24}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_SAP_SAP_SBS_5_1x1] = { + [CDS_STA_MODE] = { + CDS_SBS_CH_5G, CDS_SBS_CH, CDS_SBS_CH}, + [CDS_SAP_MODE] = { + CDS_SBS_CH_5G, CDS_SBS_CH, CDS_SBS_CH}, + [CDS_P2P_CLIENT_MODE] = { + CDS_SBS_CH_5G, CDS_SBS_CH, CDS_SBS_CH}, + [CDS_P2P_GO_MODE] = { + CDS_SBS_CH_5G, CDS_SBS_CH, CDS_SBS_CH}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_STA_P2P_GO_SCC_24_1x1] = { + [CDS_STA_MODE] = {CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, + CDS_MAX_PCL_TYPE}, + [CDS_SAP_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, + [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_STA_P2P_GO_SCC_24_2x2] = { + [CDS_STA_MODE] = {CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE}, + [CDS_SAP_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, + [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_STA_P2P_GO_MCC_24_1x1] = { + [CDS_STA_MODE] = {CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE}, + [CDS_SAP_MODE] = {CDS_5G, CDS_5G, CDS_5G}, + [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_STA_P2P_GO_MCC_24_2x2] = { + [CDS_STA_MODE] = {CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE}, + [CDS_SAP_MODE] = {CDS_5G, CDS_5G, CDS_5G}, + [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_STA_P2P_GO_SCC_5_1x1] = { + [CDS_STA_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE}, + [CDS_SAP_MODE] = { + CDS_24G_SCC_CH_SBS_CH_5G, CDS_24G_SCC_CH, + CDS_24G_SCC_CH_SBS_CH}, + [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_STA_P2P_GO_SCC_5_2x2] = { + [CDS_STA_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE}, + [CDS_SAP_MODE] = { + CDS_24G_SCC_CH_SBS_CH_5G, CDS_24G_SCC_CH, + CDS_24G_SCC_CH_SBS_CH}, + [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_STA_P2P_GO_MCC_5_1x1] = { + [CDS_STA_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE}, + [CDS_SAP_MODE] = { + CDS_24G_SBS_CH_MCC_CH, CDS_24G, CDS_24G_MCC_CH}, + [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_STA_P2P_GO_MCC_5_2x2] = { + [CDS_STA_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE}, + [CDS_SAP_MODE] = { + CDS_24G_SBS_CH_MCC_CH, CDS_24G, CDS_24G_MCC_CH}, + [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_STA_P2P_GO_MCC_24_5_1x1] = { + [CDS_STA_MODE] = {CDS_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_5G, CDS_5G, CDS_5G}, + [CDS_P2P_GO_MODE] = {CDS_5G, CDS_5G, CDS_5G}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_STA_P2P_GO_MCC_24_5_2x2] = { + [CDS_STA_MODE] = {CDS_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_5G, CDS_5G, CDS_5G}, + [CDS_P2P_GO_MODE] = {CDS_5G, CDS_5G, CDS_5G}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_STA_P2P_GO_DBS_1x1] = { + [CDS_STA_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE}, + [CDS_SAP_MODE] = { CDS_SCC_ON_5_SCC_ON_24_5G, CDS_SCC_ON_5_SCC_ON_24, + CDS_SCC_ON_5_SCC_ON_24}, + [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_STA_P2P_GO_DBS_2x2] = { + [CDS_STA_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE}, + [CDS_SAP_MODE] = { CDS_SCC_ON_5_SCC_ON_24_5G, CDS_SCC_ON_5_SCC_ON_24, + CDS_SCC_ON_5_SCC_ON_24}, + [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_STA_P2P_GO_SBS_5_1x1] = { + [CDS_STA_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE}, + [CDS_SAP_MODE] = { + CDS_SBS_CH_5G, CDS_SBS_CH, CDS_SBS_CH}, + [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_GO_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_GO_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_GO_SAP_MCC_24_1x1] = { + [CDS_STA_MODE] = { CDS_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_GO_SAP_MCC_24_2x2] = { + [CDS_STA_MODE] = {CDS_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_GO_SAP_SCC_5_1x1] = { + [CDS_STA_MODE] = { + CDS_24G_SCC_CH_SBS_CH_5G, CDS_24G_SCC_CH, + CDS_24G_SCC_CH_SBS_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_GO_SAP_SCC_5_2x2] = { + [CDS_STA_MODE] = { + CDS_24G_SCC_CH_SBS_CH_5G, CDS_24G_SCC_CH, + CDS_24G_SCC_CH_SBS_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_GO_SAP_MCC_5_1x1] = { + [CDS_STA_MODE] = { + CDS_24G_SBS_CH_MCC_CH, CDS_24G, CDS_24G_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_GO_SAP_MCC_5_2x2] = { + [CDS_STA_MODE] = { + CDS_24G_SBS_CH_MCC_CH, CDS_24G, CDS_24G_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_GO_SAP_MCC_24_5_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_5G, CDS_5G, CDS_5G}, + [CDS_P2P_GO_MODE] = {CDS_5G, CDS_5G, CDS_5G}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_P2P_GO_SAP_MCC_24_5_2x2] = { + [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_5G, CDS_5G, CDS_5G}, + [CDS_P2P_GO_MODE] = {CDS_5G, CDS_5G, CDS_5G}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_P2P_GO_SAP_DBS_1x1] = { + [CDS_STA_MODE] = { + CDS_SCC_ON_5_SCC_ON_24_5G, CDS_SCC_ON_5_SCC_ON_24, + 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} }, + + [CDS_P2P_GO_SAP_DBS_2x2] = { + [CDS_STA_MODE] = { + CDS_SCC_ON_5_SCC_ON_24_5G, CDS_SCC_ON_5_SCC_ON_24, + 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} }, + + [CDS_P2P_GO_SAP_SBS_5_1x1] = { + [CDS_STA_MODE] = { + CDS_SBS_CH_5G, CDS_SBS_CH, CDS_SBS_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_STA_P2P_CLI_SCC_24_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_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, + [CDS_P2P_GO_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_STA_P2P_CLI_SCC_24_2x2] = { + [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_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, + [CDS_P2P_GO_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_STA_P2P_CLI_MCC_24_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_5G, CDS_5G, CDS_5G}, + [CDS_P2P_GO_MODE] = {CDS_5G, CDS_5G, CDS_5G}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_STA_P2P_CLI_MCC_24_2x2] = { + [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_5G, CDS_5G, CDS_5G}, + [CDS_P2P_GO_MODE] = {CDS_5G, CDS_5G, CDS_5G}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_STA_P2P_CLI_SCC_5_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_24G_SCC_CH_SBS_CH, CDS_24G_SCC_CH_SBS_CH, + CDS_24G_SCC_CH_SBS_CH}, + [CDS_P2P_GO_MODE] = { + CDS_24G_SCC_CH_SBS_CH, CDS_24G_SCC_CH_SBS_CH, + CDS_24G_SCC_CH_SBS_CH}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_STA_P2P_CLI_SCC_5_2x2] = { + [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_24G_SCC_CH_SBS_CH, CDS_24G_SCC_CH_SBS_CH, + CDS_24G_SCC_CH_SBS_CH}, + [CDS_P2P_GO_MODE] = { + CDS_24G_SCC_CH_SBS_CH, CDS_24G_SCC_CH_SBS_CH, + CDS_24G_SCC_CH_SBS_CH}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_STA_P2P_CLI_MCC_5_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_24G_MCC_CH, CDS_24G_MCC_CH, + CDS_MCC_CH_24G}, + [CDS_P2P_GO_MODE] = {CDS_MCC_CH_24G, CDS_24G_MCC_CH, + CDS_MCC_CH_24G}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_STA_P2P_CLI_MCC_5_2x2] = { + [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_24G_MCC_CH, CDS_24G_MCC_CH, + CDS_24G_MCC_CH}, + [CDS_P2P_GO_MODE] = {CDS_24G_MCC_CH, CDS_24G_MCC_CH, + CDS_24G_MCC_CH}, + [CDS_IBSS_MODE] = {CDS_NONE, CDS_NONE, CDS_NONE} }, + + [CDS_STA_P2P_CLI_MCC_24_5_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_5G, CDS_5G, CDS_5G}, + [CDS_P2P_GO_MODE] = {CDS_5G, CDS_5G, CDS_5G}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_STA_P2P_CLI_MCC_24_5_2x2] = { + [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_5G, CDS_5G, CDS_5G}, + [CDS_P2P_GO_MODE] = {CDS_5G, CDS_5G, CDS_5G}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_STA_P2P_CLI_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_SCC_ON_5_SCC_ON_24, CDS_SCC_ON_5_SCC_ON_24_5G, + CDS_SCC_ON_5_SCC_ON_24}, + [CDS_P2P_GO_MODE] = { + CDS_SCC_ON_5_SCC_ON_24, CDS_SCC_ON_5_SCC_ON_24_5G, + CDS_SCC_ON_5_SCC_ON_24}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_STA_P2P_CLI_DBS_2x2] = { + [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_SCC_ON_5_SCC_ON_24, CDS_SCC_ON_5_SCC_ON_24_5G, + CDS_SCC_ON_5_SCC_ON_24}, + [CDS_P2P_GO_MODE] = { + CDS_SCC_ON_5_SCC_ON_24, CDS_SCC_ON_5_SCC_ON_24_5G, + CDS_SCC_ON_5_SCC_ON_24}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_STA_P2P_CLI_SBS_5_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_SBS_CH_5G, CDS_SBS_CH, CDS_SBS_CH}, + [CDS_P2P_GO_MODE] = { + CDS_SBS_CH_5G, CDS_SBS_CH, CDS_SBS_CH}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_P2P_GO_P2P_CLI_SCC_24_1x1] = { + [CDS_STA_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, + [CDS_SAP_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, + [CDS_P2P_CLIENT_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, + [CDS_P2P_GO_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_P2P_GO_P2P_CLI_SCC_24_2x2] = { + [CDS_STA_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, + [CDS_SAP_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, + [CDS_P2P_CLIENT_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, + [CDS_P2P_GO_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_P2P_GO_P2P_CLI_MCC_24_1x1] = { + [CDS_STA_MODE] = {CDS_5G, CDS_5G, CDS_5G}, + [CDS_SAP_MODE] = {CDS_5G, CDS_5G, CDS_5G}, + [CDS_P2P_CLIENT_MODE] = {CDS_5G, CDS_5G, CDS_5G}, + [CDS_P2P_GO_MODE] = {CDS_5G, CDS_5G, CDS_5G}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_P2P_GO_P2P_CLI_MCC_24_2x2] = { + [CDS_STA_MODE] = {CDS_5G, CDS_5G, CDS_5G}, + [CDS_SAP_MODE] = {CDS_5G, CDS_5G, CDS_5G}, + [CDS_P2P_CLIENT_MODE] = {CDS_5G, CDS_5G, CDS_5G}, + [CDS_P2P_GO_MODE] = {CDS_5G, CDS_5G, CDS_5G}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_P2P_GO_P2P_CLI_SCC_5_1x1] = { + [CDS_STA_MODE] = { + CDS_24G_SCC_CH_SBS_CH, CDS_24G_SCC_CH_SBS_CH_5G, + CDS_SCC_CH_24G}, + [CDS_SAP_MODE] = { + CDS_24G_SCC_CH_SBS_CH, CDS_24G_SCC_CH_SBS_CH_5G, + CDS_SCC_CH_24G}, + [CDS_P2P_CLIENT_MODE] = { + CDS_24G_SCC_CH_SBS_CH_5G, CDS_24G_SCC_CH_SBS_CH_5G, + CDS_24G_SCC_CH_SBS_CH_5G}, + [CDS_P2P_GO_MODE] = { + CDS_24G_SCC_CH_SBS_CH_5G, CDS_24G_SCC_CH_SBS_CH_5G, + CDS_24G_SCC_CH_SBS_CH_5G}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_P2P_GO_P2P_CLI_SCC_5_2x2] = { + [CDS_STA_MODE] = { + CDS_24G_SCC_CH_SBS_CH, CDS_24G_SCC_CH_SBS_CH_5G, + CDS_SCC_CH_24G}, + [CDS_SAP_MODE] = { + CDS_24G_SCC_CH_SBS_CH, CDS_24G_SCC_CH_SBS_CH_5G, + CDS_SCC_CH_24G}, + [CDS_P2P_CLIENT_MODE] = { + CDS_24G_SCC_CH_SBS_CH_5G, CDS_24G_SCC_CH_SBS_CH_5G, + CDS_24G_SCC_CH_SBS_CH_5G}, + [CDS_P2P_GO_MODE] = { + CDS_24G_SCC_CH_SBS_CH_5G, CDS_24G_SCC_CH_SBS_CH_5G, + CDS_24G_SCC_CH_SBS_CH_5G}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_P2P_GO_P2P_CLI_MCC_5_1x1] = { + [CDS_STA_MODE] = {CDS_24G_MCC_CH, CDS_24G_MCC_CH, CDS_24G_MCC_CH}, + [CDS_SAP_MODE] = {CDS_24G_MCC_CH, CDS_24G_MCC_CH, CDS_24G_MCC_CH}, + [CDS_P2P_CLIENT_MODE] = {CDS_24G_MCC_CH, CDS_24G_MCC_CH, + CDS_24G_MCC_CH}, + [CDS_P2P_GO_MODE] = {CDS_24G_MCC_CH, CDS_24G_MCC_CH, CDS_24G_MCC_CH}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_P2P_GO_P2P_CLI_MCC_5_2x2] = { + [CDS_STA_MODE] = {CDS_MCC_CH_24G, CDS_24G_MCC_CH, CDS_24G_MCC_CH}, + [CDS_SAP_MODE] = {CDS_24G_MCC_CH, CDS_24G_MCC_CH, CDS_24G_MCC_CH}, + [CDS_P2P_CLIENT_MODE] = {CDS_MCC_CH_24G, CDS_24G_MCC_CH, + CDS_24G_MCC_CH}, + [CDS_P2P_GO_MODE] = {CDS_MCC_CH_24G, CDS_24G_MCC_CH, CDS_24G_MCC_CH}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_P2P_GO_P2P_CLI_MCC_24_5_1x1] = { + [CDS_STA_MODE] = {CDS_5G, CDS_5G, CDS_5G}, + [CDS_SAP_MODE] = {CDS_5G, CDS_5G, CDS_5G}, + [CDS_P2P_CLIENT_MODE] = {CDS_5G, CDS_5G, CDS_5G}, + [CDS_P2P_GO_MODE] = {CDS_5G, CDS_5G, CDS_5G}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_P2P_GO_P2P_CLI_MCC_24_5_2x2] = { + [CDS_STA_MODE] = {CDS_5G, CDS_5G, CDS_5G}, + [CDS_SAP_MODE] = {CDS_5G, CDS_5G, CDS_5G}, + [CDS_P2P_CLIENT_MODE] = {CDS_5G, CDS_5G, CDS_5G}, + [CDS_P2P_GO_MODE] = {CDS_5G, CDS_5G, CDS_5G}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_P2P_GO_P2P_CLI_DBS_1x1] = { + [CDS_STA_MODE] = { + CDS_SCC_ON_5_SCC_ON_24_5G, CDS_SCC_ON_5_SCC_ON_24_5G, + CDS_SCC_ON_5_SCC_ON_24}, + [CDS_SAP_MODE] = { + CDS_SCC_ON_5_SCC_ON_24_5G, CDS_SCC_ON_5_SCC_ON_24_5G, + CDS_SCC_ON_5_SCC_ON_24}, + [CDS_P2P_CLIENT_MODE] = { + CDS_SCC_ON_5_SCC_ON_24_5G, CDS_SCC_ON_5_SCC_ON_24_5G, + CDS_SCC_ON_5_SCC_ON_24}, + [CDS_P2P_GO_MODE] = { + CDS_SCC_ON_5_SCC_ON_24_5G, CDS_SCC_ON_5_SCC_ON_24_5G, + CDS_SCC_ON_5_SCC_ON_24}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_P2P_GO_P2P_CLI_DBS_2x2] = { + [CDS_STA_MODE] = { + CDS_SCC_ON_5_SCC_ON_24_5G, CDS_SCC_ON_5_SCC_ON_24_5G, + CDS_SCC_ON_5_SCC_ON_24}, + [CDS_SAP_MODE] = { + CDS_SCC_ON_5_SCC_ON_24_5G, CDS_SCC_ON_5_SCC_ON_24_5G, + CDS_SCC_ON_5_SCC_ON_24}, + [CDS_P2P_CLIENT_MODE] = { + CDS_SCC_ON_5_SCC_ON_24_5G, CDS_SCC_ON_5_SCC_ON_24_5G, + CDS_SCC_ON_5_SCC_ON_24}, + [CDS_P2P_GO_MODE] = { + CDS_SCC_ON_5_SCC_ON_24_5G, CDS_SCC_ON_5_SCC_ON_24_5G, + CDS_SCC_ON_5_SCC_ON_24}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_P2P_GO_P2P_CLI_SBS_5_1x1] = { + [CDS_STA_MODE] = { + CDS_SBS_CH_5G, CDS_SBS_CH, CDS_SBS_CH}, + [CDS_SAP_MODE] = { + CDS_SBS_CH_5G, CDS_SBS_CH, CDS_SBS_CH}, + [CDS_P2P_CLIENT_MODE] = { + CDS_SBS_CH_5G, CDS_SBS_CH, CDS_SBS_CH}, + [CDS_P2P_GO_MODE] = { + CDS_SBS_CH_5G, CDS_SBS_CH, CDS_SBS_CH}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, +}; + +/** + * next_action_two_connection_table - table which provides next + * action while a new connection is coming up, with one + * connection already in the system + */ +static next_action_two_connection_table_type + next_action_two_connection_dbs_2x2_table = { + [CDS_STA_24_1x1] = {CDS_NOP, CDS_NOP}, + [CDS_STA_24_2x2] = {CDS_NOP, CDS_NOP}, + [CDS_STA_5_1x1] = {CDS_DBS, CDS_SBS}, + [CDS_STA_5_2x2] = {CDS_DBS, CDS_SBS_DOWNGRADE}, + [CDS_P2P_CLI_24_1x1] = {CDS_NOP, CDS_NOP}, + [CDS_P2P_CLI_24_2x2] = {CDS_NOP, CDS_NOP}, + [CDS_P2P_CLI_5_1x1] = {CDS_DBS, CDS_SBS}, + [CDS_P2P_CLI_5_2x2] = {CDS_DBS, CDS_SBS_DOWNGRADE}, + [CDS_P2P_GO_24_1x1] = {CDS_NOP, CDS_NOP}, + [CDS_P2P_GO_24_2x2] = {CDS_NOP, CDS_NOP}, + [CDS_P2P_GO_5_1x1] = {CDS_DBS, CDS_SBS}, + [CDS_P2P_GO_5_2x2] = {CDS_DBS, CDS_SBS_DOWNGRADE}, + [CDS_SAP_24_1x1] = {CDS_NOP, CDS_DBS}, + [CDS_SAP_24_2x2] = {CDS_NOP, CDS_DBS}, + [CDS_SAP_5_1x1] = {CDS_DBS, CDS_SBS}, + [CDS_SAP_5_2x2] = {CDS_DBS, CDS_SBS_DOWNGRADE}, + [CDS_IBSS_24_1x1] = {CDS_NOP, CDS_NOP}, + [CDS_IBSS_24_2x2] = {CDS_NOP, CDS_NOP}, + [CDS_IBSS_5_1x1] = {CDS_DBS, CDS_NOP}, + [CDS_IBSS_5_2x2] = {CDS_DBS, CDS_NOP}, +}; + +/** + * next_action_three_connection_table - table which provides next + * action while a new connection is coming up, with two + * connections already in the system + */ +static next_action_three_connection_table_type + next_action_three_connection_dbs_2x2_table = { + [CDS_STA_SAP_SCC_24_1x1] = {CDS_NOP, CDS_NOP}, + [CDS_STA_SAP_SCC_24_2x2] = {CDS_NOP, CDS_NOP}, + [CDS_STA_SAP_MCC_24_1x1] = {CDS_NOP, CDS_NOP}, + [CDS_STA_SAP_MCC_24_2x2] = {CDS_NOP, CDS_NOP}, + [CDS_STA_SAP_SCC_5_1x1] = {CDS_DBS, CDS_SBS}, + [CDS_STA_SAP_SCC_5_2x2] = {CDS_DBS, CDS_SBS_DOWNGRADE}, + [CDS_STA_SAP_MCC_5_1x1] = {CDS_DBS, CDS_SBS}, + [CDS_STA_SAP_MCC_5_2x2] = {CDS_DBS, CDS_SBS_DOWNGRADE}, + [CDS_STA_SAP_MCC_24_5_1x1] = {CDS_NOP, CDS_NOP}, + [CDS_STA_SAP_MCC_24_5_2x2] = {CDS_NOP, CDS_NOP}, + [CDS_STA_SAP_DBS_1x1] = {CDS_NOP, CDS_NOP}, + [CDS_STA_SAP_DBS_2x2] = {CDS_NOP, CDS_NOP}, + [CDS_STA_SAP_SBS_5_1x1] = {CDS_DBS_UPGRADE, CDS_NOP}, + + [CDS_STA_P2P_GO_SCC_24_1x1] = {CDS_NOP, CDS_NOP}, + [CDS_STA_P2P_GO_SCC_24_2x2] = {CDS_NOP, CDS_NOP}, + [CDS_STA_P2P_GO_MCC_24_1x1] = {CDS_NOP, CDS_NOP}, + [CDS_STA_P2P_GO_MCC_24_2x2] = {CDS_NOP, CDS_NOP}, + [CDS_STA_P2P_GO_SCC_5_1x1] = {CDS_DBS, CDS_SBS}, + [CDS_STA_P2P_GO_SCC_5_2x2] = {CDS_DBS, CDS_SBS_DOWNGRADE}, + [CDS_STA_P2P_GO_MCC_5_1x1] = {CDS_DBS, CDS_SBS}, + [CDS_STA_P2P_GO_MCC_5_2x2] = {CDS_DBS, CDS_SBS_DOWNGRADE}, + [CDS_STA_P2P_GO_MCC_24_5_1x1] = {CDS_NOP, CDS_NOP}, + [CDS_STA_P2P_GO_MCC_24_5_2x2] = {CDS_NOP, CDS_NOP}, + [CDS_STA_P2P_GO_DBS_1x1] = {CDS_NOP, CDS_NOP}, + [CDS_STA_P2P_GO_DBS_2x2] = {CDS_NOP, CDS_NOP}, + [CDS_STA_P2P_GO_SBS_5_1x1] = {CDS_DBS_UPGRADE, CDS_NOP}, + + [CDS_STA_P2P_CLI_SCC_24_1x1] = {CDS_NOP, CDS_NOP}, + [CDS_STA_P2P_CLI_SCC_24_2x2] = {CDS_NOP, CDS_NOP}, + [CDS_STA_P2P_CLI_MCC_24_1x1] = {CDS_NOP, CDS_NOP}, + [CDS_STA_P2P_CLI_MCC_24_2x2] = {CDS_NOP, CDS_NOP}, + [CDS_STA_P2P_CLI_SCC_5_1x1] = {CDS_DBS, CDS_SBS}, + [CDS_STA_P2P_CLI_SCC_5_2x2] = {CDS_DBS, CDS_SBS_DOWNGRADE}, + [CDS_STA_P2P_CLI_MCC_5_1x1] = {CDS_DBS, CDS_SBS}, + [CDS_STA_P2P_CLI_MCC_5_2x2] = {CDS_DBS, CDS_SBS_DOWNGRADE}, + [CDS_STA_P2P_CLI_MCC_24_5_1x1] = {CDS_NOP, CDS_NOP}, + [CDS_STA_P2P_CLI_MCC_24_5_2x2] = {CDS_NOP, CDS_NOP}, + [CDS_STA_P2P_CLI_DBS_1x1] = {CDS_NOP, CDS_NOP}, + [CDS_STA_P2P_CLI_DBS_2x2] = {CDS_NOP, CDS_NOP}, + [CDS_STA_P2P_CLI_SBS_5_1x1] = {CDS_DBS_UPGRADE, CDS_NOP}, + + [CDS_P2P_GO_P2P_CLI_SCC_24_1x1] = {CDS_NOP, CDS_NOP}, + [CDS_P2P_GO_P2P_CLI_SCC_24_2x2] = {CDS_NOP, CDS_NOP}, + [CDS_P2P_GO_P2P_CLI_MCC_24_1x1] = {CDS_NOP, CDS_NOP}, + [CDS_P2P_GO_P2P_CLI_MCC_24_2x2] = {CDS_NOP, CDS_NOP}, + [CDS_P2P_GO_P2P_CLI_SCC_5_1x1] = {CDS_DBS, CDS_SBS}, + [CDS_P2P_GO_P2P_CLI_SCC_5_2x2] = {CDS_DBS, CDS_SBS_DOWNGRADE}, + [CDS_P2P_GO_P2P_CLI_MCC_5_1x1] = {CDS_DBS, CDS_SBS}, + [CDS_P2P_GO_P2P_CLI_MCC_5_2x2] = {CDS_DBS, CDS_SBS_DOWNGRADE}, + [CDS_P2P_GO_P2P_CLI_MCC_24_5_1x1] = {CDS_NOP, CDS_NOP}, + [CDS_P2P_GO_P2P_CLI_MCC_24_5_2x2] = {CDS_NOP, CDS_NOP}, + [CDS_P2P_GO_P2P_CLI_DBS_1x1] = {CDS_NOP, CDS_NOP}, + [CDS_P2P_GO_P2P_CLI_DBS_2x2] = {CDS_NOP, CDS_NOP}, + [CDS_P2P_GO_P2P_CLI_SBS_5_1x1] = {CDS_DBS_UPGRADE, CDS_NOP}, +}; + +#endif diff --git a/core/cds/inc/cds_concurrency_no_dbs.h b/core/cds/inc/cds_concurrency_no_dbs.h new file mode 100644 index 000000000000..fe1c215043b4 --- /dev/null +++ b/core/cds/inc/cds_concurrency_no_dbs.h @@ -0,0 +1,909 @@ +/* + * Copyright (c) 2012-2016 The Linux Foundation. All rights reserved. + * + * Previously licensed under the ISC license by Qualcomm Atheros, Inc. + * + * + * Permission to use, copy, modify, and/or distribute this software for + * any purpose with or without fee is hereby granted, provided that the + * above copyright notice and this permission notice appear in all + * copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL + * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE + * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL + * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR + * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER + * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ + +/* + * This file was originally distributed by Qualcomm Atheros, Inc. + * under proprietary terms before Copyright ownership was assigned + * to the Linux Foundation. + */ + +#ifndef __CDS_CONCURRENCY_NO_DBS_H +#define __CDS_CONCURRENCY_NO_DBS_H + +#include "cds_concurrency.h" + +/** + * second_connection_pcl_nodbs_table - table which provides PCL + * for the 2nd connection, when we have a connection already in + * the system (with DBS not supported by HW) + */ +static const enum cds_pcl_type +second_connection_pcl_nodbs_table[CDS_MAX_ONE_CONNECTION_MODE] + [CDS_MAX_NUM_OF_MODE][CDS_MAX_CONC_PRIORITY_MODE] = { + [CDS_STA_24_1x1] = { + [CDS_STA_MODE] = {CDS_5G, CDS_SCC_CH, CDS_SCC_CH}, + [CDS_SAP_MODE] = {CDS_5G, CDS_SCC_CH, CDS_SCC_CH_5G}, + [CDS_P2P_CLIENT_MODE] = {CDS_5G, CDS_SCC_CH, CDS_SCC_CH_5G}, + [CDS_P2P_GO_MODE] = {CDS_5G, CDS_SCC_CH, CDS_SCC_CH_5G}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_STA_24_2x2] = { + [CDS_STA_MODE] = {CDS_5G, CDS_SCC_CH, CDS_SCC_CH}, + [CDS_SAP_MODE] = {CDS_5G, CDS_SCC_CH, CDS_SCC_CH_5G}, + [CDS_P2P_CLIENT_MODE] = {CDS_5G, CDS_SCC_CH, CDS_SCC_CH_5G}, + [CDS_P2P_GO_MODE] = {CDS_5G, CDS_SCC_CH, CDS_SCC_CH_5G}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_STA_5_1x1] = { + [CDS_STA_MODE] = {CDS_SCC_CH_5G, CDS_SCC_CH, CDS_SCC_CH_5G}, + [CDS_SAP_MODE] = {CDS_SCC_CH_5G, CDS_SCC_CH, CDS_SCC_CH}, + [CDS_P2P_CLIENT_MODE] = {CDS_SCC_CH_5G, CDS_SCC_CH, CDS_SCC_CH}, + [CDS_P2P_GO_MODE] = {CDS_SCC_CH_5G, CDS_SCC_CH, CDS_SCC_CH}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_STA_5_2x2] = { + [CDS_STA_MODE] = {CDS_SCC_CH_5G, CDS_SCC_CH, CDS_SCC_CH_5G}, + [CDS_SAP_MODE] = {CDS_SCC_CH_5G, CDS_SCC_CH, CDS_SCC_CH}, + [CDS_P2P_CLIENT_MODE] = {CDS_SCC_CH_5G, CDS_SCC_CH, CDS_SCC_CH}, + [CDS_P2P_GO_MODE] = {CDS_SCC_CH_5G, CDS_SCC_CH, CDS_SCC_CH}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_P2P_CLI_24_1x1] = { + [CDS_STA_MODE] = {CDS_5G, CDS_SCC_CH, CDS_SCC_CH}, + [CDS_SAP_MODE] = {CDS_5G, CDS_SCC_CH, CDS_SCC_CH_5G}, + [CDS_P2P_CLIENT_MODE] = {CDS_5G, CDS_SCC_CH, CDS_SCC_CH_5G}, + [CDS_P2P_GO_MODE] = {CDS_5G, CDS_SCC_CH, CDS_SCC_CH_5G}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_P2P_CLI_24_2x2] = { + [CDS_STA_MODE] = {CDS_5G, CDS_SCC_CH, CDS_SCC_CH}, + [CDS_SAP_MODE] = {CDS_5G, CDS_SCC_CH, CDS_SCC_CH_5G}, + [CDS_P2P_CLIENT_MODE] = {CDS_5G, CDS_SCC_CH, CDS_SCC_CH_5G}, + [CDS_P2P_GO_MODE] = {CDS_5G, CDS_SCC_CH, CDS_SCC_CH_5G}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_P2P_CLI_5_1x1] = { + [CDS_STA_MODE] = {CDS_SCC_CH_5G, CDS_SCC_CH, CDS_SCC_CH_5G}, + [CDS_SAP_MODE] = {CDS_SCC_CH_5G, CDS_SCC_CH, CDS_SCC_CH}, + [CDS_P2P_CLIENT_MODE] = {CDS_SCC_CH_5G, CDS_SCC_CH, CDS_SCC_CH}, + [CDS_P2P_GO_MODE] = {CDS_SCC_CH_5G, CDS_SCC_CH, CDS_SCC_CH}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_P2P_CLI_5_2x2] = { + [CDS_STA_MODE] = {CDS_SCC_CH_5G, CDS_SCC_CH, CDS_SCC_CH_5G}, + [CDS_SAP_MODE] = {CDS_SCC_CH_5G, CDS_SCC_CH, CDS_SCC_CH}, + [CDS_P2P_CLIENT_MODE] = {CDS_SCC_CH_5G, CDS_SCC_CH, CDS_SCC_CH}, + [CDS_P2P_GO_MODE] = {CDS_SCC_CH_5G, CDS_SCC_CH, CDS_SCC_CH}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_P2P_GO_24_1x1] = { + [CDS_STA_MODE] = {CDS_SCC_CH, CDS_SCC_CH, CDS_SCC_CH}, + [CDS_SAP_MODE] = {CDS_SCC_CH, CDS_SCC_CH, CDS_SCC_CH}, + [CDS_P2P_CLIENT_MODE] = {CDS_SCC_CH, CDS_SCC_CH, CDS_SCC_CH}, + [CDS_P2P_GO_MODE] = {CDS_SCC_CH, CDS_SCC_CH, CDS_SCC_CH}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_P2P_GO_24_2x2] = { + [CDS_STA_MODE] = {CDS_SCC_CH, CDS_SCC_CH, CDS_SCC_CH}, + [CDS_SAP_MODE] = {CDS_SCC_CH, CDS_SCC_CH, CDS_SCC_CH}, + [CDS_P2P_CLIENT_MODE] = {CDS_SCC_CH, CDS_SCC_CH, CDS_SCC_CH}, + [CDS_P2P_GO_MODE] = {CDS_SCC_CH, CDS_SCC_CH, CDS_SCC_CH}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_P2P_GO_5_1x1] = { + [CDS_STA_MODE] = {CDS_SCC_CH_5G, CDS_SCC_CH, CDS_SCC_CH}, + [CDS_SAP_MODE] = {CDS_SCC_CH, CDS_SCC_CH, CDS_SCC_CH}, + [CDS_P2P_CLIENT_MODE] = {CDS_SCC_CH, CDS_SCC_CH, CDS_SCC_CH}, + [CDS_P2P_GO_MODE] = {CDS_SCC_CH, CDS_SCC_CH, CDS_SCC_CH}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_P2P_GO_5_2x2] = { + [CDS_STA_MODE] = {CDS_SCC_CH_5G, CDS_SCC_CH, CDS_SCC_CH}, + [CDS_SAP_MODE] = {CDS_SCC_CH, CDS_SCC_CH, CDS_SCC_CH}, + [CDS_P2P_CLIENT_MODE] = {CDS_SCC_CH, CDS_SCC_CH, CDS_SCC_CH}, + [CDS_P2P_GO_MODE] = {CDS_SCC_CH, CDS_SCC_CH, CDS_SCC_CH}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_SAP_24_1x1] = { + [CDS_STA_MODE] = {CDS_SCC_CH, CDS_SCC_CH, CDS_SCC_CH}, + [CDS_SAP_MODE] = {CDS_SCC_CH, CDS_SCC_CH, CDS_SCC_CH}, + [CDS_P2P_CLIENT_MODE] = {CDS_SCC_CH, CDS_SCC_CH, CDS_SCC_CH}, + [CDS_P2P_GO_MODE] = {CDS_SCC_CH, CDS_SCC_CH, CDS_SCC_CH}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_SAP_24_2x2] = { + [CDS_STA_MODE] = {CDS_SCC_CH, CDS_SCC_CH, CDS_SCC_CH}, + [CDS_SAP_MODE] = {CDS_SCC_CH, CDS_SCC_CH, CDS_SCC_CH}, + [CDS_P2P_CLIENT_MODE] = {CDS_SCC_CH, CDS_SCC_CH, CDS_SCC_CH}, + [CDS_P2P_GO_MODE] = {CDS_SCC_CH, CDS_SCC_CH, CDS_SCC_CH}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_SAP_5_1x1] = { + [CDS_STA_MODE] = {CDS_SCC_CH_5G, CDS_SCC_CH, CDS_SCC_CH}, + [CDS_SAP_MODE] = {CDS_SCC_CH, CDS_SCC_CH, CDS_SCC_CH}, + [CDS_P2P_CLIENT_MODE] = {CDS_SCC_CH, CDS_SCC_CH, CDS_SCC_CH}, + [CDS_P2P_GO_MODE] = {CDS_SCC_CH, CDS_SCC_CH, CDS_SCC_CH}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_SAP_5_2x2] = { + [CDS_STA_MODE] = {CDS_SCC_CH_5G, CDS_SCC_CH, CDS_SCC_CH}, + [CDS_SAP_MODE] = {CDS_SCC_CH, CDS_SCC_CH, CDS_SCC_CH}, + [CDS_P2P_CLIENT_MODE] = {CDS_SCC_CH, CDS_SCC_CH, CDS_SCC_CH}, + [CDS_P2P_GO_MODE] = {CDS_SCC_CH, CDS_SCC_CH, CDS_SCC_CH}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_IBSS_24_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} }, + + [CDS_IBSS_24_2x2] = { + [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} }, + + [CDS_IBSS_5_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} }, + + [CDS_IBSS_5_2x2] = { + [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} }, +}; + +/** + * third_connection_pcl_nodbs_table - table which provides PCL + * for the 3rd connection, when we have two connections already + * in the system (with DBS not supported by HW) + */ +static const enum cds_pcl_type +third_connection_pcl_nodbs_table[CDS_MAX_TWO_CONNECTION_MODE] + [CDS_MAX_NUM_OF_MODE][CDS_MAX_CONC_PRIORITY_MODE] = { + [CDS_STA_SAP_SCC_24_1x1] = { + [CDS_STA_MODE] = {CDS_5G, CDS_SCC_CH, CDS_SCC_CH}, + [CDS_SAP_MODE] = {CDS_SCC_CH_5G, CDS_SCC_CH, CDS_SCC_CH}, + [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_STA_SAP_SCC_24_2x2] = { + [CDS_STA_MODE] = {CDS_5G, CDS_SCC_CH, CDS_SCC_CH}, + [CDS_SAP_MODE] = {CDS_SCC_CH_5G, CDS_SCC_CH, CDS_SCC_CH}, + [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_STA_SAP_MCC_24_1x1] = { + [CDS_STA_MODE] = {CDS_5G_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, + [CDS_SAP_MODE] = {CDS_5G_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, + [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_STA_SAP_MCC_24_2x2] = { + [CDS_STA_MODE] = {CDS_5G_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, + [CDS_SAP_MODE] = {CDS_5G_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, + [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_STA_SAP_SCC_5_1x1] = { + [CDS_STA_MODE] = {CDS_SCC_CH, CDS_SCC_CH, CDS_SCC_CH}, + [CDS_SAP_MODE] = {CDS_SCC_CH, CDS_SCC_CH, CDS_SCC_CH}, + [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_STA_SAP_SCC_5_2x2] = { + [CDS_STA_MODE] = {CDS_SCC_CH, CDS_SCC_CH, CDS_SCC_CH}, + [CDS_SAP_MODE] = {CDS_SCC_CH, CDS_SCC_CH, CDS_SCC_CH}, + [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_STA_SAP_MCC_5_1x1] = { + [CDS_STA_MODE] = {CDS_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, + [CDS_SAP_MODE] = {CDS_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, + [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_STA_SAP_MCC_5_2x2] = { + [CDS_STA_MODE] = {CDS_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, + [CDS_SAP_MODE] = {CDS_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, + [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_STA_SAP_MCC_24_5_1x1] = { + [CDS_STA_MODE] = {CDS_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, + [CDS_SAP_MODE] = {CDS_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, + [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_STA_SAP_MCC_24_5_2x2] = { + [CDS_STA_MODE] = {CDS_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, + [CDS_SAP_MODE] = {CDS_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, + [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_STA_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} }, + + [CDS_STA_P2P_GO_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_5G, CDS_SCC_CH, CDS_SCC_CH}, + [CDS_P2P_GO_MODE] = {CDS_5G_SCC_CH, CDS_SCC_CH, CDS_SCC_CH}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_STA_P2P_GO_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_5G, CDS_SCC_CH, CDS_SCC_CH}, + [CDS_P2P_GO_MODE] = {CDS_5G_SCC_CH, CDS_SCC_CH, CDS_SCC_CH}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_STA_P2P_GO_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_5G_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, + [CDS_P2P_GO_MODE] = { + CDS_5G_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_STA_P2P_GO_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_5G_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, + [CDS_P2P_GO_MODE] = { + CDS_5G_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_STA_P2P_GO_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_SCC_CH, CDS_SCC_CH, CDS_SCC_CH}, + [CDS_P2P_GO_MODE] = {CDS_SCC_CH, CDS_SCC_CH, CDS_SCC_CH}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_STA_P2P_GO_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_SCC_CH, CDS_SCC_CH, CDS_SCC_CH}, + [CDS_P2P_GO_MODE] = {CDS_SCC_CH, CDS_SCC_CH, CDS_SCC_CH}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_STA_P2P_GO_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_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, + [CDS_P2P_GO_MODE] = {CDS_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_STA_P2P_GO_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_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, + [CDS_P2P_GO_MODE] = {CDS_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_STA_P2P_GO_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_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, + [CDS_P2P_GO_MODE] = {CDS_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_STA_P2P_GO_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_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, + [CDS_P2P_GO_MODE] = {CDS_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_STA_P2P_GO_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} }, + + [CDS_STA_P2P_CLI_SCC_24_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_5G_SCC_CH, CDS_SCC_CH, CDS_SCC_CH}, + [CDS_P2P_GO_MODE] = {CDS_5G_SCC_CH, CDS_SCC_CH, CDS_SCC_CH}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_STA_P2P_CLI_SCC_24_2x2] = { + [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_5G_SCC_CH, CDS_SCC_CH, CDS_SCC_CH}, + [CDS_P2P_GO_MODE] = {CDS_5G_SCC_CH, CDS_SCC_CH, CDS_SCC_CH}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_STA_P2P_CLI_MCC_24_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_5G_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, + [CDS_P2P_GO_MODE] = {CDS_5G_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_STA_P2P_CLI_MCC_24_2x2] = { + [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_5G_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, + [CDS_P2P_GO_MODE] = {CDS_5G_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_STA_P2P_CLI_SCC_5_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_SCC_CH, CDS_SCC_CH, CDS_SCC_CH}, + [CDS_P2P_GO_MODE] = {CDS_SCC_CH, CDS_SCC_CH, CDS_SCC_CH}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_STA_P2P_CLI_SCC_5_2x2] = { + [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_SCC_CH, CDS_SCC_CH, CDS_SCC_CH}, + [CDS_P2P_GO_MODE] = {CDS_SCC_CH, CDS_SCC_CH, CDS_SCC_CH}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_STA_P2P_CLI_MCC_5_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_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, + [CDS_P2P_GO_MODE] = {CDS_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_STA_P2P_CLI_MCC_5_2x2] = { + [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_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, + [CDS_P2P_GO_MODE] = {CDS_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_STA_P2P_CLI_MCC_24_5_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_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, + [CDS_P2P_GO_MODE] = {CDS_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_STA_P2P_CLI_MCC_24_5_2x2] = { + [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_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, + [CDS_P2P_GO_MODE] = {CDS_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_STA_P2P_CLI_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} }, + + [CDS_P2P_GO_P2P_CLI_SCC_24_1x1] = { + [CDS_STA_MODE] = {CDS_5G, CDS_SCC_CH, CDS_SCC_CH}, + [CDS_SAP_MODE] = {CDS_SCC_CH_5G, CDS_SCC_CH, CDS_SCC_CH}, + [CDS_P2P_CLIENT_MODE] = {CDS_5G, CDS_SCC_CH, CDS_SCC_CH}, + [CDS_P2P_GO_MODE] = {CDS_5G_SCC_CH, CDS_SCC_CH, CDS_SCC_CH}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_P2P_GO_P2P_CLI_SCC_24_2x2] = { + [CDS_STA_MODE] = {CDS_5G, CDS_SCC_CH, CDS_SCC_CH}, + [CDS_SAP_MODE] = {CDS_SCC_CH_5G, CDS_SCC_CH, CDS_SCC_CH}, + [CDS_P2P_CLIENT_MODE] = {CDS_5G, CDS_SCC_CH, CDS_SCC_CH}, + [CDS_P2P_GO_MODE] = {CDS_5G_SCC_CH, CDS_SCC_CH, CDS_SCC_CH}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_P2P_GO_P2P_CLI_MCC_24_1x1] = { + [CDS_STA_MODE] = {CDS_5G_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, + [CDS_SAP_MODE] = {CDS_5G_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, + [CDS_P2P_CLIENT_MODE] = { + CDS_5G_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, + [CDS_P2P_GO_MODE] = { + CDS_5G_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_P2P_GO_P2P_CLI_MCC_24_2x2] = { + [CDS_STA_MODE] = {CDS_5G_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, + [CDS_SAP_MODE] = {CDS_5G_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, + [CDS_P2P_CLIENT_MODE] = { + CDS_5G_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, + [CDS_P2P_GO_MODE] = { + CDS_5G_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_P2P_GO_P2P_CLI_SCC_5_1x1] = { + [CDS_STA_MODE] = {CDS_SCC_CH, CDS_SCC_CH, CDS_SCC_CH}, + [CDS_SAP_MODE] = {CDS_SCC_CH, CDS_SCC_CH, CDS_SCC_CH}, + [CDS_P2P_CLIENT_MODE] = {CDS_SCC_CH, CDS_SCC_CH, CDS_SCC_CH}, + [CDS_P2P_GO_MODE] = {CDS_SCC_CH, CDS_SCC_CH, CDS_SCC_CH}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_P2P_GO_P2P_CLI_SCC_5_2x2] = { + [CDS_STA_MODE] = {CDS_SCC_CH, CDS_SCC_CH, CDS_SCC_CH}, + [CDS_SAP_MODE] = {CDS_SCC_CH, CDS_SCC_CH, CDS_SCC_CH}, + [CDS_P2P_CLIENT_MODE] = {CDS_SCC_CH, CDS_SCC_CH, CDS_SCC_CH}, + [CDS_P2P_GO_MODE] = {CDS_SCC_CH, CDS_SCC_CH, CDS_SCC_CH}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_P2P_GO_P2P_CLI_MCC_5_1x1] = { + [CDS_STA_MODE] = {CDS_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, + [CDS_SAP_MODE] = {CDS_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, + [CDS_P2P_CLIENT_MODE] = {CDS_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, + [CDS_P2P_GO_MODE] = {CDS_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_P2P_GO_P2P_CLI_MCC_5_2x2] = { + [CDS_STA_MODE] = {CDS_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, + [CDS_SAP_MODE] = {CDS_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, + [CDS_P2P_CLIENT_MODE] = {CDS_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, + [CDS_P2P_GO_MODE] = {CDS_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_P2P_GO_P2P_CLI_MCC_24_5_1x1] = { + [CDS_STA_MODE] = {CDS_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, + [CDS_SAP_MODE] = {CDS_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, + [CDS_P2P_CLIENT_MODE] = {CDS_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, + [CDS_P2P_GO_MODE] = {CDS_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_P2P_GO_P2P_CLI_MCC_24_5_2x2] = { + [CDS_STA_MODE] = {CDS_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, + [CDS_SAP_MODE] = {CDS_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, + [CDS_P2P_CLIENT_MODE] = {CDS_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, + [CDS_P2P_GO_MODE] = {CDS_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, + [CDS_IBSS_MODE] = { + CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, + + [CDS_P2P_GO_P2P_CLI_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} }, + + [CDS_P2P_GO_SAP_SCC_24_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} }, + + [CDS_P2P_GO_SAP_SCC_24_2x2] = { + [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} }, + + [CDS_P2P_GO_SAP_MCC_24_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} }, + + [CDS_P2P_GO_SAP_MCC_24_2x2] = { + [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} }, + + [CDS_P2P_GO_SAP_SCC_5_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} }, + + [CDS_P2P_GO_SAP_SCC_5_2x2] = { + [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} }, + + [CDS_P2P_GO_SAP_MCC_5_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} }, + + [CDS_P2P_GO_SAP_MCC_5_2x2] = { + [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} }, + + [CDS_P2P_GO_SAP_MCC_24_5_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} }, + + [CDS_P2P_GO_SAP_MCC_24_5_2x2] = { + [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} }, + + [CDS_P2P_GO_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} }, + + + [CDS_P2P_CLI_SAP_SCC_24_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} }, + + [CDS_P2P_CLI_SAP_SCC_24_2x2] = { + [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} }, + + [CDS_P2P_CLI_SAP_MCC_24_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} }, + + [CDS_P2P_CLI_SAP_MCC_24_2x2] = { + [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} }, + + [CDS_P2P_CLI_SAP_SCC_5_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} }, + + [CDS_P2P_CLI_SAP_SCC_5_2x2] = { + [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} }, + + [CDS_P2P_CLI_SAP_MCC_5_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} }, + + [CDS_P2P_CLI_SAP_MCC_5_2x2] = { + [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} }, + + [CDS_P2P_CLI_SAP_MCC_24_5_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} }, + + [CDS_P2P_CLI_SAP_MCC_24_5_2x2] = { + [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} }, + + [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} }, + +}; + +#endif diff --git a/core/cds/inc/cds_reg_service.h b/core/cds/inc/cds_reg_service.h index 4fc7a5223b4a..81565193fb88 100644 --- a/core/cds/inc/cds_reg_service.h +++ b/core/cds/inc/cds_reg_service.h @@ -40,6 +40,7 @@ #define CDS_COUNTRY_CODE_LEN 2 #define CDS_MAC_ADDRESS_LEN 6 +#define CDS_SBS_SEPARATION_THRESHOLD 100 #define CDS_CHANNEL_STATE(chan_enum) reg_channels[chan_enum].state #define CDS_CHANNEL_NUM(chan_enum) chan_mapping[chan_enum].chan_num @@ -75,6 +76,16 @@ #define CDS_MIN_11P_CHANNEL chan_mapping[MIN_59GHZ_CHANNEL].chan_num +/* assumption is the 2 channels passed are 5G channels */ +#define CDS_IS_CHANNEL_VALID_5G_SBS(curchan, newchan) \ + (curchan > newchan ? \ + CDS_CHANNEL_FREQ(cds_get_channel_enum(curchan)) \ + - CDS_CHANNEL_FREQ(cds_get_channel_enum(newchan)) \ + > CDS_SBS_SEPARATION_THRESHOLD : \ + CDS_CHANNEL_FREQ(cds_get_channel_enum(newchan)) \ + - CDS_CHANNEL_FREQ(cds_get_channel_enum(curchan)) \ + > CDS_SBS_SEPARATION_THRESHOLD) + typedef enum { REGDOMAIN_FCC, REGDOMAIN_ETSI, @@ -376,6 +387,8 @@ QDF_STATUS cds_get_channel_list_with_power(struct channel_power *base_channels, uint8_t *num_base_channels); +enum channel_enum cds_get_channel_enum(uint32_t chan_num); + enum channel_state cds_get_channel_state(uint32_t chan_num); QDF_STATUS cds_get_dfs_region(enum dfs_region *dfs_reg); QDF_STATUS cds_put_dfs_region(enum dfs_region dfs_reg); diff --git a/core/cds/src/cds_concurrency.c b/core/cds/src/cds_concurrency.c index 6178e665b32f..5030ecfca1c3 100644 --- a/core/cds/src/cds_concurrency.c +++ b/core/cds/src/cds_concurrency.c @@ -43,6 +43,9 @@ #include "wlan_hdd_trace.h" #include "wlan_hdd_hostapd.h" #include "cds_concurrency.h" +#include "cds_concurrency_1x1_dbs.h" +#include "cds_concurrency_2x2_dbs.h" +#include "cds_concurrency_no_dbs.h" #include "qdf_types.h" #include "qdf_trace.h" @@ -90,1866 +93,15 @@ first_connection_pcl_table[CDS_MAX_NUM_OF_MODE] [CDS_IBSS_MODE] = {CDS_NONE, CDS_NONE, CDS_NONE}, }; -/** - * second_connection_pcl_dbs_table - table which provides PCL - * for the 2nd connection, when we have a connection already in - * the system (with DBS supported by HW) - */ -static const enum cds_pcl_type -second_connection_pcl_dbs_table[CDS_MAX_ONE_CONNECTION_MODE] - [CDS_MAX_NUM_OF_MODE][CDS_MAX_CONC_PRIORITY_MODE] = { - [CDS_STA_24_1x1] = { - [CDS_STA_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, - [CDS_SAP_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, - [CDS_P2P_CLIENT_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, - [CDS_P2P_GO_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, - [CDS_IBSS_MODE] = {CDS_5G, CDS_5G, CDS_5G } }, - - [CDS_STA_24_2x2] = { - [CDS_STA_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, - [CDS_SAP_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, - [CDS_P2P_CLIENT_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, - [CDS_P2P_GO_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, - [CDS_IBSS_MODE] = {CDS_5G, CDS_5G, CDS_5G } }, - - [CDS_STA_5_1x1] = { - [CDS_STA_MODE] = {CDS_SCC_CH_24G, CDS_24G_SCC_CH, CDS_SCC_CH_24G}, - [CDS_SAP_MODE] = {CDS_SCC_CH_24G, CDS_24G_SCC_CH, CDS_SCC_CH_24G}, - [CDS_P2P_CLIENT_MODE] = { - CDS_SCC_CH_24G, CDS_24G_SCC_CH, CDS_SCC_CH_24G}, - [CDS_P2P_GO_MODE] = {CDS_SCC_CH_24G, CDS_24G_SCC_CH, CDS_SCC_CH_24G}, - [CDS_IBSS_MODE] = {CDS_24G, CDS_24G, CDS_24G } }, - - [CDS_STA_5_2x2] = { - [CDS_STA_MODE] = {CDS_SCC_CH_24G, CDS_24G_SCC_CH, CDS_SCC_CH_24G}, - [CDS_SAP_MODE] = {CDS_SCC_CH_24G, CDS_24G_SCC_CH, CDS_SCC_CH_24G}, - [CDS_P2P_CLIENT_MODE] = { - CDS_SCC_CH_24G, CDS_24G_SCC_CH, CDS_SCC_CH_24G}, - [CDS_P2P_GO_MODE] = {CDS_SCC_CH_24G, CDS_24G_SCC_CH, CDS_SCC_CH_24G}, - [CDS_IBSS_MODE] = {CDS_24G, CDS_24G, CDS_24G } }, - - [CDS_P2P_CLI_24_1x1] = { - [CDS_STA_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, - [CDS_SAP_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, - [CDS_P2P_CLIENT_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, - [CDS_P2P_GO_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, - [CDS_IBSS_MODE] = { - CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, - - [CDS_P2P_CLI_24_2x2] = { - [CDS_STA_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, - [CDS_SAP_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, - [CDS_P2P_CLIENT_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, - [CDS_P2P_GO_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, - [CDS_IBSS_MODE] = { - CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, - - [CDS_P2P_CLI_5_1x1] = { - [CDS_STA_MODE] = {CDS_SCC_CH_24G, CDS_24G_SCC_CH, CDS_SCC_CH_24G}, - [CDS_SAP_MODE] = {CDS_SCC_CH_24G, CDS_24G_SCC_CH, CDS_SCC_CH_24G}, - [CDS_P2P_CLIENT_MODE] = { - CDS_SCC_CH_24G, CDS_24G_SCC_CH, CDS_SCC_CH_24G}, - [CDS_P2P_GO_MODE] = {CDS_SCC_CH_24G, CDS_24G_SCC_CH, CDS_SCC_CH_24G}, - [CDS_IBSS_MODE] = { - CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, - - [CDS_P2P_CLI_5_2x2] = { - [CDS_STA_MODE] = {CDS_SCC_CH_24G, CDS_24G_SCC_CH, CDS_SCC_CH_24G}, - [CDS_SAP_MODE] = {CDS_SCC_CH_24G, CDS_24G_SCC_CH, CDS_SCC_CH_24G}, - [CDS_P2P_CLIENT_MODE] = { - CDS_SCC_CH_24G, CDS_24G_SCC_CH, CDS_SCC_CH_24G}, - [CDS_P2P_GO_MODE] = {CDS_SCC_CH_24G, CDS_24G_SCC_CH, CDS_SCC_CH_24G}, - [CDS_IBSS_MODE] = { - CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, - - [CDS_P2P_GO_24_1x1] = { - [CDS_STA_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, - [CDS_SAP_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, - [CDS_P2P_CLIENT_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, - [CDS_P2P_GO_MODE] = {CDS_5G, CDS_5G, CDS_5G}, - [CDS_IBSS_MODE] = { - CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, - - [CDS_P2P_GO_24_2x2] = { - [CDS_STA_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, - [CDS_SAP_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, - [CDS_P2P_CLIENT_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, - [CDS_P2P_GO_MODE] = {CDS_5G, CDS_5G, CDS_5G}, - [CDS_IBSS_MODE] = { - CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, - - [CDS_P2P_GO_5_1x1] = { - [CDS_STA_MODE] = {CDS_SCC_CH_24G, CDS_SCC_CH_24G, CDS_SCC_CH_24G}, - [CDS_SAP_MODE] = {CDS_SCC_CH_24G, CDS_SCC_CH_24G, CDS_SCC_CH_24G}, - [CDS_P2P_CLIENT_MODE] = { - CDS_SCC_CH_24G, CDS_24G_SCC_CH, CDS_SCC_CH_24G}, - [CDS_P2P_GO_MODE] = {CDS_24G, CDS_24G, CDS_24G}, - [CDS_IBSS_MODE] = { - CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, - - [CDS_P2P_GO_5_2x2] = { - [CDS_STA_MODE] = {CDS_SCC_CH_24G, CDS_SCC_CH_24G, CDS_SCC_CH_24G}, - [CDS_SAP_MODE] = {CDS_SCC_CH_24G, CDS_SCC_CH_24G, CDS_SCC_CH_24G}, - [CDS_P2P_CLIENT_MODE] = { - CDS_SCC_CH_24G, CDS_24G_SCC_CH, CDS_SCC_CH_24G}, - [CDS_P2P_GO_MODE] = {CDS_24G, CDS_24G, CDS_24G}, - [CDS_IBSS_MODE] = { - CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, - - [CDS_SAP_24_1x1] = { - [CDS_STA_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, - [CDS_SAP_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, - [CDS_P2P_CLIENT_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, - [CDS_P2P_GO_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, - [CDS_IBSS_MODE] = { - CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, - - [CDS_SAP_24_2x2] = { - [CDS_STA_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, - [CDS_SAP_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, - [CDS_P2P_CLIENT_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, - [CDS_P2P_GO_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, - [CDS_IBSS_MODE] = { - CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, - - [CDS_SAP_5_1x1] = { - [CDS_STA_MODE] = {CDS_SCC_CH_24G, CDS_SCC_CH_24G, CDS_SCC_CH_24G}, - [CDS_SAP_MODE] = {CDS_SCC_CH_24G, CDS_SCC_CH_24G, CDS_SCC_CH_24G}, - [CDS_P2P_CLIENT_MODE] = { - CDS_SCC_CH_24G, CDS_24G_SCC_CH, CDS_SCC_CH_24G}, - [CDS_P2P_GO_MODE] = {CDS_SCC_CH_24G, CDS_SCC_CH_24G, CDS_SCC_CH_24G}, - [CDS_IBSS_MODE] = { - CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, - - [CDS_SAP_5_2x2] = { - [CDS_STA_MODE] = {CDS_SCC_CH_24G, CDS_SCC_CH_24G, CDS_SCC_CH_24G}, - [CDS_SAP_MODE] = {CDS_SCC_CH_24G, CDS_SCC_CH_24G, CDS_SCC_CH_24G}, - [CDS_P2P_CLIENT_MODE] = { - CDS_SCC_CH_24G, CDS_24G_SCC_CH, CDS_SCC_CH_24G}, - [CDS_P2P_GO_MODE] = {CDS_SCC_CH_24G, CDS_SCC_CH_24G, CDS_SCC_CH_24G}, - [CDS_IBSS_MODE] = { - CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, - - [CDS_IBSS_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_IBSS_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_IBSS_5_1x1] = { - [CDS_STA_MODE] = {CDS_24G_SCC_CH, CDS_24G_SCC_CH, CDS_24G_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_IBSS_5_2x2] = { - [CDS_STA_MODE] = {CDS_24G_SCC_CH, CDS_24G_SCC_CH, CDS_24G_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} }, -}; - -/** - * second_connection_pcl_nodbs_table - table which provides PCL - * for the 2nd connection, when we have a connection already in - * the system (with DBS not supported by HW) - */ -static const enum cds_pcl_type -second_connection_pcl_nodbs_table[CDS_MAX_ONE_CONNECTION_MODE] - [CDS_MAX_NUM_OF_MODE][CDS_MAX_CONC_PRIORITY_MODE] = { - [CDS_STA_24_1x1] = { - [CDS_STA_MODE] = {CDS_5G, CDS_SCC_CH, CDS_SCC_CH}, - [CDS_SAP_MODE] = {CDS_5G, CDS_SCC_CH, CDS_SCC_CH_5G}, - [CDS_P2P_CLIENT_MODE] = {CDS_5G, CDS_SCC_CH, CDS_SCC_CH_5G}, - [CDS_P2P_GO_MODE] = {CDS_5G, CDS_SCC_CH, CDS_SCC_CH_5G}, - [CDS_IBSS_MODE] = { - CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, - - [CDS_STA_24_2x2] = { - [CDS_STA_MODE] = {CDS_5G, CDS_SCC_CH, CDS_SCC_CH}, - [CDS_SAP_MODE] = {CDS_5G, CDS_SCC_CH, CDS_SCC_CH_5G}, - [CDS_P2P_CLIENT_MODE] = {CDS_5G, CDS_SCC_CH, CDS_SCC_CH_5G}, - [CDS_P2P_GO_MODE] = {CDS_5G, CDS_SCC_CH, CDS_SCC_CH_5G}, - [CDS_IBSS_MODE] = { - CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, - - [CDS_STA_5_1x1] = { - [CDS_STA_MODE] = {CDS_SCC_CH_5G, CDS_SCC_CH, CDS_SCC_CH_5G}, - [CDS_SAP_MODE] = {CDS_SCC_CH_5G, CDS_SCC_CH, CDS_SCC_CH}, - [CDS_P2P_CLIENT_MODE] = {CDS_SCC_CH_5G, CDS_SCC_CH, CDS_SCC_CH}, - [CDS_P2P_GO_MODE] = {CDS_SCC_CH_5G, CDS_SCC_CH, CDS_SCC_CH}, - [CDS_IBSS_MODE] = { - CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, - - [CDS_STA_5_2x2] = { - [CDS_STA_MODE] = {CDS_SCC_CH_5G, CDS_SCC_CH, CDS_SCC_CH_5G}, - [CDS_SAP_MODE] = {CDS_SCC_CH_5G, CDS_SCC_CH, CDS_SCC_CH}, - [CDS_P2P_CLIENT_MODE] = {CDS_SCC_CH_5G, CDS_SCC_CH, CDS_SCC_CH}, - [CDS_P2P_GO_MODE] = {CDS_SCC_CH_5G, CDS_SCC_CH, CDS_SCC_CH}, - [CDS_IBSS_MODE] = { - CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, - - [CDS_P2P_CLI_24_1x1] = { - [CDS_STA_MODE] = {CDS_5G, CDS_SCC_CH, CDS_SCC_CH}, - [CDS_SAP_MODE] = {CDS_5G, CDS_SCC_CH, CDS_SCC_CH_5G}, - [CDS_P2P_CLIENT_MODE] = {CDS_5G, CDS_SCC_CH, CDS_SCC_CH_5G}, - [CDS_P2P_GO_MODE] = {CDS_5G, CDS_SCC_CH, CDS_SCC_CH_5G}, - [CDS_IBSS_MODE] = { - CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, - - [CDS_P2P_CLI_24_2x2] = { - [CDS_STA_MODE] = {CDS_5G, CDS_SCC_CH, CDS_SCC_CH}, - [CDS_SAP_MODE] = {CDS_5G, CDS_SCC_CH, CDS_SCC_CH_5G}, - [CDS_P2P_CLIENT_MODE] = {CDS_5G, CDS_SCC_CH, CDS_SCC_CH_5G}, - [CDS_P2P_GO_MODE] = {CDS_5G, CDS_SCC_CH, CDS_SCC_CH_5G}, - [CDS_IBSS_MODE] = { - CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, - - [CDS_P2P_CLI_5_1x1] = { - [CDS_STA_MODE] = {CDS_SCC_CH_5G, CDS_SCC_CH, CDS_SCC_CH_5G}, - [CDS_SAP_MODE] = {CDS_SCC_CH_5G, CDS_SCC_CH, CDS_SCC_CH}, - [CDS_P2P_CLIENT_MODE] = {CDS_SCC_CH_5G, CDS_SCC_CH, CDS_SCC_CH}, - [CDS_P2P_GO_MODE] = {CDS_SCC_CH_5G, CDS_SCC_CH, CDS_SCC_CH}, - [CDS_IBSS_MODE] = { - CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, - - [CDS_P2P_CLI_5_2x2] = { - [CDS_STA_MODE] = {CDS_SCC_CH_5G, CDS_SCC_CH, CDS_SCC_CH_5G}, - [CDS_SAP_MODE] = {CDS_SCC_CH_5G, CDS_SCC_CH, CDS_SCC_CH}, - [CDS_P2P_CLIENT_MODE] = {CDS_SCC_CH_5G, CDS_SCC_CH, CDS_SCC_CH}, - [CDS_P2P_GO_MODE] = {CDS_SCC_CH_5G, CDS_SCC_CH, CDS_SCC_CH}, - [CDS_IBSS_MODE] = { - CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, - - [CDS_P2P_GO_24_1x1] = { - [CDS_STA_MODE] = {CDS_SCC_CH, CDS_SCC_CH, CDS_SCC_CH}, - [CDS_SAP_MODE] = {CDS_SCC_CH, CDS_SCC_CH, CDS_SCC_CH}, - [CDS_P2P_CLIENT_MODE] = {CDS_SCC_CH, CDS_SCC_CH, CDS_SCC_CH}, - [CDS_P2P_GO_MODE] = {CDS_SCC_CH, CDS_SCC_CH, CDS_SCC_CH}, - [CDS_IBSS_MODE] = { - CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, - - [CDS_P2P_GO_24_2x2] = { - [CDS_STA_MODE] = {CDS_SCC_CH, CDS_SCC_CH, CDS_SCC_CH}, - [CDS_SAP_MODE] = {CDS_SCC_CH, CDS_SCC_CH, CDS_SCC_CH}, - [CDS_P2P_CLIENT_MODE] = {CDS_SCC_CH, CDS_SCC_CH, CDS_SCC_CH}, - [CDS_P2P_GO_MODE] = {CDS_SCC_CH, CDS_SCC_CH, CDS_SCC_CH}, - [CDS_IBSS_MODE] = { - CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, - - [CDS_P2P_GO_5_1x1] = { - [CDS_STA_MODE] = {CDS_SCC_CH_5G, CDS_SCC_CH, CDS_SCC_CH}, - [CDS_SAP_MODE] = {CDS_SCC_CH, CDS_SCC_CH, CDS_SCC_CH}, - [CDS_P2P_CLIENT_MODE] = {CDS_SCC_CH, CDS_SCC_CH, CDS_SCC_CH}, - [CDS_P2P_GO_MODE] = {CDS_SCC_CH, CDS_SCC_CH, CDS_SCC_CH}, - [CDS_IBSS_MODE] = { - CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, - - [CDS_P2P_GO_5_2x2] = { - [CDS_STA_MODE] = {CDS_SCC_CH_5G, CDS_SCC_CH, CDS_SCC_CH}, - [CDS_SAP_MODE] = {CDS_SCC_CH, CDS_SCC_CH, CDS_SCC_CH}, - [CDS_P2P_CLIENT_MODE] = {CDS_SCC_CH, CDS_SCC_CH, CDS_SCC_CH}, - [CDS_P2P_GO_MODE] = {CDS_SCC_CH, CDS_SCC_CH, CDS_SCC_CH}, - [CDS_IBSS_MODE] = { - CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, - - [CDS_SAP_24_1x1] = { - [CDS_STA_MODE] = {CDS_SCC_CH, CDS_SCC_CH, CDS_SCC_CH}, - [CDS_SAP_MODE] = {CDS_SCC_CH, CDS_SCC_CH, CDS_SCC_CH}, - [CDS_P2P_CLIENT_MODE] = {CDS_SCC_CH, CDS_SCC_CH, CDS_SCC_CH}, - [CDS_P2P_GO_MODE] = {CDS_SCC_CH, CDS_SCC_CH, CDS_SCC_CH}, - [CDS_IBSS_MODE] = { - CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, - - [CDS_SAP_24_2x2] = { - [CDS_STA_MODE] = {CDS_SCC_CH, CDS_SCC_CH, CDS_SCC_CH}, - [CDS_SAP_MODE] = {CDS_SCC_CH, CDS_SCC_CH, CDS_SCC_CH}, - [CDS_P2P_CLIENT_MODE] = {CDS_SCC_CH, CDS_SCC_CH, CDS_SCC_CH}, - [CDS_P2P_GO_MODE] = {CDS_SCC_CH, CDS_SCC_CH, CDS_SCC_CH}, - [CDS_IBSS_MODE] = { - CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, - - [CDS_SAP_5_1x1] = { - [CDS_STA_MODE] = {CDS_SCC_CH_5G, CDS_SCC_CH, CDS_SCC_CH}, - [CDS_SAP_MODE] = {CDS_SCC_CH, CDS_SCC_CH, CDS_SCC_CH}, - [CDS_P2P_CLIENT_MODE] = {CDS_SCC_CH, CDS_SCC_CH, CDS_SCC_CH}, - [CDS_P2P_GO_MODE] = {CDS_SCC_CH, CDS_SCC_CH, CDS_SCC_CH}, - [CDS_IBSS_MODE] = { - CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, - - [CDS_SAP_5_2x2] = { - [CDS_STA_MODE] = {CDS_SCC_CH_5G, CDS_SCC_CH, CDS_SCC_CH}, - [CDS_SAP_MODE] = {CDS_SCC_CH, CDS_SCC_CH, CDS_SCC_CH}, - [CDS_P2P_CLIENT_MODE] = {CDS_SCC_CH, CDS_SCC_CH, CDS_SCC_CH}, - [CDS_P2P_GO_MODE] = {CDS_SCC_CH, CDS_SCC_CH, CDS_SCC_CH}, - [CDS_IBSS_MODE] = { - CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, - - [CDS_IBSS_24_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} }, - - [CDS_IBSS_24_2x2] = { - [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} }, - - [CDS_IBSS_5_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} }, - - [CDS_IBSS_5_2x2] = { - [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} }, -}; - -/** - * third_connection_pcl_dbs_table - table which provides PCL for - * the 3rd connection, when we have two connections already in - * the system (with DBS supported by HW) - */ -static const enum cds_pcl_type -third_connection_pcl_dbs_table[CDS_MAX_TWO_CONNECTION_MODE] - [CDS_MAX_NUM_OF_MODE][CDS_MAX_CONC_PRIORITY_MODE] = { - [CDS_STA_SAP_SCC_24_1x1] = { - [CDS_STA_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, - [CDS_SAP_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, - [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_STA_SAP_SCC_24_2x2] = { - [CDS_STA_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, - [CDS_SAP_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, - [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_STA_SAP_MCC_24_1x1] = { - [CDS_STA_MODE] = {CDS_5G_MCC_CH, CDS_5G, CDS_5G_MCC_CH}, - [CDS_SAP_MODE] = {CDS_5G_MCC_CH, CDS_5G, CDS_5G_MCC_CH}, - [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_STA_SAP_MCC_24_2x2] = { - [CDS_STA_MODE] = {CDS_5G_MCC_CH, CDS_5G, CDS_5G_MCC_CH}, - [CDS_SAP_MODE] = {CDS_5G_MCC_CH, CDS_5G, CDS_5G_MCC_CH}, - [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_STA_SAP_SCC_5_1x1] = { - [CDS_STA_MODE] = {CDS_SCC_CH_24G, CDS_24G_SCC_CH, CDS_SCC_CH_24G}, - [CDS_SAP_MODE] = {CDS_SCC_CH_24G, CDS_24G_SCC_CH, CDS_SCC_CH_24G}, - [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_STA_SAP_SCC_5_2x2] = { - [CDS_STA_MODE] = {CDS_SCC_CH_24G, CDS_24G_SCC_CH, CDS_SCC_CH_24G}, - [CDS_SAP_MODE] = {CDS_SCC_CH_24G, CDS_24G_SCC_CH, CDS_SCC_CH_24G}, - [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_STA_SAP_MCC_5_1x1] = { - [CDS_STA_MODE] = {CDS_MCC_CH_24G, CDS_24G, CDS_24G}, - [CDS_SAP_MODE] = {CDS_24G, CDS_24G, CDS_24G}, - [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_STA_SAP_MCC_5_2x2] = { - [CDS_STA_MODE] = {CDS_MCC_CH_24G, CDS_24G, CDS_24G}, - [CDS_SAP_MODE] = {CDS_24G, CDS_24G, CDS_24G}, - [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_STA_SAP_MCC_24_5_1x1] = { - [CDS_STA_MODE] = {CDS_MCC_CH_5G, CDS_5G, CDS_5G}, - [CDS_SAP_MODE] = {CDS_24G, CDS_24G, CDS_24G}, - [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_STA_SAP_MCC_24_5_2x2] = { - [CDS_STA_MODE] = {CDS_MCC_CH_5G, CDS_5G, CDS_5G}, - [CDS_SAP_MODE] = {CDS_24G, CDS_24G, CDS_24G}, - [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_STA_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_SCC_ON_5_SCC_ON_24_5G, CDS_NONE, CDS_SCC_ON_5_SCC_ON_24}, - [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_STA_P2P_GO_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_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, - [CDS_P2P_GO_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, - [CDS_IBSS_MODE] = { - CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, - - [CDS_STA_P2P_GO_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_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, - [CDS_P2P_GO_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, - [CDS_IBSS_MODE] = { - CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, - - [CDS_STA_P2P_GO_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_5G_MCC_CH, CDS_5G, CDS_5G_MCC_CH}, - [CDS_P2P_GO_MODE] = {CDS_5G_MCC_CH, CDS_5G, CDS_5G_MCC_CH}, - [CDS_IBSS_MODE] = { - CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, - - [CDS_STA_P2P_GO_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_5G_MCC_CH, CDS_5G, CDS_5G_MCC_CH}, - [CDS_P2P_GO_MODE] = {CDS_5G_MCC_CH, CDS_5G, CDS_5G_MCC_CH}, - [CDS_IBSS_MODE] = { - CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, - - [CDS_STA_P2P_GO_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_SCC_CH_24G, CDS_24G_SCC_CH, CDS_SCC_CH_24G}, - [CDS_P2P_GO_MODE] = {CDS_SCC_CH_24G, CDS_24G_SCC_CH, CDS_SCC_CH_24G}, - [CDS_IBSS_MODE] = { - CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, - - [CDS_STA_P2P_GO_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_SCC_CH_24G, CDS_24G_SCC_CH, CDS_SCC_CH_24G}, - [CDS_P2P_GO_MODE] = {CDS_SCC_CH_24G, CDS_24G_SCC_CH, CDS_SCC_CH_24G}, - [CDS_IBSS_MODE] = { - CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, - - [CDS_STA_P2P_GO_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_MCC_CH_24G, CDS_24G, CDS_24G}, - [CDS_P2P_GO_MODE] = {CDS_MCC_CH_24G, CDS_24G, CDS_24G}, - [CDS_IBSS_MODE] = { - CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, - - [CDS_STA_P2P_GO_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_MCC_CH_24G, CDS_24G, CDS_24G}, - [CDS_P2P_GO_MODE] = {CDS_MCC_CH_24G, CDS_24G, CDS_24G}, - [CDS_IBSS_MODE] = { - CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, - - [CDS_STA_P2P_GO_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_MCC_CH_24G, CDS_24G, CDS_24G}, - [CDS_P2P_GO_MODE] = {CDS_MCC_CH_24G, CDS_24G, CDS_24G}, - [CDS_IBSS_MODE] = { - CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, - - [CDS_STA_P2P_GO_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_MCC_CH_24G, CDS_24G, CDS_24G}, - [CDS_P2P_GO_MODE] = {CDS_MCC_CH_24G, CDS_24G, CDS_24G}, - [CDS_IBSS_MODE] = { - CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, - - [CDS_STA_P2P_GO_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_SCC_ON_5_SCC_ON_24_5G, CDS_NONE, CDS_SCC_ON_5_SCC_ON_24}, - [CDS_P2P_GO_MODE] = { - CDS_SCC_ON_5_SCC_ON_24_5G, CDS_NONE, CDS_SCC_ON_5_SCC_ON_24}, - [CDS_IBSS_MODE] = { - CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, - - [CDS_STA_P2P_CLI_SCC_24_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_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, - [CDS_P2P_GO_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, - [CDS_IBSS_MODE] = { - CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, - - [CDS_STA_P2P_CLI_SCC_24_2x2] = { - [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_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, - [CDS_P2P_GO_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, - [CDS_IBSS_MODE] = { - CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, - - [CDS_STA_P2P_CLI_MCC_24_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_5G_MCC_CH, CDS_5G, CDS_5G_MCC_CH}, - [CDS_P2P_GO_MODE] = {CDS_5G_MCC_CH, CDS_5G, CDS_5G_MCC_CH}, - [CDS_IBSS_MODE] = { - CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, - - [CDS_STA_P2P_CLI_MCC_24_2x2] = { - [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_5G_MCC_CH, CDS_5G, CDS_5G_MCC_CH}, - [CDS_P2P_GO_MODE] = {CDS_5G_MCC_CH, CDS_5G, CDS_5G_MCC_CH}, - [CDS_IBSS_MODE] = { - CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, - - [CDS_STA_P2P_CLI_SCC_5_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_SCC_CH_24G, CDS_24G_SCC_CH, CDS_SCC_CH_24G}, - [CDS_P2P_GO_MODE] = {CDS_SCC_CH_24G, CDS_24G_SCC_CH, CDS_SCC_CH_24G}, - [CDS_IBSS_MODE] = { - CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, - - [CDS_STA_P2P_CLI_SCC_5_2x2] = { - [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_SCC_CH_24G, CDS_24G_SCC_CH, CDS_SCC_CH_24G}, - [CDS_P2P_GO_MODE] = {CDS_SCC_CH_24G, CDS_24G_SCC_CH, CDS_SCC_CH_24G}, - [CDS_IBSS_MODE] = { - CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, - - [CDS_STA_P2P_CLI_MCC_5_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_MCC_CH_24G, CDS_24G, CDS_MCC_CH_24G}, - [CDS_P2P_GO_MODE] = {CDS_MCC_CH_24G, CDS_24G, CDS_MCC_CH_24G}, - [CDS_IBSS_MODE] = { - CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, - - [CDS_STA_P2P_CLI_MCC_5_2x2] = { - [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_MCC_CH_24G, CDS_24G, CDS_MCC_CH_24G}, - [CDS_P2P_GO_MODE] = {CDS_MCC_CH_24G, CDS_24G, CDS_MCC_CH_24G}, - [CDS_IBSS_MODE] = {CDS_NONE, CDS_NONE, CDS_NONE} }, - - [CDS_STA_P2P_CLI_MCC_24_5_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_MCC_CH_24G, CDS_24G, CDS_MCC_CH_24G}, - [CDS_P2P_GO_MODE] = {CDS_MCC_CH_24G, CDS_24G, CDS_MCC_CH_24G}, - [CDS_IBSS_MODE] = { - CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, - - [CDS_STA_P2P_CLI_MCC_24_5_2x2] = { - [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_MCC_CH_24G, CDS_24G, CDS_MCC_CH_24G}, - [CDS_P2P_GO_MODE] = {CDS_MCC_CH_24G, CDS_24G, CDS_MCC_CH_24G}, - [CDS_IBSS_MODE] = { - CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, - - [CDS_STA_P2P_CLI_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_SCC_ON_5_SCC_ON_24_5G, CDS_NONE, CDS_SCC_ON_5_SCC_ON_24}, - [CDS_P2P_GO_MODE] = { - CDS_SCC_ON_5_SCC_ON_24_5G, CDS_NONE, CDS_SCC_ON_5_SCC_ON_24}, - [CDS_IBSS_MODE] = { - CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, - - [CDS_P2P_GO_P2P_CLI_SCC_24_1x1] = { - [CDS_STA_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, - [CDS_SAP_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, - [CDS_P2P_CLIENT_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, - [CDS_P2P_GO_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, - [CDS_IBSS_MODE] = { - CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, - - [CDS_P2P_GO_P2P_CLI_SCC_24_2x2] = { - [CDS_STA_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, - [CDS_SAP_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, - [CDS_P2P_CLIENT_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, - [CDS_P2P_GO_MODE] = {CDS_5G_SCC_CH, CDS_5G_SCC_CH, CDS_5G_SCC_CH}, - [CDS_IBSS_MODE] = { - CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, - - [CDS_P2P_GO_P2P_CLI_MCC_24_1x1] = { - [CDS_STA_MODE] = {CDS_5G_MCC_CH, CDS_5G, CDS_5G_MCC_CH}, - [CDS_SAP_MODE] = {CDS_5G_MCC_CH, CDS_5G, CDS_5G_MCC_CH}, - [CDS_P2P_CLIENT_MODE] = {CDS_5G_MCC_CH, CDS_5G, CDS_5G_MCC_CH}, - [CDS_P2P_GO_MODE] = {CDS_5G_MCC_CH, CDS_5G, CDS_5G_MCC_CH}, - [CDS_IBSS_MODE] = { - CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, - - [CDS_P2P_GO_P2P_CLI_MCC_24_2x2] = { - [CDS_STA_MODE] = {CDS_5G_MCC_CH, CDS_5G, CDS_5G_MCC_CH}, - [CDS_SAP_MODE] = {CDS_5G_MCC_CH, CDS_5G, CDS_5G_MCC_CH}, - [CDS_P2P_CLIENT_MODE] = {CDS_5G_MCC_CH, CDS_5G, CDS_5G_MCC_CH}, - [CDS_P2P_GO_MODE] = {CDS_5G_MCC_CH, CDS_5G, CDS_5G_MCC_CH}, - [CDS_IBSS_MODE] = { - CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, - - [CDS_P2P_GO_P2P_CLI_SCC_5_1x1] = { - [CDS_STA_MODE] = {CDS_SCC_CH_24G, CDS_24G_SCC_CH, CDS_SCC_CH_24G}, - [CDS_SAP_MODE] = {CDS_SCC_CH_24G, CDS_24G_SCC_CH, CDS_SCC_CH_24G}, - [CDS_P2P_CLIENT_MODE] = { - CDS_SCC_CH_24G, CDS_24G_SCC_CH, CDS_SCC_CH_24G}, - [CDS_P2P_GO_MODE] = {CDS_SCC_CH_24G, CDS_24G_SCC_CH, CDS_SCC_CH_24G}, - [CDS_IBSS_MODE] = { - CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, - - [CDS_P2P_GO_P2P_CLI_SCC_5_2x2] = { - [CDS_STA_MODE] = {CDS_SCC_CH_24G, CDS_24G_SCC_CH, CDS_SCC_CH_24G}, - [CDS_SAP_MODE] = {CDS_SCC_CH_24G, CDS_24G_SCC_CH, CDS_SCC_CH_24G}, - [CDS_P2P_CLIENT_MODE] = { - CDS_SCC_CH_24G, CDS_24G_SCC_CH, CDS_SCC_CH_24G}, - [CDS_P2P_GO_MODE] = {CDS_SCC_CH_24G, CDS_24G_SCC_CH, CDS_SCC_CH_24G}, - [CDS_IBSS_MODE] = { - CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, - - [CDS_P2P_GO_P2P_CLI_MCC_5_1x1] = { - [CDS_STA_MODE] = {CDS_MCC_CH_24G, CDS_24G, CDS_24G}, - [CDS_SAP_MODE] = {CDS_24G, CDS_24G, CDS_24G}, - [CDS_P2P_CLIENT_MODE] = {CDS_MCC_CH_24G, CDS_24G, CDS_24G}, - [CDS_P2P_GO_MODE] = {CDS_MCC_CH_24G, CDS_24G, CDS_24G}, - [CDS_IBSS_MODE] = { - CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, - - [CDS_P2P_GO_P2P_CLI_MCC_5_2x2] = { - [CDS_STA_MODE] = {CDS_MCC_CH_24G, CDS_24G, CDS_24G}, - [CDS_SAP_MODE] = {CDS_24G, CDS_24G, CDS_24G}, - [CDS_P2P_CLIENT_MODE] = {CDS_MCC_CH_24G, CDS_24G, CDS_24G}, - [CDS_P2P_GO_MODE] = {CDS_MCC_CH_24G, CDS_24G, CDS_24G}, - [CDS_IBSS_MODE] = { - CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, - - [CDS_P2P_GO_P2P_CLI_MCC_24_5_1x1] = { - [CDS_STA_MODE] = {CDS_MCC_CH_5G, CDS_5G, CDS_5G}, - [CDS_SAP_MODE] = {CDS_24G, CDS_24G, CDS_24G}, - [CDS_P2P_CLIENT_MODE] = {CDS_MCC_CH_24G, CDS_24G, CDS_24G}, - [CDS_P2P_GO_MODE] = {CDS_MCC_CH_24G, CDS_24G, CDS_24G}, - [CDS_IBSS_MODE] = { - CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, - - [CDS_P2P_GO_P2P_CLI_MCC_24_5_2x2] = { - [CDS_STA_MODE] = {CDS_MCC_CH_5G, CDS_5G, CDS_5G}, - [CDS_SAP_MODE] = {CDS_24G, CDS_24G, CDS_24G}, - [CDS_P2P_CLIENT_MODE] = {CDS_MCC_CH_24G, CDS_24G, CDS_24G}, - [CDS_P2P_GO_MODE] = {CDS_MCC_CH_24G, CDS_24G, CDS_24G}, - [CDS_IBSS_MODE] = { - CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, - - [CDS_P2P_GO_P2P_CLI_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_SCC_ON_5_SCC_ON_24_5G, CDS_NONE, CDS_SCC_ON_5_SCC_ON_24}, - [CDS_P2P_CLIENT_MODE] = { - CDS_SCC_ON_5_SCC_ON_24_5G, CDS_NONE, CDS_SCC_ON_5_SCC_ON_24}, - [CDS_P2P_GO_MODE] = { - CDS_SCC_ON_5_SCC_ON_24_5G, CDS_NONE, CDS_SCC_ON_5_SCC_ON_24}, - [CDS_IBSS_MODE] = { - CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, - - [CDS_P2P_GO_SAP_SCC_24_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} }, - - [CDS_P2P_GO_SAP_SCC_24_2x2] = { - [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} }, - - [CDS_P2P_GO_SAP_MCC_24_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} }, - - [CDS_P2P_GO_SAP_MCC_24_2x2] = { - [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} }, - - [CDS_P2P_GO_SAP_SCC_5_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} }, - - [CDS_P2P_GO_SAP_SCC_5_2x2] = { - [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} }, - - [CDS_P2P_GO_SAP_MCC_5_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} }, - - [CDS_P2P_GO_SAP_MCC_5_2x2] = { - [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} }, - - [CDS_P2P_GO_SAP_MCC_24_5_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} }, - - [CDS_P2P_GO_SAP_MCC_24_5_2x2] = { - [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} }, - - [CDS_P2P_GO_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} }, - - [CDS_P2P_CLI_SAP_SCC_24_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} }, - - [CDS_P2P_CLI_SAP_SCC_24_2x2] = { - [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} }, - - [CDS_P2P_CLI_SAP_MCC_24_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} }, - - [CDS_P2P_CLI_SAP_MCC_24_2x2] = { - [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} }, - - [CDS_P2P_CLI_SAP_SCC_5_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} }, - - [CDS_P2P_CLI_SAP_SCC_5_2x2] = { - [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} }, - - [CDS_P2P_CLI_SAP_MCC_5_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} }, - - [CDS_P2P_CLI_SAP_MCC_5_2x2] = { - [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} }, - - [CDS_P2P_CLI_SAP_MCC_24_5_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} }, - - [CDS_P2P_CLI_SAP_MCC_24_5_2x2] = { - [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} }, - - [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} }, - -}; - -/** - * third_connection_pcl_nodbs_table - table which provides PCL - * for the 3rd connection, when we have two connections already - * in the system (with DBS not supported by HW) - */ -static const enum cds_pcl_type -third_connection_pcl_nodbs_table[CDS_MAX_TWO_CONNECTION_MODE] - [CDS_MAX_NUM_OF_MODE][CDS_MAX_CONC_PRIORITY_MODE] = { - [CDS_STA_SAP_SCC_24_1x1] = { - [CDS_STA_MODE] = {CDS_5G, CDS_SCC_CH, CDS_SCC_CH}, - [CDS_SAP_MODE] = {CDS_SCC_CH_5G, CDS_SCC_CH, CDS_SCC_CH}, - [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_STA_SAP_SCC_24_2x2] = { - [CDS_STA_MODE] = {CDS_5G, CDS_SCC_CH, CDS_SCC_CH}, - [CDS_SAP_MODE] = {CDS_SCC_CH_5G, CDS_SCC_CH, CDS_SCC_CH}, - [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_STA_SAP_MCC_24_1x1] = { - [CDS_STA_MODE] = {CDS_5G_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, - [CDS_SAP_MODE] = {CDS_5G_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, - [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_STA_SAP_MCC_24_2x2] = { - [CDS_STA_MODE] = {CDS_5G_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, - [CDS_SAP_MODE] = {CDS_5G_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, - [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_STA_SAP_SCC_5_1x1] = { - [CDS_STA_MODE] = {CDS_SCC_CH, CDS_SCC_CH, CDS_SCC_CH}, - [CDS_SAP_MODE] = {CDS_SCC_CH, CDS_SCC_CH, CDS_SCC_CH}, - [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_STA_SAP_SCC_5_2x2] = { - [CDS_STA_MODE] = {CDS_SCC_CH, CDS_SCC_CH, CDS_SCC_CH}, - [CDS_SAP_MODE] = {CDS_SCC_CH, CDS_SCC_CH, CDS_SCC_CH}, - [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_STA_SAP_MCC_5_1x1] = { - [CDS_STA_MODE] = {CDS_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, - [CDS_SAP_MODE] = {CDS_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, - [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_STA_SAP_MCC_5_2x2] = { - [CDS_STA_MODE] = {CDS_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, - [CDS_SAP_MODE] = {CDS_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, - [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_STA_SAP_MCC_24_5_1x1] = { - [CDS_STA_MODE] = {CDS_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, - [CDS_SAP_MODE] = {CDS_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, - [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_STA_SAP_MCC_24_5_2x2] = { - [CDS_STA_MODE] = {CDS_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, - [CDS_SAP_MODE] = {CDS_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, - [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_STA_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} }, - - [CDS_STA_P2P_GO_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_5G, CDS_SCC_CH, CDS_SCC_CH}, - [CDS_P2P_GO_MODE] = {CDS_5G_SCC_CH, CDS_SCC_CH, CDS_SCC_CH}, - [CDS_IBSS_MODE] = { - CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, - - [CDS_STA_P2P_GO_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_5G, CDS_SCC_CH, CDS_SCC_CH}, - [CDS_P2P_GO_MODE] = {CDS_5G_SCC_CH, CDS_SCC_CH, CDS_SCC_CH}, - [CDS_IBSS_MODE] = { - CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, - - [CDS_STA_P2P_GO_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_5G_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, - [CDS_P2P_GO_MODE] = { - CDS_5G_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, - [CDS_IBSS_MODE] = { - CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, - - [CDS_STA_P2P_GO_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_5G_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, - [CDS_P2P_GO_MODE] = { - CDS_5G_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, - [CDS_IBSS_MODE] = { - CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, - - [CDS_STA_P2P_GO_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_SCC_CH, CDS_SCC_CH, CDS_SCC_CH}, - [CDS_P2P_GO_MODE] = {CDS_SCC_CH, CDS_SCC_CH, CDS_SCC_CH}, - [CDS_IBSS_MODE] = { - CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, - - [CDS_STA_P2P_GO_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_SCC_CH, CDS_SCC_CH, CDS_SCC_CH}, - [CDS_P2P_GO_MODE] = {CDS_SCC_CH, CDS_SCC_CH, CDS_SCC_CH}, - [CDS_IBSS_MODE] = { - CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, - - [CDS_STA_P2P_GO_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_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, - [CDS_P2P_GO_MODE] = {CDS_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, - [CDS_IBSS_MODE] = { - CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, - - [CDS_STA_P2P_GO_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_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, - [CDS_P2P_GO_MODE] = {CDS_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, - [CDS_IBSS_MODE] = { - CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, - - [CDS_STA_P2P_GO_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_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, - [CDS_P2P_GO_MODE] = {CDS_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, - [CDS_IBSS_MODE] = { - CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, - - [CDS_STA_P2P_GO_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_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, - [CDS_P2P_GO_MODE] = {CDS_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, - [CDS_IBSS_MODE] = { - CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, - - [CDS_STA_P2P_GO_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} }, - - [CDS_STA_P2P_CLI_SCC_24_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_5G_SCC_CH, CDS_SCC_CH, CDS_SCC_CH}, - [CDS_P2P_GO_MODE] = {CDS_5G_SCC_CH, CDS_SCC_CH, CDS_SCC_CH}, - [CDS_IBSS_MODE] = { - CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, - - [CDS_STA_P2P_CLI_SCC_24_2x2] = { - [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_5G_SCC_CH, CDS_SCC_CH, CDS_SCC_CH}, - [CDS_P2P_GO_MODE] = {CDS_5G_SCC_CH, CDS_SCC_CH, CDS_SCC_CH}, - [CDS_IBSS_MODE] = { - CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, - - [CDS_STA_P2P_CLI_MCC_24_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_5G_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, - [CDS_P2P_GO_MODE] = {CDS_5G_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, - [CDS_IBSS_MODE] = { - CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, - - [CDS_STA_P2P_CLI_MCC_24_2x2] = { - [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_5G_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, - [CDS_P2P_GO_MODE] = {CDS_5G_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, - [CDS_IBSS_MODE] = { - CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, - - [CDS_STA_P2P_CLI_SCC_5_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_SCC_CH, CDS_SCC_CH, CDS_SCC_CH}, - [CDS_P2P_GO_MODE] = {CDS_SCC_CH, CDS_SCC_CH, CDS_SCC_CH}, - [CDS_IBSS_MODE] = { - CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, - - [CDS_STA_P2P_CLI_SCC_5_2x2] = { - [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_SCC_CH, CDS_SCC_CH, CDS_SCC_CH}, - [CDS_P2P_GO_MODE] = {CDS_SCC_CH, CDS_SCC_CH, CDS_SCC_CH}, - [CDS_IBSS_MODE] = { - CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, - - [CDS_STA_P2P_CLI_MCC_5_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_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, - [CDS_P2P_GO_MODE] = {CDS_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, - [CDS_IBSS_MODE] = { - CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, - - [CDS_STA_P2P_CLI_MCC_5_2x2] = { - [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_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, - [CDS_P2P_GO_MODE] = {CDS_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, - [CDS_IBSS_MODE] = { - CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, - - [CDS_STA_P2P_CLI_MCC_24_5_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_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, - [CDS_P2P_GO_MODE] = {CDS_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, - [CDS_IBSS_MODE] = { - CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, - - [CDS_STA_P2P_CLI_MCC_24_5_2x2] = { - [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_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, - [CDS_P2P_GO_MODE] = {CDS_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, - [CDS_IBSS_MODE] = { - CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, - - [CDS_STA_P2P_CLI_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} }, - - [CDS_P2P_GO_P2P_CLI_SCC_24_1x1] = { - [CDS_STA_MODE] = {CDS_5G, CDS_SCC_CH, CDS_SCC_CH}, - [CDS_SAP_MODE] = {CDS_SCC_CH_5G, CDS_SCC_CH, CDS_SCC_CH}, - [CDS_P2P_CLIENT_MODE] = {CDS_5G, CDS_SCC_CH, CDS_SCC_CH}, - [CDS_P2P_GO_MODE] = {CDS_5G_SCC_CH, CDS_SCC_CH, CDS_SCC_CH}, - [CDS_IBSS_MODE] = { - CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, - - [CDS_P2P_GO_P2P_CLI_SCC_24_2x2] = { - [CDS_STA_MODE] = {CDS_5G, CDS_SCC_CH, CDS_SCC_CH}, - [CDS_SAP_MODE] = {CDS_SCC_CH_5G, CDS_SCC_CH, CDS_SCC_CH}, - [CDS_P2P_CLIENT_MODE] = {CDS_5G, CDS_SCC_CH, CDS_SCC_CH}, - [CDS_P2P_GO_MODE] = {CDS_5G_SCC_CH, CDS_SCC_CH, CDS_SCC_CH}, - [CDS_IBSS_MODE] = { - CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, - - [CDS_P2P_GO_P2P_CLI_MCC_24_1x1] = { - [CDS_STA_MODE] = {CDS_5G_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, - [CDS_SAP_MODE] = {CDS_5G_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, - [CDS_P2P_CLIENT_MODE] = { - CDS_5G_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, - [CDS_P2P_GO_MODE] = { - CDS_5G_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, - [CDS_IBSS_MODE] = { - CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, - - [CDS_P2P_GO_P2P_CLI_MCC_24_2x2] = { - [CDS_STA_MODE] = {CDS_5G_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, - [CDS_SAP_MODE] = {CDS_5G_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, - [CDS_P2P_CLIENT_MODE] = { - CDS_5G_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, - [CDS_P2P_GO_MODE] = { - CDS_5G_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, - [CDS_IBSS_MODE] = { - CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, - - [CDS_P2P_GO_P2P_CLI_SCC_5_1x1] = { - [CDS_STA_MODE] = {CDS_SCC_CH, CDS_SCC_CH, CDS_SCC_CH}, - [CDS_SAP_MODE] = {CDS_SCC_CH, CDS_SCC_CH, CDS_SCC_CH}, - [CDS_P2P_CLIENT_MODE] = {CDS_SCC_CH, CDS_SCC_CH, CDS_SCC_CH}, - [CDS_P2P_GO_MODE] = {CDS_SCC_CH, CDS_SCC_CH, CDS_SCC_CH}, - [CDS_IBSS_MODE] = { - CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, - - [CDS_P2P_GO_P2P_CLI_SCC_5_2x2] = { - [CDS_STA_MODE] = {CDS_SCC_CH, CDS_SCC_CH, CDS_SCC_CH}, - [CDS_SAP_MODE] = {CDS_SCC_CH, CDS_SCC_CH, CDS_SCC_CH}, - [CDS_P2P_CLIENT_MODE] = {CDS_SCC_CH, CDS_SCC_CH, CDS_SCC_CH}, - [CDS_P2P_GO_MODE] = {CDS_SCC_CH, CDS_SCC_CH, CDS_SCC_CH}, - [CDS_IBSS_MODE] = { - CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, - - [CDS_P2P_GO_P2P_CLI_MCC_5_1x1] = { - [CDS_STA_MODE] = {CDS_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, - [CDS_SAP_MODE] = {CDS_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, - [CDS_P2P_CLIENT_MODE] = {CDS_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, - [CDS_P2P_GO_MODE] = {CDS_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, - [CDS_IBSS_MODE] = { - CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, - - [CDS_P2P_GO_P2P_CLI_MCC_5_2x2] = { - [CDS_STA_MODE] = {CDS_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, - [CDS_SAP_MODE] = {CDS_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, - [CDS_P2P_CLIENT_MODE] = {CDS_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, - [CDS_P2P_GO_MODE] = {CDS_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, - [CDS_IBSS_MODE] = { - CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, - - [CDS_P2P_GO_P2P_CLI_MCC_24_5_1x1] = { - [CDS_STA_MODE] = {CDS_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, - [CDS_SAP_MODE] = {CDS_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, - [CDS_P2P_CLIENT_MODE] = {CDS_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, - [CDS_P2P_GO_MODE] = {CDS_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, - [CDS_IBSS_MODE] = { - CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, - - [CDS_P2P_GO_P2P_CLI_MCC_24_5_2x2] = { - [CDS_STA_MODE] = {CDS_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, - [CDS_SAP_MODE] = {CDS_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, - [CDS_P2P_CLIENT_MODE] = {CDS_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, - [CDS_P2P_GO_MODE] = {CDS_MCC_CH, CDS_MCC_CH, CDS_MCC_CH}, - [CDS_IBSS_MODE] = { - CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE, CDS_MAX_PCL_TYPE} }, - - [CDS_P2P_GO_P2P_CLI_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} }, - - [CDS_P2P_GO_SAP_SCC_24_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} }, - - [CDS_P2P_GO_SAP_SCC_24_2x2] = { - [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} }, - - [CDS_P2P_GO_SAP_MCC_24_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} }, - - [CDS_P2P_GO_SAP_MCC_24_2x2] = { - [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} }, - - [CDS_P2P_GO_SAP_SCC_5_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} }, - - [CDS_P2P_GO_SAP_SCC_5_2x2] = { - [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} }, - - [CDS_P2P_GO_SAP_MCC_5_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} }, - - [CDS_P2P_GO_SAP_MCC_5_2x2] = { - [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} }, - - [CDS_P2P_GO_SAP_MCC_24_5_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} }, - - [CDS_P2P_GO_SAP_MCC_24_5_2x2] = { - [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} }, - - [CDS_P2P_GO_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} }, - - - [CDS_P2P_CLI_SAP_SCC_24_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} }, - - [CDS_P2P_CLI_SAP_SCC_24_2x2] = { - [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} }, - - [CDS_P2P_CLI_SAP_MCC_24_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} }, - - [CDS_P2P_CLI_SAP_MCC_24_2x2] = { - [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} }, - - [CDS_P2P_CLI_SAP_SCC_5_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} }, - - [CDS_P2P_CLI_SAP_SCC_5_2x2] = { - [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} }, - - [CDS_P2P_CLI_SAP_MCC_5_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} }, - - [CDS_P2P_CLI_SAP_MCC_5_2x2] = { - [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} }, - - [CDS_P2P_CLI_SAP_MCC_24_5_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} }, - - [CDS_P2P_CLI_SAP_MCC_24_5_2x2] = { - [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} }, - - [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} }, - -}; - -/** - * next_action_two_connection_table - table which provides next - * action while a new connection is coming up, with one - * connection already in the system - */ -static const enum cds_conc_next_action -next_action_two_connection_table[CDS_MAX_ONE_CONNECTION_MODE][CDS_MAX_BAND] = { - [CDS_STA_24_1x1] = {CDS_NOP, CDS_DBS}, - [CDS_STA_24_2x2] = {CDS_NOP, CDS_DBS_DOWNGRADE}, - [CDS_STA_5_1x1] = {CDS_DBS, CDS_NOP}, - [CDS_STA_5_2x2] = {CDS_DBS_DOWNGRADE, CDS_NOP}, - [CDS_P2P_CLI_24_1x1] = {CDS_NOP, CDS_DBS}, - [CDS_P2P_CLI_24_2x2] = {CDS_NOP, CDS_DBS_DOWNGRADE}, - [CDS_P2P_CLI_5_1x1] = {CDS_DBS, CDS_NOP}, - [CDS_P2P_CLI_5_2x2] = {CDS_DBS_DOWNGRADE, CDS_NOP}, - [CDS_P2P_GO_24_1x1] = {CDS_NOP, CDS_DBS}, - [CDS_P2P_GO_24_2x2] = {CDS_NOP, CDS_DBS_DOWNGRADE}, - [CDS_P2P_GO_5_1x1] = {CDS_DBS, CDS_NOP}, - [CDS_P2P_GO_5_2x2] = {CDS_DBS_DOWNGRADE, CDS_NOP}, - [CDS_SAP_24_1x1] = {CDS_NOP, CDS_DBS}, - [CDS_SAP_24_2x2] = {CDS_NOP, CDS_DBS_DOWNGRADE}, - [CDS_SAP_5_1x1] = {CDS_DBS, CDS_NOP}, - [CDS_SAP_5_2x2] = {CDS_DBS_DOWNGRADE, CDS_NOP}, - [CDS_IBSS_24_1x1] = {CDS_NOP, CDS_DBS}, - [CDS_IBSS_24_2x2] = {CDS_NOP, CDS_DBS_DOWNGRADE}, - [CDS_IBSS_5_1x1] = {CDS_DBS, CDS_NOP}, - [CDS_IBSS_5_2x2] = {CDS_DBS_DOWNGRADE, CDS_NOP}, -}; - -/** - * next_action_three_connection_table - table which provides next - * action while a new connection is coming up, with two - * connections already in the system - */ -static const enum cds_conc_next_action -next_action_three_connection_table[CDS_MAX_TWO_CONNECTION_MODE] - [CDS_MAX_BAND] = { - [CDS_STA_SAP_SCC_24_1x1] = {CDS_NOP, CDS_DBS}, - [CDS_STA_SAP_SCC_24_2x2] = {CDS_NOP, CDS_DBS_DOWNGRADE}, - [CDS_STA_SAP_MCC_24_1x1] = {CDS_NOP, CDS_DBS}, - [CDS_STA_SAP_MCC_24_2x2] = {CDS_NOP, CDS_DBS_DOWNGRADE}, - [CDS_STA_SAP_SCC_5_1x1] = {CDS_DBS, CDS_NOP}, - [CDS_STA_SAP_SCC_5_2x2] = {CDS_DBS_DOWNGRADE, CDS_NOP}, - [CDS_STA_SAP_MCC_5_1x1] = {CDS_DBS, CDS_NOP}, - [CDS_STA_SAP_MCC_5_2x2] = {CDS_DBS_DOWNGRADE, CDS_NOP}, - [CDS_STA_SAP_MCC_24_5_1x1] = {CDS_DBS, CDS_DBS}, - [CDS_STA_SAP_MCC_24_5_2x2] = {CDS_DBS_DOWNGRADE, CDS_DBS_DOWNGRADE}, - [CDS_STA_SAP_DBS_1x1] = {CDS_NOP, CDS_NOP}, - [CDS_STA_P2P_GO_SCC_24_1x1] = {CDS_NOP, CDS_DBS}, - [CDS_STA_P2P_GO_SCC_24_2x2] = {CDS_NOP, CDS_DBS_DOWNGRADE}, - [CDS_STA_P2P_GO_MCC_24_1x1] = {CDS_NOP, CDS_DBS}, - [CDS_STA_P2P_GO_MCC_24_2x2] = {CDS_NOP, CDS_DBS_DOWNGRADE}, - [CDS_STA_P2P_GO_SCC_5_1x1] = {CDS_DBS, CDS_NOP}, - [CDS_STA_P2P_GO_SCC_5_2x2] = {CDS_DBS_DOWNGRADE, CDS_NOP}, - [CDS_STA_P2P_GO_MCC_5_1x1] = {CDS_DBS, CDS_NOP}, - [CDS_STA_P2P_GO_MCC_5_2x2] = {CDS_DBS_DOWNGRADE, CDS_NOP}, - [CDS_STA_P2P_GO_MCC_24_5_1x1] = {CDS_DBS, CDS_DBS}, - [CDS_STA_P2P_GO_MCC_24_5_2x2] = { - CDS_DBS_DOWNGRADE, CDS_DBS_DOWNGRADE}, - [CDS_STA_P2P_GO_DBS_1x1] = {CDS_NOP, CDS_NOP}, - [CDS_STA_P2P_CLI_SCC_24_1x1] = {CDS_NOP, CDS_DBS}, - [CDS_STA_P2P_CLI_SCC_24_2x2] = { - CDS_NOP, CDS_DBS_DOWNGRADE}, - [CDS_STA_P2P_CLI_MCC_24_1x1] = {CDS_NOP, CDS_DBS}, - [CDS_STA_P2P_CLI_MCC_24_2x2] = { - CDS_NOP, CDS_DBS_DOWNGRADE}, - [CDS_STA_P2P_CLI_SCC_5_1x1] = {CDS_DBS, CDS_NOP}, - [CDS_STA_P2P_CLI_SCC_5_2x2] = {CDS_DBS_DOWNGRADE, CDS_NOP}, - [CDS_STA_P2P_CLI_MCC_5_1x1] = {CDS_DBS, CDS_NOP}, - [CDS_STA_P2P_CLI_MCC_5_2x2] = {CDS_DBS_DOWNGRADE, CDS_NOP}, - [CDS_STA_P2P_CLI_MCC_24_5_1x1] = {CDS_DBS, CDS_DBS}, - [CDS_STA_P2P_CLI_MCC_24_5_2x2] = { - CDS_DBS_DOWNGRADE, CDS_DBS_DOWNGRADE}, - [CDS_STA_P2P_CLI_DBS_1x1] = {CDS_NOP, CDS_NOP}, - [CDS_P2P_GO_P2P_CLI_SCC_24_1x1] = {CDS_NOP, CDS_DBS}, - [CDS_P2P_GO_P2P_CLI_SCC_24_2x2] = { - CDS_NOP, CDS_DBS_DOWNGRADE}, - [CDS_P2P_GO_P2P_CLI_MCC_24_1x1] = {CDS_NOP, CDS_DBS}, - [CDS_P2P_GO_P2P_CLI_MCC_24_2x2] = { - CDS_NOP, CDS_DBS_DOWNGRADE}, - [CDS_P2P_GO_P2P_CLI_SCC_5_1x1] = {CDS_DBS, CDS_NOP}, - [CDS_P2P_GO_P2P_CLI_SCC_5_2x2] = {CDS_DBS_DOWNGRADE, CDS_NOP}, - [CDS_P2P_GO_P2P_CLI_MCC_5_1x1] = {CDS_DBS, CDS_NOP}, - [CDS_P2P_GO_P2P_CLI_MCC_5_2x2] = {CDS_DBS_DOWNGRADE, CDS_NOP}, - [CDS_P2P_GO_P2P_CLI_MCC_24_5_1x1] = {CDS_DBS, CDS_DBS}, - [CDS_P2P_GO_P2P_CLI_MCC_24_5_2x2] = { - CDS_DBS_DOWNGRADE, CDS_DBS_DOWNGRADE}, - [CDS_P2P_GO_P2P_CLI_DBS_1x1] = {CDS_NOP, CDS_NOP}, - [CDS_P2P_GO_SAP_SCC_24_1x1] = {CDS_NOP, CDS_DBS}, - [CDS_P2P_GO_SAP_SCC_24_2x2] = {CDS_NOP, CDS_DBS_DOWNGRADE}, - [CDS_P2P_GO_SAP_MCC_24_1x1] = {CDS_NOP, CDS_DBS}, - [CDS_P2P_GO_SAP_MCC_24_2x2] = {CDS_NOP, CDS_DBS_DOWNGRADE}, - [CDS_P2P_GO_SAP_SCC_5_1x1] = {CDS_DBS, CDS_NOP}, - [CDS_P2P_GO_SAP_SCC_5_2x2] = {CDS_DBS_DOWNGRADE, CDS_NOP}, - [CDS_P2P_GO_SAP_MCC_5_1x1] = {CDS_DBS, CDS_NOP}, - [CDS_P2P_GO_SAP_MCC_5_2x2] = {CDS_DBS_DOWNGRADE, CDS_NOP}, - [CDS_P2P_GO_SAP_MCC_24_5_1x1] = {CDS_DBS, CDS_DBS}, - [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}, - -}; +static dbs_pcl_second_connection_table_type *second_connection_pcl_dbs_table; +static dbs_pcl_third_connection_table_type *third_connection_pcl_dbs_table; +static next_action_two_connection_table_type *next_action_two_connection_table; +static next_action_three_connection_table_type + *next_action_three_connection_table; +enum cds_conc_next_action (*cds_get_current_pref_hw_mode_ptr)(void); + +static enum cds_conc_next_action cds_get_current_pref_hw_mode_dbs_2x2(void); +static enum cds_conc_next_action cds_get_current_pref_hw_mode_dbs_1x1(void); /** * cds_get_connection_count() - provides the count of @@ -1964,7 +116,7 @@ uint32_t cds_get_connection_count(void) uint32_t conn_index, count = 0; for (conn_index = 0; conn_index < MAX_NUMBER_OF_CONC_CONNECTIONS; - conn_index++) { + conn_index++) { if (conc_connection_list[conn_index].in_use) count++; } @@ -4083,6 +2235,41 @@ QDF_STATUS cds_init_policy_mgr(struct cds_sme_cbacks *sme_cbacks) return status; } + if (wma_is_hw_dbs_2x2_capable()) + cds_get_current_pref_hw_mode_ptr = + cds_get_current_pref_hw_mode_dbs_2x2; + else + cds_get_current_pref_hw_mode_ptr = + cds_get_current_pref_hw_mode_dbs_1x1; + + if (wma_is_hw_dbs_2x2_capable()) + second_connection_pcl_dbs_table = + &second_connection_pcl_dbs_2x2_table; + else + second_connection_pcl_dbs_table = + &second_connection_pcl_dbs_1x1_table; + + if (wma_is_hw_dbs_2x2_capable()) + third_connection_pcl_dbs_table = + &third_connection_pcl_dbs_2x2_table; + else + third_connection_pcl_dbs_table = + &third_connection_pcl_dbs_1x1_table; + + if (wma_is_hw_dbs_2x2_capable()) + next_action_two_connection_table = + &next_action_two_connection_dbs_2x2_table; + else + next_action_two_connection_table = + &next_action_two_connection_dbs_1x1_table; + + if (wma_is_hw_dbs_2x2_capable()) + next_action_three_connection_table = + &next_action_three_connection_dbs_2x2_table; + else + next_action_three_connection_table = + &next_action_three_connection_dbs_1x1_table; + return QDF_STATUS_SUCCESS; } @@ -4422,6 +2609,117 @@ QDF_STATUS cds_decr_connection_count(uint32_t vdev_id) return QDF_STATUS_SUCCESS; } +/** + * cds_get_sbs_channels() - provides the sbs channel(s) + * with respect to current connection(s) + * @channels: the channel(s) on which current connection(s) is + * @len: Number of channels + * @pcl_weight: Pointer to the weights of PCL + * @weight_len: Max length of the weight list + * @index: Index from which the weight list needs to be populated + * @group_id: Next available groups for weight assignment + * @available_5g_channels: List of available 5g channels + * @available_5g_channels_len: Length of the 5g channels list + * @add_5g_channels: If this flag is true append 5G channel list as well + * + * This function provides the channel(s) on which current + * connection(s) is/are + * + * Return: QDF_STATUS + */ + +static QDF_STATUS cds_get_sbs_channels(uint8_t *channels, + uint32_t *len, uint8_t *pcl_weight, uint32_t weight_len, + uint32_t *index, enum cds_pcl_group_id group_id, + uint8_t *available_5g_channels, + uint32_t available_5g_channels_len, + bool add_5g_channels) +{ + QDF_STATUS status = QDF_STATUS_SUCCESS; + uint32_t conn_index = 0, num_channels = 0; + uint32_t num_5g_channels = 0, cur_5g_channel = 0; + uint8_t remaining_5g_Channels[QDF_MAX_NUM_CHAN] = {}; + uint32_t remaining_channel_index = 0; + uint32_t j = 0, i = 0, weight1, weight2; + + if ((NULL == channels) || (NULL == len)) { + cds_err("channels or len is NULL"); + status = QDF_STATUS_E_FAILURE; + return status; + } + + if (group_id == CDS_PCL_GROUP_ID1_ID2) { + weight1 = WEIGHT_OF_GROUP1_PCL_CHANNELS; + weight2 = WEIGHT_OF_GROUP2_PCL_CHANNELS; + } else if (group_id == CDS_PCL_GROUP_ID2_ID3) { + weight1 = WEIGHT_OF_GROUP2_PCL_CHANNELS; + weight2 = WEIGHT_OF_GROUP3_PCL_CHANNELS; + } else { + weight1 = WEIGHT_OF_GROUP3_PCL_CHANNELS; + weight2 = WEIGHT_OF_GROUP4_PCL_CHANNELS; + } + + cds_debug("weight1=%d weight2=%d index=%d ", weight1, weight2, *index); + + while (CONC_CONNECTION_LIST_VALID_INDEX(conn_index)) { + if ((CDS_IS_CHANNEL_5GHZ( + conc_connection_list[conn_index].chan)) + && (conc_connection_list[conn_index].in_use)) { + num_5g_channels++; + cur_5g_channel = conc_connection_list[conn_index].chan; + } + conn_index++; + } + + conn_index = 0; + if (num_5g_channels > 1) { + /* This case we are already in SBS so return the channels */ + while (CONC_CONNECTION_LIST_VALID_INDEX(conn_index)) { + channels[num_channels++] = + conc_connection_list[conn_index++].chan; + if (*index < weight_len) + pcl_weight[(*index)++] = weight1; + } + *len = num_channels; + /* fix duplicate issue later */ + if (add_5g_channels) + for (j = 0; j < available_5g_channels_len; j++) + remaining_5g_Channels[ + remaining_channel_index++] = + available_5g_channels[j]; + } else { + /* Get list of valid sbs channels for the current + * connected channel + */ + for (j = 0; j < available_5g_channels_len; j++) { + if (CDS_IS_CHANNEL_VALID_5G_SBS( + cur_5g_channel, available_5g_channels[j])) { + channels[num_channels++] = + available_5g_channels[j]; + } else { + remaining_5g_Channels[ + remaining_channel_index++] = + available_5g_channels[j]; + continue; + } + if (*index < weight_len) + pcl_weight[(*index)++] = weight1; + } + *len = num_channels; + } + + if (add_5g_channels) { + qdf_mem_copy(channels+num_channels, remaining_5g_Channels, + remaining_channel_index); + *len += remaining_channel_index; + for (i = 0; ((i < remaining_channel_index) + && (i < weight_len)); i++) + pcl_weight[i] = weight2; + } + return status; +} + + /** * cds_get_connection_channels() - provides the channel(s) * on which current connection(s) is @@ -4659,17 +2957,18 @@ void cds_update_with_safe_channel_list(uint8_t *pcl_channels, uint32_t *len, * Return: Channel List */ static QDF_STATUS cds_get_channel_list(enum cds_pcl_type pcl, - uint8_t *pcl_channels, uint32_t *len, - enum cds_con_mode mode, - uint8_t *pcl_weights, - uint32_t weight_len) + uint8_t *pcl_channels, uint32_t *len, + enum cds_con_mode mode, + uint8_t *pcl_weights, uint32_t weight_len) { QDF_STATUS status = QDF_STATUS_E_FAILURE; uint32_t num_channels = 0; + uint32_t sbs_num_channels = 0; uint32_t chan_index = 0, chan_index_24 = 0, chan_index_5 = 0; uint8_t channel_list[QDF_MAX_NUM_CHAN] = {0}; uint8_t channel_list_24[QDF_MAX_NUM_CHAN] = {0}; uint8_t channel_list_5[QDF_MAX_NUM_CHAN] = {0}; + uint8_t sbs_channel_list[QDF_MAX_NUM_CHAN] = {0}; bool skip_dfs_channel = false; hdd_context_t *hdd_ctx; uint32_t i = 0, j = 0; @@ -4746,6 +3045,7 @@ static QDF_STATUS cds_get_channel_list(enum cds_pcl_type pcl, } num_channels = 0; + sbs_num_channels = 0; /* In the below switch case, the channel list is populated based on the * pcl. e.g., if the pcl is CDS_SCC_CH_24G, the SCC channel group is * populated first followed by the 2.4GHz channel group. Along with @@ -4960,6 +3260,106 @@ static QDF_STATUS cds_get_channel_list(enum cds_pcl_type pcl, pcl_weights[i] = WEIGHT_OF_GROUP3_PCL_CHANNELS; status = QDF_STATUS_SUCCESS; break; + case CDS_24G_SCC_CH_SBS_CH: + qdf_mem_copy(pcl_channels, channel_list_24, + chan_index_24); + *len = chan_index_24; + for (i = 0; ((i < chan_index_24) && (i < weight_len)); i++) + pcl_weights[i] = WEIGHT_OF_GROUP1_PCL_CHANNELS; + cds_get_connection_channels( + channel_list, &num_channels, CDS_PCL_ORDER_NONE, + skip_dfs_channel, pcl_weights, weight_len, &i, + CDS_PCL_GROUP_ID2_ID3); + qdf_mem_copy(&pcl_channels[chan_index_24], + channel_list, num_channels); + *len += num_channels; + if (wma_is_hw_sbs_capable()) { + cds_get_sbs_channels( + sbs_channel_list, &sbs_num_channels, pcl_weights, + weight_len, &i, CDS_PCL_GROUP_ID3_ID4, + channel_list_5, chan_index_5, false); + qdf_mem_copy( + &pcl_channels[chan_index_24 + num_channels], + sbs_channel_list, sbs_num_channels); + *len += sbs_num_channels; + } + status = QDF_STATUS_SUCCESS; + break; + case CDS_24G_SCC_CH_SBS_CH_5G: + qdf_mem_copy(pcl_channels, channel_list_24, + chan_index_24); + *len = chan_index_24; + for (i = 0; ((i < chan_index_24) && (i < weight_len)); i++) + pcl_weights[i] = WEIGHT_OF_GROUP1_PCL_CHANNELS; + cds_get_connection_channels( + channel_list, &num_channels, CDS_PCL_ORDER_NONE, + skip_dfs_channel, pcl_weights, weight_len, &i, + CDS_PCL_GROUP_ID2_ID3); + qdf_mem_copy(&pcl_channels[chan_index_24], + channel_list, num_channels); + *len += num_channels; + if (wma_is_hw_sbs_capable()) { + cds_get_sbs_channels( + sbs_channel_list, &sbs_num_channels, pcl_weights, + weight_len, &i, CDS_PCL_GROUP_ID3_ID4, + channel_list_5, chan_index_5, true); + qdf_mem_copy( + &pcl_channels[chan_index_24 + num_channels], + sbs_channel_list, sbs_num_channels); + *len += sbs_num_channels; + } else { + qdf_mem_copy( + &pcl_channels[chan_index_24 + num_channels], + channel_list_5, chan_index_5); + *len += chan_index_5; + for (i = chan_index_24 + num_channels; + ((i < *len) && (i < weight_len)); i++) + pcl_weights[i] = WEIGHT_OF_GROUP3_PCL_CHANNELS; + } + status = QDF_STATUS_SUCCESS; + break; + case CDS_24G_SBS_CH_MCC_CH: + qdf_mem_copy(pcl_channels, channel_list_24, + chan_index_24); + *len = chan_index_24; + for (i = 0; ((i < chan_index_24) && (i < weight_len)); i++) + pcl_weights[i] = WEIGHT_OF_GROUP1_PCL_CHANNELS; + if (wma_is_hw_sbs_capable()) { + cds_get_sbs_channels( + sbs_channel_list, &sbs_num_channels, pcl_weights, + weight_len, &i, CDS_PCL_GROUP_ID2_ID3, + channel_list_5, chan_index_5, false); + qdf_mem_copy(&pcl_channels[num_channels], + sbs_channel_list, sbs_num_channels); + *len += sbs_num_channels; + } + cds_get_connection_channels( + channel_list, &num_channels, CDS_PCL_ORDER_NONE, + skip_dfs_channel, pcl_weights, weight_len, &i, + CDS_PCL_GROUP_ID2_ID3); + qdf_mem_copy(&pcl_channels[chan_index_24], + channel_list, num_channels); + *len += num_channels; + status = QDF_STATUS_SUCCESS; + break; + case CDS_SBS_CH_5G: + if (wma_is_hw_sbs_capable()) { + cds_get_sbs_channels( + sbs_channel_list, &sbs_num_channels, pcl_weights, + weight_len, &i, CDS_PCL_GROUP_ID1_ID2, + channel_list_5, chan_index_5, true); + qdf_mem_copy(&pcl_channels[num_channels], + sbs_channel_list, sbs_num_channels); + *len += sbs_num_channels; + } else { + qdf_mem_copy(pcl_channels, channel_list_5, + chan_index_5); + *len = chan_index_5; + for (i = 0; ((i < *len) && (i < weight_len)); i++) + pcl_weights[i] = WEIGHT_OF_GROUP1_PCL_CHANNELS; + } + status = QDF_STATUS_SUCCESS; + break; default: cds_err("unknown pcl value %d", pcl); break; @@ -5115,7 +3515,7 @@ QDF_STATUS cds_get_pcl(enum cds_con_mode mode, return status; } if (wma_is_hw_dbs_capable() == true) { - pcl = second_connection_pcl_dbs_table + pcl = (*second_connection_pcl_dbs_table) [second_index][mode][conc_system_pref]; } else { pcl = second_connection_pcl_nodbs_table @@ -5131,7 +3531,7 @@ QDF_STATUS cds_get_pcl(enum cds_con_mode mode, return status; } if (wma_is_hw_dbs_capable() == true) { - pcl = third_connection_pcl_dbs_table + pcl = (*third_connection_pcl_dbs_table) [third_index][mode][conc_system_pref]; } else { pcl = third_connection_pcl_nodbs_table @@ -5227,8 +3627,7 @@ static bool cds_disallow_mcc(uint8_t channel) * * Return: True/False */ -static bool cds_allow_new_home_channel(uint8_t channel, - uint32_t num_connections) +static bool cds_allow_new_home_channel(uint8_t channel, uint32_t num_connections) { bool status = true; @@ -5742,11 +4141,27 @@ enum cds_two_connection_mode cds_get_third_connection_pcl_table_index(void) else index = CDS_P2P_CLI_SAP_MCC_24_5_2x2; } + /* SBS */ + } else if (conc_connection_list[0].mac != + conc_connection_list[1].mac) { + 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_SBS_5_1x1; + } /* DBS */ - } else - index = CDS_P2P_CLI_SAP_DBS_1x1; - } else - /* STA + SAP */ + } else { + if (CDS_ONE_ONE == + conc_connection_list[0].chain_mask) { + index = CDS_P2P_CLI_SAP_DBS_1x1; + } else { + index = CDS_P2P_CLI_SAP_DBS_2x2; + } + } + } else /* STA + SAP */ if (((CDS_STA_MODE == conc_connection_list[0].mode) && (CDS_SAP_MODE == conc_connection_list[1].mode)) || ((CDS_SAP_MODE == conc_connection_list[0].mode) && @@ -5796,9 +4211,94 @@ enum cds_two_connection_mode cds_get_third_connection_pcl_table_index(void) else index = CDS_STA_SAP_MCC_24_5_2x2; } + /* SBS */ + } else if (conc_connection_list[0].mac != + conc_connection_list[1].mac) { + 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_STA_SAP_SBS_5_1x1; + } /* DBS */ - } else - index = CDS_STA_SAP_DBS_1x1; + } else { + if (CDS_ONE_ONE == + conc_connection_list[0].chain_mask) { + index = CDS_STA_SAP_DBS_1x1; + } else { + index = CDS_STA_SAP_DBS_2x2; + } + } + } else /* SAP + SAP */ + if ((CDS_SAP_MODE == conc_connection_list[0].mode) && + (CDS_SAP_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_SAP_SAP_SCC_24_1x1; + else + index = CDS_SAP_SAP_SCC_24_2x2; + } else { + if (CDS_ONE_ONE == + conc_connection_list[0].chain_mask) + index = CDS_SAP_SAP_SCC_5_1x1; + else + index = CDS_SAP_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_SAP_SAP_MCC_24_1x1; + else + index = CDS_SAP_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_SAP_SAP_MCC_5_1x1; + else + index = CDS_SAP_SAP_MCC_5_2x2; + } else { + if (CDS_ONE_ONE == + conc_connection_list[0].chain_mask) + index = CDS_SAP_SAP_MCC_24_5_1x1; + else + index = CDS_SAP_SAP_MCC_24_5_2x2; + } + /* SBS */ + } else if (conc_connection_list[0].mac != + conc_connection_list[1].mac) { + 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_SAP_SAP_SBS_5_1x1; + } + /* DBS */ + } else { + if (CDS_ONE_ONE == + conc_connection_list[0].chain_mask) { + index = CDS_SAP_SAP_DBS_1x1; + } else { + index = CDS_SAP_SAP_DBS_2x2; + } + } } else /* STA + P2P GO */ if (((CDS_STA_MODE == conc_connection_list[0].mode) && (CDS_P2P_GO_MODE == conc_connection_list[1].mode)) || @@ -5849,9 +4349,26 @@ enum cds_two_connection_mode cds_get_third_connection_pcl_table_index(void) else index = CDS_STA_P2P_GO_MCC_24_5_2x2; } + /* SBS */ + } else if (conc_connection_list[0].mac != + conc_connection_list[1].mac) { + 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_STA_P2P_GO_SBS_5_1x1; + } /* DBS */ - } else - index = CDS_STA_P2P_GO_DBS_1x1; + } else { + if (CDS_ONE_ONE == + conc_connection_list[0].chain_mask) { + index = CDS_STA_P2P_GO_DBS_1x1; + } else { + index = CDS_STA_P2P_GO_DBS_2x2; + } + } } else /* STA + P2P CLI */ if (((CDS_STA_MODE == conc_connection_list[0].mode) && (CDS_P2P_CLIENT_MODE == conc_connection_list[1].mode)) || @@ -5902,9 +4419,26 @@ enum cds_two_connection_mode cds_get_third_connection_pcl_table_index(void) else index = CDS_STA_P2P_CLI_MCC_24_5_2x2; } + /* SBS */ + } else if (conc_connection_list[0].mac != + conc_connection_list[1].mac) { + 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_STA_P2P_CLI_SBS_5_1x1; + } /* DBS */ - } else - index = CDS_STA_P2P_CLI_DBS_1x1; + } else { + if (CDS_ONE_ONE == + conc_connection_list[0].chain_mask) { + index = CDS_STA_P2P_CLI_DBS_1x1; + } else { + index = CDS_STA_P2P_CLI_DBS_2x2; + } + } } else /* P2P GO + P2P CLI */ if (((CDS_P2P_GO_MODE == conc_connection_list[0].mode) && (CDS_P2P_CLIENT_MODE == conc_connection_list[1].mode)) || @@ -5955,10 +4489,27 @@ enum cds_two_connection_mode cds_get_third_connection_pcl_table_index(void) else index = CDS_P2P_GO_P2P_CLI_MCC_24_5_2x2; } + /* SBS */ + } else if (conc_connection_list[0].mac != + conc_connection_list[1].mac) { + 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_GO_P2P_CLI_SBS_5_1x1; + } /* DBS */ - } else - index = CDS_P2P_GO_P2P_CLI_DBS_1x1; - } else /* STA + P2P CLI */ + } else { + if (CDS_ONE_ONE == + conc_connection_list[0].chain_mask) { + index = CDS_P2P_GO_P2P_CLI_DBS_1x1; + } else { + index = CDS_P2P_GO_P2P_CLI_DBS_2x2; + } + } + } else /* P2P GO + SAP */ if (((CDS_SAP_MODE == conc_connection_list[0].mode) && (CDS_P2P_GO_MODE == conc_connection_list[1].mode)) || ((CDS_P2P_GO_MODE == conc_connection_list[0].mode) && @@ -6008,9 +4559,26 @@ enum cds_two_connection_mode cds_get_third_connection_pcl_table_index(void) else index = CDS_P2P_GO_SAP_MCC_24_5_2x2; } + /* SBS */ + } else if (conc_connection_list[0].mac != + conc_connection_list[1].mac) { + 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_GO_SAP_SBS_5_1x1; + } /* DBS */ - } else - index = CDS_P2P_GO_SAP_DBS_1x1; + } else { + if (CDS_ONE_ONE == + conc_connection_list[0].chain_mask) { + index = CDS_P2P_GO_SAP_DBS_1x1; + } else { + index = CDS_P2P_GO_SAP_DBS_2x2; + } + } } cds_debug("mode0:%d mode1:%d chan0:%d chan1:%d chain:%d index:%d", @@ -6120,7 +4688,13 @@ QDF_STATUS cds_current_connections_update(uint32_t session_id, switch (num_connections) { case 0: - next_action = CDS_NOP; + if (band == CDS_BAND_24) + if (wma_is_hw_dbs_2x2_capable()) + next_action = CDS_DBS; + else + next_action = CDS_NOP; + else + next_action = CDS_NOP; break; case 1: second_index = @@ -6130,7 +4704,7 @@ QDF_STATUS cds_current_connections_update(uint32_t session_id, goto done; } next_action = - next_action_two_connection_table[second_index][band]; + (*next_action_two_connection_table)[second_index][band]; break; case 2: third_index = @@ -6139,8 +4713,8 @@ QDF_STATUS cds_current_connections_update(uint32_t session_id, cds_err("couldn't find index for 3rd connection next action table"); goto done; } - next_action = - next_action_three_connection_table[third_index][band]; + next_action = (*next_action_three_connection_table) + [third_index][band]; break; default: cds_err("unexpected num_connections value %d", num_connections); @@ -6179,8 +4753,8 @@ done: * Return: None */ static void cds_nss_update_cb(void *context, uint8_t tx_status, uint8_t vdev_id, - uint8_t next_action, - enum sir_conn_update_reason reason) + uint8_t next_action, + enum sir_conn_update_reason reason) { cds_context_type *cds_ctx; uint32_t conn_index = 0; @@ -6228,8 +4802,8 @@ static void cds_nss_update_cb(void *context, uint8_t tx_status, uint8_t vdev_id, * Return: QDF_STATUS enum */ static QDF_STATUS cds_complete_action(uint8_t new_nss, uint8_t next_action, - enum sir_conn_update_reason reason, - uint32_t session_id) + enum sir_conn_update_reason reason, + uint32_t session_id) { QDF_STATUS status = QDF_STATUS_E_FAILURE; uint32_t index, count; @@ -6342,13 +4916,26 @@ QDF_STATUS cds_next_actions(uint32_t session_id, * if already in DBS no need to request DBS. Might be needed * to extend the logic when multiple dbs HW mode is available */ - if ((((CDS_DBS_DOWNGRADE == action) || (CDS_DBS == action)) + if ((((CDS_DBS_DOWNGRADE == action) || (CDS_DBS == action) || + (CDS_DBS_UPGRADE == action)) && hw_mode.dbs_cap)) { cds_err("driver is already in %s mode, no further action needed", (hw_mode.dbs_cap) ? "dbs" : "non dbs"); return QDF_STATUS_E_ALREADY; } + if ((CDS_SBS == action) || (action == CDS_SBS_DOWNGRADE)) { + if (!wma_is_hw_sbs_capable()) { + /* No action */ + cds_info("firmware is not sbs capable"); + return QDF_STATUS_SUCCESS; + } + /* check if current mode is already SBS nothing to be + * done + */ + + } + switch (action) { case CDS_DBS_DOWNGRADE: /* @@ -6399,6 +4986,33 @@ QDF_STATUS cds_next_actions(uint32_t session_id, HW_MODE_SBS_NONE, reason); break; + case CDS_DBS_UPGRADE: + status = cds_pdev_set_hw_mode(session_id, + HW_MODE_SS_2x2, + HW_MODE_80_MHZ, + HW_MODE_SS_2x2, HW_MODE_80_MHZ, + HW_MODE_DBS, + HW_MODE_AGILE_DFS_NONE, + HW_MODE_SBS_NONE, + reason); + + status = cds_complete_action(CDS_RX_NSS_2, CDS_DBS, reason, + session_id); + break; + case CDS_SBS_DOWNGRADE: + status = cds_complete_action(CDS_RX_NSS_1, CDS_SBS, reason, + session_id); + break; + case CDS_SBS: + status = cds_pdev_set_hw_mode(session_id, + HW_MODE_SS_1x1, + HW_MODE_80_MHZ, + HW_MODE_SS_1x1, HW_MODE_80_MHZ, + HW_MODE_DBS, + HW_MODE_AGILE_DFS_NONE, + HW_MODE_SBS, + reason); + break; default: cds_err("unexpected action value %d", action); status = QDF_STATUS_E_FAILURE; @@ -7874,7 +6488,7 @@ enum cds_pcl_type get_pcl_from_second_conn_table( (type >= CDS_MAX_NUM_OF_MODE)) return CDS_MAX_PCL_TYPE; if (dbs_capable) - return second_connection_pcl_dbs_table[idx][type][sys_pref]; + return (*second_connection_pcl_dbs_table)[idx][type][sys_pref]; else return second_connection_pcl_nodbs_table[idx][type][sys_pref]; } @@ -7888,7 +6502,7 @@ enum cds_pcl_type get_pcl_from_third_conn_table( (type >= CDS_MAX_NUM_OF_MODE)) return CDS_MAX_PCL_TYPE; if (dbs_capable) - return third_connection_pcl_dbs_table[idx][type][sys_pref]; + return (*third_connection_pcl_dbs_table)[idx][type][sys_pref]; else return third_connection_pcl_nodbs_table[idx][type][sys_pref]; } @@ -8198,14 +6812,124 @@ QDF_STATUS qdf_init_connection_update(void) } /** - * cds_get_current_pref_hw_mode() - Get the current preferred hw mode + * cds_get_current_pref_hw_mode_dbs_2x2() - Get the current preferred hw mode + * + * Get the preferred hw mode based on the current connection combinations + * + * Return: No change (CDS_NOP), MCC (CDS_SINGLE_MAC), + * DBS (CDS_DBS), SBS (CDS_SBS) + */ +static enum cds_conc_next_action cds_get_current_pref_hw_mode_dbs_2x2(void) +{ + uint32_t num_connections; + uint8_t band1, band2, band3; + struct sir_hw_mode_params hw_mode; + QDF_STATUS status; + hdd_context_t *hdd_ctx; + + hdd_ctx = cds_get_context(QDF_MODULE_ID_HDD); + if (!hdd_ctx) { + cds_err("HDD context is NULL"); + return CDS_NOP; + } + + status = wma_get_current_hw_mode(&hw_mode); + if (!QDF_IS_STATUS_SUCCESS(status)) { + cds_err("wma_get_current_hw_mode failed"); + return CDS_NOP; + } + + num_connections = cds_get_connection_count(); + + cds_debug("chan[0]:%d chan[1]:%d chan[2]:%d num_connections:%d dbs:%d", + conc_connection_list[0].chan, conc_connection_list[1].chan, + conc_connection_list[2].chan, num_connections, hw_mode.dbs_cap); + + /* If the band of operation of both the MACs is the same, + * single MAC is preferred, otherwise DBS is preferred. + */ + switch (num_connections) { + case 1: + band1 = cds_chan_to_band(conc_connection_list[0].chan); + if (band1 == CDS_BAND_2GHZ) + return CDS_DBS; + else + return CDS_NOP; + case 2: + band1 = cds_chan_to_band(conc_connection_list[0].chan); + band2 = cds_chan_to_band(conc_connection_list[1].chan); + if ((band1 == CDS_BAND_2GHZ) || (band2 == CDS_BAND_2GHZ)) { + if (!hw_mode.dbs_cap) + return CDS_DBS; + else + return CDS_NOP; + } else if ((band1 == CDS_BAND_5GHZ) && + (band2 == CDS_BAND_5GHZ)) { + if (CDS_IS_CHANNEL_VALID_5G_SBS( + conc_connection_list[0].chan, + conc_connection_list[1].chan)) { + if (!hw_mode.sbs_cap) + return CDS_SBS; + else + return CDS_NOP; + } else { + if (hw_mode.sbs_cap || hw_mode.dbs_cap) + return CDS_SINGLE_MAC; + else + return CDS_NOP; + } + } else + return CDS_NOP; + case 3: + band1 = cds_chan_to_band(conc_connection_list[0].chan); + band2 = cds_chan_to_band(conc_connection_list[1].chan); + band3 = cds_chan_to_band(conc_connection_list[2].chan); + if ((band1 == CDS_BAND_2GHZ) || (band2 == CDS_BAND_2GHZ) || + (band3 == CDS_BAND_2GHZ)) { + if (!hw_mode.dbs_cap) + return CDS_DBS; + else + return CDS_NOP; + } else if ((band1 == CDS_BAND_5GHZ) && + (band2 == CDS_BAND_5GHZ) && + (band3 == CDS_BAND_5GHZ)) { + if (CDS_IS_CHANNEL_VALID_5G_SBS( + conc_connection_list[0].chan, + conc_connection_list[2].chan) && + CDS_IS_CHANNEL_VALID_5G_SBS( + conc_connection_list[1].chan, + conc_connection_list[2].chan) && + CDS_IS_CHANNEL_VALID_5G_SBS( + conc_connection_list[0].chan, + conc_connection_list[1].chan)) { + if (!hw_mode.sbs_cap) + return CDS_SBS; + else + return CDS_NOP; + } else { + if (hw_mode.sbs_cap || hw_mode.dbs_cap) + return CDS_SINGLE_MAC; + else + return CDS_NOP; + } + } else + return CDS_NOP; + default: + cds_err("unexpected num_connections value %d", + num_connections); + return CDS_NOP; + } +} + +/** + * cds_get_current_pref_hw_mode_dbs_1x1() - Get the current preferred hw mode * * Get the preferred hw mode based on the current connection combinations * * Return: No change (CDS_NOP), MCC (CDS_SINGLE_MAC_UPGRADE), * DBS (CDS_DBS_DOWNGRADE) */ -static enum cds_conc_next_action cds_get_current_pref_hw_mode(void) +static enum cds_conc_next_action cds_get_current_pref_hw_mode_dbs_1x1(void) { uint32_t num_connections; uint8_t band1, band2, band3; @@ -8911,7 +7635,7 @@ QDF_STATUS cds_set_hw_mode_on_channel_switch(uint8_t session_id) qdf_mutex_acquire(&cds_ctx->qdf_conc_list_lock); - action = cds_get_current_pref_hw_mode(); + action = (*cds_get_current_pref_hw_mode_ptr)(); if ((action != CDS_DBS_DOWNGRADE) && (action != CDS_SINGLE_MAC_UPGRADE)) { diff --git a/core/cds/src/cds_reg_service.c b/core/cds/src/cds_reg_service.c index a8bc3e58984c..58a7d68625c5 100644 --- a/core/cds/src/cds_reg_service.c +++ b/core/cds/src/cds_reg_service.c @@ -209,7 +209,7 @@ QDF_STATUS cds_read_default_country(uint8_t *def_ctry) * * Return: enum for the channel */ -static enum channel_enum cds_get_channel_enum(uint32_t chan_num) +enum channel_enum cds_get_channel_enum(uint32_t chan_num) { uint32_t loop; diff --git a/core/wma/inc/wma_api.h b/core/wma/inc/wma_api.h index d6ca6d14e875..9b9ca2bedb11 100644 --- a/core/wma/inc/wma_api.h +++ b/core/wma/inc/wma_api.h @@ -193,6 +193,8 @@ QDF_STATUS wma_get_hw_mode_from_idx(uint32_t idx, struct sir_hw_mode_params *hw_mode); int8_t wma_get_num_dbs_hw_modes(void); bool wma_is_hw_dbs_capable(void); +bool wma_is_hw_sbs_capable(void); +bool wma_is_hw_dbs_2x2_capable(void); int8_t wma_get_mac_id_of_vdev(uint32_t vdev_id); void wma_update_intf_hw_mode_params(uint32_t vdev_id, uint32_t mac_id, uint32_t cfgd_hw_mode_index); diff --git a/core/wma/src/wma_utils.c b/core/wma/src/wma_utils.c index e6e4fd1a0e7b..7cb1c72b7524 100644 --- a/core/wma/src/wma_utils.c +++ b/core/wma/src/wma_utils.c @@ -2914,6 +2914,52 @@ bool wma_is_hw_dbs_capable(void) return false; } +/** + * wma_is_hw_sbs_capable() - Check if HW is SBS capable + * + * Checks if the HW is SBS capable + * + * Return: true if the HW is SBS capable + */ +bool wma_is_hw_sbs_capable(void) +{ + tp_wma_handle wma; + uint32_t param, i, found = 0; + + wma = cds_get_context(QDF_MODULE_ID_WMA); + if (!wma) { + WMA_LOGE("%s: Invalid WMA handle", __func__); + return false; + } + + WMA_LOGI("%s: SBS service bit map: %d", __func__, + WMI_SERVICE_IS_ENABLED(wma->wmi_service_bitmap, + WMI_SERVICE_DUAL_BAND_SIMULTANEOUS_SUPPORT)); + + /* The agreement with FW is that: To know if the target is SBS + * capable, SBS needs to be supported both in the HW mode list + * and DBS needs to be supported in the service ready event + */ + if (!(WMI_SERVICE_IS_ENABLED(wma->wmi_service_bitmap, + WMI_SERVICE_DUAL_BAND_SIMULTANEOUS_SUPPORT))) + return false; + + for (i = 0; i < wma->num_dbs_hw_modes; i++) { + param = wma->hw_mode.hw_mode_list[i]; + WMA_LOGI("%s: HW param: %x", __func__, param); + if (WMA_HW_MODE_SBS_MODE_GET(param)) { + WMA_LOGI("%s: HW (%d) is SBS capable", __func__, i); + found = 1; + break; + } + } + + if (found) + return true; + + return true; +} + /** * wma_get_mac_id_of_vdev() - Get MAC id corresponding to a vdev * @vdev_id: VDEV whose MAC ID is required @@ -3643,3 +3689,62 @@ bool wma_is_p2p_lo_capable(void) return false; } + +/** + * wma_is_hw_dbs_2x2_capable() - if hardware is capable of dbs 2x2 + * + * This function checks if hw_modes supported are always capable of + * DBS 2x2. + * true: DBS 2x2 can always be supported + * false: hw_modes support DBS 1x1 as well + * + * Return: true - DBS2x2, false - DBS1x1 + */ +bool wma_is_hw_dbs_2x2_capable(void) +{ + tp_wma_handle wma; + int i, j = 0, max_mac; + uint32_t ht_2g, ht_5g; + struct extended_caps *phy_caps; + WMI_MAC_PHY_CAPABILITIES *mac_cap; + uint32_t tx_chain, rx_chain, final_min_rf_chains = 0; + uint32_t min_rf_chains, min_2g_rf_chains, min_5g_rf_chains; + + wma = cds_get_context(QDF_MODULE_ID_WMA); + if (!wma) { + WMA_LOGE("%s: Invalid WMA handle", __func__); + return false; + } + + phy_caps = &wma->phy_caps; + for (i = 0; i < phy_caps->num_hw_modes.num_hw_modes; i++) { + if (phy_caps->each_hw_mode_cap[i].phy_id_map == PHY1_PHY2) + max_mac = j + 2; + else + max_mac = j + 1; + for ( ; j < max_mac; j++) { + mac_cap = &phy_caps->each_phy_cap_per_hwmode[j]; + ht_2g = mac_cap->ht_cap_info_2G; + ht_5g = mac_cap->ht_cap_info_5G; + if (ht_5g && ht_2g) { + tx_chain = mac_cap->tx_chain_mask_2G; + rx_chain = mac_cap->rx_chain_mask_2G; + min_2g_rf_chains = QDF_MIN( + wma_get_num_of_setbits_from_bitmask(tx_chain), + wma_get_num_of_setbits_from_bitmask(rx_chain)); + tx_chain = mac_cap->tx_chain_mask_5G; + rx_chain = mac_cap->rx_chain_mask_5G; + min_5g_rf_chains = QDF_MIN( + wma_get_num_of_setbits_from_bitmask(tx_chain), + wma_get_num_of_setbits_from_bitmask(rx_chain)); + min_rf_chains = QDF_MIN(min_2g_rf_chains, + min_5g_rf_chains); + } else { + continue; + } + final_min_rf_chains = QDF_MIN(final_min_rf_chains, + min_rf_chains); + } + } + return (final_min_rf_chains == 2) ? true : false; +}