1 /* 2 * Copyright (c) 2013-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 __WLAN_CFG_H 21 #define __WLAN_CFG_H 22 23 #include <wlan_init_cfg.h> 24 25 /* DP process status */ 26 #if defined(MAX_PDEV_CNT) && (MAX_PDEV_CNT == 1) 27 #define CONFIG_PROCESS_RX_STATUS 1 28 #define CONFIG_PROCESS_TX_STATUS 1 29 #else 30 #define CONFIG_PROCESS_RX_STATUS 0 31 #define CONFIG_PROCESS_TX_STATUS 0 32 #endif 33 34 /* Miscellaneous configuration */ 35 #define MAX_IDLE_SCATTER_BUFS 16 36 #define DP_MAX_IRQ_PER_CONTEXT 12 37 #define MAX_HTT_METADATA_LEN 32 38 #define DP_MAX_TIDS 17 39 #define DP_NON_QOS_TID 16 40 #define DP_NULL_DATA_TID 17 41 42 #ifdef CONFIG_BERYLLIUM 43 #define WLAN_CFG_RX_FST_MAX_SEARCH 16 44 #else 45 #define WLAN_CFG_RX_FST_MAX_SEARCH 2 46 #endif 47 #define WLAN_CFG_RX_FST_TOEPLITZ_KEYLEN 40 48 49 #define INVALID_PDEV_ID 0xFF 50 51 #define WLAN_CFG_RX_RING_MASK_0 0x1 52 #define WLAN_CFG_RX_RING_MASK_1 0x2 53 #define WLAN_CFG_RX_RING_MASK_2 0x4 54 #define WLAN_CFG_RX_RING_MASK_3 0x8 55 #define WLAN_CFG_RX_RING_MASK_4 0x10 56 #define WLAN_CFG_RX_RING_MASK_5 0x20 57 #define WLAN_CFG_RX_RING_MASK_6 0x40 58 #define WLAN_CFG_RX_RING_MASK_7 0x80 59 60 #ifdef WLAN_FEATURE_NEAR_FULL_IRQ 61 #ifdef IPA_OFFLOAD 62 #define WLAN_CFG_RX_NEAR_FULL_IRQ_MASK_1 (WLAN_CFG_RX_RING_MASK_0 | \ 63 WLAN_CFG_RX_RING_MASK_1 | \ 64 WLAN_CFG_RX_RING_MASK_2) 65 66 #define WLAN_CFG_RX_NEAR_FULL_IRQ_MASK_2 (WLAN_CFG_RX_RING_MASK_4 | \ 67 WLAN_CFG_RX_RING_MASK_5 | \ 68 WLAN_CFG_RX_RING_MASK_6) 69 70 #define WLAN_CFG_TX_RING_NEAR_FULL_IRQ_MASK (WLAN_CFG_TX_RING_MASK_0 | \ 71 WLAN_CFG_TX_RING_MASK_4 | \ 72 WLAN_CFG_TX_RING_MASK_2) 73 74 #else 75 #define WLAN_CFG_RX_NEAR_FULL_IRQ_MASK_1 (WLAN_CFG_RX_RING_MASK_0 | \ 76 WLAN_CFG_RX_RING_MASK_1 | \ 77 WLAN_CFG_RX_RING_MASK_2 | \ 78 WLAN_CFG_RX_RING_MASK_3) 79 80 #define WLAN_CFG_RX_NEAR_FULL_IRQ_MASK_2 (WLAN_CFG_RX_RING_MASK_4 | \ 81 WLAN_CFG_RX_RING_MASK_5 | \ 82 WLAN_CFG_RX_RING_MASK_6 | \ 83 WLAN_CFG_RX_RING_MASK_7) 84 85 #ifdef QCA_WIFI_KIWI_V2 86 #define WLAN_CFG_TX_RING_NEAR_FULL_IRQ_MASK (WLAN_CFG_TX_RING_MASK_0 | \ 87 WLAN_CFG_TX_RING_MASK_4 | \ 88 WLAN_CFG_TX_RING_MASK_2 | \ 89 WLAN_CFG_TX_RING_MASK_5 | \ 90 WLAN_CFG_TX_RING_MASK_6) 91 #else /* !QCA_WIFI_KIWI_V2 */ 92 #define WLAN_CFG_TX_RING_NEAR_FULL_IRQ_MASK (WLAN_CFG_TX_RING_MASK_0 | \ 93 WLAN_CFG_TX_RING_MASK_4 | \ 94 WLAN_CFG_TX_RING_MASK_2 | \ 95 WLAN_CFG_TX_RING_MASK_6 | \ 96 WLAN_CFG_TX_RING_MASK_7) 97 #endif /* QCA_WIFI_KIWI_V2 */ 98 #endif 99 #endif 100 101 /* Max number of chips that can participate in MLO */ 102 #if defined(WLAN_FEATURE_11BE_MLO) && defined(WLAN_MLO_MULTI_CHIP) 103 #define WLAN_MAX_MLO_CHIPS 4 104 #define WLAN_MAX_MLO_LINKS_PER_SOC 2 105 #else 106 #define WLAN_MAX_MLO_CHIPS 1 107 #endif 108 109 #define UMAC_RESET_IPC 451 110 111 struct wlan_cfg_dp_pdev_ctxt; 112 113 /** 114 * struct wlan_cfg_tcl_wbm_ring_num_map - TCL WBM Ring number mapping 115 * @tcl_ring_num: TCL Ring number 116 * @wbm_ring_num: WBM Ring number 117 * @wbm_rbm_id: WBM RBM ID to be used when enqueuing to TCL 118 * @for_ipa: whether this TCL/WBM for IPA use or not 119 */ 120 struct wlan_cfg_tcl_wbm_ring_num_map { 121 uint8_t tcl_ring_num; 122 uint8_t wbm_ring_num; 123 uint8_t wbm_rbm_id; 124 uint8_t for_ipa; 125 }; 126 127 /** 128 * struct wlan_srng_cfg - Per ring configuration parameters 129 * @timer_threshold: Config to control interrupts based on timer duration 130 * @batch_count_threshold: Config to control interrupts based on 131 * number of packets in the ring 132 * @low_threshold: Config to control low threshold interrupts for SRC rings 133 */ 134 struct wlan_srng_cfg { 135 uint32_t timer_threshold; 136 uint32_t batch_count_threshold; 137 uint32_t low_threshold; 138 }; 139 140 /** 141 * struct wlan_cfg_dp_soc_ctxt - Configuration parameters for SoC (core TxRx) 142 * @num_int_ctxts: Number of NAPI/Interrupt contexts to be registered for DP 143 * @max_clients: Maximum number of peers/stations supported by device 144 * @max_alloc_size: Maximum allocation size for any dynamic memory 145 * allocation request for this device 146 * @per_pdev_tx_ring: 0: TCL ring is not mapped per radio 147 * 1: Each TCL ring is mapped to one radio/pdev 148 * @num_tx_comp_rings: Number of Tx comp rings supported by device 149 * @num_tcl_data_rings: Number of TCL Data rings supported by device 150 * @num_nss_tcl_data_rings: 151 * @per_pdev_rx_ring: 0: REO ring is not mapped per radio 152 * 1: Each REO ring is mapped to one radio/pdev 153 * @per_pdev_lmac_ring: 154 * @num_reo_dest_rings: 155 * @num_nss_reo_dest_rings: 156 * @num_tx_desc_pool: Number of Tx Descriptor pools 157 * @num_tx_ext_desc_pool: Number of Tx MSDU extension Descriptor pools 158 * @num_global_tx_desc: Number of Global Tx Descriptors allowed 159 * @num_global_spcl_tx_desc: Number of Global special Tx Descriptors allowed 160 * @num_tx_desc: Number of Tx Descriptors per pool 161 * @num_tx_spl_desc: Number of Tx Descriptors per pool to handle special frames 162 * @min_tx_desc: Minimum number of Tx Descriptors per pool 163 * @num_tx_ext_desc: Number of Tx MSDU extension Descriptors per pool 164 * @max_peer_id: Maximum value of peer id that FW can assign for a client 165 * @htt_packet_type: Default 802.11 encapsulation type for any VAP created 166 * @int_tx_ring_mask: Bitmap of Tx interrupts mapped to each NAPI/Intr context 167 * @int_rx_ring_mask: Bitmap of Rx interrupts mapped to each NAPI/Intr context 168 * @int_batch_threshold_ppe2tcl: 169 * @int_timer_threshold_ppe2tcl: 170 * @int_batch_threshold_tx: 171 * @int_timer_threshold_tx: 172 * @int_batch_threshold_rx: 173 * @int_timer_threshold_rx: 174 * @int_batch_threshold_other: 175 * @int_timer_threshold_other: 176 * @int_batch_threshold_mon_dest: Batch threshold counter for monitor dest 177 * @int_timer_threshold_mon_dest: Timer threshold counter for monitor dest 178 * @tx_ring_size: 179 * @time_control_bp: 180 * @rx_buffer_size: skb size 181 * @qref_control_size: list size for memory history arrays 182 * @tx_comp_ring_size: 183 * @tx_comp_ring_size_nss: 184 * @int_rx_mon_ring_mask: Bitmap of Rx monitor ring interrupts mapped to each 185 * NAPI/Intr context 186 * @int_tx_mon_ring_mask: Bitmap of Tx monitor ring interrupts mapped to each 187 * NAPI/Intr context 188 * @int_host2rxdma_mon_ring_mask: 189 * @int_rxdma2host_mon_ring_mask: 190 * @int_ce_ring_mask: Bitmap of CE interrupts mapped to each NAPI/Intr context 191 * @int_rx_err_ring_mask: Bitmap of Rx err ring interrupts mapped to each 192 * NAPI/Intr context 193 * @int_rx_wbm_rel_ring_mask: Bitmap of wbm rel ring interrupts mapped to each 194 * NAPI/Intr context 195 * @int_reo_status_ring_mask: Bitmap of reo status ring interrupts mapped to 196 * each NAPI/Intr context 197 * @int_rxdma2host_ring_mask: 198 * @int_host2rxdma_ring_mask: 199 * @int_rx_ring_near_full_irq_1_mask: Bitmap of REO DST ring near full interrupt 200 * mapped to each NAPI/INTR context 201 * @int_rx_ring_near_full_irq_2_mask: Bitmap of REO DST ring near full interrupt 202 * mapped to each NAPI/INTR context 203 * @int_tx_ring_near_full_irq_mask: Bitmap of Tx completion ring near full 204 * interrupt mapped to each NAPI/INTR context 205 * @int_host2txmon_ring_mask: Bitmap of Tx monitor source ring interrupt 206 * mapped to each NAPI/INTR context 207 * @int_ppeds_wbm_release_ring_mask: 208 * @int_ppe2tcl_ring_mask: 209 * @int_reo2ppe_ring_mask: 210 * @int_umac_reset_intr_mask: Bitmap of UMAC reset interrupt mapped to each 211 * NAPI/INTR context 212 * @hw_macid: 213 * @hw_macid_pdev_id_map: 214 * @base_hw_macid: 215 * @rx_hash: Enable hash based steering of rx packets 216 * @tso_enabled: enable/disable tso feature 217 * @lro_enabled: enable/disable LRO feature 218 * @sg_enabled: enable disable scatter gather feature 219 * @gro_enabled: enable disable GRO feature 220 * @tc_based_dynamic_gro: enable/disable tc based dynamic gro 221 * @tc_ingress_prio: ingress prio to be checked for dynamic gro 222 * @ipa_enabled: Flag indicating if IPA is enabled 223 * @ol_tx_csum_enabled: Flag indicating if TX csum is enabled 224 * @ol_rx_csum_enabled: Flag indicating if Rx csum is enabled 225 * @rawmode_enabled: Flag indicating if RAW mode is enabled 226 * @peer_flow_ctrl_enabled: Flag indicating if peer flow control is enabled 227 * @napi_enabled: enable/disable interrupt mode for reaping tx and rx packets 228 * @p2p_tcp_udp_checksumoffload: enable/disable checksum offload for P2P mode 229 * @nan_tcp_udp_checksumoffload: enable/disable checksum offload for NAN mode 230 * @tcp_udp_checksumoffload: enable/disable checksum offload 231 * @legacy_mode_checksumoffload_disable: 232 * @defrag_timeout_check: 233 * @nss_cfg: nss configuration 234 * @tx_flow_stop_queue_threshold: 235 * @tx_flow_start_queue_offset: 236 * @rx_defrag_min_timeout: rx defrag minimum timeout 237 * @reo_dst_ring_size: 238 * @wbm_release_ring: wbm release ring size 239 * @tcl_cmd_credit_ring: tcl command/credit ring size 240 * @tcl_status_ring: tcl status ring size 241 * @reo_reinject_ring: reo reinject ring 242 * @rx_release_ring: rx release ring size 243 * @reo_exception_ring: reo exception ring size 244 * @reo_cmd_ring: reo cmd ring size 245 * @reo_status_ring: reo status ting size 246 * @rxdma_refill_ring: rxdma refill ring size 247 * @rxdma_refill_lt_disable: rxdma refill low threshold disable 248 * @rxdma_err_dst_ring: rxdma error destination ring size 249 * @per_pkt_trace: 250 * @raw_mode_war: enable/disable raw mode war 251 * @enable_data_stall_detection: enable/disable specific data stall detection 252 * @disable_intra_bss_fwd: flag to disable intra bss forwarding 253 * @rxdma1_enable: flag to indicate if rxdma1 is enabled 254 * @delay_mon_replenish: delay monitor buffer replenish 255 * @max_ast_idx: 256 * @tx_desc_limit_0: tx_desc limit for 5 GHz High 257 * @tx_desc_limit_1: tx_desc limit for 2 GHz 258 * @tx_desc_limit_2: tx_desc limit for 5 GHz Low 259 * @tx_device_limit: tx device limit 260 * @tx_spl_device_limit: tx device limit for special frames 261 * @tx_sw_internode_queue: tx sw internode queue 262 * @mon_drop_thresh: 263 * @tx_comp_loop_pkt_limit: Max # of packets to be processed in 1 tx comp loop 264 * @rx_reap_loop_pkt_limit: Max # of packets to be processed in 1 rx reap loop 265 * @rx_hp_oos_update_limit: Max # of HP OOS (out of sync) updates 266 * @rx_enable_eol_data_check: flag to enable check for more ring data at end of 267 * dp_rx_process loop 268 * @tx_comp_enable_eol_data_check: flag to enable/disable checking for more data 269 * at end of tx_comp_handler loop. 270 * @rx_sw_desc_weight: rx sw descriptor weight configuration 271 * @rx_sw_desc_num: 272 * @is_rx_mon_protocol_flow_tag_enabled: flag to enable/disable RX protocol or 273 * flow tagging in monitor/mon-lite mode 274 * @is_rx_flow_tag_enabled: flag to enable/disable RX flow tagging using FSE 275 * @is_rx_flow_search_table_per_pdev: flag to indicate if a per-SOC or per-pdev 276 * table should be used 277 * @rx_flow_search_table_size: indicates the number of flows in the flow search 278 * table 279 * @rx_flow_max_search: max skid length for each hash entry 280 * @rx_toeplitz_hash_key: toeplitz key pointer used for hash computation over 281 * 5 tuple flow entry 282 * @pktlog_buffer_size: packet log buffer size 283 * @is_rx_fisa_enabled: flag to enable/disable FISA Rx 284 * @is_rx_fisa_lru_del_enabled: 285 * @is_tso_desc_attach_defer: 286 * @delayed_replenish_entries: 287 * @reo_rings_mapping: 288 * @rx_rings_mapping: DP RX rings mapping mask 289 * @pext_stats_enabled: Flag to enable and disabled peer extended stats 290 * @is_rx_buff_pool_enabled: flag to enable/disable emergency RX buffer 291 * pool support 292 * @is_rx_refill_buff_pool_enabled: flag to enable/disable RX refill buffer 293 * pool support 294 * @enable_dp_buf_page_frag_alloc: Flag to control DP allocation from page frag 295 * cache. 296 * @rx_refill_buff_pool_size: RX refill buffer pool size 297 * @rx_pending_high_threshold: threshold of starting pkt drop 298 * @rx_pending_low_threshold: threshold of stopping pkt drop 299 * @is_poll_mode_enabled: 300 * @is_swlm_enabled: flag to enable/disable SWLM 301 * @fst_in_cmem: 302 * @tx_per_pkt_vdev_id_check: Enable tx perpkt vdev id check 303 * @radio0_rx_default_reo: 304 * @radio1_rx_default_reo: 305 * @radio2_rx_default_reo: 306 * @wow_check_rx_pending_enable: Enable RX frame pending check in WoW 307 * @jitter_stats_enabled: true if jitter stats are enabled 308 * @peer_link_stats_enabled: true if MLO Peer Link stats are enabled 309 * @ipa_tx_ring_size: IPA tx ring size 310 * @ipa_tx_comp_ring_size: IPA tx completion ring size 311 * @ipa_tx_alt_ring_size: IPA tx alt ring size 312 * @ipa_tx_alt_comp_ring_size: IPA tx alt completion ring size 313 * @hw_cc_enabled: cookie conversion enabled 314 * @tcl_wbm_map_array: TCL-WBM map array 315 * @ppeds_enable: Enable PPE Direct Switch feature 316 * @reo2ppe_ring: REO2PPE ring size 317 * @ppe2tcl_ring: PPE2TCL ring size 318 * @ppeds_num_tx_desc: Number of tx descs for PPE DS 319 * @ppeds_tx_comp_napi_budget: Napi budget for tx completions 320 * @ppeds_tx_desc_hotlist_len: PPE DS tx desc hotlist max length 321 * @pkt_capture_mode: Packet capture mode config 322 * @rx_mon_buf_ring_size: Rx monitor buf ring size 323 * @tx_mon_buf_ring_size: Tx monitor buf ring size 324 * @rx_rel_wbm2sw_ring_id: Rx WBM2SW ring id 325 * @tx_rings_grp_bitmap: bitmap of group intr contexts which have 326 * non-zero tx ring mask 327 * @mlo_chip_rx_ring_map: map of chip_id to rx ring map 328 * @vdev_stats_hw_offload_config: HW vdev stats config 329 * @vdev_stats_hw_offload_timer: HW vdev stats timer duration 330 * @num_rxdma_dst_rings_per_pdev: Number of Rx DMA rings per pdev 331 * @txmon_hw_support: TxMON HW support 332 * @txmon_sw_peer_filtering: TxMON sw peer filtering support 333 * @num_rxdma_status_rings_per_pdev: Num RXDMA status rings 334 * @tx_capt_max_mem_allowed: Max memory for Tx packet capture 335 * @tx_capt_rbm_id: Return Buffer Manager ID to be used for Tx packet capture 336 * @sawf_enabled: Is SAWF enabled 337 * @sawf_stats: SAWF Statistics 338 * @mpdu_retry_threshold_1: MPDU retry threshold 1 to increment tx bad count 339 * @mpdu_retry_threshold_2: MPDU retry threshold 2 to increment tx bad count 340 * @napi_scale_factor: scaling factor to be used for napi polls 341 * @notify_frame_support: flag indicating capability to mark notify frames 342 * @is_handle_invalid_decap_type_disabled: flag to indicate if invalid decap 343 * type handling is disabled 344 * @tx_pkt_inspect_for_ilp: flag to indicate if TX packet inspection for HW 345 * based ILP feature is enabled 346 * @pointer_timer_threshold_rx: RX REO2SW ring pointer update timer threshold 347 * @pointer_num_threshold_rx: RX REO2SW ring pointer update entries threshold 348 * @local_pkt_capture: flag indicating enable/disable of local packet capture 349 * @special_frame_msk: Special frame mask 350 * @rx_rr: rx round robin enable / disable 351 * @umac_reset_buffer_window: Buffer time to check if umac reset was in progress 352 * during this window, configured time is in 353 * milliseconds. 354 * @fw_ast_indication_disable: Disable AST 355 * @avg_rate_stats_filter_val: Average rate filter value for stats. 356 * 357 */ 358 struct wlan_cfg_dp_soc_ctxt { 359 int num_int_ctxts; 360 int max_clients; 361 int max_alloc_size; 362 int per_pdev_tx_ring; 363 int num_tx_comp_rings; 364 int num_tcl_data_rings; 365 int num_nss_tcl_data_rings; 366 int per_pdev_rx_ring; 367 int per_pdev_lmac_ring; 368 int num_reo_dest_rings; 369 int num_nss_reo_dest_rings; 370 int num_tx_desc_pool; 371 int num_tx_ext_desc_pool; 372 int num_global_tx_desc; 373 int num_global_spcl_tx_desc; 374 int num_tx_desc; 375 int num_tx_spl_desc; 376 int min_tx_desc; 377 int num_tx_ext_desc; 378 int max_peer_id; 379 int htt_packet_type; 380 int int_batch_threshold_ppe2tcl; 381 int int_timer_threshold_ppe2tcl; 382 int int_batch_threshold_tx; 383 int int_timer_threshold_tx; 384 int int_batch_threshold_rx; 385 int int_timer_threshold_rx; 386 int int_batch_threshold_other; 387 int int_timer_threshold_other; 388 int int_batch_threshold_mon_dest; 389 int int_timer_threshold_mon_dest; 390 int tx_ring_size; 391 int time_control_bp; 392 int rx_buffer_size; 393 int qref_control_size; 394 int tx_comp_ring_size; 395 int tx_comp_ring_size_nss; 396 uint8_t int_tx_ring_mask[WLAN_CFG_INT_NUM_CONTEXTS]; 397 uint8_t int_rx_ring_mask[WLAN_CFG_INT_NUM_CONTEXTS]; 398 uint8_t int_rx_mon_ring_mask[WLAN_CFG_INT_NUM_CONTEXTS]; 399 uint8_t int_tx_mon_ring_mask[WLAN_CFG_INT_NUM_CONTEXTS]; 400 uint8_t int_host2rxdma_mon_ring_mask[WLAN_CFG_INT_NUM_CONTEXTS]; 401 uint8_t int_rxdma2host_mon_ring_mask[WLAN_CFG_INT_NUM_CONTEXTS]; 402 uint8_t int_ce_ring_mask[WLAN_CFG_INT_NUM_CONTEXTS]; 403 uint8_t int_rx_err_ring_mask[WLAN_CFG_INT_NUM_CONTEXTS]; 404 uint8_t int_rx_wbm_rel_ring_mask[WLAN_CFG_INT_NUM_CONTEXTS]; 405 uint8_t int_reo_status_ring_mask[WLAN_CFG_INT_NUM_CONTEXTS]; 406 uint8_t int_rxdma2host_ring_mask[WLAN_CFG_INT_NUM_CONTEXTS]; 407 uint8_t int_host2rxdma_ring_mask[WLAN_CFG_INT_NUM_CONTEXTS]; 408 uint8_t int_rx_ring_near_full_irq_1_mask[WLAN_CFG_INT_NUM_CONTEXTS]; 409 uint8_t int_rx_ring_near_full_irq_2_mask[WLAN_CFG_INT_NUM_CONTEXTS]; 410 uint8_t int_tx_ring_near_full_irq_mask[WLAN_CFG_INT_NUM_CONTEXTS]; 411 uint8_t int_host2txmon_ring_mask[WLAN_CFG_INT_NUM_CONTEXTS]; 412 uint8_t int_ppeds_wbm_release_ring_mask[WLAN_CFG_INT_NUM_CONTEXTS]; 413 uint8_t int_ppe2tcl_ring_mask[WLAN_CFG_INT_NUM_CONTEXTS]; 414 uint8_t int_reo2ppe_ring_mask[WLAN_CFG_INT_NUM_CONTEXTS]; 415 uint8_t int_umac_reset_intr_mask[WLAN_CFG_INT_NUM_CONTEXTS]; 416 int hw_macid[MAX_PDEV_CNT]; 417 int hw_macid_pdev_id_map[MAX_NUM_LMAC_HW]; 418 int base_hw_macid; 419 bool rx_hash; 420 bool tso_enabled; 421 bool lro_enabled; 422 bool sg_enabled; 423 bool gro_enabled; 424 bool tc_based_dynamic_gro; 425 uint32_t tc_ingress_prio; 426 bool ipa_enabled; 427 bool ol_tx_csum_enabled; 428 bool ol_rx_csum_enabled; 429 bool rawmode_enabled; 430 bool peer_flow_ctrl_enabled; 431 bool napi_enabled; 432 bool p2p_tcp_udp_checksumoffload; 433 bool nan_tcp_udp_checksumoffload; 434 bool tcp_udp_checksumoffload; 435 bool legacy_mode_checksumoffload_disable; 436 bool defrag_timeout_check; 437 int nss_cfg; 438 uint32_t tx_flow_stop_queue_threshold; 439 uint32_t tx_flow_start_queue_offset; 440 int rx_defrag_min_timeout; 441 int reo_dst_ring_size; 442 int wbm_release_ring; 443 int tcl_cmd_credit_ring; 444 int tcl_status_ring; 445 int reo_reinject_ring; 446 int rx_release_ring; 447 int reo_exception_ring; 448 int reo_cmd_ring; 449 int reo_status_ring; 450 int rxdma_refill_ring; 451 bool rxdma_refill_lt_disable; 452 int rxdma_err_dst_ring; 453 uint32_t per_pkt_trace; 454 bool raw_mode_war; 455 uint32_t enable_data_stall_detection; 456 bool disable_intra_bss_fwd; 457 bool rxdma1_enable; 458 bool delay_mon_replenish; 459 int max_ast_idx; 460 int tx_desc_limit_0; 461 int tx_desc_limit_1; 462 int tx_desc_limit_2; 463 int tx_device_limit; 464 int tx_spl_device_limit; 465 int tx_sw_internode_queue; 466 int mon_drop_thresh; 467 #ifdef WLAN_FEATURE_RX_SOFTIRQ_TIME_LIMIT 468 uint32_t tx_comp_loop_pkt_limit; 469 uint32_t rx_reap_loop_pkt_limit; 470 uint32_t rx_hp_oos_update_limit; 471 bool rx_enable_eol_data_check; 472 bool tx_comp_enable_eol_data_check; 473 #endif /* WLAN_FEATURE_RX_SOFTIRQ_TIME_LIMIT */ 474 int rx_sw_desc_weight; 475 int rx_sw_desc_num; 476 bool is_rx_mon_protocol_flow_tag_enabled; 477 bool is_rx_flow_tag_enabled; 478 bool is_rx_flow_search_table_per_pdev; 479 uint16_t rx_flow_search_table_size; 480 uint16_t rx_flow_max_search; 481 uint8_t *rx_toeplitz_hash_key; 482 uint8_t pktlog_buffer_size; 483 bool is_tso_desc_attach_defer; 484 uint32_t delayed_replenish_entries; 485 uint32_t reo_rings_mapping; 486 uint32_t rx_rings_mapping; 487 bool pext_stats_enabled; 488 bool is_rx_buff_pool_enabled; 489 bool is_rx_refill_buff_pool_enabled; 490 bool enable_dp_buf_page_frag_alloc; 491 int rx_refill_buff_pool_size; 492 uint32_t rx_pending_high_threshold; 493 uint32_t rx_pending_low_threshold; 494 bool is_poll_mode_enabled; 495 uint8_t is_swlm_enabled; 496 bool fst_in_cmem; 497 bool tx_per_pkt_vdev_id_check; 498 uint8_t radio0_rx_default_reo; 499 uint8_t radio1_rx_default_reo; 500 uint8_t radio2_rx_default_reo; 501 bool wow_check_rx_pending_enable; 502 bool jitter_stats_enabled; 503 bool peer_link_stats_enabled; 504 #ifdef IPA_OFFLOAD 505 uint32_t ipa_tx_ring_size; 506 uint32_t ipa_tx_comp_ring_size; 507 #ifdef IPA_WDI3_TX_TWO_PIPES 508 int ipa_tx_alt_ring_size; 509 int ipa_tx_alt_comp_ring_size; 510 #endif /* IPA_WDI3_TX_TWO_PIPES */ 511 #endif /* IPA_OFFLOAD */ 512 bool hw_cc_enabled; 513 struct wlan_cfg_tcl_wbm_ring_num_map *tcl_wbm_map_array; 514 #ifdef WLAN_SUPPORT_PPEDS 515 bool ppeds_enable; 516 int reo2ppe_ring; 517 int ppe2tcl_ring; 518 int ppeds_num_tx_desc; 519 int ppeds_tx_comp_napi_budget; 520 int ppeds_tx_desc_hotlist_len; 521 #endif 522 #ifdef WLAN_FEATURE_PKT_CAPTURE_V2 523 uint32_t pkt_capture_mode; 524 #endif 525 uint32_t rx_mon_buf_ring_size; 526 uint32_t tx_mon_buf_ring_size; 527 uint8_t rx_rel_wbm2sw_ring_id; 528 uint32_t tx_rings_grp_bitmap; 529 #if defined(WLAN_FEATURE_11BE_MLO) && defined(WLAN_MLO_MULTI_CHIP) 530 uint8_t mlo_chip_rx_ring_map; 531 #endif 532 #ifdef QCA_VDEV_STATS_HW_OFFLOAD_SUPPORT 533 bool vdev_stats_hw_offload_config; 534 int vdev_stats_hw_offload_timer; 535 #endif 536 uint8_t num_rxdma_dst_rings_per_pdev; 537 bool txmon_hw_support; 538 bool txmon_sw_peer_filtering; 539 uint8_t num_rxdma_status_rings_per_pdev; 540 #ifdef WLAN_TX_PKT_CAPTURE_ENH 541 uint32_t tx_capt_max_mem_allowed; 542 uint8_t tx_capt_rbm_id[MAX_PDEV_CNT]; 543 #endif 544 #ifdef CONFIG_SAWF 545 bool sawf_enabled; 546 #endif 547 #ifdef CONFIG_SAWF_STATS 548 uint8_t sawf_stats; 549 #endif 550 uint8_t mpdu_retry_threshold_1; 551 uint8_t mpdu_retry_threshold_2; 552 uint8_t napi_scale_factor; 553 uint8_t notify_frame_support; 554 bool is_handle_invalid_decap_type_disabled; 555 #ifdef DP_TX_PACKET_INSPECT_FOR_ILP 556 bool tx_pkt_inspect_for_ilp; 557 #endif 558 uint16_t pointer_timer_threshold_rx; 559 uint8_t pointer_num_threshold_rx; 560 #ifdef WLAN_FEATURE_LOCAL_PKT_CAPTURE 561 bool local_pkt_capture; 562 #endif 563 uint32_t special_frame_msk; 564 #ifdef WLAN_SUPPORT_RX_FLOW_TAG 565 bool rx_rr; 566 #endif 567 #ifdef DP_UMAC_HW_RESET_SUPPORT 568 uint32_t umac_reset_buffer_window; 569 #endif 570 bool fw_ast_indication_disable; 571 uint16_t avg_rate_stats_filter_val; 572 }; 573 574 /** 575 * struct wlan_cfg_dp_pdev_ctxt - Configuration parameters for pdev (radio) 576 * @rx_dma_buf_ring_size: Size of RxDMA buffer ring 577 * @dma_mon_buf_ring_size: Size of RxDMA Monitor buffer ring 578 * @dma_rx_mon_dest_ring_size: Size of RxDMA Monitor Destination ring 579 * @dma_tx_mon_dest_ring_size: Size of Tx Monitor Destination ring 580 * @dma_mon_status_ring_size: Size of RxDMA Monitor Status ring 581 * @rxdma_monitor_desc_ring: rxdma monitor desc ring size 582 * @num_mac_rings: Number of mac rings 583 * @nss_enabled: 1 - NSS enabled, 0 - NSS disabled 584 * @dma_tx_mon_buf_ring_size: Tx monitor BUF Ring size 585 * @sw2rxdma_link_ring_size: SW2RXDMA link ring size 586 */ 587 struct wlan_cfg_dp_pdev_ctxt { 588 int rx_dma_buf_ring_size; 589 int dma_mon_buf_ring_size; 590 int dma_rx_mon_dest_ring_size; 591 int dma_tx_mon_dest_ring_size; 592 int dma_mon_status_ring_size; 593 int rxdma_monitor_desc_ring; 594 int num_mac_rings; 595 int nss_enabled; 596 int dma_tx_mon_buf_ring_size; 597 int sw2rxdma_link_ring_size; 598 }; 599 600 /** 601 * struct wlan_dp_prealloc_cfg - DP prealloc related config 602 * @num_tx_ring_entries: num of tcl data ring entries 603 * @num_tx_comp_ring_entries: num of tx comp ring entries 604 * @num_wbm_rel_ring_entries: num of wbm err ring entries 605 * @num_rxdma_err_dst_ring_entries: num of rxdma err ring entries 606 * @num_reo_exception_ring_entries: num of rx exception ring entries 607 * @num_tx_desc: num of tx descriptors 608 * @num_tx_ext_desc: num of tx ext descriptors 609 * @num_rx_sw_desc: number of rx sw descriptors 610 * @num_reo_dst_ring_entries: Number of entries in REO destination ring 611 * @num_rxdma_buf_ring_entries: Number of entries in rxdma buf ring 612 * @num_rxdma_refill_ring_entries: Number of entries in rxdma refill ring 613 * @num_reo_status_ring_entries: Number of entries in REO status ring 614 * @num_mon_status_ring_entries: Number of entries in monitor status ring 615 * @num_tx_mon_buf_ring_entries: Number of entries in Tx monitor buf ring 616 * @num_tx_mon_dst_ring_entries: Number of entries in Tx monitor 617 * destination ring 618 */ 619 struct wlan_dp_prealloc_cfg { 620 int num_tx_ring_entries; 621 int num_tx_comp_ring_entries; 622 int num_wbm_rel_ring_entries; 623 int num_rxdma_err_dst_ring_entries; 624 int num_reo_exception_ring_entries; 625 int num_tx_desc; 626 int num_tx_ext_desc; 627 int num_rx_sw_desc; 628 int num_reo_dst_ring_entries; 629 int num_rxdma_buf_ring_entries; 630 int num_rxdma_refill_ring_entries; 631 int num_reo_status_ring_entries; 632 int num_mon_status_ring_entries; 633 int num_tx_mon_buf_ring_entries; 634 int num_tx_mon_dst_ring_entries; 635 }; 636 637 /** 638 * wlan_cfg_soc_attach() - Attach configuration interface for SoC 639 * @psoc: PSOC object 640 * 641 * Allocates context for Soc configuration parameters, 642 * Read configuration information from device tree/ini file and 643 * returns back handle 644 * 645 * Return: Handle to configuration context 646 */ 647 struct wlan_cfg_dp_soc_ctxt * 648 wlan_cfg_soc_attach(struct cdp_ctrl_objmgr_psoc *psoc); 649 650 /** 651 * wlan_cfg_soc_detach() - Detach soc configuration handle 652 * @wlan_cfg_ctx: soc configuration handle 653 * 654 * De-allocates memory allocated for SoC configuration 655 * 656 * Return:none 657 */ 658 void wlan_cfg_soc_detach(struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx); 659 660 /** 661 * wlan_cfg_pdev_attach() - Attach configuration interface for pdev 662 * @ctrl_obj: PSOC object 663 * 664 * Allocates context for pdev configuration parameters, 665 * Read configuration information from device tree/ini file and 666 * returns back handle 667 * 668 * Return: Handle to configuration context 669 */ 670 struct wlan_cfg_dp_pdev_ctxt * 671 wlan_cfg_pdev_attach(struct cdp_ctrl_objmgr_psoc *ctrl_obj); 672 673 /** 674 * wlan_cfg_pdev_detach() - Detach and free pdev configuration handle 675 * @wlan_cfg_pdev_ctx: PDEV Configuration Handle 676 * 677 * Return: void 678 */ 679 void wlan_cfg_pdev_detach(struct wlan_cfg_dp_pdev_ctxt *wlan_cfg_pdev_ctx); 680 681 void wlan_cfg_set_num_contexts(struct wlan_cfg_dp_soc_ctxt *cfg, int num); 682 void wlan_cfg_set_tx_ring_mask(struct wlan_cfg_dp_soc_ctxt *cfg, 683 int context, int mask); 684 void wlan_cfg_set_rx_ring_mask(struct wlan_cfg_dp_soc_ctxt *cfg, 685 int context, int mask); 686 void wlan_cfg_set_rx_mon_ring_mask(struct wlan_cfg_dp_soc_ctxt *cfg, 687 int context, int mask); 688 void wlan_cfg_set_ce_ring_mask(struct wlan_cfg_dp_soc_ctxt *cfg, 689 int context, int mask); 690 void wlan_cfg_set_rxbuf_ring_mask(struct wlan_cfg_dp_soc_ctxt *cfg, int context, 691 int mask); 692 void wlan_cfg_set_max_peer_id(struct wlan_cfg_dp_soc_ctxt *cfg, uint32_t val); 693 void wlan_cfg_set_max_ast_idx(struct wlan_cfg_dp_soc_ctxt *cfg, uint32_t val); 694 int wlan_cfg_get_max_ast_idx(struct wlan_cfg_dp_soc_ctxt *cfg); 695 int wlan_cfg_get_mon_drop_thresh(struct wlan_cfg_dp_soc_ctxt *cfg); 696 int wlan_cfg_set_rx_err_ring_mask(struct wlan_cfg_dp_soc_ctxt *cfg, 697 int context, int mask); 698 int wlan_cfg_set_rx_wbm_rel_ring_mask(struct wlan_cfg_dp_soc_ctxt *cfg, 699 int context, int mask); 700 int wlan_cfg_set_reo_status_ring_mask(struct wlan_cfg_dp_soc_ctxt *cfg, 701 int context, int mask); 702 703 /** 704 * wlan_cfg_set_mon_delayed_replenish_entries() - number of buffers to replenish 705 * for monitor buffer ring at initialization 706 * @wlan_cfg_ctx: Configuration Handle 707 * @replenish_entries: number of entries to replenish at initialization 708 * 709 */ 710 void wlan_cfg_set_mon_delayed_replenish_entries(struct wlan_cfg_dp_soc_ctxt 711 *wlan_cfg_ctx, 712 uint32_t replenish_entries); 713 714 /** 715 * wlan_cfg_get_mon_delayed_replenish_entries() - get num of buffer to replenish 716 * for monitor buffer ring at initialization 717 * @wlan_cfg_ctx: Configuration Handle 718 * 719 * Return: delayed_replenish_entries; 720 */ 721 int wlan_cfg_get_mon_delayed_replenish_entries(struct wlan_cfg_dp_soc_ctxt 722 *wlan_cfg_ctx); 723 /** 724 * wlan_cfg_get_num_contexts() - Number of interrupt contexts to be registered 725 * @wlan_cfg_ctx: Configuration Handle 726 * 727 * For WIN, DP_NUM_INTERRUPT_CONTEXTS will be equal to number of CPU cores. 728 * Each context (for linux it is a NAPI context) will have a tx_ring_mask, 729 * rx_ring_mask ,and rx_monitor_ring mask to indicate the rings 730 * that are processed by the handler. 731 * 732 * Return: num_contexts 733 */ 734 int wlan_cfg_get_num_contexts(struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx); 735 736 /** 737 * wlan_cfg_get_tx_ring_mask() - Return Tx interrupt mask mapped to an 738 * interrupt context 739 * @wlan_cfg_ctx: Configuration Handle 740 * @context: Numerical ID identifying the Interrupt/NAPI context 741 * 742 * Return: int_tx_ring_mask[context] 743 */ 744 int wlan_cfg_get_tx_ring_mask(struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx, 745 int context); 746 747 /** 748 * wlan_cfg_get_tcl_wbm_ring_num_for_index() - Get TCL/WBM ring number for index 749 * @wlan_cfg_ctx: Configuration Handle 750 * @index: index for which TCL/WBM ring numbers are needed 751 * @tcl: pointer to TCL ring number, to be filled 752 * @wbm: pointer to WBM ring number to be filled 753 * 754 * The function fills in tcl/wbm input pointers with TCL/WBM ring numbers for a 755 * given index corresponding to soc->tcl_data_ring or soc->tx_comp_ring. This 756 * is needed since WBM/TCL rings may not be sequentially available for HOST 757 * to use. The function returns values as stored in tcl_wbm_map_array global 758 * array. 759 * 760 * Return: None 761 */ 762 static inline wlan_cfg_get_tcl_wbm_ring_num_for_index(struct wlan_cfg_dp_soc_ctxt * wlan_cfg_ctx,int index,int * tcl,int * wbm)763 void wlan_cfg_get_tcl_wbm_ring_num_for_index(struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx, 764 int index, int *tcl, int *wbm) 765 { 766 *tcl = wlan_cfg_ctx->tcl_wbm_map_array[index].tcl_ring_num; 767 *wbm = wlan_cfg_ctx->tcl_wbm_map_array[index].wbm_ring_num; 768 } 769 770 /** 771 * wlan_cfg_get_wbm_ring_num_for_index() - Get WBM ring number for index 772 * @wlan_cfg_ctx: Configuration Handle 773 * @index: index for which WBM ring numbers is needed 774 * 775 * Return: WBM Ring number for the index 776 */ 777 static inline wlan_cfg_get_wbm_ring_num_for_index(struct wlan_cfg_dp_soc_ctxt * wlan_cfg_ctx,int index)778 int wlan_cfg_get_wbm_ring_num_for_index(struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx, 779 int index) 780 { 781 return wlan_cfg_ctx->tcl_wbm_map_array[index].wbm_ring_num; 782 } 783 784 /** 785 * wlan_cfg_get_rbm_id_for_index() - Get WBM RBM ID for TX ring index 786 * @wlan_cfg_ctx: Configuration Handle 787 * @index: TCL index for which WBM rbm value is needed 788 * 789 * The function fills in wbm rbm value corresponding to a TX ring index in 790 * soc->tcl_data_ring. This is needed since WBM ring numbers donot map 791 * sequentially to wbm rbm values. 792 * The function returns rbm id values as stored in tcl_wbm_map_array global 793 * array. 794 * 795 * Return: WBM rbm value corresnponding to TX ring index 796 */ 797 static inline wlan_cfg_get_rbm_id_for_index(struct wlan_cfg_dp_soc_ctxt * wlan_cfg_ctx,int index)798 int wlan_cfg_get_rbm_id_for_index(struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx, int index) 799 { 800 return wlan_cfg_ctx->tcl_wbm_map_array[index].wbm_rbm_id; 801 } 802 803 /** 804 * wlan_cfg_get_rx_ring_mask() - Return Rx interrupt mask mapped to an 805 * interrupt context 806 * @wlan_cfg_ctx: Configuration Handle 807 * @context: Numerical ID identifying the Interrupt/NAPI context 808 * 809 * Return: int_rx_ring_mask[context] 810 */ 811 int wlan_cfg_get_rx_ring_mask(struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx, 812 int context); 813 814 /** 815 * wlan_cfg_get_rx_mon_ring_mask() - Return Rx monitor ring interrupt mask 816 * mapped to an interrupt context 817 * @wlan_cfg_ctx: Configuration Handle 818 * @context: Numerical ID identifying the Interrupt/NAPI context 819 * 820 * Return: int_rx_mon_ring_mask[context] 821 */ 822 int wlan_cfg_get_rx_mon_ring_mask(struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx, 823 int context); 824 825 /** 826 * wlan_cfg_set_tx_mon_ring_mask() - Set Tx monitor ring interrupt mask 827 * mapped to an interrupt context 828 * @cfg: Configuration Handle 829 * @context: Numerical ID identifying the Interrupt/NAPI context 830 * @mask: Interrupt mask 831 * 832 * Return: None 833 */ 834 void wlan_cfg_set_tx_mon_ring_mask(struct wlan_cfg_dp_soc_ctxt *cfg, 835 int context, int mask); 836 837 /** 838 * wlan_cfg_get_tx_mon_ring_mask() - Return Tx monitor ring interrupt mask 839 * mapped to an interrupt context 840 * @wlan_cfg_ctx: Configuration Handle 841 * @context: Numerical ID identifying the Interrupt/NAPI context 842 * 843 * Return: int_tx_mon_ring_mask[context] 844 */ 845 int wlan_cfg_get_tx_mon_ring_mask(struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx, 846 int context); 847 848 /** 849 * wlan_cfg_set_rxdma2host_ring_mask() - Set rxdma2host ring interrupt mask 850 * for the given interrupt context 851 * @cfg: Configuration Handle 852 * @context: Numerical ID identifying the Interrupt/NAPI context 853 * @mask: Interrupt mask 854 * 855 */ 856 void wlan_cfg_set_rxdma2host_ring_mask(struct wlan_cfg_dp_soc_ctxt *cfg, 857 int context, int mask); 858 859 /** 860 * wlan_cfg_get_rxdma2host_ring_mask() - Return rxdma2host ring interrupt mask 861 * mapped to an interrupt context 862 * @cfg: Configuration Handle 863 * @context: Numerical ID identifying the Interrupt/NAPI context 864 * 865 * Return: int_rxdma2host_ring_mask[context] 866 */ 867 int wlan_cfg_get_rxdma2host_ring_mask(struct wlan_cfg_dp_soc_ctxt *cfg, 868 int context); 869 870 /** 871 * wlan_cfg_set_host2rxdma_ring_mask() - Set host2rxdma ring interrupt mask 872 * for the given interrupt context 873 * @cfg: Configuration Handle 874 * @context: Numerical ID identifying the Interrupt/NAPI context 875 * @mask: Interrupt mask 876 * 877 */ 878 void wlan_cfg_set_host2rxdma_ring_mask(struct wlan_cfg_dp_soc_ctxt *cfg, 879 int context, int mask); 880 881 /** 882 * wlan_cfg_get_host2rxdma_ring_mask() - Return host2rxdma ring interrupt mask 883 * mapped to an interrupt context 884 * @cfg: Configuration Handle 885 * @context: Numerical ID identifying the Interrupt/NAPI context 886 * 887 * Return: int_host2rxdma_ring_mask[context] 888 */ 889 int wlan_cfg_get_host2rxdma_ring_mask(struct wlan_cfg_dp_soc_ctxt *cfg, 890 int context); 891 892 /** 893 * wlan_cfg_get_rx_near_full_grp_1_mask() - Return REO near full interrupt mask 894 * mapped to an interrupt context 895 * @cfg: Configuration Handle 896 * @context: Numerical ID identifying the Interrupt/NAPI context 897 * 898 * Return: REO near full interrupt mask[context] 899 */ 900 int wlan_cfg_get_rx_near_full_grp_1_mask(struct wlan_cfg_dp_soc_ctxt *cfg, 901 int context); 902 903 /** 904 * wlan_cfg_get_rx_near_full_grp_2_mask() - Return REO near full interrupt mask 905 * mapped to an interrupt context 906 * @cfg: Configuration Handle 907 * @context: Numerical ID identifying the Interrupt/NAPI context 908 * 909 * Return: REO near full interrupt mask[context] 910 */ 911 int wlan_cfg_get_rx_near_full_grp_2_mask(struct wlan_cfg_dp_soc_ctxt *cfg, 912 int context); 913 914 /** 915 * wlan_cfg_get_tx_ring_near_full_mask() - Return tx completion ring near full 916 * interrupt mask mapped to an interrupt context 917 * @cfg: Configuration Handle 918 * @context: Numerical ID identifying the Interrupt/NAPI context 919 * 920 * Return: tx completion near full interrupt mask[context] 921 */ 922 int wlan_cfg_get_tx_ring_near_full_mask(struct wlan_cfg_dp_soc_ctxt *cfg, 923 int context); 924 /** 925 * wlan_cfg_set_host2rxdma_mon_ring_mask() - Set host2rxdma monitor ring 926 * interrupt mask for the given interrupt context 927 * @cfg: Configuration Handle 928 * @context: Numerical ID identifying the Interrupt/NAPI context 929 * @mask: Interrupt mask 930 * 931 */ 932 void wlan_cfg_set_host2rxdma_mon_ring_mask(struct wlan_cfg_dp_soc_ctxt *cfg, 933 int context, int mask); 934 935 /** 936 * wlan_cfg_get_host2rxdma_mon_ring_mask() - Return host2rxdma monitoe ring 937 * interrupt mask mapped to an interrupt context 938 * @cfg: Configuration Handle 939 * @context: Numerical ID identifying the Interrupt/NAPI context 940 * 941 * Return: int_host2rxdma_mon_ring_mask[context] 942 */ 943 int wlan_cfg_get_host2rxdma_mon_ring_mask(struct wlan_cfg_dp_soc_ctxt *cfg, 944 int context); 945 946 /** 947 * wlan_cfg_set_rxdma2host_mon_ring_mask() - Set rxdma2host monitor 948 * destination ring interrupt mask 949 * for the given interrupt context 950 * @cfg: Configuration Handle 951 * @context: Numerical ID identifying the Interrupt/NAPI context 952 * @mask: Interrupt mask 953 * 954 */ 955 void wlan_cfg_set_rxdma2host_mon_ring_mask(struct wlan_cfg_dp_soc_ctxt *cfg, 956 int context, int mask); 957 958 /** 959 * wlan_cfg_get_rxdma2host_mon_ring_mask() - Return rxdma2host monitor 960 * destination ring interrupt mask 961 * mapped to an interrupt context 962 * @cfg: Configuration Handle 963 * @context: Numerical ID identifying the Interrupt/NAPI context 964 * 965 * Return: int_rxdma2host_mon_ring_mask[context] 966 */ 967 int wlan_cfg_get_rxdma2host_mon_ring_mask(struct wlan_cfg_dp_soc_ctxt *cfg, 968 int context); 969 970 /** 971 * wlan_cfg_set_hw_mac_idx() - Set HW MAC Idx for the given PDEV index 972 * 973 * @cfg: Configuration Handle 974 * @pdev_idx: Index of SW PDEV 975 * @hw_macid: HW MAC Id 976 * 977 */ 978 void wlan_cfg_set_hw_mac_idx(struct wlan_cfg_dp_soc_ctxt *cfg, 979 int pdev_idx, int hw_macid); 980 981 /** 982 * wlan_cfg_get_hw_mac_idx() - Get 0 based HW MAC index for the given 983 * PDEV index 984 * 985 * @cfg: Configuration Handle 986 * @pdev_idx: Index of SW PDEV 987 * 988 * Return: HW MAC index 989 */ 990 int wlan_cfg_get_hw_mac_idx(struct wlan_cfg_dp_soc_ctxt *cfg, int pdev_idx); 991 992 /** 993 * wlan_cfg_get_target_pdev_id() - Get target PDEV ID for HW MAC ID 994 * 995 * @cfg: Configuration Handle 996 * @hw_macid: Index of hw mac 997 * 998 * Return: PDEV ID 999 */ 1000 int 1001 wlan_cfg_get_target_pdev_id(struct wlan_cfg_dp_soc_ctxt *cfg, int hw_macid); 1002 1003 /** 1004 * wlan_cfg_set_pdev_idx() - Set 0 based host PDEV index for the given 1005 * hw mac index 1006 * 1007 * @cfg: Configuration Handle 1008 * @pdev_idx: Index of SW PDEV 1009 * @hw_macid: Index of hw mac 1010 * 1011 * Return: PDEV index 1012 */ 1013 void wlan_cfg_set_pdev_idx 1014 (struct wlan_cfg_dp_soc_ctxt *cfg, int pdev_idx, int hw_macid); 1015 1016 /** 1017 * wlan_cfg_get_pdev_idx() - Get 0 based PDEV index for the given 1018 * hw mac index 1019 * 1020 * @cfg: Configuration Handle 1021 * @hw_macid: Index of hw mac 1022 * 1023 * Return: PDEV index 1024 */ 1025 int wlan_cfg_get_pdev_idx(struct wlan_cfg_dp_soc_ctxt *cfg, int hw_macid); 1026 1027 /** 1028 * wlan_cfg_get_rx_err_ring_mask() - Return Rx monitor ring interrupt mask 1029 * mapped to an interrupt context 1030 * @cfg: Configuration Handle 1031 * @context: Numerical ID identifying the Interrupt/NAPI context 1032 * 1033 * Return: int_rx_err_ring_mask[context] 1034 */ 1035 int wlan_cfg_get_rx_err_ring_mask(struct wlan_cfg_dp_soc_ctxt *cfg, int 1036 context); 1037 1038 /** 1039 * wlan_cfg_get_rx_wbm_rel_ring_mask() - Return Rx monitor ring interrupt mask 1040 * mapped to an interrupt context 1041 * @cfg: Configuration Handle 1042 * @context: Numerical ID identifying the Interrupt/NAPI context 1043 * 1044 * Return: int_wbm_rel_ring_mask[context] 1045 */ 1046 int wlan_cfg_get_rx_wbm_rel_ring_mask(struct wlan_cfg_dp_soc_ctxt *cfg, int 1047 context); 1048 1049 /** 1050 * wlan_cfg_get_reo_status_ring_mask() - Return Rx monitor ring interrupt mask 1051 * mapped to an interrupt context 1052 * @cfg: Configuration Handle 1053 * @context: Numerical ID identifying the Interrupt/NAPI context 1054 * 1055 * Return: int_reo_status_ring_mask[context] 1056 */ 1057 int wlan_cfg_get_reo_status_ring_mask(struct wlan_cfg_dp_soc_ctxt *cfg, int 1058 context); 1059 1060 /** 1061 * wlan_cfg_get_ce_ring_mask() - Return CE ring interrupt mask 1062 * mapped to an interrupt context 1063 * @wlan_cfg_ctx: Configuration Handle 1064 * @context: Numerical ID identifying the Interrupt/NAPI context 1065 * 1066 * Return: int_ce_ring_mask[context] 1067 */ 1068 int wlan_cfg_get_ce_ring_mask(struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx, 1069 int context); 1070 1071 /** 1072 * wlan_cfg_get_umac_reset_intr_mask() - Get UMAC reset interrupt mask 1073 * mapped to an interrupt context 1074 * @cfg: Configuration Handle 1075 * @context: Numerical ID identifying the Interrupt/NAPI context 1076 * 1077 * Return: int_umac_reset_intr_mask[context] 1078 */ 1079 int wlan_cfg_get_umac_reset_intr_mask(struct wlan_cfg_dp_soc_ctxt *cfg, 1080 int context); 1081 /** 1082 * wlan_cfg_get_max_clients() - Return maximum number of peers/stations 1083 * supported by device 1084 * @wlan_cfg_ctx: Configuration Handle 1085 * 1086 * Return: max_clients 1087 */ 1088 uint32_t wlan_cfg_get_max_clients(struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx); 1089 1090 /** 1091 * wlan_cfg_max_alloc_size() - Return Maximum allocation size for any dynamic 1092 * memory allocation request for this device 1093 * @wlan_cfg_ctx: Configuration Handle 1094 * 1095 * Return: max_alloc_size 1096 */ 1097 uint32_t wlan_cfg_max_alloc_size(struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx); 1098 1099 /** 1100 * wlan_cfg_per_pdev_tx_ring() - Return true if Tx rings are mapped as 1101 * one per radio 1102 * @wlan_cfg_ctx: Configuration Handle 1103 * 1104 * Return: per_pdev_tx_ring 1105 */ 1106 int wlan_cfg_per_pdev_tx_ring(struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx); 1107 1108 /** 1109 * wlan_cfg_num_tx_comp_rings() - Number of Tx comp rings (HOST mode) 1110 * @wlan_cfg_ctx: Configuration Handle 1111 * 1112 * Return: num_tx_comp_rings 1113 */ 1114 int wlan_cfg_num_tx_comp_rings(struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx); 1115 1116 /** 1117 * wlan_cfg_num_tcl_data_rings() - Number of TCL Data rings (HOST mode) 1118 * @wlan_cfg_ctx: Configuration Handle 1119 * 1120 * Return: num_tcl_data_rings 1121 */ 1122 int wlan_cfg_num_tcl_data_rings(struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx); 1123 1124 /** 1125 * wlan_cfg_num_nss_tcl_data_rings() - Number of TCL Data rings (NSS offload) 1126 * @wlan_cfg_ctx: Configuration Handle 1127 * 1128 * Return: num_tcl_data_rings 1129 */ 1130 int wlan_cfg_num_nss_tcl_data_rings(struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx); 1131 1132 /** 1133 * wlan_cfg_per_pdev_rx_ring() - Return true if Rx rings are mapped as 1134 * one per radio 1135 * @wlan_cfg_ctx: Configuration Handle 1136 * 1137 * Return: per_pdev_rx_ring 1138 */ 1139 int wlan_cfg_per_pdev_rx_ring(struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx); 1140 1141 /** 1142 * wlan_cfg_per_pdev_lmac_ring() - Return true if error rings are mapped as 1143 * one per radio 1144 * @wlan_cfg_ctx: Configuration Handle 1145 * 1146 * Return: return 1 if per pdev error ring else 0 1147 */ 1148 int wlan_cfg_per_pdev_lmac_ring(struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx); 1149 1150 /** 1151 * wlan_cfg_num_reo_dest_rings() - Number of REO Data rings (HOST mode) 1152 * @wlan_cfg_ctx: Configuration Handle 1153 * 1154 * Return: num_reo_dest_rings 1155 */ 1156 int wlan_cfg_num_reo_dest_rings(struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx); 1157 1158 /** 1159 * wlan_cfg_num_nss_reo_dest_rings() - Number of REO Data rings (NSS offload) 1160 * @wlan_cfg_ctx: Configuration Handle 1161 * 1162 * Return: num_reo_dest_rings 1163 */ 1164 int wlan_cfg_num_nss_reo_dest_rings(struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx); 1165 1166 /** 1167 * wlan_cfg_pkt_type() - Default 802.11 encapsulation type 1168 * @wlan_cfg_ctx: Configuration Handle 1169 * 1170 * Return: htt_pkt_type_ethernet 1171 */ 1172 int wlan_cfg_pkt_type(struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx); 1173 1174 /** 1175 * wlan_cfg_get_num_tx_desc_pool() - Number of Tx Descriptor pools for the 1176 * device 1177 * @wlan_cfg_ctx: Configuration Handle 1178 * 1179 * Return: num_tx_desc_pool 1180 */ 1181 int wlan_cfg_get_num_tx_desc_pool(struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx); 1182 1183 /** 1184 * wlan_cfg_set_num_tx_desc_pool() - Set the number of Tx Descriptor pools for the 1185 * device 1186 * @cfg: Configuration Handle 1187 * @num_pool: Number of pool 1188 */ 1189 void wlan_cfg_set_num_tx_desc_pool(struct wlan_cfg_dp_soc_ctxt *cfg, int num_pool); 1190 1191 /** 1192 * wlan_cfg_get_num_tx_ext_desc_pool() - Number of Tx MSDU ext Descriptor 1193 * pools 1194 * @wlan_cfg_ctx: Configuration Handle 1195 * 1196 * Return: num_tx_ext_desc_pool 1197 */ 1198 int wlan_cfg_get_num_tx_ext_desc_pool( 1199 struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx); 1200 1201 /** 1202 * wlan_cfg_get_reo_dst_ring_size() - Get REO destination ring size 1203 * 1204 * @cfg: Configuration Handle 1205 * 1206 * Return: reo_dst_ring_size 1207 */ 1208 int wlan_cfg_get_reo_dst_ring_size(struct wlan_cfg_dp_soc_ctxt *cfg); 1209 1210 /** 1211 * wlan_cfg_set_reo_dst_ring_size() - Set the REO Destination ring size 1212 * 1213 * @cfg: Configuration Handle 1214 * @reo_dst_ring_size: REO Destination ring size 1215 */ 1216 void wlan_cfg_set_reo_dst_ring_size(struct wlan_cfg_dp_soc_ctxt *cfg, 1217 int reo_dst_ring_size); 1218 1219 /** 1220 * wlan_cfg_set_raw_mode_war() - Set raw mode war configuration 1221 * 1222 * @cfg: Configuration Handle 1223 * @raw_mode_war: raw mode war configuration 1224 */ 1225 void wlan_cfg_set_raw_mode_war(struct wlan_cfg_dp_soc_ctxt *cfg, 1226 bool raw_mode_war); 1227 1228 /** 1229 * wlan_cfg_get_raw_mode_war() - Get raw mode war configuration 1230 * 1231 * @cfg: Configuration Handle 1232 * 1233 * Return: reo_dst_ring_size 1234 */ 1235 bool wlan_cfg_get_raw_mode_war(struct wlan_cfg_dp_soc_ctxt *cfg); 1236 1237 /** 1238 * wlan_cfg_set_num_tx_ext_desc_pool() - Set the number of Tx MSDU ext Descriptor 1239 * pools 1240 * @cfg: Configuration Handle 1241 * @num_pool: Number of pool 1242 */ 1243 void wlan_cfg_set_num_tx_ext_desc_pool(struct wlan_cfg_dp_soc_ctxt *cfg, int num_pool); 1244 1245 /** 1246 * wlan_cfg_get_num_global_tx_desc() - Number of global Tx Descriptors allowed 1247 * @wlan_cfg_ctx: Configuration Handle 1248 * 1249 * Return: num_global_tx_desc 1250 */ 1251 int wlan_cfg_get_num_global_tx_desc(struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx); 1252 1253 /** 1254 * wlan_cfg_get_num_global_spcl_tx_desc() - Number of global special Tx Descriptors 1255 * allowed 1256 * @wlan_cfg_ctx: Configuration Handle 1257 * 1258 * Return: num_global_spcl_tx_desc 1259 */ 1260 int wlan_cfg_get_num_global_spcl_tx_desc(struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx); 1261 1262 /** 1263 * wlan_cfg_get_num_tx_desc() - Number of Tx Descriptors per pool 1264 * @wlan_cfg_ctx: Configuration Handle 1265 * 1266 * Return: num_tx_desc 1267 */ 1268 int wlan_cfg_get_num_tx_desc(struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx); 1269 1270 /** 1271 * wlan_cfg_set_num_tx_spl_desc() - Set the number of special Tx Descriptors 1272 * per pool 1273 * 1274 * @cfg: Configuration Handle 1275 * @num_desc: Number of descriptor 1276 */ 1277 void wlan_cfg_set_num_tx_spl_desc(struct wlan_cfg_dp_soc_ctxt *cfg, 1278 int num_desc); 1279 1280 /** 1281 * wlan_cfg_get_num_tx_spl_desc() - Number of Tx Descriptors for special 1282 * frames per pool 1283 * @wlan_cfg_ctx: Configuration Handle 1284 * 1285 * Return: num_tx_desc 1286 */ 1287 int wlan_cfg_get_num_tx_spl_desc(struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx); 1288 1289 /** 1290 * wlan_cfg_get_min_tx_desc() - Minimum number of Tx Descriptors per pool 1291 * @wlan_cfg_ctx: Configuration Handle 1292 * 1293 * Return: num_tx_desc 1294 */ 1295 int wlan_cfg_get_min_tx_desc(struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx); 1296 1297 /** 1298 * wlan_cfg_set_num_tx_desc() - Set the number of Tx Descriptors per pool 1299 * 1300 * @cfg: Configuration Handle 1301 * @num_desc: Number of descriptor 1302 */ 1303 void wlan_cfg_set_num_tx_desc(struct wlan_cfg_dp_soc_ctxt *cfg, int num_desc); 1304 1305 /** 1306 * wlan_cfg_get_num_tx_ext_desc() - Number of Tx MSDU extension Descriptors 1307 * per pool 1308 * @wlan_cfg_ctx: Configuration Handle 1309 * 1310 * Return: num_tx_ext_desc 1311 */ 1312 int wlan_cfg_get_num_tx_ext_desc(struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx); 1313 1314 /** 1315 * wlan_cfg_set_num_tx_ext_desc() - Set the number of Tx MSDU extension 1316 * Descriptors per pool 1317 * @cfg: Configuration Handle 1318 * @num_ext_desc: Number of descriptor 1319 */ 1320 void wlan_cfg_set_num_tx_ext_desc(struct wlan_cfg_dp_soc_ctxt *cfg, 1321 int num_ext_desc); 1322 1323 /** 1324 * wlan_cfg_max_peer_id() - Get maximum peer ID 1325 * @cfg: Configuration Handle 1326 * 1327 * Return: maximum peer ID 1328 */ 1329 uint32_t wlan_cfg_max_peer_id(struct wlan_cfg_dp_soc_ctxt *cfg); 1330 1331 /** 1332 * wlan_cfg_get_dma_mon_buf_ring_size(): Return Size of monitor buffer ring 1333 * @wlan_cfg_pdev_ctx: pdev configuration context 1334 * 1335 * Return: dma_mon_buf_ring_size 1336 */ 1337 int wlan_cfg_get_dma_mon_buf_ring_size( 1338 struct wlan_cfg_dp_pdev_ctxt *wlan_cfg_pdev_ctx); 1339 1340 /** 1341 * wlan_cfg_get_dma_mon_stat_ring_size() - Return size of Monitor Status ring 1342 * @wlan_cfg_pdev_ctx: pdev configuration context 1343 * 1344 * Return: dma_mon_stat_ring_size 1345 */ 1346 int wlan_cfg_get_dma_mon_stat_ring_size( 1347 struct wlan_cfg_dp_pdev_ctxt *wlan_cfg_pdev_ctx); 1348 1349 /** 1350 * wlan_cfg_get_dma_mon_desc_ring_size - Get rxdma monitor size 1351 * @cfg: soc configuration context 1352 * 1353 * Return: rxdma monitor desc ring size 1354 */ 1355 int 1356 wlan_cfg_get_dma_mon_desc_ring_size(struct wlan_cfg_dp_pdev_ctxt *cfg); 1357 1358 /** 1359 * wlan_cfg_get_rx_dma_buf_ring_size() - Return Size of RxDMA buffer ring 1360 * @wlan_cfg_pdev_ctx: pdev configuration context 1361 * 1362 * Return: rx_dma_buf_ring_size 1363 */ 1364 int wlan_cfg_get_rx_dma_buf_ring_size( 1365 struct wlan_cfg_dp_pdev_ctxt *wlan_cfg_pdev_ctx); 1366 1367 /** 1368 * wlan_cfg_set_rx_dma_buf_ring_size() - Set RxDMA buffer ring size 1369 * @cfg: pdev configuration context 1370 * @ring_size: rxdma buffer ring size to be set 1371 * 1372 * Return: None 1373 */ 1374 void 1375 wlan_cfg_set_rx_dma_buf_ring_size(struct wlan_cfg_dp_pdev_ctxt *cfg, 1376 int ring_size); 1377 1378 /** 1379 * wlan_cfg_rx_pending_hl_threshold() - Return high threshold of rx pending 1380 * @cfg: pdev configuration context 1381 * 1382 * Return: rx_pending_high_threshold 1383 */ 1384 uint32_t 1385 wlan_cfg_rx_pending_hl_threshold(struct wlan_cfg_dp_soc_ctxt *cfg); 1386 1387 /** 1388 * wlan_cfg_rx_pending_lo_threshold() - Return low threshold of rx pending 1389 * @cfg: soc configuration context 1390 * 1391 * Return: rx_pending_low_threshold 1392 */ 1393 uint32_t 1394 wlan_cfg_rx_pending_lo_threshold(struct wlan_cfg_dp_soc_ctxt *cfg); 1395 1396 /** 1397 * wlan_cfg_get_num_mac_rings() - Return the number of MAC RX DMA rings 1398 * per pdev 1399 * @cfg: pdev configuration context 1400 * 1401 * Return: number of mac DMA rings per pdev 1402 */ 1403 int wlan_cfg_get_num_mac_rings(struct wlan_cfg_dp_pdev_ctxt *cfg); 1404 1405 /** 1406 * wlan_cfg_is_lro_enabled - Return LRO enabled/disabled 1407 * @cfg: soc configuration context 1408 * 1409 * Return: true - LRO enabled false - LRO disabled 1410 */ 1411 bool wlan_cfg_is_lro_enabled(struct wlan_cfg_dp_soc_ctxt *cfg); 1412 1413 /** 1414 * wlan_cfg_is_gro_enabled - Return GRO enabled/disabled 1415 * @cfg: soc configuration context 1416 * 1417 * Return: true - GRO enabled false - GRO disabled 1418 */ 1419 bool wlan_cfg_is_gro_enabled(struct wlan_cfg_dp_soc_ctxt *cfg); 1420 1421 /** 1422 * wlan_cfg_is_rx_hash_enabled - Return RX hash enabled/disabled 1423 * @cfg: soc configuration context 1424 * 1425 * Return: true - enabled false - disabled 1426 */ 1427 bool wlan_cfg_is_rx_hash_enabled(struct wlan_cfg_dp_soc_ctxt *cfg); 1428 1429 /** 1430 * wlan_cfg_is_ipa_enabled - Return IPA enabled/disabled 1431 * @cfg: soc configuration context 1432 * 1433 * Return: true - enabled false - disabled 1434 */ 1435 bool wlan_cfg_is_ipa_enabled(struct wlan_cfg_dp_soc_ctxt *cfg); 1436 1437 /** 1438 * wlan_cfg_set_rx_hash - set rx hash enabled/disabled 1439 * @cfg: soc configuration context 1440 * @rx_hash: true - enabled false - disabled 1441 */ 1442 void wlan_cfg_set_rx_hash(struct wlan_cfg_dp_soc_ctxt *cfg, bool rx_hash); 1443 1444 /** 1445 * wlan_cfg_is_rx_rr_enabled - Return RX round robin enabled/disabled 1446 * @cfg: soc configuration context 1447 * 1448 * Return: true - enabled false - disabled 1449 */ 1450 bool wlan_cfg_is_rx_rr_enabled(struct wlan_cfg_dp_soc_ctxt *cfg); 1451 1452 /** 1453 * wlan_cfg_set_rx_rr - set rx round robin enabled/disabled 1454 * @cfg: soc configuration context 1455 * @rx_rr: true - enabled false - disabled 1456 */ 1457 void wlan_cfg_set_rx_rr(struct wlan_cfg_dp_soc_ctxt *cfg, bool rx_rr); 1458 1459 /** 1460 * wlan_cfg_get_dp_pdev_nss_enabled - Return pdev nss enabled/disabled 1461 * @cfg: pdev configuration context 1462 * 1463 * Return: 1 - enabled 0 - disabled 1464 */ 1465 int wlan_cfg_get_dp_pdev_nss_enabled(struct wlan_cfg_dp_pdev_ctxt *cfg); 1466 1467 /** 1468 * wlan_cfg_set_dp_pdev_nss_enabled - set pdev nss enabled/disabled 1469 * @cfg: pdev configuration context 1470 * @nss_enabled: 1 - enabled 0 - disabled 1471 */ 1472 void wlan_cfg_set_dp_pdev_nss_enabled(struct wlan_cfg_dp_pdev_ctxt *cfg, 1473 int nss_enabled); 1474 1475 /** 1476 * wlan_cfg_get_dp_soc_nss_cfg - Return soc nss config 1477 * @cfg: soc configuration context 1478 * 1479 * Return: nss_cfg 1480 */ 1481 int wlan_cfg_get_dp_soc_nss_cfg(struct wlan_cfg_dp_soc_ctxt *cfg); 1482 1483 /** 1484 * wlan_cfg_set_dp_soc_nss_cfg - set soc nss config 1485 * @cfg: soc configuration context 1486 * @nss_cfg: NSS configuration 1487 * 1488 */ 1489 void wlan_cfg_set_dp_soc_nss_cfg(struct wlan_cfg_dp_soc_ctxt *cfg, int nss_cfg); 1490 1491 /** 1492 * wlan_cfg_get_int_timer_threshold_ppe2tcl - Get intr mitigation for ppe2tcl 1493 * @cfg: soc configuration context 1494 * 1495 * Return: Timer threshold 1496 */ 1497 int wlan_cfg_get_int_timer_threshold_ppe2tcl(struct wlan_cfg_dp_soc_ctxt *cfg); 1498 1499 /** 1500 * wlan_cfg_get_int_batch_threshold_ppe2tcl - Get intr mitigation for ppe2tcl 1501 * @cfg: soc configuration context 1502 * 1503 * Return: Batch threshold 1504 */ 1505 int wlan_cfg_get_int_batch_threshold_ppe2tcl(struct wlan_cfg_dp_soc_ctxt *cfg); 1506 1507 /** 1508 * wlan_cfg_get_int_batch_threshold_tx - Get interrupt mitigation cfg for Tx 1509 * @cfg: soc configuration context 1510 * 1511 * Return: Batch threshold 1512 */ 1513 int wlan_cfg_get_int_batch_threshold_tx(struct wlan_cfg_dp_soc_ctxt *cfg); 1514 1515 /** 1516 * wlan_cfg_get_int_timer_threshold_tx - Get interrupt mitigation cfg for Tx 1517 * @cfg: soc configuration context 1518 * 1519 * Return: Timer threshold 1520 */ 1521 int wlan_cfg_get_int_timer_threshold_tx(struct wlan_cfg_dp_soc_ctxt *cfg); 1522 1523 /** 1524 * wlan_cfg_get_int_batch_threshold_rx - Get interrupt mitigation cfg for Rx 1525 * @cfg: soc configuration context 1526 * 1527 * Return: Batch threshold 1528 */ 1529 int wlan_cfg_get_int_batch_threshold_rx(struct wlan_cfg_dp_soc_ctxt *cfg); 1530 1531 /** 1532 * wlan_cfg_get_int_timer_threshold_rx - Get interrupt mitigation cfg for Rx 1533 * @cfg: soc configuration context 1534 * 1535 * Return: Timer threshold 1536 */ 1537 int wlan_cfg_get_int_timer_threshold_rx(struct wlan_cfg_dp_soc_ctxt *cfg); 1538 1539 /** 1540 * wlan_cfg_get_int_batch_threshold_other - Get interrupt mitigation cfg for 1541 * other srngs 1542 * @cfg: soc configuration context 1543 * 1544 * Return: Batch threshold 1545 */ 1546 int wlan_cfg_get_int_batch_threshold_other(struct wlan_cfg_dp_soc_ctxt *cfg); 1547 1548 /** 1549 * wlan_cfg_get_int_timer_threshold_other - Get interrupt mitigation cfg for 1550 * other srngs 1551 * @cfg: soc configuration context 1552 * 1553 * Return: Timer threshold 1554 */ 1555 int wlan_cfg_get_int_timer_threshold_other(struct wlan_cfg_dp_soc_ctxt *cfg); 1556 1557 /** 1558 * wlan_cfg_get_int_batch_threshold_mon_dest - Get interrupt mitigation cfg for 1559 * monitor destination srng 1560 * @cfg: soc configuration context 1561 * 1562 * Return: Batch threshold 1563 */ 1564 int wlan_cfg_get_int_batch_threshold_mon_dest(struct wlan_cfg_dp_soc_ctxt *cfg); 1565 1566 /** 1567 * wlan_cfg_get_int_timer_threshold_mon_dest - Get interrupt mitigation cfg for 1568 * monitor destination srngs 1569 * @cfg: soc configuration context 1570 * 1571 * Return: Timer threshold 1572 */ 1573 int wlan_cfg_get_int_timer_threshold_mon_dest(struct wlan_cfg_dp_soc_ctxt *cfg); 1574 1575 /** 1576 * wlan_cfg_get_checksum_offload - Get checksum offload enable or disable status 1577 * @cfg: soc configuration context 1578 * 1579 * Return: Checksum offload enable or disable 1580 */ 1581 int wlan_cfg_get_checksum_offload(struct wlan_cfg_dp_soc_ctxt *cfg); 1582 1583 /** 1584 * wlan_cfg_get_nan_checksum_offload - Get checksum offload enable/disable val 1585 * @cfg: soc configuration context 1586 * 1587 * Return: Checksum offload enable or disable value for NAN mode 1588 */ 1589 int wlan_cfg_get_nan_checksum_offload(struct wlan_cfg_dp_soc_ctxt *cfg); 1590 1591 /** 1592 * wlan_cfg_get_p2p_checksum_offload - Get checksum offload enable/disable val 1593 * @cfg: soc configuration context 1594 * 1595 * Return: Checksum offload enable or disable value for P2P mode 1596 */ 1597 int wlan_cfg_get_p2p_checksum_offload(struct wlan_cfg_dp_soc_ctxt *cfg); 1598 1599 /** 1600 * wlan_cfg_tx_ring_size - Get Tx DMA ring size (TCL Data Ring) 1601 * @cfg: soc configuration context 1602 * 1603 * Return: Tx Ring Size 1604 */ 1605 int wlan_cfg_tx_ring_size(struct wlan_cfg_dp_soc_ctxt *cfg); 1606 1607 /** 1608 * wlan_cfg_set_tx_ring_size - Set Tx ring size 1609 * @cfg: soc configuration context 1610 * @ring_size: TX ring size to be set 1611 * 1612 * Return: None 1613 */ 1614 void wlan_cfg_set_tx_ring_size(struct wlan_cfg_dp_soc_ctxt *cfg, 1615 int ring_size); 1616 1617 /** 1618 * wlan_cfg_time_control_bp - Get time for interval in bp prints 1619 * @cfg: soc configuration context 1620 * 1621 * Return: interval time 1622 */ 1623 int wlan_cfg_time_control_bp(struct wlan_cfg_dp_soc_ctxt *cfg); 1624 1625 /** 1626 * wlan_cfg_rx_buffer_size - Get buffer size for skb 1627 * @cfg: soc configuration context 1628 * 1629 * Return: buffer size 1630 */ 1631 int wlan_cfg_rx_buffer_size(struct wlan_cfg_dp_soc_ctxt *cfg); 1632 1633 /** 1634 * wlan_cfg_qref_control_size - Get debug array size 1635 * @cfg: soc configuration context 1636 * 1637 * Return: array size 1638 */ 1639 int wlan_cfg_qref_control_size(struct wlan_cfg_dp_soc_ctxt *cfg); 1640 1641 /** 1642 * wlan_cfg_tx_comp_ring_size - Get Tx completion ring size (WBM Ring) 1643 * @cfg: soc configuration context 1644 * 1645 * Return: Tx Completion ring size 1646 */ 1647 int wlan_cfg_tx_comp_ring_size(struct wlan_cfg_dp_soc_ctxt *cfg); 1648 1649 /** 1650 * wlan_cfg_set_tx_comp_ring_size - Set Tx completion ring size 1651 * @cfg: soc configuration context 1652 * @ring_size: TX completion ring size to be set 1653 * 1654 * Return: None 1655 */ 1656 void wlan_cfg_set_tx_comp_ring_size(struct wlan_cfg_dp_soc_ctxt *cfg, 1657 int ring_size); 1658 1659 /** 1660 * wlan_cfg_get_dp_soc_wbm_release_ring_size - Get wbm_release_ring size 1661 * @cfg: soc configuration context 1662 * 1663 * Return: wbm_release_ring size 1664 */ 1665 int 1666 wlan_cfg_get_dp_soc_wbm_release_ring_size(struct wlan_cfg_dp_soc_ctxt *cfg); 1667 1668 /** 1669 * wlan_cfg_get_dp_soc_tcl_cmd_credit_ring_size - Get command/credit ring size 1670 * @cfg: soc configuration context 1671 * 1672 * Return: tcl_cmd_credit_ring size 1673 */ 1674 int 1675 wlan_cfg_get_dp_soc_tcl_cmd_credit_ring_size(struct wlan_cfg_dp_soc_ctxt *cfg); 1676 1677 /** 1678 * wlan_cfg_get_dp_soc_tcl_status_ring_size - Get tcl_status_ring size 1679 * @cfg: soc configuration context 1680 * 1681 * Return: tcl_status_ring size 1682 */ 1683 int 1684 wlan_cfg_get_dp_soc_tcl_status_ring_size(struct wlan_cfg_dp_soc_ctxt *cfg); 1685 1686 /** 1687 * wlan_cfg_get_dp_soc_reo_reinject_ring_size - Get reo_reinject_ring size 1688 * @cfg: soc configuration context 1689 * 1690 * Return: reo_reinject_ring size 1691 */ 1692 int 1693 wlan_cfg_get_dp_soc_reo_reinject_ring_size(struct wlan_cfg_dp_soc_ctxt *cfg); 1694 1695 /** 1696 * wlan_cfg_get_dp_soc_rx_release_ring_size - Get rx_release_ring size 1697 * @cfg: soc configuration context 1698 * 1699 * Return: rx_release_ring size 1700 */ 1701 int 1702 wlan_cfg_get_dp_soc_rx_release_ring_size(struct wlan_cfg_dp_soc_ctxt *cfg); 1703 1704 /** 1705 * wlan_cfg_get_dp_soc_reo_exception_ring_size - Get reo_exception_ring size 1706 * @cfg: soc configuration context 1707 * 1708 * Return: reo_exception_ring size 1709 */ 1710 int 1711 wlan_cfg_get_dp_soc_reo_exception_ring_size(struct wlan_cfg_dp_soc_ctxt *cfg); 1712 1713 /** 1714 * wlan_cfg_get_dp_soc_reo_cmd_ring_size - Get reo_cmd_ring size 1715 * @cfg: soc configuration context 1716 * 1717 * Return: reo_cmd_ring size 1718 */ 1719 int 1720 wlan_cfg_get_dp_soc_reo_cmd_ring_size(struct wlan_cfg_dp_soc_ctxt *cfg); 1721 1722 /** 1723 * wlan_cfg_get_dp_soc_reo_status_ring_size - Get reo_status_ring size 1724 * @cfg: soc configuration context 1725 * 1726 * Return: reo_status_ring size 1727 */ 1728 int 1729 wlan_cfg_get_dp_soc_reo_status_ring_size(struct wlan_cfg_dp_soc_ctxt *cfg); 1730 1731 /** 1732 * wlan_cfg_get_dp_soc_tx_desc_limit_0 - Get tx desc limit for 5G H 1733 * @cfg: soc configuration context 1734 * 1735 * Return: tx desc limit for 5G H 1736 */ 1737 int 1738 wlan_cfg_get_dp_soc_tx_desc_limit_0(struct wlan_cfg_dp_soc_ctxt *cfg); 1739 1740 /** 1741 * wlan_cfg_get_dp_soc_tx_desc_limit_1 - Get tx desc limit for 2G 1742 * @cfg: soc configuration context 1743 * 1744 * Return: tx desc limit for 2G 1745 */ 1746 int 1747 wlan_cfg_get_dp_soc_tx_desc_limit_1(struct wlan_cfg_dp_soc_ctxt *cfg); 1748 1749 /** 1750 * wlan_cfg_get_dp_soc_tx_desc_limit_2 - Get tx desc limit for 5G L 1751 * @cfg: soc configuration context 1752 * 1753 * Return: tx desc limit for 5G L 1754 */ 1755 int 1756 wlan_cfg_get_dp_soc_tx_desc_limit_2(struct wlan_cfg_dp_soc_ctxt *cfg); 1757 1758 /** 1759 * wlan_cfg_get_dp_soc_tx_device_limit - Get tx device limit 1760 * @cfg: soc configuration context 1761 * 1762 * Return: tx device limit 1763 */ 1764 int 1765 wlan_cfg_get_dp_soc_tx_device_limit(struct wlan_cfg_dp_soc_ctxt *cfg); 1766 1767 /** 1768 * wlan_cfg_get_dp_soc_tx_spl_device_limit - Get tx device limit for special 1769 * frames 1770 * @cfg: Configuration Handle 1771 * 1772 * Return: tx device limit for special frames 1773 */ 1774 int 1775 wlan_cfg_get_dp_soc_tx_spl_device_limit(struct wlan_cfg_dp_soc_ctxt *cfg); 1776 1777 /** 1778 * wlan_cfg_get_dp_soc_tx_sw_internode_queue - Get tx sw internode queue 1779 * @cfg: soc configuration context 1780 * 1781 * Return: tx sw internode queue 1782 */ 1783 int 1784 wlan_cfg_get_dp_soc_tx_sw_internode_queue(struct wlan_cfg_dp_soc_ctxt *cfg); 1785 1786 /** 1787 * wlan_cfg_get_dp_soc_rxdma_refill_ring_size - Get rxdma refill ring size 1788 * @cfg: soc configuration context 1789 * 1790 * Return: rxdma refill ring size 1791 */ 1792 int 1793 wlan_cfg_get_dp_soc_rxdma_refill_ring_size(struct wlan_cfg_dp_soc_ctxt *cfg); 1794 1795 /** 1796 * wlan_cfg_set_dp_soc_rxdma_refill_ring_size - Set rxdma refill ring size 1797 * @cfg: soc configuration context 1798 * @ring_size: rxdma refill ring size to be set 1799 * 1800 * Return: None 1801 */ 1802 void 1803 wlan_cfg_set_dp_soc_rxdma_refill_ring_size(struct wlan_cfg_dp_soc_ctxt *cfg, 1804 int ring_size); 1805 1806 /** 1807 * wlan_cfg_get_dp_soc_rxdma_refill_lt_disable - Get RxDMA refill LT status 1808 * @cfg: soc configuration context 1809 * 1810 * Return: true if Low threshold disable else false 1811 */ 1812 bool 1813 wlan_cfg_get_dp_soc_rxdma_refill_lt_disable(struct wlan_cfg_dp_soc_ctxt *cfg); 1814 1815 /** 1816 * wlan_cfg_get_dp_soc_rxdma_err_dst_ring_size - Get rxdma dst ring size 1817 * @cfg: soc configuration context 1818 * 1819 * Return: rxdma error dst ring size 1820 */ 1821 int 1822 wlan_cfg_get_dp_soc_rxdma_err_dst_ring_size(struct wlan_cfg_dp_soc_ctxt *cfg); 1823 1824 /** 1825 * wlan_cfg_get_dp_soc_rx_sw_desc_weight - Get rx sw desc weight 1826 * @cfg: soc configuration context 1827 * 1828 * Return: rx_sw_desc_weight 1829 */ 1830 int 1831 wlan_cfg_get_dp_soc_rx_sw_desc_weight(struct wlan_cfg_dp_soc_ctxt *cfg); 1832 1833 /** 1834 * wlan_cfg_get_dp_soc_rx_sw_desc_num - Get rx sw desc num 1835 * @cfg: soc configuration context 1836 * 1837 * Return: rx_sw_desc_num 1838 */ 1839 int 1840 wlan_cfg_get_dp_soc_rx_sw_desc_num(struct wlan_cfg_dp_soc_ctxt *cfg); 1841 1842 /** 1843 * wlan_cfg_set_dp_soc_rx_sw_desc_num - Set rx sw desc num 1844 * @cfg: soc configuration context 1845 * @desc_num: Number of Rx descriptors to be set 1846 * 1847 * Return: None 1848 */ 1849 void 1850 wlan_cfg_set_dp_soc_rx_sw_desc_num(struct wlan_cfg_dp_soc_ctxt *cfg, 1851 int desc_num); 1852 1853 /** 1854 * wlan_cfg_get_dp_caps - Get dp capabilities 1855 * @cfg: soc configuration context 1856 * @dp_caps: enum for dp capabilities 1857 * 1858 * Return: bool if a dp capabilities is enabled 1859 */ 1860 bool 1861 wlan_cfg_get_dp_caps(struct wlan_cfg_dp_soc_ctxt *cfg, 1862 enum cdp_capabilities dp_caps); 1863 1864 /** 1865 * wlan_set_srng_cfg() - Fill per ring specific 1866 * configuration parameters 1867 * @wlan_cfg: global srng configuration table 1868 * 1869 * Return: None 1870 */ 1871 void wlan_set_srng_cfg(struct wlan_srng_cfg **wlan_cfg); 1872 1873 #ifdef QCA_LL_TX_FLOW_CONTROL_V2 1874 int wlan_cfg_get_tx_flow_stop_queue_th(struct wlan_cfg_dp_soc_ctxt *cfg); 1875 1876 int wlan_cfg_get_tx_flow_start_queue_offset(struct wlan_cfg_dp_soc_ctxt *cfg); 1877 #endif /* QCA_LL_TX_FLOW_CONTROL_V2 */ 1878 int wlan_cfg_get_rx_defrag_min_timeout(struct wlan_cfg_dp_soc_ctxt *cfg); 1879 1880 int wlan_cfg_get_defrag_timeout_check(struct wlan_cfg_dp_soc_ctxt *cfg); 1881 1882 /** 1883 * wlan_cfg_get_rx_flow_search_table_size() - Return the size of Rx FST 1884 * in number of entries 1885 * 1886 * @cfg: soc configuration context 1887 * 1888 * Return: rx_fst_size 1889 */ 1890 uint16_t 1891 wlan_cfg_get_rx_flow_search_table_size(struct wlan_cfg_dp_soc_ctxt *cfg); 1892 1893 /** 1894 * wlan_cfg_rx_fst_get_max_search() - Return the max skid length for FST search 1895 * 1896 * @cfg: soc configuration context 1897 * 1898 * Return: max_search 1899 */ 1900 uint8_t wlan_cfg_rx_fst_get_max_search(struct wlan_cfg_dp_soc_ctxt *cfg); 1901 1902 /** 1903 * wlan_cfg_rx_fst_get_hash_key() - Return Toeplitz Hash Key used for FST 1904 * search 1905 * 1906 * @cfg: soc configuration context 1907 * 1908 * Return: 320-bit Hash Key 1909 */ 1910 uint8_t *wlan_cfg_rx_fst_get_hash_key(struct wlan_cfg_dp_soc_ctxt *cfg); 1911 1912 /** 1913 * wlan_cfg_set_rx_flow_tag_enabled() - set rx flow tag enabled flag in 1914 * DP soc context 1915 * @cfg: soc configuration context 1916 * @val: Rx flow tag feature flag value 1917 * 1918 * Return: None 1919 */ 1920 void wlan_cfg_set_rx_flow_tag_enabled(struct wlan_cfg_dp_soc_ctxt *cfg, 1921 bool val); 1922 1923 /** 1924 * wlan_cfg_is_rx_flow_tag_enabled() - get rx flow tag enabled flag from 1925 * DP soc context 1926 * @cfg: soc configuration context 1927 * 1928 * Return: true if feature is enabled, else false 1929 */ 1930 bool wlan_cfg_is_rx_flow_tag_enabled(struct wlan_cfg_dp_soc_ctxt *cfg); 1931 1932 /** 1933 * wlan_cfg_set_rx_flow_search_table_per_pdev() - Set flag to indicate that 1934 * Rx FST is per pdev 1935 * @cfg: soc configuration context 1936 * @val: boolean flag indicating Rx FST per pdev or per SOC 1937 * 1938 * Return: None 1939 */ 1940 void 1941 wlan_cfg_set_rx_flow_search_table_per_pdev(struct wlan_cfg_dp_soc_ctxt *cfg, 1942 bool val); 1943 1944 /** 1945 * wlan_cfg_is_rx_flow_search_table_per_pdev() - get RX FST flag for per pdev 1946 * @cfg: soc configuration context 1947 * 1948 * Return: true if Rx FST is per pdev, else false 1949 */ 1950 bool 1951 wlan_cfg_is_rx_flow_search_table_per_pdev(struct wlan_cfg_dp_soc_ctxt *cfg); 1952 1953 /** 1954 * wlan_cfg_set_rx_flow_search_table_size() - set RX FST size in DP SoC context 1955 * @cfg: soc configuration context 1956 * @val: Rx FST size in number of entries 1957 * 1958 * Return: None 1959 */ 1960 void 1961 wlan_cfg_set_rx_flow_search_table_size(struct wlan_cfg_dp_soc_ctxt *cfg, 1962 uint16_t val); 1963 1964 /** 1965 * wlan_cfg_set_rx_mon_protocol_flow_tag_enabled() - set mon rx tag enabled flag 1966 * in DP soc context 1967 * @cfg: soc configuration context 1968 * @val: Rx protocol or flow tag feature flag value in monitor mode from INI 1969 * 1970 * Return: None 1971 */ 1972 void 1973 wlan_cfg_set_rx_mon_protocol_flow_tag_enabled(struct wlan_cfg_dp_soc_ctxt *cfg, 1974 bool val); 1975 1976 /** 1977 * wlan_cfg_is_rx_mon_protocol_flow_tag_enabled() - get mon rx tag enabled flag 1978 * from DP soc context 1979 * @cfg: soc configuration context 1980 * 1981 * Return: true if feature is enabled in monitor mode for protocol or flow 1982 * tagging in INI, false otherwise 1983 */ 1984 bool 1985 wlan_cfg_is_rx_mon_protocol_flow_tag_enabled(struct wlan_cfg_dp_soc_ctxt *cfg); 1986 1987 /** 1988 * wlan_cfg_set_tx_per_pkt_vdev_id_check() - set flag to enable perpkt 1989 * vdev id check in tx. 1990 * @cfg: soc configuration context 1991 * @val: feature flag value 1992 * 1993 * Return: None 1994 */ 1995 void 1996 wlan_cfg_set_tx_per_pkt_vdev_id_check(struct wlan_cfg_dp_soc_ctxt *cfg, 1997 bool val); 1998 1999 /** 2000 * wlan_cfg_is_tx_per_pkt_vdev_id_check_enabled() - get flag to check if 2001 * perpkt vdev id check is enabled in tx. 2002 * @cfg: soc configuration context 2003 * 2004 * Return: true if feature is enabled, false otherwise 2005 */ 2006 bool 2007 wlan_cfg_is_tx_per_pkt_vdev_id_check_enabled(struct wlan_cfg_dp_soc_ctxt *cfg); 2008 2009 /** 2010 * wlan_cfg_fill_interrupt_mask() - set interrupt mask 2011 * 2012 * @wlan_cfg_ctx: soc configuration context 2013 * @num_dp_msi: Number of DP interrupts available (0 for integrated) 2014 * @interrupt_mode: Type of interrupt 2015 * @is_monitor_mode: is monitor mode enabled 2016 * @ppeds_attached: is ppeds attached 2017 * @umac_reset_support: Umac reset support 2018 * 2019 * Return: void 2020 */ 2021 void wlan_cfg_fill_interrupt_mask(struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx, 2022 int num_dp_msi, int interrupt_mode, 2023 bool is_monitor_mode, bool ppeds_attached, 2024 bool umac_reset_support); 2025 2026 /** 2027 * wlan_cfg_is_rx_buffer_pool_enabled() - Get RX buffer pool enabled flag 2028 * 2029 * 2030 * @cfg: soc configuration context 2031 * 2032 * Return: true if enabled, false otherwise. 2033 */ 2034 bool wlan_cfg_is_rx_buffer_pool_enabled(struct wlan_cfg_dp_soc_ctxt *cfg); 2035 2036 /** 2037 * wlan_cfg_is_rx_refill_buffer_pool_enabled() - Get RX refill buffer pool enabled flag 2038 * 2039 * 2040 * @cfg: soc configuration context 2041 * 2042 * Return: true if enabled, false otherwise. 2043 */ 2044 bool wlan_cfg_is_rx_refill_buffer_pool_enabled(struct wlan_cfg_dp_soc_ctxt *cfg); 2045 2046 /** 2047 * wlan_cfg_is_dp_buf_page_frag_alloc_enable() - Get nbuf allocations from page 2048 * frags. 2049 * 2050 * @cfg: soc configuration context 2051 * 2052 * Return: true if enabled, false otherwise. 2053 */ 2054 2055 bool 2056 wlan_cfg_is_dp_buf_page_frag_alloc_enable(struct wlan_cfg_dp_soc_ctxt *cfg); 2057 2058 #ifdef WLAN_FEATURE_RX_PREALLOC_BUFFER_POOL 2059 /** 2060 * wlan_cfg_get_rx_refill_buf_pool_size() - Get Rx refill buf pool size 2061 * 2062 * @cfg: soc configuration context 2063 * 2064 * Return: Rx refill buffer pool size 2065 */ 2066 int wlan_cfg_get_rx_refill_buf_pool_size(struct wlan_cfg_dp_soc_ctxt *cfg); 2067 2068 /** 2069 * wlan_cfg_set_rx_refill_buf_pool_size() - Set Rx refill buf pool size 2070 * 2071 * @cfg: soc configuration context 2072 * @size: size of the Rx buffer pool size 2073 * 2074 * Return: None 2075 */ 2076 void 2077 wlan_cfg_set_rx_refill_buf_pool_size(struct wlan_cfg_dp_soc_ctxt *cfg, 2078 int size); 2079 #endif 2080 2081 void wlan_cfg_set_tso_desc_attach_defer(struct wlan_cfg_dp_soc_ctxt *cfg, 2082 bool val); 2083 2084 bool wlan_cfg_is_tso_desc_attach_defer(struct wlan_cfg_dp_soc_ctxt *cfg); 2085 2086 /** 2087 * wlan_cfg_get_reo_rings_mapping() - Get Reo destination ring bitmap 2088 * 2089 * 2090 * @cfg: soc configuration context 2091 * 2092 * Return: reo ring bitmap. 2093 */ 2094 uint32_t wlan_cfg_get_reo_rings_mapping(struct wlan_cfg_dp_soc_ctxt *cfg); 2095 2096 /** 2097 * wlan_cfg_get_rx_rings_mapping() - Get RX ring bitmap 2098 * 2099 * @cfg: soc configuration context 2100 * 2101 * Return: rx ring bitmap. 2102 */ 2103 uint32_t wlan_cfg_get_rx_rings_mapping(struct wlan_cfg_dp_soc_ctxt *cfg); 2104 2105 /** 2106 * wlan_cfg_set_peer_ext_stats() - set peer extended stats 2107 * 2108 * @cfg: soc configuration context 2109 * @val: Flag value read from INI 2110 * 2111 * Return: void 2112 */ 2113 void 2114 wlan_cfg_set_peer_ext_stats(struct wlan_cfg_dp_soc_ctxt *cfg, 2115 bool val); 2116 2117 /** 2118 * wlan_cfg_set_peer_jitter_stats() - set peer jitter stats 2119 * 2120 * @cfg: soc configuration context 2121 * @val: Flag value read from INI 2122 * 2123 * Return: bool 2124 */ 2125 void 2126 wlan_cfg_set_peer_jitter_stats(struct wlan_cfg_dp_soc_ctxt *cfg, 2127 bool val); 2128 2129 /** 2130 * wlan_cfg_is_peer_ext_stats_enabled() - Check if peer extended 2131 * stats are enabled 2132 * 2133 * @cfg: soc configuration context 2134 * 2135 * Return: bool 2136 */ 2137 bool 2138 wlan_cfg_is_peer_ext_stats_enabled(struct wlan_cfg_dp_soc_ctxt *cfg); 2139 2140 /** 2141 * wlan_cfg_is_peer_jitter_stats_enabled() - check if jitter stats are enabled 2142 * 2143 * @cfg: soc configuration context 2144 * 2145 * Return: bool 2146 */ 2147 bool 2148 wlan_cfg_is_peer_jitter_stats_enabled(struct wlan_cfg_dp_soc_ctxt *cfg); 2149 2150 /** 2151 * wlan_cfg_is_poll_mode_enabled() - Check if poll mode is enabled 2152 * 2153 * @cfg: soc configuration context 2154 * 2155 * Return: bool 2156 */ 2157 2158 bool wlan_cfg_is_poll_mode_enabled(struct wlan_cfg_dp_soc_ctxt *cfg); 2159 2160 /** 2161 * wlan_cfg_is_fst_in_cmem_enabled() - Check if FST in CMEM is enabled 2162 * @cfg: soc configuration context 2163 * 2164 * Return: true if enabled, false otherwise. 2165 */ 2166 bool wlan_cfg_is_fst_in_cmem_enabled(struct wlan_cfg_dp_soc_ctxt *cfg); 2167 2168 /** 2169 * wlan_cfg_is_swlm_enabled() - Get SWLMenabled flag 2170 * @cfg: soc configuration context 2171 * 2172 * Return: true if enabled, false otherwise. 2173 */ 2174 bool wlan_cfg_is_swlm_enabled(struct wlan_cfg_dp_soc_ctxt *cfg); 2175 2176 /** 2177 * wlan_cfg_set_peer_link_stats() - set peer link stats 2178 * 2179 * @cfg: soc configuration context 2180 * @val: Flag value read from INI 2181 * 2182 * Return: void 2183 */ 2184 void 2185 wlan_cfg_set_peer_link_stats(struct wlan_cfg_dp_soc_ctxt *cfg, 2186 bool val); 2187 /** 2188 * wlan_cfg_is_peer_link_stats_enabled() - check if link peer stats are enabled 2189 * 2190 * @cfg: soc configuration context 2191 * 2192 * Return: bool 2193 */ 2194 bool 2195 wlan_cfg_is_peer_link_stats_enabled(struct wlan_cfg_dp_soc_ctxt *cfg); 2196 2197 #ifdef IPA_OFFLOAD 2198 /** 2199 * wlan_cfg_ipa_tx_ring_size - Get Tx DMA ring size (TCL Data Ring) 2200 * @cfg: dp cfg context 2201 * 2202 * Return: IPA Tx Ring Size 2203 */ 2204 uint32_t wlan_cfg_ipa_tx_ring_size(struct wlan_cfg_dp_soc_ctxt *cfg); 2205 2206 /** 2207 * wlan_cfg_ipa_tx_comp_ring_size - Get Tx completion ring size (WBM Ring) 2208 * @cfg: dp cfg context 2209 * 2210 * Return: IPA Tx Completion ring size 2211 */ 2212 uint32_t wlan_cfg_ipa_tx_comp_ring_size(struct wlan_cfg_dp_soc_ctxt *cfg); 2213 2214 /** 2215 * wlan_cfg_ipa_tx_alt_ring_size - Get Tx alt DMA ring size (TCL Data Ring) 2216 * @cfg: dp cfg context 2217 * 2218 * Return: IPA Tx alt Ring Size 2219 */ 2220 int wlan_cfg_ipa_tx_alt_ring_size(struct wlan_cfg_dp_soc_ctxt *cfg); 2221 2222 /** 2223 * wlan_cfg_ipa_tx_alt_comp_ring_size - Get Tx alt comp DMA ring size 2224 * (TCL Data Ring) 2225 * @cfg: dp cfg context 2226 * 2227 * Return: IPA Tx alt comp Ring Size 2228 */ 2229 int 2230 wlan_cfg_ipa_tx_alt_comp_ring_size(struct wlan_cfg_dp_soc_ctxt *cfg); 2231 2232 #else 2233 static inline wlan_cfg_ipa_tx_ring_size(struct wlan_cfg_dp_soc_ctxt * cfg)2234 uint32_t wlan_cfg_ipa_tx_ring_size(struct wlan_cfg_dp_soc_ctxt *cfg) 2235 { 2236 return 0; 2237 } 2238 2239 static inline wlan_cfg_ipa_tx_comp_ring_size(struct wlan_cfg_dp_soc_ctxt * cfg)2240 uint32_t wlan_cfg_ipa_tx_comp_ring_size(struct wlan_cfg_dp_soc_ctxt *cfg) 2241 { 2242 return 0; 2243 } 2244 #endif 2245 2246 /** 2247 * wlan_cfg_radio0_default_reo_get - Get Radio0 default REO 2248 * @cfg: soc configuration context 2249 * 2250 * Return: None 2251 */ 2252 uint8_t wlan_cfg_radio0_default_reo_get(struct wlan_cfg_dp_soc_ctxt *cfg); 2253 2254 /** 2255 * wlan_cfg_radio1_default_reo_get - Get Radio1 default REO 2256 * @cfg: soc configuration context 2257 * 2258 * Return: None 2259 */ 2260 uint8_t wlan_cfg_radio1_default_reo_get(struct wlan_cfg_dp_soc_ctxt *cfg); 2261 2262 /** 2263 * wlan_cfg_radio2_default_reo_get() - Get Radio2 default REO 2264 * @cfg: soc configuration context 2265 * 2266 * Return: None 2267 */ 2268 uint8_t wlan_cfg_radio2_default_reo_get(struct wlan_cfg_dp_soc_ctxt *cfg); 2269 2270 /** 2271 * wlan_cfg_set_rxdma1_enable() - Enable rxdma1 2272 * @wlan_cfg_ctx: soc configuration context 2273 * 2274 * Return: None 2275 */ 2276 void wlan_cfg_set_rxdma1_enable(struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx); 2277 2278 /** 2279 * wlan_cfg_is_delay_mon_replenish() - Get if delayed monitor replenish 2280 * is enabled 2281 * @cfg: soc configuration context 2282 * 2283 * Return: true if enabled, false otherwise. 2284 */ 2285 bool 2286 wlan_cfg_is_delay_mon_replenish(struct wlan_cfg_dp_soc_ctxt *cfg); 2287 2288 /** 2289 * wlan_cfg_set_delay_mon_replenish() - Set delayed monitor replenish 2290 * @cfg: soc configuration context 2291 * @val: val to set 2292 * 2293 * Return: None 2294 */ 2295 void 2296 wlan_cfg_set_delay_mon_replenish(struct wlan_cfg_dp_soc_ctxt *cfg, bool val); 2297 2298 /** 2299 * wlan_cfg_dp_soc_ctx_dump() - Dump few DP cfg soc parameters 2300 * @cfg: soc configuration context 2301 * 2302 * Return: 2303 */ 2304 void wlan_cfg_dp_soc_ctx_dump(struct wlan_cfg_dp_soc_ctxt *cfg); 2305 2306 #ifdef WLAN_SUPPORT_PPEDS 2307 /** 2308 * wlan_cfg_get_dp_soc_ppeds_enable() - API to get ppe enable flag 2309 * @cfg: Configuration Handle 2310 * 2311 * Return: true if ppeds support is enabled else return false 2312 */ 2313 bool 2314 wlan_cfg_get_dp_soc_ppeds_enable(struct wlan_cfg_dp_soc_ctxt *cfg); 2315 2316 /** 2317 * wlan_cfg_get_dp_soc_reo2ppe_ring_size() - get ppe rx ring size 2318 * @cfg: Configuration Handle 2319 * 2320 * Return: size of reo2ppe ring 2321 */ 2322 int 2323 wlan_cfg_get_dp_soc_reo2ppe_ring_size(struct wlan_cfg_dp_soc_ctxt *cfg); 2324 2325 /** 2326 * wlan_cfg_get_dp_soc_ppe2tcl_ring_size() - get ppe tx ring size 2327 * @cfg: Configuration Handle 2328 * 2329 * Return: size of ppe2tcl ring 2330 */ 2331 int 2332 wlan_cfg_get_dp_soc_ppe2tcl_ring_size(struct wlan_cfg_dp_soc_ctxt *cfg); 2333 2334 /** 2335 * wlan_cfg_get_dp_soc_ppeds_num_tx_desc() - Number of ppeds tx Descriptors 2336 * @cfg: Configuration Handle 2337 * 2338 * Return: num_tx_desc 2339 */ 2340 int 2341 wlan_cfg_get_dp_soc_ppeds_num_tx_desc(struct wlan_cfg_dp_soc_ctxt *cfg); 2342 2343 /** 2344 * wlan_cfg_get_dp_soc_ppeds_tx_desc_hotlist_len() - Max hotlist len of tx descs 2345 * @cfg: Configuration Handle 2346 * 2347 * Return: hotlist len 2348 */ 2349 int 2350 wlan_cfg_get_dp_soc_ppeds_tx_desc_hotlist_len(struct wlan_cfg_dp_soc_ctxt *cfg); 2351 /** 2352 * wlan_cfg_get_dp_soc_ppeds_tx_comp_napi_budget() - ppeds Tx comp napi budget 2353 * @cfg: Configuration Handle 2354 * 2355 * Return: napi budget 2356 */ 2357 int 2358 wlan_cfg_get_dp_soc_ppeds_tx_comp_napi_budget(struct wlan_cfg_dp_soc_ctxt *cfg); 2359 #else 2360 static inline bool wlan_cfg_get_dp_soc_ppeds_enable(struct wlan_cfg_dp_soc_ctxt * cfg)2361 wlan_cfg_get_dp_soc_ppeds_enable(struct wlan_cfg_dp_soc_ctxt *cfg) 2362 { 2363 return false; 2364 } 2365 2366 static inline int wlan_cfg_get_dp_soc_reo2ppe_ring_size(struct wlan_cfg_dp_soc_ctxt * cfg)2367 wlan_cfg_get_dp_soc_reo2ppe_ring_size(struct wlan_cfg_dp_soc_ctxt *cfg) 2368 { 2369 return 0; 2370 } 2371 2372 static inline int wlan_cfg_get_dp_soc_ppe2tcl_ring_size(struct wlan_cfg_dp_soc_ctxt * cfg)2373 wlan_cfg_get_dp_soc_ppe2tcl_ring_size(struct wlan_cfg_dp_soc_ctxt *cfg) 2374 { 2375 return 0; 2376 } 2377 2378 static inline int wlan_cfg_get_dp_soc_ppeds_num_tx_desc(struct wlan_cfg_dp_soc_ctxt * cfg)2379 wlan_cfg_get_dp_soc_ppeds_num_tx_desc(struct wlan_cfg_dp_soc_ctxt *cfg) 2380 { 2381 return 0; 2382 } 2383 2384 static inline int wlan_cfg_get_dp_soc_ppeds_tx_comp_napi_budget(struct wlan_cfg_dp_soc_ctxt * cfg)2385 wlan_cfg_get_dp_soc_ppeds_tx_comp_napi_budget(struct wlan_cfg_dp_soc_ctxt *cfg) 2386 { 2387 return 0; 2388 } 2389 2390 static inline int wlan_cfg_get_dp_soc_ppeds_tx_desc_hotlist_len(struct wlan_cfg_dp_soc_ctxt * cfg)2391 wlan_cfg_get_dp_soc_ppeds_tx_desc_hotlist_len(struct wlan_cfg_dp_soc_ctxt *cfg) 2392 { 2393 return 0; 2394 } 2395 #endif 2396 2397 /** 2398 * wlan_cfg_get_prealloc_cfg() - Get dp prealloc related cfg param 2399 * @ctrl_psoc: PSOC object 2400 * @cfg: cfg ctx where values will be populated 2401 * 2402 * Return: None 2403 */ 2404 void 2405 wlan_cfg_get_prealloc_cfg(struct cdp_ctrl_objmgr_psoc *ctrl_psoc, 2406 struct wlan_dp_prealloc_cfg *cfg); 2407 #ifdef WLAN_FEATURE_PKT_CAPTURE_V2 2408 /** 2409 * wlan_cfg_get_pkt_capture_mode() - Get packet capture mode config 2410 * @cfg: config context 2411 * 2412 * Return: value of packet capture mode 2413 */ 2414 uint32_t wlan_cfg_get_pkt_capture_mode(struct wlan_cfg_dp_soc_ctxt *cfg); 2415 #else 2416 static inline wlan_cfg_get_pkt_capture_mode(struct wlan_cfg_dp_soc_ctxt * cfg)2417 uint32_t wlan_cfg_get_pkt_capture_mode(struct wlan_cfg_dp_soc_ctxt *cfg) 2418 { 2419 return 0; 2420 } 2421 #endif 2422 2423 /** 2424 * wlan_cfg_get_dp_soc_rx_mon_buf_ring_size() - Rx MON buf ring size 2425 * @cfg: Configuration Handle 2426 * 2427 * Return: Size of Rx MON buf ring size 2428 */ 2429 uint32_t 2430 wlan_cfg_get_dp_soc_rx_mon_buf_ring_size(struct wlan_cfg_dp_soc_ctxt *cfg); 2431 2432 /** 2433 * wlan_cfg_get_dp_soc_tx_mon_buf_ring_size() - Tx MON buf ring size 2434 * @cfg: Configuration Handle 2435 * 2436 * Return: Size of Tx MON buf ring size 2437 */ 2438 uint32_t 2439 wlan_cfg_get_dp_soc_tx_mon_buf_ring_size(struct wlan_cfg_dp_soc_ctxt *cfg); 2440 2441 /** 2442 * wlan_cfg_get_dma_rx_mon_dest_ring_size() - Rx MON dest ring size 2443 * @cfg: Configuration Handle 2444 * 2445 * Return: Size of Rx MON dest ring size 2446 */ 2447 int wlan_cfg_get_dma_rx_mon_dest_ring_size(struct wlan_cfg_dp_pdev_ctxt *cfg); 2448 2449 /** 2450 * wlan_cfg_get_dma_sw2rxdma_link_ring_size() - SW2RXDMA link ring size 2451 * @cfg: Configuration Handle 2452 * 2453 * Return: Size of SW2RXDMA link ring size 2454 */ 2455 int wlan_cfg_get_dma_sw2rxdma_link_ring_size(struct wlan_cfg_dp_pdev_ctxt *cfg); 2456 2457 /** 2458 * wlan_cfg_get_dma_tx_mon_dest_ring_size() - Tx MON dest ring size 2459 * @cfg: Configuration Handle 2460 * 2461 * Return: Size of Tx MON dest ring size 2462 */ 2463 int wlan_cfg_get_dma_tx_mon_dest_ring_size(struct wlan_cfg_dp_pdev_ctxt *cfg); 2464 2465 /** 2466 * wlan_cfg_get_rx_rel_ring_id() - get wbm2sw ring id for Rx release ring 2467 * @cfg: Configuration Handle 2468 * 2469 * Return: wbm2sw ring id 2470 */ 2471 uint8_t 2472 wlan_cfg_get_rx_rel_ring_id(struct wlan_cfg_dp_soc_ctxt *cfg); 2473 2474 /** 2475 * wlan_cfg_set_rx_rel_ring_id() - set wbm2sw ring id for Rx release ring 2476 * @cfg: soc configuration context 2477 * @wbm2sw_ring_id: wbm2sw ring id 2478 * 2479 * Return: None 2480 */ 2481 void 2482 wlan_cfg_set_rx_rel_ring_id(struct wlan_cfg_dp_soc_ctxt *cfg, 2483 uint8_t wbm2sw_ring_id); 2484 2485 /** 2486 * wlan_cfg_set_vdev_stats_hw_offload_config() - Set hw vdev stats offload 2487 * config 2488 * @cfg: config context 2489 * @value: value to be set 2490 * 2491 * Return: none 2492 */ 2493 void 2494 wlan_cfg_set_vdev_stats_hw_offload_config(struct wlan_cfg_dp_soc_ctxt *cfg, 2495 bool value); 2496 2497 /** 2498 * wlan_cfg_get_vdev_stats_hw_offload_config() - Get hw vdev stats offload 2499 * config 2500 * @cfg: config context 2501 * 2502 * Return: value of hw vdev stats config 2503 */ 2504 bool 2505 wlan_cfg_get_vdev_stats_hw_offload_config(struct wlan_cfg_dp_soc_ctxt *cfg); 2506 2507 /** 2508 * wlan_cfg_get_vdev_stats_hw_offload_timer()- Get hw vdev stats timer duration 2509 * @cfg: config context 2510 * 2511 * Return: value of hw vdev stats timer duration 2512 */ 2513 int wlan_cfg_get_vdev_stats_hw_offload_timer(struct wlan_cfg_dp_soc_ctxt *cfg); 2514 2515 /** 2516 * wlan_cfg_set_sawf_config() - Set SAWF config enable/disable 2517 * @cfg: config context 2518 * @value: value to be set 2519 * 2520 * Return: none 2521 */ 2522 void 2523 wlan_cfg_set_sawf_config(struct wlan_cfg_dp_soc_ctxt *cfg, bool value); 2524 2525 /** 2526 * wlan_cfg_get_sawf_config() - Get SAWF config enable/disable 2527 * @cfg: config context 2528 * 2529 * Return: true or false 2530 */ 2531 bool 2532 wlan_cfg_get_sawf_config(struct wlan_cfg_dp_soc_ctxt *cfg); 2533 2534 /** 2535 * wlan_cfg_set_sawf_stats_config() - Set SAWF stats config 2536 * @cfg: config context 2537 * @value: value to be set 2538 * 2539 * Return: void 2540 */ 2541 void 2542 wlan_cfg_set_sawf_stats_config(struct wlan_cfg_dp_soc_ctxt *cfg, uint8_t value); 2543 2544 /** 2545 * wlan_cfg_get_sawf_stats_config() - Get SAWF stats config 2546 * @cfg: config context 2547 * 2548 * Return: value for sawf_stats_config 2549 */ 2550 uint8_t 2551 wlan_cfg_get_sawf_stats_config(struct wlan_cfg_dp_soc_ctxt *cfg); 2552 2553 #if defined(WLAN_FEATURE_11BE_MLO) && defined(WLAN_MLO_MULTI_CHIP) 2554 /** 2555 * wlan_cfg_mlo_rx_ring_map_get() - get rx ring map 2556 * @cfg: soc configuration context 2557 * 2558 * Return: rx_ring_map 2559 */ 2560 uint8_t 2561 wlan_cfg_mlo_rx_ring_map_get(struct wlan_cfg_dp_soc_ctxt *cfg); 2562 #endif 2563 2564 /** 2565 * wlan_cfg_set_host2txmon_ring_mask() - Set host2txmon ring 2566 * interrupt mask mapped to an interrupt context 2567 * @cfg: Configuration Handle 2568 * @context: interrupt context 2569 * @mask: interrupt mask 2570 * 2571 * Return: None 2572 */ 2573 void wlan_cfg_set_host2txmon_ring_mask(struct wlan_cfg_dp_soc_ctxt *cfg, 2574 int context, int mask); 2575 /** 2576 * wlan_cfg_get_host2txmon_ring_mask() - Return host2txmon ring 2577 * interrupt mask mapped to an interrupt context 2578 * @cfg: Configuration Handle 2579 * @context: Numerical ID identifying the Interrupt/NAPI context 2580 * 2581 * Return: int_host2txmon_ring_mask[context] 2582 */ 2583 int wlan_cfg_get_host2txmon_ring_mask(struct wlan_cfg_dp_soc_ctxt *cfg, 2584 int context); 2585 /** 2586 * wlan_cfg_set_txmon_hw_support () - Set txmon hw support 2587 * @cfg: Configuration Handle 2588 * @txmon_hw_support: value to set 2589 * 2590 * Return: None 2591 */ 2592 void wlan_cfg_set_txmon_hw_support(struct wlan_cfg_dp_soc_ctxt *cfg, 2593 bool txmon_hw_support); 2594 2595 /** 2596 * wlan_cfg_get_txmon_hw_support () - Get txmon hw support 2597 * @cfg: Configuration Handle 2598 * 2599 * Return: txmon_hw_support 2600 */ 2601 bool wlan_cfg_get_txmon_hw_support(struct wlan_cfg_dp_soc_ctxt *cfg); 2602 2603 void wlan_cfg_set_txmon_sw_peer_filtering(struct wlan_cfg_dp_soc_ctxt *cfg, 2604 bool txmon_sw_peer_filtering); 2605 bool wlan_cfg_get_txmon_sw_peer_filtering(struct wlan_cfg_dp_soc_ctxt *cfg); 2606 2607 #ifdef WLAN_TX_PKT_CAPTURE_ENH 2608 /** 2609 * wlan_cfg_get_tx_capt_max_mem - Get max memory allowed for TX capture feature 2610 * @cfg: Configuration Handle 2611 * 2612 * Return: user given size in bytes 2613 */ 2614 static inline int wlan_cfg_get_tx_capt_max_mem(struct wlan_cfg_dp_soc_ctxt * cfg)2615 wlan_cfg_get_tx_capt_max_mem(struct wlan_cfg_dp_soc_ctxt *cfg) 2616 { 2617 return cfg->tx_capt_max_mem_allowed; 2618 } 2619 2620 /** 2621 * wlan_cfg_get_tx_capt_rbm_id - Get RBM_ID to be used for tx capture feature 2622 * @cfg: Configuration Handle 2623 * @idx: Pdev_id 2624 * 2625 * Return: Return Buffer manager id to be used 2626 */ 2627 static inline int wlan_cfg_get_tx_capt_rbm_id(struct wlan_cfg_dp_soc_ctxt * cfg,uint8_t idx)2628 wlan_cfg_get_tx_capt_rbm_id(struct wlan_cfg_dp_soc_ctxt *cfg, uint8_t idx) 2629 { 2630 if (idx >= MAX_PDEV_CNT) { 2631 qdf_err("!!! pdev index is greater than expected"); 2632 qdf_assert(0); 2633 /* resetting idx to zero */ 2634 idx = 0; 2635 } 2636 2637 return cfg->tx_capt_rbm_id[idx]; 2638 } 2639 #endif /* WLAN_TX_PKT_CAPTURE_ENH */ 2640 2641 #ifdef DP_TX_PACKET_INSPECT_FOR_ILP 2642 /** 2643 * wlan_cfg_get_tx_ilp_inspect_config() - Get TX ILP configuration 2644 * @cfg: Configuration Handle 2645 * 2646 * Return: TX ILP enable or not 2647 */ 2648 static inline bool wlan_cfg_get_tx_ilp_inspect_config(struct wlan_cfg_dp_soc_ctxt * cfg)2649 wlan_cfg_get_tx_ilp_inspect_config(struct wlan_cfg_dp_soc_ctxt *cfg) 2650 { 2651 return cfg->tx_pkt_inspect_for_ilp; 2652 } 2653 #endif 2654 2655 /** 2656 * wlan_cfg_get_napi_scale_factor() - Get napi scale factor 2657 * @cfg: soc configuration context 2658 * 2659 * Return: napi scale factor 2660 */ 2661 uint8_t wlan_cfg_get_napi_scale_factor(struct wlan_cfg_dp_soc_ctxt *cfg); 2662 2663 /** 2664 * wlan_cfg_soc_update_tgt_params() - Update band specific params 2665 * @wlan_cfg_ctx: SOC cfg context 2666 * @ctrl_obj: PSOC object 2667 * 2668 * Return: void 2669 */ 2670 void 2671 wlan_cfg_soc_update_tgt_params(struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx, 2672 struct cdp_ctrl_objmgr_psoc *ctrl_obj); 2673 2674 /** 2675 * wlan_cfg_get_pointer_timer_threshold_rx() - Get timer threshold for RX 2676 * pointer update 2677 * @cfg: soc configuration context 2678 * 2679 * Return: timer threshold for RX REO Dest ring pointer update 2680 */ 2681 uint16_t 2682 wlan_cfg_get_pointer_timer_threshold_rx(struct wlan_cfg_dp_soc_ctxt *cfg); 2683 2684 /** 2685 * wlan_cfg_get_pointer_num_threshold_rx() - Get number threshold for RX 2686 * pointer update 2687 * @cfg: soc configuration context 2688 * 2689 * Return: entries number threshold for RX REO Dest ring pointer update 2690 */ 2691 uint8_t 2692 wlan_cfg_get_pointer_num_threshold_rx(struct wlan_cfg_dp_soc_ctxt *cfg); 2693 2694 #ifdef WLAN_FEATURE_LOCAL_PKT_CAPTURE 2695 static inline wlan_cfg_get_local_pkt_capture(struct wlan_cfg_dp_soc_ctxt * cfg)2696 bool wlan_cfg_get_local_pkt_capture(struct wlan_cfg_dp_soc_ctxt *cfg) 2697 { 2698 return cfg->local_pkt_capture; 2699 } 2700 #else 2701 static inline wlan_cfg_get_local_pkt_capture(struct wlan_cfg_dp_soc_ctxt * cfg)2702 bool wlan_cfg_get_local_pkt_capture(struct wlan_cfg_dp_soc_ctxt *cfg) 2703 { 2704 return false; 2705 } 2706 #endif 2707 2708 /** 2709 * wlan_cfg_get_special_frame_cfg() - Get special frame mask 2710 * @cfg: soc configuration context 2711 * 2712 * Return: frame mask 2713 */ 2714 uint32_t 2715 wlan_cfg_get_special_frame_cfg(struct wlan_cfg_dp_soc_ctxt *cfg); 2716 2717 #ifdef DP_UMAC_HW_RESET_SUPPORT 2718 /** 2719 * wlan_cfg_get_umac_reset_buffer_window_ms() - Get umac reset buffer window 2720 * @cfg: soc configuration context 2721 * 2722 * Return: Umac reset buffer window in milliseconds 2723 */ 2724 uint32_t 2725 wlan_cfg_get_umac_reset_buffer_window_ms(struct wlan_cfg_dp_soc_ctxt *cfg); 2726 #else 2727 static inline uint32_t wlan_cfg_get_umac_reset_buffer_window_ms(struct wlan_cfg_dp_soc_ctxt * cfg)2728 wlan_cfg_get_umac_reset_buffer_window_ms(struct wlan_cfg_dp_soc_ctxt *cfg) 2729 { 2730 return 0; 2731 } 2732 #endif /* DP_UMAC_HW_RESET_SUPPORT */ 2733 2734 /** 2735 * wlan_cfg_set_ast_indication_disable - Set AST disable 2736 * 2737 * @cfg: soc configuration context 2738 * @val: value to be set 2739 * 2740 * Return: void 2741 */ 2742 void wlan_cfg_set_ast_indication_disable(struct wlan_cfg_dp_soc_ctxt *cfg, 2743 bool val); 2744 2745 /** 2746 * wlan_cfg_get_ast_indication_disable - Get AST disable 2747 * 2748 * @cfg: soc configuration context 2749 * 2750 * Return: true or false 2751 */ 2752 bool wlan_cfg_get_ast_indication_disable(struct wlan_cfg_dp_soc_ctxt *cfg); 2753 2754 /** 2755 * wlan_cfg_get_dp_soc_dpdk_cfg - Return soc dpdk config 2756 * @psoc: psoc object 2757 * 2758 * Return: dpdk_cfg 2759 */ 2760 int wlan_cfg_get_dp_soc_dpdk_cfg(struct cdp_ctrl_objmgr_psoc *psoc); 2761 #endif /*__WLAN_CFG_H*/ 2762