1 /* 2 * Copyright (c) 2012-2021 The Linux Foundation. All rights reserved. 3 * Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved. 4 * 5 * Permission to use, copy, modify, and/or distribute this software for 6 * any purpose with or without fee is hereby granted, provided that the 7 * above copyright notice and this permission notice appear in all 8 * copies. 9 * 10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL 11 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED 12 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE 13 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL 14 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR 15 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER 16 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 17 * PERFORMANCE OF THIS SOFTWARE. 18 */ 19 20 #ifndef __WLAN_POLICY_MGR_PUBLIC_STRUCT_H 21 #define __WLAN_POLICY_MGR_PUBLIC_STRUCT_H 22 23 /** 24 * DOC: wlan_policy_mgr_public_struct.h 25 * 26 * Concurrenct Connection Management entity 27 */ 28 29 /* Include files */ 30 #include <wmi_unified_api.h> 31 32 /* 33 * Some max value greater than the max length of the channel list 34 */ 35 #define MAX_WEIGHT_OF_PCL_CHANNELS 255 36 /* 37 * Some fixed weight difference between the groups 38 */ 39 #define PCL_GROUPS_WEIGHT_DIFFERENCE 20 40 41 /* 42 * Currently max, only 3 groups are possible as per 'enum policy_mgr_pcl_type'. 43 * i.e., in a PCL only 3 groups of channels can be present 44 * e.g., SCC channel on 2.4 Ghz, SCC channel on 5 Ghz & 5 Ghz channels. 45 * Group 1 has highest priority, group 2 has the next higher priority 46 * and so on. 47 */ 48 #define WEIGHT_OF_GROUP1_PCL_CHANNELS MAX_WEIGHT_OF_PCL_CHANNELS 49 #define WEIGHT_OF_GROUP2_PCL_CHANNELS \ 50 (WEIGHT_OF_GROUP1_PCL_CHANNELS - PCL_GROUPS_WEIGHT_DIFFERENCE) 51 #define WEIGHT_OF_GROUP3_PCL_CHANNELS \ 52 (WEIGHT_OF_GROUP2_PCL_CHANNELS - PCL_GROUPS_WEIGHT_DIFFERENCE) 53 #define WEIGHT_OF_GROUP4_PCL_CHANNELS \ 54 (WEIGHT_OF_GROUP3_PCL_CHANNELS - PCL_GROUPS_WEIGHT_DIFFERENCE) 55 56 #define WEIGHT_OF_NON_PCL_CHANNELS 1 57 #define WEIGHT_OF_DISALLOWED_CHANNELS 0 58 59 #define MAX_MAC 2 60 61 #ifdef FEATURE_FOURTH_CONNECTION 62 #define MAX_NUMBER_OF_CONC_CONNECTIONS 4 63 #else 64 #define MAX_NUMBER_OF_CONC_CONNECTIONS 3 65 #endif 66 67 #ifdef WLAN_FEATURE_11BE_MLO 68 /* Max MLO VDEVS for disabled link table */ 69 #define MAX_NUMBER_OF_DISABLE_LINK WLAN_UMAC_MLO_MAX_VDEVS 70 #endif 71 72 /* BIT 0 for low latency and BIT 1 for HIGH TPUT */ 73 #define PM_VDEV_TRAFFIC_LOW_LATENCY 0x1 74 #define PM_VDEV_TRAFFIC_HIGH_TPUT 0x2 75 76 /* Policy manager default request id */ 77 #define POLICY_MGR_DEF_REQ_ID 0 78 79 typedef int (*send_mode_change_event_cb)(void); 80 81 /** 82 * enum sap_csa_reason_code - SAP channel switch reason code 83 * @CSA_REASON_UNKNOWN: Unknown reason 84 * @CSA_REASON_STA_CONNECT_DFS_TO_NON_DFS: STA connection from DFS to NON DFS. 85 * @CSA_REASON_USER_INITIATED: User initiated form north bound. 86 * @CSA_REASON_PEER_ACTION_FRAME: Action frame received on sta iface. 87 * @CSA_REASON_PRE_CAC_SUCCESS: Pre CAC success. 88 * @CSA_REASON_CONCURRENT_STA_CHANGED_CHANNEL: concurrent sta changed channel. 89 * @CSA_REASON_UNSAFE_CHANNEL: Unsafe channel. 90 * @CSA_REASON_LTE_COEX: LTE coex. 91 * @CSA_REASON_CONCURRENT_NAN_EVENT: NAN concurrency. 92 * @CSA_REASON_BAND_RESTRICTED: band disabled or re-enabled 93 * @CSA_REASON_DCS: DCS 94 * @CSA_REASON_CHAN_DISABLED: channel is disabled 95 * @CSA_REASON_CHAN_PASSIVE: channel is passive 96 * @CSA_REASON_GO_BSS_STARTED: P2P go started 97 * @CSA_REASON_SAP_ACS: 2.4 GHz preferred SAP ACS starting 98 * @CSA_REASON_SAP_FIX_CH_CONC_WITH_GO: SAP fix channel start 99 * @CSA_REASON_CONCURRENT_LL_LT_SAP_EVENT: LL_LT_SAP concurrency 100 * and move GO to other band 101 */ 102 enum sap_csa_reason_code { 103 CSA_REASON_UNKNOWN, 104 CSA_REASON_STA_CONNECT_DFS_TO_NON_DFS, 105 CSA_REASON_USER_INITIATED, 106 CSA_REASON_PEER_ACTION_FRAME, 107 CSA_REASON_PRE_CAC_SUCCESS, 108 CSA_REASON_CONCURRENT_STA_CHANGED_CHANNEL, 109 CSA_REASON_UNSAFE_CHANNEL, 110 CSA_REASON_LTE_COEX, 111 CSA_REASON_CONCURRENT_NAN_EVENT, 112 CSA_REASON_BAND_RESTRICTED, 113 CSA_REASON_DCS, 114 CSA_REASON_CHAN_DISABLED, 115 CSA_REASON_CHAN_PASSIVE, 116 CSA_REASON_GO_BSS_STARTED, 117 CSA_REASON_SAP_ACS, 118 CSA_REASON_SAP_FIX_CH_CONC_WITH_GO, 119 CSA_REASON_CONCURRENT_LL_LT_SAP_EVENT 120 }; 121 122 /* 123 * enum link_control_flags: This enum is used for setting 124 * mlo_control_flags by api policy_mgr_mlo_sta_set_nlink. 125 * @link_ctrl_f_overwrite_active_bitmap: indicate overwrite all earlier 126 * force_active bitmaps. Used with MLO_LINK_FORCE_MODE_ACTIVE or 127 * MLO_LINK_FORCE_MODE_ACTIVE_INACTIVE 128 * @link_ctrl_f_overwrite_inactive_bitmap: indicate overwrite all earlier 129 * force_inactive bitmaps. Used with MLO_LINK_FORCE_MODE_INACTIVE or 130 * MLO_LINK_FORCE_MODE_ACTIVE_INACTIVE. 131 * @link_ctrl_f_dynamic_force_link_num: indicate fw to use force link number 132 * instead of force link bitmaps. Used with MLO_LINK_FORCE_MODE_ACTIVE_NUM. 133 * MLO_LINK_FORCE_MODE_INACTIVE_NUM, MLO_LINK_FORCE_MODE_NO_FORCE. 134 * @link_ctrl_f_post_re_evaluate: run link state check again after command 135 * response handled. 136 */ 137 enum link_control_flags { 138 link_ctrl_f_overwrite_active_bitmap = 1 << 0, 139 link_ctrl_f_overwrite_inactive_bitmap = 1 << 1, 140 link_ctrl_f_dynamic_force_link_num = 1 << 2, 141 link_ctrl_f_post_re_evaluate = 1 << 3, 142 }; 143 144 /** 145 * enum hw_mode_ss_config - Possible spatial stream configuration 146 * @HW_MODE_SS_0x0: Unused Tx and Rx of MAC 147 * @HW_MODE_SS_1x1: 1 Tx SS and 1 Rx SS 148 * @HW_MODE_SS_2x2: 2 Tx SS and 2 Rx SS 149 * @HW_MODE_SS_3x3: 3 Tx SS and 3 Rx SS 150 * @HW_MODE_SS_4x4: 4 Tx SS and 4 Rx SS 151 * 152 * Note: Right now only 1x1 and 2x2 are being supported. Other modes should 153 * be added when supported. Asymmetric configuration like 1x2, 2x1 are also 154 * not supported now. But, they are still valid. Right now, Tx/Rx SS support is 155 * 4 bits long. So, we can go upto 15x15 156 */ 157 enum hw_mode_ss_config { 158 HW_MODE_SS_0x0, 159 HW_MODE_SS_1x1, 160 HW_MODE_SS_2x2, 161 HW_MODE_SS_3x3, 162 HW_MODE_SS_4x4, 163 }; 164 165 /** 166 * enum hw_mode_dbs_capab - DBS HW mode capability 167 * @HW_MODE_DBS_NONE: Non DBS capable 168 * @HW_MODE_DBS: DBS capable 169 */ 170 enum hw_mode_dbs_capab { 171 HW_MODE_DBS_NONE, 172 HW_MODE_DBS, 173 }; 174 175 /** 176 * enum hw_mode_agile_dfs_capab - Agile DFS HW mode capability 177 * @HW_MODE_AGILE_DFS_NONE: Non Agile DFS capable 178 * @HW_MODE_AGILE_DFS: Agile DFS capable 179 */ 180 enum hw_mode_agile_dfs_capab { 181 HW_MODE_AGILE_DFS_NONE, 182 HW_MODE_AGILE_DFS, 183 }; 184 185 /** 186 * enum hw_mode_sbs_capab - SBS HW mode capability 187 * @HW_MODE_SBS_NONE: Non SBS capable 188 * @HW_MODE_SBS: SBS capable 189 */ 190 enum hw_mode_sbs_capab { 191 HW_MODE_SBS_NONE, 192 HW_MODE_SBS, 193 }; 194 195 /** 196 * enum hw_mode_emlsr_capab - EMLSR HW mode capability 197 * @HW_MODE_EMLSR_NONE: Non EMLSR capable 198 * @HW_MODE_EMLSR: EMLSR capable 199 */ 200 enum hw_mode_emlsr_capab { 201 HW_MODE_EMLSR_NONE, 202 HW_MODE_EMLSR, 203 }; 204 205 /** 206 * enum hw_mode_mac_band_cap - mac band capability 207 * @HW_MODE_MAC_BAND_NONE: No band requirement. 208 * @HW_MODE_MAC_BAND_2G: 2G band supported. 209 * @HW_MODE_MAC_BAND_5G: 5G band supported. 210 * 211 * To add HW_MODE_MAC_BAND_NONE value to help to 212 * match the HW DBS mode in hw mode list. 213 * Other enum values should match with WMI header: 214 * typedef enum { 215 * WLAN_2G_CAPABILITY = 0x1, 216 * WLAN_5G_CAPABILITY = 0x2, 217 * } WLAN_BAND_CAPABILITY; 218 */ 219 enum hw_mode_mac_band_cap { 220 HW_MODE_MAC_BAND_NONE = 0, 221 HW_MODE_MAC_BAND_2G = WLAN_2G_CAPABILITY, 222 HW_MODE_MAC_BAND_5G = WLAN_5G_CAPABILITY, 223 }; 224 225 /** 226 * enum force_1x1_type - enum to specify the type of forced 1x1 ini provided. 227 * @FORCE_1X1_DISABLED: even if the AP is present in OUI, 1x1 will not be forced 228 * @FORCE_1X1_ENABLED_FOR_AS: If antenna sharing supported, then only do 1x1. 229 * @FORCE_1X1_ENABLED_FORCED: If AP present in OUI, force 1x1 connection. 230 */ 231 enum force_1x1_type { 232 FORCE_1X1_DISABLED, 233 FORCE_1X1_ENABLED_FOR_AS, 234 FORCE_1X1_ENABLED_FORCED, 235 }; 236 237 /** 238 * enum policy_mgr_pcl_group_id - Identifies the pcl groups to be used 239 * @POLICY_MGR_PCL_GROUP_ID1_ID2: Use weights of group1 and group2 240 * @POLICY_MGR_PCL_GROUP_ID2_ID3: Use weights of group2 and group3 241 * @POLICY_MGR_PCL_GROUP_ID3_ID4: Use weights of group3 and group4 242 * 243 * Since maximum of three groups are possible, this will indicate which 244 * PCL group needs to be used. 245 */ 246 enum policy_mgr_pcl_group_id { 247 POLICY_MGR_PCL_GROUP_ID1_ID2, 248 POLICY_MGR_PCL_GROUP_ID2_ID3, 249 POLICY_MGR_PCL_GROUP_ID3_ID4, 250 }; 251 252 /** 253 * enum policy_mgr_pcl_channel_order - Order in which the PCL is requested 254 * @POLICY_MGR_PCL_ORDER_NONE: no order 255 * @POLICY_MGR_PCL_ORDER_24G_THEN_5G: 2.4 Ghz channel followed by 5 Ghz channel 256 * @POLICY_MGR_PCL_ORDER_5G_THEN_2G: 5 Ghz channel followed by 2.4 Ghz channel 257 * @POLICY_MGR_PCL_ORDER_2G: 2G channels 258 * @POLICY_MGR_PCL_ORDER_5G: 5G channels 259 * @POLICY_MGR_PCL_ORDER_SCC_5G_LOW_5G_LOW: 5G Low SCC frequency followed by 260 * 5G low band i.e 5G freq < sbs cutoff freq 261 * @POLICY_MGR_PCL_ORDER_SCC_5G_HIGH_5G_HIGH: 5G High SCC frequency followed by 262 * 5G High band i.e 5G freq > sbs cutoff freq 263 * @POLICY_MGR_PCL_ORDER_SCC_5G_HIGH_5G_HIGH_SCC_5G_LOW: 5 GHz High SCC 264 * frequency followed by 5G High band i.e 5G freq > sbs cutoff freq, add 5 GHz 265 * Low SCC frequency 266 * @POLICY_MGR_PCL_ORDER_SCC_5G_LOW: SCC channel on 5G low 267 * @POLICY_MGR_PCL_ORDER_SCC_5G_HIGH: SCC channel on 5G high 268 * @POLICY_MGR_PCL_ORDER_SCC_5G_LOW_MCC_5G_HIGH: SCC channels on 5G low 269 * followed by MCC channels on 5G high 270 * @POLICY_MGR_PCL_ORDER_SCC_5G_HIGH_MCC_5G_LOW: SCC channels on 5G high 271 * followed by MCC channels on 5G low 272 * 273 * Order in which the PCL is requested 274 */ 275 enum policy_mgr_pcl_channel_order { 276 POLICY_MGR_PCL_ORDER_NONE, 277 POLICY_MGR_PCL_ORDER_24G_THEN_5G, 278 POLICY_MGR_PCL_ORDER_5G_THEN_2G, 279 POLICY_MGR_PCL_ORDER_2G, 280 POLICY_MGR_PCL_ORDER_5G, 281 POLICY_MGR_PCL_ORDER_SCC_5G_LOW_5G_LOW, 282 POLICY_MGR_PCL_ORDER_SCC_5G_HIGH_5G_HIGH, 283 POLICY_MGR_PCL_ORDER_SCC_5G_HIGH_5G_HIGH_SCC_5G_LOW, 284 POLICY_MGR_PCL_ORDER_SCC_5G_LOW, 285 POLICY_MGR_PCL_ORDER_SCC_5G_HIGH, 286 POLICY_MGR_PCL_ORDER_SCC_5G_LOW_MCC_5G_HIGH, 287 POLICY_MGR_PCL_ORDER_SCC_5G_HIGH_MCC_5G_LOW, 288 }; 289 290 /** 291 * enum policy_mgr_pcl_band_priority - Band priority between 5G and 6G channel 292 * @POLICY_MGR_PCL_BAND_5G_THEN_6G: 5 Ghz channel followed by 6 Ghz channel 293 * @POLICY_MGR_PCL_BAND_6G_THEN_5G: 6 Ghz channel followed by 5 Ghz channel 294 * 295 * Band priority between 5G and 6G 296 */ 297 enum policy_mgr_pcl_band_priority { 298 POLICY_MGR_PCL_BAND_5G_THEN_6G = 0, 299 POLICY_MGR_PCL_BAND_6G_THEN_5G, 300 }; 301 302 /** 303 * enum policy_mgr_max_rx_ss - Maximum number of receive spatial streams 304 * @POLICY_MGR_RX_NSS_1: Receive Nss = 1 305 * @POLICY_MGR_RX_NSS_2: Receive Nss = 2 306 * @POLICY_MGR_RX_NSS_3: Receive Nss = 3 307 * @POLICY_MGR_RX_NSS_4: Receive Nss = 4 308 * @POLICY_MGR_RX_NSS_5: Receive Nss = 5 309 * @POLICY_MGR_RX_NSS_6: Receive Nss = 6 310 * @POLICY_MGR_RX_NSS_7: Receive Nss = 7 311 * @POLICY_MGR_RX_NSS_8: Receive Nss = 8 312 * @POLICY_MGR_RX_NSS_MAX: maximum enumeration 313 * 314 * Indicates the maximum number of spatial streams that the STA can receive 315 */ 316 enum policy_mgr_max_rx_ss { 317 POLICY_MGR_RX_NSS_1 = 0, 318 POLICY_MGR_RX_NSS_2 = 1, 319 POLICY_MGR_RX_NSS_3 = 2, 320 POLICY_MGR_RX_NSS_4 = 3, 321 POLICY_MGR_RX_NSS_5 = 4, 322 POLICY_MGR_RX_NSS_6 = 5, 323 POLICY_MGR_RX_NSS_7 = 6, 324 POLICY_MGR_RX_NSS_8 = 7, 325 POLICY_MGR_RX_NSS_MAX, 326 }; 327 328 /** 329 * enum policy_mgr_chain_mode - Chain Mask tx & rx combination. 330 * 331 * @POLICY_MGR_ONE_ONE: One for Tx, One for Rx 332 * @POLICY_MGR_TWO_TWO: Two for Tx, Two for Rx 333 * @POLICY_MGR_MAX_NO_OF_CHAIN_MODE: Max place holder 334 * 335 * These are generic IDs that identify the various roles 336 * in the software system 337 */ 338 enum policy_mgr_chain_mode { 339 POLICY_MGR_ONE_ONE = 0, 340 POLICY_MGR_TWO_TWO, 341 POLICY_MGR_MAX_NO_OF_CHAIN_MODE 342 }; 343 344 /** 345 * enum policy_mgr_conc_priority_mode - t/p, powersave, latency. 346 * 347 * @PM_THROUGHPUT: t/p is the priority 348 * @PM_POWERSAVE: powersave is the priority 349 * @PM_LATENCY: latency is the priority 350 * @PM_MAX_CONC_PRIORITY_MODE: Max place holder 351 * 352 * These are generic IDs that identify the various roles 353 * in the software system 354 */ 355 enum policy_mgr_conc_priority_mode { 356 PM_THROUGHPUT = 0, 357 PM_POWERSAVE, 358 PM_LATENCY, 359 PM_MAX_CONC_PRIORITY_MODE 360 }; 361 362 /** 363 * enum policy_mgr_con_mode - concurrency mode for PCL table 364 * 365 * @PM_STA_MODE: station mode 366 * @PM_SAP_MODE: SAP mode 367 * @PM_P2P_CLIENT_MODE: P2P client mode 368 * @PM_P2P_GO_MODE: P2P Go mode 369 * @PM_NDI_MODE: NDI mode 370 * @PM_NAN_DISC_MODE: NAN Discovery mode 371 * @PM_LL_LT_SAP_MODE: Low latency low throughput SAP 372 * @PM_MAX_NUM_OF_MODE: max value place holder 373 */ 374 enum policy_mgr_con_mode { 375 PM_STA_MODE = 0, 376 PM_SAP_MODE, 377 PM_P2P_CLIENT_MODE, 378 PM_P2P_GO_MODE, 379 PM_NDI_MODE, 380 PM_NAN_DISC_MODE, 381 PM_LL_LT_SAP_MODE, 382 PM_MAX_NUM_OF_MODE 383 }; 384 385 /** 386 * enum policy_mgr_mac_use - MACs that are used 387 * @POLICY_MGR_MAC0: Only MAC0 is used 388 * @POLICY_MGR_MAC1: Only MAC1 is used 389 * @POLICY_MGR_MAC0_AND_MAC1: Both MAC0 and MAC1 are used 390 */ 391 enum policy_mgr_mac_use { 392 POLICY_MGR_MAC0 = 1, 393 POLICY_MGR_MAC1 = 2, 394 POLICY_MGR_MAC0_AND_MAC1 = 3 395 }; 396 397 /** 398 * enum policy_mgr_pcl_type - Various types of Preferred channel list (PCL). 399 * 400 * @PM_NONE: No channel preference 401 * @PM_24G: 2.4 Ghz channels only 402 * @PM_5G: 5 Ghz channels only 403 * @PM_SCC_CH: SCC channel only 404 * @PM_MCC_CH: MCC channels only 405 * @PM_SBS_CH: SBS channels only 406 * @PM_SCC_CH_24G: SCC channel & 2.4 Ghz channels 407 * @PM_SCC_CH_5G: SCC channel & 5 Ghz channels 408 * @PM_24G_SCC_CH: 2.4 Ghz channels & SCC channel 409 * @PM_5G_SCC_CH: 5 Ghz channels & SCC channel 410 * @PM_SCC_ON_5_CH_5G: 5 Ghz SCC channel & 5 Ghz channels 411 * @PM_SCC_ON_5_SCC_ON_24_24G: SCC channel on 5 Ghz, SCC 412 * channel on 2.4 Ghz & 2.4 Ghz channels 413 * @PM_SCC_ON_5_SCC_ON_24_5G: SCC channel on 5 Ghz, SCC channel 414 * on 2.4 Ghz & 5 Ghz channels 415 * @PM_SCC_ON_5_5G_24G: SCC channel on 5 Ghz, 5 Ghz channels & 2.4 Ghz channels 416 * @PM_SCC_ON_5_5G_SCC_ON_24G: SCC channel on 5 Ghz, 5 Ghz channels & 417 * SCC channel on 2.4 Ghz 418 * @PM_SCC_ON_24_SCC_ON_5_24G: SCC channel on 2.4 Ghz, SCC 419 * channel on 5 Ghz & 2.4 Ghz channels 420 * @PM_SCC_ON_24_SCC_ON_5_5G: SCC channel on 2.4 Ghz, SCC 421 * channel on 5 Ghz & 5 Ghz channels 422 * @PM_SCC_ON_24_CH_24G: SCC channel on 2.4 GHz & 2.4 GHz channels 423 * @PM_SCC_ON_5_SCC_ON_24: SCC channel on 5 Ghz, SCC channel on 424 * 2.4 Ghz 425 * @PM_SCC_ON_24_SCC_ON_5: SCC channel on 2.4 Ghz, SCC channel 426 * on 5 Ghz 427 * @PM_MCC_CH_24G: MCC channels & 2.4 Ghz channels 428 * @PM_MCC_CH_5G: MCC channels & 5 Ghz channels 429 * @PM_24G_MCC_CH: 2.4 Ghz channels & MCC channels 430 * @PM_5G_MCC_CH: 5 Ghz channels & MCC channels 431 * @PM_SBS_CH_5G: SBS channels & rest of 5 Ghz channels 432 * @PM_24G_SCC_CH_SBS_CH: 2.4 Ghz channels, SCC channel & SBS channels 433 * @PM_24G_SCC_CH_SBS_CH_5G: 2.4 Ghz channels, SCC channel, 434 * SBS channels & rest of the 5G channels 435 * @PM_24G_SBS_CH_MCC_CH: 2.4 Ghz channels, SBS channels & MCC channels 436 * @PM_SBS_CH_24G_SCC_CH: 437 * @PM_SBS_CH_SCC_CH_24G: 438 * @PM_SCC_CH_SBS_CH_24G: 439 * @PM_SBS_CH_SCC_CH_5G_24G: 440 * @PM_SCC_CH_MCC_CH_SBS_CH_24G: 441 * @PM_SBS_CH_2G: SBS channels & 2.4 Ghz channels 442 * @PM_SCC_ON_5G_LOW_5G_LOW_PLUS_SHARED_2G: 5 GHz low SCC channel followed by 443 * 5 GHz low frequencies, add 2.4 GHz if its shared with 5 GHz low 444 * @PM_SCC_ON_5G_HIGH_5G_HIGH_PLUS_SHARED_2G: 5GHZ high SCC channel followed by 445 * 5 GHz high frequencies, add 2.4 GHZ if its shared with 5GHz high 446 * @PM_SCC_ON_5G_HIGH_5G_HIGH_SCC_ON_5G_LOW_PLUS_SHARED_2G: 5GHZ high SCC 447 * channel followed by 5 GHz high frequencies and 5 GHz low SCC channel, 448 * add 2.4 GHZ if its shared with 5GHz high 449 * @PM_SBS_CH_MCC_CH: SBS channels followed by MCC channels 450 * @PM_SBS_5G_MCC_24G: SBS channels, 5G MCC channels and 2.4GHz channels 451 * @PM_SCC_ON_24G: SCC channels on 2.4 Ghz 452 * @PM_SCC_ON_5G_LOW: SCC channels on 5G low frequencies 453 * @PM_SCC_ON_5G_HIGH: SCC channels on 5G high frequencies 454 * @PM_SBS_CH_MCC_CH_SCC_ON_24_24G: SBS channels followed by MCC channels 455 * followed by SCC channels on 2.4 GHz followed by 2.4 GHz channels 456 * @PM_5G_24G: 5 GHz channels, followed by 2.4 GHz channels 457 * @PM_MCC_CH_SCC_ON_24G: MCC chanenls followed by SCC channels on 2.4 Ghz 458 * @PM_SCC_ON_5G_LOW_MCC_ON_5G_HIGH: SCC channels on 5G low frequencies 459 * followed by MCC channels on 5G high frequencies 460 * @PM_SCC_ON_5G_HIGH_MCC_ON_5G_LOW: SCC channels on 5G high frequencies 461 * followed by MCC channels on 5G low frequencies 462 * 463 * @PM_MAX_PCL_TYPE: Max place holder 464 * 465 * These are generic IDs that identify the various roles 466 * in the software system 467 */ 468 enum policy_mgr_pcl_type { 469 PM_NONE = 0, 470 PM_24G, 471 PM_5G, 472 PM_SCC_CH, 473 PM_MCC_CH, 474 PM_SBS_CH, 475 PM_SCC_CH_24G, 476 PM_SCC_CH_5G, 477 PM_24G_SCC_CH, 478 PM_5G_SCC_CH, 479 PM_SCC_ON_5_CH_5G, 480 PM_SCC_ON_5_SCC_ON_24_24G, 481 PM_SCC_ON_5_SCC_ON_24_5G, 482 PM_SCC_ON_5_5G_24G, 483 PM_SCC_ON_5_5G_SCC_ON_24G, 484 PM_SCC_ON_24_SCC_ON_5_24G, 485 PM_SCC_ON_24_SCC_ON_5_5G, 486 PM_SCC_ON_24_CH_24G, 487 PM_SCC_ON_5_SCC_ON_24, 488 PM_SCC_ON_24_SCC_ON_5, 489 PM_MCC_CH_24G, 490 PM_MCC_CH_5G, 491 PM_24G_MCC_CH, 492 PM_5G_MCC_CH, 493 PM_SBS_CH_5G, 494 PM_24G_SCC_CH_SBS_CH, 495 PM_24G_SCC_CH_SBS_CH_5G, 496 PM_24G_SBS_CH_MCC_CH, 497 /* New PCL type for DBS-SBS HW */ 498 PM_SBS_CH_24G_SCC_CH, 499 PM_SBS_CH_SCC_CH_24G, 500 PM_SCC_CH_SBS_CH_24G, 501 PM_SBS_CH_SCC_CH_5G_24G, 502 PM_SCC_CH_MCC_CH_SBS_CH_24G, 503 PM_SBS_CH_2G, 504 PM_SCC_ON_5G_LOW_5G_LOW_PLUS_SHARED_2G, 505 PM_SCC_ON_5G_HIGH_5G_HIGH_PLUS_SHARED_2G, 506 PM_SCC_ON_5G_HIGH_5G_HIGH_SCC_ON_5G_LOW_PLUS_SHARED_2G, 507 508 PM_SBS_CH_MCC_CH, 509 PM_SBS_5G_MCC_24G, 510 PM_SCC_ON_24G, 511 PM_SCC_ON_5G_LOW, 512 PM_SCC_ON_5G_HIGH, 513 PM_SBS_CH_MCC_CH_SCC_ON_24_24G, 514 PM_5G_24G, 515 PM_MCC_CH_SCC_ON_24G, 516 PM_SCC_ON_5G_LOW_MCC_ON_5G_HIGH, 517 PM_SCC_ON_5G_HIGH_MCC_ON_5G_LOW, 518 519 PM_MAX_PCL_TYPE 520 }; 521 522 /** 523 * enum policy_mgr_one_connection_mode - Combination of first connection 524 * type, band & spatial stream used. 525 * 526 * @PM_STA_24_1x1: STA connection using 1x1@2.4 Ghz 527 * @PM_STA_24_2x2: STA connection using 2x2@2.4 Ghz 528 * @PM_STA_5_1x1: STA connection using 1x1@5 Ghz 529 * @PM_STA_5_2x2: STA connection using 2x2@5 Ghz 530 * @PM_P2P_CLI_24_1x1: P2P Client connection using 1x1@2.4 Ghz 531 * @PM_P2P_CLI_24_2x2: P2P Client connection using 2x2@2.4 Ghz 532 * @PM_P2P_CLI_5_1x1: P2P Client connection using 1x1@5 Ghz 533 * @PM_P2P_CLI_5_2x2: P2P Client connection using 2x2@5 Ghz 534 * @PM_P2P_GO_24_1x1: P2P GO connection using 1x1@2.4 Ghz 535 * @PM_P2P_GO_24_2x2: P2P GO connection using 2x2@2.4 Ghz 536 * @PM_P2P_GO_5_1x1: P2P GO connection using 1x1@5 Ghz 537 * @PM_P2P_GO_5_2x2: P2P GO connection using 2x2@5 Ghz 538 * @PM_SAP_24_1x1: SAP connection using 1x1@2.4 Ghz 539 * @PM_SAP_24_2x2: SAP connection using 2x2@2.4 Ghz 540 * @PM_SAP_5_1x1: SAP connection using 1x1@5 Ghz 541 * @PM_SAP_5_2x2: SAP connection using 2x2@5 Ghz 542 * @PM_NAN_DISC_24_1x1: NAN Discovery using 1x1@2.4 Ghz 543 * @PM_NAN_DISC_24_2x2: NAN Discovery using 2x2@2.4 Ghz 544 * @PM_NDI_24_1x1: NAN Datapath using 1x1@2.4 Ghz 545 * @PM_NDI_24_2x2: NAN Datapath using 2x2@2.4 Ghz 546 * @PM_NDI_5_1x1: NAN Datapath using 1x1@5 Ghz 547 * @PM_NDI_5_2x2: NAN Datapath using 2x2@5 Ghz 548 * @PM_LL_LT_SAP_5_1x1: Low latency low throughput SAP using 1x1@5 Ghz 549 * @PM_LL_LT_SAP_5_2x2: Low latency low throughput SAP using 2x2@5 Ghz 550 * @PM_MAX_ONE_CONNECTION_MODE: Max place holder 551 * 552 * These are generic IDs that identify the various roles 553 * in the software system 554 */ 555 enum policy_mgr_one_connection_mode { 556 PM_STA_24_1x1 = 0, 557 PM_STA_24_2x2, 558 PM_STA_5_1x1, 559 PM_STA_5_2x2, 560 PM_P2P_CLI_24_1x1, 561 PM_P2P_CLI_24_2x2, 562 PM_P2P_CLI_5_1x1, 563 PM_P2P_CLI_5_2x2, 564 PM_P2P_GO_24_1x1, 565 PM_P2P_GO_24_2x2, 566 PM_P2P_GO_5_1x1, 567 PM_P2P_GO_5_2x2, 568 PM_SAP_24_1x1, 569 PM_SAP_24_2x2, 570 PM_SAP_5_1x1, 571 PM_SAP_5_2x2, 572 PM_NAN_DISC_24_1x1, 573 PM_NAN_DISC_24_2x2, 574 PM_NDI_24_1x1, 575 PM_NDI_24_2x2, 576 PM_NDI_5_1x1, 577 PM_NDI_5_2x2, 578 PM_LL_LT_SAP_5_1x1, 579 PM_LL_LT_SAP_5_2x2 = PM_LL_LT_SAP_5_1x1, 580 581 PM_MAX_ONE_CONNECTION_MODE 582 }; 583 584 /** 585 * enum policy_mgr_two_connection_mode - Combination of first two 586 * connections type, concurrency state, band & spatial stream 587 * used. 588 * 589 * @PM_STA_SAP_SCC_24_1x1: STA & SAP connection on SCC using 590 * 1x1@2.4 Ghz 591 * @PM_STA_SAP_SCC_24_2x2: STA & SAP connection on SCC using 592 * 2x2@2.4 Ghz 593 * @PM_STA_SAP_MCC_24_1x1: STA & SAP connection on MCC using 594 * 1x1@2.4 Ghz 595 * @PM_STA_SAP_MCC_24_2x2: STA & SAP connection on MCC using 596 * 2x2@2.4 Ghz 597 * @PM_STA_SAP_SCC_5_1x1: STA & SAP connection on SCC using 598 * 1x1@5 Ghz 599 * @PM_STA_SAP_SCC_5_2x2: STA & SAP connection on SCC using 600 * 2x2@5 Ghz 601 * @PM_STA_SAP_MCC_5_1x1: STA & SAP connection on MCC using 602 * 1x1@5 Ghz 603 * @PM_STA_SAP_MCC_5_2x2: STA & SAP connection on MCC using 604 * 2x2@5 Ghz 605 * @PM_STA_SAP_MCC_24_5_1x1: 606 * @PM_STA_SAP_MCC_24_5_2x2: 607 * @PM_STA_SAP_DBS_1x1: STA & SAP connection on DBS using 1x1 608 * @PM_STA_SAP_DBS_2x2: STA & SAP connection on DBS using 2x2 609 * @PM_STA_SAP_SBS_5_1x1: STA & SAP connection on 5G SBS using 1x1 610 * @PM_STA_SAP_SBS_5_2x2: STA & SAP connection on 5G SBS using 2x2 611 * @PM_STA_P2P_GO_SCC_24_1x1: STA & P2P GO connection on SCC 612 * using 1x1@2.4 Ghz 613 * @PM_STA_P2P_GO_SCC_24_2x2: STA & P2P GO connection on SCC 614 * using 2x2@2.4 Ghz 615 * @PM_STA_P2P_GO_MCC_24_1x1: STA & P2P GO connection on MCC 616 * using 1x1@2.4 Ghz 617 * @PM_STA_P2P_GO_MCC_24_2x2: STA & P2P GO connection on MCC 618 * using 2x2@2.4 Ghz 619 * @PM_STA_P2P_GO_SCC_5_1x1: STA & P2P GO connection on SCC 620 * using 1x1@5 Ghz 621 * @PM_STA_P2P_GO_SCC_5_2x2: STA & P2P GO connection on SCC 622 * using 2x2@5 Ghz 623 * @PM_STA_P2P_GO_MCC_5_1x1: STA & P2P GO connection on MCC 624 * using 1x1@5 Ghz 625 * @PM_STA_P2P_GO_MCC_5_2x2: STA & P2P GO connection on MCC 626 * using 2x2@5 Ghz 627 * @PM_STA_P2P_GO_MCC_24_5_1x1: 628 * @PM_STA_P2P_GO_MCC_24_5_2x2: 629 * @PM_STA_P2P_GO_DBS_1x1: STA & P2P GO connection on DBS using 630 * 1x1 631 * @PM_STA_P2P_GO_DBS_2x2: STA & P2P GO connection on DBS using 632 * 2x2 633 * @PM_STA_P2P_GO_SBS_5_1x1: STA & P2P GO connection on 5G SBS 634 * using 1x1 635 * @PM_STA_P2P_GO_SBS_5_2x2: STA & P2P GO connection on 5G SBS 636 * using 2x2 637 * @PM_STA_P2P_CLI_SCC_24_1x1: STA & P2P CLI connection on SCC 638 * using 1x1@2.4 Ghz 639 * @PM_STA_P2P_CLI_SCC_24_2x2: STA & P2P CLI connection on SCC 640 * using 2x2@2.4 Ghz 641 * @PM_STA_P2P_CLI_MCC_24_1x1: STA & P2P CLI connection on MCC 642 * using 1x1@2.4 Ghz 643 * @PM_STA_P2P_CLI_MCC_24_2x2: STA & P2P CLI connection on MCC 644 * using 2x2@2.4 Ghz 645 * @PM_STA_P2P_CLI_SCC_5_1x1: STA & P2P CLI connection on SCC 646 * using 1x1@5 Ghz 647 * @PM_STA_P2P_CLI_SCC_5_2x2: STA & P2P CLI connection on SCC 648 * using 2x2@5 Ghz 649 * @PM_STA_P2P_CLI_MCC_5_1x1: STA & P2P CLI connection on MCC 650 * using 1x1@5 Ghz 651 * @PM_STA_P2P_CLI_MCC_5_2x2: STA & P2P CLI connection on MCC 652 * using 2x2@5 Ghz 653 * @PM_STA_P2P_CLI_MCC_24_5_1x1: 654 * @PM_STA_P2P_CLI_MCC_24_5_2x2: 655 * @PM_STA_P2P_CLI_DBS_1x1: STA & P2P CLI connection on DBS 656 * using 1x1 657 * @PM_STA_P2P_CLI_DBS_2x2: STA & P2P CLI connection on DBS 658 * using 2x2 659 * @PM_STA_P2P_CLI_SBS_5_1x1: STA & P2P CLI connection on 5G 660 * SBS using 1x1 661 * @PM_STA_P2P_CLI_SBS_5_2x2: STA & P2P CLI connection on 5G 662 * SBS using 2x2 663 * @PM_P2P_GO_P2P_CLI_SCC_24_1x1: P2P GO & CLI connection on 664 * SCC using 1x1@2.4 Ghz 665 * @PM_P2P_GO_P2P_CLI_SCC_24_2x2: P2P GO & CLI connection on 666 * SCC using 2x2@2.4 Ghz 667 * @PM_P2P_GO_P2P_CLI_MCC_24_1x1: P2P GO & CLI connection on 668 * MCC using 1x1@2.4 Ghz 669 * @PM_P2P_GO_P2P_CLI_MCC_24_2x2: P2P GO & CLI connection on 670 * MCC using 2x2@2.4 Ghz 671 * @PM_P2P_GO_P2P_CLI_SCC_5_1x1: P2P GO & CLI connection on 672 * SCC using 1x1@5 Ghz 673 * @PM_P2P_GO_P2P_CLI_SCC_5_2x2: P2P GO & CLI connection on 674 * SCC using 2x2@5 Ghz 675 * @PM_P2P_GO_P2P_CLI_MCC_5_1x1: P2P GO & CLI connection on 676 * MCC using 1x1@5 Ghz 677 * @PM_P2P_GO_P2P_CLI_MCC_5_2x2: P2P GO & CLI connection on 678 * MCC using 2x2@5 Ghz 679 * @PM_P2P_GO_P2P_CLI_MCC_24_5_1x1: 680 * @PM_P2P_GO_P2P_CLI_MCC_24_5_2x2: 681 * @PM_P2P_GO_P2P_CLI_DBS_1x1: P2P GO & CLI connection on DBS 682 * using 1x1 683 * @PM_P2P_GO_P2P_CLI_DBS_2x2: P2P GO & P2P CLI connection 684 * on DBS using 2x2 685 * @PM_P2P_GO_P2P_CLI_SBS_5_1x1: P2P GO & P2P CLI connection 686 * on 5G SBS using 1x1 687 * @PM_P2P_GO_P2P_CLI_SBS_5_2x2: P2P GO & P2P CLI connection 688 * on 5G SBS using 2x2 689 * @PM_P2P_GO_SAP_SCC_24_1x1: P2P GO & SAP connection on 690 * SCC using 1x1@2.4 Ghz 691 * @PM_P2P_GO_SAP_SCC_24_2x2: P2P GO & SAP connection on 692 * SCC using 2x2@2.4 Ghz 693 * @PM_P2P_GO_SAP_MCC_24_1x1: P2P GO & SAP connection on 694 * MCC using 1x1@2.4 Ghz 695 * @PM_P2P_GO_SAP_MCC_24_2x2: P2P GO & SAP connection on 696 * MCC using 2x2@2.4 Ghz 697 * @PM_P2P_GO_SAP_SCC_5_1x1: P2P GO & SAP connection on 698 * SCC using 1x1@5 Ghz 699 * @PM_P2P_GO_SAP_SCC_5_2x2: P2P GO & SAP connection on 700 * SCC using 2x2@5 Ghz 701 * @PM_P2P_GO_SAP_MCC_5_1x1: P2P GO & SAP connection on 702 * MCC using 1x1@5 Ghz 703 * @PM_P2P_GO_SAP_MCC_5_2x2: P2P GO & SAP connection on 704 * MCC using 2x2@5 Ghz 705 * @PM_P2P_GO_SAP_MCC_24_5_1x1: 706 * @PM_P2P_GO_SAP_MCC_24_5_2x2: 707 * @PM_P2P_GO_SAP_DBS_1x1: P2P GO & SAP connection on DBS using 708 * 1x1 709 * @PM_P2P_GO_SAP_DBS_2x2: P2P GO & SAP connection on DBS using 710 * 2x2 711 * @PM_P2P_GO_SAP_SBS_5_1x1: P2P GO & SAP connection on 5G SBS 712 * using 1x1 713 * @PM_P2P_GO_SAP_SBS_5_2x2: P2P GO & SAP connection on 5G SBS 714 * using 2x2 715 * @PM_P2P_GO_P2P_GO_SCC_24_1x1: P2P GO & P2P GO SCC on 2.4G using 1x1 716 * @PM_P2P_GO_P2P_GO_SCC_24_2x2: P2P GO & P2P GO SCC on 2.4G using 2x2 717 * @PM_P2P_GO_P2P_GO_MCC_24_1x1: P2P GO & P2P GO MCC on 2.4G using 1x1 718 * @PM_P2P_GO_P2P_GO_MCC_24_2x2: P2P GO & P2P GO MCC on 2.4G using 2x2 719 * @PM_P2P_GO_P2P_GO_SCC_5_1x1: P2P GO & P2P GO SCC on 5G using 1x1 720 * @PM_P2P_GO_P2P_GO_SCC_5_2x2: P2P GO & P2P GO SCC on 5G using 2x2 721 * @PM_P2P_GO_P2P_GO_MCC_5_1x1: P2P GO & P2P GO MCC on 5G using 1x1 722 * @PM_P2P_GO_P2P_GO_MCC_5_2x2: P2P GO & P2P GO MCC on 5G using 2x2 723 * @PM_P2P_GO_P2P_GO_MCC_24_5_1x1: P2P GO 2.4G & P2P GO 5G dual band MCC 724 * using 1x1 725 * @PM_P2P_GO_P2P_GO_MCC_24_5_2x2: P2P GO 2.4G & P2P GO 5G dual band MCC 726 * using 2x2 727 * @PM_P2P_GO_P2P_GO_DBS_1x1: P2P GO & P2P GO on DBS using 1x1 728 * @PM_P2P_GO_P2P_GO_DBS_2x2: P2P GO & P2P GO on DBS using 2x2 729 * @PM_P2P_GO_P2P_GO_SBS_5_1x1: P2P GO & P2P GO on SBS using 1x1 730 * @PM_P2P_GO_P2P_GO_SBS_5_2x2: P2P GO & P2P GO on SBS using 2x2 731 * @PM_P2P_CLI_SAP_SCC_24_1x1: CLI & SAP connection on SCC using 732 * 1x1@2.4 Ghz 733 * @PM_P2P_CLI_SAP_SCC_24_2x2: CLI & SAP connection on SCC using 734 * 2x2@2.4 Ghz 735 * @PM_P2P_CLI_SAP_MCC_24_1x1: CLI & SAP connection on MCC using 736 * 1x1@2.4 Ghz 737 * @PM_P2P_CLI_SAP_MCC_24_2x2: CLI & SAP connection on MCC using 738 * 2x2@2.4 Ghz 739 * @PM_P2P_CLI_SAP_SCC_5_1x1: CLI & SAP connection on SCC using 740 * 1x1@5 Ghz 741 * @PM_P2P_CLI_SAP_SCC_5_2x2: CLI & SAP connection on SCC using 742 * 2x2@5 Ghz 743 * @PM_P2P_CLI_SAP_MCC_5_1x1: CLI & SAP connection on MCC using 744 * 1x1@5 Ghz 745 * @PM_P2P_CLI_SAP_MCC_5_2x2: CLI & SAP connection on MCC using 746 * 2x2@5 Ghz 747 * @PM_P2P_CLI_SAP_MCC_24_5_1x1: CLI and SAP connecting on MCC 748 * in 2.4 and 5GHz 1x1 749 * @PM_P2P_CLI_SAP_MCC_24_5_2x2: CLI and SAP connecting on MCC 750 * in 2.4 and 5GHz 2x2 751 * @PM_P2P_CLI_SAP_DBS_1x1: CLI & SAP connection on DBS using 1x1 752 * @PM_P2P_CLI_SAP_DBS_2x2: P2P CLI & SAP connection on DBS using 753 * 2x2 754 * @PM_P2P_CLI_SAP_SBS_5_1x1: P2P CLI & SAP connection on 5G SBS 755 * using 1x1 756 * @PM_P2P_CLI_SAP_SBS_5_2x2: P2P CLI & SAP connection on 5G SBS 757 * using 2x2 758 * @PM_P2P_CLI_P2P_CLI_SCC_24_1x1: P2P CLI & P2P CLI SCC on 2.4G using 1x1 759 * @PM_P2P_CLI_P2P_CLI_SCC_24_2x2: P2P CLI & P2P CLI SCC on 2.4G using 2x2 760 * @PM_P2P_CLI_P2P_CLI_MCC_24_1x1: P2P CLI & P2P CLI MCC on 2.4G using 1x1 761 * @PM_P2P_CLI_P2P_CLI_MCC_24_2x2: P2P CLI & P2P CLI MCC on 2.4G using 2x2 762 * @PM_P2P_CLI_P2P_CLI_SCC_5_1x1: P2P CLI & P2P CLI SCC on 5G using 1x1 763 * @PM_P2P_CLI_P2P_CLI_SCC_5_2x2: P2P CLI & P2P CLI SCC on 5G using 2x2 764 * @PM_P2P_CLI_P2P_CLI_MCC_5_1x1: P2P CLI & P2P CLI MCC on 5G using 1x1 765 * @PM_P2P_CLI_P2P_CLI_MCC_5_2x2: P2P CLI & P2P CLI MCC on 5G using 2x2 766 * @PM_P2P_CLI_P2P_CLI_MCC_24_5_1x1: P2P CLI 2.4G & P2P CLI 5G dual band MCC 767 * using 1x1 768 * @PM_P2P_CLI_P2P_CLI_MCC_24_5_2x2: P2P CLI 2.4G & P2P CLI 5G dual band MCC 769 * using 2x2 770 * @PM_P2P_CLI_P2P_CLI_DBS_1x1: P2P CLI & P2P CLI on DBS using 1x1 771 * @PM_P2P_CLI_P2P_CLI_DBS_2x2: P2P CLI & P2P CLI on DBS using 2x2 772 * @PM_P2P_CLI_P2P_CLI_SBS_5_1x1: P2P CLI & P2P CLI on SBS using 1x1 773 * @PM_P2P_CLI_P2P_CLI_SBS_5_2x2: P2P CLI & P2P CLI on SBS using 2x2 774 * @PM_SAP_SAP_SCC_24_1x1: SAP & SAP connection on 775 * SCC using 1x1@2.4 Ghz 776 * @PM_SAP_SAP_SCC_24_2x2: SAP & SAP connection on 777 * SCC using 2x2@2.4 Ghz 778 * @PM_SAP_SAP_MCC_24_1x1: SAP & SAP connection on 779 * MCC using 1x1@2.4 Ghz 780 * @PM_SAP_SAP_MCC_24_2x2: SAP & SAP connection on 781 * MCC using 2x2@2.4 Ghz 782 * @PM_SAP_SAP_SCC_5_1x1: SAP & SAP connection on 783 * SCC using 1x1@5 Ghz 784 * @PM_SAP_SAP_SCC_5_2x2: SAP & SAP connection on 785 * SCC using 2x2@5 Ghz 786 * @PM_SAP_SAP_MCC_5_1x1: SAP & SAP connection on 787 * MCC using 1x1@5 Ghz 788 * @PM_SAP_SAP_MCC_5_2x2: SAP & SAP connection on 789 * MCC using 2x2@5 Ghz 790 * @PM_SAP_SAP_MCC_24_5_1x1: SAP & SAP connection on 791 * MCC in 2.4 and 5GHz 1x1 792 * @PM_SAP_SAP_MCC_24_5_2x2: SAP & SAP connection on 793 * MCC in 2.4 and 5GHz 2x2 794 * @PM_SAP_SAP_DBS_1x1: SAP & SAP connection on DBS using 795 * 1x1 796 * @PM_SAP_SAP_DBS_2x2: SAP & SAP connection on DBS using 2x2 797 * @PM_SAP_SAP_SBS_5_1x1: SAP & SAP connection on 5G SBS using 1x1 798 * @PM_SAP_SAP_SBS_5_2x2: SAP & SAP connection on 5G SBS using 2x2 799 * @PM_SAP_NAN_DISC_SCC_24_1x1: SAP & NAN connection on 800 * SCC using 1x1@2.4 Ghz 801 * @PM_SAP_NAN_DISC_SCC_24_2x2: SAP & NAN connection on 802 * SCC using 2x2@2.4 Ghz 803 * @PM_SAP_NAN_DISC_MCC_24_1x1: SAP & NAN connection on 804 * MCC using 1x1@2.4 Ghz 805 * @PM_SAP_NAN_DISC_MCC_24_2x2: SAP & NAN connection on 806 * SCC using 2x2@2.4 Ghz 807 * @PM_SAP_NAN_DISC_DBS_1x1: SAP & NAN connection on DBS using 1x1 808 * @PM_SAP_NAN_DISC_DBS_2x2: SAP & NAN connection on DBS using 2x2 809 * @PM_STA_STA_SCC_24_1x1: STA & STA connection on 810 * SCC using 1x1@2.4 Ghz 811 * @PM_STA_STA_SCC_24_2x2: STA & STA connection on 812 * SCC using 2x2@2.4 Ghz 813 * @PM_STA_STA_MCC_24_1x1: STA & STA connection on 814 * MCC using 1x1@2.4 Ghz 815 * @PM_STA_STA_MCC_24_2x2: STA & STA connection on 816 * MCC using 2x2@2.4 Ghz 817 * @PM_STA_STA_SCC_5_1x1: STA & STA connection on 818 * SCC using 1x1@5 Ghz 819 * @PM_STA_STA_SCC_5_2x2: STA & STA connection on 820 * SCC using 2x2@5 Ghz 821 * @PM_STA_STA_MCC_5_1x1: STA & STA connection on 822 * MCC using 1x1@5 Ghz 823 * @PM_STA_STA_MCC_5_2x2: STA & STA connection on 824 * MCC using 2x2@5 Ghz 825 * @PM_STA_STA_MCC_24_5_1x1: STA & STA connection on 826 * MCC in 2.4 and 5GHz 1x1 827 * @PM_STA_STA_MCC_24_5_2x2: STA & STA connection on 828 * MCC in 2.4 and 5GHz 2x2 829 * @PM_STA_STA_DBS_1x1: STA & STA connection on DBS using 830 * 1x1 831 * @PM_STA_STA_DBS_2x2: STA & STA connection on DBS using 2x2 832 * @PM_STA_STA_SBS_5_1x1: STA & STA connection on 5G SBS using 1x1 833 * @PM_STA_STA_SBS_5_2x2: STA & STA connection on 5G SBS using 2x2 834 * @PM_STA_NAN_DISC_SCC_24_1x1: NAN & STA connection on SCC using 1x1 on 2.4 GHz 835 * @PM_STA_NAN_DISC_SCC_24_2x2: NAN & STA connection on SCC using 2x2 on 2.4 GHz 836 * @PM_STA_NAN_DISC_MCC_24_1x1: NAN & STA connection on MCC using 1x1 on 2.4 GHz 837 * @PM_STA_NAN_DISC_MCC_24_2x2: NAN & STA connection on MCC using 2x2 on 2.4 GHz 838 * @PM_STA_NAN_DISC_DBS_1x1: NAN & STA connection on DBS using 1x1 839 * @PM_STA_NAN_DISC_DBS_2x2: NAN & STA connection on DBS using 2x2 840 * @PM_NAN_DISC_NDI_SCC_24_1x1: NAN & NDI connection on SCC using 1x1 on 2.4 GHz 841 * @PM_NAN_DISC_NDI_SCC_24_2x2: NAN & NDI connection on SCC using 2x2 on 2.4 GHz 842 * @PM_NAN_DISC_NDI_MCC_24_1x1: NAN & NDI connection on MCC using 1x1 on 2.4 GHz 843 * @PM_NAN_DISC_NDI_MCC_24_2x2: NAN & NDI connection on MCC using 2x2 on 2.4 GHz 844 * @PM_NAN_DISC_NDI_DBS_1x1: NAN & NDI connection on DBS using 1x1 845 * @PM_NAN_DISC_NDI_DBS_2x2: NAN & NDI connection on DBS using 2x2 846 * @PM_STA_24_LL_LT_SAP_DBS_1x1: STA & LL_LT_SAP connection in DBS using 1x1 847 * @PM_STA_24_LL_LT_SAP_DBS_2x2: STA & LL_LT_SAP connection in DBS using 2x2 848 * @PM_STA_5_LL_LT_SAP_MCC_1x1: STA & LL_LT_SAP connection in MCC on 5 GHz 849 * using 1x1 850 * @PM_STA_5_LL_LT_SAP_MCC_2x2: STA & LL_LT_SAP connection in MCC on 5 GHz 851 * using 2x2 852 * @PM_STA_5_LOW_LL_LT_SAP_5_HIGH_SBS_1x1: STA on 5G low & LL_LT_SAP on 5G high 853 * connection in SBS using 1x1 854 * @PM_STA_5_LOW_LL_LT_SAP_5_HIGH_SBS_2x2: STA on 5G low & LL_LT_SAP on 5G high 855 * connection in SBS using 2x2 856 * @PM_STA_5_HIGH_LL_LT_SAP_5_LOW_SBS_1x1: STA on 5G high & LL_LT_SAP on 5G low 857 * connection in SBS using 1x1 858 * @PM_STA_5_HIGH_LL_LT_SAP_5_LOW_SBS_2x2: STA on 5G high & LL_LT_SAP on 5G low 859 * connection in SBS using 1x1 860 * @PM_SAP_24_LL_LT_SAP_DBS_1x1: SAP & LL_LT_SAP connection in DBS using 1x1 861 * @PM_SAP_24_LL_LT_SAP_DBS_2x2: SAP & LL_LT_SAP connection in DBS using 2x2 862 * @PM_SAP_5_LOW_LL_LT_SAP_5_HIGH_SBS_1x1: SAP on 5G low & LL_LT_SAP on 5G high 863 * connection in SBS using 1x1 864 * @PM_SAP_5_LOW_LL_LT_SAP_5_HIGH_SBS_2x2: SAP on 5G low & LL_LT_SAP on 5G high 865 * connection in SBS using 2x2 866 * @PM_SAP_5_HIGH_LL_LT_SAP_5_LOW_SBS_1x1: SAP on 5G high & LL_LT_SAP on 5G low 867 * connection in SBS using 1x1 868 * @PM_SAP_5_HIGH_LL_LT_SAP_5_LOW_SBS_2x2: SAP on 5G high & LL_LT_SAP on 5G low 869 * connection in SBS using 1x1 870 * @PM_P2P_GO_24_LL_LT_SAP_DBS_1x1: P2P GO & LL_LT_SAP connection in DBS 871 * using 1x1 872 * @PM_P2P_GO_24_LL_LT_SAP_DBS_2x2: P2P GO & LL_LT_SAP connection in DBS 873 * using 2x2 874 * @PM_P2P_GO_5_LL_LT_SAP_MCC_1x1: GO & LL_LT_SAP connection in MCC using 1x1 875 * @PM_P2P_GO_5_LL_LT_SAP_MCC_2x2: GO & LL_LT_SAP connection in MCC using 2x2 876 * @PM_P2P_GO_5_LOW_LL_LT_SAP_5_HIGH_SBS_1x1: GO on 5G low & LL_LT_SAP on 5G 877 * high connection in SBS using 1x1 878 * @PM_P2P_GO_5_LOW_LL_LT_SAP_5_HIGH_SBS_2x2: GO on 5G low & LL_LT_SAP on 5G 879 * high connection in SBS using 2x2 880 * @PM_P2P_GO_5_HIGH_LL_LT_SAP_5_LOW_SBS_1x1: GO on 5G high & LL_LT_SAP on 5G 881 * low connection in SBS using 1x1 882 * @PM_P2P_GO_5_HIGH_LL_LT_SAP_5_LOW_SBS_2x2: GO on 5G high & LL_LT_SAP on 5G 883 * low connection in SBS using 2x2 884 * @PM_P2P_CLI_24_LL_LT_SAP_DBS_1x1: CLI & LL_LT_SAP connection in DBS using 1x1 885 * @PM_P2P_CLI_24_LL_LT_SAP_DBS_2x2: CLI & LL_LT_SAP connection in DBS using 2x2 886 * @PM_P2P_CLI_5_LL_LT_SAP_MCC_1x1: CLI & LL_LT_SAP connection in MCC on 5 GHz 887 * using 1x1 888 * @PM_P2P_CLI_5_LL_LT_SAP_MCC_2x2: CLI & LL_LT_SAP connection in MCC on 5 GHz 889 * using 2x2 890 * @PM_P2P_CLI_5_LOW_LL_LT_SAP_5_HIGH_SBS_1x1: CLI on 5G low & LL_LT_SAP on 5G 891 * high connection in SBS using 1x1 892 * @PM_P2P_CLI_5_LOW_LL_LT_SAP_5_HIGH_SBS_2x2: CLI on 5G low & LL_LT_SAP on 5G 893 * high connection in SBS using 2x2 894 * @PM_P2P_CLI_5_HIGH_LL_LT_SAP_5_LOW_SBS_1x1: CLI on 5G high & LL_LT_SAP on 5G 895 * low connection in SBS using 1x1 896 * @PM_P2P_CLI_5_HIGH_LL_LT_SAP_5_LOW_SBS_2x2: CLI on 5G high & LL_LT_SAP on 5G 897 * low connection in SBS using 2x2 898 * @PM_MAX_TWO_CONNECTION_MODE: Max enumeration 899 * 900 * These are generic IDs that identify the various roles in the 901 * software system 902 */ 903 enum policy_mgr_two_connection_mode { 904 PM_STA_SAP_SCC_24_1x1 = 0, 905 PM_STA_SAP_SCC_24_2x2, 906 PM_STA_SAP_MCC_24_1x1, 907 PM_STA_SAP_MCC_24_2x2, 908 PM_STA_SAP_SCC_5_1x1, 909 PM_STA_SAP_SCC_5_2x2, 910 PM_STA_SAP_MCC_5_1x1, 911 PM_STA_SAP_MCC_5_2x2, 912 PM_STA_SAP_MCC_24_5_1x1, 913 PM_STA_SAP_MCC_24_5_2x2, 914 PM_STA_SAP_DBS_1x1, 915 PM_STA_SAP_DBS_2x2, 916 PM_STA_SAP_SBS_5_1x1, 917 PM_STA_SAP_SBS_5_2x2 = PM_STA_SAP_SBS_5_1x1, 918 PM_STA_P2P_GO_SCC_24_1x1, 919 PM_STA_P2P_GO_SCC_24_2x2, 920 PM_STA_P2P_GO_MCC_24_1x1, 921 PM_STA_P2P_GO_MCC_24_2x2, 922 PM_STA_P2P_GO_SCC_5_1x1, 923 PM_STA_P2P_GO_SCC_5_2x2, 924 PM_STA_P2P_GO_MCC_5_1x1, 925 PM_STA_P2P_GO_MCC_5_2x2, 926 PM_STA_P2P_GO_MCC_24_5_1x1, 927 PM_STA_P2P_GO_MCC_24_5_2x2, 928 PM_STA_P2P_GO_DBS_1x1, 929 PM_STA_P2P_GO_DBS_2x2, 930 PM_STA_P2P_GO_SBS_5_1x1, 931 PM_STA_P2P_GO_SBS_5_2x2 = PM_STA_P2P_GO_SBS_5_1x1, 932 PM_STA_P2P_CLI_SCC_24_1x1, 933 PM_STA_P2P_CLI_SCC_24_2x2, 934 PM_STA_P2P_CLI_MCC_24_1x1, 935 PM_STA_P2P_CLI_MCC_24_2x2, 936 PM_STA_P2P_CLI_SCC_5_1x1, 937 PM_STA_P2P_CLI_SCC_5_2x2, 938 PM_STA_P2P_CLI_MCC_5_1x1, 939 PM_STA_P2P_CLI_MCC_5_2x2, 940 PM_STA_P2P_CLI_MCC_24_5_1x1, 941 PM_STA_P2P_CLI_MCC_24_5_2x2, 942 PM_STA_P2P_CLI_DBS_1x1, 943 PM_STA_P2P_CLI_DBS_2x2, 944 PM_STA_P2P_CLI_SBS_5_1x1, 945 PM_STA_P2P_CLI_SBS_5_2x2 = PM_STA_P2P_CLI_SBS_5_1x1, 946 PM_P2P_GO_P2P_CLI_SCC_24_1x1, 947 PM_P2P_GO_P2P_CLI_SCC_24_2x2, 948 PM_P2P_GO_P2P_CLI_MCC_24_1x1, 949 PM_P2P_GO_P2P_CLI_MCC_24_2x2, 950 PM_P2P_GO_P2P_CLI_SCC_5_1x1, 951 PM_P2P_GO_P2P_CLI_SCC_5_2x2, 952 PM_P2P_GO_P2P_CLI_MCC_5_1x1, 953 PM_P2P_GO_P2P_CLI_MCC_5_2x2, 954 PM_P2P_GO_P2P_CLI_MCC_24_5_1x1, 955 PM_P2P_GO_P2P_CLI_MCC_24_5_2x2, 956 PM_P2P_GO_P2P_CLI_DBS_1x1, 957 PM_P2P_GO_P2P_CLI_DBS_2x2, 958 PM_P2P_GO_P2P_CLI_SBS_5_1x1, 959 PM_P2P_GO_P2P_CLI_SBS_5_2x2 = PM_P2P_GO_P2P_CLI_SBS_5_1x1, 960 PM_P2P_GO_SAP_SCC_24_1x1, 961 PM_P2P_GO_SAP_SCC_24_2x2, 962 PM_P2P_GO_SAP_MCC_24_1x1, 963 PM_P2P_GO_SAP_MCC_24_2x2, 964 PM_P2P_GO_SAP_SCC_5_1x1, 965 PM_P2P_GO_SAP_SCC_5_2x2, 966 PM_P2P_GO_SAP_MCC_5_1x1, 967 PM_P2P_GO_SAP_MCC_5_2x2, 968 PM_P2P_GO_SAP_MCC_24_5_1x1, 969 PM_P2P_GO_SAP_MCC_24_5_2x2, 970 PM_P2P_GO_SAP_DBS_1x1, 971 PM_P2P_GO_SAP_DBS_2x2, 972 PM_P2P_GO_SAP_SBS_5_1x1, 973 PM_P2P_GO_SAP_SBS_5_2x2 = PM_P2P_GO_SAP_SBS_5_1x1, 974 PM_P2P_GO_P2P_GO_SCC_24_1x1, 975 PM_P2P_GO_P2P_GO_SCC_24_2x2, 976 PM_P2P_GO_P2P_GO_MCC_24_1x1, 977 PM_P2P_GO_P2P_GO_MCC_24_2x2, 978 PM_P2P_GO_P2P_GO_SCC_5_1x1, 979 PM_P2P_GO_P2P_GO_SCC_5_2x2, 980 PM_P2P_GO_P2P_GO_MCC_5_1x1, 981 PM_P2P_GO_P2P_GO_MCC_5_2x2, 982 PM_P2P_GO_P2P_GO_MCC_24_5_1x1, 983 PM_P2P_GO_P2P_GO_MCC_24_5_2x2, 984 PM_P2P_GO_P2P_GO_DBS_1x1, 985 PM_P2P_GO_P2P_GO_DBS_2x2, 986 PM_P2P_GO_P2P_GO_SBS_5_1x1, 987 PM_P2P_GO_P2P_GO_SBS_5_2x2 = PM_P2P_GO_P2P_GO_SBS_5_1x1, 988 PM_P2P_CLI_SAP_SCC_24_1x1, 989 PM_P2P_CLI_SAP_SCC_24_2x2, 990 PM_P2P_CLI_SAP_MCC_24_1x1, 991 PM_P2P_CLI_SAP_MCC_24_2x2, 992 PM_P2P_CLI_SAP_SCC_5_1x1, 993 PM_P2P_CLI_SAP_SCC_5_2x2, 994 PM_P2P_CLI_SAP_MCC_5_1x1, 995 PM_P2P_CLI_SAP_MCC_5_2x2, 996 PM_P2P_CLI_SAP_MCC_24_5_1x1, 997 PM_P2P_CLI_SAP_MCC_24_5_2x2, 998 PM_P2P_CLI_SAP_DBS_1x1, 999 PM_P2P_CLI_SAP_DBS_2x2, 1000 PM_P2P_CLI_SAP_SBS_5_1x1, 1001 PM_P2P_CLI_SAP_SBS_5_2x2 = PM_P2P_CLI_SAP_SBS_5_1x1, 1002 PM_P2P_CLI_P2P_CLI_SCC_24_1x1, 1003 PM_P2P_CLI_P2P_CLI_SCC_24_2x2, 1004 PM_P2P_CLI_P2P_CLI_MCC_24_1x1, 1005 PM_P2P_CLI_P2P_CLI_MCC_24_2x2, 1006 PM_P2P_CLI_P2P_CLI_SCC_5_1x1, 1007 PM_P2P_CLI_P2P_CLI_SCC_5_2x2, 1008 PM_P2P_CLI_P2P_CLI_MCC_5_1x1, 1009 PM_P2P_CLI_P2P_CLI_MCC_5_2x2, 1010 PM_P2P_CLI_P2P_CLI_MCC_24_5_1x1, 1011 PM_P2P_CLI_P2P_CLI_MCC_24_5_2x2, 1012 PM_P2P_CLI_P2P_CLI_DBS_1x1, 1013 PM_P2P_CLI_P2P_CLI_DBS_2x2, 1014 PM_P2P_CLI_P2P_CLI_SBS_5_1x1, 1015 PM_P2P_CLI_P2P_CLI_SBS_5_2x2 = PM_P2P_CLI_P2P_CLI_SBS_5_1x1, 1016 PM_SAP_SAP_SCC_24_1x1, 1017 PM_SAP_SAP_SCC_24_2x2, 1018 PM_SAP_SAP_MCC_24_1x1, 1019 PM_SAP_SAP_MCC_24_2x2, 1020 PM_SAP_SAP_SCC_5_1x1, 1021 PM_SAP_SAP_SCC_5_2x2, 1022 PM_SAP_SAP_MCC_5_1x1, 1023 PM_SAP_SAP_MCC_5_2x2, 1024 PM_SAP_SAP_MCC_24_5_1x1, 1025 PM_SAP_SAP_MCC_24_5_2x2, 1026 PM_SAP_SAP_DBS_1x1, 1027 PM_SAP_SAP_DBS_2x2, 1028 PM_SAP_SAP_SBS_5_1x1, 1029 PM_SAP_SAP_SBS_5_2x2 = PM_SAP_SAP_SBS_5_1x1, 1030 PM_SAP_NAN_DISC_SCC_24_1x1, 1031 PM_SAP_NAN_DISC_SCC_24_2x2, 1032 PM_SAP_NAN_DISC_MCC_24_1x1, 1033 PM_SAP_NAN_DISC_MCC_24_2x2, 1034 PM_SAP_NAN_DISC_DBS_1x1, 1035 PM_SAP_NAN_DISC_DBS_2x2, 1036 PM_STA_STA_SCC_24_1x1, 1037 PM_STA_STA_SCC_24_2x2, 1038 PM_STA_STA_MCC_24_1x1, 1039 PM_STA_STA_MCC_24_2x2, 1040 PM_STA_STA_SCC_5_1x1, 1041 PM_STA_STA_SCC_5_2x2, 1042 PM_STA_STA_MCC_5_1x1, 1043 PM_STA_STA_MCC_5_2x2, 1044 PM_STA_STA_MCC_24_5_1x1, 1045 PM_STA_STA_MCC_24_5_2x2, 1046 PM_STA_STA_DBS_1x1, 1047 PM_STA_STA_DBS_2x2, 1048 PM_STA_STA_SBS_5_1x1, 1049 PM_STA_STA_SBS_5_2x2 = PM_STA_STA_SBS_5_1x1, 1050 PM_STA_NAN_DISC_SCC_24_1x1, 1051 PM_STA_NAN_DISC_SCC_24_2x2, 1052 PM_STA_NAN_DISC_MCC_24_1x1, 1053 PM_STA_NAN_DISC_MCC_24_2x2, 1054 PM_STA_NAN_DISC_DBS_1x1, 1055 PM_STA_NAN_DISC_DBS_2x2, 1056 PM_NAN_DISC_NDI_SCC_24_1x1, 1057 PM_NAN_DISC_NDI_SCC_24_2x2, 1058 PM_NAN_DISC_NDI_MCC_24_1x1, 1059 PM_NAN_DISC_NDI_MCC_24_2x2, 1060 PM_NAN_DISC_NDI_DBS_1x1, 1061 PM_NAN_DISC_NDI_DBS_2x2, 1062 PM_STA_24_LL_LT_SAP_DBS_1x1, 1063 PM_STA_24_LL_LT_SAP_DBS_2x2 = PM_STA_24_LL_LT_SAP_DBS_1x1, 1064 PM_STA_5_LL_LT_SAP_MCC_1x1, 1065 PM_STA_5_LL_LT_SAP_MCC_2x2 = PM_STA_5_LL_LT_SAP_MCC_1x1, 1066 PM_STA_5_LOW_LL_LT_SAP_5_HIGH_SBS_1x1, 1067 PM_STA_5_LOW_LL_LT_SAP_5_HIGH_SBS_2x2 = 1068 PM_STA_5_LOW_LL_LT_SAP_5_HIGH_SBS_1x1, 1069 PM_STA_5_HIGH_LL_LT_SAP_5_LOW_SBS_1x1, 1070 PM_STA_5_HIGH_LL_LT_SAP_5_LOW_SBS_2x2 = 1071 PM_STA_5_HIGH_LL_LT_SAP_5_LOW_SBS_1x1, 1072 PM_SAP_24_LL_LT_SAP_DBS_1x1, 1073 PM_SAP_24_LL_LT_SAP_DBS_2x2 = PM_SAP_24_LL_LT_SAP_DBS_1x1, 1074 PM_SAP_5_LOW_LL_LT_SAP_5_HIGH_SBS_1x1, 1075 PM_SAP_5_LOW_LL_LT_SAP_5_HIGH_SBS_2x2 = 1076 PM_SAP_5_LOW_LL_LT_SAP_5_HIGH_SBS_1x1, 1077 PM_SAP_5_HIGH_LL_LT_SAP_5_LOW_SBS_1x1, 1078 PM_SAP_5_HIGH_LL_LT_SAP_5_LOW_SBS_2x2 = 1079 PM_SAP_5_HIGH_LL_LT_SAP_5_LOW_SBS_1x1, 1080 PM_P2P_GO_24_LL_LT_SAP_DBS_1x1, 1081 PM_P2P_GO_24_LL_LT_SAP_DBS_2x2 = PM_P2P_GO_24_LL_LT_SAP_DBS_1x1, 1082 PM_P2P_GO_5_LL_LT_SAP_MCC_1x1, 1083 PM_P2P_GO_5_LL_LT_SAP_MCC_2x2 = PM_P2P_GO_5_LL_LT_SAP_MCC_1x1, 1084 PM_P2P_GO_5_LOW_LL_LT_SAP_5_HIGH_SBS_1x1, 1085 PM_P2P_GO_5_LOW_LL_LT_SAP_5_HIGH_SBS_2x2 = 1086 PM_P2P_GO_5_LOW_LL_LT_SAP_5_HIGH_SBS_1x1, 1087 PM_P2P_GO_5_HIGH_LL_LT_SAP_5_LOW_SBS_1x1, 1088 PM_P2P_GO_5_HIGH_LL_LT_SAP_5_LOW_SBS_2x2 = 1089 PM_P2P_GO_5_HIGH_LL_LT_SAP_5_LOW_SBS_1x1, 1090 PM_P2P_CLI_24_LL_LT_SAP_DBS_1x1, 1091 PM_P2P_CLI_24_LL_LT_SAP_DBS_2x2 = PM_P2P_CLI_24_LL_LT_SAP_DBS_1x1, 1092 PM_P2P_CLI_5_LL_LT_SAP_MCC_1x1, 1093 PM_P2P_CLI_5_LL_LT_SAP_MCC_2x2 = PM_P2P_CLI_5_LL_LT_SAP_MCC_1x1, 1094 PM_P2P_CLI_5_LOW_LL_LT_SAP_5_HIGH_SBS_1x1, 1095 PM_P2P_CLI_5_LOW_LL_LT_SAP_5_HIGH_SBS_2x2 = 1096 PM_P2P_CLI_5_LOW_LL_LT_SAP_5_HIGH_SBS_1x1, 1097 PM_P2P_CLI_5_HIGH_LL_LT_SAP_5_LOW_SBS_1x1, 1098 PM_P2P_CLI_5_HIGH_LL_LT_SAP_5_LOW_SBS_2x2 = 1099 PM_P2P_CLI_5_HIGH_LL_LT_SAP_5_LOW_SBS_1x1, 1100 1101 PM_MAX_TWO_CONNECTION_MODE 1102 }; 1103 1104 #ifdef FEATURE_FOURTH_CONNECTION 1105 /** 1106 * enum policy_mgr_three_connection_mode - Combination of first three 1107 * connections type, concurrency state, band used. 1108 * 1109 * @PM_STA_SAP_SCC_24_SAP_5_DBS: STA & SAP connection on 2.4 GHZ, another 1110 * SAP on 5 GHZ 1111 * @PM_STA_SAP_SCC_5_SAP_24_DBS: STA & SAP connection on 5 GHZ, 1112 * another SAP on 2.4 GHZ 1113 * @PM_24_SCC_MCC_PLUS_5_DBS: ANY 2 link on 2.4 GHZ SCC/MCC mac and one link on 1114 * 5 GHZ doing DBS 1115 * @PM_STA_SAP_24_STA_5_DBS: STA & SAP connection on 2.4 GHZ SCC/MCC, 1116 * another STA on 5 GHZ 1117 * @PM_5_SCC_MCC_PLUS_24_DBS: ANY 2 link on 5 GHZ SCC/MCC mac and one link on 1118 * 2.4 GHZ doing DBS 1119 * @PM_STA_SAP_5_STA_24_DBS: STA & SAP connection on 5 GHZ SCC/MCC, 1120 * STA on 2.4 GHZ 1121 * @PM_STA_STA_5_SAP_24_DBS: STA & STA connection on 5 GHZ SCC/MCC, 1122 * SAP on 2.4 GHZ 1123 * @PM_NAN_DISC_SAP_SCC_24_NDI_5_DBS: NAN_DISC & SAP connection on 2.4 Ghz SCC, 1124 * NDI/NDP on 5 G 1125 * @PM_NAN_DISC_NDI_SCC_24_SAP_5_DBS: NAN_DISC & NDI/NDP connection on 2.4 Ghz 1126 * SCC, SAP on 5 G 1127 * @PM_SAP_NDI_SCC_5_NAN_DISC_24_DBS: SAP & NDI/NDP connection on 5 Ghz, 1128 * NAN_DISC on 24 Ghz 1129 * @PM_NAN_DISC_STA_24_NDI_5_DBS: STA and NAN Disc on 2.4Ghz and NDI on 5ghz DBS 1130 * @PM_NAN_DISC_NDI_24_STA_5_DBS: NDI and NAN Disc on 2.4Ghz and STA on 5ghz DBS 1131 * @PM_STA_NDI_5_NAN_DISC_24_DBS: STA, NDI on 5ghz and NAN Disc on 2.4Ghz DBS 1132 * @PM_STA_NDI_NAN_DISC_24_SMM: STA, NDI, NAN Disc all on 2.4ghz SMM 1133 * @PM_NAN_DISC_NDI_24_NDI_5_DBS: NDI and NAN Disc on 2.4Ghz and second NDI in 1134 * 5ghz DBS 1135 * @PM_NDI_NDI_5_NAN_DISC_24_DBS: Both NDI on 5ghz and NAN Disc on 2.4Ghz DBS 1136 * @PM_NDI_NDI_NAN_DISC_24_SMM: Both NDI, NAN Disc on 2.4ghz SMM 1137 * @PM_SAP_SAP_SCC_24_SAP_5_DBS: Both SAP on 2.4Ghz and another SAP on 5Ghz DBS 1138 * @PM_SAP_SAP_SCC_5_SAP_24_DBS: Both SAP on 5Ghz and another SAP on 2.4Ghz DBS 1139 * @PM_STA_STA_5_NAN_DISC_24_DBS: Both STA on 5Ghz and NAN Disc on 2.4Ghz DBS 1140 * @PM_NAN_DISC_24_STA_STA_5_DBS: NAN Disc on 2.4Ghz and both STA on 5Ghz DBS 1141 * @PM_STA_STA_24_NAN_DISC_24_SMM: Both STA on 2.4Ghz and NAN Disc on 2.4Ghz SMM 1142 * @PM_NAN_DISC_24_STA_STA_24_SMM: NAN Disc on 2.4Ghz and both STA on 2.4Ghz SMM 1143 * @PM_STA_24_STA_5_NAN_DISC_24_SMM: First STA on 2.4Ghz and second STA on 5Ghz 1144 * and NAN Disc on 2.4Ghz SMM 1145 * @PM_STA_24_STA_5_NAN_DISC_24_DBS: First STA on 2.4Ghz and second STA on 5Ghz 1146 * and NAN Disc on 2.4Ghz DBS 1147 * @PM_STA_5_STA_24_NAN_DISC_24_SMM: First STA on 5Ghz and second STA on 2.4Ghz 1148 * and NAN Disc on 2.4Ghz SMM 1149 * @PM_STA_5_STA_24_NAN_DISC_24_DBS: First STA on 5Ghz and second STA on 2.4Ghz 1150 * and NAN Disc on 2.4Ghz DBS 1151 * @PM_NAN_DISC_24_STA_5_STA_24_SMM: NAN Disc on 2.4Ghz and first STA on 5Ghz 1152 * and second STA on 2.4Ghz SMM 1153 * @PM_NAN_DISC_24_STA_5_STA_24_DBS: NAN Disc on 2.4Ghz and first STA on 5Ghz 1154 * and second STA on 2.4Ghz DBS 1155 * @PM_NAN_DISC_24_STA_24_STA_5_SMM: NAN Disc on 2.4Ghz and first STA on 2.4Ghz 1156 * and second STA on 5Ghz SMM 1157 * @PM_NAN_DISC_24_STA_24_STA_5_DBS: NAN Disc on 2.4Ghz and first STA on 2.4Ghz 1158 * and second STA on 5Ghz DBS 1159 * @PM_MCC_SCC_5G_HIGH_PLUS_5_LOW_SBS: ANY 2 link on 5 GHZ high mac 1160 * and one link on 5 GHZ low doing SBS 1161 * @PM_STA_24_SAP_5_HIGH_MCC_STA_5_LOW_SBS : First STA on 2.4 GHZ & SAP on high 1162 * 5 GHZ MCC on mac 0 and second STA on low 5 GHZ on mac1 doing SBS 1163 * @PM_STA_24_STA_5_HIGH_MCC_SAP_5_LOW_SBS : First STA on 2.4 GHZ & second STA 1164 * on high 5 GHZ MCC on mac 0 and SAP on high 5 GHZ on mac1 doing SBS 1165 * @PM_STA_SAP_5_HIGH_STA_5_LOW_SBS : First STA on high 5 GHZ & SAP on high 1166 * 5 GHZ SCC/MCC on mac0 and second STA on low 5 GHZ on mac1 doing SBS 1167 * @PM_STA_5_HIGH_SAP_24_MCC_STA_5_LOW_SBS : First STA on high 5 GHZ & SAP on 1168 * 2.4 GHZ MCC on mac0 and second STA on low 5 GHZ on mac1 doing SBS 1169 * @PM_STA_STA_5_HIGH_MCC_SAP_5_LOW_SBS : First STA on high 5 GHZ & Second STA 1170 * on high 5 GHZ MCC on mac0 and SAP on low 5 GHZ on mac1 doing SBS 1171 * @PM_STA_24_STA_5_MCC_SAP_5_HIGH_SBS: MLO STA 2+5/6 GHz, SAP on 5/6 GHz 1172 * high band, the current hw mode is SBS. 1173 * @PM_MCC_SCC_5G_LOW_PLUS_5_HIGH_SBS: Any 2 link on low 5 GHZ mac 1174 * and one link on high 5 GHZ freq doing SBS 1175 * @PM_STA_24_SAP_5_LOW_MCC_STA_5_HIGH_SBS : First STA on 2.4 GHZ & SAP on low 1176 * 5 GHZ MCC on mac 0 and second STA on high 5 GHZ on mac1 doing SBS 1177 * @PM_STA_24_STA_5_LOW_MCC_SAP_5_HIGH_SBS : First STA on 2.4 & second STA on 1178 * low 5G MCC on mac 0 and SAP on high 5g on mac1 doing SBS 1179 * @PM_STA_SAP_5_LOW_STA_5_HIGH_SBS : First STA on low 5 GHZ & SAP on low 5 GHZ 1180 * SCC/MCC on mac0 and second STA on high 5 GHZ on mac1 doing SBS 1181 * @PM_STA_5_LOW_SAP_24_MCC_STA_5_HIGH_SBS : First STA on low 5 GHZ & SAP on 1182 * 2.4 GHZ MCC on mac0 and second STA on high 5 GHZ on mac1 doing SBS 1183 * @PM_STA_STA_5_LOW_MCC_SAP_5_HIGH_SBS : First STA on high 5 GHZ & Second STA 1184 * on high 5 GHZ MCC on mac0 and SAP on low 5 GHZ on mac1 doing SBS 1185 * @PM_STA_24_STA_5_MCC_SAP_5_LOW_SBS: MLO STA 2+5/6 GHz, SAP on 5/6 GHz 1186 * low band, the current hw mode is SBS. 1187 * @PM_24_5_PLUS_5_LOW_N_HIGH_SHARE_SBS: 1188 * @PM_SAP_24_STA_5_STA_5_LOW_N_HIGH_SHARE_SBS: The 2.4 GHZ SAP creating MCC/SCC 1189 * with STA of low 5 GHZ or high 5 GHZ (dynamic SBS) on mac 0 and one STA on 1190 * high 5 GHZ or low 5 GHZ freq respectively on mac 1 doing SBS 1191 * @PM_STA_24_SAP_5_STA_5_LOW_N_HIGH_SHARE_SBS: The 2.4 GHZ STA creating MCC/SCC 1192 * with SAP of low 5 GHZ or high 5 GHZ (dynamic SBS) on mac 0 and one STA on 1193 * high 5 GHZ or low 5 GHZ freq respectively on mac 1 doing SBS 1194 * @PM_24_5_PLUS_5_LOW_OR_HIGH_SHARE_SBS: (not dynamic SBS) MLO STA 2+5/6 GHz, 1195 * SAP on 5/6 GHz, and target only support 2.4 GHz shared with 5 GHz low band 1196 * or 5 GHz high band but not both. 1197 * @PM_MAX_THREE_CONNECTION_MODE: Maximum enumeration 1198 */ 1199 enum policy_mgr_three_connection_mode { 1200 PM_STA_SAP_SCC_24_SAP_5_DBS, 1201 PM_STA_SAP_SCC_5_SAP_24_DBS, 1202 PM_24_SCC_MCC_PLUS_5_DBS, 1203 PM_STA_SAP_24_STA_5_DBS = PM_24_SCC_MCC_PLUS_5_DBS, 1204 PM_5_SCC_MCC_PLUS_24_DBS, 1205 PM_STA_SAP_5_STA_24_DBS = PM_5_SCC_MCC_PLUS_24_DBS, 1206 PM_STA_STA_5_SAP_24_DBS = PM_5_SCC_MCC_PLUS_24_DBS, 1207 PM_NAN_DISC_SAP_SCC_24_NDI_5_DBS, 1208 PM_NAN_DISC_NDI_SCC_24_SAP_5_DBS, 1209 PM_SAP_NDI_SCC_5_NAN_DISC_24_DBS, 1210 PM_NAN_DISC_STA_24_NDI_5_DBS, 1211 PM_NAN_DISC_NDI_24_STA_5_DBS, 1212 PM_STA_NDI_5_NAN_DISC_24_DBS, 1213 PM_STA_NDI_NAN_DISC_24_SMM, 1214 PM_NAN_DISC_NDI_24_NDI_5_DBS, 1215 PM_NDI_NDI_5_NAN_DISC_24_DBS, 1216 PM_NDI_NDI_NAN_DISC_24_SMM, 1217 PM_SAP_SAP_SCC_24_SAP_5_DBS, 1218 PM_SAP_SAP_SCC_5_SAP_24_DBS, 1219 PM_STA_STA_5_NAN_DISC_24_DBS, 1220 PM_NAN_DISC_24_STA_STA_5_DBS, 1221 PM_STA_STA_24_NAN_DISC_24_SMM, 1222 PM_NAN_DISC_24_STA_STA_24_SMM, 1223 PM_STA_24_STA_5_NAN_DISC_24_SMM, 1224 PM_STA_24_STA_5_NAN_DISC_24_DBS, 1225 PM_STA_5_STA_24_NAN_DISC_24_SMM, 1226 PM_STA_5_STA_24_NAN_DISC_24_DBS, 1227 PM_NAN_DISC_24_STA_5_STA_24_SMM, 1228 PM_NAN_DISC_24_STA_5_STA_24_DBS, 1229 PM_NAN_DISC_24_STA_24_STA_5_SMM, 1230 PM_NAN_DISC_24_STA_24_STA_5_DBS, 1231 PM_MCC_SCC_5G_HIGH_PLUS_5_LOW_SBS, 1232 PM_STA_24_SAP_5_HIGH_MCC_STA_5_LOW_SBS = 1233 PM_MCC_SCC_5G_HIGH_PLUS_5_LOW_SBS, 1234 PM_STA_24_STA_5_HIGH_MCC_SAP_5_LOW_SBS = 1235 PM_MCC_SCC_5G_HIGH_PLUS_5_LOW_SBS, 1236 PM_STA_SAP_5_HIGH_STA_5_LOW_SBS = 1237 PM_MCC_SCC_5G_HIGH_PLUS_5_LOW_SBS, 1238 PM_STA_5_HIGH_SAP_24_MCC_STA_5_LOW_SBS = 1239 PM_MCC_SCC_5G_HIGH_PLUS_5_LOW_SBS, 1240 PM_STA_STA_5_HIGH_MCC_SAP_5_LOW_SBS = 1241 PM_MCC_SCC_5G_HIGH_PLUS_5_LOW_SBS, 1242 PM_STA_24_STA_5_MCC_SAP_5_HIGH_SBS = 1243 PM_MCC_SCC_5G_HIGH_PLUS_5_LOW_SBS, 1244 PM_MCC_SCC_5G_LOW_PLUS_5_HIGH_SBS, 1245 PM_STA_24_SAP_5_LOW_MCC_STA_5_HIGH_SBS = 1246 PM_MCC_SCC_5G_LOW_PLUS_5_HIGH_SBS, 1247 PM_STA_24_STA_5_LOW_MCC_SAP_5_HIGH_SBS = 1248 PM_MCC_SCC_5G_LOW_PLUS_5_HIGH_SBS, 1249 PM_STA_SAP_5_LOW_STA_5_HIGH_SBS = 1250 PM_MCC_SCC_5G_LOW_PLUS_5_HIGH_SBS, 1251 PM_STA_5_LOW_SAP_24_MCC_STA_5_HIGH_SBS = 1252 PM_MCC_SCC_5G_LOW_PLUS_5_HIGH_SBS, 1253 PM_STA_STA_5_LOW_MCC_SAP_5_HIGH_SBS = 1254 PM_MCC_SCC_5G_LOW_PLUS_5_HIGH_SBS, 1255 PM_STA_24_STA_5_MCC_SAP_5_LOW_SBS = 1256 PM_MCC_SCC_5G_LOW_PLUS_5_HIGH_SBS, 1257 PM_24_5_PLUS_5_LOW_N_HIGH_SHARE_SBS, 1258 PM_SAP_24_STA_5_STA_5_LOW_N_HIGH_SHARE_SBS = 1259 PM_24_5_PLUS_5_LOW_N_HIGH_SHARE_SBS, 1260 PM_STA_24_SAP_5_STA_5_LOW_N_HIGH_SHARE_SBS = 1261 PM_24_5_PLUS_5_LOW_N_HIGH_SHARE_SBS, 1262 PM_24_5_PLUS_5_LOW_OR_HIGH_SHARE_SBS, 1263 1264 PM_MAX_THREE_CONNECTION_MODE, 1265 }; 1266 #endif 1267 1268 /** 1269 * enum policy_mgr_conc_next_action - actions to be taken on old 1270 * connections. 1271 * 1272 * @PM_NOP: No action 1273 * @PM_DBS: switch to DBS mode 1274 * @PM_DBS_DOWNGRADE: switch to DBS mode & downgrade to 1x1 1275 * @PM_DBS_UPGRADE: switch to DBS mode & upgrade to 2x2 1276 * @PM_SINGLE_MAC: switch to MCC/SCC mode 1277 * @PM_SINGLE_MAC_UPGRADE: switch to MCC/SCC mode & upgrade to 2x2 1278 * @PM_SBS: switch to SBS mode 1279 * @PM_SBS_DOWNGRADE: switch to SBS mode & downgrade to 1x1 1280 * @PM_DOWNGRADE: downgrade to 1x1 1281 * @PM_UPGRADE: upgrade to 2x2 1282 * @PM_DBS1: switch to DBS 1 1283 * @PM_DBS1_DOWNGRADE: downgrade 2G beaconing entity to 1x1 and switch to DBS1. 1284 * @PM_DBS2: switch to DBS 2 1285 * @PM_DBS2_DOWNGRADE: downgrade 5G beaconing entity to 1x1 and switch to DBS2. 1286 * @PM_UPGRADE_5G: upgrade 5g beaconing entity to 2x2. 1287 * @PM_UPGRADE_2G: upgrade 2g beaconing entity to 2x2. 1288 * @PM_DOWNGRADE_BW: Downgrade SAP bandwidth. 1289 * @PM_UPGRADE_BW: Upgrade SAP bandwidth. 1290 * @PM_MAX_CONC_NEXT_ACTION: Max place holder 1291 * 1292 * These are generic IDs that identify the various roles 1293 * in the software system 1294 */ 1295 enum policy_mgr_conc_next_action { 1296 PM_NOP = 0, 1297 PM_DBS, 1298 PM_DBS_DOWNGRADE, 1299 PM_DBS_UPGRADE, 1300 PM_SINGLE_MAC, 1301 PM_SINGLE_MAC_UPGRADE, 1302 PM_SBS, 1303 PM_SBS_DOWNGRADE, 1304 PM_DOWNGRADE, 1305 PM_UPGRADE, 1306 PM_DBS1, 1307 PM_DBS1_DOWNGRADE, 1308 PM_DBS2, 1309 PM_DBS2_DOWNGRADE, 1310 PM_UPGRADE_5G, 1311 PM_UPGRADE_2G, 1312 PM_DOWNGRADE_BW, 1313 PM_UPGRADE_BW, 1314 1315 PM_MAX_CONC_NEXT_ACTION 1316 }; 1317 1318 /** 1319 * enum policy_mgr_band - wifi band. 1320 * 1321 * @POLICY_MGR_BAND_24: 2.4 Ghz band 1322 * @POLICY_MGR_BAND_5: 5 Ghz band 1323 * @POLICY_MGR_ANY: to specify all band 1324 * @POLICY_MGR_MAX_BAND: Max place holder 1325 * 1326 * These are generic IDs that identify the various roles 1327 * in the software system 1328 */ 1329 enum policy_mgr_band { 1330 POLICY_MGR_BAND_24 = 0, 1331 POLICY_MGR_BAND_5, 1332 POLICY_MGR_ANY, 1333 POLICY_MGR_MAX_BAND = POLICY_MGR_ANY, 1334 }; 1335 1336 /** 1337 * enum policy_mgr_conn_update_reason: Reason for conc connection update 1338 * @POLICY_MGR_UPDATE_REASON_TIMER_START: This is to decide whether to start the 1339 * timer or not 1340 * @POLICY_MGR_UPDATE_REASON_SET_OPER_CHAN: Set probable operating channel 1341 * @POLICY_MGR_UPDATE_REASON_START_AP: Start AP 1342 * @POLICY_MGR_UPDATE_REASON_NORMAL_STA: Connection to Normal STA 1343 * @POLICY_MGR_UPDATE_REASON_OPPORTUNISTIC: Opportunistic HW mode update 1344 * @POLICY_MGR_UPDATE_REASON_NSS_UPDATE: NSS update 1345 * @POLICY_MGR_UPDATE_REASON_AFTER_CHANNEL_SWITCH: After Channel switch 1346 * @POLICY_MGR_UPDATE_REASON_CHANNEL_SWITCH_STA: Before Channel switch for STA 1347 * @POLICY_MGR_UPDATE_REASON_CHANNEL_SWITCH_SAP: Before Channel switch for SAP 1348 * @POLICY_MGR_UPDATE_REASON_PRE_CAC: Pre-CAC 1349 * @POLICY_MGR_UPDATE_REASON_PRI_VDEV_CHANGE: In Dual DBS HW, if the vdev based 1350 * 2x2 preference enabled, the vdev down may cause prioritized active 1351 * vdev change, then DBS hw mode may needs to change from one DBS mode 1352 * to the other DBS mode. This reason code indicates such condition. 1353 * @POLICY_MGR_UPDATE_REASON_NAN_DISCOVERY: NAN Discovery related 1354 * @POLICY_MGR_UPDATE_REASON_NDP_UPDATE: NAN Datapath related update 1355 * @POLICY_MGR_UPDATE_REASON_LFR2_ROAM: LFR2 Roaming 1356 * @POLICY_MGR_UPDATE_REASON_STA_CONNECT: STA/CLI connection to peer 1357 * @POLICY_MGR_UPDATE_REASON_LFR3_ROAM: LFR3 Roaming 1358 * @POLICY_MGR_UPDATE_REASON_MAX: Reason code to indicate that it's not a 1359 * valid operation, should always be maintained at the end of enum. 1360 */ 1361 enum policy_mgr_conn_update_reason { 1362 POLICY_MGR_UPDATE_REASON_TIMER_START, 1363 POLICY_MGR_UPDATE_REASON_SET_OPER_CHAN, 1364 POLICY_MGR_UPDATE_REASON_START_AP, 1365 POLICY_MGR_UPDATE_REASON_NORMAL_STA, 1366 POLICY_MGR_UPDATE_REASON_OPPORTUNISTIC, 1367 POLICY_MGR_UPDATE_REASON_NSS_UPDATE, 1368 POLICY_MGR_UPDATE_REASON_AFTER_CHANNEL_SWITCH, 1369 POLICY_MGR_UPDATE_REASON_CHANNEL_SWITCH_STA, 1370 POLICY_MGR_UPDATE_REASON_CHANNEL_SWITCH_SAP, 1371 POLICY_MGR_UPDATE_REASON_PRE_CAC, 1372 POLICY_MGR_UPDATE_REASON_PRI_VDEV_CHANGE, 1373 POLICY_MGR_UPDATE_REASON_NAN_DISCOVERY, 1374 POLICY_MGR_UPDATE_REASON_NDP_UPDATE, 1375 POLICY_MGR_UPDATE_REASON_LFR2_ROAM, 1376 POLICY_MGR_UPDATE_REASON_STA_CONNECT, 1377 POLICY_MGR_UPDATE_REASON_LFR3_ROAM, 1378 POLICY_MGR_UPDATE_REASON_MAX, 1379 }; 1380 1381 /** 1382 * enum hw_mode_bandwidth - bandwidth of wifi channel. 1383 * @HW_MODE_BW_NONE: no bandwidth configured 1384 * @HW_MODE_5_MHZ: 5 Mhz bandwidth 1385 * @HW_MODE_10_MHZ: 10 Mhz bandwidth 1386 * @HW_MODE_20_MHZ: 20 Mhz bandwidth 1387 * @HW_MODE_40_MHZ: 40 Mhz bandwidth 1388 * @HW_MODE_80_MHZ: 80 Mhz bandwidth 1389 * @HW_MODE_80_PLUS_80_MHZ: 80 Mhz plus 80 Mhz bandwidth 1390 * @HW_MODE_160_MHZ: 160 Mhz bandwidth 1391 * @HW_MODE_320_MHZ: 320 Mhz bandwidth 1392 * @HW_MODE_MAX_BANDWIDTH: Max place holder 1393 * 1394 * These are generic IDs that identify the various roles 1395 * in the software system 1396 */ 1397 enum hw_mode_bandwidth { 1398 HW_MODE_BW_NONE, 1399 HW_MODE_5_MHZ, 1400 HW_MODE_10_MHZ, 1401 HW_MODE_20_MHZ, 1402 HW_MODE_40_MHZ, 1403 HW_MODE_80_MHZ, 1404 HW_MODE_80_PLUS_80_MHZ, 1405 HW_MODE_160_MHZ, 1406 HW_MODE_320_MHZ, 1407 HW_MODE_MAX_BANDWIDTH 1408 }; 1409 1410 /** 1411 * enum set_hw_mode_status - Status of set HW mode command 1412 * @SET_HW_MODE_STATUS_OK: command successful 1413 * @SET_HW_MODE_STATUS_EINVAL: Requested invalid hw_mode 1414 * @SET_HW_MODE_STATUS_ECANCELED: HW mode change cancelled 1415 * @SET_HW_MODE_STATUS_ENOTSUP: HW mode not supported 1416 * @SET_HW_MODE_STATUS_EHARDWARE: HW mode change prevented by hardware 1417 * @SET_HW_MODE_STATUS_EPENDING: HW mode change is pending 1418 * @SET_HW_MODE_STATUS_ECOEX: HW mode change conflict with Coex 1419 * @SET_HW_MODE_STATUS_ALREADY: Requested hw mode is already applied to FW. 1420 */ 1421 enum set_hw_mode_status { 1422 SET_HW_MODE_STATUS_OK, 1423 SET_HW_MODE_STATUS_EINVAL, 1424 SET_HW_MODE_STATUS_ECANCELED, 1425 SET_HW_MODE_STATUS_ENOTSUP, 1426 SET_HW_MODE_STATUS_EHARDWARE, 1427 SET_HW_MODE_STATUS_EPENDING, 1428 SET_HW_MODE_STATUS_ECOEX, 1429 SET_HW_MODE_STATUS_ALREADY, 1430 }; 1431 1432 typedef void (*dual_mac_cb)(enum set_hw_mode_status status, 1433 uint32_t scan_config, 1434 uint32_t fw_mode_config); 1435 /** 1436 * enum policy_mgr_hw_mode_change - identify the HW mode switching to. 1437 * 1438 * @POLICY_MGR_HW_MODE_NOT_IN_PROGRESS: HW mode change not in progress 1439 * @POLICY_MGR_SMM_IN_PROGRESS: switching to SMM mode 1440 * @POLICY_MGR_DBS_IN_PROGRESS: switching to DBS mode 1441 * @POLICY_MGR_SBS_IN_PROGRESS: switching to SBS mode 1442 * 1443 * These are generic IDs that identify the various roles 1444 * in the software system 1445 */ 1446 enum policy_mgr_hw_mode_change { 1447 POLICY_MGR_HW_MODE_NOT_IN_PROGRESS = 0, 1448 POLICY_MGR_SMM_IN_PROGRESS, 1449 POLICY_MGR_DBS_IN_PROGRESS, 1450 POLICY_MGR_SBS_IN_PROGRESS 1451 }; 1452 1453 /** 1454 * enum dbs_support - structure to define INI values and their meaning 1455 * 1456 * @ENABLE_DBS_CXN_AND_SCAN: Enable DBS support for connection and scan 1457 * @DISABLE_DBS_CXN_AND_SCAN: Disable DBS support for connection and scan 1458 * @DISABLE_DBS_CXN_AND_ENABLE_DBS_SCAN: disable dbs support for 1459 * connection but keep dbs support for scan 1460 * @DISABLE_DBS_CXN_AND_ENABLE_DBS_SCAN_WITH_ASYNC_SCAN_OFF: disable dbs support 1461 * for connection but keep dbs for scan but switch off the async scan 1462 * @ENABLE_DBS_CXN_AND_ENABLE_SCAN_WITH_ASYNC_SCAN_OFF: enable dbs support for 1463 * connection and scan but switch off the async scan 1464 * @ENABLE_DBS_CXN_AND_DISABLE_DBS_SCAN: Enable DBS support for connection and 1465 * disable DBS support for scan 1466 * @ENABLE_DBS_CXN_AND_DISABLE_SIMULTANEOUS_SCAN: Enable DBS 1467 * support for connection and disable simultaneous scan from 1468 * upper layer (DBS scan remains enabled in FW) 1469 */ 1470 enum dbs_support { 1471 ENABLE_DBS_CXN_AND_SCAN, 1472 DISABLE_DBS_CXN_AND_SCAN, 1473 DISABLE_DBS_CXN_AND_ENABLE_DBS_SCAN, 1474 DISABLE_DBS_CXN_AND_ENABLE_DBS_SCAN_WITH_ASYNC_SCAN_OFF, 1475 ENABLE_DBS_CXN_AND_ENABLE_SCAN_WITH_ASYNC_SCAN_OFF, 1476 ENABLE_DBS_CXN_AND_DISABLE_DBS_SCAN, 1477 ENABLE_DBS_CXN_AND_DISABLE_SIMULTANEOUS_SCAN, 1478 }; 1479 1480 /** 1481 * enum conn_6ghz_flag - structure to define connection 6ghz capable info 1482 * in policy mgr conn info struct 1483 * 1484 * @CONN_6GHZ_FLAG_VALID: The 6ghz flag is valid (has been initialized) 1485 * @CONN_6GHZ_FLAG_ACS_OR_USR_ALLOWED: AP is configured in 6ghz band capable 1486 * by user: 1487 * a. ACS channel range includes 6ghz. 1488 * b. SAP is started in 6ghz fix channel. 1489 * @CONN_6GHZ_FLAG_SECURITY_ALLOWED: AP has security mode which is permitted in 1490 * 6ghz band. 1491 * @CONN_6GHZ_FLAG_NO_LEGACY_CLIENT: AP has no legacy client connected 1492 */ 1493 enum conn_6ghz_flag { 1494 CONN_6GHZ_FLAG_VALID = 0x0001, 1495 CONN_6GHZ_FLAG_ACS_OR_USR_ALLOWED = 0x0002, 1496 CONN_6GHZ_FLAG_SECURITY_ALLOWED = 0x0004, 1497 CONN_6GHZ_FLAG_NO_LEGACY_CLIENT = 0x0008, 1498 }; 1499 1500 #ifdef WLAN_FEATURE_AFC_DCS_SKIP_ACS_RANGE 1501 /* To support DCS to 6 Ghz channel when AFC response receive */ 1502 #define CONN_6GHZ_CAPABLE (CONN_6GHZ_FLAG_VALID | \ 1503 CONN_6GHZ_FLAG_SECURITY_ALLOWED | \ 1504 CONN_6GHZ_FLAG_NO_LEGACY_CLIENT) 1505 #else 1506 #define CONN_6GHZ_CAPABLE (CONN_6GHZ_FLAG_VALID | \ 1507 CONN_6GHZ_FLAG_ACS_OR_USR_ALLOWED | \ 1508 CONN_6GHZ_FLAG_SECURITY_ALLOWED | \ 1509 CONN_6GHZ_FLAG_NO_LEGACY_CLIENT) 1510 #endif 1511 1512 /** 1513 * struct policy_mgr_conc_connection_info - information of all existing 1514 * connections in the wlan system 1515 * 1516 * @mode: connection type 1517 * @freq: Channel frequency 1518 * @bw: channel bandwidth used for the connection 1519 * @mac: The HW mac it is running 1520 * @chain_mask: The original capability advertised by HW 1521 * @original_nss: nss negotiated at connection time 1522 * @vdev_id: vdev id of the connection 1523 * @in_use: if the table entry is active 1524 * @ch_flagext: Channel extension flags. 1525 * @conn_6ghz_flag: connection 6ghz capable flags 1526 */ 1527 struct policy_mgr_conc_connection_info { 1528 enum policy_mgr_con_mode mode; 1529 uint32_t freq; 1530 enum hw_mode_bandwidth bw; 1531 uint8_t mac; 1532 enum policy_mgr_chain_mode chain_mask; 1533 uint32_t original_nss; 1534 uint32_t vdev_id; 1535 bool in_use; 1536 uint16_t ch_flagext; 1537 enum conn_6ghz_flag conn_6ghz_flag; 1538 }; 1539 1540 #ifdef WLAN_FEATURE_11BE_MLO 1541 /** 1542 * struct policy_mgr_disabled_ml_link_info - information of all existing 1543 * disabled ml link 1544 * @in_use: if the table entry is active 1545 * @mode: connection type 1546 * @freq: Channel frequency 1547 * @vdev_id: vdev id of the connection 1548 */ 1549 struct policy_mgr_disabled_ml_link_info { 1550 bool in_use; 1551 enum policy_mgr_con_mode mode; 1552 qdf_freq_t freq; 1553 uint8_t vdev_id; 1554 }; 1555 #endif 1556 1557 /** 1558 * struct policy_mgr_hw_mode_params - HW mode params 1559 * @mac0_tx_ss: MAC0 Tx spatial stream 1560 * @mac0_rx_ss: MAC0 Rx spatial stream 1561 * @mac1_tx_ss: MAC1 Tx spatial stream 1562 * @mac1_rx_ss: MAC1 Rx spatial stream 1563 * @mac0_bw: MAC0 bandwidth 1564 * @mac1_bw: MAC1 bandwidth 1565 * @mac0_band_cap: mac0 band (5g/2g) capability 1566 * @dbs_cap: DBS capabality 1567 * @agile_dfs_cap: Agile DFS capabality 1568 * @sbs_cap: SBS capability 1569 * @emlsr_cap: eMLSR capability 1570 * @action_type: for dbs mode, the field indicates the "Action type" to be 1571 * used to switch to the mode. To help the hw mode validation. 1572 */ 1573 struct policy_mgr_hw_mode_params { 1574 uint8_t mac0_tx_ss; 1575 uint8_t mac0_rx_ss; 1576 uint8_t mac1_tx_ss; 1577 uint8_t mac1_rx_ss; 1578 uint8_t mac0_bw; 1579 uint8_t mac1_bw; 1580 uint8_t mac0_band_cap; 1581 uint8_t dbs_cap; 1582 uint8_t agile_dfs_cap; 1583 uint8_t sbs_cap; 1584 uint8_t emlsr_cap; 1585 enum policy_mgr_conc_next_action action_type; 1586 }; 1587 1588 /** 1589 * struct policy_mgr_dual_mac_config - Dual MAC configuration 1590 * @scan_config: Scan configuration 1591 * @fw_mode_config: FW mode configuration 1592 * @set_dual_mac_cb: Callback function to be executed on response to the command 1593 */ 1594 struct policy_mgr_dual_mac_config { 1595 uint32_t scan_config; 1596 uint32_t fw_mode_config; 1597 dual_mac_cb set_dual_mac_cb; 1598 }; 1599 1600 /** 1601 * struct policy_mgr_hw_mode - Format of set HW mode 1602 * @hw_mode_index: Index of HW mode to be set 1603 * @set_hw_mode_cb: HDD set HW mode callback 1604 * @reason: Reason for HW mode change 1605 * @session_id: Session id 1606 * @next_action: next action to happen at policy mgr 1607 * @action: current hw change action to be done 1608 * @context: psoc context 1609 * @request_id: Request id provided by the requester, can be used while 1610 * calling callback to the requester 1611 */ 1612 struct policy_mgr_hw_mode { 1613 uint32_t hw_mode_index; 1614 void *set_hw_mode_cb; 1615 enum policy_mgr_conn_update_reason reason; 1616 uint32_t session_id; 1617 uint8_t next_action; 1618 enum policy_mgr_conc_next_action action; 1619 struct wlan_objmgr_psoc *context; 1620 uint32_t request_id; 1621 }; 1622 1623 /** 1624 * struct policy_mgr_pcl_list - Format of PCL 1625 * @pcl_list: List of preferred channels 1626 * @weight_list: Weights of the PCL 1627 * @pcl_len: Number of channels in the PCL 1628 */ 1629 struct policy_mgr_pcl_list { 1630 uint32_t pcl_list[NUM_CHANNELS]; 1631 uint8_t weight_list[NUM_CHANNELS]; 1632 uint32_t pcl_len; 1633 }; 1634 1635 /** 1636 * struct policy_mgr_pcl_chan_weights - Params to get the valid weighed list 1637 * @pcl_list: Preferred channel list already sorted in the order of preference 1638 * @pcl_len: Length of the PCL 1639 * @saved_chan_list: Valid channel list updated as part of 1640 * WMA_UPDATE_CHAN_LIST_REQ 1641 * @saved_num_chan: Length of the valid channel list 1642 * @weighed_valid_list: Weights of the valid channel list. This will have one 1643 * to one mapping with valid_chan_list. FW expects channel order and size to be 1644 * as per the list provided in WMI_SCAN_CHAN_LIST_CMDID. 1645 * @weight_list: Weights assigned by policy manager 1646 */ 1647 struct policy_mgr_pcl_chan_weights { 1648 uint32_t pcl_list[NUM_CHANNELS]; 1649 uint32_t pcl_len; 1650 uint32_t saved_chan_list[NUM_CHANNELS]; 1651 uint32_t saved_num_chan; 1652 uint8_t weighed_valid_list[NUM_CHANNELS]; 1653 uint8_t weight_list[NUM_CHANNELS]; 1654 }; 1655 1656 /** 1657 * struct policy_mgr_vdev_entry_info - vdev related param to be 1658 * used by policy manager 1659 * @type: type 1660 * @sub_type: sub type 1661 * @mhz: channel frequency in MHz 1662 * @chan_width: channel bandwidth 1663 * @mac_id: the mac on which vdev is on 1664 * @ch_flagext: Channel extension flags. 1665 */ 1666 struct policy_mgr_vdev_entry_info { 1667 uint32_t type; 1668 uint32_t sub_type; 1669 uint32_t mhz; 1670 uint32_t chan_width; 1671 uint32_t mac_id; 1672 uint16_t ch_flagext; 1673 }; 1674 1675 /** 1676 * struct policy_mgr_freq_range - hw mode freq range for the pdev 1677 * @low_2ghz_freq: lower 2.4GHz channels 1678 * @high_2ghz_freq: higher 2.4 GHz channels 1679 * @low_5ghz_freq: lower 5 GHz channels 1680 * @high_5ghz_freq: higher 5 GHz channels 1681 */ 1682 struct policy_mgr_freq_range { 1683 qdf_freq_t low_2ghz_freq; 1684 qdf_freq_t high_2ghz_freq; 1685 qdf_freq_t low_5ghz_freq; 1686 qdf_freq_t high_5ghz_freq; 1687 }; 1688 1689 /** 1690 * enum policy_mgr_mode - enum for host mode 1691 * @MODE_SMM: Single mac mode 1692 * @MODE_DBS: DBS mode 1693 * @MODE_SBS: SBS mode with either high share or low share 1694 * @MODE_SBS_UPPER_SHARE: Higher 5Ghz shared with 2.4Ghz 1695 * @MODE_SBS_LOWER_SHARE: LOWER 5Ghz shared with 2.4Ghz 1696 * @MODE_EMLSR: eMLSR mode 1697 * @MODE_EMLSR_SINGLE: eMLSR single mode 1698 * @MODE_EMLSR_SPLIT: eMLSR split mode 1699 * @MODE_HW_MAX: MAX 1700 */ 1701 enum policy_mgr_mode { 1702 MODE_SMM, 1703 MODE_DBS, 1704 MODE_SBS, 1705 MODE_SBS_UPPER_SHARE, 1706 MODE_SBS_LOWER_SHARE, 1707 MODE_EMLSR, 1708 MODE_EMLSR_SINGLE, 1709 MODE_EMLSR_SPLIT, 1710 MODE_HW_MAX, 1711 }; 1712 1713 /** 1714 * struct dbs_hw_mode_info - WLAN_DBS_HW_MODES_TLV Format 1715 * @hw_mode_list: WLAN_DBS_HW_MODE_LIST entries 1716 * @sbs_lower_band_end_freq: value with which range will be divided 1717 * @freq_range_caps: Initial capability and range for different modes for both 1718 * pdev 1719 * @cur_mac_freq_range: Current freq range for both pdev, this can be used to 1720 * reject if 2 home channels on a MAC, depending on opmode 1721 * and current HW mode. 1722 */ 1723 struct dbs_hw_mode_info { 1724 uint64_t *hw_mode_list; 1725 qdf_freq_t sbs_lower_band_end_freq; 1726 struct policy_mgr_freq_range freq_range_caps[MODE_HW_MAX][MAX_MAC]; 1727 struct policy_mgr_freq_range cur_mac_freq_range[MAX_MAC]; 1728 }; 1729 1730 /** 1731 * struct dual_mac_config - Dual MAC configurations 1732 * @prev_scan_config: Previous scan configuration 1733 * @prev_fw_mode_config: Previous FW mode configuration 1734 * @cur_scan_config: Current scan configuration 1735 * @cur_fw_mode_config: Current FW mode configuration 1736 * @req_scan_config: Requested scan configuration 1737 * @req_fw_mode_config: Requested FW mode configuration 1738 */ 1739 struct dual_mac_config { 1740 uint32_t prev_scan_config; 1741 uint32_t prev_fw_mode_config; 1742 uint32_t cur_scan_config; 1743 uint32_t cur_fw_mode_config; 1744 uint32_t req_scan_config; 1745 uint32_t req_fw_mode_config; 1746 }; 1747 1748 /** 1749 * enum policy_mgr_pri_id - vdev type priority id 1750 * @PM_STA_PRI_ID: station vdev type priority id 1751 * @PM_SAP_PRI_ID: sap vdev type priority id 1752 * @PM_P2P_GO_PRI_ID: p2p go vdev type priority id 1753 * @PM_P2P_CLI_PRI_ID: p2p cli vdev type priority id 1754 * @PM_MAX_PRI_ID: vdev type priority id max value 1755 */ 1756 enum policy_mgr_pri_id { 1757 PM_STA_PRI_ID = 1, 1758 PM_SAP_PRI_ID, 1759 PM_P2P_GO_PRI_ID, 1760 PM_P2P_CLI_PRI_ID, 1761 PM_MAX_PRI_ID = 0xF, 1762 }; 1763 1764 #define PM_GET_BAND_PREFERRED(_policy_) ((_policy_) & 0x1) 1765 #define PM_GET_VDEV_PRIORITY_ENABLED(_policy_) (((_policy_) & 0x2) >> 1) 1766 1767 /** 1768 * struct policy_mgr_user_cfg - Policy manager user config variables 1769 * @enable2x2: 2x2 chain mask user config 1770 * @sub_20_mhz_enabled: Is 5 or 10 Mhz enabled 1771 */ 1772 struct policy_mgr_user_cfg { 1773 bool enable2x2; 1774 bool sub_20_mhz_enabled; 1775 }; 1776 1777 /** 1778 * struct dbs_bw - Max BW supported in DBS mode 1779 * @mac0_bw: BW of MAC0 1780 * @mac1_bw: BW of MAC1 1781 */ 1782 struct dbs_bw { 1783 enum hw_mode_bandwidth mac0_bw; 1784 enum hw_mode_bandwidth mac1_bw; 1785 }; 1786 1787 /** 1788 * struct dbs_nss - Number of spatial streams in DBS mode 1789 * @mac0_ss: Number of spatial streams on MAC0 1790 * @mac1_ss: Number of spatial streams on MAC1 1791 * @single_mac0_band_cap: Mac0 band capability for single mac hw mode 1792 */ 1793 struct dbs_nss { 1794 enum hw_mode_ss_config mac0_ss; 1795 enum hw_mode_ss_config mac1_ss; 1796 uint32_t single_mac0_band_cap; 1797 }; 1798 1799 /* 1800 * Max radio combination numbers 1801 */ 1802 #define MAX_RADIO_COMBINATION 16 1803 1804 /** 1805 * struct radio_combination - Radio combination 1806 * @hw_mode: hw mode type 1807 * @band_mask: band support type for each mac 1808 * @antenna: antenna support for each mac 1809 */ 1810 struct radio_combination { 1811 enum policy_mgr_mode hw_mode; 1812 uint8_t band_mask[MAX_MAC]; 1813 uint8_t antenna[MAX_MAC]; 1814 }; 1815 1816 /** 1817 * struct connection_info - connection information 1818 * @mac_id: The HW mac it is running 1819 * @vdev_id: vdev id 1820 * @channel: channel of the connection 1821 * @ch_freq: channel freq in Mhz 1822 */ 1823 struct connection_info { 1824 uint8_t mac_id; 1825 uint8_t vdev_id; 1826 uint8_t channel; 1827 uint32_t ch_freq; 1828 }; 1829 1830 /** 1831 * struct go_plus_go_force_scc - structure to hold p2p go 1832 * params for forcescc restart 1833 * 1834 * @vdev_id: vdev id of first p2p go which needs to do csa 1835 * @ch_freq: ch freq of curr p2p go 1836 * @ch_width: ch width of curr p2p go 1837 */ 1838 struct go_plus_go_force_scc { 1839 uint8_t vdev_id; 1840 uint32_t ch_freq; 1841 uint32_t ch_width; 1842 }; 1843 1844 /** 1845 * struct sap_plus_go_force_scc - structure to hold 1846 * params for forcescc restart in sap plus go 1847 * 1848 * @reason: channel change reason code 1849 * @initiator_vdev_id: the first interface ID to trigger CSA 1850 * @responder_vdev_id: the second interface ID to follow CSA 1851 */ 1852 struct sap_plus_go_force_scc { 1853 enum sap_csa_reason_code reason; 1854 uint8_t initiator_vdev_id; 1855 uint8_t responder_vdev_id; 1856 }; 1857 1858 /** 1859 * struct sta_ap_intf_check_work_ctx - sta_ap_intf_check_work 1860 * related info 1861 * @psoc: pointer to PSOC object information 1862 * @go_plus_go_force_scc: structure to hold params of 1863 * curr and first p2p go ctx 1864 * @sap_plus_go_force_scc: sap p2p force SCC ctx 1865 * @nan_force_scc_in_progress: NAN force scc in progress 1866 */ 1867 struct sta_ap_intf_check_work_ctx { 1868 struct wlan_objmgr_psoc *psoc; 1869 struct go_plus_go_force_scc go_plus_go_force_scc; 1870 struct sap_plus_go_force_scc sap_plus_go_force_scc; 1871 uint8_t nan_force_scc_in_progress; 1872 }; 1873 1874 /** 1875 * union conc_ext_flag - extended flags for concurrency check 1876 * 1877 * @mlo: the new connection is MLO 1878 * @mlo_link_assoc_connected: the new connection is secondary MLO link and 1879 * the corresponding assoc link is connected 1880 * @value: uint32 value for extended flags 1881 */ 1882 union conc_ext_flag { 1883 struct { 1884 uint32_t mlo: 1; 1885 uint32_t mlo_link_assoc_connected: 1; 1886 }; 1887 1888 uint32_t value; 1889 }; 1890 1891 /** 1892 * enum indoor_conc_update_type - Indoor concurrency update type 1893 * @CONNECT: On a new STA connection 1894 * @DISCONNECT_WITHOUT_CONCURRENCY: On a STA disconnection with no active 1895 * sessions on the same frequency 1896 * @DISCONNECT_WITH_CONCURRENCY: On a STA disconnection with an active 1897 * session on the same frequency 1898 * @SWITCH_WITH_CONCURRENCY: On a STA roam or CSA to a different channel 1899 * with a concurrent SAP on previous frequency 1900 * @SWITCH_WITHOUT_CONCURRENCY: On a STA roam or CSA to a different channel 1901 * without any concurrent SAP on previous frequency 1902 */ 1903 enum indoor_conc_update_type { 1904 CONNECT, 1905 DISCONNECT_WITHOUT_CONCURRENCY, 1906 DISCONNECT_WITH_CONCURRENCY, 1907 SWITCH_WITHOUT_CONCURRENCY, 1908 SWITCH_WITH_CONCURRENCY, 1909 }; 1910 1911 #endif /* __WLAN_POLICY_MGR_PUBLIC_STRUCT_H */ 1912