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