1 /* 2 * Copyright (c) 2016-2018 The Linux Foundation. All rights reserved. 3 * 4 * Permission to use, copy, modify, and/or distribute this software for 5 * any purpose with or without fee is hereby granted, provided that the 6 * above copyright notice and this permission notice appear in all 7 * copies. 8 * 9 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL 10 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED 11 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE 12 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL 13 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR 14 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER 15 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 16 * PERFORMANCE OF THIS SOFTWARE. 17 */ 18 19 #ifndef _WLAN_MGMT_TXRX_UTILS_API_H_ 20 #define _WLAN_MGMT_TXRX_UTILS_API_H_ 21 22 /** 23 * DOC: wlan_mgmt_txrx_utils_api.h 24 * 25 * management tx/rx layer public API and structures 26 * for umac converged components. 27 * 28 */ 29 30 #include "wlan_objmgr_cmn.h" 31 #include "qdf_nbuf.h" 32 33 #ifdef CONFIG_MCL 34 #define MGMT_DESC_POOL_MAX 64 35 #else 36 #define MGMT_DESC_POOL_MAX 512 37 #endif 38 39 #define mgmt_txrx_alert(params...) \ 40 QDF_TRACE_FATAL(QDF_MODULE_ID_MGMT_TXRX, params) 41 #define mgmt_txrx_err(params...) \ 42 QDF_TRACE_ERROR(QDF_MODULE_ID_MGMT_TXRX, params) 43 #define mgmt_txrx_warn(params...) \ 44 QDF_TRACE_WARN(QDF_MODULE_ID_MGMT_TXRX, params) 45 #define mgmt_txrx_notice(params...) \ 46 QDF_TRACE_INFO(QDF_MODULE_ID_MGMT_TXRX, params) 47 #define mgmt_txrx_info(params...) \ 48 QDF_TRACE_INFO(QDF_MODULE_ID_MGMT_TXRX, params) 49 #define mgmt_txrx_debug(params...) \ 50 QDF_TRACE_DEBUG(QDF_MODULE_ID_MGMT_TXRX, params) 51 52 /** 53 * enum mgmt_subtype - enum of mgmt. subtypes 54 * @MGMT_SUBTYPE_ASSOC_REQ: association request frame 55 * @MGMT_SUBTYPE_ASSOC_RESP: association response frame 56 * @MGMT_SUBTYPE_REASSOC_REQ: reassociation request frame 57 * @MGMT_SUBTYPE_REASSOC_RESP: reassociation response frame 58 * @MGMT_SUBTYPE_PROBE_REQ: probe request frame 59 * @MGMT_SUBTYPE_PROBE_RESP: probe response frame 60 * @MGMT_SUBTYPE_BEACON: beacon frame 61 * @MGMT_SUBTYPE_ATIM: ATIM frame 62 * @MGMT_SUBTYPE_DISASSOC: disassociation frame 63 * @MGMT_SUBTYPE_AUTH: authentication frame 64 * @MGMT_SUBTYPE_DEAUTH: deauthentication frame 65 * @MGMT_SUBTYPE_ACTION: action frame 66 * @MGMT_SUBTYPE_ACTION_NO_ACK: action no ack frame 67 */ 68 enum mgmt_subtype { 69 MGMT_SUBTYPE_ASSOC_REQ = 0x00, 70 MGMT_SUBTYPE_ASSOC_RESP = 0x10, 71 MGMT_SUBTYPE_REASSOC_REQ = 0x20, 72 MGMT_SUBTYPE_REASSOC_RESP = 0x30, 73 MGMT_SUBTYPE_PROBE_REQ = 0x40, 74 MGMT_SUBTYPE_PROBE_RESP = 0x50, 75 MGMT_SUBTYPE_BEACON = 0x80, 76 MGMT_SUBTYPE_ATIM = 0x90, 77 MGMT_SUBTYPE_DISASSOC = 0xa0, 78 MGMT_SUBTYPE_AUTH = 0xb0, 79 MGMT_SUBTYPE_DEAUTH = 0xc0, 80 MGMT_SUBTYPE_ACTION = 0xd0, 81 MGMT_SUBTYPE_ACTION_NO_ACK = 0xe0, 82 }; 83 84 /** 85 * enum mgmt_action_category - mgmt. action categories 86 * @ACTION_CATEGORY_SPECTRUM_MGMT: spectrum mgmt. action category 87 * @ACTION_CATEGORY_QOS: qos action category 88 * @ACTION_CATEGORY_DLS: dls action category 89 * @ACTION_CATEGORY_BACK: block ack action category 90 * @ACTION_CATEGORY_PUBLIC: public action category 91 * @ACTION_CATEGORY_RRM: rrm action category 92 * @ACTION_FAST_BSS_TRNST: trnst action category 93 * @ACTION_CATEGORY_HT: ht actipon category 94 * @ACTION_CATEGORY_SA_QUERY: sa query action category 95 * @ACTION_CATEGORY_PROTECTED_DUAL_OF_PUBLIC_ACTION: protected 96 * public action category 97 * @ACTION_CATEGORY_WNM: wnm action category 98 * @ACTION_CATEGORY_WNM_UNPROTECTED: wnm protected action category 99 * @ACTION_CATEGORY_TDLS: tdls action category 100 * @ACTION_CATEGORY_MESH_ACTION: mesh action category 101 * @ACTION_CATEGORY_MULTIHOP_ACTION: multihop action category 102 * @ACTION_CATEGORY_SELF_PROTECTED: self protected action category 103 * @ACTION_CATEGORY_DMG: unprotected dmg action category 104 * @ACTION_CATEGORY_WMM: wmm action category 105 * @ACTION_CATEGORY_FST: fst action category 106 * @ACTION_CATEGORY_UNPROT_DMG: dmg action category 107 * @ACTION_CATEGORY_VHT: vht action category 108 * @ACTION_CATEGORY_VENDOR_SPECIFIC_PROTECTED: vendor specific protected 109 * action category 110 * @ACTION_CATEGORY_VENDOR_SPECIFIC: vendor specific action category 111 */ 112 enum mgmt_action_category { 113 ACTION_CATEGORY_SPECTRUM_MGMT = 0, 114 ACTION_CATEGORY_QOS = 1, 115 ACTION_CATEGORY_DLS = 2, 116 ACTION_CATEGORY_BACK = 3, 117 ACTION_CATEGORY_PUBLIC = 4, 118 ACTION_CATEGORY_RRM = 5, 119 ACTION_FAST_BSS_TRNST = 6, 120 ACTION_CATEGORY_HT = 7, 121 ACTION_CATEGORY_SA_QUERY = 8, 122 ACTION_CATEGORY_PROTECTED_DUAL_OF_PUBLIC_ACTION = 9, 123 ACTION_CATEGORY_WNM = 10, 124 ACTION_CATEGORY_WNM_UNPROTECTED = 11, 125 ACTION_CATEGORY_TDLS = 12, 126 ACTION_CATEGORY_MESH_ACTION = 13, 127 ACTION_CATEGORY_MULTIHOP_ACTION = 14, 128 ACTION_CATEGORY_SELF_PROTECTED = 15, 129 ACTION_CATEGORY_DMG = 16, 130 ACTION_CATEGORY_WMM = 17, 131 ACTION_CATEGORY_FST = 18, 132 ACTION_CATEGORY_UNPROT_DMG = 20, 133 ACTION_CATEGORY_VHT = 21, 134 ACTION_CATEGORY_VENDOR_SPECIFIC_PROTECTED = 126, 135 ACTION_CATEGORY_VENDOR_SPECIFIC = 127, 136 }; 137 138 /** 139 * enum spectrum_mgmt_actioncode - spectrum mgmt. action frms 140 * @ACTION_SPCT_MSR_REQ: spectrum measurement request frame 141 * @ACTION_SPCT_MSR_RPRT: spectrum measurement report frame 142 * @ACTION_SPCT_TPC_REQ: spectrum tpc request frame 143 * @ACTION_SPCT_TPC_RPRT: spectrum tpc report frame 144 * @ACTION_SPCT_CHL_SWITCH: spectrum channel switch frame 145 */ 146 enum spectrum_mgmt_actioncode { 147 ACTION_SPCT_MSR_REQ, 148 ACTION_SPCT_MSR_RPRT, 149 ACTION_SPCT_TPC_REQ, 150 ACTION_SPCT_TPC_RPRT, 151 ACTION_SPCT_CHL_SWITCH, 152 }; 153 154 /** 155 * enum qos_actioncode - qos action frames 156 * @QOS_ADD_TS_REQ: qos add ts request frame 157 * @QOS_ADD_TS_RSP: qos add ts response frame 158 * @QOS_DEL_TS_REQ: qos del ts request frame 159 * @QOS_SCHEDULE: qos schecule frame 160 * @QOS_MAP_CONFIGURE: qos map configure frame 161 */ 162 enum qos_actioncode { 163 QOS_ADD_TS_REQ, 164 QOS_ADD_TS_RSP, 165 QOS_DEL_TS_REQ, 166 QOS_SCHEDULE, 167 QOS_MAP_CONFIGURE, 168 }; 169 170 /** 171 * enum dls_actioncode - dls action frames 172 * @DLS_REQUEST: dls request frame 173 * @DLS_RESPONSE: dls response frame 174 * @DLS_TEARDOWN: dls teardown frame 175 */ 176 enum dls_actioncode { 177 DLS_REQUEST, 178 DLS_RESPONSE, 179 DLS_TEARDOWN, 180 }; 181 182 /** 183 * enum block_ack_actioncode - block ack action frames 184 * @ADDBA_REQUEST: add block ack request frame 185 * @ADDBA_RESPONSE: add block ack response frame 186 * @DELBA: delete block ack frame 187 */ 188 enum block_ack_actioncode { 189 ADDBA_REQUEST, 190 ADDBA_RESPONSE, 191 DELBA, 192 }; 193 194 /** 195 * enum pub_actioncode - public action frames 196 * @PUB_ACTION_2040_BSS_COEXISTENCE: public 20-40 bss coex action frame 197 * @PUB_ACTION_EXT_CHANNEL_SWITCH_ID: public ext channel switch id action frame 198 * @PUB_ACTION_VENDOR_SPECIFIC: vendor specific public action frame 199 * @PUB_ACTION_GAS_INITIAL_REQUEST: GAS initial request action frame 200 * @PUB_ACTION_GAS_INITIAL_RESPONSE: GAS initial response action frame 201 * @PUB_ACTION_GAS_COMEBACK_REQUEST: GAS comeback request action frame 202 * @PUB_ACTION_GAS_COMEBACK_RESPONSE: GAS comeback respose action frame 203 * @PUB_ACTION_TDLS_DISCRESP: tdls discovery response public action frame 204 */ 205 enum pub_actioncode { 206 PUB_ACTION_2040_BSS_COEXISTENCE = 0, 207 PUB_ACTION_EXT_CHANNEL_SWITCH_ID = 4, 208 PUB_ACTION_VENDOR_SPECIFIC = 9, 209 PUB_ACTION_GAS_INITIAL_REQUEST = 10, 210 PUB_ACTION_GAS_INITIAL_RESPONSE = 11, 211 PUB_ACTION_GAS_COMEBACK_REQUEST = 12, 212 PUB_ACTION_GAS_COMEBACK_RESPONSE = 13, 213 PUB_ACTION_TDLS_DISCRESP = 14, 214 }; 215 216 /** 217 * enum rrm_actioncode - rrm action frames 218 * @RRM_RADIO_MEASURE_REQ: rrm radio meas. request frame 219 * @RRM_RADIO_MEASURE_RPT: rrm radio meas. report frame 220 * @RRM_LINK_MEASUREMENT_REQ: rrm link meas. request frmae 221 * @RRM_LINK_MEASUREMENT_RPT: rrm link meas. report frame 222 * @RRM_NEIGHBOR_REQ: rrm neighbor request frame 223 * @RRM_NEIGHBOR_RPT: rrm neighbor report frame 224 */ 225 enum rrm_actioncode { 226 RRM_RADIO_MEASURE_REQ, 227 RRM_RADIO_MEASURE_RPT, 228 RRM_LINK_MEASUREMENT_REQ, 229 RRM_LINK_MEASUREMENT_RPT, 230 RRM_NEIGHBOR_REQ, 231 RRM_NEIGHBOR_RPT, 232 }; 233 234 /** 235 * enum ht_actioncode - ht action frames 236 * @HT_ACTION_NOTIFY_CHANWIDTH: ht notify bw action frame 237 * @HT_ACTION_SMPS: ht smps action frame 238 * @HT_ACTION_PSMP: ht psmp action frame 239 * @HT_ACTION_PCO_PHASE: ht pco phase action frame 240 * @HT_ACTION_CSI: ht csi action frame 241 * @HT_ACTION_NONCOMPRESSED_BF: ht noncompressed bf action frame 242 * @HT_ACTION_COMPRESSED_BF: ht compressed bf action frame 243 * @HT_ACTION_ASEL_IDX_FEEDBACK: ht asel idx feedback action frame 244 */ 245 enum ht_actioncode { 246 HT_ACTION_NOTIFY_CHANWIDTH, 247 HT_ACTION_SMPS, 248 HT_ACTION_PSMP, 249 HT_ACTION_PCO_PHASE, 250 HT_ACTION_CSI, 251 HT_ACTION_NONCOMPRESSED_BF, 252 HT_ACTION_COMPRESSED_BF, 253 HT_ACTION_ASEL_IDX_FEEDBACK, 254 }; 255 256 /** 257 * enum sa_query_action - sa query action frames 258 * @SA_QUERY_REQUEST: sa query request frame 259 * @SA_QUERY_RESPONSE: sa query response frame 260 */ 261 enum sa_query_action { 262 SA_QUERY_REQUEST, 263 SA_QUERY_RESPONSE, 264 }; 265 266 /** 267 * enum protected_dual_actioncode - protected dual action frames 268 * @PDPA_GAS_INIT_REQ: pdpa gas init request frame 269 * @PDPA_GAS_INIT_RSP: pdpa gas init response frame 270 * @PDPA_GAS_COMEBACK_REQ: pdpa gas comeback request frame 271 * @PDPA_GAS_COMEBACK_RSP: pdpa gas comeback response frame 272 */ 273 enum protected_dual_actioncode { 274 PDPA_GAS_INIT_REQ = 10, 275 PDPA_GAS_INIT_RSP = 11, 276 PDPA_GAS_COMEBACK_REQ = 12, 277 PDPA_GAS_COMEBACK_RSP = 13, 278 }; 279 280 /** 281 * enum wnm_actioncode - wnm action frames 282 * @WNM_BSS_TM_QUERY: wnm bss tm query frame 283 * @WNM_BSS_TM_REQUEST: wnm bss tm request frame 284 * @WNM_BSS_TM_RESPONSE: wnm bss tm response frame 285 * @WNM_FMS_REQ: wnm fms request frame 286 * @WNM_FMS_RESP: wnm fms response frame 287 * @WNM_TFS_REQ: wnm tfs request frame 288 * @WNM_TFS_RESP: wnm tfs response frame 289 * @WNM_TFS_NOTIFY: wnm tfs notify frame 290 * @WNM_SLEEP_REQ: wnm sleep request frame 291 * @WNM_SLEEP_RESP: wnm sleep response frame 292 * @WNM_TIM_REQ: wnm Tim broadcast request frame 293 * @WNM_TIM_RESP: wnm Tim broadcast response frame 294 * @WNM_NOTIF_REQUEST: wnm notify request frame 295 * @WNM_NOTIF_RESPONSE: wnm notify response frame 296 */ 297 enum wnm_actioncode { 298 WNM_BSS_TM_QUERY = 6, 299 WNM_BSS_TM_REQUEST = 7, 300 WNM_BSS_TM_RESPONSE = 8, 301 WNM_FMS_REQ = 9, 302 WNM_FMS_RESP = 10, 303 WNM_TFS_REQ = 13, 304 WNM_TFS_RESP = 14, 305 WNM_TFS_NOTIFY = 15, 306 WNM_SLEEP_REQ = 16, 307 WNM_SLEEP_RESP = 17, 308 WNM_TIM_REQ = 18, 309 WNM_TIM_RESP = 19, 310 WNM_NOTIF_REQUEST = 26, 311 WNM_NOTIF_RESPONSE = 27, 312 }; 313 314 /** 315 * enum tdls_actioncode - tdls action frames 316 * @TDLS_SETUP_REQUEST: tdls setup request frame 317 * @TDLS_SETUP_RESPONSE: tdls setup response frame 318 * @TDLS_SETUP_CONFIRM: tdls setup confirm frame 319 * @TDLS_TEARDOWN: tdls teardown frame 320 * @TDLS_PEER_TRAFFIC_INDICATION: tdls peer traffic indication frame 321 * @TDLS_CHANNEL_SWITCH_REQUEST: tdls channel switch req. frame 322 * @TDLS_CHANNEL_SWITCH_RESPONSE: tdls channel switch response frame 323 * @TDLS_PEER_PSM_REQUEST: tdls peer psm request frame 324 * @TDLS_PEER_PSM_RESPONSE: tdls peer psm response frame 325 * @TDLS_PEER_TRAFFIC_RESPONSE: tdls peer traffic response frame 326 * @TDLS_DISCOVERY_REQUEST: tdls discovery request frame 327 */ 328 enum tdls_actioncode { 329 TDLS_SETUP_REQUEST = 0, 330 TDLS_SETUP_RESPONSE = 1, 331 TDLS_SETUP_CONFIRM = 2, 332 TDLS_TEARDOWN = 3, 333 TDLS_PEER_TRAFFIC_INDICATION = 4, 334 TDLS_CHANNEL_SWITCH_REQUEST = 5, 335 TDLS_CHANNEL_SWITCH_RESPONSE = 6, 336 TDLS_PEER_PSM_REQUEST = 7, 337 TDLS_PEER_PSM_RESPONSE = 8, 338 TDLS_PEER_TRAFFIC_RESPONSE = 9, 339 TDLS_DISCOVERY_REQUEST = 10, 340 TDLS_DISCOVERY_RESPONSE = 14, 341 }; 342 343 /** 344 * enum mesh_actioncode - mesh action frames 345 * @MESH_ACTION_LINK_METRIC_REPORT: mesh link metric report action frame 346 * @MESH_ACTION_HWMP_PATH_SELECTION: mesh hwmp path selection action frame 347 * @MESH_ACTION_GATE_ANNOUNCEMENT: mesh gate announcement action frame 348 * @MESH_ACTION_CONGESTION_CONTROL_NOTIFICATION: mesh congestion control frame 349 * @MESH_ACTION_MCCA_SETUP_REQUEST: mesh mcca setup request action frame 350 * @MESH_ACTION_MCCA_SETUP_REPLY: mesh mcca setup reply action frame 351 * @MESH_ACTION_MCCA_ADVERTISEMENT_REQUEST: mesh mcca advertisement req. frame 352 * @MESH_ACTION_MCCA_ADVERTISEMENT: mesh mcca advertisement action frame 353 * @MESH_ACTION_MCCA_TEARDOWN: mesh mcca teardown action frame 354 * @MESH_ACTION_TBTT_ADJUSTMENT_REQUEST: mesh tbtt adjustment req. frame 355 * @MESH_ACTION_TBTT_ADJUSTMENT_RESPONSE: mesh tbtt adjustment rsp. frame 356 */ 357 enum mesh_actioncode { 358 MESH_ACTION_LINK_METRIC_REPORT, 359 MESH_ACTION_HWMP_PATH_SELECTION, 360 MESH_ACTION_GATE_ANNOUNCEMENT, 361 MESH_ACTION_CONGESTION_CONTROL_NOTIFICATION, 362 MESH_ACTION_MCCA_SETUP_REQUEST, 363 MESH_ACTION_MCCA_SETUP_REPLY, 364 MESH_ACTION_MCCA_ADVERTISEMENT_REQUEST, 365 MESH_ACTION_MCCA_ADVERTISEMENT, 366 MESH_ACTION_MCCA_TEARDOWN, 367 MESH_ACTION_TBTT_ADJUSTMENT_REQUEST, 368 MESH_ACTION_TBTT_ADJUSTMENT_RESPONSE, 369 }; 370 371 /** 372 * enum self_protected_actioncode - self protected action frames 373 * @SP_RESERVED: self protected reserved 374 * @SP_MESH_PEERING_OPEN: self protected mesh peering open frame 375 * @SP_MESH_PEERING_CONFIRM: self protected mesh peering confirm frame 376 * @SP_MESH_PEERING_CLOSE: self protected mesh peering close frame 377 * @SP_MGK_INFORM: self protected mgk inform frame 378 * @SP_MGK_ACK: self protected mgk ack frame 379 */ 380 enum self_protected_actioncode { 381 SP_RESERVED, 382 SP_MESH_PEERING_OPEN, 383 SP_MESH_PEERING_CONFIRM, 384 SP_MESH_PEERING_CLOSE, 385 SP_MGK_INFORM, 386 SP_MGK_ACK, 387 }; 388 389 /** 390 * enum wmm_actioncode - wmm action frames 391 * @WMM_QOS_SETUP_REQ: wmm qos setup request frame 392 * @WMM_QOS_SETUP_RESP: q wmm qos setup response frame 393 * @WMM_QOS_TEARDOWN: wmm qos teardown frame 394 */ 395 enum wmm_actioncode { 396 WMM_QOS_SETUP_REQ, 397 WMM_QOS_SETUP_RESP, 398 WMM_QOS_TEARDOWN, 399 }; 400 401 /** 402 * enum vht_actioncode - vht action frames 403 * @VHT_ACTION_COMPRESSED_BF: vht compressed bf action frame 404 * @VHT_ACTION_GID_NOTIF: vht gid notification action frame 405 * @VHT_ACTION_OPMODE_NOTIF: vht opmode notification action frame 406 */ 407 enum vht_actioncode { 408 VHT_ACTION_COMPRESSED_BF, 409 VHT_ACTION_GID_NOTIF, 410 VHT_ACTION_OPMODE_NOTIF, 411 }; 412 413 /** 414 * struct action_frm_hdr - action frame header 415 * @action_category: action category 416 * @action_code: action code 417 */ 418 struct action_frm_hdr { 419 uint8_t action_category; 420 uint8_t action_code; 421 }; 422 423 /** 424 * enum mgmt_frame_type - enum of mgmt. frames 425 * @MGMT_FRM_UNSPECIFIED: unspecified 426 * @MGMT_ASSOC_REQ: association request frame 427 * @MGMT_ASSOC_RESP: association response frame 428 * @MGMT_REASSOC_REQ: reassociation request frame 429 * @MGMT_REASSOC_RESP: reassociation response frame 430 * @MGMT_PROBE_REQ: probe request frame 431 * @MGMT_PROBE_RESP: probe response frame 432 * @MGMT_BEACON: beacon frame 433 * @MGMT_ATIM: ATIM frame 434 * @MGMT_DISASSOC: disassociation frame 435 * @MGMT_AUTH: authentication frame 436 * @MGMT_DEAUTH: deauthentication frame 437 * @MGMT_ACTION_MEAS_REQUEST: measure channels request action frame 438 * @MGMT_ACTION_MEAS_REPORT: measure channels response action frame 439 * @MGMT_ACTION_TPC_REQUEST: transmit power control request action frame 440 * @MGMT_ACTION_TPC_REPORT: transmit power control response action frame 441 * @MGMT_ACTION_CHAN_SWITCH: 802.11 channel switch announcement frame 442 * @MGMT_ACTION_QOS_ADD_TS_REQ: qos add ts request frame 443 * @MGMT_ACTION_QOS_ADD_TS_RSP: qos add ts response frame 444 * @MGMT_ACTION_QOS_DEL_TS_REQ: qos del ts request frame 445 * @MGMT_ACTION_QOS_SCHEDULE: qos schedule frame 446 * @MGMT_ACTION_QOS_MAP_CONFIGURE: qos map configure frame 447 * @MGMT_ACTION_DLS_REQUEST: DLS request action frame 448 * @MGMT_ACTION_DLS_RESPONSE: DLS response action frame 449 * @MGMT_ACTION_DLS_TEARDOWN: DLS taerdown action frame 450 * @MGMT_ACTION_BA_ADDBA_REQUEST: ADDBA request action frame 451 * @MGMT_ACTION_BA_ADDBA_RESPONSE: ADDBA response action frame 452 * @MGMT_ACTION_BA_DELBA: DELBA action frame 453 * @MGMT_ACTION_2040_BSS_COEXISTENCE: 20-40 bss coex action frame 454 * @MGMT_ACTION_CATEGORY_VENDOR_SPECIFIC: category vendor spcific action frame 455 * @MGMT_ACTION_EXT_CHANNEL_SWITCH_ID: ext channel switch id action frame 456 * @MGMT_ACTION_VENDOR_SPECIFIC: vendor specific action frame 457 * @MGMT_ACTION_TDLS_DISCRESP: TDLS discovery response frame 458 * @MGMT_ACTION_RRM_RADIO_MEASURE_REQ: rrm radio meas. req. action frame 459 * @MGMT_ACTION_RRM_RADIO_MEASURE_RPT: rrm radio meas. report action frame 460 * @MGMT_ACTION_RRM_LINK_MEASUREMENT_REQ: rrm link meas. req. action frame 461 * @MGMT_ACTION_RRM_LINK_MEASUREMENT_RPT: rrm link meas. report action frame 462 * @MGMT_ACTION_RRM_NEIGHBOR_REQ: rrm neighbor request action frame 463 * @MGMT_ACTION_RRM_NEIGHBOR_RPT: rrm neighbor response action frame 464 * @MGMT_ACTION_HT_NOTIFY_CHANWIDTH: notify channel width action frame 465 * @MGMT_ACTION_HT_SMPS: spatial multiplexing power save action frame 466 * @MGMT_ACTION_HT_PSMP: psmp action frame 467 * @MGMT_ACTION_HT_PCO_PHASE: pco phase action frame 468 * @MGMT_ACTION_HT_CSI: CSI action frame 469 * @MGMT_ACTION_HT_NONCOMPRESSED_BF: non-compressed beamforming action frame 470 * @MGMT_ACTION_HT_COMPRESSED_BF: compressed beamforming action frame 471 * @MGMT_ACTION_HT_ASEL_IDX_FEEDBACK: asel idx feedback action frame 472 * @MGMT_ACTION_SA_QUERY_REQUEST: SA query request frame 473 * @MGMT_ACTION_SA_QUERY_RESPONSE: SA query response frame 474 * @MGMT_ACTION_PDPA_GAS_INIT_REQ: pdpa gas init request action frame 475 * @MGMT_ACTION_PDPA_GAS_INIT_RSP: pdpa gas init response frame 476 * @MGMT_ACTION_PDPA_GAS_COMEBACK_REQ: pdpa gas comeback req. action frame 477 * @MGMT_ACTION_PDPA_GAS_COMEBACK_RSP: pdpa gas comeback rsp. action frame 478 * @MGMT_ACTION_WNM_BSS_TM_QUERY: wnm bss tm query action frame 479 * @MGMT_ACTION_WNM_BSS_TM_REQUEST: wnm bss tm request action frame 480 * @MGMT_ACTION_WNM_BSS_TM_RESPONSE: wnm bss tm response action frame 481 * @MGMT_ACTION_WNM_NOTIF_REQUEST: wnm notification request action frame 482 * @MGMT_ACTION_WNM_NOTIF_RESPONSE: wnm notification response action frame 483 * @MGMT_ACTION_WNM_FMS_REQ: wnm fms request frame 484 * @MGMT_ACTION_WNM_FMS_RESP: wnm fms response frame 485 * @MGMT_ACTION_WNM_TFS_REQ: wnm tfs request frame 486 * @MGMT_ACTION_WNM_TFS_RESP: wnm tfs response frame 487 * @MGMT_ACTION_WNM_TFS_NOTIFY: wnm tfs notify frame 488 * @MGMT_ACTION_WNM_SLEEP_REQ: wnm sleep request frame 489 * @MGMT_ACTION_WNM_SLEEP_RESP: wnm sleep response frame 490 * @MGMT_ACTION_WNM_TIM_REQ: wnm Tim broadcast request frame 491 * @MGMT_ACTION_WNM_TIM_RESP: wnm Tim broadcast response frame 492 * @MGMT_ACTION_TDLS_SETUP_REQ: tdls setup request action frame 493 * @MGMT_ACTION_TDLS_SETUP_RSP: tdls setup response frame 494 * @MGMT_ACTION_TDLS_SETUP_CNF: tdls setup confirm frame 495 * @MGMT_ACTION_TDLS_TEARDOWN: tdls teardown frame 496 * @MGMT_ACTION_TDLS_PEER_TRAFFIC_IND: tdls peer traffic indication frame 497 * @MGMT_ACTION_TDLS_CH_SWITCH_REQ: tdls channel switch req. frame 498 * @MGMT_ACTION_TDLS_CH_SWITCH_RSP: tdls channel switch response frame 499 * @MGMT_ACTION_TDLS_PEER_PSM_REQUEST: tdls peer psm request frame 500 * @MGMT_ACTION_TDLS_PEER_PSM_RESPONSE: tdls peer psm response frame 501 * @MGMT_ACTION_TDLS_PEER_TRAFFIC_RSP: tdls peer traffic response frame 502 * @MGMT_ACTION_TDLS_DIS_REQ: tdls discovery request frame 503 * @MGMT_ACTION_MESH_LINK_METRIC_REPORT: mesh link metric report action frame 504 * @MGMT_ACTION_MESH_HWMP_PATH_SELECTION: mesh hwmp path selection action frame 505 * @MGMT_ACTION_MESH_GATE_ANNOUNCEMENT: mesh gate announcement action frame 506 * @MGMT_ACTION_MESH_CONGESTION_CONTROL_NOTIFICATION: mesh congestion control 507 * @MGMT_ACTION_MESH_MCCA_SETUP_REQUEST: mesh mcca setup request action frame 508 * @MGMT_ACTION_MESH_MCCA_SETUP_REPLY: mesh mcca setup reply action frame 509 * @MGMT_ACTION_MESH_MCCA_ADVERTISEMENT_REQUEST: mesh mcca advertisement req. 510 * @MGMT_ACTION_MESH_MCCA_ADVERTISEMENT: mesh mcca advertisement action frame 511 * @MGMT_ACTION_MESH_MCCA_TEARDOWN: mesh mcca teardown action fram 512 * @MGMT_ACTION_MESH_TBTT_ADJUSTMENT_REQUEST: mesh tbtt adjustment req. frame 513 * @MGMT_ACTION_MESH_TBTT_ADJUSTMENT_RESPONSE: mesh tbtt adjustment rsp. frame 514 * @MGMT_ACTION_SP_MESH_PEERING_OPEN: self protected mesh peering open frame 515 * @MGMT_ACTION_SP_MESH_PEERING_CONFIRM: self protected mesh peering confirm 516 * @MGMT_ACTION_SP_MESH_PEERING_CLOSE: self protected mesh peering close frame 517 * @MGMT_ACTION_SP_MGK_INFORM: self protected mgk inform frame 518 * @MGMT_ACTION_SP_MGK_ACK: self protected mgk ack frame 519 * @MGMT_ACTION_WMM_QOS_SETUP_REQ: WMM qos setup request action frame 520 * @MGMT_ACTION_WMM_QOS_SETUP_RESP: WMM qos setup response action frame 521 * @MGMT_ACTION_WMM_QOS_TEARDOWN: WMM qos teardown action frame 522 * @MGMT_ACTION_VHT_COMPRESSED_BF: vht compressed bf action frame 523 * @MGMT_ACTION_VHT_GID_NOTIF: vht gid notification action frame 524 * @MGMT_ACTION_VHT_OPMODE_NOTIF: vht opmode notification action frame 525 * @MGMT_FRAME_TYPE_ALL: mgmt frame type for all type of frames 526 * @MGMT_MAX_FRAME_TYPE: max. mgmt frame types 527 * @MGMT_ACTION_GAS_INITIAL_REQUEST: GAS Initial request action frame 528 * @MGMT_ACTION_GAS_INITIAL_RESPONSE: GAS Initial response action frame 529 * @MGMT_ACTION_GAS_COMEBACK_REQUEST: GAS Comeback request action frame 530 * @MGMT_ACTION_GAS_COMEBACK_RESPONSE: GAS Comeback response action frame 531 */ 532 enum mgmt_frame_type { 533 MGMT_FRM_UNSPECIFIED = -1, 534 MGMT_ASSOC_REQ, 535 MGMT_ASSOC_RESP, 536 MGMT_REASSOC_REQ, 537 MGMT_REASSOC_RESP, 538 MGMT_PROBE_REQ, 539 MGMT_PROBE_RESP, 540 MGMT_BEACON, 541 MGMT_ATIM, 542 MGMT_DISASSOC, 543 MGMT_AUTH, 544 MGMT_DEAUTH, 545 MGMT_ACTION_MEAS_REQUEST, 546 MGMT_ACTION_MEAS_REPORT, 547 MGMT_ACTION_TPC_REQUEST, 548 MGMT_ACTION_TPC_REPORT, 549 MGMT_ACTION_CHAN_SWITCH, 550 MGMT_ACTION_QOS_ADD_TS_REQ, 551 MGMT_ACTION_QOS_ADD_TS_RSP, 552 MGMT_ACTION_QOS_DEL_TS_REQ, 553 MGMT_ACTION_QOS_SCHEDULE, 554 MGMT_ACTION_QOS_MAP_CONFIGURE, 555 MGMT_ACTION_DLS_REQUEST, 556 MGMT_ACTION_DLS_RESPONSE, 557 MGMT_ACTION_DLS_TEARDOWN, 558 MGMT_ACTION_BA_ADDBA_REQUEST, 559 MGMT_ACTION_BA_ADDBA_RESPONSE, 560 MGMT_ACTION_BA_DELBA, 561 MGMT_ACTION_2040_BSS_COEXISTENCE, 562 MGMT_ACTION_CATEGORY_VENDOR_SPECIFIC, 563 MGMT_ACTION_EXT_CHANNEL_SWITCH_ID, 564 MGMT_ACTION_VENDOR_SPECIFIC, 565 MGMT_ACTION_TDLS_DISCRESP, 566 MGMT_ACTION_RRM_RADIO_MEASURE_REQ, 567 MGMT_ACTION_RRM_RADIO_MEASURE_RPT, 568 MGMT_ACTION_RRM_LINK_MEASUREMENT_REQ, 569 MGMT_ACTION_RRM_LINK_MEASUREMENT_RPT, 570 MGMT_ACTION_RRM_NEIGHBOR_REQ, 571 MGMT_ACTION_RRM_NEIGHBOR_RPT, 572 MGMT_ACTION_HT_NOTIFY_CHANWIDTH, 573 MGMT_ACTION_HT_SMPS, 574 MGMT_ACTION_HT_PSMP, 575 MGMT_ACTION_HT_PCO_PHASE, 576 MGMT_ACTION_HT_CSI, 577 MGMT_ACTION_HT_NONCOMPRESSED_BF, 578 MGMT_ACTION_HT_COMPRESSED_BF, 579 MGMT_ACTION_HT_ASEL_IDX_FEEDBACK, 580 MGMT_ACTION_SA_QUERY_REQUEST, 581 MGMT_ACTION_SA_QUERY_RESPONSE, 582 MGMT_ACTION_PDPA_GAS_INIT_REQ, 583 MGMT_ACTION_PDPA_GAS_INIT_RSP, 584 MGMT_ACTION_PDPA_GAS_COMEBACK_REQ, 585 MGMT_ACTION_PDPA_GAS_COMEBACK_RSP, 586 MGMT_ACTION_WNM_BSS_TM_QUERY, 587 MGMT_ACTION_WNM_BSS_TM_REQUEST, 588 MGMT_ACTION_WNM_BSS_TM_RESPONSE, 589 MGMT_ACTION_WNM_NOTIF_REQUEST, 590 MGMT_ACTION_WNM_NOTIF_RESPONSE, 591 MGMT_ACTION_WNM_FMS_REQ, 592 MGMT_ACTION_WNM_FMS_RESP, 593 MGMT_ACTION_WNM_TFS_REQ, 594 MGMT_ACTION_WNM_TFS_RESP, 595 MGMT_ACTION_WNM_TFS_NOTIFY, 596 MGMT_ACTION_WNM_SLEEP_REQ, 597 MGMT_ACTION_WNM_SLEEP_RESP, 598 MGMT_ACTION_WNM_TIM_REQ, 599 MGMT_ACTION_WNM_TIM_RESP, 600 MGMT_ACTION_TDLS_SETUP_REQ, 601 MGMT_ACTION_TDLS_SETUP_RSP, 602 MGMT_ACTION_TDLS_SETUP_CNF, 603 MGMT_ACTION_TDLS_TEARDOWN, 604 MGMT_ACTION_TDLS_PEER_TRAFFIC_IND, 605 MGMT_ACTION_TDLS_CH_SWITCH_REQ, 606 MGMT_ACTION_TDLS_CH_SWITCH_RSP, 607 MGMT_ACTION_TDLS_PEER_PSM_REQUEST, 608 MGMT_ACTION_TDLS_PEER_PSM_RESPONSE, 609 MGMT_ACTION_TDLS_PEER_TRAFFIC_RSP, 610 MGMT_ACTION_TDLS_DIS_REQ, 611 MGMT_ACTION_MESH_LINK_METRIC_REPORT, 612 MGMT_ACTION_MESH_HWMP_PATH_SELECTION, 613 MGMT_ACTION_MESH_GATE_ANNOUNCEMENT, 614 MGMT_ACTION_MESH_CONGESTION_CONTROL_NOTIFICATION, 615 MGMT_ACTION_MESH_MCCA_SETUP_REQUEST, 616 MGMT_ACTION_MESH_MCCA_SETUP_REPLY, 617 MGMT_ACTION_MESH_MCCA_ADVERTISEMENT_REQUEST, 618 MGMT_ACTION_MESH_MCCA_ADVERTISEMENT, 619 MGMT_ACTION_MESH_MCCA_TEARDOWN, 620 MGMT_ACTION_MESH_TBTT_ADJUSTMENT_REQUEST, 621 MGMT_ACTION_MESH_TBTT_ADJUSTMENT_RESPONSE, 622 MGMT_ACTION_SP_MESH_PEERING_OPEN, 623 MGMT_ACTION_SP_MESH_PEERING_CONFIRM, 624 MGMT_ACTION_SP_MESH_PEERING_CLOSE, 625 MGMT_ACTION_SP_MGK_INFORM, 626 MGMT_ACTION_SP_MGK_ACK, 627 MGMT_ACTION_WMM_QOS_SETUP_REQ, 628 MGMT_ACTION_WMM_QOS_SETUP_RESP, 629 MGMT_ACTION_WMM_QOS_TEARDOWN, 630 MGMT_ACTION_VHT_COMPRESSED_BF, 631 MGMT_ACTION_VHT_GID_NOTIF, 632 MGMT_ACTION_VHT_OPMODE_NOTIF, 633 MGMT_ACTION_GAS_INITIAL_REQUEST, 634 MGMT_ACTION_GAS_INITIAL_RESPONSE, 635 MGMT_ACTION_GAS_COMEBACK_REQUEST, 636 MGMT_ACTION_GAS_COMEBACK_RESPONSE, 637 MGMT_FRAME_TYPE_ALL, 638 MGMT_MAX_FRAME_TYPE, 639 }; 640 641 #define WLAN_MGMT_TXRX_HOST_MAX_ANTENNA 4 642 #define WLAN_INVALID_PER_CHAIN_RSSI 0x80 643 #define WLAN_NOISE_FLOOR_DBM_DEFAULT -96 644 /** 645 * struct mgmt_rx_event_params - host mgmt header params 646 * @channel: channel on which this frame is received 647 * @snr: snr information used to call rssi 648 * @rssi_ctl[WLAN_MGMT_TXRX_HOST_MAX_ANTENNA]: RSSI of PRI 20MHz for each chain 649 * @rate: Rate kbps 650 * @phy_mode: rx phy mode 651 * @buf_len: length of the frame 652 * @status: rx status 653 * @flags: information about the management frame e.g. can give a 654 * scan source for a scan result mgmt frame 655 * @rssi: combined RSSI, i.e. the sum of the snr + noise floor (dBm units) 656 * @tsf_delta: tsf delta 657 * @pdev_id: pdev id 658 * @rx_params: pointer to other rx params 659 * (win specific, will be removed in phase 4) 660 */ 661 struct mgmt_rx_event_params { 662 uint32_t channel; 663 uint32_t snr; 664 uint8_t rssi_ctl[WLAN_MGMT_TXRX_HOST_MAX_ANTENNA]; 665 uint32_t rate; 666 enum wlan_phymode phy_mode; 667 uint32_t buf_len; 668 QDF_STATUS status; 669 uint32_t flags; 670 int32_t rssi; 671 uint32_t tsf_delta; 672 uint8_t pdev_id; 673 void *rx_params; 674 }; 675 676 /** 677 * mgmt_tx_download_comp_cb - function pointer for tx download completions. 678 * @context: caller component specific context 679 * @buf: buffer 680 * @free: to free/not free the buffer 681 * 682 * This is the function pointer to be called on tx download completion 683 * if download complete is required. 684 * 685 * Return: QDF_STATUS_SUCCESS - in case of success 686 */ 687 typedef QDF_STATUS (*mgmt_tx_download_comp_cb)(void *context, 688 qdf_nbuf_t buf, bool free); 689 690 /** 691 * mgmt_ota_comp_cb - function pointer for tx ota completions. 692 * @context: caller component specific context 693 * @buf: buffer 694 * @status: tx completion status 695 * @tx_compl_params: tx completion params 696 * 697 * This is the function pointer to be called on tx ota completion. 698 * 699 * Return: QDF_STATUS_SUCCESS - in case of success 700 */ 701 typedef QDF_STATUS (*mgmt_ota_comp_cb)(void *context, qdf_nbuf_t buf, 702 uint32_t status, void *tx_compl_params); 703 704 /** 705 * mgmt_frame_rx_callback - function pointer for receiving mgmt rx frames 706 * @psoc: psoc context 707 * @peer: peer 708 * @buf: buffer 709 * @mgmt_rx_params: rx params 710 * @frm_type: mgmt rx frame type 711 * 712 * This is the function pointer to be called on receiving mgmt rx frames. 713 * 714 * Return: QDF_STATUS_SUCCESS - in case of success 715 */ 716 typedef QDF_STATUS (*mgmt_frame_rx_callback)( 717 struct wlan_objmgr_psoc *psoc, 718 struct wlan_objmgr_peer *peer, 719 qdf_nbuf_t buf, 720 struct mgmt_rx_event_params *mgmt_rx_params, 721 enum mgmt_frame_type frm_type); 722 723 /** 724 * mgmt_frame_fill_peer_cb - Function pointer to fill peer in the buf 725 * @peer: peer 726 * @buf: buffer 727 * 728 * This is the function pointer to be called during drain to fill the 729 * peer into the buf's cb structure. 730 * 731 * Return: QDF_STATUS_SUCCESS - in case of success 732 */ 733 typedef QDF_STATUS (*mgmt_frame_fill_peer_cb)( 734 struct wlan_objmgr_peer *peer, 735 qdf_nbuf_t buf); 736 737 /** 738 * struct mgmt_txrx_mgmt_frame_cb_info - frm and corresponding rx cb info 739 * @frm_type: mgmt frm type 740 * @mgmt_rx_cb: corresponding rx callback 741 */ 742 struct mgmt_txrx_mgmt_frame_cb_info { 743 enum mgmt_frame_type frm_type; 744 mgmt_frame_rx_callback mgmt_rx_cb; 745 }; 746 747 748 /** 749 * wlan_mgmt_txrx_init() - initialize mgmt txrx context. 750 * 751 * This function initializes the mgmt txrx context, 752 * mgmt descriptor pool, etc. 753 * 754 * Return: QDF_STATUS_SUCCESS - in case of success 755 */ 756 QDF_STATUS wlan_mgmt_txrx_init(void); 757 758 /** 759 * wlan_mgmt_txrx_deinit() - deinitialize mgmt txrx context. 760 * 761 * This function deinitializes the mgmt txrx context, 762 * mgmt descriptor pool, etc. 763 * 764 * Return: QDF_STATUS_SUCCESS - in case of success 765 */ 766 QDF_STATUS wlan_mgmt_txrx_deinit(void); 767 768 /** 769 * wlan_mgmt_txrx_mgmt_frame_tx() - transmits mgmt. frame 770 * @peer: peer 771 * @context: caller component specific context 772 * @buf: buffer to be transmitted 773 * @comp_cb: download completion cb function 774 * @ota_cb: post processing cb function 775 * @comp_id: umac component id 776 * @mgmt_tx_params: mgmt tx params 777 * 778 * This function transmits the mgmt. frame to southbound interface. 779 * 780 * Return: QDF_STATUS_SUCCESS - in case of success 781 */ 782 QDF_STATUS wlan_mgmt_txrx_mgmt_frame_tx(struct wlan_objmgr_peer *peer, 783 void *context, 784 qdf_nbuf_t buf, 785 mgmt_tx_download_comp_cb tx_comp_cb, 786 mgmt_ota_comp_cb tx_ota_comp_cb, 787 enum wlan_umac_comp_id comp_id, 788 void *mgmt_tx_params); 789 790 /** 791 * wlan_mgmt_txrx_beacon_frame_tx() - transmits mgmt. beacon 792 * @psoc: psoc context 793 * @buf: buffer to be transmitted 794 * @comp_id: umac component id 795 * 796 * This function transmits the mgmt. beacon to southbound interface. 797 * 798 * Return: QDF_STATUS_SUCCESS - in case of success 799 */ 800 QDF_STATUS wlan_mgmt_txrx_beacon_frame_tx(struct wlan_objmgr_peer *peer, 801 qdf_nbuf_t buf, 802 enum wlan_umac_comp_id comp_id); 803 804 #ifdef WLAN_SUPPORT_FILS 805 /** 806 * wlan_mgmt_txrx_fd_action_frame_tx() - transmits mgmt. FD Action frame 807 * @vdev: vdev object 808 * @buf: buffer to be transmitted 809 * @comp_id: umac component id 810 * 811 * This function transmits the FILS Dicovery Action frame to 812 * southbound interface. 813 * 814 * Return: QDF_STATUS_SUCCESS - in case of success 815 */ 816 QDF_STATUS wlan_mgmt_txrx_fd_action_frame_tx(struct wlan_objmgr_vdev *vdev, 817 qdf_nbuf_t buf, 818 enum wlan_umac_comp_id comp_id); 819 #endif /* WLAN_SUPPORT_FILS */ 820 821 /** 822 * wlan_mgmt_txrx_register_rx_cb() - registers the rx cb for mgmt. frames 823 * @psoc: psoc context 824 * @comp_id: umac component id 825 * @frm_cb_info: pointer to array of structure containing frm type and callback 826 * @num_entries: num of frames for which cb to be registered 827 * 828 * This function registers rx callback for mgmt. frames for 829 * the corresponding umac component passed in the func. 830 * 831 * Return: QDF_STATUS_SUCCESS - in case of success 832 */ 833 QDF_STATUS wlan_mgmt_txrx_register_rx_cb( 834 struct wlan_objmgr_psoc *psoc, 835 enum wlan_umac_comp_id comp_id, 836 struct mgmt_txrx_mgmt_frame_cb_info *frm_cb_info, 837 uint8_t num_entries); 838 839 /** 840 * wlan_mgmt_txrx_vdev_drain() - Function to drain all mgmt packets 841 * specific to a vdev 842 * @vdev: vdev context 843 * @mgmt_fill_peer_cb: callback func to UMAC to fill peer into buf 844 * @status: opaque pointer about the status of the pkts passed to UMAC 845 * 846 * This function drains all mgmt packets of a vdev. This can be used in the 847 * event of target going down without sending completions. 848 * 849 * Return: QDF_STATUS_SUCCESS - in case of success 850 */ 851 QDF_STATUS wlan_mgmt_txrx_vdev_drain( 852 struct wlan_objmgr_vdev *vdev, 853 mgmt_frame_fill_peer_cb mgmt_fill_peer_cb, 854 void *status); 855 856 /** 857 * wlan_mgmt_txrx_deregister_rx_cb() - deregisters the rx cb for mgmt. frames 858 * @psoc: psoc context 859 * @comp_id: umac component id 860 * @frm_cb_info: pointer to array of structure containing frm type and callback 861 * @num_entries: num of frames for which cb to be deregistered 862 * 863 * This function deregisters rx callback for mgmt. frames for 864 * the corresponding umac component passed in the func. 865 * 866 * Return: QDF_STATUS_SUCCESS - in case of success 867 */ 868 QDF_STATUS wlan_mgmt_txrx_deregister_rx_cb( 869 struct wlan_objmgr_psoc *psoc, 870 enum wlan_umac_comp_id comp_id, 871 struct mgmt_txrx_mgmt_frame_cb_info *frm_cb_info, 872 uint8_t num_entries); 873 874 /** 875 * wlan_mgmt_txrx_psoc_open() - mgmt txrx module psoc open API 876 * @psoc: psoc context 877 * 878 * Return: QDF_STATUS_SUCCESS - in case of success 879 */ 880 QDF_STATUS wlan_mgmt_txrx_psoc_open(struct wlan_objmgr_psoc *psoc); 881 882 /** 883 * wlan_mgmt_txrx_psoc_close() - mgmt txrx module psoc close API 884 * @psoc: psoc context 885 * 886 * Return: QDF_STATUS_SUCCESS - in case of success 887 */ 888 QDF_STATUS wlan_mgmt_txrx_psoc_close(struct wlan_objmgr_psoc *psoc); 889 890 /** 891 * wlan_mgmt_txrx_pdev_open() - mgmt txrx module pdev open API 892 * @pdev: pdev context 893 * 894 * Return: QDF_STATUS_SUCCESS - in case of success 895 */ 896 QDF_STATUS wlan_mgmt_txrx_pdev_open(struct wlan_objmgr_pdev *pdev); 897 898 899 /** 900 * wlan_mgmt_txrx_pdev_close() - mgmt txrx module pdev close API 901 * @pdev: pdev context 902 * 903 * Return: QDF_STATUS_SUCCESS - in case of success 904 */ 905 QDF_STATUS wlan_mgmt_txrx_pdev_close(struct wlan_objmgr_pdev *pdev); 906 #endif 907 908 909