xref: /wlan-driver/qcacld-3.0/components/cmn_services/logging/inc/wlan_connectivity_logging.h (revision 5113495b16420b49004c444715d2daae2066e7dc)
1*5113495bSYour Name /*
2*5113495bSYour Name  * Copyright (c) 2021, The Linux Foundation. All rights reserved.
3*5113495bSYour Name  * Copyright (c) 2021-2024 Qualcomm Innovation Center, Inc. All rights reserved.
4*5113495bSYour Name  *
5*5113495bSYour Name  * Permission to use, copy, modify, and/or distribute this software for any
6*5113495bSYour Name  * purpose with or without fee is hereby granted, provided that the above
7*5113495bSYour Name  * copyright notice and this permission notice appear in all copies.
8*5113495bSYour Name  *
9*5113495bSYour Name  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10*5113495bSYour Name  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11*5113495bSYour Name  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12*5113495bSYour Name  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13*5113495bSYour Name  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14*5113495bSYour Name  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15*5113495bSYour Name  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16*5113495bSYour Name  */
17*5113495bSYour Name 
18*5113495bSYour Name /*
19*5113495bSYour Name  * DOC: wlan_cm_roam_logging.c
20*5113495bSYour Name  *
21*5113495bSYour Name  * Implementation for the Connect/roaming logging.
22*5113495bSYour Name  */
23*5113495bSYour Name 
24*5113495bSYour Name #ifndef _WLAN_CONNECTIVITY_LOGGING_H_
25*5113495bSYour Name #define _WLAN_CONNECTIVITY_LOGGING_H_
26*5113495bSYour Name 
27*5113495bSYour Name #include "wlan_logging_sock_svc.h"
28*5113495bSYour Name #include "wlan_cm_roam_public_struct.h"
29*5113495bSYour Name #include "wlan_mlo_mgr_public_structs.h"
30*5113495bSYour Name 
31*5113495bSYour Name #define WLAN_MAX_LOGGING_FREQ 120
32*5113495bSYour Name 
33*5113495bSYour Name /**
34*5113495bSYour Name  * enum wlan_main_tag  - Main Tag used in logging
35*5113495bSYour Name  * @WLAN_CONNECTING: Connecting
36*5113495bSYour Name  * @WLAN_CONNECTING_FAIL: Connection failure
37*5113495bSYour Name  * @WLAN_AUTH_REQ: Authentication request frame
38*5113495bSYour Name  * @WLAN_AUTH_RESP: Authentication response frame
39*5113495bSYour Name  * @WLAN_ASSOC_REQ: Association request frame
40*5113495bSYour Name  * @WLAN_ASSOC_RSP: Association response frame
41*5113495bSYour Name  * @WLAN_REASSOC_REQ: Reassociation request frame
42*5113495bSYour Name  * @WLAN_REASSOC_RSP: Reassociation response frame
43*5113495bSYour Name  * @WLAN_DEAUTH_RX: Deauthentication frame received
44*5113495bSYour Name  * @WLAN_DEAUTH_TX: Deauthentication frame sent
45*5113495bSYour Name  * @WLAN_DISASSOC_RX: Disassociation frame received
46*5113495bSYour Name  * @WLAN_DISASSOC_TX: Disassociation frame sent
47*5113495bSYour Name  * @WLAN_DISCONN_BMISS: Disconnection due to beacon miss
48*5113495bSYour Name  * @WLAN_ROAM_SCAN_START: ROAM scan start
49*5113495bSYour Name  * @WLAN_ROAM_SCAN_DONE: Roam scan done
50*5113495bSYour Name  * @WLAN_ROAM_SCORE_CURR_AP: Roam score current AP
51*5113495bSYour Name  * @WLAN_ROAM_SCORE_CAND_AP: Roam Score Candidate AP
52*5113495bSYour Name  * @WLAN_ROAM_RESULT: Roam Result
53*5113495bSYour Name  * @WLAN_ROAM_CANCEL: Roam Cancel
54*5113495bSYour Name  * @WLAN_BTM_REQ:  BTM request
55*5113495bSYour Name  * @WLAN_BTM_QUERY: BTM Query frame
56*5113495bSYour Name  * @WLAN_BTM_RESP: BTM response frame
57*5113495bSYour Name  * @WLAN_BTM_REQ_CANDI: BTM request candidate info
58*5113495bSYour Name  * @WLAN_ROAM_WTC: ROAM WTC trigger logs
59*5113495bSYour Name  * @WLAN_DHCP_DISCOVER: DHCP discover frame
60*5113495bSYour Name  * @WLAN_DHCP_OFFER: DHCP offer frame
61*5113495bSYour Name  * @WLAN_DHCP_REQUEST: DHCP Request frame
62*5113495bSYour Name  * @WLAN_DHCP_ACK: DHCP ACK
63*5113495bSYour Name  * @WLAN_DHCP_NACK: DHCP NACK
64*5113495bSYour Name  * @WLAN_EAPOL_M1: EAPOL M1
65*5113495bSYour Name  * @WLAN_EAPOL_M2: EAPOL M2
66*5113495bSYour Name  * @WLAN_EAPOL_M3: EAPOL M3
67*5113495bSYour Name  * @WLAN_EAPOL_M4: EAPOL M4
68*5113495bSYour Name  * @WLAN_GTK_M1: GTK rekey M1 frame
69*5113495bSYour Name  * @WLAN_GTK_M2: GTK Rekey M2 frame
70*5113495bSYour Name  * @WLAN_EAP_REQUEST: EAP request frame
71*5113495bSYour Name  * @WLAN_EAP_RESPONSE: EAP response frame
72*5113495bSYour Name  * @WLAN_EAP_SUCCESS: EAP success
73*5113495bSYour Name  * @WLAN_EAP_FAILURE: EAP failure
74*5113495bSYour Name  * @WLAN_CUSTOM_LOG: Additional WLAN logs
75*5113495bSYour Name  * @WLAN_TAG_MAX: MAX tag
76*5113495bSYour Name  */
77*5113495bSYour Name enum wlan_main_tag {
78*5113495bSYour Name 	WLAN_CONNECTING,
79*5113495bSYour Name 	WLAN_CONNECTING_FAIL,
80*5113495bSYour Name 	WLAN_AUTH_REQ,
81*5113495bSYour Name 	WLAN_AUTH_RESP,
82*5113495bSYour Name 	WLAN_ASSOC_REQ,
83*5113495bSYour Name 	WLAN_ASSOC_RSP,
84*5113495bSYour Name 	WLAN_REASSOC_REQ,
85*5113495bSYour Name 	WLAN_REASSOC_RSP,
86*5113495bSYour Name 	WLAN_DEAUTH_RX,
87*5113495bSYour Name 	WLAN_DEAUTH_TX,
88*5113495bSYour Name 	WLAN_DISASSOC_RX,
89*5113495bSYour Name 	WLAN_DISASSOC_TX,
90*5113495bSYour Name 	WLAN_DISCONN_BMISS,
91*5113495bSYour Name 	WLAN_ROAM_SCAN_START,
92*5113495bSYour Name 	WLAN_ROAM_SCAN_DONE,
93*5113495bSYour Name 	WLAN_ROAM_SCORE_CURR_AP,
94*5113495bSYour Name 	WLAN_ROAM_SCORE_CAND_AP,
95*5113495bSYour Name 	WLAN_ROAM_RESULT,
96*5113495bSYour Name 	WLAN_ROAM_CANCEL,
97*5113495bSYour Name 	WLAN_BTM_REQ,
98*5113495bSYour Name 	WLAN_BTM_QUERY,
99*5113495bSYour Name 	WLAN_BTM_RESP,
100*5113495bSYour Name 	WLAN_BTM_REQ_CANDI,
101*5113495bSYour Name 	WLAN_ROAM_WTC,
102*5113495bSYour Name 	WLAN_DHCP_DISCOVER,
103*5113495bSYour Name 	WLAN_DHCP_OFFER,
104*5113495bSYour Name 	WLAN_DHCP_REQUEST,
105*5113495bSYour Name 	WLAN_DHCP_ACK,
106*5113495bSYour Name 	WLAN_DHCP_NACK,
107*5113495bSYour Name 	WLAN_EAPOL_M1,
108*5113495bSYour Name 	WLAN_EAPOL_M2,
109*5113495bSYour Name 	WLAN_EAPOL_M3,
110*5113495bSYour Name 	WLAN_EAPOL_M4,
111*5113495bSYour Name 	WLAN_GTK_M1,
112*5113495bSYour Name 	WLAN_GTK_M2,
113*5113495bSYour Name 	WLAN_EAP_REQUEST,
114*5113495bSYour Name 	WLAN_EAP_RESPONSE,
115*5113495bSYour Name 	WLAN_EAP_SUCCESS,
116*5113495bSYour Name 	WLAN_EAP_FAILURE,
117*5113495bSYour Name 	WLAN_CUSTOM_LOG,
118*5113495bSYour Name 	/* Keep at last */
119*5113495bSYour Name 	WLAN_TAG_MAX,
120*5113495bSYour Name };
121*5113495bSYour Name 
122*5113495bSYour Name /**
123*5113495bSYour Name  * enum qca_conn_diag_log_event_type  - Diag Event subtype used in logging
124*5113495bSYour Name  * @WLAN_CONN_DIAG_CONNECTING_EVENT: Connecting
125*5113495bSYour Name  * @WLAN_CONN_DIAG_CONNECT_FAIL_EVENT: Connection failure
126*5113495bSYour Name  * @WLAN_CONN_DIAG_AUTH_REQ_EVENT: Authentication request frame
127*5113495bSYour Name  * @WLAN_CONN_DIAG_AUTH_RESP_EVENT: Authentication response frame
128*5113495bSYour Name  * @WLAN_CONN_DIAG_ASSOC_REQ_EVENT: Association request frame
129*5113495bSYour Name  * @WLAN_CONN_DIAG_ASSOC_RESP_EVENT: Association response frame
130*5113495bSYour Name  * @WLAN_CONN_DIAG_REASSOC_REQ_EVENT: Reassociation request frame
131*5113495bSYour Name  * @WLAN_CONN_DIAG_REASSOC_RESP_EVENT: Reassociation response frame
132*5113495bSYour Name  * @WLAN_CONN_DIAG_DEAUTH_RX_EVENT: Deauthentication frame received
133*5113495bSYour Name  * @WLAN_CONN_DIAG_DEAUTH_TX_EVENT: Deauthentication frame sent
134*5113495bSYour Name  * @WLAN_CONN_DIAG_DISASSOC_RX_EVENT: Disassociation frame received
135*5113495bSYour Name  * @WLAN_CONN_DIAG_DISASSOC_TX_EVENT: Disassociation frame sent
136*5113495bSYour Name  * @WLAN_CONN_DIAG_BMISS_EVENT: Disconnection due to beacon miss
137*5113495bSYour Name  * @WLAN_CONN_DIAG_ROAM_SCAN_START_EVENT: ROAM scan start
138*5113495bSYour Name  * @WLAN_CONN_DIAG_ROAM_SCAN_DONE_EVENT: Roam scan done
139*5113495bSYour Name  * @WLAN_CONN_DIAG_ROAM_SCORE_CUR_AP_EVENT: Roam score current AP
140*5113495bSYour Name  * @WLAN_CONN_DIAG_ROAM_SCORE_CAND_AP_EVENT: Roam Score Candidate AP
141*5113495bSYour Name  * @WLAN_CONN_DIAG_ROAM_RESULT_EVENT: Roam Result
142*5113495bSYour Name  * @WLAN_CONN_DIAG_ROAM_CANCEL_EVENT: Roam Cancel
143*5113495bSYour Name  * @WLAN_CONN_DIAG_BTM_REQ_EVENT:  BTM request
144*5113495bSYour Name  * @WLAN_CONN_DIAG_BTM_QUERY_EVENT: BTM Query frame
145*5113495bSYour Name  * @WLAN_CONN_DIAG_BTM_RESP_EVENT: BTM response frame
146*5113495bSYour Name  * @WLAN_CONN_DIAG_BTM_REQ_CAND_EVENT: BTM request candidate info
147*5113495bSYour Name  * @WLAN_CONN_DIAG_BTM_WTC_EVENT: ROAM WTC trigger logs
148*5113495bSYour Name  * @WLAN_CONN_DIAG_DHCP_DISC_EVENT: DHCP discover frame
149*5113495bSYour Name  * @WLAN_CONN_DIAG_DHCP_OFFER_EVENT: DHCP offer frame
150*5113495bSYour Name  * @WLAN_CONN_DIAG_DHCP_REQUEST_EVENT: DHCP Request frame
151*5113495bSYour Name  * @WLAN_CONN_DIAG_DHCP_ACK_EVENT: DHCP ACK
152*5113495bSYour Name  * @WLAN_CONN_DIAG_DHCP_NACK_EVENT: DHCP NACK
153*5113495bSYour Name  * @WLAN_CONN_DIAG_EAPOL_M1_EVENT: EAPOL M1
154*5113495bSYour Name  * @WLAN_CONN_DIAG_EAPOL_M2_EVENT: EAPOL M2
155*5113495bSYour Name  * @WLAN_CONN_DIAG_EAPOL_M3_EVENT: EAPOL M3
156*5113495bSYour Name  * @WLAN_CONN_DIAG_EAPOL_M4_EVENT: EAPOL M4
157*5113495bSYour Name  * @WLAN_CONN_DIAG_GTK_M1_EVENT: GTK rekey M1 frame
158*5113495bSYour Name  * @WLAN_CONN_DIAG_GTK_M2_EVENT: GTK Rekey M2 frame
159*5113495bSYour Name  * @WLAN_CONN_DIAG_EAP_REQ_EVENT: EAP request frame
160*5113495bSYour Name  * @WLAN_CONN_DIAG_EAP_RESP_EVENT: EAP response frame
161*5113495bSYour Name  * @WLAN_CONN_DIAG_EAP_SUCC_EVENT: EAP success
162*5113495bSYour Name  * @WLAN_CONN_DIAG_EAP_FAIL_EVENT: EAP failure
163*5113495bSYour Name  * @WLAN_CONN_DIAG_CUSTOM_EVENT: Additional WLAN logs
164*5113495bSYour Name  * @WLAN_CONN_DIAG_EAP_START_EVENT: EAPOL start frame
165*5113495bSYour Name  * @WLAN_CONN_DIAG_NBR_RPT_REQ_EVENT: Neighbor report request
166*5113495bSYour Name  * @WLAN_CONN_DIAG_NBR_RPT_RESP_EVENT: Neighbor report response
167*5113495bSYour Name  * @WLAN_CONN_DIAG_BCN_RPT_REQ_EVENT: Beacon report request
168*5113495bSYour Name  * @WLAN_CONN_DIAG_BCN_RPT_RESP_EVENT: Beacon report response
169*5113495bSYour Name  * @WLAN_CONN_DIAG_MLO_T2LM_REQ_EVENT: MLO T2LM request
170*5113495bSYour Name  * @WLAN_CONN_DIAG_MLO_T2LM_RESP_EVENT: MLO T2LM response
171*5113495bSYour Name  * @WLAN_CONN_DIAG_BTM_BLOCK_EVENT: BTM-drop indication
172*5113495bSYour Name  * @WLAN_CONN_DIAG_MAX: MAX tag
173*5113495bSYour Name  */
174*5113495bSYour Name enum qca_conn_diag_log_event_type {
175*5113495bSYour Name 	WLAN_CONN_DIAG_CONNECTING_EVENT = 0,
176*5113495bSYour Name 	WLAN_CONN_DIAG_CONNECT_FAIL_EVENT,
177*5113495bSYour Name 	WLAN_CONN_DIAG_AUTH_REQ_EVENT,
178*5113495bSYour Name 	WLAN_CONN_DIAG_AUTH_RESP_EVENT,
179*5113495bSYour Name 	WLAN_CONN_DIAG_ASSOC_REQ_EVENT,
180*5113495bSYour Name 	WLAN_CONN_DIAG_ASSOC_RESP_EVENT,
181*5113495bSYour Name 	WLAN_CONN_DIAG_REASSOC_REQ_EVENT,
182*5113495bSYour Name 	WLAN_CONN_DIAG_REASSOC_RESP_EVENT,
183*5113495bSYour Name 	WLAN_CONN_DIAG_DEAUTH_RX_EVENT,
184*5113495bSYour Name 	WLAN_CONN_DIAG_DEAUTH_TX_EVENT,
185*5113495bSYour Name 	WLAN_CONN_DIAG_DISASSOC_RX_EVENT,
186*5113495bSYour Name 	WLAN_CONN_DIAG_DISASSOC_TX_EVENT,
187*5113495bSYour Name 	WLAN_CONN_DIAG_BMISS_EVENT,
188*5113495bSYour Name 	WLAN_CONN_DIAG_ROAM_SCAN_START_EVENT,
189*5113495bSYour Name 	WLAN_CONN_DIAG_ROAM_SCAN_DONE_EVENT,
190*5113495bSYour Name 	WLAN_CONN_DIAG_ROAM_SCORE_CUR_AP_EVENT,
191*5113495bSYour Name 	WLAN_CONN_DIAG_ROAM_SCORE_CAND_AP_EVENT,
192*5113495bSYour Name 	WLAN_CONN_DIAG_ROAM_RESULT_EVENT,
193*5113495bSYour Name 	WLAN_CONN_DIAG_ROAM_CANCEL_EVENT,
194*5113495bSYour Name 	WLAN_CONN_DIAG_BTM_REQ_EVENT,
195*5113495bSYour Name 	WLAN_CONN_DIAG_BTM_QUERY_EVENT,
196*5113495bSYour Name 	WLAN_CONN_DIAG_BTM_RESP_EVENT,
197*5113495bSYour Name 	WLAN_CONN_DIAG_BTM_REQ_CAND_EVENT,
198*5113495bSYour Name 	WLAN_CONN_DIAG_BTM_WTC_EVENT,
199*5113495bSYour Name 	WLAN_CONN_DIAG_DHCP_DISC_EVENT,
200*5113495bSYour Name 	WLAN_CONN_DIAG_DHCP_OFFER_EVENT,
201*5113495bSYour Name 	WLAN_CONN_DIAG_DHCP_REQUEST_EVENT,
202*5113495bSYour Name 	WLAN_CONN_DIAG_DHCP_ACK_EVENT,
203*5113495bSYour Name 	WLAN_CONN_DIAG_DHCP_NACK_EVENT,
204*5113495bSYour Name 	WLAN_CONN_DIAG_EAPOL_M1_EVENT,
205*5113495bSYour Name 	WLAN_CONN_DIAG_EAPOL_M2_EVENT,
206*5113495bSYour Name 	WLAN_CONN_DIAG_EAPOL_M3_EVENT,
207*5113495bSYour Name 	WLAN_CONN_DIAG_EAPOL_M4_EVENT,
208*5113495bSYour Name 	WLAN_CONN_DIAG_GTK_M1_EVENT,
209*5113495bSYour Name 	WLAN_CONN_DIAG_GTK_M2_EVENT,
210*5113495bSYour Name 	WLAN_CONN_DIAG_EAP_REQ_EVENT,
211*5113495bSYour Name 	WLAN_CONN_DIAG_EAP_RESP_EVENT,
212*5113495bSYour Name 	WLAN_CONN_DIAG_EAP_SUCC_EVENT,
213*5113495bSYour Name 	WLAN_CONN_DIAG_EAP_FAIL_EVENT,
214*5113495bSYour Name 	WLAN_CONN_DIAG_CUSTOM_EVENT,
215*5113495bSYour Name 	WLAN_CONN_DIAG_EAP_START_EVENT,
216*5113495bSYour Name 	WLAN_CONN_DIAG_NBR_RPT_REQ_EVENT,
217*5113495bSYour Name 	WLAN_CONN_DIAG_NBR_RPT_RESP_EVENT,
218*5113495bSYour Name 	WLAN_CONN_DIAG_BCN_RPT_REQ_EVENT,
219*5113495bSYour Name 	WLAN_CONN_DIAG_BCN_RPT_RESP_EVENT,
220*5113495bSYour Name 	WLAN_CONN_DIAG_MLO_T2LM_REQ_EVENT,
221*5113495bSYour Name 	WLAN_CONN_DIAG_MLO_T2LM_RESP_EVENT,
222*5113495bSYour Name 	WLAN_CONN_DIAG_BTM_BLOCK_EVENT,
223*5113495bSYour Name 	WLAN_CONN_DIAG_MAX
224*5113495bSYour Name };
225*5113495bSYour Name 
226*5113495bSYour Name /*
227*5113495bSYour Name  * enum wlan_diag_wifi_band - Enum describing wifi band
228*5113495bSYour Name  * @WLAN_INVALID_BAND: invalid band
229*5113495bSYour Name  * @WLAN_24GHZ_BAND: 2.4 GHz band
230*5113495bSYour Name  * @WLAN_5GHZ_BAND: 5 GHz band
231*5113495bSYour Name  * @WLAN_6GHZ_BAND: 6 GHz band
232*5113495bSYour Name  */
233*5113495bSYour Name enum wlan_diag_wifi_band {
234*5113495bSYour Name 	WLAN_INVALID_BAND = 0,
235*5113495bSYour Name 	WLAN_24GHZ_BAND,
236*5113495bSYour Name 	WLAN_5GHZ_BAND,
237*5113495bSYour Name 	WLAN_6GHZ_BAND,
238*5113495bSYour Name };
239*5113495bSYour Name 
240*5113495bSYour Name /**
241*5113495bSYour Name  * enum wlan_diag_mlo_link_switch_reason - MLO link switch reason enumeration
242*5113495bSYour Name  * @LINK_STATE_SWITCH_REASON_VDEV_READY: Link switch when vdev is ready
243*5113495bSYour Name  * @LINK_STATE_SWITCH_REASON_ULL_MODE: Link switch due to ULL mode configuration
244*5113495bSYour Name  * @LINK_STATE_SWITCH_REASON_T2LM_ENABLE: Link switch due to T2LM enable
245*5113495bSYour Name  * @LINK_STATE_SWITCH_REASON_T2LM_DISABLE: Link switch due T2LM disable
246*5113495bSYour Name  * @LINK_STATE_SWITCH_REASON_FORCE_ENABLED: Link switch when link is
247*5113495bSYour Name  * forcibly enable
248*5113495bSYour Name  * @LINK_STATE_SWITCH_REASON_FORCE_DISABLED: Link switch when link is
249*5113495bSYour Name  * forcibly disable
250*5113495bSYour Name  * @LINK_STATE_SWITCH_REASON_LINK_QUALITY: Link switch due to
251*5113495bSYour Name  * poor link quality
252*5113495bSYour Name  * @LINK_STATE_SWITCH_REASON_LINK_CAPACITY: Link switch due to link capacity
253*5113495bSYour Name  * @LINK_STATE_SWITCH_REASON_RSSI: Link switch due to changes in rssi
254*5113495bSYour Name  * @LINK_STATE_SWITCH_REASON_BMISS: Link switch due to BMISS
255*5113495bSYour Name  * @LINK_STATE_SWITCH_REASON_BT_STATUS: Link switch due to BT status
256*5113495bSYour Name  * @LINK_STATE_SWITCH_REASON_MAX: Max value
257*5113495bSYour Name  */
258*5113495bSYour Name enum wlan_diag_mlo_link_switch_reason {
259*5113495bSYour Name 	LINK_STATE_SWITCH_REASON_VDEV_READY = 0,
260*5113495bSYour Name 	LINK_STATE_SWITCH_REASON_ULL_MODE = 1,
261*5113495bSYour Name 	LINK_STATE_SWITCH_REASON_T2LM_ENABLE = 2,
262*5113495bSYour Name 	LINK_STATE_SWITCH_REASON_T2LM_DISABLE = 3,
263*5113495bSYour Name 	LINK_STATE_SWITCH_REASON_FORCE_ENABLED = 4,
264*5113495bSYour Name 	LINK_STATE_SWITCH_REASON_FORCE_DISABLED = 5,
265*5113495bSYour Name 	LINK_STATE_SWITCH_REASON_LINK_QUALITY = 6,
266*5113495bSYour Name 	LINK_STATE_SWITCH_REASON_LINK_CAPACITY = 7,
267*5113495bSYour Name 	LINK_STATE_SWITCH_REASON_RSSI = 8,
268*5113495bSYour Name 	LINK_STATE_SWITCH_REASON_BMISS = 9,
269*5113495bSYour Name 	LINK_STATE_SWITCH_REASON_BT_STATUS = 10,
270*5113495bSYour Name 	LINK_STATE_SWITCH_REASON_MAX,
271*5113495bSYour Name };
272*5113495bSYour Name 
273*5113495bSYour Name /**
274*5113495bSYour Name  * enum wlan_bcn_rpt_measurement_mode - Measurement mode enum.
275*5113495bSYour Name  * Defined in IEEE Std 802.11‐2020 Table 9-103.
276*5113495bSYour Name  * @MEASURE_MODE_PASSIVE: Passive measurement mode
277*5113495bSYour Name  * @MEASURE_MODE_ACTIVE: Active measurement mode
278*5113495bSYour Name  * @MEASURE_MODE_BCN_TABLE: Beacon table measurement mode
279*5113495bSYour Name  * @MEASURE_MODE_RESERVED: Reserved
280*5113495bSYour Name  */
281*5113495bSYour Name enum wlan_bcn_rpt_measurement_mode {
282*5113495bSYour Name 	MEASURE_MODE_PASSIVE = 0,
283*5113495bSYour Name 	MEASURE_MODE_ACTIVE,
284*5113495bSYour Name 	MEASURE_MODE_BCN_TABLE,
285*5113495bSYour Name 	MEASURE_MODE_RESERVED = 0xFF
286*5113495bSYour Name };
287*5113495bSYour Name 
288*5113495bSYour Name /**
289*5113495bSYour Name  * enum wlan_diag_connect_fail_reason - WLAN diag connect fail reason code
290*5113495bSYour Name  * @WLAN_DIAG_UNSPECIFIC_REASON: Unspecific reason
291*5113495bSYour Name  * @WLAN_DIAG_NO_CANDIDATE_FOUND: No candidate found
292*5113495bSYour Name  * @WLAN_DIAG_ABORT_DUE_TO_NEW_REQ_RECVD: Aborted as new command is
293*5113495bSYour Name  * received.
294*5113495bSYour Name  * @WLAN_DIAG_BSS_SELECT_IND_FAILED: Failed BSS select indication
295*5113495bSYour Name  * @WLAN_DIAG_PEER_CREATE_FAILED: peer create failed
296*5113495bSYour Name  * @WLAN_DIAG_JOIN_FAILED: Failed in joining state
297*5113495bSYour Name  * @WLAN_DIAG_JOIN_TIMEOUT: Did not receive beacon or probe response after
298*5113495bSYour Name  * unicast probe request
299*5113495bSYour Name  * @WLAN_DIAG_AUTH_FAILED: Auth rejected by AP
300*5113495bSYour Name  * @WLAN_DIAG_AUTH_TIMEOUT: No Auth resp from AP
301*5113495bSYour Name  * @WLAN_DIAG_ASSOC_FAILED: Assoc rejected by AP
302*5113495bSYour Name  * @WLAN_DIAG_ASSOC_TIMEOUT: No Assoc resp from AP
303*5113495bSYour Name  * @WLAN_DIAG_HW_MODE_FAILURE: failed to change HW mode
304*5113495bSYour Name  * @WLAN_DIAG_SER_FAILURE: Failed to serialize command
305*5113495bSYour Name  * @WLAN_DIAG_SER_TIMEOUT: Serialization cmd timeout
306*5113495bSYour Name  * @WLAN_DIAG_GENERIC_FAILURE: Generic failure apart from above
307*5113495bSYour Name  * @WLAN_DIAG_VALID_CANDIDATE_CHECK_FAIL: Valid Candidate Check fail
308*5113495bSYour Name  */
309*5113495bSYour Name enum wlan_diag_connect_fail_reason {
310*5113495bSYour Name 	WLAN_DIAG_UNSPECIFIC_REASON = 0,
311*5113495bSYour Name 	WLAN_DIAG_NO_CANDIDATE_FOUND = 1,
312*5113495bSYour Name 	WLAN_DIAG_ABORT_DUE_TO_NEW_REQ_RECVD,
313*5113495bSYour Name 	WLAN_DIAG_BSS_SELECT_IND_FAILED,
314*5113495bSYour Name 	WLAN_DIAG_PEER_CREATE_FAILED,
315*5113495bSYour Name 	WLAN_DIAG_JOIN_FAILED,
316*5113495bSYour Name 	WLAN_DIAG_JOIN_TIMEOUT,
317*5113495bSYour Name 	WLAN_DIAG_AUTH_FAILED,
318*5113495bSYour Name 	WLAN_DIAG_AUTH_TIMEOUT,
319*5113495bSYour Name 	WLAN_DIAG_ASSOC_FAILED,
320*5113495bSYour Name 	WLAN_DIAG_ASSOC_TIMEOUT,
321*5113495bSYour Name 	WLAN_DIAG_HW_MODE_FAILURE,
322*5113495bSYour Name 	WLAN_DIAG_SER_FAILURE,
323*5113495bSYour Name 	WLAN_DIAG_SER_TIMEOUT,
324*5113495bSYour Name 	WLAN_DIAG_GENERIC_FAILURE,
325*5113495bSYour Name 	WLAN_DIAG_VALID_CANDIDATE_CHECK_FAIL,
326*5113495bSYour Name };
327*5113495bSYour Name 
328*5113495bSYour Name /**
329*5113495bSYour Name  * enum wlan_diag_btm_block_reason - BTM drop/ignore reason code
330*5113495bSYour Name  * @WLAN_DIAG_BTM_BLOCK_MBO_WO_PMF: Connected to MBO without PMF capable AP
331*5113495bSYour Name  * @WLAN_DIAG_BTM_BLOCK_UNSUPPORTED_P2P_CONC: p2p go/cli is present which
332*5113495bSYour Name  *  restricts BTM roaming
333*5113495bSYour Name  */
334*5113495bSYour Name enum wlan_diag_btm_block_reason {
335*5113495bSYour Name 	WLAN_DIAG_BTM_BLOCK_MBO_WO_PMF = 1,
336*5113495bSYour Name 	WLAN_DIAG_BTM_BLOCK_UNSUPPORTED_P2P_CONC = 2,
337*5113495bSYour Name };
338*5113495bSYour Name 
339*5113495bSYour Name /**
340*5113495bSYour Name  * struct wlan_connectivity_log_diag_cmn - Structure for diag event
341*5113495bSYour Name  * @bssid: bssid
342*5113495bSYour Name  * @vdev_id: Vdev id
343*5113495bSYour Name  * @timestamp_us: Timestamp(time of the day) in microseconds
344*5113495bSYour Name  * @fw_timestamp: FW timestamp in microseconds
345*5113495bSYour Name  * @ktime_us: Kernel Timestamp in microseconds
346*5113495bSYour Name  */
347*5113495bSYour Name struct wlan_connectivity_log_diag_cmn {
348*5113495bSYour Name 	uint8_t bssid[QDF_MAC_ADDR_SIZE];
349*5113495bSYour Name 	uint16_t vdev_id;
350*5113495bSYour Name 	uint64_t timestamp_us;
351*5113495bSYour Name 	uint64_t fw_timestamp;
352*5113495bSYour Name 	uint64_t ktime_us;
353*5113495bSYour Name } qdf_packed;
354*5113495bSYour Name 
355*5113495bSYour Name #define DIAG_STA_INFO_VERSION 1
356*5113495bSYour Name 
357*5113495bSYour Name /**
358*5113495bSYour Name  * struct wlan_diag_sta_info - STA info structure
359*5113495bSYour Name  * @diag_cmn: Common diag info
360*5113495bSYour Name  * @version: structure version
361*5113495bSYour Name  * @is_mlo: MLO connection bit
362*5113495bSYour Name  * @mac_2g: 2.4 GHz link station mac address
363*5113495bSYour Name  * @mac_5g: 5 GHz link station mac address
364*5113495bSYour Name  * @mac_6g: 6 GHz link station mac address
365*5113495bSYour Name  */
366*5113495bSYour Name struct wlan_diag_sta_info {
367*5113495bSYour Name 	struct wlan_connectivity_log_diag_cmn diag_cmn;
368*5113495bSYour Name 	uint8_t version;
369*5113495bSYour Name 	uint8_t is_mlo;
370*5113495bSYour Name 	uint8_t mac_2g[QDF_MAC_ADDR_SIZE];
371*5113495bSYour Name 	uint8_t mac_5g[QDF_MAC_ADDR_SIZE];
372*5113495bSYour Name 	uint8_t mac_6g[QDF_MAC_ADDR_SIZE];
373*5113495bSYour Name } qdf_packed;
374*5113495bSYour Name 
375*5113495bSYour Name /*
376*5113495bSYour Name  * struct wlan_diag_mlo_cmn_info - MLO common info
377*5113495bSYour Name  * @band: Indicates link on which mlo setup is initiated.
378*5113495bSYour Name  * Refer enum enum wlan_diag_wifi_band.
379*5113495bSYour Name  * @link_id: Link id of the link when link is accepted
380*5113495bSYour Name  * @vdev_id: vdev id associated with the link
381*5113495bSYour Name  * @tid_ul: TID-to-link mapping information on the uplink
382*5113495bSYour Name  * @tid_dl: TID-to-link mapping information on the downlink
383*5113495bSYour Name  * @status: MLO setup status. 0 - Success, 1 - failure
384*5113495bSYour Name  * @link_addr: Link address of the link.
385*5113495bSYour Name  */
386*5113495bSYour Name struct wlan_diag_mlo_cmn_info {
387*5113495bSYour Name 	uint8_t band;
388*5113495bSYour Name 	uint8_t link_id;
389*5113495bSYour Name 	uint8_t vdev_id;
390*5113495bSYour Name 	uint8_t tid_ul;
391*5113495bSYour Name 	uint8_t tid_dl;
392*5113495bSYour Name 	uint8_t status;
393*5113495bSYour Name 	uint8_t link_addr[QDF_MAC_ADDR_SIZE];
394*5113495bSYour Name } qdf_packed;
395*5113495bSYour Name 
396*5113495bSYour Name #define DIAG_MLO_SETUP_VERSION 1
397*5113495bSYour Name #define DIAG_MLO_SETUP_VERSION_V2 2
398*5113495bSYour Name 
399*5113495bSYour Name #define MAX_NUM_LINKS_PER_EVENT 3
400*5113495bSYour Name /**
401*5113495bSYour Name  * struct wlan_diag_mlo_setup - MLO setup structure
402*5113495bSYour Name  * @diag_cmn: Common diag info
403*5113495bSYour Name  * @version: structure version
404*5113495bSYour Name  * @num_links: Number of links associated for MLO setup
405*5113495bSYour Name  * @reserved: Reserved field
406*5113495bSYour Name  * @status: status code of the link. Non-zero value when link is rejected
407*5113495bSYour Name  * @mlo_cmn_info: MLO common info
408*5113495bSYour Name  */
409*5113495bSYour Name struct wlan_diag_mlo_setup {
410*5113495bSYour Name 	struct wlan_connectivity_log_diag_cmn diag_cmn;
411*5113495bSYour Name 	uint8_t version;
412*5113495bSYour Name 	uint8_t num_links;
413*5113495bSYour Name 	uint16_t reserved;
414*5113495bSYour Name 	struct wlan_diag_mlo_cmn_info mlo_cmn_info[MAX_NUM_LINKS_PER_EVENT];
415*5113495bSYour Name } qdf_packed;
416*5113495bSYour Name 
417*5113495bSYour Name #define DIAG_MLO_RECONFIG_VERSION 1
418*5113495bSYour Name 
419*5113495bSYour Name /**
420*5113495bSYour Name  * struct wlan_diag_mlo_reconfig - MLO reconfig diag event structure
421*5113495bSYour Name  * @diag_cmn: Common diag info
422*5113495bSYour Name  * @version: structure version
423*5113495bSYour Name  * @reserved: Reserved field
424*5113495bSYour Name  * @mlo_cmn_info: MLO common info
425*5113495bSYour Name  */
426*5113495bSYour Name struct wlan_diag_mlo_reconfig {
427*5113495bSYour Name 	struct wlan_connectivity_log_diag_cmn diag_cmn;
428*5113495bSYour Name 	uint32_t version:8;
429*5113495bSYour Name 	uint32_t reserved:24;
430*5113495bSYour Name 	struct wlan_diag_mlo_cmn_info mlo_cmn_info;
431*5113495bSYour Name } qdf_packed;
432*5113495bSYour Name 
433*5113495bSYour Name #define DIAG_MLO_T2LM_STATUS_VERSION 1
434*5113495bSYour Name #define DIAG_MLO_T2LM_STATUS_VERSION_V2 2
435*5113495bSYour Name 
436*5113495bSYour Name /**
437*5113495bSYour Name  * struct wlan_diag_mlo_t2lm_status - MLO T2LM status diag event structure
438*5113495bSYour Name  * @diag_cmn: Common diag info
439*5113495bSYour Name  * @version: structure version
440*5113495bSYour Name  * @num_links: Number of links associated for T2LM status
441*5113495bSYour Name  * @reserved: Reserved field
442*5113495bSYour Name  * @mlo_cmn_info: MLO common info
443*5113495bSYour Name  */
444*5113495bSYour Name struct wlan_diag_mlo_t2lm_status {
445*5113495bSYour Name 	struct wlan_connectivity_log_diag_cmn diag_cmn;
446*5113495bSYour Name 	uint8_t version;
447*5113495bSYour Name 	uint8_t num_links;
448*5113495bSYour Name 	uint16_t reserved;
449*5113495bSYour Name 	struct wlan_diag_mlo_cmn_info mlo_cmn_info[MAX_NUM_LINKS_PER_EVENT];
450*5113495bSYour Name } qdf_packed;
451*5113495bSYour Name 
452*5113495bSYour Name #define DIAG_MLO_T2LM_REQ_RESP_VERSION 1
453*5113495bSYour Name 
454*5113495bSYour Name /**
455*5113495bSYour Name  * struct wlan_diag_mlo_t2lm_req_resp - MLO T2LM Req/Resp diag event structure
456*5113495bSYour Name  * @diag_cmn: Common diag info
457*5113495bSYour Name  * @version: Structure version
458*5113495bSYour Name  * @band: Indicates the band of the link
459*5113495bSYour Name  * @status: status code of TID-to-Link mapping response frame
460*5113495bSYour Name  * @token: Dialog Token field of TID-To-Link Mapping Request/Response frame
461*5113495bSYour Name  * @is_rx: Indicates the direction of packet. 0 - TX and 1 - RX
462*5113495bSYour Name  * @tx_status: tx status of transmitted packet. Refer enum qdf_dp_tx_rx_status
463*5113495bSYour Name  * @subtype: Subtype of the event
464*5113495bSYour Name  * @reserved: Reserved field
465*5113495bSYour Name  */
466*5113495bSYour Name struct wlan_diag_mlo_t2lm_req_resp {
467*5113495bSYour Name 	struct wlan_connectivity_log_diag_cmn diag_cmn;
468*5113495bSYour Name 	uint8_t version;
469*5113495bSYour Name 	uint8_t band;
470*5113495bSYour Name 	uint8_t status;
471*5113495bSYour Name 	uint8_t token;
472*5113495bSYour Name 	uint8_t is_rx:1;
473*5113495bSYour Name 	uint8_t tx_status:7;
474*5113495bSYour Name 	uint8_t subtype;
475*5113495bSYour Name 	uint16_t reserved;
476*5113495bSYour Name } qdf_packed;
477*5113495bSYour Name 
478*5113495bSYour Name #define DIAG_MLO_T2LM_TEARDOWN_VERSION 1
479*5113495bSYour Name 
480*5113495bSYour Name /**
481*5113495bSYour Name  * struct wlan_diag_mlo_t2lm_teardown - MLO T2LM Teardown diag event structure
482*5113495bSYour Name  * @diag_cmn: Common diag info
483*5113495bSYour Name  * @version: structure version
484*5113495bSYour Name  * @band: Indicates the band of the link. Refer enum wlan_diag_wifi_band
485*5113495bSYour Name  * @tx_status: tx status of transmitted packet. Refer enum qdf_dp_tx_rx_status
486*5113495bSYour Name  * @reserved: Reserved field
487*5113495bSYour Name  */
488*5113495bSYour Name struct wlan_diag_mlo_t2lm_teardown {
489*5113495bSYour Name 	struct wlan_connectivity_log_diag_cmn diag_cmn;
490*5113495bSYour Name 	uint8_t version;
491*5113495bSYour Name 	uint8_t band;
492*5113495bSYour Name 	uint8_t tx_status;
493*5113495bSYour Name 	uint8_t reserved;
494*5113495bSYour Name } qdf_packed;
495*5113495bSYour Name 
496*5113495bSYour Name #define DIAG_MLO_LINK_STATUS_VERSION 1
497*5113495bSYour Name #define DIAG_MLO_LINK_STATUS_VERSION_2 2
498*5113495bSYour Name /**
499*5113495bSYour Name  * struct wlan_diag_mlo_link_status - MLO Link status diag event structure
500*5113495bSYour Name  * @diag_cmn: Common diag info
501*5113495bSYour Name  * @version: structure version
502*5113495bSYour Name  * @active_link: List of current active links. BIT 0: 2.4 GHz BIT 1: 5 GHz
503*5113495bSYour Name  * BIT 2: 6 GHz
504*5113495bSYour Name  * @prev_active_link: List of previous active links. BIT 0: 2.4 G Hz
505*5113495bSYour Name  * BIT 1: 5 GHz BIT 2: 6 GHz
506*5113495bSYour Name  * @associated_links: Links associated in the current connection.
507*5113495bSYour Name  * BIT 0: 2.4 GHz BIT 1: 5 GHz BIT 2: 6 GHz
508*5113495bSYour Name  * @reserved: Reserved field
509*5113495bSYour Name  * @reason: Reason for changed link status. Refer
510*5113495bSYour Name  * enum wlan_diag_mlo_link_switch_reason
511*5113495bSYour Name  */
512*5113495bSYour Name struct wlan_diag_mlo_link_status {
513*5113495bSYour Name 	struct wlan_connectivity_log_diag_cmn diag_cmn;
514*5113495bSYour Name 	uint8_t version;
515*5113495bSYour Name 	uint8_t active_link:5;
516*5113495bSYour Name 	uint8_t prev_active_link:5;
517*5113495bSYour Name 	uint8_t associated_links:5;
518*5113495bSYour Name 	uint8_t reserved:1;
519*5113495bSYour Name 	uint8_t reason;
520*5113495bSYour Name } qdf_packed;
521*5113495bSYour Name 
522*5113495bSYour Name #define DIAG_NBR_RPT_VERSION 1
523*5113495bSYour Name #define DIAG_NBR_RPT_VERSION_2 2
524*5113495bSYour Name 
525*5113495bSYour Name /**
526*5113495bSYour Name  * struct wlan_diag_nbr_rpt - Neighbor report structure
527*5113495bSYour Name  * @diag_cmn: Common diag info
528*5113495bSYour Name  * @version: structure version
529*5113495bSYour Name  * @num_rpt: the number of neighbor report elements in response frame.
530*5113495bSYour Name  * @subtype: Event Subtype
531*5113495bSYour Name  * @token: dialog token. Dialog Token is a nonzero value chosen by the STA
532*5113495bSYour Name  * @num_freq: Number of frequency in response frame
533*5113495bSYour Name  * @ssid_len: SSID length
534*5113495bSYour Name  * @seq_num: Sequence number
535*5113495bSYour Name  * @ssid: SSID
536*5113495bSYour Name  * @freq: Frequency list in response frame
537*5113495bSYour Name  * @band: Band on which packet was received or transmitted.
538*5113495bSYour Name  * Refer enum enum wlan_diag_wifi_band
539*5113495bSYour Name  * @reserved: Reserved field
540*5113495bSYour Name  */
541*5113495bSYour Name struct wlan_diag_nbr_rpt {
542*5113495bSYour Name 	struct wlan_connectivity_log_diag_cmn diag_cmn;
543*5113495bSYour Name 	uint8_t version;
544*5113495bSYour Name 	uint8_t num_rpt;
545*5113495bSYour Name 	uint8_t subtype;
546*5113495bSYour Name 	uint8_t token;
547*5113495bSYour Name 	uint16_t num_freq;
548*5113495bSYour Name 	uint16_t ssid_len;
549*5113495bSYour Name 	uint32_t seq_num;
550*5113495bSYour Name 	char ssid[WLAN_SSID_MAX_LEN];
551*5113495bSYour Name 	uint32_t freq[WLAN_MAX_LOGGING_FREQ];
552*5113495bSYour Name 	uint32_t band:8;
553*5113495bSYour Name 	uint32_t reserved:24;
554*5113495bSYour Name } qdf_packed;
555*5113495bSYour Name 
556*5113495bSYour Name #define DIAG_BCN_RPT_VERSION 1
557*5113495bSYour Name #define DIAG_BCN_RPT_VERSION_2 2
558*5113495bSYour Name 
559*5113495bSYour Name /**
560*5113495bSYour Name  * struct wlan_diag_bcn_rpt - Beacon report structure
561*5113495bSYour Name  * @diag_cmn: Common diag info
562*5113495bSYour Name  * @version: structure version
563*5113495bSYour Name  * @subtype: Event Subtype
564*5113495bSYour Name  * @diag_token: Dialog token
565*5113495bSYour Name  * @op_class: Operating classes that include primary channels
566*5113495bSYour Name  * @chan: The channel number field in the beacon report request.
567*5113495bSYour Name  * @req_mode: hex value defines Duration mandatory, parallel, enable,
568*5113495bSYour Name  * request, and report bits.
569*5113495bSYour Name  * @num_rpt: the number of neighbor report elements in response frame.
570*5113495bSYour Name  * @meas_token: A nonzero number that is unique among the Measurement Request
571*5113495bSYour Name  * elements
572*5113495bSYour Name  * @mode: Mode used for measurement.Values defined in IEEE
573*5113495bSYour Name  * Std 802.11‐2020 Table 9-103.
574*5113495bSYour Name  * @duration: The duration over which the Beacon report was measured.(in ms)
575*5113495bSYour Name  * @seq_num: Sequence number.
576*5113495bSYour Name  * @band: Band on which packet was received or transmitted.
577*5113495bSYour Name  * Refer enum enum wlan_diag_wifi_band
578*5113495bSYour Name  * @reserved: Reserved field
579*5113495bSYour Name  */
580*5113495bSYour Name struct wlan_diag_bcn_rpt {
581*5113495bSYour Name 	struct wlan_connectivity_log_diag_cmn diag_cmn;
582*5113495bSYour Name 	uint8_t version;
583*5113495bSYour Name 	uint8_t subtype;
584*5113495bSYour Name 	uint8_t diag_token;
585*5113495bSYour Name 	uint8_t op_class;
586*5113495bSYour Name 	uint8_t chan;
587*5113495bSYour Name 	uint8_t req_mode;
588*5113495bSYour Name 	uint8_t num_rpt;
589*5113495bSYour Name 	uint8_t meas_token;
590*5113495bSYour Name 	uint16_t mode;
591*5113495bSYour Name 	uint16_t duration;
592*5113495bSYour Name 	uint32_t seq_num;
593*5113495bSYour Name 	uint32_t band:8;
594*5113495bSYour Name 	uint32_t reserved:24;
595*5113495bSYour Name } qdf_packed;
596*5113495bSYour Name 
597*5113495bSYour Name #define DIAG_ROAM_CAND_VERSION 1
598*5113495bSYour Name #define DIAG_ROAM_CAND_VERSION_V2 2
599*5113495bSYour Name 
600*5113495bSYour Name /**
601*5113495bSYour Name  * struct wlan_diag_roam_candidate_info  - Roam candidate information for
602*5113495bSYour Name  * logging
603*5113495bSYour Name  * @diag_cmn: Common diag info
604*5113495bSYour Name  * @version: Structure Version
605*5113495bSYour Name  * @is_current_ap: Is the entry candidate AP or connected AP
606*5113495bSYour Name  * @is_mlo: MLO connection indicator
607*5113495bSYour Name  * @reserved: Reserved
608*5113495bSYour Name  * @idx: Entry index
609*5113495bSYour Name  * @cu_load: Channel utilization load of the AP in percentage
610*5113495bSYour Name  * @subtype: diag event subtype defined in enum qca_conn_diag_log_event_type
611*5113495bSYour Name  * @total_score: Total candidate AP score
612*5113495bSYour Name  * @freq: Candidate AP channel frequency in MHz
613*5113495bSYour Name  * @rssi: Candidate AP RSSI in dBm
614*5113495bSYour Name  * @etp: Estimated throughput value of the AP in Kbps
615*5113495bSYour Name  */
616*5113495bSYour Name struct wlan_diag_roam_candidate_info {
617*5113495bSYour Name 	struct wlan_connectivity_log_diag_cmn diag_cmn;
618*5113495bSYour Name 	uint8_t version;
619*5113495bSYour Name 	uint8_t is_current_ap:1;
620*5113495bSYour Name 	uint8_t is_mlo:1;
621*5113495bSYour Name 	uint8_t reserved:6;
622*5113495bSYour Name 	uint16_t idx;
623*5113495bSYour Name 	uint16_t cu_load;
624*5113495bSYour Name 	uint16_t subtype;
625*5113495bSYour Name 	uint32_t total_score;
626*5113495bSYour Name 	uint32_t freq;
627*5113495bSYour Name 	int32_t rssi;
628*5113495bSYour Name 	uint32_t etp;
629*5113495bSYour Name } qdf_packed;
630*5113495bSYour Name 
631*5113495bSYour Name #define DIAG_SCAN_DONE_VERSION 1
632*5113495bSYour Name 
633*5113495bSYour Name /**
634*5113495bSYour Name  * struct wlan_diag_roam_scan_done - Roam scan related information
635*5113495bSYour Name  * @diag_cmn: Common diag info
636*5113495bSYour Name  * @version: Structure Version
637*5113495bSYour Name  * @btcoex_active: Is there active bluetooth connection
638*5113495bSYour Name  * @reserved: Reserved field
639*5113495bSYour Name  * @cand_ap_count: Roam candidate AP count
640*5113495bSYour Name  * @num_scanned_freq: Number of scanned frequencies
641*5113495bSYour Name  * @scan_freq: Array of scanned frequencies value in MHz
642*5113495bSYour Name  */
643*5113495bSYour Name struct wlan_diag_roam_scan_done {
644*5113495bSYour Name 	struct wlan_connectivity_log_diag_cmn diag_cmn;
645*5113495bSYour Name 	uint8_t version;
646*5113495bSYour Name 	uint8_t btcoex_active:1;
647*5113495bSYour Name 	uint8_t reserved:7;
648*5113495bSYour Name 	uint16_t cand_ap_count;
649*5113495bSYour Name 	uint16_t num_scanned_freq;
650*5113495bSYour Name 	uint32_t scan_freq[WLAN_MAX_LOGGING_FREQ];
651*5113495bSYour Name } qdf_packed;
652*5113495bSYour Name 
653*5113495bSYour Name #define DIAG_ROAM_RESULT_VERSION 1
654*5113495bSYour Name 
655*5113495bSYour Name /**
656*5113495bSYour Name  * struct wlan_diag_roam_result - Roam result data
657*5113495bSYour Name  * @diag_cmn: Common diag info
658*5113495bSYour Name  * @version: Structure Version
659*5113495bSYour Name  * @is_roam_successful: True if roamed successfully or false if roaming failed
660*5113495bSYour Name  * @is_mlo: Indicates whether the current connection is a MLO connection
661*5113495bSYour Name  * @reserved: Reserved
662*5113495bSYour Name  * @roam_fail_reason: Roam failure reason code defined in enum
663*5113495bSYour Name  * wlan_roam_failure_reason_code
664*5113495bSYour Name  */
665*5113495bSYour Name struct wlan_diag_roam_result {
666*5113495bSYour Name 	struct wlan_connectivity_log_diag_cmn diag_cmn;
667*5113495bSYour Name 	uint8_t version;
668*5113495bSYour Name 	uint8_t is_roam_successful:1;
669*5113495bSYour Name 	uint8_t is_mlo:1;
670*5113495bSYour Name 	uint8_t reserved:6;
671*5113495bSYour Name 	uint16_t roam_fail_reason;
672*5113495bSYour Name } qdf_packed;
673*5113495bSYour Name 
674*5113495bSYour Name #define DIAG_ROAM_SCAN_START_VERSION 1
675*5113495bSYour Name #define DIAG_ROAM_SCAN_START_VERSION_V2 2
676*5113495bSYour Name 
677*5113495bSYour Name /**
678*5113495bSYour Name  * struct wlan_diag_roam_scan_start - Structure to store roam scan trigger
679*5113495bSYour Name  * related data.
680*5113495bSYour Name  * @diag_cmn: Common diag info
681*5113495bSYour Name  * @version: Structure Version
682*5113495bSYour Name  * @is_full_scan: True if the scan is Full scan. False if the roam scan is
683*5113495bSYour Name  * partial channel map scan
684*5113495bSYour Name  * @band: Band involved in the roaming during a MLO connection.
685*5113495bSYour Name  * Refer enum enum wlan_diag_wifi_band
686*5113495bSYour Name  * @cu:  Current connected channel load in percentage
687*5113495bSYour Name  * @trigger_reason: Roam trigger reason defined by enum roam_trigger_reason
688*5113495bSYour Name  * @trigger_sub_reason: Roam scan trigger sub reason indicating if
689*5113495bSYour Name  * periodic/inactivity scan timer initiated roam. Defined by enum
690*5113495bSYour Name  * roam_trigger_sub_reason
691*5113495bSYour Name  * @rssi: Connected AP RSSI in dBm
692*5113495bSYour Name  * @rssi_thresh: Roam scan trigger threshold in dBm
693*5113495bSYour Name  */
694*5113495bSYour Name struct wlan_diag_roam_scan_start {
695*5113495bSYour Name 	struct wlan_connectivity_log_diag_cmn diag_cmn;
696*5113495bSYour Name 	uint8_t version;
697*5113495bSYour Name 	uint8_t is_full_scan:1;
698*5113495bSYour Name 	uint8_t band:7;
699*5113495bSYour Name 	uint16_t cu;
700*5113495bSYour Name 	uint32_t trigger_reason;
701*5113495bSYour Name 	uint32_t trigger_sub_reason;
702*5113495bSYour Name 	int32_t rssi;
703*5113495bSYour Name 	int32_t rssi_thresh;
704*5113495bSYour Name } qdf_packed;
705*5113495bSYour Name 
706*5113495bSYour Name #define DIAG_BTM_CAND_VERSION 1
707*5113495bSYour Name 
708*5113495bSYour Name /**
709*5113495bSYour Name  * struct wlan_diag_btm_cand_info  - BTM candidate information
710*5113495bSYour Name  * @diag_cmn: Common diag info
711*5113495bSYour Name  * @version: Structure Version
712*5113495bSYour Name  * @pad: Padded field
713*5113495bSYour Name  * @idx: Candidate index
714*5113495bSYour Name  * @preference: Candidate preference
715*5113495bSYour Name  */
716*5113495bSYour Name struct wlan_diag_btm_cand_info {
717*5113495bSYour Name 	struct wlan_connectivity_log_diag_cmn diag_cmn;
718*5113495bSYour Name 	uint8_t version;
719*5113495bSYour Name 	uint8_t pad;
720*5113495bSYour Name 	uint16_t idx;
721*5113495bSYour Name 	uint32_t preference;
722*5113495bSYour Name } qdf_packed;
723*5113495bSYour Name 
724*5113495bSYour Name #define DIAG_BTM_VERSION 1
725*5113495bSYour Name #define DIAG_BTM_VERSION_2 2
726*5113495bSYour Name 
727*5113495bSYour Name /**
728*5113495bSYour Name  * struct wlan_diag_btm_info - BTM frame related logging data
729*5113495bSYour Name  * @diag_cmn: Common diag info
730*5113495bSYour Name  * @version: Structure Version
731*5113495bSYour Name  * @reason: Query Reason field. Contains one of the values defined in IEEE
732*5113495bSYour Name  * Std 802.11‐2020 Table 9-198—Transition and Transition Query reasons
733*5113495bSYour Name  * @mode: BTM Request Mode field
734*5113495bSYour Name  * @sub_reason: WTC sub reason code field in the BTM WTC vendor specific IE
735*5113495bSYour Name  * @cand_lst_cnt: Candidates list in the BTM frame
736*5113495bSYour Name  * @status: BSS Transition management status codes defined in
737*5113495bSYour Name  * 802.11‐2020 Table 9-428—BTM status code definitions
738*5113495bSYour Name  * @delay: BSS Termination Delay field
739*5113495bSYour Name  * @is_disassoc_imminent: Disassociation imminent bit
740*5113495bSYour Name  * @band: indicates the link involved in MLO conenection.
741*5113495bSYour Name  * Refer enum enum wlan_diag_wifi_band
742*5113495bSYour Name  * @token: dialog token. Dialog Token is a nonzero value chosen by the STA
743*5113495bSYour Name  * @wtc_duration: WTC duration field in minutes
744*5113495bSYour Name  * while sending the BTM frame to identify the query/request/response
745*5113495bSYour Name  * transaction
746*5113495bSYour Name  * @subtype: Event Subtype
747*5113495bSYour Name  * @validity_timer: Validity interval in TBTT
748*5113495bSYour Name  * @disassoc_tim: Time after which the AP disassociates the STA, defined
749*5113495bSYour Name  * in TBTT.
750*5113495bSYour Name  */
751*5113495bSYour Name struct wlan_diag_btm_info {
752*5113495bSYour Name 	struct wlan_connectivity_log_diag_cmn diag_cmn;
753*5113495bSYour Name 	uint8_t version;
754*5113495bSYour Name 	uint8_t reason;
755*5113495bSYour Name 	uint8_t mode;
756*5113495bSYour Name 	uint8_t sub_reason;
757*5113495bSYour Name 	uint8_t cand_lst_cnt;
758*5113495bSYour Name 	uint8_t status;
759*5113495bSYour Name 	uint8_t delay;
760*5113495bSYour Name 	uint8_t is_disassoc_imminent:1;
761*5113495bSYour Name 	uint8_t band:7;
762*5113495bSYour Name 	uint8_t token;
763*5113495bSYour Name 	uint8_t subtype;
764*5113495bSYour Name 	uint16_t wtc_duration;
765*5113495bSYour Name 	uint32_t validity_timer;
766*5113495bSYour Name 	uint32_t disassoc_tim;
767*5113495bSYour Name } qdf_packed;
768*5113495bSYour Name 
769*5113495bSYour Name #define DIAG_MGMT_VERSION 1
770*5113495bSYour Name #define DIAG_MGMT_VERSION_V2 2
771*5113495bSYour Name #define MAX_VSIE_LEN 255
772*5113495bSYour Name 
773*5113495bSYour Name /**
774*5113495bSYour Name  * struct wlan_diag_packet_info - Data packets related info
775*5113495bSYour Name  * @diag_cmn: Common diag info
776*5113495bSYour Name  * @version: Structure Version
777*5113495bSYour Name  * @auth_algo: authentication algorithm number defined in IEEE Std 802.11‐2020
778*5113495bSYour Name  * @auth_frame_type: Authentication frame sub-type for SAE authentication
779*5113495bSYour Name  * defined in Section 9.4.1.1 Authentication Algorithm Number field in
780*5113495bSYour Name  * IEEE Std 802.11‐2020.
781*5113495bSYour Name  * @auth_seq_num: Authentication frame transaction sequence number
782*5113495bSYour Name  * @status: Frame status code as defined in IEEE Std
783*5113495bSYour Name  * 802.11‐2020 Table 9-50—Status codes.
784*5113495bSYour Name  * @tx_status: Frame TX status defined by enum qdf_dp_tx_rx_status
785*5113495bSYour Name  * @reason: reason code defined in Table 9-49 Reason codes field’ from the
786*5113495bSYour Name  * IEEE 802.11 standard document.
787*5113495bSYour Name  * @is_retry_frame: Retry frame indicator
788*5113495bSYour Name  * @is_tx: Packet direction indicator. 0 - RX, 1 - TX
789*5113495bSYour Name  * @supported_links: link id bitmap indicates the links involved
790*5113495bSYour Name  * in MLO connection.
791*5113495bSYour Name  * @reserved: Reserved field
792*5113495bSYour Name  * @subtype: Diag event defined in  enum qca_conn_diag_log_event_type
793*5113495bSYour Name  * @assoc_id: Association ID
794*5113495bSYour Name  * @eap_len: EAP data length
795*5113495bSYour Name  * @eap_type: EAP type. Values defined by IANA at:
796*5113495bSYour Name  * https://www.iana.org/assignments/eap-numbers
797*5113495bSYour Name  * @sn: Frame sequence number
798*5113495bSYour Name  * @rssi: Peer RSSI in dBm
799*5113495bSYour Name  * @tx_fail_reason: tx failure reason printed on TX_FAIL status.
800*5113495bSYour Name  * Refer enum qdf_dp_tx_rx_status
801*5113495bSYour Name  * @mld_addr: MLD mac address
802*5113495bSYour Name  * @vsie_len: VSIE length
803*5113495bSYour Name  * @vsie: VSIE
804*5113495bSYour Name  */
805*5113495bSYour Name struct wlan_diag_packet_info {
806*5113495bSYour Name 	struct wlan_connectivity_log_diag_cmn diag_cmn;
807*5113495bSYour Name 	uint8_t version;
808*5113495bSYour Name 	uint8_t auth_algo;
809*5113495bSYour Name 	uint8_t auth_frame_type;
810*5113495bSYour Name 	uint8_t auth_seq_num;
811*5113495bSYour Name 	uint8_t status;
812*5113495bSYour Name 	uint8_t tx_status;
813*5113495bSYour Name 	uint8_t reason;
814*5113495bSYour Name 	uint8_t is_retry_frame:1;
815*5113495bSYour Name 	uint8_t is_tx:1;
816*5113495bSYour Name 	uint8_t supported_links:6;
817*5113495bSYour Name 	uint16_t subtype;
818*5113495bSYour Name 	uint16_t assoc_id;
819*5113495bSYour Name 	uint16_t eap_len;
820*5113495bSYour Name 	uint16_t eap_type;
821*5113495bSYour Name 	uint32_t sn;
822*5113495bSYour Name 	int32_t rssi;
823*5113495bSYour Name 	uint8_t tx_fail_reason;
824*5113495bSYour Name 	uint8_t mld_addr[QDF_MAC_ADDR_SIZE];
825*5113495bSYour Name 	uint8_t vsie_len;
826*5113495bSYour Name 	uint8_t vsie[MAX_VSIE_LEN];
827*5113495bSYour Name } qdf_packed;
828*5113495bSYour Name 
829*5113495bSYour Name #define DIAG_CONN_VERSION 1
830*5113495bSYour Name 
831*5113495bSYour Name /**
832*5113495bSYour Name  * struct wlan_diag_connect - Connection related info
833*5113495bSYour Name  * @diag_cmn: Common diag info
834*5113495bSYour Name  * @version: Version number
835*5113495bSYour Name  * @auth_algo: Authentication algorithm number field as defined in
836*5113495bSYour Name  * IEEE 802.11 - 2020 standard section 9.4.1.1
837*5113495bSYour Name  * @bt_coex: Is there active bluetooth connection
838*5113495bSYour Name  * @reserved: Reserved field
839*5113495bSYour Name  * @ssid_len: Length of SSID
840*5113495bSYour Name  * @ssid: SSID
841*5113495bSYour Name  * @bssid_hint: BSSID hint provided in the connect request
842*5113495bSYour Name  * @reason: failure reason. Refer enum wlan_cm_connect_fail_reason
843*5113495bSYour Name  * @akm: Auth key management suite defined in IEEE Std 802.11‐2020
844*5113495bSYour Name  * Table 9-151—AKM suite selectors.
845*5113495bSYour Name  * @subtype: Event subtype defined in enum qca_conn_diag_log_event_type.
846*5113495bSYour Name  * @freq: Frequency in MHz
847*5113495bSYour Name  * @freq_hint: Frequency Hint in MHz
848*5113495bSYour Name  * @pairwise_cipher: Pairwise suite value as defined in IEEE 802.11 2020
849*5113495bSYour Name  * Table 12-10—Integrity and key wrap algorithms.
850*5113495bSYour Name  * @grp_cipher: Group cipher suite value as defined in
851*5113495bSYour Name  * Table 12-10—Integrity and key wrap algorithm in IEEE 802.11 2020.
852*5113495bSYour Name  * @grp_mgmt: Group management cipher suite as defined in
853*5113495bSYour Name  * Table 12-10—Integrity and key wrap algorithms in IEEE 802.11 2020.
854*5113495bSYour Name  */
855*5113495bSYour Name struct wlan_diag_connect {
856*5113495bSYour Name 	struct wlan_connectivity_log_diag_cmn diag_cmn;
857*5113495bSYour Name 	uint8_t version;
858*5113495bSYour Name 	uint8_t auth_algo;
859*5113495bSYour Name 	uint8_t bt_coex:1;
860*5113495bSYour Name 	uint8_t reserved:7;
861*5113495bSYour Name 	uint8_t ssid_len;
862*5113495bSYour Name 	char ssid[WLAN_SSID_MAX_LEN];
863*5113495bSYour Name 	uint8_t bssid_hint[6];
864*5113495bSYour Name 	uint16_t reason;
865*5113495bSYour Name 	uint32_t akm;
866*5113495bSYour Name 	uint32_t subtype;
867*5113495bSYour Name 	uint32_t freq;
868*5113495bSYour Name 	uint32_t freq_hint;
869*5113495bSYour Name 	uint32_t pairwise_cipher;
870*5113495bSYour Name 	uint32_t grp_cipher;
871*5113495bSYour Name 	uint32_t grp_mgmt;
872*5113495bSYour Name } qdf_packed;
873*5113495bSYour Name 
874*5113495bSYour Name /**
875*5113495bSYour Name  * struct wlan_roam_candidate_info  - Roam candidate information for logging
876*5113495bSYour Name  * @cand_bssid: BSSID of the candidate AP
877*5113495bSYour Name  * @is_current_ap: Is the entry candidate AP or connected AP
878*5113495bSYour Name  * @idx: Entry index
879*5113495bSYour Name  * @cu_load: Channel utilization load of the AP in percentage
880*5113495bSYour Name  * @freq: Candidate AP channel frequency in MHz
881*5113495bSYour Name  * @total_score: Total candidate AP score
882*5113495bSYour Name  * @rssi: Candidate AP RSSI in dBm
883*5113495bSYour Name  * @etp: Estimated throughput value of the AP in Kbps
884*5113495bSYour Name  */
885*5113495bSYour Name struct wlan_roam_candidate_info {
886*5113495bSYour Name 	struct qdf_mac_addr cand_bssid;
887*5113495bSYour Name 	bool is_current_ap;
888*5113495bSYour Name 	uint8_t idx;
889*5113495bSYour Name 	uint8_t cu_load;
890*5113495bSYour Name 	qdf_freq_t freq;
891*5113495bSYour Name 	uint16_t total_score;
892*5113495bSYour Name 	int32_t rssi;
893*5113495bSYour Name 	uint32_t etp;
894*5113495bSYour Name };
895*5113495bSYour Name 
896*5113495bSYour Name /**
897*5113495bSYour Name  * struct wlan_roam_scan_info  - Roam scan related information
898*5113495bSYour Name  * @cand_ap_count: Roam candidate AP count
899*5113495bSYour Name  * @num_scanned_freq: Number of scanned frequencies
900*5113495bSYour Name  * @is_btcoex_active: Is bluetooth coex active
901*5113495bSYour Name  * @scan_freq: Array of scanned frequencies value in MHz
902*5113495bSYour Name  */
903*5113495bSYour Name struct wlan_roam_scan_info {
904*5113495bSYour Name 	uint8_t cand_ap_count;
905*5113495bSYour Name 	uint16_t num_scanned_freq;
906*5113495bSYour Name 	bool is_btcoex_active;
907*5113495bSYour Name 	qdf_freq_t scan_freq[NUM_CHANNELS];
908*5113495bSYour Name };
909*5113495bSYour Name 
910*5113495bSYour Name /**
911*5113495bSYour Name  * struct wlan_roam_result_info  - Roam result data
912*5113495bSYour Name  * @roam_fail_reason: Roam failure reason code defined in enum
913*5113495bSYour Name  * wlan_roam_failure_reason_code
914*5113495bSYour Name  * @is_roam_successful: True if roamed successfully or false if roaming failed
915*5113495bSYour Name  */
916*5113495bSYour Name struct wlan_roam_result_info {
917*5113495bSYour Name 	enum wlan_roam_failure_reason_code roam_fail_reason;
918*5113495bSYour Name 	bool is_roam_successful;
919*5113495bSYour Name };
920*5113495bSYour Name 
921*5113495bSYour Name /**
922*5113495bSYour Name  * struct wlan_roam_trigger_info - Structure to store roam trigger related data.
923*5113495bSYour Name  * @is_full_scan: True if the scan is Full scan. False if the roam scan is
924*5113495bSYour Name  * partial channel map scan
925*5113495bSYour Name  * @trigger_reason: Roam trigger reason defined by enum roam_trigger_reason
926*5113495bSYour Name  * @trigger_sub_reason: Roam scan trigger sub reason indicating if
927*5113495bSYour Name  * periodic/inactivity scan timer initiated roam. Defined by enum
928*5113495bSYour Name  * roam_trigger_sub_reason
929*5113495bSYour Name  * @cu_load:  Current connected channel load in percentage
930*5113495bSYour Name  * @current_rssi: Connected AP RSSI in dBm
931*5113495bSYour Name  * @rssi_threshold: Roam scan trigger threshold in dBm
932*5113495bSYour Name  */
933*5113495bSYour Name struct wlan_roam_trigger_info {
934*5113495bSYour Name 	bool is_full_scan;
935*5113495bSYour Name 	enum roam_trigger_reason trigger_reason;
936*5113495bSYour Name 	enum roam_trigger_sub_reason trigger_sub_reason;
937*5113495bSYour Name 	uint8_t cu_load;
938*5113495bSYour Name 	int32_t current_rssi;
939*5113495bSYour Name 	int32_t rssi_threshold;
940*5113495bSYour Name };
941*5113495bSYour Name 
942*5113495bSYour Name /**
943*5113495bSYour Name  * struct wlan_btm_cand_info  - BTM candidate information
944*5113495bSYour Name  * @idx: Candidate index
945*5113495bSYour Name  * @preference: Candidate preference
946*5113495bSYour Name  * @bssid: candidate bssid
947*5113495bSYour Name  */
948*5113495bSYour Name struct wlan_btm_cand_info {
949*5113495bSYour Name 	uint8_t idx;
950*5113495bSYour Name 	uint8_t preference;
951*5113495bSYour Name 	struct qdf_mac_addr bssid;
952*5113495bSYour Name };
953*5113495bSYour Name 
954*5113495bSYour Name /**
955*5113495bSYour Name  * struct wlan_roam_btm_info - BTM frame related logging data
956*5113495bSYour Name  * @reason: Query Reason field. Contains one of the values defined in IEEE
957*5113495bSYour Name  * Std 802.11‐2020 Table 9-198—Transition and Transition Query reasons
958*5113495bSYour Name  * @mode: BTM Request Mode field
959*5113495bSYour Name  * @sub_reason: WTC sub reason code field in the BTM WTC vendor specific IE
960*5113495bSYour Name  * @candidate_list_count: Candidates list in the BTM frame
961*5113495bSYour Name  * @btm_status_code: BSS Transition management status codes defined in
962*5113495bSYour Name  * 802.11‐2020 Table 9-428—BTM status code definitions
963*5113495bSYour Name  * @btm_delay: BSS Termination Delay field
964*5113495bSYour Name  * @is_disassoc_imminent: Disassociation imminent bit
965*5113495bSYour Name  * @token: dialog token. Dialog Token is a nonzero value chosen by the STA
966*5113495bSYour Name  * while sending the BTM frame to identify the query/request/response
967*5113495bSYour Name  * transaction
968*5113495bSYour Name  * @validity_timer: Validity interval in TBTT
969*5113495bSYour Name  * @disassoc_timer: Time after which the AP disassociates the STA, defined
970*5113495bSYour Name  * in TBTT.
971*5113495bSYour Name  * @wtc_duration: WTC duration field in minutes
972*5113495bSYour Name  * @target_bssid: BTM response target bssid field
973*5113495bSYour Name  */
974*5113495bSYour Name struct wlan_roam_btm_info {
975*5113495bSYour Name 	uint8_t reason;
976*5113495bSYour Name 	uint8_t mode;
977*5113495bSYour Name 	uint8_t sub_reason;
978*5113495bSYour Name 	uint8_t candidate_list_count;
979*5113495bSYour Name 	uint8_t btm_status_code;
980*5113495bSYour Name 	uint8_t btm_delay;
981*5113495bSYour Name 	bool is_disassoc_imminent;
982*5113495bSYour Name 	uint8_t token;
983*5113495bSYour Name 	uint8_t validity_timer;
984*5113495bSYour Name 	uint16_t disassoc_timer;
985*5113495bSYour Name 	uint32_t wtc_duration;
986*5113495bSYour Name 	struct qdf_mac_addr target_bssid;
987*5113495bSYour Name };
988*5113495bSYour Name 
989*5113495bSYour Name /**
990*5113495bSYour Name  * struct wlan_packet_info  - Data packets related info
991*5113495bSYour Name  * @tx_status: Frame TX status defined by enum qdf_dp_tx_rx_status
992*5113495bSYour Name  * @eap_type: EAP type. Values defined by IANA at:
993*5113495bSYour Name  * https://www.iana.org/assignments/eap-numbers
994*5113495bSYour Name  * @eap_len: EAP data length
995*5113495bSYour Name  * @auth_algo: authentication algorithm number defined in IEEE Std 802.11‐2020
996*5113495bSYour Name  * Section 9.4.1.1 Authentication Algorithm Number field.
997*5113495bSYour Name  * @auth_seq_num: Authentication frame transaction sequence number
998*5113495bSYour Name  * @auth_type: Authentication frame sub-type for SAE authentication. Possible
999*5113495bSYour Name  * values:
1000*5113495bSYour Name  * 1 - SAE commit frame
1001*5113495bSYour Name  * 2 - SAE confirm frame
1002*5113495bSYour Name  * @assoc_id: Association ID received in association response frame as
1003*5113495bSYour Name  * defined in IEEE Std 802.11-2020 Figure 9-91-AID field format.
1004*5113495bSYour Name  * @frame_status_code: Frame status code as defined in IEEE Std
1005*5113495bSYour Name  * 802.11 2020 Table 9-50—Status codes.
1006*5113495bSYour Name  * @seq_num: Frame sequence number
1007*5113495bSYour Name  * @rssi: Peer RSSI in dBm
1008*5113495bSYour Name  * @is_retry_frame: is frame retried
1009*5113495bSYour Name  */
1010*5113495bSYour Name struct wlan_packet_info {
1011*5113495bSYour Name 	uint8_t tx_status;
1012*5113495bSYour Name 	uint8_t eap_type;
1013*5113495bSYour Name 	uint16_t eap_len;
1014*5113495bSYour Name 	uint8_t auth_algo;
1015*5113495bSYour Name 	uint8_t auth_seq_num;
1016*5113495bSYour Name 	uint8_t auth_type;
1017*5113495bSYour Name 	uint16_t assoc_id;
1018*5113495bSYour Name 	uint16_t frame_status_code;
1019*5113495bSYour Name 	uint16_t seq_num;
1020*5113495bSYour Name 	int32_t rssi;
1021*5113495bSYour Name 	bool is_retry_frame;
1022*5113495bSYour Name };
1023*5113495bSYour Name 
1024*5113495bSYour Name /**
1025*5113495bSYour Name  * struct wlan_connect_info  - Connection related info
1026*5113495bSYour Name  * @ssid: SSID
1027*5113495bSYour Name  * @ssid_len: Length of the SSID
1028*5113495bSYour Name  * @bssid_hint: BSSID hint provided in the connect request
1029*5113495bSYour Name  * @freq: Frequency in MHz
1030*5113495bSYour Name  * @freq_hint: Frequency Hint in MHz
1031*5113495bSYour Name  * @akm: Auth key management suite defined in IEEE Std 802.11‐2020
1032*5113495bSYour Name  * Table 9-151—AKM suite selectors.
1033*5113495bSYour Name  * @pairwise: Pairwise suite value as defined in IEEE 802.11 2020
1034*5113495bSYour Name  * Table 12-10—Integrity and key wrap algorithms.
1035*5113495bSYour Name  * @group: Group cipher suite value as defined in
1036*5113495bSYour Name  * Table 12-10—Integrity and key wrap algorithms.
1037*5113495bSYour Name  * @group_mgmt: Group management cipher suite as defined in
1038*5113495bSYour Name  * Table 12-10—Integrity and key wrap algorithms.
1039*5113495bSYour Name  * @auth_type: Authentication algorithm number field as defined in
1040*5113495bSYour Name  * IEEE 802.11 - 2020 standard section 9.4.1.1
1041*5113495bSYour Name  * @conn_status: Connection failure status defined by enum
1042*5113495bSYour Name  * wlan_cm_connect_fail_reason
1043*5113495bSYour Name  * @is_bt_coex_active: Is there active bluetooth connection
1044*5113495bSYour Name  */
1045*5113495bSYour Name struct wlan_connect_info {
1046*5113495bSYour Name 	char ssid[WLAN_SSID_MAX_LEN];
1047*5113495bSYour Name 	uint8_t ssid_len;
1048*5113495bSYour Name 	struct qdf_mac_addr bssid_hint;
1049*5113495bSYour Name 	qdf_freq_t freq;
1050*5113495bSYour Name 	qdf_freq_t freq_hint;
1051*5113495bSYour Name 	uint32_t akm;
1052*5113495bSYour Name 	uint32_t pairwise;
1053*5113495bSYour Name 	uint32_t group;
1054*5113495bSYour Name 	uint32_t group_mgmt;
1055*5113495bSYour Name 	uint8_t auth_type;
1056*5113495bSYour Name 	enum wlan_cm_connect_fail_reason conn_status;
1057*5113495bSYour Name 	bool is_bt_coex_active;
1058*5113495bSYour Name };
1059*5113495bSYour Name 
1060*5113495bSYour Name #define WLAN_MAX_LOG_RECORDS 45
1061*5113495bSYour Name #define WLAN_MAX_LOG_LEN     256
1062*5113495bSYour Name #define WLAN_RECORDS_PER_SEC 20
1063*5113495bSYour Name #define MAX_RECORD_IN_SINGLE_EVT 5
1064*5113495bSYour Name 
1065*5113495bSYour Name /**
1066*5113495bSYour Name  * struct wlan_log_record  - Structure for individual records in the ring
1067*5113495bSYour Name  * buffer
1068*5113495bSYour Name  * @timestamp_us: Timestamp(time of the day) in microseconds
1069*5113495bSYour Name  * @fw_timestamp_us: timestamp at which roam scan was triggered
1070*5113495bSYour Name  * @ktime_us: kernel timestamp (time of the day) in microseconds
1071*5113495bSYour Name  * @vdev_id: VDEV id
1072*5113495bSYour Name  * @log_subtype: Tag of the log
1073*5113495bSYour Name  * @bssid: AP bssid
1074*5113495bSYour Name  * @is_record_filled: indicates if the current record is empty or not
1075*5113495bSYour Name  * @conn_info: Connection info
1076*5113495bSYour Name  * @pkt_info: Packet info
1077*5113495bSYour Name  * @roam_scan: Roam scan
1078*5113495bSYour Name  * @ap: Roam candidate AP info
1079*5113495bSYour Name  * @roam_result: Roam result
1080*5113495bSYour Name  * @roam_trig: Roam trigger related info
1081*5113495bSYour Name  * @btm_info: BTM info
1082*5113495bSYour Name  * @btm_cand: BTM response candidate info
1083*5113495bSYour Name  */
1084*5113495bSYour Name struct wlan_log_record {
1085*5113495bSYour Name 	uint64_t timestamp_us;
1086*5113495bSYour Name 	uint64_t fw_timestamp_us;
1087*5113495bSYour Name 	uint64_t ktime_us;
1088*5113495bSYour Name 	uint8_t vdev_id;
1089*5113495bSYour Name 	uint32_t log_subtype;
1090*5113495bSYour Name 	struct qdf_mac_addr bssid;
1091*5113495bSYour Name 	bool is_record_filled;
1092*5113495bSYour Name 	union {
1093*5113495bSYour Name 		struct wlan_connect_info conn_info;
1094*5113495bSYour Name 		struct wlan_packet_info pkt_info;
1095*5113495bSYour Name 		struct wlan_roam_scan_info roam_scan;
1096*5113495bSYour Name 		struct wlan_roam_candidate_info ap;
1097*5113495bSYour Name 		struct wlan_roam_result_info roam_result;
1098*5113495bSYour Name 		struct wlan_roam_trigger_info roam_trig;
1099*5113495bSYour Name 		struct wlan_roam_btm_info btm_info;
1100*5113495bSYour Name 		struct wlan_btm_cand_info btm_cand;
1101*5113495bSYour Name 	};
1102*5113495bSYour Name };
1103*5113495bSYour Name 
1104*5113495bSYour Name /**
1105*5113495bSYour Name  * struct wlan_cl_osif_cbks  - OSIF callbacks to be invoked for connectivity
1106*5113495bSYour Name  * logging
1107*5113495bSYour Name  * @wlan_connectivity_log_send_to_usr: Send the log buffer to user space
1108*5113495bSYour Name  */
1109*5113495bSYour Name struct wlan_cl_osif_cbks {
1110*5113495bSYour Name 	QDF_STATUS
1111*5113495bSYour Name 	(*wlan_connectivity_log_send_to_usr) (struct wlan_log_record *rec,
1112*5113495bSYour Name 					      void *context,
1113*5113495bSYour Name 					      uint8_t num_records);
1114*5113495bSYour Name };
1115*5113495bSYour Name 
1116*5113495bSYour Name /**
1117*5113495bSYour Name  * struct wlan_connectivity_log_buf_data  - Master structure to hold the
1118*5113495bSYour Name  * pointers to the ring buffers.
1119*5113495bSYour Name  * @psoc: Global psoc pointer
1120*5113495bSYour Name  * @osif_cbks: OSIF callbacks
1121*5113495bSYour Name  * @osif_cb_context: Pointer to the context to be passed to OSIF
1122*5113495bSYour Name  * callback
1123*5113495bSYour Name  * @first_record_timestamp_in_last_sec: First record timestamp
1124*5113495bSYour Name  * @sent_msgs_count: Total sent messages counter in the last 1 sec
1125*5113495bSYour Name  * @head: Pointer to the 1st record allocated in the ring buffer.
1126*5113495bSYour Name  * @read_ptr: Pointer to the next record that can be read.
1127*5113495bSYour Name  * @write_ptr: Pointer to the next empty record to be written.
1128*5113495bSYour Name  * @write_ptr_lock: Spinlock to protect the write_ptr from multiple producers.
1129*5113495bSYour Name  * @max_records: Maximum records in the ring buffer.
1130*5113495bSYour Name  * @read_idx: Read index
1131*5113495bSYour Name  * @write_idx: Write index
1132*5113495bSYour Name  * @dropped_msgs: Dropped logs counter
1133*5113495bSYour Name  * @is_active: If the global buffer is initialized or not
1134*5113495bSYour Name  */
1135*5113495bSYour Name struct wlan_connectivity_log_buf_data {
1136*5113495bSYour Name 	struct wlan_objmgr_psoc *psoc;
1137*5113495bSYour Name 	struct wlan_cl_osif_cbks osif_cbks;
1138*5113495bSYour Name 	void *osif_cb_context;
1139*5113495bSYour Name 	uint64_t first_record_timestamp_in_last_sec;
1140*5113495bSYour Name 	uint64_t sent_msgs_count;
1141*5113495bSYour Name 	struct wlan_log_record *head;
1142*5113495bSYour Name 	struct wlan_log_record *read_ptr;
1143*5113495bSYour Name 	struct wlan_log_record *write_ptr;
1144*5113495bSYour Name 	qdf_spinlock_t write_ptr_lock;
1145*5113495bSYour Name 	uint8_t max_records;
1146*5113495bSYour Name 	uint8_t read_idx;
1147*5113495bSYour Name 	uint8_t write_idx;
1148*5113495bSYour Name 	qdf_atomic_t dropped_msgs;
1149*5113495bSYour Name 	qdf_atomic_t is_active;
1150*5113495bSYour Name };
1151*5113495bSYour Name 
1152*5113495bSYour Name #define logging_err_rl(params...) \
1153*5113495bSYour Name 	QDF_TRACE_ERROR_RL(QDF_MODULE_ID_MLME, ## params)
1154*5113495bSYour Name #define logging_warn_rl(params...) \
1155*5113495bSYour Name 	QDF_TRACE_WARN_RL(QDF_MODULE_ID_MLME, ## params)
1156*5113495bSYour Name #define logging_info_rl(params...) \
1157*5113495bSYour Name 	QDF_TRACE_INFO_RL(QDF_MODULE_ID_MLME, ## params)
1158*5113495bSYour Name 
1159*5113495bSYour Name #define logging_debug(params...) QDF_TRACE_DEBUG(QDF_MODULE_ID_QDF, ## params)
1160*5113495bSYour Name #define logging_err(params...) QDF_TRACE_ERROR(QDF_MODULE_ID_QDF, ## params)
1161*5113495bSYour Name #define logging_info(params...) QDF_TRACE_INFO(QDF_MODULE_ID_QDF, ## params)
1162*5113495bSYour Name 
1163*5113495bSYour Name #if (defined(CONNECTIVITY_DIAG_EVENT) && \
1164*5113495bSYour Name 	defined(WLAN_FEATURE_ROAM_OFFLOAD))
1165*5113495bSYour Name /**
1166*5113495bSYour Name  * wlan_print_cached_sae_auth_logs() - Enqueue SAE authentication frame logs
1167*5113495bSYour Name  * @psoc: Global psoc pointer
1168*5113495bSYour Name  * @bssid:  BSSID
1169*5113495bSYour Name  * @vdev_id: Vdev id
1170*5113495bSYour Name  *
1171*5113495bSYour Name  * Return: QDF_STATUS
1172*5113495bSYour Name  */
1173*5113495bSYour Name QDF_STATUS wlan_print_cached_sae_auth_logs(struct wlan_objmgr_psoc *psoc,
1174*5113495bSYour Name 					   struct qdf_mac_addr *bssid,
1175*5113495bSYour Name 					   uint8_t vdev_id);
1176*5113495bSYour Name 
1177*5113495bSYour Name /**
1178*5113495bSYour Name  * wlan_is_log_record_present_for_bssid() - Check if there is existing log
1179*5113495bSYour Name  * record for the given bssid
1180*5113495bSYour Name  * @psoc: Global psoc pointer
1181*5113495bSYour Name  * @bssid: BSSID
1182*5113495bSYour Name  * @vdev_id: vdev id
1183*5113495bSYour Name  *
1184*5113495bSYour Name  * Return: true if record is present else false
1185*5113495bSYour Name  */
1186*5113495bSYour Name bool wlan_is_log_record_present_for_bssid(struct wlan_objmgr_psoc *psoc,
1187*5113495bSYour Name 					  struct qdf_mac_addr *bssid,
1188*5113495bSYour Name 					  uint8_t vdev_id);
1189*5113495bSYour Name 
1190*5113495bSYour Name /**
1191*5113495bSYour Name  * wlan_is_sae_auth_log_present_for_bssid() - Is cached SAE auth log record
1192*5113495bSYour Name  * present for the given bssid. This API checks on all the link vdev if the
1193*5113495bSYour Name  * given vdev_id is an MLO vdev and updates the vdev_id to caller in which
1194*5113495bSYour Name  * the auth frame was cached.
1195*5113495bSYour Name  * @psoc: Global psoc pointer
1196*5113495bSYour Name  * @bssid: BSSID
1197*5113495bSYour Name  * @vdev_id: vdev id
1198*5113495bSYour Name  *
1199*5113495bSYour Name  * Return: True if an entry is found
1200*5113495bSYour Name  */
1201*5113495bSYour Name bool
1202*5113495bSYour Name wlan_is_sae_auth_log_present_for_bssid(struct wlan_objmgr_psoc *psoc,
1203*5113495bSYour Name 				       struct qdf_mac_addr *bssid,
1204*5113495bSYour Name 				       uint8_t *vdev_id);
1205*5113495bSYour Name 
1206*5113495bSYour Name /**
1207*5113495bSYour Name  * wlan_clear_sae_auth_logs_cache() - Clear the cached auth related logs
1208*5113495bSYour Name  * @psoc: Pointer to global psoc object
1209*5113495bSYour Name  * @vdev_id: vdev id
1210*5113495bSYour Name  *
1211*5113495bSYour Name  * Return: None
1212*5113495bSYour Name  */
1213*5113495bSYour Name void wlan_clear_sae_auth_logs_cache(struct wlan_objmgr_psoc *psoc,
1214*5113495bSYour Name 				    uint8_t vdev_id);
1215*5113495bSYour Name #else
1216*5113495bSYour Name static inline
wlan_print_cached_sae_auth_logs(struct wlan_objmgr_psoc * psoc,struct qdf_mac_addr * bssid,uint8_t vdev_id)1217*5113495bSYour Name QDF_STATUS wlan_print_cached_sae_auth_logs(struct wlan_objmgr_psoc *psoc,
1218*5113495bSYour Name 					   struct qdf_mac_addr *bssid,
1219*5113495bSYour Name 					   uint8_t vdev_id)
1220*5113495bSYour Name {
1221*5113495bSYour Name 	return QDF_STATUS_SUCCESS;
1222*5113495bSYour Name }
1223*5113495bSYour Name 
1224*5113495bSYour Name static inline
wlan_is_log_record_present_for_bssid(struct wlan_objmgr_psoc * psoc,struct qdf_mac_addr * bssid,uint8_t vdev_id)1225*5113495bSYour Name bool wlan_is_log_record_present_for_bssid(struct wlan_objmgr_psoc *psoc,
1226*5113495bSYour Name 					  struct qdf_mac_addr *bssid,
1227*5113495bSYour Name 					  uint8_t vdev_id)
1228*5113495bSYour Name {
1229*5113495bSYour Name 	return false;
1230*5113495bSYour Name }
1231*5113495bSYour Name 
1232*5113495bSYour Name static inline bool
wlan_is_sae_auth_log_present_for_bssid(struct wlan_objmgr_psoc * psoc,struct qdf_mac_addr * bssid,uint8_t * vdev_id)1233*5113495bSYour Name wlan_is_sae_auth_log_present_for_bssid(struct wlan_objmgr_psoc *psoc,
1234*5113495bSYour Name 				       struct qdf_mac_addr *bssid,
1235*5113495bSYour Name 				       uint8_t *vdev_id)
1236*5113495bSYour Name {
1237*5113495bSYour Name 	return false;
1238*5113495bSYour Name }
1239*5113495bSYour Name 
1240*5113495bSYour Name static inline
wlan_clear_sae_auth_logs_cache(struct wlan_objmgr_psoc * psoc,uint8_t vdev_id)1241*5113495bSYour Name void wlan_clear_sae_auth_logs_cache(struct wlan_objmgr_psoc *psoc,
1242*5113495bSYour Name 				    uint8_t vdev_id)
1243*5113495bSYour Name {}
1244*5113495bSYour Name #endif
1245*5113495bSYour Name 
1246*5113495bSYour Name #if defined(CONNECTIVITY_DIAG_EVENT)
1247*5113495bSYour Name /**
1248*5113495bSYour Name  * wlan_connectivity_mgmt_event()  - Fill and enqueue a new record
1249*5113495bSYour Name  * for management frame information.
1250*5113495bSYour Name  * @psoc: Pointer to global psoc object
1251*5113495bSYour Name  * @mac_hdr: 802.11 management frame header
1252*5113495bSYour Name  * @vdev_id: Vdev id
1253*5113495bSYour Name  * @status_code: Frame status code as defined in IEEE 802.11 - 2020 standard
1254*5113495bSYour Name  * section 9.4.1.9
1255*5113495bSYour Name  * @tx_status: Frame TX status defined by enum qdf_dp_tx_rx_status
1256*5113495bSYour Name  * @peer_rssi: Peer RSSI in dBm
1257*5113495bSYour Name  * @auth_algo: Authentication algorithm number field as defined in IEEE 802.11 -
1258*5113495bSYour Name  * 2020 standard section 9.4.1.1
1259*5113495bSYour Name  * @auth_type: indicates SAE authentication frame type. Possible values are:
1260*5113495bSYour Name  * 1 - SAE commit frame
1261*5113495bSYour Name  * 2 - SAE confirm frame
1262*5113495bSYour Name  * @auth_seq: Authentication frame transaction sequence number as defined in
1263*5113495bSYour Name  * IEEE 802.11 - 2020 standard section 9.4.1.2
1264*5113495bSYour Name  * @aid: Association ID
1265*5113495bSYour Name  * @tag: Record type main tag
1266*5113495bSYour Name  *
1267*5113495bSYour Name  * Return: QDF_STATUS
1268*5113495bSYour Name  */
1269*5113495bSYour Name void
1270*5113495bSYour Name wlan_connectivity_mgmt_event(struct wlan_objmgr_psoc *psoc,
1271*5113495bSYour Name 			     struct wlan_frame_hdr *mac_hdr,
1272*5113495bSYour Name 			     uint8_t vdev_id, uint16_t status_code,
1273*5113495bSYour Name 			     enum qdf_dp_tx_rx_status tx_status,
1274*5113495bSYour Name 			     int8_t peer_rssi,
1275*5113495bSYour Name 			     uint8_t auth_algo, uint8_t auth_type,
1276*5113495bSYour Name 			     uint8_t auth_seq, uint16_t aid,
1277*5113495bSYour Name 			     enum wlan_main_tag tag);
1278*5113495bSYour Name 
1279*5113495bSYour Name /**
1280*5113495bSYour Name  * wlan_populate_vsie() - Populate VSIE field for logging
1281*5113495bSYour Name  * @vdev: vdev pointer
1282*5113495bSYour Name  * @data: Diag packet info data
1283*5113495bSYour Name  * @is_tx: flag to indicate whether packet transmitted or received
1284*5113495bSYour Name  *
1285*5113495bSYour Name  * Return: None
1286*5113495bSYour Name  */
1287*5113495bSYour Name void
1288*5113495bSYour Name wlan_populate_vsie(struct wlan_objmgr_vdev *vdev,
1289*5113495bSYour Name 		   struct wlan_diag_packet_info *data, bool is_tx);
1290*5113495bSYour Name 
1291*5113495bSYour Name /**
1292*5113495bSYour Name  * wlan_cdp_set_peer_freq() - API to set frequency to dp peer
1293*5113495bSYour Name  * @psoc: psoc pointer
1294*5113495bSYour Name  * @peer_mac: Bssid of peer
1295*5113495bSYour Name  * @freq: frequency(in MHz)
1296*5113495bSYour Name  * @vdev_id: vdev id
1297*5113495bSYour Name  *
1298*5113495bSYour Name  * Return: None
1299*5113495bSYour Name  */
1300*5113495bSYour Name void
1301*5113495bSYour Name wlan_cdp_set_peer_freq(struct wlan_objmgr_psoc *psoc, uint8_t *peer_mac,
1302*5113495bSYour Name 		       uint32_t freq, uint8_t vdev_id);
1303*5113495bSYour Name 
1304*5113495bSYour Name #ifdef WLAN_FEATURE_11BE_MLO
1305*5113495bSYour Name 
1306*5113495bSYour Name /**
1307*5113495bSYour Name  * wlan_connectivity_mlo_reconfig_event() -API to log MLO reconfig event
1308*5113495bSYour Name  * @vdev: vdev pointer
1309*5113495bSYour Name  *
1310*5113495bSYour Name  * Return: None
1311*5113495bSYour Name  */
1312*5113495bSYour Name void
1313*5113495bSYour Name wlan_connectivity_mlo_reconfig_event(struct wlan_objmgr_vdev *vdev);
1314*5113495bSYour Name 
1315*5113495bSYour Name /**
1316*5113495bSYour Name  * wlan_connectivity_mlo_setup_event() - Fill and send MLO setup data
1317*5113495bSYour Name  * @vdev: vdev pointer
1318*5113495bSYour Name  *
1319*5113495bSYour Name  * Return: None
1320*5113495bSYour Name  */
1321*5113495bSYour Name void wlan_connectivity_mlo_setup_event(struct wlan_objmgr_vdev *vdev);
1322*5113495bSYour Name 
1323*5113495bSYour Name /**
1324*5113495bSYour Name  * wlan_connectivity_t2lm_req_resp_event - API to send t2lm Req/resp
1325*5113495bSYour Name  * event logs to userspace
1326*5113495bSYour Name  * @vdev: vdev pointer
1327*5113495bSYour Name  * @token: dialog Token
1328*5113495bSYour Name  * @t2lm_status: T2LM response status code. Refer enum wlan_t2lm_resp_frm_type
1329*5113495bSYour Name  * @tx_status: TX status
1330*5113495bSYour Name  * @freq: frequency on which frame was transmitted/received
1331*5113495bSYour Name  * @is_rx: Flag to inidcate packet being received
1332*5113495bSYour Name  * @subtype: Determine whether the evnt sent is for t2lm request
1333*5113495bSYour Name  * or t2lm response
1334*5113495bSYour Name  *
1335*5113495bSYour Name  * Return: None
1336*5113495bSYour Name  */
1337*5113495bSYour Name void
1338*5113495bSYour Name wlan_connectivity_t2lm_req_resp_event(struct wlan_objmgr_vdev *vdev,
1339*5113495bSYour Name 				      uint8_t token,
1340*5113495bSYour Name 				      enum wlan_t2lm_resp_frm_type t2lm_status,
1341*5113495bSYour Name 				      enum qdf_dp_tx_rx_status tx_status,
1342*5113495bSYour Name 				      qdf_freq_t freq,
1343*5113495bSYour Name 				      bool is_rx, uint8_t subtype);
1344*5113495bSYour Name /**
1345*5113495bSYour Name  * wlan_connectivity_t2lm_status_event() - Fill and send T2LM data
1346*5113495bSYour Name  * @vdev: vdev pointer
1347*5113495bSYour Name  *
1348*5113495bSYour Name  * Return: None
1349*5113495bSYour Name  */
1350*5113495bSYour Name void wlan_connectivity_t2lm_status_event(struct wlan_objmgr_vdev *vdev);
1351*5113495bSYour Name 
1352*5113495bSYour Name /**
1353*5113495bSYour Name  * wlan_populate_mlo_mgmt_event_param() - API to populate MLO management frame
1354*5113495bSYour Name  * parameter
1355*5113495bSYour Name  * @vdev: vdev pointer
1356*5113495bSYour Name  * @data: Buffer to be filled with MLO parameter
1357*5113495bSYour Name  * @tag: WLAN event tag. Refer enum wlan_main_tag
1358*5113495bSYour Name  *
1359*5113495bSYour Name  * Return: QDF_STATUS
1360*5113495bSYour Name  */
1361*5113495bSYour Name QDF_STATUS
1362*5113495bSYour Name wlan_populate_mlo_mgmt_event_param(struct wlan_objmgr_vdev *vdev,
1363*5113495bSYour Name 				   struct wlan_diag_packet_info *data,
1364*5113495bSYour Name 				   enum wlan_main_tag tag);
1365*5113495bSYour Name 
1366*5113495bSYour Name /**
1367*5113495bSYour Name  * wlan_populate_roam_mld_log_param() - Populate roam MLO log parameters
1368*5113495bSYour Name  * @vdev: Pointer to vdev object
1369*5113495bSYour Name  * @data: Diag event packet info
1370*5113495bSYour Name  * @tag: Main Tag
1371*5113495bSYour Name  *
1372*5113495bSYour Name  * Return: QDF_STATUS
1373*5113495bSYour Name  */
1374*5113495bSYour Name QDF_STATUS
1375*5113495bSYour Name wlan_populate_roam_mld_log_param(struct wlan_objmgr_vdev *vdev,
1376*5113495bSYour Name 				 struct wlan_diag_packet_info *data,
1377*5113495bSYour Name 				 enum wlan_main_tag tag);
1378*5113495bSYour Name #else
1379*5113495bSYour Name static inline void
wlan_connectivity_mlo_reconfig_event(struct wlan_objmgr_vdev * vdev)1380*5113495bSYour Name wlan_connectivity_mlo_reconfig_event(struct wlan_objmgr_vdev *vdev)
1381*5113495bSYour Name {
1382*5113495bSYour Name }
1383*5113495bSYour Name 
1384*5113495bSYour Name static inline void
wlan_connectivity_mlo_setup_event(struct wlan_objmgr_vdev * vdev)1385*5113495bSYour Name wlan_connectivity_mlo_setup_event(struct wlan_objmgr_vdev *vdev)
1386*5113495bSYour Name {
1387*5113495bSYour Name }
1388*5113495bSYour Name 
1389*5113495bSYour Name static inline void
wlan_connectivity_t2lm_req_resp_event(struct wlan_objmgr_vdev * vdev,uint8_t token,enum wlan_t2lm_resp_frm_type status,enum qdf_dp_tx_rx_status tx_status,qdf_freq_t freq,bool is_rx,uint8_t subtype)1390*5113495bSYour Name wlan_connectivity_t2lm_req_resp_event(struct wlan_objmgr_vdev *vdev,
1391*5113495bSYour Name 				      uint8_t token,
1392*5113495bSYour Name 				      enum wlan_t2lm_resp_frm_type status,
1393*5113495bSYour Name 				      enum qdf_dp_tx_rx_status tx_status,
1394*5113495bSYour Name 				      qdf_freq_t freq,
1395*5113495bSYour Name 				      bool is_rx, uint8_t subtype)
1396*5113495bSYour Name {}
1397*5113495bSYour Name 
1398*5113495bSYour Name static inline void
wlan_connectivity_t2lm_status_event(struct wlan_objmgr_vdev * vdev)1399*5113495bSYour Name wlan_connectivity_t2lm_status_event(struct wlan_objmgr_vdev *vdev)
1400*5113495bSYour Name {
1401*5113495bSYour Name }
1402*5113495bSYour Name 
1403*5113495bSYour Name static inline QDF_STATUS
wlan_populate_mlo_mgmt_event_param(struct wlan_objmgr_vdev * vdev,struct wlan_diag_packet_info * data,enum wlan_main_tag tag)1404*5113495bSYour Name wlan_populate_mlo_mgmt_event_param(struct wlan_objmgr_vdev *vdev,
1405*5113495bSYour Name 				   struct wlan_diag_packet_info *data,
1406*5113495bSYour Name 				   enum wlan_main_tag tag)
1407*5113495bSYour Name {
1408*5113495bSYour Name 	return QDF_STATUS_SUCCESS;
1409*5113495bSYour Name }
1410*5113495bSYour Name 
1411*5113495bSYour Name static inline QDF_STATUS
wlan_populate_roam_mld_log_param(struct wlan_objmgr_vdev * vdev,struct wlan_diag_packet_info * data,enum wlan_main_tag tag)1412*5113495bSYour Name wlan_populate_roam_mld_log_param(struct wlan_objmgr_vdev *vdev,
1413*5113495bSYour Name 				 struct wlan_diag_packet_info *data,
1414*5113495bSYour Name 				 enum wlan_main_tag tag)
1415*5113495bSYour Name {
1416*5113495bSYour Name 	return QDF_STATUS_SUCCESS;
1417*5113495bSYour Name }
1418*5113495bSYour Name #endif
1419*5113495bSYour Name 
1420*5113495bSYour Name /**
1421*5113495bSYour Name  * wlan_populate_vsie() - Populate VSIE field for logging
1422*5113495bSYour Name  * @vdev: vdev pointer
1423*5113495bSYour Name  * @data: Diag packet info data
1424*5113495bSYour Name  * @is_tx: flag to indicate whether packet transmitted or received
1425*5113495bSYour Name  *
1426*5113495bSYour Name  * Return: None
1427*5113495bSYour Name  */
1428*5113495bSYour Name void
1429*5113495bSYour Name wlan_populate_vsie(struct wlan_objmgr_vdev *vdev,
1430*5113495bSYour Name 		   struct wlan_diag_packet_info *data, bool is_tx);
1431*5113495bSYour Name /**
1432*5113495bSYour Name  * wlan_convert_freq_to_diag_band() - API to convert frequency to band value
1433*5113495bSYour Name  * mentioned in enum wlan_diag_wifi_band
1434*5113495bSYour Name  * @ch_freq: Frequency(in MHz)
1435*5113495bSYour Name  *
1436*5113495bSYour Name  * Return: Band specified in enum wlan_diag_wifi_band
1437*5113495bSYour Name  */
1438*5113495bSYour Name enum wlan_diag_wifi_band
1439*5113495bSYour Name wlan_convert_freq_to_diag_band(uint16_t ch_freq);
1440*5113495bSYour Name 
wlan_connectivity_logging_stop(void)1441*5113495bSYour Name static inline void wlan_connectivity_logging_stop(void)
1442*5113495bSYour Name {}
1443*5113495bSYour Name 
1444*5113495bSYour Name /**
1445*5113495bSYour Name  * wlan_connectivity_sta_info_event() - APi to send STA info event
1446*5113495bSYour Name  * @psoc: Pointer to global psoc object
1447*5113495bSYour Name  * @vdev_id: Vdev id
1448*5113495bSYour Name  * @is_roam: Is sta info event for roaming stats
1449*5113495bSYour Name  *
1450*5113495bSYour Name  * Return: None
1451*5113495bSYour Name  */
1452*5113495bSYour Name void
1453*5113495bSYour Name wlan_connectivity_sta_info_event(struct wlan_objmgr_psoc *psoc,
1454*5113495bSYour Name 				 uint8_t vdev_id, bool is_roam);
1455*5113495bSYour Name 
1456*5113495bSYour Name /**
1457*5113495bSYour Name  * wlan_connectivity_connecting_event() - API to log connecting event
1458*5113495bSYour Name  * @vdev: vdev pointer
1459*5113495bSYour Name  * @con_req: Connection request parameter
1460*5113495bSYour Name  *
1461*5113495bSYour Name  * Return: None
1462*5113495bSYour Name  */
1463*5113495bSYour Name void
1464*5113495bSYour Name wlan_connectivity_connecting_event(struct wlan_objmgr_vdev *vdev,
1465*5113495bSYour Name 				   struct wlan_cm_connect_req *con_req);
1466*5113495bSYour Name 
1467*5113495bSYour Name #elif defined(WLAN_FEATURE_CONNECTIVITY_LOGGING)
1468*5113495bSYour Name /**
1469*5113495bSYour Name  * wlan_connectivity_logging_start()  - Initialize the connectivity/roaming
1470*5113495bSYour Name  * logging buffer
1471*5113495bSYour Name  * @psoc: Global psoc pointer
1472*5113495bSYour Name  * @osif_cbks: OSIF callbacks
1473*5113495bSYour Name  * @osif_cb_context: OSIF callback context argument
1474*5113495bSYour Name  *
1475*5113495bSYour Name  * Return: None
1476*5113495bSYour Name  */
1477*5113495bSYour Name void wlan_connectivity_logging_start(struct wlan_objmgr_psoc *psoc,
1478*5113495bSYour Name 				     struct wlan_cl_osif_cbks *osif_cbks,
1479*5113495bSYour Name 				     void *osif_cb_context);
1480*5113495bSYour Name 
1481*5113495bSYour Name /**
1482*5113495bSYour Name  * wlan_connectivity_logging_stop() - Deinitialize the connectivity logging
1483*5113495bSYour Name  * buffers and spinlocks.
1484*5113495bSYour Name  *
1485*5113495bSYour Name  * Return: None
1486*5113495bSYour Name  */
1487*5113495bSYour Name void wlan_connectivity_logging_stop(void);
1488*5113495bSYour Name 
1489*5113495bSYour Name /**
1490*5113495bSYour Name  * wlan_connectivity_log_dequeue() - Send the connectivity logs to userspace
1491*5113495bSYour Name  *
1492*5113495bSYour Name  * Return: QDF_STATUS
1493*5113495bSYour Name  */
1494*5113495bSYour Name QDF_STATUS wlan_connectivity_log_dequeue(void);
1495*5113495bSYour Name 
1496*5113495bSYour Name /**
1497*5113495bSYour Name  * wlan_connectivity_log_enqueue() - Add new record to the logging buffer
1498*5113495bSYour Name  * @new_record: Pointer to the new record to be added
1499*5113495bSYour Name  *
1500*5113495bSYour Name  * Return: QDF_STATUS
1501*5113495bSYour Name  */
1502*5113495bSYour Name QDF_STATUS wlan_connectivity_log_enqueue(struct wlan_log_record *new_record);
1503*5113495bSYour Name 
1504*5113495bSYour Name /**
1505*5113495bSYour Name  * wlan_connectivity_mgmt_event()  - Fill and enqueue a new record
1506*5113495bSYour Name  * for management frame information.
1507*5113495bSYour Name  * @psoc: Pointer to global psoc object
1508*5113495bSYour Name  * @mac_hdr: 802.11 management frame header
1509*5113495bSYour Name  * @vdev_id: Vdev id
1510*5113495bSYour Name  * @status_code: Frame status code as defined in IEEE 802.11 - 2020 standard
1511*5113495bSYour Name  * section 9.4.1.9
1512*5113495bSYour Name  * @tx_status: Frame TX status defined by enum qdf_dp_tx_rx_status
1513*5113495bSYour Name  * @peer_rssi: Peer RSSI in dBm
1514*5113495bSYour Name  * @auth_algo: Authentication algorithm number field as defined in IEEE 802.11 -
1515*5113495bSYour Name  * 2020 standard section 9.4.1.1
1516*5113495bSYour Name  * @auth_type: indicates SAE authentication frame type. Possible values are:
1517*5113495bSYour Name  * 1 - SAE commit frame
1518*5113495bSYour Name  * 2 - SAE confirm frame
1519*5113495bSYour Name  * @auth_seq: Authentication frame transaction sequence number as defined in
1520*5113495bSYour Name  * IEEE 802.11 - 2020 standard section 9.4.1.2
1521*5113495bSYour Name  * @aid: Association ID
1522*5113495bSYour Name  * @tag: Record type main tag
1523*5113495bSYour Name  *
1524*5113495bSYour Name  * Return: QDF_STATUS
1525*5113495bSYour Name  */
1526*5113495bSYour Name void
1527*5113495bSYour Name wlan_connectivity_mgmt_event(struct wlan_objmgr_psoc *psoc,
1528*5113495bSYour Name 			     struct wlan_frame_hdr *mac_hdr,
1529*5113495bSYour Name 			     uint8_t vdev_id, uint16_t status_code,
1530*5113495bSYour Name 			     enum qdf_dp_tx_rx_status tx_status,
1531*5113495bSYour Name 			     int8_t peer_rssi,
1532*5113495bSYour Name 			     uint8_t auth_algo, uint8_t auth_type,
1533*5113495bSYour Name 			     uint8_t auth_seq, uint16_t aid,
1534*5113495bSYour Name 			     enum wlan_main_tag tag);
1535*5113495bSYour Name 
1536*5113495bSYour Name /**
1537*5113495bSYour Name  * wlan_connectivity_connecting_event() - API to log connecting event
1538*5113495bSYour Name  * @vdev: vdev pointer
1539*5113495bSYour Name  * @con_req: Connection request parameter
1540*5113495bSYour Name  *
1541*5113495bSYour Name  * Return: None
1542*5113495bSYour Name  */
1543*5113495bSYour Name void
1544*5113495bSYour Name wlan_connectivity_connecting_event(struct wlan_objmgr_vdev *vdev,
1545*5113495bSYour Name 				   struct wlan_cm_connect_req *con_req);
1546*5113495bSYour Name 
1547*5113495bSYour Name /**
1548*5113495bSYour Name  * wlan_populate_vsie() - Populate VSIE field for logging
1549*5113495bSYour Name  * @vdev: vdev pointer
1550*5113495bSYour Name  * @data: Diag packet info data
1551*5113495bSYour Name  * @is_tx: Flag to indicate whether the packet is transmitted or received
1552*5113495bSYour Name  *
1553*5113495bSYour Name  * Return: None
1554*5113495bSYour Name  */
1555*5113495bSYour Name void
1556*5113495bSYour Name wlan_populate_vsie(struct wlan_objmgr_vdev *vdev,
1557*5113495bSYour Name 		   struct wlan_diag_packet_info *data, bool is_tx);
1558*5113495bSYour Name 
1559*5113495bSYour Name /**
1560*5113495bSYour Name  * wlan_connectivity_sta_info_event() - APi to send STA info event
1561*5113495bSYour Name  * @psoc: Pointer to global psoc object
1562*5113495bSYour Name  * @vdev_id: Vdev id
1563*5113495bSYour Name  * @is_roam: Is sta info event for roaming stats
1564*5113495bSYour Name  */
1565*5113495bSYour Name void
1566*5113495bSYour Name wlan_connectivity_sta_info_event(struct wlan_objmgr_psoc *psoc,
1567*5113495bSYour Name 				 uint8_t vdev_id, bool is_roam);
1568*5113495bSYour Name 
1569*5113495bSYour Name /**
1570*5113495bSYour Name  * wlan_convert_freq_to_diag_band() - API to convert frequency to band value
1571*5113495bSYour Name  * mentioned in enum wlan_diag_wifi_band
1572*5113495bSYour Name  * @ch_freq: Frequency(in MHz)
1573*5113495bSYour Name  *
1574*5113495bSYour Name  * Return: Band specified in enum wlan_diag_wifi_band
1575*5113495bSYour Name  */
1576*5113495bSYour Name enum wlan_diag_wifi_band
1577*5113495bSYour Name wlan_convert_freq_to_diag_band(uint16_t ch_freq);
1578*5113495bSYour Name 
1579*5113495bSYour Name /**
1580*5113495bSYour Name  * wlan_populate_vsie() - Populate VSIE field for logging
1581*5113495bSYour Name  * @vdev: vdev pointer
1582*5113495bSYour Name  * @data: Diag packet info data
1583*5113495bSYour Name  * @is_tx: flag to indicate whether packet transmitted or received
1584*5113495bSYour Name  *
1585*5113495bSYour Name  * Return: None
1586*5113495bSYour Name  */
1587*5113495bSYour Name void
1588*5113495bSYour Name wlan_populate_vsie(struct wlan_objmgr_vdev *vdev,
1589*5113495bSYour Name 		   struct wlan_diag_packet_info *data, bool is_tx);
1590*5113495bSYour Name 
1591*5113495bSYour Name /**
1592*5113495bSYour Name  * wlan_cdp_set_peer_freq() - API to set frequency to dp peer
1593*5113495bSYour Name  * @psoc: psoc pointer
1594*5113495bSYour Name  * @peer_mac: Bssid of peer
1595*5113495bSYour Name  * @freq: frequency(in MHz)
1596*5113495bSYour Name  * @vdev_id: vdev id
1597*5113495bSYour Name  *
1598*5113495bSYour Name  * Return: None
1599*5113495bSYour Name  */
1600*5113495bSYour Name void
1601*5113495bSYour Name wlan_cdp_set_peer_freq(struct wlan_objmgr_psoc *psoc, uint8_t *peer_mac,
1602*5113495bSYour Name 		       uint32_t freq, uint8_t vdev_id);
1603*5113495bSYour Name 
1604*5113495bSYour Name #else
1605*5113495bSYour Name static inline
wlan_connectivity_logging_start(struct wlan_objmgr_psoc * psoc,struct wlan_cl_osif_cbks * osif_cbks,void * osif_cb_context)1606*5113495bSYour Name void wlan_connectivity_logging_start(struct wlan_objmgr_psoc *psoc,
1607*5113495bSYour Name 				     struct wlan_cl_osif_cbks *osif_cbks,
1608*5113495bSYour Name 				     void *osif_cb_context)
1609*5113495bSYour Name {}
1610*5113495bSYour Name 
wlan_connectivity_logging_stop(void)1611*5113495bSYour Name static inline void wlan_connectivity_logging_stop(void)
1612*5113495bSYour Name {}
1613*5113495bSYour Name 
wlan_connectivity_log_dequeue(void)1614*5113495bSYour Name static inline QDF_STATUS wlan_connectivity_log_dequeue(void)
1615*5113495bSYour Name {
1616*5113495bSYour Name 	return QDF_STATUS_E_NOSUPPORT;
1617*5113495bSYour Name }
1618*5113495bSYour Name 
1619*5113495bSYour Name static inline
wlan_connectivity_log_enqueue(struct wlan_log_record * new_record)1620*5113495bSYour Name QDF_STATUS wlan_connectivity_log_enqueue(struct wlan_log_record *new_record)
1621*5113495bSYour Name {
1622*5113495bSYour Name 	return QDF_STATUS_E_NOSUPPORT;
1623*5113495bSYour Name }
1624*5113495bSYour Name 
1625*5113495bSYour Name static inline void
wlan_connectivity_mgmt_event(struct wlan_objmgr_psoc * psoc,struct wlan_frame_hdr * mac_hdr,uint8_t vdev_id,uint16_t status_code,enum qdf_dp_tx_rx_status tx_status,int8_t peer_rssi,uint8_t auth_algo,uint8_t auth_type,uint8_t auth_seq,uint16_t aid,enum wlan_main_tag tag)1626*5113495bSYour Name wlan_connectivity_mgmt_event(struct wlan_objmgr_psoc *psoc,
1627*5113495bSYour Name 			     struct wlan_frame_hdr *mac_hdr,
1628*5113495bSYour Name 			     uint8_t vdev_id, uint16_t status_code,
1629*5113495bSYour Name 			     enum qdf_dp_tx_rx_status tx_status,
1630*5113495bSYour Name 			     int8_t peer_rssi,
1631*5113495bSYour Name 			     uint8_t auth_algo, uint8_t auth_type,
1632*5113495bSYour Name 			     uint8_t auth_seq, uint16_t aid,
1633*5113495bSYour Name 			     enum wlan_main_tag tag)
1634*5113495bSYour Name {}
1635*5113495bSYour Name 
1636*5113495bSYour Name static inline void
wlan_populate_vsie(struct wlan_objmgr_vdev * vdev,struct wlan_diag_packet_info * data,bool is_tx)1637*5113495bSYour Name wlan_populate_vsie(struct wlan_objmgr_vdev *vdev,
1638*5113495bSYour Name 		   struct wlan_diag_packet_info *data, bool is_tx)
1639*5113495bSYour Name {
1640*5113495bSYour Name }
1641*5113495bSYour Name 
1642*5113495bSYour Name static inline enum wlan_diag_wifi_band
wlan_convert_freq_to_diag_band(uint16_t ch_freq)1643*5113495bSYour Name wlan_convert_freq_to_diag_band(uint16_t ch_freq)
1644*5113495bSYour Name {
1645*5113495bSYour Name 	return WLAN_INVALID_BAND;
1646*5113495bSYour Name }
1647*5113495bSYour Name 
1648*5113495bSYour Name static inline QDF_STATUS
wlan_populate_mlo_mgmt_event_param(struct wlan_objmgr_vdev * vdev,struct wlan_diag_packet_info * data,enum wlan_main_tag tag)1649*5113495bSYour Name wlan_populate_mlo_mgmt_event_param(struct wlan_objmgr_vdev *vdev,
1650*5113495bSYour Name 				   struct wlan_diag_packet_info *data,
1651*5113495bSYour Name 				   enum wlan_main_tag tag)
1652*5113495bSYour Name {
1653*5113495bSYour Name 	return QDF_STATUS_SUCCESS;
1654*5113495bSYour Name }
1655*5113495bSYour Name 
1656*5113495bSYour Name static inline void
wlan_cdp_set_peer_freq(struct wlan_objmgr_psoc * psoc,uint8_t * peer_mac,uint32_t freq,uint8_t vdev_id)1657*5113495bSYour Name wlan_cdp_set_peer_freq(struct wlan_objmgr_psoc *psoc, uint8_t *peer_mac,
1658*5113495bSYour Name 		       uint32_t freq, uint8_t vdev_id)
1659*5113495bSYour Name {}
1660*5113495bSYour Name 
1661*5113495bSYour Name static inline void
wlan_connectivity_mlo_reconfig_event(struct wlan_objmgr_vdev * vdev)1662*5113495bSYour Name wlan_connectivity_mlo_reconfig_event(struct wlan_objmgr_vdev *vdev)
1663*5113495bSYour Name {
1664*5113495bSYour Name }
1665*5113495bSYour Name 
1666*5113495bSYour Name static inline void
wlan_connectivity_sta_info_event(struct wlan_objmgr_psoc * psoc,uint8_t vdev_id,bool is_roam)1667*5113495bSYour Name wlan_connectivity_sta_info_event(struct wlan_objmgr_psoc *psoc,
1668*5113495bSYour Name 				 uint8_t vdev_id, bool is_roam)
1669*5113495bSYour Name {}
1670*5113495bSYour Name 
1671*5113495bSYour Name static inline void
wlan_connectivity_t2lm_req_resp_event(struct wlan_objmgr_vdev * vdev,uint8_t token,enum wlan_t2lm_resp_frm_type status,enum qdf_dp_tx_rx_status tx_status,qdf_freq_t freq,bool is_rx,uint8_t subtype)1672*5113495bSYour Name wlan_connectivity_t2lm_req_resp_event(struct wlan_objmgr_vdev *vdev,
1673*5113495bSYour Name 				      uint8_t token,
1674*5113495bSYour Name 				      enum wlan_t2lm_resp_frm_type status,
1675*5113495bSYour Name 				      enum qdf_dp_tx_rx_status tx_status,
1676*5113495bSYour Name 				      qdf_freq_t freq,
1677*5113495bSYour Name 				      bool is_rx, uint8_t subtype)
1678*5113495bSYour Name {}
1679*5113495bSYour Name 
1680*5113495bSYour Name static inline void
wlan_connectivity_t2lm_status_event(struct wlan_objmgr_vdev * vdev)1681*5113495bSYour Name wlan_connectivity_t2lm_status_event(struct wlan_objmgr_vdev *vdev)
1682*5113495bSYour Name {
1683*5113495bSYour Name }
1684*5113495bSYour Name 
1685*5113495bSYour Name static inline void
wlan_connectivity_connecting_event(struct wlan_objmgr_vdev * vdev,struct wlan_cm_connect_req * con_req)1686*5113495bSYour Name wlan_connectivity_connecting_event(struct wlan_objmgr_vdev *vdev,
1687*5113495bSYour Name 				   struct wlan_cm_connect_req *con_req)
1688*5113495bSYour Name {
1689*5113495bSYour Name }
1690*5113495bSYour Name #endif
1691*5113495bSYour Name 
1692*5113495bSYour Name #if defined(CONNECTIVITY_DIAG_EVENT) && defined(WLAN_FEATURE_11BE_MLO)
1693*5113495bSYour Name /**
1694*5113495bSYour Name  * wlan_connectivity_mld_link_status_event() - Send connectivity logging
1695*5113495bSYour Name  * ML Link Status event
1696*5113495bSYour Name  * @psoc: Pointer to global PSOC object
1697*5113495bSYour Name  * @src: Src parameters to be sent
1698*5113495bSYour Name  *
1699*5113495bSYour Name  * Return: None
1700*5113495bSYour Name  */
1701*5113495bSYour Name void
1702*5113495bSYour Name wlan_connectivity_mld_link_status_event(struct wlan_objmgr_psoc *psoc,
1703*5113495bSYour Name 					struct mlo_link_switch_params *src);
1704*5113495bSYour Name #else
1705*5113495bSYour Name static inline
wlan_connectivity_mld_link_status_event(struct wlan_objmgr_psoc * psoc,struct mlo_link_switch_params * src)1706*5113495bSYour Name void wlan_connectivity_mld_link_status_event(struct wlan_objmgr_psoc *psoc,
1707*5113495bSYour Name 					     struct mlo_link_switch_params *src)
1708*5113495bSYour Name {}
1709*5113495bSYour Name #endif /* CONNECTIVITY_DIAG_EVENT && WLAN_FEATURE_11BE_MLO */
1710*5113495bSYour Name #endif /* _WLAN_CONNECTIVITY_LOGGING_H_ */
1711