1 /* 2 * Copyright (c) 2016-2021 The Linux Foundation. All rights reserved. 3 * Copyright (c) 2021-2023 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 20 #ifndef __CDP_TXRX_MOB_DEF_H 21 #define __CDP_TXRX_MOB_DEF_H 22 #include <sir_types.h> 23 #include <htt.h> 24 25 #define TX_WMM_AC_NUM 4 26 #define ENABLE_DP_HIST_STATS 27 #define DP_MEMORY_OPT 28 #ifndef CONFIG_BERYLLIUM 29 #define DP_USE_SINGLE_TCL 30 #endif 31 32 #define DP_RX_DISABLE_NDI_MDNS_FORWARDING 33 34 #define OL_TXQ_PAUSE_REASON_FW (1 << 0) 35 #define OL_TXQ_PAUSE_REASON_PEER_UNAUTHORIZED (1 << 1) 36 #define OL_TXQ_PAUSE_REASON_TX_ABORT (1 << 2) 37 #define OL_TXQ_PAUSE_REASON_VDEV_STOP (1 << 3) 38 #define OL_TXQ_PAUSE_REASON_THERMAL_MITIGATION (1 << 4) 39 40 #define OL_TXRX_INVALID_NUM_PEERS (-1) 41 42 43 /* Maximum number of station supported by data path, including BC. */ 44 #define WLAN_MAX_STA_COUNT (HAL_NUM_STA) 45 46 /* The symbolic station ID return to HDD to specify the packet is bc/mc */ 47 #define WLAN_RX_BCMC_STA_ID (WLAN_MAX_STA_COUNT + 1) 48 49 /* The symbolic station ID return to HDD to specify the packet is 50 to soft-AP itself */ 51 #define WLAN_RX_SAP_SELF_STA_ID (WLAN_MAX_STA_COUNT + 2) 52 53 /* is 802.11 address multicast/broadcast? */ 54 #define IEEE80211_IS_MULTICAST(_a) (*(_a) & 0x01) 55 56 #define MAX_PEERS 32 57 58 /* 59 * Bins used for reporting delay histogram: 60 * bin 0: 0 - 10 ms delay 61 * bin 1: 10 - 20 ms delay 62 * bin 2: 20 - 40 ms delay 63 * bin 3: 40 - 80 ms delay 64 * bin 4: 80 - 160 ms delay 65 * bin 5: > 160 ms delay 66 */ 67 #define QCA_TX_DELAY_HIST_REPORT_BINS 6 68 69 /* BA actions */ 70 #define IEEE80211_ACTION_BA_ADDBA_REQUEST 0 /* ADDBA request */ 71 #define IEEE80211_ACTION_BA_ADDBA_RESPONSE 1 /* ADDBA response */ 72 #define IEEE80211_ACTION_BA_DELBA 2 /* DELBA */ 73 74 #define IEEE80211_BA_POLICY_DELAYED 0 75 #define IEEE80211_BA_POLICY_IMMEDIATE 1 76 #define IEEE80211_BA_AMSDU_SUPPORTED 1 77 78 /** 79 * enum netif_action_type - Type of actions on netif queues 80 * @WLAN_NETIF_ACTION_TYPE_NONE: perform no action 81 * @WLAN_STOP_ALL_NETIF_QUEUE: stop all netif queues 82 * @WLAN_START_ALL_NETIF_QUEUE: start all netif queues 83 * @WLAN_WAKE_ALL_NETIF_QUEUE: wake all netif queues 84 * @WLAN_STOP_ALL_NETIF_QUEUE_N_CARRIER: stop all queues and off carrier 85 * @WLAN_START_ALL_NETIF_QUEUE_N_CARRIER: start all queues and on carrier 86 * @WLAN_NETIF_TX_DISABLE: disable tx 87 * @WLAN_NETIF_TX_DISABLE_N_CARRIER: disable tx and off carrier 88 * @WLAN_NETIF_CARRIER_ON: on carrier 89 * @WLAN_NETIF_CARRIER_OFF: off carrier 90 * @WLAN_NETIF_PRIORITY_QUEUE_ON: start priority netif queues 91 * @WLAN_NETIF_PRIORITY_QUEUE_OFF: stop priority netif queues 92 * @WLAN_NETIF_VO_QUEUE_ON: start voice queue 93 * @WLAN_NETIF_VO_QUEUE_OFF: stop voice queue 94 * @WLAN_NETIF_VI_QUEUE_ON: start video queue 95 * @WLAN_NETIF_VI_QUEUE_OFF: stop video queue 96 * @WLAN_NETIF_BE_BK_QUEUE_OFF: start best-effort & background queue 97 * @WLAN_NETIF_BE_BK_QUEUE_ON: stop best-effort & background queue 98 * @WLAN_WAKE_NON_PRIORITY_QUEUE: wake non priority netif queues 99 * @WLAN_STOP_NON_PRIORITY_QUEUE: stop non priority netif queues 100 * @WLAN_NETIF_ACTION_TYPE_MAX: Maximum action 101 */ 102 enum netif_action_type { 103 WLAN_NETIF_ACTION_TYPE_NONE = 0, 104 WLAN_STOP_ALL_NETIF_QUEUE = 1, 105 WLAN_START_ALL_NETIF_QUEUE = 2, 106 WLAN_WAKE_ALL_NETIF_QUEUE = 3, 107 WLAN_STOP_ALL_NETIF_QUEUE_N_CARRIER = 4, 108 WLAN_START_ALL_NETIF_QUEUE_N_CARRIER = 5, 109 WLAN_NETIF_TX_DISABLE = 6, 110 WLAN_NETIF_TX_DISABLE_N_CARRIER = 7, 111 WLAN_NETIF_CARRIER_ON = 8, 112 WLAN_NETIF_CARRIER_OFF = 9, 113 WLAN_NETIF_PRIORITY_QUEUE_ON = 10, 114 WLAN_NETIF_PRIORITY_QUEUE_OFF = 11, 115 WLAN_NETIF_VO_QUEUE_ON = 12, 116 WLAN_NETIF_VO_QUEUE_OFF = 13, 117 WLAN_NETIF_VI_QUEUE_ON = 14, 118 WLAN_NETIF_VI_QUEUE_OFF = 15, 119 WLAN_NETIF_BE_BK_QUEUE_OFF = 16, 120 WLAN_NETIF_BE_BK_QUEUE_ON = 17, 121 WLAN_WAKE_NON_PRIORITY_QUEUE = 18, 122 WLAN_STOP_NON_PRIORITY_QUEUE = 19, 123 WLAN_NETIF_ACTION_TYPE_MAX, 124 }; 125 126 /** 127 * enum netif_reason_type - reason for netif queue action 128 * @WLAN_CONTROL_PATH: action from control path 129 * @WLAN_DATA_FLOW_CONTROL: because of flow control 130 * @WLAN_FW_PAUSE: because of firmware pause 131 * @WLAN_TX_ABORT: because of tx abort 132 * @WLAN_VDEV_STOP: because of vdev stop 133 * @WLAN_PEER_UNAUTHORISED: because of peer is unauthorised 134 * @WLAN_THERMAL_MITIGATION: because of thermal mitigation 135 * @WLAN_DATA_FLOW_CONTROL_PRIORITY: 136 * @WLAN_DATA_FLOW_CTRL_BE_BK: 137 * @WLAN_DATA_FLOW_CTRL_VI: 138 * @WLAN_DATA_FLOW_CTRL_VO: 139 * @WLAN_DATA_FLOW_CTRL_PRI: 140 * @WLAN_REASON_TYPE_MAX: maximum reason 141 */ 142 enum netif_reason_type { 143 WLAN_CONTROL_PATH = 1, 144 WLAN_DATA_FLOW_CONTROL, 145 WLAN_FW_PAUSE, 146 WLAN_TX_ABORT, 147 WLAN_VDEV_STOP, 148 WLAN_PEER_UNAUTHORISED, 149 WLAN_THERMAL_MITIGATION, 150 WLAN_DATA_FLOW_CONTROL_PRIORITY, 151 WLAN_DATA_FLOW_CTRL_BE_BK, 152 WLAN_DATA_FLOW_CTRL_VI, 153 WLAN_DATA_FLOW_CTRL_VO, 154 WLAN_DATA_FLOW_CTRL_PRI, 155 WLAN_REASON_TYPE_MAX, 156 }; 157 158 enum ol_rx_err_type { 159 OL_RX_ERR_DEFRAG_MIC, 160 OL_RX_ERR_PN, 161 OL_RX_ERR_UNKNOWN_PEER, 162 OL_RX_ERR_MALFORMED, 163 OL_RX_ERR_TKIP_MIC, 164 OL_RX_ERR_DECRYPT, 165 OL_RX_ERR_MPDU_LENGTH, 166 OL_RX_ERR_ENCRYPT_REQUIRED, 167 OL_RX_ERR_DUP, 168 OL_RX_ERR_UNKNOWN, 169 OL_RX_ERR_FCS, 170 OL_RX_ERR_PRIVACY, 171 OL_RX_ERR_NONE_FRAG, 172 OL_RX_ERR_NONE = 0xFF 173 }; 174 175 enum throttle_level { 176 THROTTLE_LEVEL_0, 177 THROTTLE_LEVEL_1, 178 THROTTLE_LEVEL_2, 179 THROTTLE_LEVEL_3, 180 THROTTLE_LEVEL_4, 181 THROTTLE_LEVEL_5, 182 /* Invalid */ 183 THROTTLE_LEVEL_MAX, 184 }; 185 186 enum { 187 OL_TX_WMM_AC_BE, 188 OL_TX_WMM_AC_BK, 189 OL_TX_WMM_AC_VI, 190 OL_TX_WMM_AC_VO, 191 OL_TX_NUM_WMM_AC 192 }; 193 194 /** 195 * enum ol_tx_spec - indicate what non-standard transmission actions to apply 196 * @OL_TX_SPEC_STD: do regular processing 197 * @OL_TX_SPEC_RAW: skip encap + A-MSDU aggr 198 * @OL_TX_SPEC_NO_AGGR: skip encap + all aggr 199 * @OL_TX_SPEC_NO_ENCRYPT: skip encap + encrypt 200 * @OL_TX_SPEC_TSO: TCP segmented 201 * @OL_TX_SPEC_NWIFI_NO_ENCRYPT: skip encrypt for nwifi 202 * @OL_TX_SPEC_NO_FREE: give to cb rather than free 203 * 204 * Indicate one or more of the following: 205 * - The tx frame already has a complete 802.11 header. 206 * Thus, skip 802.3/native-WiFi to 802.11 header encapsulation and 207 * A-MSDU aggregation. 208 * - The tx frame should not be aggregated (A-MPDU or A-MSDU) 209 * - The tx frame is already encrypted - don't attempt encryption. 210 * - The tx frame is a segment of a TCP jumbo frame. 211 * - This tx frame should not be unmapped and freed by the txrx layer 212 * after transmission, but instead given to a registered tx completion 213 * callback. 214 * More than one of these specification can apply, though typically 215 * only a single specification is applied to a tx frame. 216 * A compound specification can be created, as a bit-OR of these 217 * specifications. 218 */ 219 enum ol_tx_spec { 220 OL_TX_SPEC_STD = 0x0, /* do regular processing */ 221 OL_TX_SPEC_RAW = 0x1, /* skip encap + A-MSDU aggr */ 222 OL_TX_SPEC_NO_AGGR = 0x2, /* skip encap + all aggr */ 223 OL_TX_SPEC_NO_ENCRYPT = 0x4, /* skip encap + encrypt */ 224 OL_TX_SPEC_TSO = 0x8, /* TCP segmented */ 225 OL_TX_SPEC_NWIFI_NO_ENCRYPT = 0x10, /* skip encrypt for nwifi */ 226 OL_TX_SPEC_NO_FREE = 0x20, /* give to cb rather than free */ 227 }; 228 229 /** 230 * enum peer_debug_id_type - debug ids to track peer get_ref and release_ref 231 * @PEER_DEBUG_ID_OL_INTERNAL: debug id for OL internal usage 232 * @PEER_DEBUG_ID_WMA_PKT_DROP: debug id for wma_is_pkt_drop_candidate API 233 * @PEER_DEBUG_ID_WMA_ADDBA_REQ: debug id for ADDBA request 234 * @PEER_DEBUG_ID_WMA_DELBA_REQ: debug id for DELBA request 235 * @PEER_DEBUG_ID_LIM_SEND_ADDBA_RESP: debug id for send ADDBA response 236 * @PEER_DEBUG_ID_OL_RX_THREAD: debug id for rx thread 237 * @PEER_DEBUG_ID_WMA_CCMP_REPLAY_ATTACK: debug id for CCMP replay 238 * @PEER_DEBUG_ID_WMA_DEL_BSS:debug id for remove BSS 239 * @PEER_DEBUG_ID_WMA_VDEV_STOP_RESP:debug id for vdev stop response handler 240 * @PEER_DEBUG_ID_OL_PEER_MAP:debug id for peer map/unmap 241 * @PEER_DEBUG_ID_OL_PEER_ATTACH: debug id for peer attach/detach 242 * @PEER_DEBUG_ID_OL_TXQ_VDEV_FL: debug id for vdev flush 243 * @PEER_DEBUG_ID_OL_HASH_ERS: debug id for peer find hash erase 244 * @PEER_DEBUG_ID_OL_UNMAP_TIMER_WORK: debug id for peer unmap timer work 245 * @PEER_DEBUG_ID_MAX: debug id MAX 246 * 247 * Unique peer debug IDs to track the callers. Each new usage can add to 248 * this enum list to create a new "PEER_DEBUG_ID_". 249 */ 250 enum peer_debug_id_type { 251 PEER_DEBUG_ID_OL_INTERNAL, 252 PEER_DEBUG_ID_WMA_PKT_DROP, 253 PEER_DEBUG_ID_WMA_ADDBA_REQ, 254 PEER_DEBUG_ID_WMA_DELBA_REQ, 255 PEER_DEBUG_ID_LIM_SEND_ADDBA_RESP, 256 PEER_DEBUG_ID_OL_RX_THREAD, 257 PEER_DEBUG_ID_WMA_CCMP_REPLAY_ATTACK, 258 PEER_DEBUG_ID_WMA_DEL_BSS, 259 PEER_DEBUG_ID_WMA_VDEV_STOP_RESP, 260 PEER_DEBUG_ID_OL_PEER_MAP, 261 PEER_DEBUG_ID_OL_PEER_ATTACH, 262 PEER_DEBUG_ID_OL_TXQ_VDEV_FL, 263 PEER_DEBUG_ID_OL_HASH_ERS, 264 PEER_DEBUG_ID_OL_UNMAP_TIMER_WORK, 265 PEER_DEBUG_ID_MAX 266 }; 267 268 /** 269 * enum cdp_peer_bw - Bandwidth types 270 * @CDP_20_MHZ: 20MHz BW 271 * @CDP_40_MHZ: 40MHz BW 272 * @CDP_80_MHZ: 80MHz BW 273 * @CDP_160_MHZ: 160MHz BW 274 * @CDP_80P80_MHZ: 80+80MHz BW 275 * @CDP_5_MHZ: 5MHz BW 276 * @CDP_10_MHZ: 10MHz BW 277 * @CDP_320_MHZ: 320MHz BW 278 * @CDP_BW_INVALID: Invalid BW 279 * @CDP_BW_MAX: Max BW id 280 */ 281 enum cdp_peer_bw { 282 CDP_20_MHZ, 283 CDP_40_MHZ, 284 CDP_80_MHZ, 285 CDP_160_MHZ, 286 CDP_80P80_MHZ, 287 CDP_5_MHZ, 288 CDP_10_MHZ, 289 CDP_320_MHZ, 290 CDP_BW_INVALID, 291 CDP_BW_MAX 292 }; 293 294 /** 295 * struct ol_txrx_desc_type - txrx descriptor type 296 * @is_qos_enabled: is station qos enabled 297 * @is_wapi_supported: is station wapi supported 298 * @peer_addr: peer mac address 299 * @bw: bandwidth of peer connection 300 */ 301 struct ol_txrx_desc_type { 302 uint8_t is_qos_enabled; 303 uint8_t is_wapi_supported; 304 struct qdf_mac_addr peer_addr; 305 enum cdp_peer_bw bw; 306 }; 307 308 /** 309 * struct ol_tx_sched_wrr_ac_specs_t - the wrr ac specs params structure 310 * @wrr_skip_weight: map to ol_tx_sched_wrr_adv_category_info_t.specs. 311 * wrr_skip_weight 312 * @credit_threshold: map to ol_tx_sched_wrr_adv_category_info_t.specs. 313 * credit_threshold 314 * @send_limit: map to ol_tx_sched_wrr_adv_category_info_t.specs. 315 * send_limit 316 * @credit_reserve: map to ol_tx_sched_wrr_adv_category_info_t.specs. 317 * credit_reserve 318 * @discard_weight: map to ol_tx_sched_wrr_adv_category_info_t.specs. 319 * discard_weight 320 * 321 * This structure is for wrr ac specs params set from user, it will update 322 * its content corresponding to the ol_tx_sched_wrr_adv_category_info_t.specs. 323 */ 324 struct ol_tx_sched_wrr_ac_specs_t { 325 int wrr_skip_weight; 326 uint32_t credit_threshold; 327 uint16_t send_limit; 328 int credit_reserve; 329 int discard_weight; 330 }; 331 332 /** 333 * struct txrx_pdev_cfg_param_t - configuration information 334 * passed to the data path 335 * @is_full_reorder_offload: 336 * @is_uc_offload_enabled: IPA Micro controller data path offload enable flag 337 * @uc_tx_buffer_count: IPA Micro controller data path offload TX buffer count 338 * @uc_tx_buffer_size: IPA Micro controller data path offload TX buffer size 339 * @uc_rx_indication_ring_count: IPA Micro controller data path offload RX 340 * indication ring count 341 * @uc_tx_partition_base: IPA Micro controller data path offload TX partition 342 * base 343 * @ip_tcp_udp_checksum_offload: IP, TCP and UDP checksum offload 344 * @nan_ip_tcp_udp_checksum_offload: IP, TCP and UDP checksum offload for NAN 345 * Mode 346 * @p2p_ip_tcp_udp_checksum_offload: IP, TCP and UDP checksum offload for P2P 347 * Mod 348 * @legacy_mode_csum_disable: Checksum offload override flag for Legcay modes 349 * @enable_rxthread: Rx processing in thread from TXRX 350 * @ce_classify_enabled: CE classification enabled through INI 351 * @tx_flow_stop_queue_th: Threshold to stop queue in percentage 352 * @tx_flow_start_queue_offset: Start queue offset in percentage 353 * @del_ack_enable: enable the tcp delay ack feature in the driver 354 * @del_ack_timer_value: timeout if no more tcp ack frames, unit is ms 355 * @del_ack_pkt_count: the maximum number of replaced tcp ack frames 356 * @ac_specs: 357 * @gro_enable: 358 * @tso_enable: 359 * @lro_enable: 360 * @sg_enable: 361 * @enable_data_stall_detection: 362 * @enable_flow_steering: 363 * @disable_intra_bss_fwd: 364 * @bundle_timer_value: 365 * @bundle_size: 366 * @pktlog_buffer_size: 367 */ 368 struct txrx_pdev_cfg_param_t { 369 uint8_t is_full_reorder_offload; 370 uint8_t is_uc_offload_enabled; 371 uint32_t uc_tx_buffer_count; 372 uint32_t uc_tx_buffer_size; 373 uint32_t uc_rx_indication_ring_count; 374 uint32_t uc_tx_partition_base; 375 bool ip_tcp_udp_checksum_offload; 376 bool nan_ip_tcp_udp_checksum_offload; 377 bool p2p_ip_tcp_udp_checksum_offload; 378 bool legacy_mode_csum_disable; 379 bool enable_rxthread; 380 bool ce_classify_enabled; 381 #if defined(QCA_LL_TX_FLOW_CONTROL_V2) || defined(QCA_LL_PDEV_TX_FLOW_CONTROL) 382 uint32_t tx_flow_stop_queue_th; 383 uint32_t tx_flow_start_queue_offset; 384 #endif 385 386 #ifdef QCA_SUPPORT_TXRX_DRIVER_TCP_DEL_ACK 387 bool del_ack_enable; 388 uint16_t del_ack_timer_value; 389 uint16_t del_ack_pkt_count; 390 #endif 391 392 struct ol_tx_sched_wrr_ac_specs_t ac_specs[TX_WMM_AC_NUM]; 393 bool gro_enable; 394 bool tso_enable; 395 bool lro_enable; 396 bool sg_enable; 397 uint32_t enable_data_stall_detection; 398 bool enable_flow_steering; 399 bool disable_intra_bss_fwd; 400 401 #ifdef WLAN_SUPPORT_TXRX_HL_BUNDLE 402 uint16_t bundle_timer_value; 403 uint16_t bundle_size; 404 #endif 405 uint8_t pktlog_buffer_size; 406 }; 407 408 #ifdef IPA_OFFLOAD 409 /** 410 * struct ol_txrx_ipa_resources - Resources needed for IPA 411 * @ce_sr: 412 * @ce_sr_ring_size: 413 * @ce_reg_paddr: 414 * @tx_comp_ring: 415 * @tx_num_alloc_buffer: 416 * @rx_rdy_ring: 417 * @rx_proc_done_idx: 418 * @rx2_rdy_ring: 419 * @rx2_proc_done_idx: 420 * @tx_comp_doorbell_dmaaddr: IPA UC Tx Complete doorbell register paddr 421 * @rx_ready_doorbell_dmaaddr: IPA UC Rx Ready doorbell register paddr 422 * @tx_pipe_handle: 423 * @rx_pipe_handle: 424 */ 425 struct ol_txrx_ipa_resources { 426 qdf_shared_mem_t *ce_sr; 427 uint32_t ce_sr_ring_size; 428 qdf_dma_addr_t ce_reg_paddr; 429 430 qdf_shared_mem_t *tx_comp_ring; 431 uint32_t tx_num_alloc_buffer; 432 433 qdf_shared_mem_t *rx_rdy_ring; 434 qdf_shared_mem_t *rx_proc_done_idx; 435 436 qdf_shared_mem_t *rx2_rdy_ring; 437 qdf_shared_mem_t *rx2_proc_done_idx; 438 439 /* IPA UC doorbell registers paddr */ 440 qdf_dma_addr_t tx_comp_doorbell_dmaaddr; 441 qdf_dma_addr_t rx_ready_doorbell_dmaaddr; 442 443 uint32_t tx_pipe_handle; 444 uint32_t rx_pipe_handle; 445 }; 446 #endif 447 448 struct ol_txrx_ocb_chan_info { 449 uint32_t chan_freq; 450 uint16_t disable_rx_stats_hdr:1; 451 }; 452 453 /** 454 * struct ol_mic_error_info - carries the information associated with 455 * a MIC error 456 * @vdev_id: virtual device ID 457 * @key_id: Key ID 458 * @pn: packet number 459 * @sa: source address 460 * @da: destination address 461 * @ta: transmitter address 462 */ 463 struct ol_mic_error_info { 464 uint8_t vdev_id; 465 uint32_t key_id; 466 uint64_t pn; 467 uint8_t sa[QDF_MAC_ADDR_SIZE]; 468 uint8_t da[QDF_MAC_ADDR_SIZE]; 469 uint8_t ta[QDF_MAC_ADDR_SIZE]; 470 }; 471 472 /** 473 * struct ol_error_info - carries the information associated with an 474 * error indicated by the firmware 475 * @u: union of error information structs 476 * @u.mic_err: MIC error information 477 */ 478 struct ol_error_info { 479 union { 480 struct ol_mic_error_info mic_err; 481 } u; 482 }; 483 484 485 /** 486 * struct ol_txrx_ocb_set_chan - txrx OCB channel info 487 * @ocb_channel_count: Channel count 488 * @ocb_channel_info: OCB channel info 489 */ 490 struct ol_txrx_ocb_set_chan { 491 uint32_t ocb_channel_count; 492 struct ol_txrx_ocb_chan_info *ocb_channel_info; 493 }; 494 495 /** 496 * struct ol_tx_ac_param_t - WMM parameters 497 * @aifs: Arbitration Inter-Frame Space 498 * @cwmin: Minimum contention window size 499 * @cwmax: Maximum contention window size 500 * 501 * The struct is used to specify information to update TX WMM scheduler. 502 */ 503 struct ol_tx_ac_param_t { 504 uint32_t aifs; 505 uint32_t cwmin; 506 uint32_t cwmax; 507 }; 508 509 struct ol_tx_wmm_param_t { 510 struct ol_tx_ac_param_t ac[OL_TX_NUM_WMM_AC]; 511 }; 512 513 struct ieee80211_ba_parameterset { 514 #if _BYTE_ORDER == _BIG_ENDIAN 515 uint16_t buffersize:10, /* B6-15 buffer size */ 516 tid:4, /* B2-5 TID */ 517 bapolicy:1, /* B1 block ack policy */ 518 amsdusupported:1; /* B0 amsdu supported */ 519 #else 520 uint16_t amsdusupported:1, /* B0 amsdu supported */ 521 bapolicy:1, /* B1 block ack policy */ 522 tid:4, /* B2-5 TID */ 523 buffersize:10; /* B6-15 buffer size */ 524 #endif 525 } __packed; 526 527 struct ieee80211_ba_seqctrl { 528 #if _BYTE_ORDER == _BIG_ENDIAN 529 uint16_t startseqnum:12, /* B4-15 starting sequence number */ 530 fragnum:4; /* B0-3 fragment number */ 531 #else 532 uint16_t fragnum:4, /* B0-3 fragment number */ 533 startseqnum:12; /* B4-15 starting sequence number */ 534 #endif 535 } __packed; 536 537 struct ieee80211_delba_parameterset { 538 #if _BYTE_ORDER == _BIG_ENDIAN 539 uint16_t tid:4, /* B12-15 tid */ 540 initiator:1, /* B11 initiator */ 541 reserved0:11; /* B0-10 reserved */ 542 #else 543 uint16_t reserved0:11, /* B0-10 reserved */ 544 initiator:1, /* B11 initiator */ 545 tid:4; /* B12-15 tid */ 546 #endif 547 } __packed; 548 549 /** 550 * typedef ol_txrx_vdev_peer_remove_cb() - wma_remove_peer callback 551 * @handle: callback handle 552 * @bssid: BSSID 553 * @vdev_id: virtual device ID 554 * @peer: peer 555 */ 556 typedef void (*ol_txrx_vdev_peer_remove_cb)(void *handle, uint8_t *bssid, 557 uint8_t vdev_id, void *peer); 558 559 /** 560 * typedef tx_pause_callback() - OSIF function registered with the data path 561 * @vdev_id: virtual device id 562 * @action: tx pause action to take 563 * @reason: reason for the tx pause action 564 */ 565 typedef void (*tx_pause_callback)(uint8_t vdev_id, 566 enum netif_action_type action, 567 enum netif_reason_type reason); 568 569 /** 570 * struct ol_rx_inv_peer_params - rx invalid peer data parameters 571 * @vdev_id: Virtual device ID 572 * @ra: RX data receiver MAC address 573 * @ta: RX data transmitter MAC address 574 */ 575 struct ol_rx_inv_peer_params { 576 uint8_t vdev_id; 577 uint8_t ra[QDF_MAC_ADDR_SIZE]; 578 uint8_t ta[QDF_MAC_ADDR_SIZE]; 579 }; 580 581 /** 582 * struct cdp_txrx_ext_stats: dp extended stats 583 * @tx_msdu_enqueue: tx msdu queued to hw 584 * @tx_msdu_overflow: tx msdu overflow 585 * @rx_mpdu_received: rx mpdu processed by hw 586 * @rx_mpdu_delivered: rx mpdu received from hw 587 * @rx_mpdu_error: rx mpdu error count 588 * @rx_mpdu_missed: rx mpdu missed by hw 589 */ 590 struct cdp_txrx_ext_stats { 591 uint32_t tx_msdu_enqueue; 592 uint32_t tx_msdu_overflow; 593 uint32_t rx_mpdu_received; 594 uint32_t rx_mpdu_delivered; 595 uint32_t rx_mpdu_error; 596 uint32_t rx_mpdu_missed; 597 }; 598 599 #endif /* __CDP_TXRX_MOB_DEF_H */ 600