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