blob: e91753bb72980f4b3bdc415a417a1e4d7018d998 [file] [log] [blame]
Leo Changdb6358c2016-09-27 17:00:52 -07001/*
Sravan Goudd207ff22019-12-19 23:58:15 +05302 * Copyright (c) 2016-2020 The Linux Foundation. All rights reserved.
Leo Changdb6358c2016-09-27 17:00:52 -07003 *
4 * Permission to use, copy, modify, and/or distribute this software for
5 * any purpose with or without fee is hereby granted, provided that the
6 * above copyright notice and this permission notice appear in all
7 * copies.
8 *
9 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
10 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
11 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
12 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
13 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
14 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
15 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
16 * PERFORMANCE OF THIS SOFTWARE.
17 */
18
19#ifndef __CDP_TXRX_MOB_DEF_H
20#define __CDP_TXRX_MOB_DEF_H
21#include <sir_types.h>
22#include <htt.h>
23
gbian630ed5a2017-01-24 14:22:13 +080024#define TX_WMM_AC_NUM 4
Mohit Khanna7a200e72019-07-17 17:19:22 -070025#define ENABLE_DP_HIST_STATS
Mohit Khannac42d8032019-08-08 18:44:17 -070026#define DP_RX_DISABLE_NDI_MDNS_FORWARDING
gbian630ed5a2017-01-24 14:22:13 +080027
Leo Changdb6358c2016-09-27 17:00:52 -070028#define OL_TXQ_PAUSE_REASON_FW (1 << 0)
29#define OL_TXQ_PAUSE_REASON_PEER_UNAUTHORIZED (1 << 1)
30#define OL_TXQ_PAUSE_REASON_TX_ABORT (1 << 2)
31#define OL_TXQ_PAUSE_REASON_VDEV_STOP (1 << 3)
32#define OL_TXQ_PAUSE_REASON_THERMAL_MITIGATION (1 << 4)
33
Leo Changdb6358c2016-09-27 17:00:52 -070034#define OL_TXRX_INVALID_NUM_PEERS (-1)
35
Leo Changdb6358c2016-09-27 17:00:52 -070036
37/* Maximum number of station supported by data path, including BC. */
38#define WLAN_MAX_STA_COUNT (HAL_NUM_STA)
39
40/* The symbolic station ID return to HDD to specify the packet is bc/mc */
41#define WLAN_RX_BCMC_STA_ID (WLAN_MAX_STA_COUNT + 1)
42
43/* The symbolic station ID return to HDD to specify the packet is
44 to soft-AP itself */
45#define WLAN_RX_SAP_SELF_STA_ID (WLAN_MAX_STA_COUNT + 2)
46
47/* is 802.11 address multicast/broadcast? */
48#define IEEE80211_IS_MULTICAST(_a) (*(_a) & 0x01)
49
50#define MAX_PEERS 32
51
52/*
53 * Bins used for reporting delay histogram:
54 * bin 0: 0 - 10 ms delay
55 * bin 1: 10 - 20 ms delay
56 * bin 2: 20 - 40 ms delay
57 * bin 3: 40 - 80 ms delay
58 * bin 4: 80 - 160 ms delay
59 * bin 5: > 160 ms delay
60 */
61#define QCA_TX_DELAY_HIST_REPORT_BINS 6
62
63/* BA actions */
64#define IEEE80211_ACTION_BA_ADDBA_REQUEST 0 /* ADDBA request */
65#define IEEE80211_ACTION_BA_ADDBA_RESPONSE 1 /* ADDBA response */
66#define IEEE80211_ACTION_BA_DELBA 2 /* DELBA */
67
68#define IEEE80211_BA_POLICY_DELAYED 0
69#define IEEE80211_BA_POLICY_IMMEDIATE 1
70#define IEEE80211_BA_AMSDU_SUPPORTED 1
71
72/**
73 * enum netif_action_type - Type of actions on netif queues
74 * @WLAN_STOP_ALL_NETIF_QUEUE: stop all netif queues
75 * @WLAN_START_ALL_NETIF_QUEUE: start all netif queues
76 * @WLAN_WAKE_ALL_NETIF_QUEUE: wake all netif queues
77 * @WLAN_STOP_ALL_NETIF_QUEUE_N_CARRIER: stop all queues and off carrier
78 * @WLAN_START_ALL_NETIF_QUEUE_N_CARRIER: start all queues and on carrier
79 * @WLAN_NETIF_TX_DISABLE: disable tx
80 * @WLAN_NETIF_TX_DISABLE_N_CARRIER: disable tx and off carrier
81 * @WLAN_NETIF_CARRIER_ON: on carrier
82 * @WLAN_NETIF_CARRIER_OFF: off carrier
Rakesh Pillaid339c2d2017-09-27 16:56:09 +053083 * @WLAN_NETIF_PRIORITY_QUEUE_ON: start priority netif queues
84 * @WLAN_NETIF_PRIORITY_QUEUE_OFF: stop priority netif queues
85 * @WLAN_WAKE_NON_PRIORITY_QUEUE: wake non priority netif queues
86 * @WLAN_STOP_NON_PRIORITY_QUEUE: stop non priority netif queues
Leo Changdb6358c2016-09-27 17:00:52 -070087 */
88enum netif_action_type {
Mohit Khanna6d22eeb2019-04-06 22:51:26 -070089 WLAN_NETIF_ACTION_TYPE_NONE = 0,
Leo Changdb6358c2016-09-27 17:00:52 -070090 WLAN_STOP_ALL_NETIF_QUEUE = 1,
Mohit Khanna6d22eeb2019-04-06 22:51:26 -070091 WLAN_START_ALL_NETIF_QUEUE = 2,
92 WLAN_WAKE_ALL_NETIF_QUEUE = 3,
93 WLAN_STOP_ALL_NETIF_QUEUE_N_CARRIER = 4,
94 WLAN_START_ALL_NETIF_QUEUE_N_CARRIER = 5,
95 WLAN_NETIF_TX_DISABLE = 6,
96 WLAN_NETIF_TX_DISABLE_N_CARRIER = 7,
97 WLAN_NETIF_CARRIER_ON = 8,
98 WLAN_NETIF_CARRIER_OFF = 9,
99 WLAN_NETIF_PRIORITY_QUEUE_ON = 10,
100 WLAN_NETIF_PRIORITY_QUEUE_OFF = 11,
101 WLAN_NETIF_VO_QUEUE_ON = 12,
102 WLAN_NETIF_VO_QUEUE_OFF = 13,
103 WLAN_NETIF_VI_QUEUE_ON = 14,
104 WLAN_NETIF_VI_QUEUE_OFF = 15,
105 WLAN_NETIF_BE_BK_QUEUE_OFF = 16,
106 WLAN_WAKE_NON_PRIORITY_QUEUE = 17,
107 WLAN_STOP_NON_PRIORITY_QUEUE = 18,
Leo Changdb6358c2016-09-27 17:00:52 -0700108 WLAN_NETIF_ACTION_TYPE_MAX,
109};
110
111/**
112 * enum netif_reason_type - reason for netif queue action
113 * @WLAN_CONTROL_PATH: action from control path
114 * @WLAN_DATA_FLOW_CONTROL: because of flow control
115 * @WLAN_FW_PAUSE: because of firmware pause
116 * @WLAN_TX_ABORT: because of tx abort
117 * @WLAN_VDEV_STOP: because of vdev stop
118 * @WLAN_PEER_UNAUTHORISED: because of peer is unauthorised
119 * @WLAN_THERMAL_MITIGATION: because of thermal mitigation
120 */
121enum netif_reason_type {
122 WLAN_CONTROL_PATH = 1,
123 WLAN_DATA_FLOW_CONTROL,
124 WLAN_FW_PAUSE,
125 WLAN_TX_ABORT,
126 WLAN_VDEV_STOP,
127 WLAN_PEER_UNAUTHORISED,
128 WLAN_THERMAL_MITIGATION,
Rakesh Pillaid339c2d2017-09-27 16:56:09 +0530129 WLAN_DATA_FLOW_CONTROL_PRIORITY,
Leo Changdb6358c2016-09-27 17:00:52 -0700130 WLAN_REASON_TYPE_MAX,
131};
132
133enum ol_rx_err_type {
134 OL_RX_ERR_DEFRAG_MIC,
135 OL_RX_ERR_PN,
136 OL_RX_ERR_UNKNOWN_PEER,
137 OL_RX_ERR_MALFORMED,
138 OL_RX_ERR_TKIP_MIC,
139 OL_RX_ERR_DECRYPT,
140 OL_RX_ERR_MPDU_LENGTH,
141 OL_RX_ERR_ENCRYPT_REQUIRED,
142 OL_RX_ERR_DUP,
143 OL_RX_ERR_UNKNOWN,
144 OL_RX_ERR_FCS,
145 OL_RX_ERR_PRIVACY,
146 OL_RX_ERR_NONE_FRAG,
147 OL_RX_ERR_NONE = 0xFF
148};
149
150enum throttle_level {
151 THROTTLE_LEVEL_0,
152 THROTTLE_LEVEL_1,
153 THROTTLE_LEVEL_2,
154 THROTTLE_LEVEL_3,
155 /* Invalid */
156 THROTTLE_LEVEL_MAX,
157};
158
159enum {
160 OL_TX_WMM_AC_BE,
161 OL_TX_WMM_AC_BK,
162 OL_TX_WMM_AC_VI,
163 OL_TX_WMM_AC_VO,
164 OL_TX_NUM_WMM_AC
165};
166
167/**
168 * @enum ol_tx_spec
169 * @brief indicate what non-standard transmission actions to apply
170 * @details
171 * Indicate one or more of the following:
172 * - The tx frame already has a complete 802.11 header.
173 * Thus, skip 802.3/native-WiFi to 802.11 header encapsulation and
174 * A-MSDU aggregation.
175 * - The tx frame should not be aggregated (A-MPDU or A-MSDU)
176 * - The tx frame is already encrypted - don't attempt encryption.
177 * - The tx frame is a segment of a TCP jumbo frame.
178 * - This tx frame should not be unmapped and freed by the txrx layer
179 * after transmission, but instead given to a registered tx completion
180 * callback.
181 * More than one of these specification can apply, though typically
182 * only a single specification is applied to a tx frame.
183 * A compound specification can be created, as a bit-OR of these
184 * specifications.
185 */
186enum ol_tx_spec {
187 OL_TX_SPEC_STD = 0x0, /* do regular processing */
188 OL_TX_SPEC_RAW = 0x1, /* skip encap + A-MSDU aggr */
189 OL_TX_SPEC_NO_AGGR = 0x2, /* skip encap + all aggr */
190 OL_TX_SPEC_NO_ENCRYPT = 0x4, /* skip encap + encrypt */
191 OL_TX_SPEC_TSO = 0x8, /* TCP segmented */
192 OL_TX_SPEC_NWIFI_NO_ENCRYPT = 0x10, /* skip encrypt for nwifi */
193 OL_TX_SPEC_NO_FREE = 0x20, /* give to cb rather than free */
194};
195
196/**
Mohit Khannaadfe9082017-11-17 13:11:17 -0800197 * @enum peer_debug_id_type: debug ids to track peer get_ref and release_ref
198 * @brief Unique peer debug IDs to track the callers. Each new usage can add to
199 * this enum list to create a new "PEER_DEBUG_ID_".
200 * @PEER_DEBUG_ID_OL_INTERNAL: debug id for OL internal usage
201 * @PEER_DEBUG_ID_WMA_PKT_DROP: debug id for wma_is_pkt_drop_candidate API
202 * @PEER_DEBUG_ID_WMA_ADDBA_REQ: debug id for ADDBA request
203 * @PEER_DEBUG_ID_WMA_DELBA_REQ: debug id for DELBA request
204 * @PEER_DEBUG_ID_LIM_SEND_ADDBA_RESP: debug id for send ADDBA response
Jingxiang Ge7081c122018-01-10 10:23:50 +0800205 * @PEER_DEBUG_ID_OL_RX_THREAD: debug id for rx thread
Abhishek Singh46cb6802018-06-20 16:37:47 +0530206 * @PEER_DEBUG_ID_WMA_CCMP_REPLAY_ATTACK: debug id for CCMP replay
Manjunathappa Prakashd0fc0ea2018-08-22 15:59:09 -0700207 * @PEER_DEBUG_ID_WMA_DEL_BSS:debug id for remove BSS
208 * @PEER_DEBUG_ID_WMA_VDEV_STOP_RESP:debug id for vdev stop response handler
209 * @PEER_DEBUG_ID_OL_PEER_MAP:debug id for peer map/unmap
210 * @PEER_DEBUG_ID_OL_PEER_ATTACH: debug id for peer attach/detach
211 * @PEER_DEBUG_ID_OL_TXQ_VDEV_FL: debug id for vdev flush
212 * @PEER_DEBUG_ID_OL_HASH_ERS:debug id for peer find hash erase
Mohit Khannaadfe9082017-11-17 13:11:17 -0800213 * @PEER_DEBUG_ID_MAX: debug id MAX
214 */
215enum peer_debug_id_type {
Manjunathappa Prakashd0fc0ea2018-08-22 15:59:09 -0700216 PEER_DEBUG_ID_OL_INTERNAL,
217 PEER_DEBUG_ID_WMA_PKT_DROP,
218 PEER_DEBUG_ID_WMA_ADDBA_REQ,
219 PEER_DEBUG_ID_WMA_DELBA_REQ,
220 PEER_DEBUG_ID_LIM_SEND_ADDBA_RESP,
221 PEER_DEBUG_ID_OL_RX_THREAD,
222 PEER_DEBUG_ID_WMA_CCMP_REPLAY_ATTACK,
223 PEER_DEBUG_ID_WMA_DEL_BSS,
224 PEER_DEBUG_ID_WMA_VDEV_STOP_RESP,
225 PEER_DEBUG_ID_OL_PEER_MAP,
226 PEER_DEBUG_ID_OL_PEER_ATTACH,
227 PEER_DEBUG_ID_OL_TXQ_VDEV_FL,
228 PEER_DEBUG_ID_OL_HASH_ERS,
Manjunathappa Prakash09387ef2019-01-18 15:34:48 -0800229 PEER_DEBUG_ID_OL_UNMAP_TIMER_WORK,
Mohit Khannaadfe9082017-11-17 13:11:17 -0800230 PEER_DEBUG_ID_MAX
231};
232
233/**
Leo Changdb6358c2016-09-27 17:00:52 -0700234 * struct ol_txrx_desc_type - txrx descriptor type
Leo Changdb6358c2016-09-27 17:00:52 -0700235 * @is_qos_enabled: is station qos enabled
236 * @is_wapi_supported: is station wapi supported
Rakshith Suresh Patkarb3bc8ab2019-07-26 10:46:52 +0530237 * @peer_addr: peer mac address
Leo Changdb6358c2016-09-27 17:00:52 -0700238 */
239struct ol_txrx_desc_type {
Leo Changdb6358c2016-09-27 17:00:52 -0700240 uint8_t is_qos_enabled;
241 uint8_t is_wapi_supported;
Rakshith Suresh Patkarb3bc8ab2019-07-26 10:46:52 +0530242 struct qdf_mac_addr peer_addr;
Leo Changdb6358c2016-09-27 17:00:52 -0700243};
244
245/**
gbian630ed5a2017-01-24 14:22:13 +0800246 * struct ol_tx_sched_wrr_ac_specs_t - the wrr ac specs params structure
247 * @wrr_skip_weight: map to ol_tx_sched_wrr_adv_category_info_t.specs.
248 * wrr_skip_weight
249 * @credit_threshold: map to ol_tx_sched_wrr_adv_category_info_t.specs.
250 * credit_threshold
251 * @send_limit: map to ol_tx_sched_wrr_adv_category_info_t.specs.
252 * send_limit
253 * @credit_reserve: map to ol_tx_sched_wrr_adv_category_info_t.specs.
254 * credit_reserve
255 * @discard_weight: map to ol_tx_sched_wrr_adv_category_info_t.specs.
256 * discard_weight
257 *
258 * This structure is for wrr ac specs params set from user, it will update
259 * its content corresponding to the ol_tx_sched_wrr_adv_category_info_t.specs.
260 */
261struct ol_tx_sched_wrr_ac_specs_t {
262 int wrr_skip_weight;
263 uint32_t credit_threshold;
264 uint16_t send_limit;
265 int credit_reserve;
266 int discard_weight;
267};
268
269/**
Leo Changdb6358c2016-09-27 17:00:52 -0700270 * struct txrx_pdev_cfg_param_t - configuration information
271 * passed to the data path
272 */
273struct txrx_pdev_cfg_param_t {
274 uint8_t is_full_reorder_offload;
275 /* IPA Micro controller data path offload enable flag */
276 uint8_t is_uc_offload_enabled;
277 /* IPA Micro controller data path offload TX buffer count */
278 uint32_t uc_tx_buffer_count;
279 /* IPA Micro controller data path offload TX buffer size */
280 uint32_t uc_tx_buffer_size;
281 /* IPA Micro controller data path offload RX indication ring count */
282 uint32_t uc_rx_indication_ring_count;
283 /* IPA Micro controller data path offload TX partition base */
284 uint32_t uc_tx_partition_base;
285 /* IP, TCP and UDP checksum offload */
286 bool ip_tcp_udp_checksum_offload;
287 /* Rx processing in thread from TXRX */
288 bool enable_rxthread;
289 /* CE classification enabled through INI */
290 bool ce_classify_enabled;
hangtian04f0ad42019-06-07 11:04:02 +0800291#if defined(QCA_LL_TX_FLOW_CONTROL_V2) || defined(QCA_LL_PDEV_TX_FLOW_CONTROL)
Leo Changdb6358c2016-09-27 17:00:52 -0700292 /* Threshold to stop queue in percentage */
293 uint32_t tx_flow_stop_queue_th;
294 /* Start queue offset in percentage */
295 uint32_t tx_flow_start_queue_offset;
hangtian04f0ad42019-06-07 11:04:02 +0800296#endif
gbian630ed5a2017-01-24 14:22:13 +0800297
Tiger Yu6f1fc002019-04-25 10:41:30 +0800298#ifdef QCA_SUPPORT_TXRX_DRIVER_TCP_DEL_ACK
299 /* enable the tcp delay ack feature in the driver */
300 bool del_ack_enable;
301 /* timeout if no more tcp ack frames, unit is ms */
302 uint16_t del_ack_timer_value;
303 /* the maximum number of replaced tcp ack frames */
304 uint16_t del_ack_pkt_count;
305#endif
306
gbian630ed5a2017-01-24 14:22:13 +0800307 struct ol_tx_sched_wrr_ac_specs_t ac_specs[TX_WMM_AC_NUM];
jitiphil60ac9aa2018-10-05 19:54:04 +0530308 bool gro_enable;
309 bool tso_enable;
310 bool lro_enable;
311 bool enable_data_stall_detection;
312 bool enable_flow_steering;
313 bool disable_intra_bss_fwd;
Nirav Shahaa6ca442019-11-13 18:17:05 +0530314
315#ifdef WLAN_SUPPORT_TXRX_HL_BUNDLE
316 uint16_t bundle_timer_value;
317 uint16_t bundle_size;
318#endif
Leo Changdb6358c2016-09-27 17:00:52 -0700319};
320
Yun Parkfde6b9e2017-06-26 17:13:11 -0700321#ifdef IPA_OFFLOAD
Leo Changdb6358c2016-09-27 17:00:52 -0700322/**
323 * ol_txrx_ipa_resources - Resources needed for IPA
324 */
325struct ol_txrx_ipa_resources {
Sravan Kumar Kairam58e0adf2018-02-27 18:37:40 +0530326 qdf_shared_mem_t *ce_sr;
Leo Changdb6358c2016-09-27 17:00:52 -0700327 uint32_t ce_sr_ring_size;
328 qdf_dma_addr_t ce_reg_paddr;
329
Sravan Kumar Kairam58e0adf2018-02-27 18:37:40 +0530330 qdf_shared_mem_t *tx_comp_ring;
Leo Changdb6358c2016-09-27 17:00:52 -0700331 uint32_t tx_num_alloc_buffer;
332
Sravan Kumar Kairam58e0adf2018-02-27 18:37:40 +0530333 qdf_shared_mem_t *rx_rdy_ring;
334 qdf_shared_mem_t *rx_proc_done_idx;
Leo Changdb6358c2016-09-27 17:00:52 -0700335
Sravan Kumar Kairam58e0adf2018-02-27 18:37:40 +0530336 qdf_shared_mem_t *rx2_rdy_ring;
337 qdf_shared_mem_t *rx2_proc_done_idx;
Yun Parkfde6b9e2017-06-26 17:13:11 -0700338
339 /* IPA UC doorbell registers paddr */
Sravan Kumar Kairam58e0adf2018-02-27 18:37:40 +0530340 qdf_dma_addr_t tx_comp_doorbell_dmaaddr;
341 qdf_dma_addr_t rx_ready_doorbell_dmaaddr;
Yun Parkfde6b9e2017-06-26 17:13:11 -0700342
343 uint32_t tx_pipe_handle;
344 uint32_t rx_pipe_handle;
Leo Changdb6358c2016-09-27 17:00:52 -0700345};
Yun Parkfde6b9e2017-06-26 17:13:11 -0700346#endif
Leo Changdb6358c2016-09-27 17:00:52 -0700347
348struct ol_txrx_ocb_chan_info {
349 uint32_t chan_freq;
350 uint16_t disable_rx_stats_hdr:1;
351};
352
353/**
354 * ol_mic_error_info - carries the information associated with
355 * a MIC error
356 * @vdev_id: virtual device ID
357 * @key_id: Key ID
358 * @pn: packet number
359 * @sa: source address
360 * @da: destination address
361 * @ta: transmitter address
362 */
363struct ol_mic_error_info {
364 uint8_t vdev_id;
365 uint32_t key_id;
366 uint64_t pn;
Srinivas Girigowda2751b6d2019-02-27 12:28:13 -0800367 uint8_t sa[QDF_MAC_ADDR_SIZE];
368 uint8_t da[QDF_MAC_ADDR_SIZE];
369 uint8_t ta[QDF_MAC_ADDR_SIZE];
Leo Changdb6358c2016-09-27 17:00:52 -0700370};
371
372/**
373 * ol_error_info - carries the information associated with an
374 * error indicated by the firmware
375 * @mic_err: MIC error information
376 */
377struct ol_error_info {
378 union {
379 struct ol_mic_error_info mic_err;
380 } u;
381};
382
383
384/**
385 * struct ol_txrx_ocb_set_chan - txrx OCB channel info
386 * @ocb_channel_count: Channel count
387 * @ocb_channel_info: OCB channel info
388 */
389struct ol_txrx_ocb_set_chan {
390 uint32_t ocb_channel_count;
391 struct ol_txrx_ocb_chan_info *ocb_channel_info;
392};
393
394/**
395 * @brief Parameter type to pass WMM setting to ol_txrx_set_wmm_param
396 * @details
397 * The struct is used to specify informaiton to update TX WMM scheduler.
398 */
399struct ol_tx_ac_param_t {
400 uint32_t aifs;
401 uint32_t cwmin;
402 uint32_t cwmax;
403};
404
405struct ol_tx_wmm_param_t {
406 struct ol_tx_ac_param_t ac[OL_TX_NUM_WMM_AC];
407};
408
409struct ieee80211_ba_parameterset {
410#if _BYTE_ORDER == _BIG_ENDIAN
411 uint16_t buffersize:10, /* B6-15 buffer size */
412 tid:4, /* B2-5 TID */
413 bapolicy:1, /* B1 block ack policy */
414 amsdusupported:1; /* B0 amsdu supported */
415#else
416 uint16_t amsdusupported:1, /* B0 amsdu supported */
417 bapolicy:1, /* B1 block ack policy */
418 tid:4, /* B2-5 TID */
419 buffersize:10; /* B6-15 buffer size */
420#endif
421} __packed;
422
423struct ieee80211_ba_seqctrl {
424#if _BYTE_ORDER == _BIG_ENDIAN
425 uint16_t startseqnum:12, /* B4-15 starting sequence number */
426 fragnum:4; /* B0-3 fragment number */
427#else
428 uint16_t fragnum:4, /* B0-3 fragment number */
429 startseqnum:12; /* B4-15 starting sequence number */
430#endif
431} __packed;
432
433struct ieee80211_delba_parameterset {
434#if _BYTE_ORDER == _BIG_ENDIAN
435 uint16_t tid:4, /* B12-15 tid */
436 initiator:1, /* B11 initiator */
437 reserved0:11; /* B0-10 reserved */
438#else
439 uint16_t reserved0:11, /* B0-10 reserved */
440 initiator:1, /* B11 initiator */
441 tid:4; /* B12-15 tid */
442#endif
443} __packed;
444
Leo Changdb6358c2016-09-27 17:00:52 -0700445/**
446 * ol_txrx_vdev_peer_remove_cb - wma_remove_peer callback
447 */
448typedef void (*ol_txrx_vdev_peer_remove_cb)(void *handle, uint8_t *bssid,
Jiachao Wu5c209752018-01-21 13:34:37 +0800449 uint8_t vdev_id, void *peer);
Leo Changdb6358c2016-09-27 17:00:52 -0700450
451/**
Manjunathappa Prakashced7ea62017-07-02 03:02:15 -0700452 * @typedef tx_pause_callback
Leo Changdb6358c2016-09-27 17:00:52 -0700453 * @brief OSIF function registered with the data path
454 */
Manjunathappa Prakashced7ea62017-07-02 03:02:15 -0700455typedef void (*tx_pause_callback)(uint8_t vdev_id,
Leo Changdb6358c2016-09-27 17:00:52 -0700456 enum netif_action_type action,
457 enum netif_reason_type reason);
458
Yun Parkfde6b9e2017-06-26 17:13:11 -0700459typedef void (*ipa_uc_op_cb_type)(uint8_t *op_msg,
Leo Changdb6358c2016-09-27 17:00:52 -0700460 void *osif_ctxt);
461
Jinwei Chen46733102018-08-20 15:42:08 +0800462/**
463 * struct ol_rx_inv_peer_params - rx invalid peer data parameters
464 * @vdev_id: Virtual device ID
465 * @ra: RX data receiver MAC address
466 * @ta: RX data transmitter MAC address
467 */
468struct ol_rx_inv_peer_params {
469 uint8_t vdev_id;
Srinivas Girigowda2751b6d2019-02-27 12:28:13 -0800470 uint8_t ra[QDF_MAC_ADDR_SIZE];
471 uint8_t ta[QDF_MAC_ADDR_SIZE];
Jinwei Chen46733102018-08-20 15:42:08 +0800472};
473
Sravan Goudd207ff22019-12-19 23:58:15 +0530474/**
475 * cdp_txrx_ext_stats: dp extended stats
476 * tx_msdu_enqueue: tx msdu queued to hw
477 * tx_msdu_overflow: tx msdu overflow
478 * rx_mpdu_received: rx mpdu processed by hw
479 * rx_mpdu_delivered: rx mpdu received from hw
480 * rx_mpdu_error: rx mpdu error count
481 * rx_mpdu_missed: rx mpdu missed by hw
482 */
483struct cdp_txrx_ext_stats {
484 uint32_t tx_msdu_enqueue;
485 uint32_t tx_msdu_overflow;
486 uint32_t rx_mpdu_received;
487 uint32_t rx_mpdu_delivered;
488 uint32_t rx_mpdu_error;
489 uint32_t rx_mpdu_missed;
490};
491
Leo Changdb6358c2016-09-27 17:00:52 -0700492#endif /* __CDP_TXRX_MOB_DEF_H */