mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-24 05:29:04 -04:00
qcacmn: restructure policy manager component
Initial changes to move policy manager to host common. Also restructure the functionalities. CRs-Fixed: 2009818 Change-Id: I163fe1f92be07dc4bc6380d889e26ce5d75e5671
This commit is contained in:
parent
1226de9d06
commit
6a8f07ff7a
11 changed files with 7926 additions and 0 deletions
1612
inc/wlan_policy_mgr_api.h
Normal file
1612
inc/wlan_policy_mgr_api.h
Normal file
File diff suppressed because it is too large
Load diff
930
inc/wlan_policy_mgr_public_struct.h
Normal file
930
inc/wlan_policy_mgr_public_struct.h
Normal file
|
|
@ -0,0 +1,930 @@
|
|||
/*
|
||||
* Copyright (c) 2012-2017 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 __WLAN_POLICY_MGR_PUBLIC_STRUCT_H
|
||||
#define __WLAN_POLICY_MGR_PUBLIC_STRUCT_H
|
||||
|
||||
/**
|
||||
* DOC: wlan_policy_mgr_public_struct.h
|
||||
*
|
||||
* Concurrenct Connection Management entity
|
||||
*/
|
||||
|
||||
/* Include files */
|
||||
#include "wmi_unified.h"
|
||||
|
||||
#define POLICY_MGR_MAX_CHANNEL_LIST 128
|
||||
|
||||
/**
|
||||
* enum hw_mode_ss_config - Possible spatial stream configuration
|
||||
* @HW_MODE_SS_0x0: Unused Tx and Rx of MAC
|
||||
* @HW_MODE_SS_1x1: 1 Tx SS and 1 Rx SS
|
||||
* @HW_MODE_SS_2x2: 2 Tx SS and 2 Rx SS
|
||||
* @HW_MODE_SS_3x3: 3 Tx SS and 3 Rx SS
|
||||
* @HW_MODE_SS_4x4: 4 Tx SS and 4 Rx SS
|
||||
*
|
||||
* Note: Right now only 1x1 and 2x2 are being supported. Other modes should
|
||||
* be added when supported. Asymmetric configuration like 1x2, 2x1 are also
|
||||
* not supported now. But, they are still valid. Right now, Tx/Rx SS support is
|
||||
* 4 bits long. So, we can go upto 15x15
|
||||
*/
|
||||
enum hw_mode_ss_config {
|
||||
HW_MODE_SS_0x0,
|
||||
HW_MODE_SS_1x1,
|
||||
HW_MODE_SS_2x2,
|
||||
HW_MODE_SS_3x3,
|
||||
HW_MODE_SS_4x4,
|
||||
};
|
||||
|
||||
/**
|
||||
* enum hw_mode_dbs_capab - DBS HW mode capability
|
||||
* @HW_MODE_DBS_NONE: Non DBS capable
|
||||
* @HW_MODE_DBS: DBS capable
|
||||
*/
|
||||
enum hw_mode_dbs_capab {
|
||||
HW_MODE_DBS_NONE,
|
||||
HW_MODE_DBS,
|
||||
};
|
||||
|
||||
/**
|
||||
* enum hw_mode_agile_dfs_capab - Agile DFS HW mode capability
|
||||
* @HW_MODE_AGILE_DFS_NONE: Non Agile DFS capable
|
||||
* @HW_MODE_AGILE_DFS: Agile DFS capable
|
||||
*/
|
||||
enum hw_mode_agile_dfs_capab {
|
||||
HW_MODE_AGILE_DFS_NONE,
|
||||
HW_MODE_AGILE_DFS,
|
||||
};
|
||||
|
||||
/**
|
||||
* enum hw_mode_sbs_capab - SBS HW mode capability
|
||||
* @HW_MODE_SBS_NONE: Non SBS capable
|
||||
* @HW_MODE_SBS: SBS capable
|
||||
*/
|
||||
enum hw_mode_sbs_capab {
|
||||
HW_MODE_SBS_NONE,
|
||||
HW_MODE_SBS,
|
||||
};
|
||||
|
||||
/**
|
||||
* enum policy_mgr_pcl_group_id - Identifies the pcl groups to be used
|
||||
* @POLICY_MGR_PCL_GROUP_ID1_ID2: Use weights of group1 and group2
|
||||
* @POLICY_MGR_PCL_GROUP_ID2_ID3: Use weights of group2 and group3
|
||||
* @POLICY_MGR_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.
|
||||
*/
|
||||
enum policy_mgr_pcl_group_id {
|
||||
POLICY_MGR_PCL_GROUP_ID1_ID2,
|
||||
POLICY_MGR_PCL_GROUP_ID2_ID3,
|
||||
POLICY_MGR_PCL_GROUP_ID3_ID4,
|
||||
};
|
||||
|
||||
/**
|
||||
* policy_mgr_pcl_channel_order - Order in which the PCL is requested
|
||||
* @POLICY_MGR_PCL_ORDER_NONE: no order
|
||||
* @POLICY_MGR_PCL_ORDER_24G_THEN_5G: 2.4 Ghz channel followed by 5 Ghz channel
|
||||
* @POLICY_MGR_PCL_ORDER_5G_THEN_2G: 5 Ghz channel followed by 2.4 Ghz channel
|
||||
*
|
||||
* Order in which the PCL is requested
|
||||
*/
|
||||
enum policy_mgr_pcl_channel_order {
|
||||
POLICY_MGR_PCL_ORDER_NONE,
|
||||
POLICY_MGR_PCL_ORDER_24G_THEN_5G,
|
||||
POLICY_MGR_PCL_ORDER_5G_THEN_2G,
|
||||
};
|
||||
|
||||
/**
|
||||
* enum policy_mgr_max_rx_ss - Maximum number of receive spatial streams
|
||||
* @POLICY_MGR_RX_NSS_1: Receive Nss = 1
|
||||
* @POLICY_MGR_RX_NSS_2: Receive Nss = 2
|
||||
* @POLICY_MGR_RX_NSS_3: Receive Nss = 3
|
||||
* @POLICY_MGR_RX_NSS_4: Receive Nss = 4
|
||||
* @POLICY_MGR_RX_NSS_5: Receive Nss = 5
|
||||
* @POLICY_MGR_RX_NSS_6: Receive Nss = 6
|
||||
* @POLICY_MGR_RX_NSS_7: Receive Nss = 7
|
||||
* @POLICY_MGR_RX_NSS_8: Receive Nss = 8
|
||||
*
|
||||
* Indicates the maximum number of spatial streams that the STA can receive
|
||||
*/
|
||||
enum policy_mgr_max_rx_ss {
|
||||
POLICY_MGR_RX_NSS_1 = 0,
|
||||
POLICY_MGR_RX_NSS_2 = 1,
|
||||
POLICY_MGR_RX_NSS_3 = 2,
|
||||
POLICY_MGR_RX_NSS_4 = 3,
|
||||
POLICY_MGR_RX_NSS_5 = 4,
|
||||
POLICY_MGR_RX_NSS_6 = 5,
|
||||
POLICY_MGR_RX_NSS_7 = 6,
|
||||
POLICY_MGR_RX_NSS_8 = 7,
|
||||
POLICY_MGR_RX_NSS_MAX,
|
||||
};
|
||||
|
||||
/**
|
||||
* enum policy_mgr_chain_mode - Chain Mask tx & rx combination.
|
||||
*
|
||||
* @POLICY_MGR_ONE_ONE: One for Tx, One for Rx
|
||||
* @POLICY_MGR_TWO_TWO: Two for Tx, Two for Rx
|
||||
* @POLICY_MGR_MAX_NO_OF_CHAIN_MODE: Max place holder
|
||||
*
|
||||
* These are generic IDs that identify the various roles
|
||||
* in the software system
|
||||
*/
|
||||
enum policy_mgr_chain_mode {
|
||||
POLICY_MGR_ONE_ONE = 0,
|
||||
POLICY_MGR_TWO_TWO,
|
||||
POLICY_MGR_MAX_NO_OF_CHAIN_MODE
|
||||
};
|
||||
|
||||
/**
|
||||
* enum policy_mgr_conc_priority_mode - t/p, powersave, latency.
|
||||
*
|
||||
* @PM_THROUGHPUT: t/p is the priority
|
||||
* @PM_POWERSAVE: powersave is the priority
|
||||
* @PM_LATENCY: latency is the priority
|
||||
* @PM_MAX_CONC_PRIORITY_MODE: Max place holder
|
||||
*
|
||||
* These are generic IDs that identify the various roles
|
||||
* in the software system
|
||||
*/
|
||||
enum policy_mgr_conc_priority_mode {
|
||||
PM_THROUGHPUT = 0,
|
||||
PM_POWERSAVE,
|
||||
PM_LATENCY,
|
||||
PM_MAX_CONC_PRIORITY_MODE
|
||||
};
|
||||
|
||||
/**
|
||||
* enum policy_mgr_con_mode - concurrency mode for PCL table
|
||||
*
|
||||
* @PM_STA_MODE: station mode
|
||||
* @PM_SAP_MODE: SAP mode
|
||||
* @PM_P2P_CLIENT_MODE: P2P client mode
|
||||
* @PM_P2P_GO_MODE: P2P Go mode
|
||||
* @PM_IBSS_MODE: IBSS mode
|
||||
* @PM_MAX_NUM_OF_MODE: max value place holder
|
||||
*/
|
||||
enum policy_mgr_con_mode {
|
||||
PM_STA_MODE = 0,
|
||||
PM_SAP_MODE,
|
||||
PM_P2P_CLIENT_MODE,
|
||||
PM_P2P_GO_MODE,
|
||||
PM_IBSS_MODE,
|
||||
PM_MAX_NUM_OF_MODE
|
||||
};
|
||||
|
||||
/**
|
||||
* enum policy_mgr_mac_use - MACs that are used
|
||||
* @POLICY_MGR_MAC0: Only MAC0 is used
|
||||
* @POLICY_MGR_MAC1: Only MAC1 is used
|
||||
* @POLICY_MGR_MAC0_AND_MAC1: Both MAC0 and MAC1 are used
|
||||
*/
|
||||
enum policy_mgr_mac_use {
|
||||
POLICY_MGR_MAC0 = 1,
|
||||
POLICY_MGR_MAC1 = 2,
|
||||
POLICY_MGR_MAC0_AND_MAC1 = 3
|
||||
};
|
||||
|
||||
/**
|
||||
* enum policy_mgr_pcl_type - Various types of Preferred channel list (PCL).
|
||||
*
|
||||
* @PM_NONE: No channel preference
|
||||
* @PM_24G: 2.4 Ghz channels only
|
||||
* @PM_5G: 5 Ghz channels only
|
||||
* @PM_SCC_CH: SCC channel only
|
||||
* @PM_MCC_CH: MCC channels only
|
||||
* @PM_SBS_CH: SBS channels only
|
||||
* @PM_SCC_CH_24G: SCC channel & 2.4 Ghz channels
|
||||
* @PM_SCC_CH_5G: SCC channel & 5 Ghz channels
|
||||
* @PM_24G_SCC_CH: 2.4 Ghz channels & SCC channel
|
||||
* @PM_5G_SCC_CH: 5 Ghz channels & SCC channel
|
||||
* @PM_SCC_ON_5_SCC_ON_24_24G: SCC channel on 5 Ghz, SCC
|
||||
* channel on 2.4 Ghz & 2.4 Ghz channels
|
||||
* @PM_SCC_ON_5_SCC_ON_24_5G: SCC channel on 5 Ghz, SCC channel
|
||||
* on 2.4 Ghz & 5 Ghz channels
|
||||
* @PM_SCC_ON_24_SCC_ON_5_24G: SCC channel on 2.4 Ghz, SCC
|
||||
* channel on 5 Ghz & 2.4 Ghz channels
|
||||
* @PM_SCC_ON_24_SCC_ON_5_5G: SCC channel on 2.4 Ghz, SCC
|
||||
* channel on 5 Ghz & 5 Ghz channels
|
||||
* @PM_SCC_ON_5_SCC_ON_24: SCC channel on 5 Ghz, SCC channel on
|
||||
* 2.4 Ghz
|
||||
* @PM_SCC_ON_24_SCC_ON_5: SCC channel on 2.4 Ghz, SCC channel
|
||||
* on 5 Ghz
|
||||
* @PM_MCC_CH_24G: MCC channels & 2.4 Ghz channels
|
||||
* @PM_MCC_CH_5G: MCC channels & 5 Ghz channels
|
||||
* @PM_24G_MCC_CH: 2.4 Ghz channels & MCC channels
|
||||
* @PM_5G_MCC_CH: 5 Ghz channels & MCC channels
|
||||
* @PM_SBS_CH_5G: SBS channels & rest of 5 Ghz channels
|
||||
* @PM_24G_SCC_CH_SBS_CH: 2.4 Ghz channels, SCC channel & SBS channels
|
||||
* @PM_24G_SCC_CH_SBS_CH_5G: 2.4 Ghz channels, SCC channel,
|
||||
* SBS channels & rest of the 5G channels
|
||||
* @PM_24G_SBS_CH_MCC_CH: 2.4 Ghz channels, SBS channels & MCC channels
|
||||
* @PM_MAX_PCL_TYPE: Max place holder
|
||||
*
|
||||
* These are generic IDs that identify the various roles
|
||||
* in the software system
|
||||
*/
|
||||
enum policy_mgr_pcl_type {
|
||||
PM_NONE = 0,
|
||||
PM_24G,
|
||||
PM_5G,
|
||||
PM_SCC_CH,
|
||||
PM_MCC_CH,
|
||||
PM_SBS_CH,
|
||||
PM_SCC_CH_24G,
|
||||
PM_SCC_CH_5G,
|
||||
PM_24G_SCC_CH,
|
||||
PM_5G_SCC_CH,
|
||||
PM_SCC_ON_5_SCC_ON_24_24G,
|
||||
PM_SCC_ON_5_SCC_ON_24_5G,
|
||||
PM_SCC_ON_24_SCC_ON_5_24G,
|
||||
PM_SCC_ON_24_SCC_ON_5_5G,
|
||||
PM_SCC_ON_5_SCC_ON_24,
|
||||
PM_SCC_ON_24_SCC_ON_5,
|
||||
PM_MCC_CH_24G,
|
||||
PM_MCC_CH_5G,
|
||||
PM_24G_MCC_CH,
|
||||
PM_5G_MCC_CH,
|
||||
PM_SBS_CH_5G,
|
||||
PM_24G_SCC_CH_SBS_CH,
|
||||
PM_24G_SCC_CH_SBS_CH_5G,
|
||||
PM_24G_SBS_CH_MCC_CH,
|
||||
|
||||
PM_MAX_PCL_TYPE
|
||||
};
|
||||
|
||||
/**
|
||||
* enum policy_mgr_one_connection_mode - Combination of first connection
|
||||
* type, band & spatial stream used.
|
||||
*
|
||||
* @PM_STA_24_1x1: STA connection using 1x1@2.4 Ghz
|
||||
* @PM_STA_24_2x2: STA connection using 2x2@2.4 Ghz
|
||||
* @PM_STA_5_1x1: STA connection using 1x1@5 Ghz
|
||||
* @PM_STA_5_2x2: STA connection using 2x2@5 Ghz
|
||||
* @PM_P2P_CLI_24_1x1: P2P Client connection using 1x1@2.4 Ghz
|
||||
* @PM_P2P_CLI_24_2x2: P2P Client connection using 2x2@2.4 Ghz
|
||||
* @PM_P2P_CLI_5_1x1: P2P Client connection using 1x1@5 Ghz
|
||||
* @PM_P2P_CLI_5_2x2: P2P Client connection using 2x2@5 Ghz
|
||||
* @PM_P2P_GO_24_1x1: P2P GO connection using 1x1@2.4 Ghz
|
||||
* @PM_P2P_GO_24_2x2: P2P GO connection using 2x2@2.4 Ghz
|
||||
* @PM_P2P_GO_5_1x1: P2P GO connection using 1x1@5 Ghz
|
||||
* @PM_P2P_GO_5_2x2: P2P GO connection using 2x2@5 Ghz
|
||||
* @PM_SAP_24_1x1: SAP connection using 1x1@2.4 Ghz
|
||||
* @PM_SAP_24_2x2: SAP connection using 2x2@2.4 Ghz
|
||||
* @PM_SAP_5_1x1: SAP connection using 1x1@5 Ghz
|
||||
* @PM_SAP_5_1x1: SAP connection using 2x2@5 Ghz
|
||||
* @PM_IBSS_24_1x1: IBSS connection using 1x1@2.4 Ghz
|
||||
* @PM_IBSS_24_2x2: IBSS connection using 2x2@2.4 Ghz
|
||||
* @PM_IBSS_5_1x1: IBSS connection using 1x1@5 Ghz
|
||||
* @PM_IBSS_5_2x2: IBSS connection using 2x2@5 Ghz
|
||||
* @PM_MAX_ONE_CONNECTION_MODE: Max place holder
|
||||
*
|
||||
* These are generic IDs that identify the various roles
|
||||
* in the software system
|
||||
*/
|
||||
enum policy_mgr_one_connection_mode {
|
||||
PM_STA_24_1x1 = 0,
|
||||
PM_STA_24_2x2,
|
||||
PM_STA_5_1x1,
|
||||
PM_STA_5_2x2,
|
||||
PM_P2P_CLI_24_1x1,
|
||||
PM_P2P_CLI_24_2x2,
|
||||
PM_P2P_CLI_5_1x1,
|
||||
PM_P2P_CLI_5_2x2,
|
||||
PM_P2P_GO_24_1x1,
|
||||
PM_P2P_GO_24_2x2,
|
||||
PM_P2P_GO_5_1x1,
|
||||
PM_P2P_GO_5_2x2,
|
||||
PM_SAP_24_1x1,
|
||||
PM_SAP_24_2x2,
|
||||
PM_SAP_5_1x1,
|
||||
PM_SAP_5_2x2,
|
||||
PM_IBSS_24_1x1,
|
||||
PM_IBSS_24_2x2,
|
||||
PM_IBSS_5_1x1,
|
||||
PM_IBSS_5_2x2,
|
||||
|
||||
PM_MAX_ONE_CONNECTION_MODE
|
||||
};
|
||||
|
||||
/**
|
||||
* enum policy_mgr_two_connection_mode - Combination of first two
|
||||
* connections type, concurrency state, band & spatial stream
|
||||
* used.
|
||||
*
|
||||
* @PM_STA_SAP_SCC_24_1x1: STA & SAP connection on SCC using
|
||||
* 1x1@2.4 Ghz
|
||||
* @PM_STA_SAP_SCC_24_2x2: STA & SAP connection on SCC using
|
||||
* 2x2@2.4 Ghz
|
||||
* @PM_STA_SAP_MCC_24_1x1: STA & SAP connection on MCC using
|
||||
* 1x1@2.4 Ghz
|
||||
* @PM_STA_SAP_MCC_24_2x2: STA & SAP connection on MCC using
|
||||
* 2x2@2.4 Ghz
|
||||
* @PM_STA_SAP_SCC_5_1x1: STA & SAP connection on SCC using
|
||||
* 1x1@5 Ghz
|
||||
* @PM_STA_SAP_SCC_5_2x2: STA & SAP connection on SCC using
|
||||
* 2x2@5 Ghz
|
||||
* @PM_STA_SAP_MCC_5_1x1: STA & SAP connection on MCC using
|
||||
* 1x1@5 Ghz
|
||||
* @PM_STA_SAP_MCC_5_2x2: STA & SAP connection on MCC using
|
||||
* 2x2@5 Ghz
|
||||
* @PM_STA_SAP_DBS_1x1: STA & SAP connection on DBS using 1x1
|
||||
* @PM_STA_SAP_DBS_2x2: STA & SAP connection on DBS using 2x2
|
||||
* @PM_STA_SAP_SBS_5_1x1: STA & SAP connection on 5G SBS using 1x1
|
||||
* @PM_STA_P2P_GO_SCC_24_1x1: STA & P2P GO connection on SCC
|
||||
* using 1x1@2.4 Ghz
|
||||
* @PM_STA_P2P_GO_SCC_24_2x2: STA & P2P GO connection on SCC
|
||||
* using 2x2@2.4 Ghz
|
||||
* @PM_STA_P2P_GO_MCC_24_1x1: STA & P2P GO connection on MCC
|
||||
* using 1x1@2.4 Ghz
|
||||
* @PM_STA_P2P_GO_MCC_24_2x2: STA & P2P GO connection on MCC
|
||||
* using 2x2@2.4 Ghz
|
||||
* @PM_STA_P2P_GO_SCC_5_1x1: STA & P2P GO connection on SCC
|
||||
* using 1x1@5 Ghz
|
||||
* @PM_STA_P2P_GO_SCC_5_2x2: STA & P2P GO connection on SCC
|
||||
* using 2x2@5 Ghz
|
||||
* @PM_STA_P2P_GO_MCC_5_1x1: STA & P2P GO connection on MCC
|
||||
* using 1x1@5 Ghz
|
||||
* @PM_STA_P2P_GO_MCC_5_2x2: STA & P2P GO connection on MCC
|
||||
* using 2x2@5 Ghz
|
||||
* @PM_STA_P2P_GO_DBS_1x1: STA & P2P GO connection on DBS using
|
||||
* 1x1
|
||||
* @PM_STA_P2P_GO_DBS_2x2: STA & P2P GO connection on DBS using
|
||||
* 2x2
|
||||
* @PM_STA_P2P_GO_SBS_5_1x1: STA & P2P GO connection on 5G SBS
|
||||
* using 1x1
|
||||
* @PM_STA_P2P_CLI_SCC_24_1x1: STA & P2P CLI connection on SCC
|
||||
* using 1x1@2.4 Ghz
|
||||
* @PM_STA_P2P_CLI_SCC_24_2x2: STA & P2P CLI connection on SCC
|
||||
* using 2x2@2.4 Ghz
|
||||
* @PM_STA_P2P_CLI_MCC_24_1x1: STA & P2P CLI connection on MCC
|
||||
* using 1x1@2.4 Ghz
|
||||
* @PM_STA_P2P_CLI_MCC_24_2x2: STA & P2P CLI connection on MCC
|
||||
* using 2x2@2.4 Ghz
|
||||
* @PM_STA_P2P_CLI_SCC_5_1x1: STA & P2P CLI connection on SCC
|
||||
* using 1x1@5 Ghz
|
||||
* @PM_STA_P2P_CLI_SCC_5_2x2: STA & P2P CLI connection on SCC
|
||||
* using 2x2@5 Ghz
|
||||
* @PM_STA_P2P_CLI_MCC_5_1x1: STA & P2P CLI connection on MCC
|
||||
* using 1x1@5 Ghz
|
||||
* @PM_STA_P2P_CLI_MCC_5_2x2: STA & P2P CLI connection on MCC
|
||||
* using 2x2@5 Ghz
|
||||
* @PM_STA_P2P_CLI_DBS_1x1: STA & P2P CLI connection on DBS
|
||||
* using 1x1
|
||||
* @PM_STA_P2P_CLI_DBS_2x2: STA & P2P CLI connection on DBS
|
||||
* using 2x2
|
||||
* @PM_STA_P2P_CLI_SBS_5_1x1: STA & P2P CLI connection on 5G
|
||||
* SBS using 1x1
|
||||
* @PM_P2P_GO_P2P_CLI_SCC_24_1x1: P2P GO & CLI connection on
|
||||
* SCC using 1x1@2.4 Ghz
|
||||
* @PM_P2P_GO_P2P_CLI_SCC_24_2x2: P2P GO & CLI connection on
|
||||
* SCC using 2x2@2.4 Ghz
|
||||
* @PM_P2P_GO_P2P_CLI_MCC_24_1x1: P2P GO & CLI connection on
|
||||
* MCC using 1x1@2.4 Ghz
|
||||
* @PM_P2P_GO_P2P_CLI_MCC_24_2x2: P2P GO & CLI connection on
|
||||
* MCC using 2x2@2.4 Ghz
|
||||
* @PM_P2P_GO_P2P_CLI_SCC_5_1x1: P2P GO & CLI connection on
|
||||
* SCC using 1x1@5 Ghz
|
||||
* @PM_P2P_GO_P2P_CLI_SCC_5_2x2: P2P GO & CLI connection on
|
||||
* SCC using 2x2@5 Ghz
|
||||
* @PM_P2P_GO_P2P_CLI_MCC_5_1x1: P2P GO & CLI connection on
|
||||
* MCC using 1x1@5 Ghz
|
||||
* @PM_P2P_GO_P2P_CLI_MCC_5_2x2: P2P GO & CLI connection on
|
||||
* MCC using 2x2@5 Ghz
|
||||
* @PM_P2P_GO_P2P_CLI_DBS_1x1: P2P GO & CLI connection on DBS
|
||||
* using 1x1
|
||||
* @PM_P2P_GO_P2P_CLI_DBS_2x2: P2P GO & P2P CLI connection
|
||||
* on DBS using 2x2
|
||||
* @PM_P2P_GO_P2P_CLI_SBS_5_1x1: P2P GO & P2P CLI connection
|
||||
* on 5G SBS using 1x1
|
||||
* @PM_P2P_GO_SAP_SCC_24_1x1: P2P GO & SAP connection on
|
||||
* SCC using 1x1@2.4 Ghz
|
||||
* @PM_P2P_GO_SAP_SCC_24_2x2: P2P GO & SAP connection on
|
||||
* SCC using 2x2@2.4 Ghz
|
||||
* @PM_P2P_GO_SAP_MCC_24_1x1: P2P GO & SAP connection on
|
||||
* MCC using 1x1@2.4 Ghz
|
||||
* @PM_P2P_GO_SAP_MCC_24_2x2: P2P GO & SAP connection on
|
||||
* MCC using 2x2@2.4 Ghz
|
||||
* @PM_P2P_GO_SAP_SCC_5_1x1: P2P GO & SAP connection on
|
||||
* SCC using 1x1@5 Ghz
|
||||
* @PM_P2P_GO_SAP_SCC_5_2x2: P2P GO & SAP connection on
|
||||
* SCC using 2x2@5 Ghz
|
||||
* @PM_P2P_GO_SAP_MCC_5_1x1: P2P GO & SAP connection on
|
||||
* MCC using 1x1@5 Ghz
|
||||
* @PM_P2P_GO_SAP_MCC_5_2x2: P2P GO & SAP connection on
|
||||
* MCC using 2x2@5 Ghz
|
||||
* @PM_P2P_GO_SAP_DBS_1x1: P2P GO & SAP connection on DBS using
|
||||
* 1x1
|
||||
* @PM_P2P_GO_SAP_DBS_2x2: P2P GO & SAP connection on DBS using
|
||||
* 2x2
|
||||
* @PM_P2P_GO_SAP_SBS_5_1x1: P2P GO & SAP connection on 5G SBS
|
||||
* using 1x1
|
||||
* @PM_P2P_CLI_SAP_SCC_24_1x1: CLI & SAP connection on SCC using
|
||||
* 1x1@2.4 Ghz
|
||||
* @PM_P2P_CLI_SAP_SCC_24_2x2: CLI & SAP connection on SCC using
|
||||
* 2x2@2.4 Ghz
|
||||
* @PM_P2P_CLI_SAP_MCC_24_1x1: CLI & SAP connection on MCC using
|
||||
* 1x1@2.4 Ghz
|
||||
* @PM_P2P_CLI_SAP_MCC_24_2x2: CLI & SAP connection on MCC using
|
||||
* 2x2@2.4 Ghz
|
||||
* @PM_P2P_CLI_SAP_SCC_5_1x1: CLI & SAP connection on SCC using
|
||||
* 1x1@5 Ghz
|
||||
* @PM_P2P_CLI_SAP_SCC_5_2x2: CLI & SAP connection on SCC using
|
||||
* 2x2@5 Ghz
|
||||
* @PM_P2P_CLI_SAP_MCC_5_1x1: CLI & SAP connection on MCC using
|
||||
* 1x1@5 Ghz
|
||||
* @PM_P2P_CLI_SAP_MCC_5_2x2: CLI & SAP connection on MCC using
|
||||
* 2x2@5 Ghz
|
||||
* @POLICY_MGR_P2P_STA_SAP_MCC_24_5_1x1: CLI and SAP connecting on MCC
|
||||
* in 2.4 and 5GHz 1x1
|
||||
* @POLICY_MGR_P2P_STA_SAP_MCC_24_5_2x2: CLI and SAP connecting on MCC
|
||||
* in 2.4 and 5GHz 2x2
|
||||
* @PM_P2P_CLI_SAP_DBS_1x1,: CLI & SAP connection on DBS using 1x1
|
||||
* @PM_P2P_CLI_SAP_DBS_2x2: P2P CLI & SAP connection on DBS using
|
||||
* 2x2
|
||||
* @PM_P2P_CLI_SAP_SBS_5_1x1: P2P CLI & SAP connection on 5G SBS
|
||||
* using 1x1
|
||||
* @PM_SAP_SAP_SCC_24_1x1: SAP & SAP connection on
|
||||
* SCC using 1x1@2.4 Ghz
|
||||
* @PM_SAP_SAP_SCC_24_2x2: SAP & SAP connection on
|
||||
* SCC using 2x2@2.4 Ghz
|
||||
* @PM_SAP_SAP_MCC_24_1x1: SAP & SAP connection on
|
||||
* MCC using 1x1@2.4 Ghz
|
||||
* @PM_SAP_SAP_MCC_24_2x2: SAP & SAP connection on
|
||||
* MCC using 2x2@2.4 Ghz
|
||||
* @PM_SAP_SAP_SCC_5_1x1: SAP & SAP connection on
|
||||
* SCC using 1x1@5 Ghz
|
||||
* @PM_SAP_SAP_SCC_5_2x2: SAP & SAP connection on
|
||||
* SCC using 2x2@5 Ghz
|
||||
* @PM_SAP_SAP_MCC_5_1x1: SAP & SAP connection on
|
||||
* MCC using 1x1@5 Ghz
|
||||
* @PM_SAP_SAP_MCC_5_2x2: SAP & SAP connection on
|
||||
* MCC using 2x2@5 Ghz
|
||||
* @PM_SAP_SAP_MCC_24_5_1x1: SAP & SAP connection on
|
||||
* MCC in 2.4 and 5GHz 1x1
|
||||
* @PM_SAP_SAP_MCC_24_5_2x2: SAP & SAP connection on
|
||||
* MCC in 2.4 and 5GHz 2x2
|
||||
* @PM_SAP_SAP_DBS_1x1: SAP & SAP connection on DBS using
|
||||
* 1x1
|
||||
* @PM_SAP_SAP_DBS_2x2: SAP & SAP connection on DBS using 2x2
|
||||
* @PM_SAP_SAP_SBS_5_1x1: SAP & SAP connection on 5G SBS using 1x1
|
||||
* @PM_STA_STA_SCC_24_1x1: STA & STA connection on
|
||||
* SCC using 1x1@2.4 Ghz
|
||||
* @PM_STA_STA_SCC_24_2x2: STA & STA connection on
|
||||
* SCC using 2x2@2.4 Ghz
|
||||
* @PM_STA_STA_MCC_24_1x1: STA & STA connection on
|
||||
* MCC using 1x1@2.4 Ghz
|
||||
* @PM_STA_STA_MCC_24_2x2: STA & STA connection on
|
||||
* MCC using 2x2@2.4 Ghz
|
||||
* @PM_STA_STA_SCC_5_1x1: STA & STA connection on
|
||||
* SCC using 1x1@5 Ghz
|
||||
* @PM_STA_STA_SCC_5_2x2: STA & STA connection on
|
||||
* SCC using 2x2@5 Ghz
|
||||
* @PM_STA_STA_MCC_5_1x1: STA & STA connection on
|
||||
* MCC using 1x1@5 Ghz
|
||||
* @PM_STA_STA_MCC_5_2x2: STA & STA connection on
|
||||
* MCC using 2x2@5 Ghz
|
||||
* @PM_STA_STA_MCC_24_5_1x1: STA & STA connection on
|
||||
* MCC in 2.4 and 5GHz 1x1
|
||||
* @PM_STA_STA_MCC_24_5_2x2: STA & STA connection on
|
||||
* MCC in 2.4 and 5GHz 2x2
|
||||
* @PM_STA_STA_DBS_1x1: STA & STA connection on DBS using
|
||||
* 1x1
|
||||
* @PM_STA_STA_DBS_2x2: STA & STA connection on DBS using 2x2
|
||||
* @PM_STA_STA_SBS_5_1x1: STA & STA connection on 5G SBS using 1x1
|
||||
*
|
||||
* These are generic IDs that identify the various roles in the
|
||||
* software system
|
||||
*/
|
||||
enum policy_mgr_two_connection_mode {
|
||||
PM_STA_SAP_SCC_24_1x1 = 0,
|
||||
PM_STA_SAP_SCC_24_2x2,
|
||||
PM_STA_SAP_MCC_24_1x1,
|
||||
PM_STA_SAP_MCC_24_2x2,
|
||||
PM_STA_SAP_SCC_5_1x1,
|
||||
PM_STA_SAP_SCC_5_2x2,
|
||||
PM_STA_SAP_MCC_5_1x1,
|
||||
PM_STA_SAP_MCC_5_2x2,
|
||||
PM_STA_SAP_MCC_24_5_1x1,
|
||||
PM_STA_SAP_MCC_24_5_2x2,
|
||||
PM_STA_SAP_DBS_1x1,
|
||||
PM_STA_SAP_DBS_2x2,
|
||||
PM_STA_SAP_SBS_5_1x1,
|
||||
PM_STA_P2P_GO_SCC_24_1x1,
|
||||
PM_STA_P2P_GO_SCC_24_2x2,
|
||||
PM_STA_P2P_GO_MCC_24_1x1,
|
||||
PM_STA_P2P_GO_MCC_24_2x2,
|
||||
PM_STA_P2P_GO_SCC_5_1x1,
|
||||
PM_STA_P2P_GO_SCC_5_2x2,
|
||||
PM_STA_P2P_GO_MCC_5_1x1,
|
||||
PM_STA_P2P_GO_MCC_5_2x2,
|
||||
PM_STA_P2P_GO_MCC_24_5_1x1,
|
||||
PM_STA_P2P_GO_MCC_24_5_2x2,
|
||||
PM_STA_P2P_GO_DBS_1x1,
|
||||
PM_STA_P2P_GO_DBS_2x2,
|
||||
PM_STA_P2P_GO_SBS_5_1x1,
|
||||
PM_STA_P2P_CLI_SCC_24_1x1,
|
||||
PM_STA_P2P_CLI_SCC_24_2x2,
|
||||
PM_STA_P2P_CLI_MCC_24_1x1,
|
||||
PM_STA_P2P_CLI_MCC_24_2x2,
|
||||
PM_STA_P2P_CLI_SCC_5_1x1,
|
||||
PM_STA_P2P_CLI_SCC_5_2x2,
|
||||
PM_STA_P2P_CLI_MCC_5_1x1,
|
||||
PM_STA_P2P_CLI_MCC_5_2x2,
|
||||
PM_STA_P2P_CLI_MCC_24_5_1x1,
|
||||
PM_STA_P2P_CLI_MCC_24_5_2x2,
|
||||
PM_STA_P2P_CLI_DBS_1x1,
|
||||
PM_STA_P2P_CLI_DBS_2x2,
|
||||
PM_STA_P2P_CLI_SBS_5_1x1,
|
||||
PM_P2P_GO_P2P_CLI_SCC_24_1x1,
|
||||
PM_P2P_GO_P2P_CLI_SCC_24_2x2,
|
||||
PM_P2P_GO_P2P_CLI_MCC_24_1x1,
|
||||
PM_P2P_GO_P2P_CLI_MCC_24_2x2,
|
||||
PM_P2P_GO_P2P_CLI_SCC_5_1x1,
|
||||
PM_P2P_GO_P2P_CLI_SCC_5_2x2,
|
||||
PM_P2P_GO_P2P_CLI_MCC_5_1x1,
|
||||
PM_P2P_GO_P2P_CLI_MCC_5_2x2,
|
||||
PM_P2P_GO_P2P_CLI_MCC_24_5_1x1,
|
||||
PM_P2P_GO_P2P_CLI_MCC_24_5_2x2,
|
||||
PM_P2P_GO_P2P_CLI_DBS_1x1,
|
||||
PM_P2P_GO_P2P_CLI_DBS_2x2,
|
||||
PM_P2P_GO_P2P_CLI_SBS_5_1x1,
|
||||
PM_P2P_GO_SAP_SCC_24_1x1,
|
||||
PM_P2P_GO_SAP_SCC_24_2x2,
|
||||
PM_P2P_GO_SAP_MCC_24_1x1,
|
||||
PM_P2P_GO_SAP_MCC_24_2x2,
|
||||
PM_P2P_GO_SAP_SCC_5_1x1,
|
||||
PM_P2P_GO_SAP_SCC_5_2x2,
|
||||
PM_P2P_GO_SAP_MCC_5_1x1,
|
||||
PM_P2P_GO_SAP_MCC_5_2x2,
|
||||
PM_P2P_GO_SAP_MCC_24_5_1x1,
|
||||
PM_P2P_GO_SAP_MCC_24_5_2x2,
|
||||
PM_P2P_GO_SAP_DBS_1x1,
|
||||
PM_P2P_GO_SAP_DBS_2x2,
|
||||
PM_P2P_GO_SAP_SBS_5_1x1,
|
||||
PM_P2P_CLI_SAP_SCC_24_1x1,
|
||||
PM_P2P_CLI_SAP_SCC_24_2x2,
|
||||
PM_P2P_CLI_SAP_MCC_24_1x1,
|
||||
PM_P2P_CLI_SAP_MCC_24_2x2,
|
||||
PM_P2P_CLI_SAP_SCC_5_1x1,
|
||||
PM_P2P_CLI_SAP_SCC_5_2x2,
|
||||
PM_P2P_CLI_SAP_MCC_5_1x1,
|
||||
PM_P2P_CLI_SAP_MCC_5_2x2,
|
||||
PM_P2P_CLI_SAP_MCC_24_5_1x1,
|
||||
PM_P2P_CLI_SAP_MCC_24_5_2x2,
|
||||
PM_P2P_CLI_SAP_DBS_1x1,
|
||||
PM_P2P_CLI_SAP_DBS_2x2,
|
||||
PM_P2P_CLI_SAP_SBS_5_1x1,
|
||||
PM_SAP_SAP_SCC_24_1x1,
|
||||
PM_SAP_SAP_SCC_24_2x2,
|
||||
PM_SAP_SAP_MCC_24_1x1,
|
||||
PM_SAP_SAP_MCC_24_2x2,
|
||||
PM_SAP_SAP_SCC_5_1x1,
|
||||
PM_SAP_SAP_SCC_5_2x2,
|
||||
PM_SAP_SAP_MCC_5_1x1,
|
||||
PM_SAP_SAP_MCC_5_2x2,
|
||||
PM_SAP_SAP_MCC_24_5_1x1,
|
||||
PM_SAP_SAP_MCC_24_5_2x2,
|
||||
PM_SAP_SAP_DBS_1x1,
|
||||
PM_SAP_SAP_DBS_2x2,
|
||||
PM_SAP_SAP_SBS_5_1x1,
|
||||
PM_STA_STA_SCC_24_1x1,
|
||||
PM_STA_STA_SCC_24_2x2,
|
||||
PM_STA_STA_MCC_24_1x1,
|
||||
PM_STA_STA_MCC_24_2x2,
|
||||
PM_STA_STA_SCC_5_1x1,
|
||||
PM_STA_STA_SCC_5_2x2,
|
||||
PM_STA_STA_MCC_5_1x1,
|
||||
PM_STA_STA_MCC_5_2x2,
|
||||
PM_STA_STA_MCC_24_5_1x1,
|
||||
PM_STA_STA_MCC_24_5_2x2,
|
||||
PM_STA_STA_DBS_1x1,
|
||||
PM_STA_STA_DBS_2x2,
|
||||
PM_STA_STA_SBS_5_1x1,
|
||||
|
||||
PM_MAX_TWO_CONNECTION_MODE
|
||||
};
|
||||
|
||||
/**
|
||||
* enum policy_mgr_conc_next_action - actions to be taken on old
|
||||
* connections.
|
||||
*
|
||||
* @PM_NOP: No action
|
||||
* @PM_DBS: switch to DBS mode
|
||||
* @PM_DBS_DOWNGRADE: switch to DBS mode & downgrade to 1x1
|
||||
* @PM_DBS_UPGRADE: switch to DBS mode & upgrade to 2x2
|
||||
* @PM_SINGLE_MAC: switch to MCC/SCC mode
|
||||
* @PM_SINGLE_MAC_UPGRADE: switch to MCC/SCC mode & upgrade to 2x2
|
||||
* @PM_SBS: switch to SBS mode
|
||||
* @PM_SBS_DOWNGRADE: switch to SBS mode & downgrade to 1x1
|
||||
* @PM_MAX_CONC_PRIORITY_MODE: Max place holder
|
||||
*
|
||||
* These are generic IDs that identify the various roles
|
||||
* in the software system
|
||||
*/
|
||||
enum policy_mgr_conc_next_action {
|
||||
PM_NOP = 0,
|
||||
PM_DBS,
|
||||
PM_DBS_DOWNGRADE,
|
||||
PM_DBS_UPGRADE,
|
||||
PM_SINGLE_MAC,
|
||||
PM_SINGLE_MAC_UPGRADE,
|
||||
PM_SBS,
|
||||
PM_SBS_DOWNGRADE,
|
||||
|
||||
PM_MAX_CONC_NEXT_ACTION
|
||||
};
|
||||
|
||||
/**
|
||||
* enum policy_mgr_band - wifi band.
|
||||
*
|
||||
* @POLICY_MGR_BAND_24: 2.4 Ghz band
|
||||
* @POLICY_MGR_BAND_5: 5 Ghz band
|
||||
* @POLICY_MGR_MAX_BAND: Max place holder
|
||||
*
|
||||
* These are generic IDs that identify the various roles
|
||||
* in the software system
|
||||
*/
|
||||
enum policy_mgr_band {
|
||||
POLICY_MGR_BAND_24 = 0,
|
||||
POLICY_MGR_BAND_5,
|
||||
POLICY_MGR_MAX_BAND
|
||||
};
|
||||
|
||||
/**
|
||||
* enum policy_mgr_conn_update_reason: Reason for conc connection update
|
||||
* @POLICY_MGR_UPDATE_REASON_SET_OPER_CHAN: Set probable operating channel
|
||||
* @POLICY_MGR_UPDATE_REASON_JOIN_IBSS: Join IBSS
|
||||
* @POLICY_MGR_UPDATE_REASON_UT: Unit test related
|
||||
* @POLICY_MGR_UPDATE_REASON_START_AP: Start AP
|
||||
* @POLICY_MGR_UPDATE_REASON_NORMAL_STA: Connection to Normal STA
|
||||
* @POLICY_MGR_UPDATE_REASON_HIDDEN_STA: Connection to Hidden STA
|
||||
* @POLICY_MGR_UPDATE_REASON_OPPORTUNISTIC: Opportunistic HW mode update
|
||||
* @POLICY_MGR_UPDATE_REASON_NSS_UPDATE: NSS update
|
||||
* @POLICY_MGR_UPDATE_REASON_CHANNEL_SWITCH: Channel switch
|
||||
* @POLICY_MGR_UPDATE_REASON_CHANNEL_SWITCH_STA: Channel switch for STA
|
||||
*/
|
||||
enum policy_mgr_conn_update_reason {
|
||||
POLICY_MGR_UPDATE_REASON_SET_OPER_CHAN,
|
||||
POLICY_MGR_UPDATE_REASON_JOIN_IBSS,
|
||||
POLICY_MGR_UPDATE_REASON_UT,
|
||||
POLICY_MGR_UPDATE_REASON_START_AP,
|
||||
POLICY_MGR_UPDATE_REASON_NORMAL_STA,
|
||||
POLICY_MGR_UPDATE_REASON_HIDDEN_STA,
|
||||
POLICY_MGR_UPDATE_REASON_OPPORTUNISTIC,
|
||||
POLICY_MGR_UPDATE_REASON_NSS_UPDATE,
|
||||
POLICY_MGR_UPDATE_REASON_CHANNEL_SWITCH,
|
||||
POLICY_MGR_UPDATE_REASON_CHANNEL_SWITCH_STA,
|
||||
POLICY_MGR_UPDATE_REASON_PRE_CAC,
|
||||
};
|
||||
|
||||
/**
|
||||
* enum hw_mode_bandwidth - bandwidth of wifi channel.
|
||||
*
|
||||
* @HW_MODE_5_MHZ: 5 Mhz bandwidth
|
||||
* @HW_MODE_10_MHZ: 10 Mhz bandwidth
|
||||
* @HW_MODE_20_MHZ: 20 Mhz bandwidth
|
||||
* @HW_MODE_40_MHZ: 40 Mhz bandwidth
|
||||
* @HW_MODE_80_MHZ: 80 Mhz bandwidth
|
||||
* @HW_MODE_80_PLUS_80_MHZ: 80 Mhz plus 80 Mhz bandwidth
|
||||
* @HW_MODE_160_MHZ: 160 Mhz bandwidth
|
||||
* @HW_MODE_MAX_BANDWIDTH: Max place holder
|
||||
*
|
||||
* These are generic IDs that identify the various roles
|
||||
* in the software system
|
||||
*/
|
||||
enum hw_mode_bandwidth {
|
||||
HW_MODE_BW_NONE,
|
||||
HW_MODE_5_MHZ,
|
||||
HW_MODE_10_MHZ,
|
||||
HW_MODE_20_MHZ,
|
||||
HW_MODE_40_MHZ,
|
||||
HW_MODE_80_MHZ,
|
||||
HW_MODE_80_PLUS_80_MHZ,
|
||||
HW_MODE_160_MHZ,
|
||||
HW_MODE_MAX_BANDWIDTH
|
||||
};
|
||||
|
||||
/**
|
||||
* enum set_hw_mode_status - Status of set HW mode command
|
||||
* @SET_HW_MODE_STATUS_OK: command successful
|
||||
* @SET_HW_MODE_STATUS_EINVAL: Requested invalid hw_mode
|
||||
* @SET_HW_MODE_STATUS_ECANCELED: HW mode change cancelled
|
||||
* @SET_HW_MODE_STATUS_ENOTSUP: HW mode not supported
|
||||
* @SET_HW_MODE_STATUS_EHARDWARE: HW mode change prevented by hardware
|
||||
* @SET_HW_MODE_STATUS_EPENDING: HW mode change is pending
|
||||
* @SET_HW_MODE_STATUS_ECOEX: HW mode change conflict with Coex
|
||||
*/
|
||||
enum set_hw_mode_status {
|
||||
SET_HW_MODE_STATUS_OK,
|
||||
SET_HW_MODE_STATUS_EINVAL,
|
||||
SET_HW_MODE_STATUS_ECANCELED,
|
||||
SET_HW_MODE_STATUS_ENOTSUP,
|
||||
SET_HW_MODE_STATUS_EHARDWARE,
|
||||
SET_HW_MODE_STATUS_EPENDING,
|
||||
SET_HW_MODE_STATUS_ECOEX,
|
||||
};
|
||||
|
||||
/**
|
||||
* struct policy_mgr_conc_connection_info - information of all existing
|
||||
* connections in the wlan system
|
||||
*
|
||||
* @mode: connection type
|
||||
* @chan: channel of the connection
|
||||
* @bw: channel bandwidth used for the connection
|
||||
* @mac: The HW mac it is running
|
||||
* @chain_mask: The original capability advertised by HW
|
||||
* @original_nss: nss negotiated at connection time
|
||||
* @vdev_id: vdev id of the connection
|
||||
* @in_use: if the table entry is active
|
||||
*/
|
||||
struct policy_mgr_conc_connection_info {
|
||||
enum policy_mgr_con_mode mode;
|
||||
uint8_t chan;
|
||||
enum hw_mode_bandwidth bw;
|
||||
uint8_t mac;
|
||||
enum policy_mgr_chain_mode chain_mask;
|
||||
uint32_t original_nss;
|
||||
uint32_t vdev_id;
|
||||
bool in_use;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct policy_mgr_hw_mode_params - HW mode params
|
||||
* @mac0_tx_ss: MAC0 Tx spatial stream
|
||||
* @mac0_rx_ss: MAC0 Rx spatial stream
|
||||
* @mac1_tx_ss: MAC1 Tx spatial stream
|
||||
* @mac1_rx_ss: MAC1 Rx spatial stream
|
||||
* @mac0_bw: MAC0 bandwidth
|
||||
* @mac1_bw: MAC1 bandwidth
|
||||
* @dbs_cap: DBS capabality
|
||||
* @agile_dfs_cap: Agile DFS capabality
|
||||
*/
|
||||
struct policy_mgr_hw_mode_params {
|
||||
uint8_t mac0_tx_ss;
|
||||
uint8_t mac0_rx_ss;
|
||||
uint8_t mac1_tx_ss;
|
||||
uint8_t mac1_rx_ss;
|
||||
uint8_t mac0_bw;
|
||||
uint8_t mac1_bw;
|
||||
uint8_t dbs_cap;
|
||||
uint8_t agile_dfs_cap;
|
||||
uint8_t sbs_cap;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct policy_mgr_vdev_mac_map - vdev id-mac id map
|
||||
* @vdev_id: VDEV id
|
||||
* @mac_id: MAC id
|
||||
*/
|
||||
struct policy_mgr_vdev_mac_map {
|
||||
uint32_t vdev_id;
|
||||
uint32_t mac_id;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct policy_mgr_dual_mac_config - Dual MAC configuration
|
||||
* @scan_config: Scan configuration
|
||||
* @fw_mode_config: FW mode configuration
|
||||
* @set_dual_mac_cb: Callback function to be executed on response to the command
|
||||
*/
|
||||
struct policy_mgr_dual_mac_config {
|
||||
uint32_t scan_config;
|
||||
uint32_t fw_mode_config;
|
||||
void *set_dual_mac_cb;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct policy_mgr_hw_mode - Format of set HW mode
|
||||
* @hw_mode_index: Index of HW mode to be set
|
||||
* @set_hw_mode_cb: HDD set HW mode callback
|
||||
* @reason: Reason for HW mode change
|
||||
* @session_id: Session id
|
||||
*/
|
||||
struct policy_mgr_hw_mode {
|
||||
uint32_t hw_mode_index;
|
||||
void *set_hw_mode_cb;
|
||||
enum policy_mgr_conn_update_reason reason;
|
||||
uint32_t session_id;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct policy_mgr_pcl_list - Format of PCL
|
||||
* @pcl_list: List of preferred channels
|
||||
* @weight_list: Weights of the PCL
|
||||
* @pcl_len: Number of channels in the PCL
|
||||
*/
|
||||
struct policy_mgr_pcl_list {
|
||||
uint8_t pcl_list[POLICY_MGR_MAX_CHANNEL_LIST];
|
||||
uint8_t weight_list[POLICY_MGR_MAX_CHANNEL_LIST];
|
||||
uint32_t pcl_len;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct policy_mgr_pcl_chan_weights - Params to get the valid weighed list
|
||||
* @pcl_list: Preferred channel list already sorted in the order of preference
|
||||
* @pcl_len: Length of the PCL
|
||||
* @saved_chan_list: Valid channel list updated as part of
|
||||
* WMA_UPDATE_CHAN_LIST_REQ
|
||||
* @saved_num_chan: Length of the valid channel list
|
||||
* @weighed_valid_list: Weights of the valid channel list. This will have one
|
||||
* to one mapping with valid_chan_list. FW expects channel order and size to be
|
||||
* as per the list provided in WMI_SCAN_CHAN_LIST_CMDID.
|
||||
* @weight_list: Weights assigned by policy manager
|
||||
*/
|
||||
struct policy_mgr_pcl_chan_weights {
|
||||
uint8_t pcl_list[POLICY_MGR_MAX_CHANNEL_LIST];
|
||||
uint32_t pcl_len;
|
||||
uint8_t saved_chan_list[POLICY_MGR_MAX_CHANNEL_LIST];
|
||||
uint32_t saved_num_chan;
|
||||
uint8_t weighed_valid_list[POLICY_MGR_MAX_CHANNEL_LIST];
|
||||
uint8_t weight_list[POLICY_MGR_MAX_CHANNEL_LIST];
|
||||
};
|
||||
|
||||
/**
|
||||
* struct policy_mgr_vdev_entry_info - vdev related param to be
|
||||
* used by policy manager
|
||||
* @type: type
|
||||
* @sub_type: sub type
|
||||
* @mhz: channel frequency in MHz
|
||||
* @chan_width: channel bandwidth
|
||||
* @mac_id: the mac on which vdev is on
|
||||
*/
|
||||
struct policy_mgr_vdev_entry_info {
|
||||
uint32_t type;
|
||||
uint32_t sub_type;
|
||||
uint32_t mhz;
|
||||
uint32_t chan_width;
|
||||
uint32_t mac_id;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct dbs_hw_mode_info - WLAN_DBS_HW_MODES_TLV Format
|
||||
* @tlv_header: TLV header, TLV tag and len; tag equals WMITLV_TAG_ARRAY_UINT32
|
||||
* @hw_mode_list: WLAN_DBS_HW_MODE_LIST entries
|
||||
*/
|
||||
struct dbs_hw_mode_info {
|
||||
uint32_t tlv_header;
|
||||
uint32_t *hw_mode_list;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct extended_caps - new extended caps given by firmware
|
||||
* @num_hw_modes: number of hardware modes for current SOC
|
||||
* @each_hw_mode_cap: hw mode id to phy id mapping
|
||||
* @each_phy_cap_per_hwmode: PHY's caps for each hw mode
|
||||
* @num_phy_for_hal_reg_cap: number of phy for hal reg cap
|
||||
* @hw_mode_to_mac_cap_map: map between hw_mode to capabilities
|
||||
*/
|
||||
struct extended_caps {
|
||||
WMI_SOC_MAC_PHY_HW_MODE_CAPS num_hw_modes;
|
||||
WMI_HW_MODE_CAPABILITIES *each_hw_mode_cap;
|
||||
WMI_MAC_PHY_CAPABILITIES *each_phy_cap_per_hwmode;
|
||||
WMI_SOC_HAL_REG_CAPABILITIES num_phy_for_hal_reg_cap;
|
||||
WMI_HAL_REG_CAPABILITIES_EXT *each_phy_hal_reg_cap;
|
||||
struct hw_mode_idx_to_mac_cap_idx *hw_mode_to_mac_cap_map;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct dual_mac_config - Dual MAC configurations
|
||||
* @prev_scan_config: Previous scan configuration
|
||||
* @prev_fw_mode_config: Previous FW mode configuration
|
||||
* @cur_scan_config: Current scan configuration
|
||||
* @cur_fw_mode_config: Current FW mode configuration
|
||||
* @req_scan_config: Requested scan configuration
|
||||
* @req_fw_mode_config: Requested FW mode configuration
|
||||
*/
|
||||
struct dual_mac_config {
|
||||
uint32_t prev_scan_config;
|
||||
uint32_t prev_fw_mode_config;
|
||||
uint32_t cur_scan_config;
|
||||
uint32_t cur_fw_mode_config;
|
||||
uint32_t req_scan_config;
|
||||
uint32_t req_fw_mode_config;
|
||||
};
|
||||
|
||||
#endif /* __WLAN_POLICY_MGR_PUBLIC_STRUCT_H */
|
||||
224
src/wlan_policy_mgr_action.c
Normal file
224
src/wlan_policy_mgr_action.c
Normal file
|
|
@ -0,0 +1,224 @@
|
|||
/*
|
||||
* Copyright (c) 2012-2017 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.
|
||||
*/
|
||||
|
||||
/**
|
||||
* DOC: wlan_policy_mgr_action.c
|
||||
*
|
||||
* WLAN Concurrenct Connection Management APIs
|
||||
*
|
||||
*/
|
||||
|
||||
/* Include files */
|
||||
|
||||
#include "wlan_policy_mgr_api.h"
|
||||
#include "wlan_policy_mgr_tables_no_dbs_i.h"
|
||||
#include "wlan_policy_mgr_i.h"
|
||||
#include "qdf_types.h"
|
||||
#include "qdf_trace.h"
|
||||
#include "wlan_objmgr_global_obj.h"
|
||||
|
||||
enum policy_mgr_conc_next_action (*policy_mgr_get_current_pref_hw_mode_ptr)
|
||||
(struct wlan_objmgr_psoc *psoc);
|
||||
|
||||
void policy_mgr_hw_mode_transition_cb(uint32_t old_hw_mode_index,
|
||||
uint32_t new_hw_mode_index,
|
||||
uint32_t num_vdev_mac_entries,
|
||||
struct policy_mgr_vdev_mac_map *vdev_mac_map,
|
||||
struct wlan_objmgr_psoc *context)
|
||||
{
|
||||
}
|
||||
|
||||
QDF_STATUS policy_mgr_pdev_set_hw_mode(struct wlan_objmgr_psoc *psoc,
|
||||
uint32_t session_id,
|
||||
enum hw_mode_ss_config mac0_ss,
|
||||
enum hw_mode_bandwidth mac0_bw,
|
||||
enum hw_mode_ss_config mac1_ss,
|
||||
enum hw_mode_bandwidth mac1_bw,
|
||||
enum hw_mode_dbs_capab dbs,
|
||||
enum hw_mode_agile_dfs_capab dfs,
|
||||
enum hw_mode_sbs_capab sbs,
|
||||
enum policy_mgr_conn_update_reason reason)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
enum policy_mgr_conc_next_action policy_mgr_need_opportunistic_upgrade(
|
||||
struct wlan_objmgr_psoc *psoc)
|
||||
{
|
||||
return PM_NOP;
|
||||
}
|
||||
|
||||
QDF_STATUS policy_mgr_update_connection_info(struct wlan_objmgr_psoc *psoc,
|
||||
uint32_t vdev_id)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
QDF_STATUS policy_mgr_update_and_wait_for_connection_update(
|
||||
struct wlan_objmgr_psoc *psoc,
|
||||
uint8_t session_id,
|
||||
uint8_t channel,
|
||||
enum policy_mgr_conn_update_reason reason)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
QDF_STATUS policy_mgr_current_connections_update(struct wlan_objmgr_psoc *psoc,
|
||||
uint32_t session_id,
|
||||
uint8_t channel,
|
||||
enum policy_mgr_conn_update_reason reason)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
QDF_STATUS policy_mgr_next_actions(struct wlan_objmgr_psoc *psoc,
|
||||
uint32_t session_id,
|
||||
enum policy_mgr_conc_next_action action,
|
||||
enum policy_mgr_conn_update_reason reason)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
QDF_STATUS policy_mgr_handle_conc_multiport(struct wlan_objmgr_psoc *psoc,
|
||||
uint8_t session_id, uint8_t channel)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
#ifdef FEATURE_WLAN_MCC_TO_SCC_SWITCH
|
||||
void policy_mgr_check_sta_ap_concurrent_ch_intf(void *data)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
void policy_mgr_check_concurrent_intf_and_restart_sap(
|
||||
struct wlan_objmgr_psoc *psoc)
|
||||
{
|
||||
return;
|
||||
}
|
||||
#endif /* FEATURE_WLAN_MCC_TO_SCC_SWITCH */
|
||||
|
||||
#ifdef FEATURE_WLAN_MCC_TO_SCC_SWITCH
|
||||
void policy_mgr_change_sap_channel_with_csa(struct wlan_objmgr_psoc *psoc)
|
||||
{
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
||||
QDF_STATUS policy_mgr_wait_for_connection_update(struct wlan_objmgr_psoc *psoc)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
QDF_STATUS policy_mgr_reset_connection_update(struct wlan_objmgr_psoc *psoc)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
QDF_STATUS policy_mgr_set_connection_update(struct wlan_objmgr_psoc *psoc)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
QDF_STATUS policy_mgr_restart_opportunistic_timer(
|
||||
struct wlan_objmgr_psoc *psoc, bool check_state)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
#ifdef FEATURE_WLAN_MCC_TO_SCC_SWITCH
|
||||
QDF_STATUS policy_mgr_register_sap_restart_channel_switch_cb(
|
||||
struct wlan_objmgr_psoc *psoc,
|
||||
void (*sap_restart_chan_switch_cb)(void *, uint32_t, uint32_t))
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
QDF_STATUS policy_mgr_deregister_sap_restart_channel_switch_cb(
|
||||
struct wlan_objmgr_psoc *psoc)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
QDF_STATUS policy_mgr_set_hw_mode_on_channel_switch(
|
||||
struct wlan_objmgr_psoc *psoc, uint8_t session_id)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
void policy_mgr_checkn_update_hw_mode_single_mac_mode(
|
||||
struct wlan_objmgr_psoc *psoc, uint8_t channel)
|
||||
{
|
||||
}
|
||||
|
||||
#ifdef MPC_UT_FRAMEWORK
|
||||
QDF_STATUS policy_mgr_update_connection_info_utfw(
|
||||
struct wlan_objmgr_psoc *psoc,
|
||||
uint32_t vdev_id, uint32_t tx_streams, uint32_t rx_streams,
|
||||
uint32_t chain_mask, uint32_t type, uint32_t sub_type,
|
||||
uint32_t channelid, uint32_t mac_id)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
QDF_STATUS policy_mgr_incr_connection_count_utfw(struct wlan_objmgr_psoc *psoc,
|
||||
uint32_t vdev_id, uint32_t tx_streams, uint32_t rx_streams,
|
||||
uint32_t chain_mask, uint32_t type, uint32_t sub_type,
|
||||
uint32_t channelid, uint32_t mac_id)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
QDF_STATUS policy_mgr_decr_connection_count_utfw(struct wlan_objmgr_psoc *psoc,
|
||||
uint32_t del_all, uint32_t vdev_id)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
enum policy_mgr_pcl_type policy_mgr_get_pcl_from_first_conn_table(
|
||||
enum policy_mgr_con_mode type,
|
||||
enum policy_mgr_conc_priority_mode sys_pref)
|
||||
{
|
||||
return PM_NONE;
|
||||
}
|
||||
|
||||
enum policy_mgr_pcl_type policy_mgr_get_pcl_from_second_conn_table(
|
||||
enum policy_mgr_one_connection_mode idx, enum policy_mgr_con_mode type,
|
||||
enum policy_mgr_conc_priority_mode sys_pref, uint8_t dbs_capable)
|
||||
{
|
||||
return PM_NONE;
|
||||
}
|
||||
|
||||
enum policy_mgr_pcl_type policy_mgr_get_pcl_from_third_conn_table(
|
||||
enum policy_mgr_two_connection_mode idx, enum policy_mgr_con_mode type,
|
||||
enum policy_mgr_conc_priority_mode sys_pref, uint8_t dbs_capable)
|
||||
{
|
||||
return PM_NONE;
|
||||
}
|
||||
#endif
|
||||
638
src/wlan_policy_mgr_core.c
Normal file
638
src/wlan_policy_mgr_core.c
Normal file
|
|
@ -0,0 +1,638 @@
|
|||
/*
|
||||
* Copyright (c) 2012-2017 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.
|
||||
*/
|
||||
|
||||
/**
|
||||
* DOC: wlan_policy_mgr_core.c
|
||||
*
|
||||
* WLAN Concurrenct Connection Management functions
|
||||
*
|
||||
*/
|
||||
|
||||
/* Include files */
|
||||
|
||||
#include "wlan_policy_mgr_i.h"
|
||||
#include "qdf_types.h"
|
||||
#include "qdf_trace.h"
|
||||
#include "wlan_objmgr_global_obj.h"
|
||||
|
||||
#define POLICY_MGR_MAX_CON_STRING_LEN 100
|
||||
|
||||
struct policy_mgr_conc_connection_info
|
||||
pm_conc_connection_list[MAX_NUMBER_OF_CONC_CONNECTIONS];
|
||||
|
||||
struct policy_mgr_psoc_priv_obj *policy_mgr_get_context(
|
||||
struct wlan_objmgr_psoc *psoc)
|
||||
{
|
||||
struct policy_mgr_psoc_priv_obj *pm_ctx;
|
||||
pm_ctx = (struct policy_mgr_psoc_priv_obj *)
|
||||
wlan_objmgr_psoc_get_comp_private_obj(psoc,
|
||||
WLAN_UMAC_COMP_POLICY_MGR);
|
||||
return pm_ctx;
|
||||
}
|
||||
|
||||
/**
|
||||
* policy_mgr_get_updated_scan_config() - Get the updated scan configuration
|
||||
* @scan_config: Pointer containing the updated scan config
|
||||
* @dbs_scan: 0 or 1 indicating if DBS scan needs to be enabled/disabled
|
||||
* @dbs_plus_agile_scan: 0 or 1 indicating if DBS plus agile scan needs to be
|
||||
* enabled/disabled
|
||||
* @single_mac_scan_with_dfs: 0 or 1 indicating if single MAC scan with DFS
|
||||
* needs to be enabled/disabled
|
||||
*
|
||||
* Takes the current scan configuration and set the necessary scan config
|
||||
* bits to either 0/1 and provides the updated value to the caller who
|
||||
* can use this to pass it on to the FW
|
||||
*
|
||||
* Return: 0 on success
|
||||
*/
|
||||
QDF_STATUS policy_mgr_get_updated_scan_config(
|
||||
struct wlan_objmgr_psoc *psoc,
|
||||
uint32_t *scan_config,
|
||||
bool dbs_scan,
|
||||
bool dbs_plus_agile_scan,
|
||||
bool single_mac_scan_with_dfs)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
/**
|
||||
* policy_mgr_get_updated_fw_mode_config() - Get the updated fw mode configuration
|
||||
* @fw_mode_config: Pointer containing the updated fw mode config
|
||||
* @dbs: 0 or 1 indicating if DBS needs to be enabled/disabled
|
||||
* @agile_dfs: 0 or 1 indicating if agile DFS needs to be enabled/disabled
|
||||
*
|
||||
* Takes the current fw mode configuration and set the necessary fw mode config
|
||||
* bits to either 0/1 and provides the updated value to the caller who
|
||||
* can use this to pass it on to the FW
|
||||
*
|
||||
* Return: 0 on success
|
||||
*/
|
||||
QDF_STATUS policy_mgr_get_updated_fw_mode_config(
|
||||
struct wlan_objmgr_psoc *psoc,
|
||||
uint32_t *fw_mode_config,
|
||||
bool dbs,
|
||||
bool agile_dfs)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
/**
|
||||
* policy_mgr_is_dual_mac_disabled_in_ini() - Check if dual mac is disabled in INI
|
||||
*
|
||||
* Checks if the dual mac feature is disabled in INI
|
||||
*
|
||||
* Return: true if the dual mac feature is disabled from INI
|
||||
*/
|
||||
bool policy_mgr_is_dual_mac_disabled_in_ini(
|
||||
struct wlan_objmgr_psoc *psoc)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* policy_mgr_get_dbs_config() - Get DBS bit
|
||||
*
|
||||
* Gets the DBS bit of fw_mode_config_bits
|
||||
*
|
||||
* Return: 0 or 1 to indicate the DBS bit
|
||||
*/
|
||||
bool policy_mgr_get_dbs_config(struct wlan_objmgr_psoc *psoc)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* policy_mgr_get_agile_dfs_config() - Get Agile DFS bit
|
||||
*
|
||||
* Gets the Agile DFS bit of fw_mode_config_bits
|
||||
*
|
||||
* Return: 0 or 1 to indicate the Agile DFS bit
|
||||
*/
|
||||
bool policy_mgr_get_agile_dfs_config(struct wlan_objmgr_psoc *psoc)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* policy_mgr_get_dbs_scan_config() - Get DBS scan bit
|
||||
*
|
||||
* Gets the DBS scan bit of concurrent_scan_config_bits
|
||||
*
|
||||
* Return: 0 or 1 to indicate the DBS scan bit
|
||||
*/
|
||||
bool policy_mgr_get_dbs_scan_config(struct wlan_objmgr_psoc *psoc)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* policy_mgr_get_tx_rx_ss_from_config() - Get Tx/Rx spatial stream from HW mode config
|
||||
* @mac_ss: Config which indicates the HW mode as per 'hw_mode_ss_config'
|
||||
* @tx_ss: Contains the Tx spatial stream
|
||||
* @rx_ss: Contains the Rx spatial stream
|
||||
*
|
||||
* Returns the number of spatial streams of Tx and Rx
|
||||
*
|
||||
* Return: None
|
||||
*/
|
||||
void policy_mgr_get_tx_rx_ss_from_config(enum hw_mode_ss_config mac_ss,
|
||||
uint32_t *tx_ss, uint32_t *rx_ss)
|
||||
{
|
||||
switch (mac_ss) {
|
||||
case HW_MODE_SS_0x0:
|
||||
*tx_ss = 0;
|
||||
*rx_ss = 0;
|
||||
break;
|
||||
case HW_MODE_SS_1x1:
|
||||
*tx_ss = 1;
|
||||
*rx_ss = 1;
|
||||
break;
|
||||
case HW_MODE_SS_2x2:
|
||||
*tx_ss = 2;
|
||||
*rx_ss = 2;
|
||||
break;
|
||||
case HW_MODE_SS_3x3:
|
||||
*tx_ss = 3;
|
||||
*rx_ss = 3;
|
||||
break;
|
||||
case HW_MODE_SS_4x4:
|
||||
*tx_ss = 4;
|
||||
*rx_ss = 4;
|
||||
break;
|
||||
default:
|
||||
*tx_ss = 0;
|
||||
*rx_ss = 0;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* policy_mgr_get_matching_hw_mode_index() - Get matching HW mode index
|
||||
* @psoc: psoc handle
|
||||
* @mac0_tx_ss: Number of tx spatial streams of MAC0
|
||||
* @mac0_rx_ss: Number of rx spatial streams of MAC0
|
||||
* @mac0_bw: Bandwidth of MAC0 of type 'hw_mode_bandwidth'
|
||||
* @mac1_tx_ss: Number of tx spatial streams of MAC1
|
||||
* @mac1_rx_ss: Number of rx spatial streams of MAC1
|
||||
* @mac1_bw: Bandwidth of MAC1 of type 'hw_mode_bandwidth'
|
||||
* @dbs: DBS capability of type 'hw_mode_dbs_capab'
|
||||
* @dfs: Agile DFS capability of type 'hw_mode_agile_dfs_capab'
|
||||
* @sbs: SBS capability of type 'hw_mode_sbs_capab'
|
||||
*
|
||||
* Fetches the HW mode index corresponding to the HW mode provided
|
||||
*
|
||||
* Return: Positive hw mode index in case a match is found or a negative
|
||||
* value, otherwise
|
||||
*/
|
||||
int8_t policy_mgr_get_matching_hw_mode_index(
|
||||
struct wlan_objmgr_psoc *psoc,
|
||||
uint32_t mac0_tx_ss, uint32_t mac0_rx_ss,
|
||||
enum hw_mode_bandwidth mac0_bw,
|
||||
uint32_t mac1_tx_ss, uint32_t mac1_rx_ss,
|
||||
enum hw_mode_bandwidth mac1_bw,
|
||||
enum hw_mode_dbs_capab dbs,
|
||||
enum hw_mode_agile_dfs_capab dfs,
|
||||
enum hw_mode_sbs_capab sbs)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* policy_mgr_get_hw_mode_from_dbs_hw_list() - Get hw_mode index
|
||||
* @mac0_ss: MAC0 spatial stream configuration
|
||||
* @mac0_bw: MAC0 bandwidth configuration
|
||||
* @mac1_ss: MAC1 spatial stream configuration
|
||||
* @mac1_bw: MAC1 bandwidth configuration
|
||||
* @dbs: HW DBS capability
|
||||
* @dfs: HW Agile DFS capability
|
||||
* @sbs: HW SBS capability
|
||||
*
|
||||
* Get the HW mode index corresponding to the HW modes spatial stream,
|
||||
* bandwidth, DBS, Agile DFS and SBS capability
|
||||
*
|
||||
* Return: Index number if a match is found or -negative value if not found
|
||||
*/
|
||||
int8_t policy_mgr_get_hw_mode_idx_from_dbs_hw_list(
|
||||
struct wlan_objmgr_psoc *psoc,
|
||||
enum hw_mode_ss_config mac0_ss,
|
||||
enum hw_mode_bandwidth mac0_bw,
|
||||
enum hw_mode_ss_config mac1_ss,
|
||||
enum hw_mode_bandwidth mac1_bw,
|
||||
enum hw_mode_dbs_capab dbs,
|
||||
enum hw_mode_agile_dfs_capab dfs,
|
||||
enum hw_mode_sbs_capab sbs)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* policy_mgr_get_hw_mode_from_idx() - Get HW mode based on index
|
||||
* @idx: HW mode index
|
||||
* @hw_mode: HW mode params
|
||||
*
|
||||
* Fetches the HW mode parameters
|
||||
*
|
||||
* Return: Success if hw mode is obtained and the hw mode params
|
||||
*/
|
||||
QDF_STATUS policy_mgr_get_hw_mode_from_idx(
|
||||
struct wlan_objmgr_psoc *psoc,
|
||||
uint32_t idx,
|
||||
struct policy_mgr_hw_mode_params *hw_mode)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
/**
|
||||
* policy_mgr_get_old_and_new_hw_index() - Get the old and new HW index
|
||||
* @old_hw_mode_index: Value at this pointer contains the old HW mode index
|
||||
* Default value when not configured is POLICY_MGR_DEFAULT_HW_MODE_INDEX
|
||||
* @new_hw_mode_index: Value at this pointer contains the new HW mode index
|
||||
* Default value when not configured is POLICY_MGR_DEFAULT_HW_MODE_INDEX
|
||||
*
|
||||
* Get the old and new HW index configured in the driver
|
||||
*
|
||||
* Return: Failure in case the HW mode indices cannot be fetched and Success
|
||||
* otherwise. When no HW mode transition has happened the values of
|
||||
* old_hw_mode_index and new_hw_mode_index will be the same.
|
||||
*/
|
||||
QDF_STATUS policy_mgr_get_old_and_new_hw_index(
|
||||
struct wlan_objmgr_psoc *psoc,
|
||||
uint32_t *old_hw_mode_index,
|
||||
uint32_t *new_hw_mode_index)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
/**
|
||||
* policy_mgr_update_conc_list() - Update the concurrent connection list
|
||||
* @conn_index: Connection index
|
||||
* @mode: Mode
|
||||
* @chan: Channel
|
||||
* @bw: Bandwidth
|
||||
* @mac: Mac id
|
||||
* @chain_mask: Chain mask
|
||||
* @vdev_id: vdev id
|
||||
* @in_use: Flag to indicate if the index is in use or not
|
||||
*
|
||||
* Updates the index value of the concurrent connection list
|
||||
*
|
||||
* Return: None
|
||||
*/
|
||||
void policy_mgr_update_conc_list(struct wlan_objmgr_psoc *psoc,
|
||||
uint32_t conn_index,
|
||||
enum policy_mgr_con_mode mode,
|
||||
uint8_t chan,
|
||||
enum hw_mode_bandwidth bw,
|
||||
uint8_t mac,
|
||||
enum policy_mgr_chain_mode chain_mask,
|
||||
uint32_t original_nss,
|
||||
uint32_t vdev_id,
|
||||
bool in_use)
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* policy_mgr_store_and_del_conn_info() - Store and del a connection info
|
||||
* @mode: Mode whose entry has to be deleted
|
||||
* @info: Struture pointer where the connection info will be saved
|
||||
*
|
||||
* Saves the connection info corresponding to the provided mode
|
||||
* and deleted that corresponding entry based on vdev from the
|
||||
* connection info structure
|
||||
*
|
||||
* Return: None
|
||||
*/
|
||||
void policy_mgr_store_and_del_conn_info(struct wlan_objmgr_psoc *psoc,
|
||||
enum policy_mgr_con_mode mode,
|
||||
struct policy_mgr_conc_connection_info *info)
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* policy_mgr_restore_deleted_conn_info() - Restore connection info
|
||||
* @info: Saved connection info that is to be restored
|
||||
*
|
||||
* Restores the connection info of STA that was saved before
|
||||
* updating the PCL to the FW
|
||||
*
|
||||
* Return: None
|
||||
*/
|
||||
void policy_mgr_restore_deleted_conn_info(struct wlan_objmgr_psoc *psoc,
|
||||
struct policy_mgr_conc_connection_info *info)
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* policy_mgr_update_hw_mode_conn_info() - Update connection info based on HW mode
|
||||
* @num_vdev_mac_entries: Number of vdev-mac id entries that follow
|
||||
* @vdev_mac_map: Mapping of vdev-mac id
|
||||
* @hw_mode: HW mode
|
||||
*
|
||||
* Updates the connection info parameters based on the new HW mode
|
||||
*
|
||||
* Return: None
|
||||
*/
|
||||
void policy_mgr_update_hw_mode_conn_info(struct wlan_objmgr_psoc *psoc,
|
||||
uint32_t num_vdev_mac_entries,
|
||||
struct policy_mgr_vdev_mac_map *vdev_mac_map,
|
||||
struct policy_mgr_hw_mode_params hw_mode)
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* policy_mgr_pdev_set_hw_mode_cb() - Callback for set hw mode
|
||||
* @status: Status
|
||||
* @cfgd_hw_mode_index: Configured HW mode index
|
||||
* @num_vdev_mac_entries: Number of vdev-mac id mapping that follows
|
||||
* @vdev_mac_map: vdev-mac id map. This memory will be freed by the caller.
|
||||
* So, make local copy if needed.
|
||||
*
|
||||
* Provides the status and configured hw mode index set
|
||||
* by the FW
|
||||
*
|
||||
* Return: None
|
||||
*/
|
||||
void policy_mgr_pdev_set_hw_mode_cb(uint32_t status,
|
||||
uint32_t cfgd_hw_mode_index,
|
||||
uint32_t num_vdev_mac_entries,
|
||||
struct policy_mgr_vdev_mac_map *vdev_mac_map,
|
||||
void *context)
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* policy_mgr_dump_current_concurrency() - To dump the current
|
||||
* concurrency combination
|
||||
*
|
||||
* This routine is called to dump the concurrency info
|
||||
*
|
||||
* Return: None
|
||||
*/
|
||||
void policy_mgr_dump_current_concurrency(struct wlan_objmgr_psoc *psoc)
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* policy_mgr_pdev_set_pcl() - Sets PCL to FW
|
||||
* @mode: adapter mode
|
||||
*
|
||||
* Fetches the PCL and sends the PCL to SME
|
||||
* module which in turn will send the WMI
|
||||
* command WMI_PDEV_SET_PCL_CMDID to the fw
|
||||
*
|
||||
* Return: None
|
||||
*/
|
||||
void policy_mgr_pdev_set_pcl(struct wlan_objmgr_psoc *psoc,
|
||||
enum tQDF_ADAPTER_MODE mode)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* policy_mgr_set_pcl_for_existing_combo() - Set PCL for existing connection
|
||||
* @mode: Connection mode of type 'policy_mgr_con_mode'
|
||||
*
|
||||
* Set the PCL for an existing connection
|
||||
*
|
||||
* Return: None
|
||||
*/
|
||||
void policy_mgr_set_pcl_for_existing_combo(
|
||||
struct wlan_objmgr_psoc *psoc, enum policy_mgr_con_mode mode)
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* pm_dbs_opportunistic_timer_handler() - handler of
|
||||
* dbs_opportunistic_timer
|
||||
* @data: context
|
||||
*
|
||||
* handler for dbs_opportunistic_timer
|
||||
*
|
||||
* Return: None
|
||||
*/
|
||||
void pm_dbs_opportunistic_timer_handler(void *data)
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* policy_mgr_get_mode() - Get mode from type and subtype
|
||||
* @type: type
|
||||
* @subtype: subtype
|
||||
*
|
||||
* Get the concurrency mode from the type and subtype
|
||||
* of the interface
|
||||
*
|
||||
* Return: policy_mgr_con_mode
|
||||
*/
|
||||
enum policy_mgr_con_mode policy_mgr_get_mode(uint8_t type,
|
||||
uint8_t subtype)
|
||||
{
|
||||
return PM_MAX_NUM_OF_MODE;
|
||||
}
|
||||
|
||||
/**
|
||||
* policy_mgr_get_channel_list() - provides the channel list
|
||||
* suggestion for new connection
|
||||
* @pcl: The preferred channel list enum
|
||||
* @pcl_channels: PCL channels
|
||||
* @len: length of the PCL
|
||||
* @mode: concurrency mode for which channel list is requested
|
||||
* @pcl_weights: Weights of the PCL
|
||||
* @weight_len: Max length of the weight list
|
||||
*
|
||||
* This function provides the actual channel list based on the
|
||||
* current regulatory domain derived using preferred channel
|
||||
* list enum obtained from one of the pcl_table
|
||||
*
|
||||
* Return: Channel List
|
||||
*/
|
||||
QDF_STATUS policy_mgr_get_channel_list(struct wlan_objmgr_psoc *psoc,
|
||||
enum policy_mgr_pcl_type pcl,
|
||||
uint8_t *pcl_channels, uint32_t *len,
|
||||
enum policy_mgr_con_mode mode,
|
||||
uint8_t *pcl_weights, uint32_t weight_len)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
/**
|
||||
* policy_mgr_disallow_mcc() - Check for mcc
|
||||
*
|
||||
* @channel: channel on which new connection is coming up
|
||||
*
|
||||
* When a new connection is about to come up check if current
|
||||
* concurrency combination including the new connection is
|
||||
* causing MCC
|
||||
*
|
||||
* Return: True/False
|
||||
*/
|
||||
bool policy_mgr_disallow_mcc(struct wlan_objmgr_psoc *psoc,
|
||||
uint8_t channel)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* policy_mgr_allow_new_home_channel() - Check for allowed number of
|
||||
* home channels
|
||||
* @channel: channel on which new connection is coming up
|
||||
* @num_connections: number of current connections
|
||||
*
|
||||
* When a new connection is about to come up check if current
|
||||
* concurrency combination including the new connection is
|
||||
* allowed or not based on the HW capability
|
||||
*
|
||||
* Return: True/False
|
||||
*/
|
||||
bool policy_mgr_allow_new_home_channel(struct wlan_objmgr_psoc *psoc,
|
||||
uint8_t channel, uint32_t num_connections)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* policy_mgr_vht160_conn_exist() - to check if we have a connection
|
||||
* already using vht160 or vht80+80
|
||||
*
|
||||
* This routine will check if vht160 connection already exist or
|
||||
* no. If it exist then this routine will return true.
|
||||
*
|
||||
* Return: true if vht160 connection exist else false
|
||||
*/
|
||||
bool policy_mgr_vht160_conn_exist(struct wlan_objmgr_psoc *psoc)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* policy_mgr_is_5g_channel_allowed() - check if 5g channel is allowed
|
||||
* @channel: channel number which needs to be validated
|
||||
* @list: list of existing connections.
|
||||
* @mode: mode against which channel needs to be validated
|
||||
*
|
||||
* This API takes the channel as input and compares with existing
|
||||
* connection channels. If existing connection's channel is DFS channel
|
||||
* and provided channel is 5G channel then don't allow concurrency to
|
||||
* happen as MCC with DFS channel is not yet supported
|
||||
*
|
||||
* Return: true if 5G channel is allowed, false if not allowed
|
||||
*
|
||||
*/
|
||||
bool policy_mgr_is_5g_channel_allowed(struct wlan_objmgr_psoc *psoc,
|
||||
uint8_t channel, uint32_t *list,
|
||||
enum policy_mgr_con_mode mode)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* policy_mgr_complete_action() - initiates actions needed on
|
||||
* current connections once channel has been decided for the new
|
||||
* connection
|
||||
* @new_nss: the new nss value
|
||||
* @next_action: next action to happen at policy mgr after
|
||||
* beacon update
|
||||
* @reason: Reason for connection update
|
||||
* @session_id: Session id
|
||||
*
|
||||
* This function initiates initiates actions
|
||||
* needed on current connections once channel has been decided
|
||||
* for the new connection. Notifies UMAC & FW as well
|
||||
*
|
||||
* Return: QDF_STATUS enum
|
||||
*/
|
||||
QDF_STATUS policy_mgr_complete_action(struct wlan_objmgr_psoc *psoc,
|
||||
uint8_t new_nss, uint8_t next_action,
|
||||
enum policy_mgr_conn_update_reason reason,
|
||||
uint32_t session_id)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
enum policy_mgr_con_mode policy_mgr_get_mode_by_vdev_id(
|
||||
struct wlan_objmgr_psoc *psoc,
|
||||
uint8_t vdev_id)
|
||||
{
|
||||
return PM_MAX_NUM_OF_MODE;
|
||||
}
|
||||
|
||||
/**
|
||||
* policy_mgr_init_connection_update() - Initialize connection
|
||||
* update event
|
||||
* @pm_ctx: policy mgr context
|
||||
*
|
||||
* Initializes the concurrent connection update event
|
||||
*
|
||||
* Return: QDF_STATUS
|
||||
*/
|
||||
QDF_STATUS policy_mgr_init_connection_update(
|
||||
struct policy_mgr_psoc_priv_obj *pm_ctx)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
/**
|
||||
* policy_mgr_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 (PM_NOP), MCC (PM_SINGLE_MAC),
|
||||
* DBS (PM_DBS), SBS (PM_SBS)
|
||||
*/
|
||||
enum policy_mgr_conc_next_action
|
||||
policy_mgr_get_current_pref_hw_mode_dbs_2x2(
|
||||
struct wlan_objmgr_psoc *psoc)
|
||||
{
|
||||
return PM_NOP;
|
||||
}
|
||||
|
||||
/**
|
||||
* policy_mgr_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 (PM_NOP), MCC (PM_SINGLE_MAC_UPGRADE),
|
||||
* DBS (PM_DBS_DOWNGRADE)
|
||||
*/
|
||||
enum policy_mgr_conc_next_action
|
||||
policy_mgr_get_current_pref_hw_mode_dbs_1x1(
|
||||
struct wlan_objmgr_psoc *psoc)
|
||||
{
|
||||
return PM_NOP;
|
||||
}
|
||||
|
||||
/**
|
||||
* policy_mgr_reset_sap_mandatory_channels() - Reset the SAP mandatory channels
|
||||
*
|
||||
* Resets the SAP mandatory channel list and the length of the list
|
||||
*
|
||||
* Return: QDF_STATUS
|
||||
*/
|
||||
QDF_STATUS policy_mgr_reset_sap_mandatory_channels(
|
||||
struct policy_mgr_psoc_priv_obj *pm_ctx)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
346
src/wlan_policy_mgr_get_set_utils.c
Normal file
346
src/wlan_policy_mgr_get_set_utils.c
Normal file
|
|
@ -0,0 +1,346 @@
|
|||
/*
|
||||
* Copyright (c) 2012-2017 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.
|
||||
*/
|
||||
|
||||
/**
|
||||
* DOC: wlan_policy_mgr_get_set_utils.c
|
||||
*
|
||||
* WLAN Concurrenct Connection Management APIs
|
||||
*
|
||||
*/
|
||||
|
||||
/* Include files */
|
||||
|
||||
#include "wlan_policy_mgr_api.h"
|
||||
#include "wlan_policy_mgr_i.h"
|
||||
#include "qdf_types.h"
|
||||
#include "qdf_trace.h"
|
||||
#include "wlan_objmgr_global_obj.h"
|
||||
|
||||
bool policy_mgr_get_dbs_plus_agile_scan_config(struct wlan_objmgr_psoc *psoc)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
bool policy_mgr_get_single_mac_scan_with_dfs_config(
|
||||
struct wlan_objmgr_psoc *psoc)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
int8_t policy_mgr_get_num_dbs_hw_modes(struct wlan_objmgr_psoc *psoc)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
bool policy_mgr_is_hw_dbs_capable(struct wlan_objmgr_psoc *psoc)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
bool policy_mgr_is_hw_sbs_capable(struct wlan_objmgr_psoc *psoc)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
QDF_STATUS policy_mgr_get_dbs_hw_modes(struct wlan_objmgr_psoc *psoc,
|
||||
bool *one_by_one_dbs, bool *two_by_two_dbs)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
QDF_STATUS policy_mgr_get_current_hw_mode(struct wlan_objmgr_psoc *psoc,
|
||||
struct policy_mgr_hw_mode_params *hw_mode)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
bool policy_mgr_is_current_hwmode_dbs(struct wlan_objmgr_psoc *psoc)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
bool policy_mgr_is_dbs_enable(struct wlan_objmgr_psoc *psoc)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
bool policy_mgr_is_hw_dbs_2x2_capable(struct wlan_objmgr_psoc *psoc)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
uint32_t policy_mgr_get_connection_count(struct wlan_objmgr_psoc *psoc)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
uint32_t policy_mgr_mode_specific_connection_count(
|
||||
struct wlan_objmgr_psoc *psoc,
|
||||
enum policy_mgr_con_mode mode,
|
||||
uint32_t *list)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
void policy_mgr_soc_set_dual_mac_cfg_cb(enum set_hw_mode_status status,
|
||||
uint32_t scan_config,
|
||||
uint32_t fw_mode_config)
|
||||
{
|
||||
policy_mgr_notice("Status:%d for scan_config:%x fw_mode_config:%x",
|
||||
status, scan_config, fw_mode_config);
|
||||
}
|
||||
|
||||
void policy_mgr_set_dual_mac_scan_config(struct wlan_objmgr_psoc *psoc,
|
||||
uint8_t dbs_val,
|
||||
uint8_t dbs_plus_agile_scan_val,
|
||||
uint8_t single_mac_scan_with_dbs_val)
|
||||
{
|
||||
}
|
||||
|
||||
void policy_mgr_set_dual_mac_fw_mode_config(struct wlan_objmgr_psoc *psoc,
|
||||
uint8_t dbs, uint8_t dfs)
|
||||
{
|
||||
}
|
||||
|
||||
bool policy_mgr_current_concurrency_is_mcc(struct wlan_objmgr_psoc *psoc)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
void policy_mgr_set_concurrency_mode(enum tQDF_ADAPTER_MODE mode)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
void policy_mgr_clear_concurrency_mode(enum tQDF_ADAPTER_MODE mode)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
void policy_mgr_incr_active_session(struct wlan_objmgr_psoc *psoc,
|
||||
enum tQDF_ADAPTER_MODE mode,
|
||||
uint8_t session_id)
|
||||
{
|
||||
}
|
||||
|
||||
void policy_mgr_decr_active_session(struct wlan_objmgr_psoc *psoc,
|
||||
enum tQDF_ADAPTER_MODE mode,
|
||||
uint8_t session_id)
|
||||
{
|
||||
}
|
||||
|
||||
QDF_STATUS policy_mgr_incr_connection_count(
|
||||
struct wlan_objmgr_psoc *psoc, uint32_t vdev_id)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
QDF_STATUS policy_mgr_decr_connection_count(struct wlan_objmgr_psoc *psoc,
|
||||
uint32_t vdev_id)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
bool policy_mgr_map_concurrency_mode(enum tQDF_ADAPTER_MODE *old_mode,
|
||||
enum policy_mgr_con_mode *new_mode)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
bool policy_mgr_is_ibss_conn_exist(struct wlan_objmgr_psoc *psoc,
|
||||
uint8_t *ibss_channel)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
bool policy_mgr_max_concurrent_connections_reached(
|
||||
struct wlan_objmgr_psoc *psoc)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
bool policy_mgr_allow_concurrency(struct wlan_objmgr_psoc *psoc,
|
||||
enum policy_mgr_con_mode mode,
|
||||
uint8_t channel, enum hw_mode_bandwidth bw)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
uint32_t policy_mgr_get_concurrency_mode(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
QDF_STATUS policy_mgr_get_channel_from_scan_result(
|
||||
struct wlan_objmgr_psoc *psoc,
|
||||
void *roam_profile, uint8_t *channel)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
uint8_t policy_mgr_search_and_check_for_session_conc(
|
||||
struct wlan_objmgr_psoc *psoc,
|
||||
uint8_t session_id,
|
||||
void *roam_profile)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
bool policy_mgr_check_for_session_conc(struct wlan_objmgr_psoc *psoc,
|
||||
uint8_t session_id, uint8_t channel)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
uint8_t policy_mgr_is_mcc_in_24G(struct wlan_objmgr_psoc *psoc)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
int32_t policy_mgr_set_mas(struct wlan_objmgr_psoc *psoc, uint8_t mas_value)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
int32_t policy_mgr_set_mcc_p2p_quota(struct wlan_objmgr_psoc *psoc,
|
||||
uint32_t set_value)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
QDF_STATUS policy_mgr_change_mcc_go_beacon_interval(
|
||||
struct wlan_objmgr_psoc *psoc)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
int32_t policy_mgr_go_set_mcc_p2p_quota(struct wlan_objmgr_psoc *psoc,
|
||||
uint32_t set_value)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
void policy_mgr_set_mcc_latency(struct wlan_objmgr_psoc *psoc, int set_value)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
struct policy_mgr_conc_connection_info *policy_mgr_get_conn_info(uint32_t *len)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
enum policy_mgr_con_mode policy_mgr_convert_device_mode_to_qdf_type(
|
||||
enum tQDF_ADAPTER_MODE device_mode)
|
||||
{
|
||||
return PM_MAX_NUM_OF_MODE;
|
||||
}
|
||||
|
||||
bool policy_mgr_concurrent_open_sessions_running(void)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
bool policy_mgr_concurrent_beaconing_sessions_running(void)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
void policy_mgr_clear_concurrent_session_count(struct wlan_objmgr_psoc *psoc)
|
||||
{
|
||||
}
|
||||
|
||||
bool policy_mgr_is_multiple_active_sta_sessions(struct wlan_objmgr_psoc *psoc)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
bool policy_mgr_is_sta_active_connection_exists(void)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
bool policy_mgr_is_any_nondfs_chnl_present(struct wlan_objmgr_psoc *psoc,
|
||||
uint8_t *channel)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
bool policy_mgr_is_any_dfs_beaconing_session_present(
|
||||
struct wlan_objmgr_psoc *psoc, uint8_t *channel)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
QDF_STATUS policy_mgr_get_nss_for_vdev(struct wlan_objmgr_psoc *psoc,
|
||||
enum policy_mgr_con_mode mode,
|
||||
uint8_t *nss_2g, uint8_t *nss_5g)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
void policy_mgr_dump_connection_status_info(struct wlan_objmgr_psoc *psoc)
|
||||
{
|
||||
}
|
||||
|
||||
bool policy_mgr_is_any_mode_active_on_band_along_with_session(
|
||||
struct wlan_objmgr_psoc *psoc,
|
||||
uint8_t session_id,
|
||||
enum policy_mgr_band band)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
QDF_STATUS policy_mgr_get_mac_id_by_session_id(struct wlan_objmgr_psoc *psoc,
|
||||
uint8_t session_id, uint8_t *mac_id)
|
||||
{
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
}
|
||||
|
||||
QDF_STATUS policy_mgr_get_mcc_session_id_on_mac(struct wlan_objmgr_psoc *psoc,
|
||||
uint8_t mac_id, uint8_t session_id,
|
||||
uint8_t *mcc_session_id)
|
||||
{
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
}
|
||||
|
||||
uint8_t policy_mgr_get_mcc_operating_channel(struct wlan_objmgr_psoc *psoc,
|
||||
uint8_t session_id)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
void policy_mgr_set_do_hw_mode_change_flag(struct wlan_objmgr_psoc *psoc,
|
||||
bool flag)
|
||||
{
|
||||
}
|
||||
|
||||
bool policy_mgr_is_hw_mode_change_after_vdev_up(struct wlan_objmgr_psoc *psoc)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
374
src/wlan_policy_mgr_i.h
Normal file
374
src/wlan_policy_mgr_i.h
Normal file
|
|
@ -0,0 +1,374 @@
|
|||
/*
|
||||
* Copyright (c) 2012-2017 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 WLAN_POLICY_MGR_I_H
|
||||
#define WLAN_POLICY_MGR_I_H
|
||||
|
||||
#include "wlan_policy_mgr_api.h"
|
||||
#include "qdf_event.h"
|
||||
#include "qdf_mc_timer.h"
|
||||
#include "qdf_lock.h"
|
||||
#include "qdf_defer.h"
|
||||
|
||||
#define MAX_NUMBER_OF_CONC_CONNECTIONS 3
|
||||
#define DBS_OPPORTUNISTIC_TIME 10
|
||||
#ifdef QCA_WIFI_3_0_EMU
|
||||
#define CONNECTION_UPDATE_TIMEOUT 3000
|
||||
#else
|
||||
#define CONNECTION_UPDATE_TIMEOUT 1000
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Some max value greater than the max length of the channel list
|
||||
*/
|
||||
#define MAX_WEIGHT_OF_PCL_CHANNELS 255
|
||||
/**
|
||||
* Some fixed weight difference between the groups
|
||||
*/
|
||||
#define PCL_GROUPS_WEIGHT_DIFFERENCE 20
|
||||
|
||||
/**
|
||||
* Currently max, only 3 groups are possible as per 'enum policy_mgr_pcl_type'.
|
||||
* i.e., in a PCL only 3 groups of channels can be present
|
||||
* e.g., SCC channel on 2.4 Ghz, SCC channel on 5 Ghz & 5 Ghz channels.
|
||||
* Group 1 has highest priority, group 2 has the next higher priority
|
||||
* and so on.
|
||||
*/
|
||||
#define WEIGHT_OF_GROUP1_PCL_CHANNELS MAX_WEIGHT_OF_PCL_CHANNELS
|
||||
#define WEIGHT_OF_GROUP2_PCL_CHANNELS \
|
||||
(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
|
||||
|
||||
/**
|
||||
* Policy Mgr hardware mode list bit-mask definitions.
|
||||
* Bits 4:0, 31:29 are unused.
|
||||
*
|
||||
* The below definitions are added corresponding to WMI DBS HW mode
|
||||
* list to make it independent of firmware changes for WMI definitions.
|
||||
* Currently these definitions have dependency with BIT positions of
|
||||
* the existing WMI macros. Thus, if the BIT positions are changed for
|
||||
* WMI macros, then these macros' BIT definitions are also need to be
|
||||
* changed.
|
||||
*/
|
||||
#define POLICY_MGR_HW_MODE_MAC0_TX_STREAMS_BITPOS (28)
|
||||
#define POLICY_MGR_HW_MODE_MAC0_RX_STREAMS_BITPOS (24)
|
||||
#define POLICY_MGR_HW_MODE_MAC1_TX_STREAMS_BITPOS (20)
|
||||
#define POLICY_MGR_HW_MODE_MAC1_RX_STREAMS_BITPOS (16)
|
||||
#define POLICY_MGR_HW_MODE_MAC0_BANDWIDTH_BITPOS (12)
|
||||
#define POLICY_MGR_HW_MODE_MAC1_BANDWIDTH_BITPOS (8)
|
||||
#define POLICY_MGR_HW_MODE_DBS_MODE_BITPOS (7)
|
||||
#define POLICY_MGR_HW_MODE_AGILE_DFS_MODE_BITPOS (6)
|
||||
#define POLICY_MGR_HW_MODE_SBS_MODE_BITPOS (5)
|
||||
|
||||
#define POLICY_MGR_HW_MODE_MAC0_TX_STREAMS_MASK \
|
||||
(0xf << POLICY_MGR_HW_MODE_MAC0_TX_STREAMS_BITPOS)
|
||||
#define POLICY_MGR_HW_MODE_MAC0_RX_STREAMS_MASK \
|
||||
(0xf << POLICY_MGR_HW_MODE_MAC0_RX_STREAMS_BITPOS)
|
||||
#define POLICY_MGR_HW_MODE_MAC1_TX_STREAMS_MASK \
|
||||
(0xf << POLICY_MGR_HW_MODE_MAC1_TX_STREAMS_BITPOS)
|
||||
#define POLICY_MGR_HW_MODE_MAC1_RX_STREAMS_MASK \
|
||||
(0xf << POLICY_MGR_HW_MODE_MAC1_RX_STREAMS_BITPOS)
|
||||
#define POLICY_MGR_HW_MODE_MAC0_BANDWIDTH_MASK \
|
||||
(0xf << POLICY_MGR_HW_MODE_MAC0_BANDWIDTH_BITPOS)
|
||||
#define POLICY_MGR_HW_MODE_MAC1_BANDWIDTH_MASK \
|
||||
(0xf << POLICY_MGR_HW_MODE_MAC1_BANDWIDTH_BITPOS)
|
||||
#define POLICY_MGR_HW_MODE_DBS_MODE_MASK \
|
||||
(0x1 << POLICY_MGR_HW_MODE_DBS_MODE_BITPOS)
|
||||
#define POLICY_MGR_HW_MODE_AGILE_DFS_MODE_MASK \
|
||||
(0x1 << POLICY_MGR_HW_MODE_AGILE_DFS_MODE_BITPOS)
|
||||
#define POLICY_MGR_HW_MODE_SBS_MODE_MASK \
|
||||
(0x1 << POLICY_MGR_HW_MODE_SBS_MODE_BITPOS)
|
||||
|
||||
#define POLICY_MGR_HW_MODE_MAC0_TX_STREAMS_SET(hw_mode, value) \
|
||||
WMI_SET_BITS(hw_mode, POLICY_MGR_HW_MODE_MAC0_TX_STREAMS_BITPOS,\
|
||||
4, value)
|
||||
#define POLICY_MGR_HW_MODE_MAC0_RX_STREAMS_SET(hw_mode, value) \
|
||||
WMI_SET_BITS(hw_mode, POLICY_MGR_HW_MODE_MAC0_RX_STREAMS_BITPOS,\
|
||||
4, value)
|
||||
#define POLICY_MGR_HW_MODE_MAC1_TX_STREAMS_SET(hw_mode, value) \
|
||||
WMI_SET_BITS(hw_mode, POLICY_MGR_HW_MODE_MAC1_TX_STREAMS_BITPOS,\
|
||||
4, value)
|
||||
#define POLICY_MGR_HW_MODE_MAC1_RX_STREAMS_SET(hw_mode, value) \
|
||||
WMI_SET_BITS(hw_mode, POLICY_MGR_HW_MODE_MAC1_RX_STREAMS_BITPOS,\
|
||||
4, value)
|
||||
#define POLICY_MGR_HW_MODE_MAC0_BANDWIDTH_SET(hw_mode, value) \
|
||||
WMI_SET_BITS(hw_mode, POLICY_MGR_HW_MODE_MAC0_BANDWIDTH_BITPOS,\
|
||||
4, value)
|
||||
#define POLICY_MGR_HW_MODE_MAC1_BANDWIDTH_SET(hw_mode, value) \
|
||||
WMI_SET_BITS(hw_mode, POLICY_MGR_HW_MODE_MAC1_BANDWIDTH_BITPOS,\
|
||||
4, value)
|
||||
#define POLICY_MGR_HW_MODE_DBS_MODE_SET(hw_mode, value) \
|
||||
WMI_SET_BITS(hw_mode, POLICY_MGR_HW_MODE_DBS_MODE_BITPOS,\
|
||||
1, value)
|
||||
#define POLICY_MGR_HW_MODE_AGILE_DFS_SET(hw_mode, value) \
|
||||
WMI_SET_BITS(hw_mode, POLICY_MGR_HW_MODE_AGILE_DFS_MODE_BITPOS,\
|
||||
1, value)
|
||||
#define POLICY_MGR_HW_MODE_SBS_MODE_SET(hw_mode, value) \
|
||||
WMI_SET_BITS(hw_mode, POLICY_MGR_HW_MODE_SBS_MODE_BITPOS,\
|
||||
1, value)
|
||||
|
||||
#define POLICY_MGR_HW_MODE_MAC0_TX_STREAMS_GET(hw_mode) \
|
||||
((hw_mode & POLICY_MGR_HW_MODE_MAC0_TX_STREAMS_MASK) >> \
|
||||
POLICY_MGR_HW_MODE_MAC0_TX_STREAMS_BITPOS)
|
||||
#define POLICY_MGR_HW_MODE_MAC0_RX_STREAMS_GET(hw_mode) \
|
||||
((hw_mode & POLICY_MGR_HW_MODE_MAC0_RX_STREAMS_MASK) >> \
|
||||
POLICY_MGR_HW_MODE_MAC0_RX_STREAMS_BITPOS)
|
||||
#define POLICY_MGR_HW_MODE_MAC1_TX_STREAMS_GET(hw_mode) \
|
||||
((hw_mode & POLICY_MGR_HW_MODE_MAC1_TX_STREAMS_MASK) >> \
|
||||
POLICY_MGR_HW_MODE_MAC1_TX_STREAMS_BITPOS)
|
||||
#define POLICY_MGR_HW_MODE_MAC1_RX_STREAMS_GET(hw_mode) \
|
||||
((hw_mode & POLICY_MGR_HW_MODE_MAC1_RX_STREAMS_MASK) >> \
|
||||
POLICY_MGR_HW_MODE_MAC1_RX_STREAMS_BITPOS)
|
||||
#define POLICY_MGR_HW_MODE_MAC0_BANDWIDTH_GET(hw_mode) \
|
||||
((hw_mode & POLICY_MGR_HW_MODE_MAC0_BANDWIDTH_MASK) >> \
|
||||
POLICY_MGR_HW_MODE_MAC0_BANDWIDTH_BITPOS)
|
||||
#define POLICY_MGR_HW_MODE_MAC1_BANDWIDTH_GET(hw_mode) \
|
||||
((hw_mode & POLICY_MGR_HW_MODE_MAC1_BANDWIDTH_MASK) >> \
|
||||
POLICY_MGR_HW_MODE_MAC1_BANDWIDTH_BITPOS)
|
||||
#define POLICY_MGR_HW_MODE_DBS_MODE_GET(hw_mode) \
|
||||
((hw_mode & POLICY_MGR_HW_MODE_DBS_MODE_MASK) >> \
|
||||
POLICY_MGR_HW_MODE_DBS_MODE_BITPOS)
|
||||
#define POLICY_MGR_HW_MODE_AGILE_DFS_GET(hw_mode) \
|
||||
((hw_mode & POLICY_MGR_HW_MODE_AGILE_DFS_MODE_MASK) >> \
|
||||
POLICY_MGR_HW_MODE_AGILE_DFS_MODE_BITPOS)
|
||||
#define POLICY_MGR_HW_MODE_SBS_MODE_GET(hw_mode) \
|
||||
((hw_mode & POLICY_MGR_HW_MODE_SBS_MODE_MASK) >> \
|
||||
POLICY_MGR_HW_MODE_SBS_MODE_BITPOS)
|
||||
|
||||
#define POLICY_MGR_DEFAULT_HW_MODE_INDEX 0xFFFF
|
||||
|
||||
#define policy_mgr_log(level, args...) \
|
||||
QDF_TRACE(QDF_MODULE_ID_POLICY_MGR, level, ## args)
|
||||
#define policy_mgr_logfl(level, format, args...) \
|
||||
policy_mgr_log(level, FL(format), ## args)
|
||||
|
||||
#define policy_mgr_alert(format, args...) \
|
||||
policy_mgr_logfl(QDF_TRACE_LEVEL_FATAL, format, ## args)
|
||||
#define policy_mgr_err(format, args...) \
|
||||
policy_mgr_logfl(QDF_TRACE_LEVEL_ERROR, format, ## args)
|
||||
#define policy_mgr_warn(format, args...) \
|
||||
policy_mgr_logfl(QDF_TRACE_LEVEL_WARN, format, ## args)
|
||||
#define policy_mgr_notice(format, args...) \
|
||||
policy_mgr_logfl(QDF_TRACE_LEVEL_INFO, format, ## args)
|
||||
#define policy_mgr_info(format, args...) \
|
||||
policy_mgr_logfl(QDF_TRACE_LEVEL_INFO_HIGH, format, ## args)
|
||||
#define policy_mgr_debug(format, args...) \
|
||||
policy_mgr_logfl(QDF_TRACE_LEVEL_DEBUG, format, ## args)
|
||||
|
||||
#define PM_CONC_CONNECTION_LIST_VALID_INDEX(index) \
|
||||
((MAX_NUMBER_OF_CONC_CONNECTIONS > index) && \
|
||||
(pm_conc_connection_list[index].in_use))
|
||||
|
||||
/**
|
||||
* struct policy_mgr_psoc_priv_obj - Policy manager private data
|
||||
* @psoc: pointer to PSOC object information
|
||||
* @connection_update_done_evt: qdf event to synchronize
|
||||
* connection activities
|
||||
* @qdf_conc_list_lock: To protect connection table
|
||||
* @dbs_opportunistic_timer: Timer to drop down to Single Mac
|
||||
* Mode opportunistically
|
||||
* @sap_restart_chan_switch_cb: Callback for channel switch
|
||||
* notification for SAP
|
||||
* @sme_cbacks: callbacks to be registered by SME for
|
||||
* interaction with Policy Manager
|
||||
* @wma_cbacks: callbacks to be registered by SME for
|
||||
* interaction with Policy Manager
|
||||
* @tdls_cbacks: callbacks to be registered by SME for
|
||||
* interaction with Policy Manager
|
||||
* @cdp_cbacks: callbacks to be registered by SME for
|
||||
* interaction with Policy Manager
|
||||
* @sap_mandatory_channels: The user preferred master list on
|
||||
* which SAP can be brought up. This
|
||||
* mandatory channel list would be as per
|
||||
* OEMs preference & conforming to the
|
||||
* regulatory/other considerations
|
||||
* @sap_mandatory_channels_len: Length of the SAP mandatory
|
||||
* channel list
|
||||
* @do_hw_mode_change: Flag to check if HW mode change is needed
|
||||
* after vdev is up. Especially used after
|
||||
* channel switch related vdev restart
|
||||
* @concurrency_mode: active concurrency combination
|
||||
* @no_of_open_sessions: Number of active vdevs
|
||||
* @no_of_active_sessions: Number of active connections
|
||||
* @sta_ap_intf_check_work: delayed sap restart work
|
||||
* @num_dbs_hw_modes: Number of different HW modes supported
|
||||
* @hw_mode: List of HW modes supported
|
||||
* @old_hw_mode_index: Old HW mode from hw_mode table
|
||||
* @new_hw_mode_index: New HW mode from hw_mode table
|
||||
* @phy_caps: PHY capability advertised by FW
|
||||
* @enable2x2: 2x2 chain mask user config
|
||||
* @gMaxConcurrentActiveSessions: Max concurrenct active
|
||||
* connections user config
|
||||
* @conc_system_pref: System preference of t/p, power or latancy
|
||||
* for Preferred Channel List table, user
|
||||
* config
|
||||
* @dual_mac_cfg: DBS configuration currenctly used by FW for
|
||||
* scan & connections
|
||||
*/
|
||||
struct policy_mgr_psoc_priv_obj {
|
||||
struct wlan_objmgr_psoc *psoc;
|
||||
qdf_event_t connection_update_done_evt;
|
||||
qdf_mutex_t qdf_conc_list_lock;
|
||||
qdf_mc_timer_t dbs_opportunistic_timer;
|
||||
void (*sap_restart_chan_switch_cb)(void *, uint32_t, uint32_t);
|
||||
struct policy_mgr_sme_cbacks sme_cbacks;
|
||||
struct policy_mgr_wma_cbacks wma_cbacks;
|
||||
struct policy_mgr_tdls_cbacks tdls_cbacks;
|
||||
struct policy_mgr_cdp_cbacks cdp_cbacks;
|
||||
uint8_t sap_mandatory_channels[QDF_MAX_NUM_CHAN];
|
||||
uint32_t sap_mandatory_channels_len;
|
||||
bool do_hw_mode_change;
|
||||
uint32_t concurrency_mode;
|
||||
uint8_t no_of_open_sessions[QDF_MAX_NO_OF_MODE];
|
||||
uint8_t no_of_active_sessions[QDF_MAX_NO_OF_MODE];
|
||||
qdf_work_t sta_ap_intf_check_work;
|
||||
uint32_t num_dbs_hw_modes;
|
||||
struct dbs_hw_mode_info hw_mode;
|
||||
uint32_t old_hw_mode_index;
|
||||
uint32_t new_hw_mode_index;
|
||||
struct extended_caps phy_caps;
|
||||
bool enable2x2;
|
||||
uint8_t gMaxConcurrentActiveSessions;
|
||||
uint8_t conc_system_pref;
|
||||
struct dual_mac_config dual_mac_cfg;
|
||||
};
|
||||
|
||||
struct policy_mgr_psoc_priv_obj *policy_mgr_get_context(
|
||||
struct wlan_objmgr_psoc *psoc);
|
||||
QDF_STATUS policy_mgr_get_updated_scan_config(
|
||||
struct wlan_objmgr_psoc *psoc,
|
||||
uint32_t *scan_config,
|
||||
bool dbs_scan,
|
||||
bool dbs_plus_agile_scan,
|
||||
bool single_mac_scan_with_dfs);
|
||||
QDF_STATUS policy_mgr_get_updated_fw_mode_config(
|
||||
struct wlan_objmgr_psoc *psoc,
|
||||
uint32_t *fw_mode_config,
|
||||
bool dbs,
|
||||
bool agile_dfs);
|
||||
bool policy_mgr_is_dual_mac_disabled_in_ini(
|
||||
struct wlan_objmgr_psoc *psoc);
|
||||
bool policy_mgr_get_dbs_config(struct wlan_objmgr_psoc *psoc);
|
||||
bool policy_mgr_get_agile_dfs_config(struct wlan_objmgr_psoc *psoc);
|
||||
bool policy_mgr_get_dbs_scan_config(struct wlan_objmgr_psoc *psoc);
|
||||
void policy_mgr_get_tx_rx_ss_from_config(enum hw_mode_ss_config mac_ss,
|
||||
uint32_t *tx_ss, uint32_t *rx_ss);
|
||||
int8_t policy_mgr_get_matching_hw_mode_index(
|
||||
struct wlan_objmgr_psoc *psoc,
|
||||
uint32_t mac0_tx_ss, uint32_t mac0_rx_ss,
|
||||
enum hw_mode_bandwidth mac0_bw,
|
||||
uint32_t mac1_tx_ss, uint32_t mac1_rx_ss,
|
||||
enum hw_mode_bandwidth mac1_bw,
|
||||
enum hw_mode_dbs_capab dbs,
|
||||
enum hw_mode_agile_dfs_capab dfs,
|
||||
enum hw_mode_sbs_capab sbs);
|
||||
int8_t policy_mgr_get_hw_mode_idx_from_dbs_hw_list(
|
||||
struct wlan_objmgr_psoc *psoc,
|
||||
enum hw_mode_ss_config mac0_ss,
|
||||
enum hw_mode_bandwidth mac0_bw,
|
||||
enum hw_mode_ss_config mac1_ss,
|
||||
enum hw_mode_bandwidth mac1_bw,
|
||||
enum hw_mode_dbs_capab dbs,
|
||||
enum hw_mode_agile_dfs_capab dfs,
|
||||
enum hw_mode_sbs_capab sbs);
|
||||
QDF_STATUS policy_mgr_get_hw_mode_from_idx(
|
||||
struct wlan_objmgr_psoc *psoc,
|
||||
uint32_t idx,
|
||||
struct policy_mgr_hw_mode_params *hw_mode);
|
||||
QDF_STATUS policy_mgr_get_old_and_new_hw_index(
|
||||
struct wlan_objmgr_psoc *psoc,
|
||||
uint32_t *old_hw_mode_index,
|
||||
uint32_t *new_hw_mode_index);
|
||||
void policy_mgr_update_conc_list(struct wlan_objmgr_psoc *psoc,
|
||||
uint32_t conn_index,
|
||||
enum policy_mgr_con_mode mode,
|
||||
uint8_t chan,
|
||||
enum hw_mode_bandwidth bw,
|
||||
uint8_t mac,
|
||||
enum policy_mgr_chain_mode chain_mask,
|
||||
uint32_t original_nss,
|
||||
uint32_t vdev_id,
|
||||
bool in_use);
|
||||
void policy_mgr_store_and_del_conn_info(struct wlan_objmgr_psoc *psoc,
|
||||
enum policy_mgr_con_mode mode,
|
||||
struct policy_mgr_conc_connection_info *info);
|
||||
void policy_mgr_restore_deleted_conn_info(struct wlan_objmgr_psoc *psoc,
|
||||
struct policy_mgr_conc_connection_info *info);
|
||||
void policy_mgr_update_hw_mode_conn_info(struct wlan_objmgr_psoc *psoc,
|
||||
uint32_t num_vdev_mac_entries,
|
||||
struct policy_mgr_vdev_mac_map *vdev_mac_map,
|
||||
struct policy_mgr_hw_mode_params hw_mode);
|
||||
void policy_mgr_pdev_set_hw_mode_cb(uint32_t status,
|
||||
uint32_t cfgd_hw_mode_index,
|
||||
uint32_t num_vdev_mac_entries,
|
||||
struct policy_mgr_vdev_mac_map *vdev_mac_map,
|
||||
void *context);
|
||||
void policy_mgr_dump_current_concurrency(struct wlan_objmgr_psoc *psoc);
|
||||
void policy_mgr_pdev_set_pcl(struct wlan_objmgr_psoc *psoc,
|
||||
enum tQDF_ADAPTER_MODE mode);
|
||||
void policy_mgr_set_pcl_for_existing_combo(
|
||||
struct wlan_objmgr_psoc *psoc, enum policy_mgr_con_mode mode);
|
||||
void pm_dbs_opportunistic_timer_handler(void *data);
|
||||
enum policy_mgr_con_mode policy_mgr_get_mode(uint8_t type,
|
||||
uint8_t subtype);
|
||||
QDF_STATUS policy_mgr_get_channel_list(struct wlan_objmgr_psoc *psoc,
|
||||
enum policy_mgr_pcl_type pcl,
|
||||
uint8_t *pcl_channels, uint32_t *len,
|
||||
enum policy_mgr_con_mode mode,
|
||||
uint8_t *pcl_weights, uint32_t weight_len);
|
||||
bool policy_mgr_disallow_mcc(struct wlan_objmgr_psoc *psoc,
|
||||
uint8_t channel);
|
||||
bool policy_mgr_allow_new_home_channel(struct wlan_objmgr_psoc *psoc,
|
||||
uint8_t channel, uint32_t num_connections);
|
||||
bool policy_mgr_vht160_conn_exist(struct wlan_objmgr_psoc *psoc);
|
||||
bool policy_mgr_is_5g_channel_allowed(struct wlan_objmgr_psoc *psoc,
|
||||
uint8_t channel, uint32_t *list,
|
||||
enum policy_mgr_con_mode mode);
|
||||
QDF_STATUS policy_mgr_complete_action(struct wlan_objmgr_psoc *psoc,
|
||||
uint8_t new_nss, uint8_t next_action,
|
||||
enum policy_mgr_conn_update_reason reason,
|
||||
uint32_t session_id);
|
||||
enum policy_mgr_con_mode policy_mgr_get_mode_by_vdev_id(
|
||||
struct wlan_objmgr_psoc *psoc,
|
||||
uint8_t vdev_id);
|
||||
QDF_STATUS policy_mgr_init_connection_update(
|
||||
struct policy_mgr_psoc_priv_obj *pm_ctx);
|
||||
enum policy_mgr_conc_next_action
|
||||
policy_mgr_get_current_pref_hw_mode_dbs_2x2(
|
||||
struct wlan_objmgr_psoc *psoc);
|
||||
enum policy_mgr_conc_next_action
|
||||
policy_mgr_get_current_pref_hw_mode_dbs_1x1(
|
||||
struct wlan_objmgr_psoc *psoc);
|
||||
QDF_STATUS policy_mgr_reset_sap_mandatory_channels(
|
||||
struct policy_mgr_psoc_priv_obj *pm_ctx);
|
||||
#endif
|
||||
314
src/wlan_policy_mgr_init_deinit.c
Normal file
314
src/wlan_policy_mgr_init_deinit.c
Normal file
|
|
@ -0,0 +1,314 @@
|
|||
/*
|
||||
* Copyright (c) 2012-2017 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.
|
||||
*/
|
||||
|
||||
/**
|
||||
* DOC: wlan_policy_mgr_init_deinit.c
|
||||
*
|
||||
* WLAN Concurrenct Connection Management APIs
|
||||
*
|
||||
*/
|
||||
|
||||
/* Include files */
|
||||
|
||||
#include "wlan_policy_mgr_api.h"
|
||||
#include "wlan_policy_mgr_tables_1x1_dbs_i.h"
|
||||
#include "wlan_policy_mgr_tables_2x2_dbs_i.h"
|
||||
#include "wlan_policy_mgr_i.h"
|
||||
#include "qdf_types.h"
|
||||
#include "qdf_trace.h"
|
||||
#include "wlan_objmgr_global_obj.h"
|
||||
|
||||
static QDF_STATUS policy_mgr_psoc_obj_create_cb(struct wlan_objmgr_psoc *psoc,
|
||||
void *data)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
static QDF_STATUS policy_mgr_psoc_obj_delete_cb(struct wlan_objmgr_psoc *psoc,
|
||||
void *data)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
static void policy_mgr_psoc_obj_status_cb(struct wlan_objmgr_psoc *psoc,
|
||||
void *data, QDF_STATUS status)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
static QDF_STATUS policy_mgr_vdev_obj_create_cb(struct wlan_objmgr_vdev *vdev,
|
||||
void *data)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
static QDF_STATUS policy_mgr_vdev_obj_delete_cb(struct wlan_objmgr_vdev *vdev,
|
||||
void *data)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
static void policy_mgr_vdev_obj_status_cb(struct wlan_objmgr_vdev *vdev,
|
||||
void *data, QDF_STATUS status)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
QDF_STATUS policy_mgr_init(void)
|
||||
{
|
||||
QDF_STATUS status = QDF_STATUS_SUCCESS;
|
||||
status = wlan_objmgr_register_psoc_create_handler(
|
||||
WLAN_UMAC_COMP_POLICY_MGR,
|
||||
policy_mgr_psoc_obj_create_cb,
|
||||
NULL);
|
||||
if (status != QDF_STATUS_SUCCESS) {
|
||||
policy_mgr_err("Failed to register psoc obj create cback");
|
||||
goto err_psoc_create;
|
||||
}
|
||||
|
||||
status = wlan_objmgr_register_psoc_destroy_handler(
|
||||
WLAN_UMAC_COMP_POLICY_MGR,
|
||||
policy_mgr_psoc_obj_delete_cb,
|
||||
NULL);
|
||||
if (status != QDF_STATUS_SUCCESS) {
|
||||
policy_mgr_err("Failed to register psoc obj delete cback");
|
||||
goto err_psoc_delete;
|
||||
}
|
||||
|
||||
status = wlan_objmgr_register_psoc_status_handler(
|
||||
WLAN_UMAC_COMP_POLICY_MGR,
|
||||
policy_mgr_psoc_obj_status_cb,
|
||||
NULL);
|
||||
if (status != QDF_STATUS_SUCCESS) {
|
||||
policy_mgr_err("Failed to register psoc obj status cback");
|
||||
goto err_psoc_status;
|
||||
}
|
||||
|
||||
status = wlan_objmgr_register_vdev_create_handler(
|
||||
WLAN_UMAC_COMP_POLICY_MGR,
|
||||
policy_mgr_vdev_obj_create_cb,
|
||||
NULL);
|
||||
if (status != QDF_STATUS_SUCCESS) {
|
||||
policy_mgr_err("Failed to register vdev obj create cback");
|
||||
goto err_vdev_create;
|
||||
}
|
||||
|
||||
status = wlan_objmgr_register_vdev_destroy_handler(
|
||||
WLAN_UMAC_COMP_POLICY_MGR,
|
||||
policy_mgr_vdev_obj_delete_cb,
|
||||
NULL);
|
||||
if (status != QDF_STATUS_SUCCESS) {
|
||||
policy_mgr_err("Failed to register vdev obj delete cback");
|
||||
goto err_vdev_delete;
|
||||
}
|
||||
|
||||
status = wlan_objmgr_register_vdev_status_handler(
|
||||
WLAN_UMAC_COMP_POLICY_MGR,
|
||||
policy_mgr_vdev_obj_status_cb,
|
||||
NULL);
|
||||
if (status != QDF_STATUS_SUCCESS) {
|
||||
policy_mgr_err("Failed to register vdev obj status cback");
|
||||
goto err_vdev_status;
|
||||
}
|
||||
|
||||
policy_mgr_notice("Callbacks registered with obj mgr");
|
||||
|
||||
return QDF_STATUS_SUCCESS;
|
||||
|
||||
err_vdev_status:
|
||||
wlan_objmgr_unregister_vdev_destroy_handler(WLAN_UMAC_COMP_POLICY_MGR,
|
||||
policy_mgr_vdev_obj_delete_cb, NULL);
|
||||
err_vdev_delete:
|
||||
wlan_objmgr_unregister_vdev_create_handler(WLAN_UMAC_COMP_POLICY_MGR,
|
||||
policy_mgr_vdev_obj_create_cb, NULL);
|
||||
err_vdev_create:
|
||||
wlan_objmgr_unregister_psoc_status_handler(WLAN_UMAC_COMP_POLICY_MGR,
|
||||
policy_mgr_psoc_obj_status_cb, NULL);
|
||||
err_psoc_status:
|
||||
wlan_objmgr_unregister_psoc_destroy_handler(WLAN_UMAC_COMP_POLICY_MGR,
|
||||
policy_mgr_psoc_obj_delete_cb, NULL);
|
||||
err_psoc_delete:
|
||||
wlan_objmgr_unregister_psoc_create_handler(WLAN_UMAC_COMP_POLICY_MGR,
|
||||
policy_mgr_psoc_obj_create_cb, NULL);
|
||||
err_psoc_create:
|
||||
return status;
|
||||
}
|
||||
|
||||
QDF_STATUS policy_mgr_deinit(void)
|
||||
{
|
||||
QDF_STATUS status;
|
||||
|
||||
status = wlan_objmgr_unregister_psoc_create_handler(
|
||||
WLAN_UMAC_COMP_POLICY_MGR,
|
||||
policy_mgr_psoc_obj_create_cb,
|
||||
NULL);
|
||||
if (status != QDF_STATUS_SUCCESS)
|
||||
policy_mgr_err("Failed to deregister psoc obj create cback");
|
||||
|
||||
status = wlan_objmgr_unregister_psoc_destroy_handler(
|
||||
WLAN_UMAC_COMP_POLICY_MGR,
|
||||
policy_mgr_psoc_obj_delete_cb,
|
||||
NULL);
|
||||
if (status != QDF_STATUS_SUCCESS)
|
||||
policy_mgr_err("Failed to deregister psoc obj delete cback");
|
||||
|
||||
status = wlan_objmgr_unregister_psoc_status_handler(
|
||||
WLAN_UMAC_COMP_POLICY_MGR,
|
||||
policy_mgr_psoc_obj_status_cb,
|
||||
NULL);
|
||||
if (status != QDF_STATUS_SUCCESS)
|
||||
policy_mgr_err("Failed to deregister psoc obj status cback");
|
||||
|
||||
status = wlan_objmgr_unregister_vdev_create_handler(
|
||||
WLAN_UMAC_COMP_POLICY_MGR,
|
||||
policy_mgr_vdev_obj_create_cb,
|
||||
NULL);
|
||||
if (status != QDF_STATUS_SUCCESS)
|
||||
policy_mgr_err("Failed to deregister vdev obj create cback");
|
||||
|
||||
status = wlan_objmgr_unregister_vdev_destroy_handler(
|
||||
WLAN_UMAC_COMP_POLICY_MGR,
|
||||
policy_mgr_vdev_obj_delete_cb,
|
||||
NULL);
|
||||
if (status != QDF_STATUS_SUCCESS)
|
||||
policy_mgr_err("Failed to deregister vdev obj delete cback");
|
||||
|
||||
status = wlan_objmgr_unregister_vdev_status_handler(
|
||||
WLAN_UMAC_COMP_POLICY_MGR,
|
||||
policy_mgr_vdev_obj_status_cb,
|
||||
NULL);
|
||||
if (status != QDF_STATUS_SUCCESS)
|
||||
policy_mgr_err("Failed to deregister vdev obj status cback");
|
||||
|
||||
policy_mgr_info("deregistered callbacks with obj mgr successfully");
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
QDF_STATUS policy_mgr_psoc_open(struct wlan_objmgr_psoc *psoc)
|
||||
{
|
||||
/* placeholder for now */
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
QDF_STATUS policy_mgr_psoc_close(struct wlan_objmgr_psoc *psoc)
|
||||
{
|
||||
/* placeholder for now */
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
QDF_STATUS policy_mgr_psoc_enable(struct wlan_objmgr_psoc *psoc)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
QDF_STATUS policy_mgr_psoc_disable(struct wlan_objmgr_psoc *psoc)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
QDF_STATUS policy_mgr_register_sme_cb(struct wlan_objmgr_psoc *psoc,
|
||||
struct policy_mgr_sme_cbacks *sme_cbacks)
|
||||
{
|
||||
struct policy_mgr_psoc_priv_obj *pm_ctx;
|
||||
|
||||
pm_ctx = policy_mgr_get_context(psoc);
|
||||
if (!pm_ctx) {
|
||||
policy_mgr_err("Invalid Context");
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
}
|
||||
|
||||
pm_ctx->sme_cbacks.sme_get_nss_for_vdev =
|
||||
sme_cbacks->sme_get_nss_for_vdev;
|
||||
pm_ctx->sme_cbacks.sme_get_valid_channels =
|
||||
sme_cbacks->sme_get_valid_channels;
|
||||
pm_ctx->sme_cbacks.sme_nss_update_request =
|
||||
sme_cbacks->sme_nss_update_request;
|
||||
pm_ctx->sme_cbacks.sme_pdev_set_hw_mode =
|
||||
sme_cbacks->sme_pdev_set_hw_mode;
|
||||
pm_ctx->sme_cbacks.sme_pdev_set_pcl =
|
||||
sme_cbacks->sme_pdev_set_pcl;
|
||||
pm_ctx->sme_cbacks.sme_soc_set_dual_mac_config =
|
||||
sme_cbacks->sme_soc_set_dual_mac_config;
|
||||
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
QDF_STATUS policy_mgr_register_wma_cb(struct wlan_objmgr_psoc *psoc,
|
||||
struct policy_mgr_wma_cbacks *wma_cbacks)
|
||||
{
|
||||
struct policy_mgr_psoc_priv_obj *pm_ctx;
|
||||
|
||||
pm_ctx = policy_mgr_get_context(psoc);
|
||||
if (!pm_ctx) {
|
||||
policy_mgr_err("Invalid Context");
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
}
|
||||
|
||||
pm_ctx->wma_cbacks.wma_get_connection_info =
|
||||
wma_cbacks->wma_get_connection_info;
|
||||
pm_ctx->wma_cbacks.wma_is_service_enabled =
|
||||
wma_cbacks->wma_is_service_enabled;
|
||||
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
QDF_STATUS policy_mgr_register_cdp_cb(struct wlan_objmgr_psoc *psoc,
|
||||
struct policy_mgr_cdp_cbacks *cdp_cbacks)
|
||||
{
|
||||
struct policy_mgr_psoc_priv_obj *pm_ctx;
|
||||
|
||||
pm_ctx = policy_mgr_get_context(psoc);
|
||||
if (!pm_ctx) {
|
||||
policy_mgr_err("Invalid Context");
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
}
|
||||
|
||||
pm_ctx->cdp_cbacks.cdp_update_mac_id =
|
||||
cdp_cbacks->cdp_update_mac_id;
|
||||
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
QDF_STATUS policy_mgr_register_tdls_cb(struct wlan_objmgr_psoc *psoc,
|
||||
struct policy_mgr_tdls_cbacks *tdls_cbacks)
|
||||
{
|
||||
struct policy_mgr_psoc_priv_obj *pm_ctx;
|
||||
|
||||
pm_ctx = policy_mgr_get_context(psoc);
|
||||
if (!pm_ctx) {
|
||||
policy_mgr_err("Invalid Context");
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
}
|
||||
|
||||
pm_ctx->tdls_cbacks.check_is_tdls_allowed =
|
||||
tdls_cbacks->check_is_tdls_allowed;
|
||||
pm_ctx->tdls_cbacks.set_tdls_ct_mode =
|
||||
tdls_cbacks->set_tdls_ct_mode;
|
||||
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
172
src/wlan_policy_mgr_pcl.c
Normal file
172
src/wlan_policy_mgr_pcl.c
Normal file
|
|
@ -0,0 +1,172 @@
|
|||
/*
|
||||
* Copyright (c) 2012-2017 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.
|
||||
*/
|
||||
|
||||
/**
|
||||
* DOC: wlan_policy_mgr_pcl.c
|
||||
*
|
||||
* WLAN Concurrenct Connection Management APIs
|
||||
*
|
||||
*/
|
||||
|
||||
/* Include files */
|
||||
|
||||
#include "wlan_policy_mgr_api.h"
|
||||
#include "wlan_policy_mgr_tables_no_dbs_i.h"
|
||||
#include "wlan_policy_mgr_i.h"
|
||||
#include "qdf_types.h"
|
||||
#include "qdf_trace.h"
|
||||
#include "wlan_objmgr_global_obj.h"
|
||||
|
||||
/**
|
||||
* first_connection_pcl_table - table which provides PCL for the
|
||||
* very first connection in the system
|
||||
*/
|
||||
const enum policy_mgr_pcl_type
|
||||
first_connection_pcl_table[PM_MAX_NUM_OF_MODE]
|
||||
[PM_MAX_CONC_PRIORITY_MODE] = {
|
||||
[PM_STA_MODE] = {PM_NONE, PM_NONE, PM_NONE},
|
||||
[PM_SAP_MODE] = {PM_5G, PM_5G, PM_5G },
|
||||
[PM_P2P_CLIENT_MODE] = {PM_5G, PM_5G, PM_5G },
|
||||
[PM_P2P_GO_MODE] = {PM_5G, PM_5G, PM_5G },
|
||||
[PM_IBSS_MODE] = {PM_NONE, PM_NONE, PM_NONE},
|
||||
};
|
||||
|
||||
pm_dbs_pcl_second_connection_table_type
|
||||
*second_connection_pcl_dbs_table;
|
||||
pm_dbs_pcl_third_connection_table_type
|
||||
*third_connection_pcl_dbs_table;
|
||||
policy_mgr_next_action_two_connection_table_type
|
||||
*next_action_two_connection_table;
|
||||
policy_mgr_next_action_three_connection_table_type
|
||||
*next_action_three_connection_table;
|
||||
|
||||
QDF_STATUS policy_mgr_get_pcl_for_existing_conn(struct wlan_objmgr_psoc *psoc,
|
||||
enum policy_mgr_con_mode mode,
|
||||
uint8_t *pcl_ch, uint32_t *len,
|
||||
uint8_t *pcl_weight, uint32_t weight_len)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
void policy_mgr_decr_session_set_pcl(struct wlan_objmgr_psoc *psoc,
|
||||
enum tQDF_ADAPTER_MODE mode,
|
||||
uint8_t session_id)
|
||||
{
|
||||
}
|
||||
|
||||
void policy_mgr_update_with_safe_channel_list(uint8_t *pcl_channels,
|
||||
uint32_t *len, uint8_t *weight_list, uint32_t weight_len)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
uint8_t policy_mgr_get_channel(struct wlan_objmgr_psoc *psoc,
|
||||
enum policy_mgr_con_mode mode, uint32_t *vdev_id)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
QDF_STATUS policy_mgr_get_pcl(struct wlan_objmgr_psoc *psoc,
|
||||
enum policy_mgr_con_mode mode,
|
||||
uint8_t *pcl_channels, uint32_t *len,
|
||||
uint8_t *pcl_weight, uint32_t weight_len)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
enum policy_mgr_conc_priority_mode
|
||||
policy_mgr_get_first_connection_pcl_table_index(
|
||||
struct wlan_objmgr_psoc *psoc)
|
||||
{
|
||||
return PM_MAX_CONC_PRIORITY_MODE;
|
||||
}
|
||||
|
||||
enum policy_mgr_one_connection_mode
|
||||
policy_mgr_get_second_connection_pcl_table_index(
|
||||
struct wlan_objmgr_psoc *psoc)
|
||||
{
|
||||
return PM_MAX_ONE_CONNECTION_MODE;
|
||||
}
|
||||
|
||||
enum policy_mgr_two_connection_mode
|
||||
policy_mgr_get_third_connection_pcl_table_index(
|
||||
struct wlan_objmgr_psoc *psoc)
|
||||
{
|
||||
return PM_MAX_TWO_CONNECTION_MODE;
|
||||
}
|
||||
|
||||
uint8_t
|
||||
policy_mgr_get_nondfs_preferred_channel(struct wlan_objmgr_psoc *psoc,
|
||||
enum policy_mgr_con_mode mode,
|
||||
bool for_existing_conn)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
QDF_STATUS policy_mgr_get_valid_chans(struct wlan_objmgr_psoc *psoc,
|
||||
uint8_t *chan_list, uint32_t *list_len)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
bool policy_mgr_list_has_24GHz_channel(uint8_t *channel_list,
|
||||
uint32_t list_len)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
QDF_STATUS policy_mgr_set_sap_mandatory_channels(struct wlan_objmgr_psoc *psoc,
|
||||
uint8_t *channels, uint32_t len)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
bool policy_mgr_is_sap_mandatory_channel_set(struct wlan_objmgr_psoc *psoc)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
QDF_STATUS policy_mgr_modify_sap_pcl_based_on_mandatory_channel(
|
||||
struct wlan_objmgr_psoc *psoc,
|
||||
uint8_t *pcl_list_org,
|
||||
uint8_t *weight_list_org,
|
||||
uint32_t *pcl_len_org)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
QDF_STATUS policy_mgr_get_sap_mandatory_channel(struct wlan_objmgr_psoc *psoc,
|
||||
uint32_t *chan)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
QDF_STATUS policy_mgr_get_valid_chan_weights(struct wlan_objmgr_psoc *psoc,
|
||||
struct policy_mgr_pcl_chan_weights *weight)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
1015
src/wlan_policy_mgr_tables_1x1_dbs_i.h
Normal file
1015
src/wlan_policy_mgr_tables_1x1_dbs_i.h
Normal file
File diff suppressed because it is too large
Load diff
1392
src/wlan_policy_mgr_tables_2x2_dbs_i.h
Normal file
1392
src/wlan_policy_mgr_tables_2x2_dbs_i.h
Normal file
File diff suppressed because it is too large
Load diff
909
src/wlan_policy_mgr_tables_no_dbs_i.h
Normal file
909
src/wlan_policy_mgr_tables_no_dbs_i.h
Normal file
|
|
@ -0,0 +1,909 @@
|
|||
/*
|
||||
* Copyright (c) 2012-2017 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 __WLAN_POLICY_MGR_TABLES_NO_DBS_H
|
||||
#define __WLAN_POLICY_MGR_TABLES_NO_DBS_H
|
||||
|
||||
#include "wlan_policy_mgr_api.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 policy_mgr_pcl_type
|
||||
second_connection_pcl_nodbs_table[PM_MAX_ONE_CONNECTION_MODE]
|
||||
[PM_MAX_NUM_OF_MODE][PM_MAX_CONC_PRIORITY_MODE] = {
|
||||
[PM_STA_24_1x1] = {
|
||||
[PM_STA_MODE] = {PM_5G, PM_SCC_CH, PM_SCC_CH},
|
||||
[PM_SAP_MODE] = {PM_5G, PM_SCC_CH, PM_SCC_CH_5G},
|
||||
[PM_P2P_CLIENT_MODE] = {PM_5G, PM_SCC_CH, PM_SCC_CH_5G},
|
||||
[PM_P2P_GO_MODE] = {PM_5G, PM_SCC_CH, PM_SCC_CH_5G},
|
||||
[PM_IBSS_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE} },
|
||||
|
||||
[PM_STA_24_2x2] = {
|
||||
[PM_STA_MODE] = {PM_5G, PM_SCC_CH, PM_SCC_CH},
|
||||
[PM_SAP_MODE] = {PM_5G, PM_SCC_CH, PM_SCC_CH_5G},
|
||||
[PM_P2P_CLIENT_MODE] = {PM_5G, PM_SCC_CH, PM_SCC_CH_5G},
|
||||
[PM_P2P_GO_MODE] = {PM_5G, PM_SCC_CH, PM_SCC_CH_5G},
|
||||
[PM_IBSS_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE} },
|
||||
|
||||
[PM_STA_5_1x1] = {
|
||||
[PM_STA_MODE] = {PM_SCC_CH_5G, PM_SCC_CH, PM_SCC_CH_5G},
|
||||
[PM_SAP_MODE] = {PM_SCC_CH_5G, PM_SCC_CH, PM_SCC_CH},
|
||||
[PM_P2P_CLIENT_MODE] = {PM_SCC_CH_5G, PM_SCC_CH, PM_SCC_CH},
|
||||
[PM_P2P_GO_MODE] = {PM_SCC_CH_5G, PM_SCC_CH, PM_SCC_CH},
|
||||
[PM_IBSS_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE} },
|
||||
|
||||
[PM_STA_5_2x2] = {
|
||||
[PM_STA_MODE] = {PM_SCC_CH_5G, PM_SCC_CH, PM_SCC_CH_5G},
|
||||
[PM_SAP_MODE] = {PM_SCC_CH_5G, PM_SCC_CH, PM_SCC_CH},
|
||||
[PM_P2P_CLIENT_MODE] = {PM_SCC_CH_5G, PM_SCC_CH, PM_SCC_CH},
|
||||
[PM_P2P_GO_MODE] = {PM_SCC_CH_5G, PM_SCC_CH, PM_SCC_CH},
|
||||
[PM_IBSS_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE} },
|
||||
|
||||
[PM_P2P_CLI_24_1x1] = {
|
||||
[PM_STA_MODE] = {PM_5G, PM_SCC_CH, PM_SCC_CH},
|
||||
[PM_SAP_MODE] = {PM_5G, PM_SCC_CH, PM_SCC_CH_5G},
|
||||
[PM_P2P_CLIENT_MODE] = {PM_5G, PM_SCC_CH, PM_SCC_CH_5G},
|
||||
[PM_P2P_GO_MODE] = {PM_5G, PM_SCC_CH, PM_SCC_CH_5G},
|
||||
[PM_IBSS_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE} },
|
||||
|
||||
[PM_P2P_CLI_24_2x2] = {
|
||||
[PM_STA_MODE] = {PM_5G, PM_SCC_CH, PM_SCC_CH},
|
||||
[PM_SAP_MODE] = {PM_5G, PM_SCC_CH, PM_SCC_CH_5G},
|
||||
[PM_P2P_CLIENT_MODE] = {PM_5G, PM_SCC_CH, PM_SCC_CH_5G},
|
||||
[PM_P2P_GO_MODE] = {PM_5G, PM_SCC_CH, PM_SCC_CH_5G},
|
||||
[PM_IBSS_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE} },
|
||||
|
||||
[PM_P2P_CLI_5_1x1] = {
|
||||
[PM_STA_MODE] = {PM_SCC_CH_5G, PM_SCC_CH, PM_SCC_CH_5G},
|
||||
[PM_SAP_MODE] = {PM_SCC_CH_5G, PM_SCC_CH, PM_SCC_CH},
|
||||
[PM_P2P_CLIENT_MODE] = {PM_SCC_CH_5G, PM_SCC_CH, PM_SCC_CH},
|
||||
[PM_P2P_GO_MODE] = {PM_SCC_CH_5G, PM_SCC_CH, PM_SCC_CH},
|
||||
[PM_IBSS_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE} },
|
||||
|
||||
[PM_P2P_CLI_5_2x2] = {
|
||||
[PM_STA_MODE] = {PM_SCC_CH_5G, PM_SCC_CH, PM_SCC_CH_5G},
|
||||
[PM_SAP_MODE] = {PM_SCC_CH_5G, PM_SCC_CH, PM_SCC_CH},
|
||||
[PM_P2P_CLIENT_MODE] = {PM_SCC_CH_5G, PM_SCC_CH, PM_SCC_CH},
|
||||
[PM_P2P_GO_MODE] = {PM_SCC_CH_5G, PM_SCC_CH, PM_SCC_CH},
|
||||
[PM_IBSS_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE} },
|
||||
|
||||
[PM_P2P_GO_24_1x1] = {
|
||||
[PM_STA_MODE] = {PM_SCC_CH, PM_SCC_CH, PM_SCC_CH},
|
||||
[PM_SAP_MODE] = {PM_SCC_CH, PM_SCC_CH, PM_SCC_CH},
|
||||
[PM_P2P_CLIENT_MODE] = {PM_SCC_CH, PM_SCC_CH, PM_SCC_CH},
|
||||
[PM_P2P_GO_MODE] = {PM_SCC_CH, PM_SCC_CH, PM_SCC_CH},
|
||||
[PM_IBSS_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE} },
|
||||
|
||||
[PM_P2P_GO_24_2x2] = {
|
||||
[PM_STA_MODE] = {PM_SCC_CH, PM_SCC_CH, PM_SCC_CH},
|
||||
[PM_SAP_MODE] = {PM_SCC_CH, PM_SCC_CH, PM_SCC_CH},
|
||||
[PM_P2P_CLIENT_MODE] = {PM_SCC_CH, PM_SCC_CH, PM_SCC_CH},
|
||||
[PM_P2P_GO_MODE] = {PM_SCC_CH, PM_SCC_CH, PM_SCC_CH},
|
||||
[PM_IBSS_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE} },
|
||||
|
||||
[PM_P2P_GO_5_1x1] = {
|
||||
[PM_STA_MODE] = {PM_SCC_CH_5G, PM_SCC_CH, PM_SCC_CH},
|
||||
[PM_SAP_MODE] = {PM_SCC_CH, PM_SCC_CH, PM_SCC_CH},
|
||||
[PM_P2P_CLIENT_MODE] = {PM_SCC_CH, PM_SCC_CH, PM_SCC_CH},
|
||||
[PM_P2P_GO_MODE] = {PM_SCC_CH, PM_SCC_CH, PM_SCC_CH},
|
||||
[PM_IBSS_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE} },
|
||||
|
||||
[PM_P2P_GO_5_2x2] = {
|
||||
[PM_STA_MODE] = {PM_SCC_CH_5G, PM_SCC_CH, PM_SCC_CH},
|
||||
[PM_SAP_MODE] = {PM_SCC_CH, PM_SCC_CH, PM_SCC_CH},
|
||||
[PM_P2P_CLIENT_MODE] = {PM_SCC_CH, PM_SCC_CH, PM_SCC_CH},
|
||||
[PM_P2P_GO_MODE] = {PM_SCC_CH, PM_SCC_CH, PM_SCC_CH},
|
||||
[PM_IBSS_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE} },
|
||||
|
||||
[PM_SAP_24_1x1] = {
|
||||
[PM_STA_MODE] = {PM_SCC_CH, PM_SCC_CH, PM_SCC_CH},
|
||||
[PM_SAP_MODE] = {PM_SCC_CH, PM_SCC_CH, PM_SCC_CH},
|
||||
[PM_P2P_CLIENT_MODE] = {PM_SCC_CH, PM_SCC_CH, PM_SCC_CH},
|
||||
[PM_P2P_GO_MODE] = {PM_SCC_CH, PM_SCC_CH, PM_SCC_CH},
|
||||
[PM_IBSS_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE} },
|
||||
|
||||
[PM_SAP_24_2x2] = {
|
||||
[PM_STA_MODE] = {PM_SCC_CH, PM_SCC_CH, PM_SCC_CH},
|
||||
[PM_SAP_MODE] = {PM_SCC_CH, PM_SCC_CH, PM_SCC_CH},
|
||||
[PM_P2P_CLIENT_MODE] = {PM_SCC_CH, PM_SCC_CH, PM_SCC_CH},
|
||||
[PM_P2P_GO_MODE] = {PM_SCC_CH, PM_SCC_CH, PM_SCC_CH},
|
||||
[PM_IBSS_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE} },
|
||||
|
||||
[PM_SAP_5_1x1] = {
|
||||
[PM_STA_MODE] = {PM_SCC_CH_5G, PM_SCC_CH, PM_SCC_CH},
|
||||
[PM_SAP_MODE] = {PM_SCC_CH, PM_SCC_CH, PM_SCC_CH},
|
||||
[PM_P2P_CLIENT_MODE] = {PM_SCC_CH, PM_SCC_CH, PM_SCC_CH},
|
||||
[PM_P2P_GO_MODE] = {PM_SCC_CH, PM_SCC_CH, PM_SCC_CH},
|
||||
[PM_IBSS_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE} },
|
||||
|
||||
[PM_SAP_5_2x2] = {
|
||||
[PM_STA_MODE] = {PM_SCC_CH_5G, PM_SCC_CH, PM_SCC_CH},
|
||||
[PM_SAP_MODE] = {PM_SCC_CH, PM_SCC_CH, PM_SCC_CH},
|
||||
[PM_P2P_CLIENT_MODE] = {PM_SCC_CH, PM_SCC_CH, PM_SCC_CH},
|
||||
[PM_P2P_GO_MODE] = {PM_SCC_CH, PM_SCC_CH, PM_SCC_CH},
|
||||
[PM_IBSS_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE} },
|
||||
|
||||
[PM_IBSS_24_1x1] = {
|
||||
[PM_STA_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_SAP_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_P2P_CLIENT_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_P2P_GO_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_IBSS_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE} },
|
||||
|
||||
[PM_IBSS_24_2x2] = {
|
||||
[PM_STA_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_SAP_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_P2P_CLIENT_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_P2P_GO_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_IBSS_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE} },
|
||||
|
||||
[PM_IBSS_5_1x1] = {
|
||||
[PM_STA_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_SAP_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_P2P_CLIENT_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_P2P_GO_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_IBSS_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE} },
|
||||
|
||||
[PM_IBSS_5_2x2] = {
|
||||
[PM_STA_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_SAP_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_P2P_CLIENT_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_P2P_GO_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_IBSS_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_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 policy_mgr_pcl_type
|
||||
third_connection_pcl_nodbs_table[PM_MAX_TWO_CONNECTION_MODE]
|
||||
[PM_MAX_NUM_OF_MODE][PM_MAX_CONC_PRIORITY_MODE] = {
|
||||
[PM_STA_SAP_SCC_24_1x1] = {
|
||||
[PM_STA_MODE] = {PM_5G, PM_SCC_CH, PM_SCC_CH},
|
||||
[PM_SAP_MODE] = {PM_SCC_CH_5G, PM_SCC_CH, PM_SCC_CH},
|
||||
[PM_P2P_CLIENT_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_P2P_GO_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_IBSS_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE} },
|
||||
|
||||
[PM_STA_SAP_SCC_24_2x2] = {
|
||||
[PM_STA_MODE] = {PM_5G, PM_SCC_CH, PM_SCC_CH},
|
||||
[PM_SAP_MODE] = {PM_SCC_CH_5G, PM_SCC_CH, PM_SCC_CH},
|
||||
[PM_P2P_CLIENT_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_P2P_GO_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_IBSS_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE} },
|
||||
|
||||
[PM_STA_SAP_MCC_24_1x1] = {
|
||||
[PM_STA_MODE] = {PM_5G_MCC_CH, PM_MCC_CH, PM_MCC_CH},
|
||||
[PM_SAP_MODE] = {PM_5G_MCC_CH, PM_MCC_CH, PM_MCC_CH},
|
||||
[PM_P2P_CLIENT_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_P2P_GO_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_IBSS_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE} },
|
||||
|
||||
[PM_STA_SAP_MCC_24_2x2] = {
|
||||
[PM_STA_MODE] = {PM_5G_MCC_CH, PM_MCC_CH, PM_MCC_CH},
|
||||
[PM_SAP_MODE] = {PM_5G_MCC_CH, PM_MCC_CH, PM_MCC_CH},
|
||||
[PM_P2P_CLIENT_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_P2P_GO_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_IBSS_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE} },
|
||||
|
||||
[PM_STA_SAP_SCC_5_1x1] = {
|
||||
[PM_STA_MODE] = {PM_SCC_CH, PM_SCC_CH, PM_SCC_CH},
|
||||
[PM_SAP_MODE] = {PM_SCC_CH, PM_SCC_CH, PM_SCC_CH},
|
||||
[PM_P2P_CLIENT_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_P2P_GO_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_IBSS_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE} },
|
||||
|
||||
[PM_STA_SAP_SCC_5_2x2] = {
|
||||
[PM_STA_MODE] = {PM_SCC_CH, PM_SCC_CH, PM_SCC_CH},
|
||||
[PM_SAP_MODE] = {PM_SCC_CH, PM_SCC_CH, PM_SCC_CH},
|
||||
[PM_P2P_CLIENT_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_P2P_GO_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_IBSS_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE} },
|
||||
|
||||
[PM_STA_SAP_MCC_5_1x1] = {
|
||||
[PM_STA_MODE] = {PM_MCC_CH, PM_MCC_CH, PM_MCC_CH},
|
||||
[PM_SAP_MODE] = {PM_MCC_CH, PM_MCC_CH, PM_MCC_CH},
|
||||
[PM_P2P_CLIENT_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_P2P_GO_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_IBSS_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE} },
|
||||
|
||||
[PM_STA_SAP_MCC_5_2x2] = {
|
||||
[PM_STA_MODE] = {PM_MCC_CH, PM_MCC_CH, PM_MCC_CH},
|
||||
[PM_SAP_MODE] = {PM_MCC_CH, PM_MCC_CH, PM_MCC_CH},
|
||||
[PM_P2P_CLIENT_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_P2P_GO_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_IBSS_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE} },
|
||||
|
||||
[PM_STA_SAP_MCC_24_5_1x1] = {
|
||||
[PM_STA_MODE] = {PM_MCC_CH, PM_MCC_CH, PM_MCC_CH},
|
||||
[PM_SAP_MODE] = {PM_MCC_CH, PM_MCC_CH, PM_MCC_CH},
|
||||
[PM_P2P_CLIENT_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_P2P_GO_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_IBSS_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE} },
|
||||
|
||||
[PM_STA_SAP_MCC_24_5_2x2] = {
|
||||
[PM_STA_MODE] = {PM_MCC_CH, PM_MCC_CH, PM_MCC_CH},
|
||||
[PM_SAP_MODE] = {PM_MCC_CH, PM_MCC_CH, PM_MCC_CH},
|
||||
[PM_P2P_CLIENT_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_P2P_GO_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_IBSS_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE} },
|
||||
|
||||
[PM_STA_SAP_DBS_1x1] = {
|
||||
[PM_STA_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_SAP_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_P2P_CLIENT_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_P2P_GO_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_IBSS_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE} },
|
||||
|
||||
[PM_STA_P2P_GO_SCC_24_1x1] = {
|
||||
[PM_STA_MODE] = {PM_5G, PM_SCC_CH, PM_SCC_CH},
|
||||
[PM_SAP_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_P2P_CLIENT_MODE] = {PM_5G, PM_SCC_CH, PM_SCC_CH},
|
||||
[PM_P2P_GO_MODE] = {PM_5G_SCC_CH, PM_SCC_CH, PM_SCC_CH},
|
||||
[PM_IBSS_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE} },
|
||||
|
||||
[PM_STA_P2P_GO_SCC_24_2x2] = {
|
||||
[PM_STA_MODE] = {PM_5G, PM_SCC_CH, PM_SCC_CH},
|
||||
[PM_SAP_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_P2P_CLIENT_MODE] = {PM_5G, PM_SCC_CH, PM_SCC_CH},
|
||||
[PM_P2P_GO_MODE] = {PM_5G_SCC_CH, PM_SCC_CH, PM_SCC_CH},
|
||||
[PM_IBSS_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE} },
|
||||
|
||||
[PM_STA_P2P_GO_MCC_24_1x1] = {
|
||||
[PM_STA_MODE] = {PM_5G_MCC_CH, PM_MCC_CH, PM_MCC_CH},
|
||||
[PM_SAP_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_P2P_CLIENT_MODE] = {
|
||||
PM_5G_MCC_CH, PM_MCC_CH, PM_MCC_CH},
|
||||
[PM_P2P_GO_MODE] = {
|
||||
PM_5G_MCC_CH, PM_MCC_CH, PM_MCC_CH},
|
||||
[PM_IBSS_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE} },
|
||||
|
||||
[PM_STA_P2P_GO_MCC_24_2x2] = {
|
||||
[PM_STA_MODE] = {PM_5G_MCC_CH, PM_MCC_CH, PM_MCC_CH},
|
||||
[PM_SAP_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_P2P_CLIENT_MODE] = {
|
||||
PM_5G_MCC_CH, PM_MCC_CH, PM_MCC_CH},
|
||||
[PM_P2P_GO_MODE] = {
|
||||
PM_5G_MCC_CH, PM_MCC_CH, PM_MCC_CH},
|
||||
[PM_IBSS_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE} },
|
||||
|
||||
[PM_STA_P2P_GO_SCC_5_1x1] = {
|
||||
[PM_STA_MODE] = {PM_SCC_CH, PM_SCC_CH, PM_SCC_CH},
|
||||
[PM_SAP_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_P2P_CLIENT_MODE] = {PM_SCC_CH, PM_SCC_CH, PM_SCC_CH},
|
||||
[PM_P2P_GO_MODE] = {PM_SCC_CH, PM_SCC_CH, PM_SCC_CH},
|
||||
[PM_IBSS_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE} },
|
||||
|
||||
[PM_STA_P2P_GO_SCC_5_2x2] = {
|
||||
[PM_STA_MODE] = {PM_SCC_CH, PM_SCC_CH, PM_SCC_CH},
|
||||
[PM_SAP_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_P2P_CLIENT_MODE] = {PM_SCC_CH, PM_SCC_CH, PM_SCC_CH},
|
||||
[PM_P2P_GO_MODE] = {PM_SCC_CH, PM_SCC_CH, PM_SCC_CH},
|
||||
[PM_IBSS_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE} },
|
||||
|
||||
[PM_STA_P2P_GO_MCC_5_1x1] = {
|
||||
[PM_STA_MODE] = {PM_MCC_CH, PM_MCC_CH, PM_MCC_CH},
|
||||
[PM_SAP_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_P2P_CLIENT_MODE] = {PM_MCC_CH, PM_MCC_CH, PM_MCC_CH},
|
||||
[PM_P2P_GO_MODE] = {PM_MCC_CH, PM_MCC_CH, PM_MCC_CH},
|
||||
[PM_IBSS_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE} },
|
||||
|
||||
[PM_STA_P2P_GO_MCC_5_2x2] = {
|
||||
[PM_STA_MODE] = {PM_MCC_CH, PM_MCC_CH, PM_MCC_CH},
|
||||
[PM_SAP_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_P2P_CLIENT_MODE] = {PM_MCC_CH, PM_MCC_CH, PM_MCC_CH},
|
||||
[PM_P2P_GO_MODE] = {PM_MCC_CH, PM_MCC_CH, PM_MCC_CH},
|
||||
[PM_IBSS_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE} },
|
||||
|
||||
[PM_STA_P2P_GO_MCC_24_5_1x1] = {
|
||||
[PM_STA_MODE] = {PM_MCC_CH, PM_MCC_CH, PM_MCC_CH},
|
||||
[PM_SAP_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_P2P_CLIENT_MODE] = {PM_MCC_CH, PM_MCC_CH, PM_MCC_CH},
|
||||
[PM_P2P_GO_MODE] = {PM_MCC_CH, PM_MCC_CH, PM_MCC_CH},
|
||||
[PM_IBSS_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE} },
|
||||
|
||||
[PM_STA_P2P_GO_MCC_24_5_2x2] = {
|
||||
[PM_STA_MODE] = {PM_MCC_CH, PM_MCC_CH, PM_MCC_CH},
|
||||
[PM_SAP_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_P2P_CLIENT_MODE] = {PM_MCC_CH, PM_MCC_CH, PM_MCC_CH},
|
||||
[PM_P2P_GO_MODE] = {PM_MCC_CH, PM_MCC_CH, PM_MCC_CH},
|
||||
[PM_IBSS_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE} },
|
||||
|
||||
[PM_STA_P2P_GO_DBS_1x1] = {
|
||||
[PM_STA_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_SAP_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_P2P_CLIENT_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_P2P_GO_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_IBSS_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE} },
|
||||
|
||||
[PM_STA_P2P_CLI_SCC_24_1x1] = {
|
||||
[PM_STA_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_SAP_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_P2P_CLIENT_MODE] = {PM_5G_SCC_CH, PM_SCC_CH, PM_SCC_CH},
|
||||
[PM_P2P_GO_MODE] = {PM_5G_SCC_CH, PM_SCC_CH, PM_SCC_CH},
|
||||
[PM_IBSS_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE} },
|
||||
|
||||
[PM_STA_P2P_CLI_SCC_24_2x2] = {
|
||||
[PM_STA_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_SAP_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_P2P_CLIENT_MODE] = {PM_5G_SCC_CH, PM_SCC_CH, PM_SCC_CH},
|
||||
[PM_P2P_GO_MODE] = {PM_5G_SCC_CH, PM_SCC_CH, PM_SCC_CH},
|
||||
[PM_IBSS_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE} },
|
||||
|
||||
[PM_STA_P2P_CLI_MCC_24_1x1] = {
|
||||
[PM_STA_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_SAP_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_P2P_CLIENT_MODE] = {PM_5G_MCC_CH, PM_MCC_CH, PM_MCC_CH},
|
||||
[PM_P2P_GO_MODE] = {PM_5G_MCC_CH, PM_MCC_CH, PM_MCC_CH},
|
||||
[PM_IBSS_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE} },
|
||||
|
||||
[PM_STA_P2P_CLI_MCC_24_2x2] = {
|
||||
[PM_STA_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_SAP_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_P2P_CLIENT_MODE] = {PM_5G_MCC_CH, PM_MCC_CH, PM_MCC_CH},
|
||||
[PM_P2P_GO_MODE] = {PM_5G_MCC_CH, PM_MCC_CH, PM_MCC_CH},
|
||||
[PM_IBSS_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE} },
|
||||
|
||||
[PM_STA_P2P_CLI_SCC_5_1x1] = {
|
||||
[PM_STA_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_SAP_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_P2P_CLIENT_MODE] = {PM_SCC_CH, PM_SCC_CH, PM_SCC_CH},
|
||||
[PM_P2P_GO_MODE] = {PM_SCC_CH, PM_SCC_CH, PM_SCC_CH},
|
||||
[PM_IBSS_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE} },
|
||||
|
||||
[PM_STA_P2P_CLI_SCC_5_2x2] = {
|
||||
[PM_STA_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_SAP_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_P2P_CLIENT_MODE] = {PM_SCC_CH, PM_SCC_CH, PM_SCC_CH},
|
||||
[PM_P2P_GO_MODE] = {PM_SCC_CH, PM_SCC_CH, PM_SCC_CH},
|
||||
[PM_IBSS_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE} },
|
||||
|
||||
[PM_STA_P2P_CLI_MCC_5_1x1] = {
|
||||
[PM_STA_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_SAP_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_P2P_CLIENT_MODE] = {PM_MCC_CH, PM_MCC_CH, PM_MCC_CH},
|
||||
[PM_P2P_GO_MODE] = {PM_MCC_CH, PM_MCC_CH, PM_MCC_CH},
|
||||
[PM_IBSS_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE} },
|
||||
|
||||
[PM_STA_P2P_CLI_MCC_5_2x2] = {
|
||||
[PM_STA_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_SAP_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_P2P_CLIENT_MODE] = {PM_MCC_CH, PM_MCC_CH, PM_MCC_CH},
|
||||
[PM_P2P_GO_MODE] = {PM_MCC_CH, PM_MCC_CH, PM_MCC_CH},
|
||||
[PM_IBSS_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE} },
|
||||
|
||||
[PM_STA_P2P_CLI_MCC_24_5_1x1] = {
|
||||
[PM_STA_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_SAP_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_P2P_CLIENT_MODE] = {PM_MCC_CH, PM_MCC_CH, PM_MCC_CH},
|
||||
[PM_P2P_GO_MODE] = {PM_MCC_CH, PM_MCC_CH, PM_MCC_CH},
|
||||
[PM_IBSS_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE} },
|
||||
|
||||
[PM_STA_P2P_CLI_MCC_24_5_2x2] = {
|
||||
[PM_STA_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_SAP_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_P2P_CLIENT_MODE] = {PM_MCC_CH, PM_MCC_CH, PM_MCC_CH},
|
||||
[PM_P2P_GO_MODE] = {PM_MCC_CH, PM_MCC_CH, PM_MCC_CH},
|
||||
[PM_IBSS_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE} },
|
||||
|
||||
[PM_STA_P2P_CLI_DBS_1x1] = {
|
||||
[PM_STA_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_SAP_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_P2P_CLIENT_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_P2P_GO_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_IBSS_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE} },
|
||||
|
||||
[PM_P2P_GO_P2P_CLI_SCC_24_1x1] = {
|
||||
[PM_STA_MODE] = {PM_5G, PM_SCC_CH, PM_SCC_CH},
|
||||
[PM_SAP_MODE] = {PM_SCC_CH_5G, PM_SCC_CH, PM_SCC_CH},
|
||||
[PM_P2P_CLIENT_MODE] = {PM_5G, PM_SCC_CH, PM_SCC_CH},
|
||||
[PM_P2P_GO_MODE] = {PM_5G_SCC_CH, PM_SCC_CH, PM_SCC_CH},
|
||||
[PM_IBSS_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE} },
|
||||
|
||||
[PM_P2P_GO_P2P_CLI_SCC_24_2x2] = {
|
||||
[PM_STA_MODE] = {PM_5G, PM_SCC_CH, PM_SCC_CH},
|
||||
[PM_SAP_MODE] = {PM_SCC_CH_5G, PM_SCC_CH, PM_SCC_CH},
|
||||
[PM_P2P_CLIENT_MODE] = {PM_5G, PM_SCC_CH, PM_SCC_CH},
|
||||
[PM_P2P_GO_MODE] = {PM_5G_SCC_CH, PM_SCC_CH, PM_SCC_CH},
|
||||
[PM_IBSS_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE} },
|
||||
|
||||
[PM_P2P_GO_P2P_CLI_MCC_24_1x1] = {
|
||||
[PM_STA_MODE] = {PM_5G_MCC_CH, PM_MCC_CH, PM_MCC_CH},
|
||||
[PM_SAP_MODE] = {PM_5G_MCC_CH, PM_MCC_CH, PM_MCC_CH},
|
||||
[PM_P2P_CLIENT_MODE] = {
|
||||
PM_5G_MCC_CH, PM_MCC_CH, PM_MCC_CH},
|
||||
[PM_P2P_GO_MODE] = {
|
||||
PM_5G_MCC_CH, PM_MCC_CH, PM_MCC_CH},
|
||||
[PM_IBSS_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE} },
|
||||
|
||||
[PM_P2P_GO_P2P_CLI_MCC_24_2x2] = {
|
||||
[PM_STA_MODE] = {PM_5G_MCC_CH, PM_MCC_CH, PM_MCC_CH},
|
||||
[PM_SAP_MODE] = {PM_5G_MCC_CH, PM_MCC_CH, PM_MCC_CH},
|
||||
[PM_P2P_CLIENT_MODE] = {
|
||||
PM_5G_MCC_CH, PM_MCC_CH, PM_MCC_CH},
|
||||
[PM_P2P_GO_MODE] = {
|
||||
PM_5G_MCC_CH, PM_MCC_CH, PM_MCC_CH},
|
||||
[PM_IBSS_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE} },
|
||||
|
||||
[PM_P2P_GO_P2P_CLI_SCC_5_1x1] = {
|
||||
[PM_STA_MODE] = {PM_SCC_CH, PM_SCC_CH, PM_SCC_CH},
|
||||
[PM_SAP_MODE] = {PM_SCC_CH, PM_SCC_CH, PM_SCC_CH},
|
||||
[PM_P2P_CLIENT_MODE] = {PM_SCC_CH, PM_SCC_CH, PM_SCC_CH},
|
||||
[PM_P2P_GO_MODE] = {PM_SCC_CH, PM_SCC_CH, PM_SCC_CH},
|
||||
[PM_IBSS_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE} },
|
||||
|
||||
[PM_P2P_GO_P2P_CLI_SCC_5_2x2] = {
|
||||
[PM_STA_MODE] = {PM_SCC_CH, PM_SCC_CH, PM_SCC_CH},
|
||||
[PM_SAP_MODE] = {PM_SCC_CH, PM_SCC_CH, PM_SCC_CH},
|
||||
[PM_P2P_CLIENT_MODE] = {PM_SCC_CH, PM_SCC_CH, PM_SCC_CH},
|
||||
[PM_P2P_GO_MODE] = {PM_SCC_CH, PM_SCC_CH, PM_SCC_CH},
|
||||
[PM_IBSS_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE} },
|
||||
|
||||
[PM_P2P_GO_P2P_CLI_MCC_5_1x1] = {
|
||||
[PM_STA_MODE] = {PM_MCC_CH, PM_MCC_CH, PM_MCC_CH},
|
||||
[PM_SAP_MODE] = {PM_MCC_CH, PM_MCC_CH, PM_MCC_CH},
|
||||
[PM_P2P_CLIENT_MODE] = {PM_MCC_CH, PM_MCC_CH, PM_MCC_CH},
|
||||
[PM_P2P_GO_MODE] = {PM_MCC_CH, PM_MCC_CH, PM_MCC_CH},
|
||||
[PM_IBSS_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE} },
|
||||
|
||||
[PM_P2P_GO_P2P_CLI_MCC_5_2x2] = {
|
||||
[PM_STA_MODE] = {PM_MCC_CH, PM_MCC_CH, PM_MCC_CH},
|
||||
[PM_SAP_MODE] = {PM_MCC_CH, PM_MCC_CH, PM_MCC_CH},
|
||||
[PM_P2P_CLIENT_MODE] = {PM_MCC_CH, PM_MCC_CH, PM_MCC_CH},
|
||||
[PM_P2P_GO_MODE] = {PM_MCC_CH, PM_MCC_CH, PM_MCC_CH},
|
||||
[PM_IBSS_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE} },
|
||||
|
||||
[PM_P2P_GO_P2P_CLI_MCC_24_5_1x1] = {
|
||||
[PM_STA_MODE] = {PM_MCC_CH, PM_MCC_CH, PM_MCC_CH},
|
||||
[PM_SAP_MODE] = {PM_MCC_CH, PM_MCC_CH, PM_MCC_CH},
|
||||
[PM_P2P_CLIENT_MODE] = {PM_MCC_CH, PM_MCC_CH, PM_MCC_CH},
|
||||
[PM_P2P_GO_MODE] = {PM_MCC_CH, PM_MCC_CH, PM_MCC_CH},
|
||||
[PM_IBSS_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE} },
|
||||
|
||||
[PM_P2P_GO_P2P_CLI_MCC_24_5_2x2] = {
|
||||
[PM_STA_MODE] = {PM_MCC_CH, PM_MCC_CH, PM_MCC_CH},
|
||||
[PM_SAP_MODE] = {PM_MCC_CH, PM_MCC_CH, PM_MCC_CH},
|
||||
[PM_P2P_CLIENT_MODE] = {PM_MCC_CH, PM_MCC_CH, PM_MCC_CH},
|
||||
[PM_P2P_GO_MODE] = {PM_MCC_CH, PM_MCC_CH, PM_MCC_CH},
|
||||
[PM_IBSS_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE} },
|
||||
|
||||
[PM_P2P_GO_P2P_CLI_DBS_1x1] = {
|
||||
[PM_STA_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_SAP_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_P2P_CLIENT_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_P2P_GO_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_IBSS_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE} },
|
||||
|
||||
[PM_P2P_GO_SAP_SCC_24_1x1] = {
|
||||
[PM_STA_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_SAP_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_P2P_CLIENT_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_P2P_GO_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_IBSS_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE} },
|
||||
|
||||
[PM_P2P_GO_SAP_SCC_24_2x2] = {
|
||||
[PM_STA_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_SAP_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_P2P_CLIENT_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_P2P_GO_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_IBSS_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE} },
|
||||
|
||||
[PM_P2P_GO_SAP_MCC_24_1x1] = {
|
||||
[PM_STA_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_SAP_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_P2P_CLIENT_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_P2P_GO_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_IBSS_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE} },
|
||||
|
||||
[PM_P2P_GO_SAP_MCC_24_2x2] = {
|
||||
[PM_STA_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_SAP_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_P2P_CLIENT_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_P2P_GO_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_IBSS_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE} },
|
||||
|
||||
[PM_P2P_GO_SAP_SCC_5_1x1] = {
|
||||
[PM_STA_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_SAP_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_P2P_CLIENT_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_P2P_GO_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_IBSS_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE} },
|
||||
|
||||
[PM_P2P_GO_SAP_SCC_5_2x2] = {
|
||||
[PM_STA_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_SAP_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_P2P_CLIENT_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_P2P_GO_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_IBSS_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE} },
|
||||
|
||||
[PM_P2P_GO_SAP_MCC_5_1x1] = {
|
||||
[PM_STA_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_SAP_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_P2P_CLIENT_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_P2P_GO_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_IBSS_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE} },
|
||||
|
||||
[PM_P2P_GO_SAP_MCC_5_2x2] = {
|
||||
[PM_STA_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_SAP_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_P2P_CLIENT_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_P2P_GO_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_IBSS_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE} },
|
||||
|
||||
[PM_P2P_GO_SAP_MCC_24_5_1x1] = {
|
||||
[PM_STA_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_SAP_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_P2P_CLIENT_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_P2P_GO_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_IBSS_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE} },
|
||||
|
||||
[PM_P2P_GO_SAP_MCC_24_5_2x2] = {
|
||||
[PM_STA_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_SAP_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_P2P_CLIENT_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_P2P_GO_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_IBSS_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE} },
|
||||
|
||||
[PM_P2P_GO_SAP_DBS_1x1] = {
|
||||
[PM_STA_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_SAP_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_P2P_CLIENT_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_P2P_GO_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_IBSS_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE} },
|
||||
|
||||
|
||||
[PM_P2P_CLI_SAP_SCC_24_1x1] = {
|
||||
[PM_STA_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_SAP_MODE] = {PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_P2P_CLIENT_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_P2P_GO_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_IBSS_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE} },
|
||||
|
||||
[PM_P2P_CLI_SAP_SCC_24_2x2] = {
|
||||
[PM_STA_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_SAP_MODE] = {PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_P2P_CLIENT_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_P2P_GO_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_IBSS_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE} },
|
||||
|
||||
[PM_P2P_CLI_SAP_MCC_24_1x1] = {
|
||||
[PM_STA_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_SAP_MODE] = {PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_P2P_CLIENT_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_P2P_GO_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_IBSS_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE} },
|
||||
|
||||
[PM_P2P_CLI_SAP_MCC_24_2x2] = {
|
||||
[PM_STA_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_SAP_MODE] = {PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_P2P_CLIENT_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_P2P_GO_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_IBSS_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE} },
|
||||
|
||||
[PM_P2P_CLI_SAP_SCC_5_1x1] = {
|
||||
[PM_STA_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_SAP_MODE] = {PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_P2P_CLIENT_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_P2P_GO_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_IBSS_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE} },
|
||||
|
||||
[PM_P2P_CLI_SAP_SCC_5_2x2] = {
|
||||
[PM_STA_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_SAP_MODE] = {PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_P2P_CLIENT_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_P2P_GO_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_IBSS_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE} },
|
||||
|
||||
[PM_P2P_CLI_SAP_MCC_5_1x1] = {
|
||||
[PM_STA_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_SAP_MODE] = {PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_P2P_CLIENT_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_P2P_GO_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_IBSS_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE} },
|
||||
|
||||
[PM_P2P_CLI_SAP_MCC_5_2x2] = {
|
||||
[PM_STA_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_SAP_MODE] = {PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_P2P_CLIENT_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_P2P_GO_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_IBSS_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE} },
|
||||
|
||||
[PM_P2P_CLI_SAP_MCC_24_5_1x1] = {
|
||||
[PM_STA_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_SAP_MODE] = {PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_P2P_CLIENT_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_P2P_GO_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_IBSS_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE} },
|
||||
|
||||
[PM_P2P_CLI_SAP_MCC_24_5_2x2] = {
|
||||
[PM_STA_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_SAP_MODE] = {PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_P2P_CLIENT_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_P2P_GO_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_IBSS_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE} },
|
||||
|
||||
[PM_P2P_CLI_SAP_DBS_1x1] = {
|
||||
[PM_STA_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_SAP_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_P2P_CLIENT_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_P2P_GO_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE},
|
||||
[PM_IBSS_MODE] = {
|
||||
PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE, PM_MAX_PCL_TYPE} },
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
Loading…
Reference in a new issue