cdp_txrx_mob_def.h 15 KB

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