wlan_cfg.h 39 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292
  1. /*
  2. * Copyright (c) 2013-2020 The Linux Foundation. All rights reserved.
  3. *
  4. * Permission to use, copy, modify, and/or distribute this software for
  5. * any purpose with or without fee is hereby granted, provided that the
  6. * above copyright notice and this permission notice appear in all
  7. * copies.
  8. *
  9. * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
  10. * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
  11. * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
  12. * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
  13. * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
  14. * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
  15. * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
  16. * PERFORMANCE OF THIS SOFTWARE.
  17. */
  18. #ifndef __WLAN_CFG_H
  19. #define __WLAN_CFG_H
  20. /*
  21. * Temporary place holders. These should come either from target config
  22. * or platform configuration
  23. */
  24. #if defined(WLAN_MAX_PDEVS) && (WLAN_MAX_PDEVS == 1)
  25. #define WLAN_CFG_DST_RING_CACHED_DESC 0
  26. #define MAX_PDEV_CNT 1
  27. #define WLAN_CFG_INT_NUM_CONTEXTS 7
  28. #define WLAN_CFG_RXDMA1_ENABLE 1
  29. /*
  30. * This mask defines how many transmit frames account for 1 NAPI work unit
  31. * 0 means each tx completion is 1 unit
  32. */
  33. #define DP_TX_NAPI_BUDGET_DIV_MASK 0
  34. /* PPDU Stats Configuration - Configure bitmask for enabling tx ppdu tlv's */
  35. #define DP_PPDU_TXLITE_STATS_BITMASK_CFG 0x3FFF
  36. #define NUM_RXDMA_RINGS_PER_PDEV 2
  37. /*Maximum Number of LMAC instances*/
  38. #define MAX_NUM_LMAC_HW 2
  39. #else
  40. #define WLAN_CFG_DST_RING_CACHED_DESC 1
  41. #define MAX_PDEV_CNT 3
  42. #define WLAN_CFG_INT_NUM_CONTEXTS 11
  43. #define NUM_RXDMA_RINGS_PER_PDEV 1
  44. #define MAX_NUM_LMAC_HW 3
  45. #endif
  46. #define WLAN_CFG_INT_NUM_CONTEXTS_MAX 11
  47. /* Tx configuration */
  48. #define MAX_LINK_DESC_BANKS 8
  49. #define MAX_TXDESC_POOLS 4
  50. #define MAX_TCL_DATA_RINGS 4
  51. /* Rx configuration */
  52. #define MAX_RXDESC_POOLS 4
  53. #define MAX_REO_DEST_RINGS 4
  54. #define MAX_RX_MAC_RINGS 2
  55. /* DP process status */
  56. #if defined(MAX_PDEV_CNT) && (MAX_PDEV_CNT == 1)
  57. #define CONFIG_PROCESS_RX_STATUS 1
  58. #define CONFIG_PROCESS_TX_STATUS 1
  59. #else
  60. #define CONFIG_PROCESS_RX_STATUS 0
  61. #define CONFIG_PROCESS_TX_STATUS 0
  62. #endif
  63. /* Miscellaneous configuration */
  64. #define MAX_IDLE_SCATTER_BUFS 16
  65. #define DP_MAX_IRQ_PER_CONTEXT 12
  66. #define MAX_HTT_METADATA_LEN 32
  67. #define MAX_NUM_PEER_ID_PER_PEER 8
  68. #define DP_MAX_TIDS 17
  69. #define DP_NON_QOS_TID 16
  70. #define DP_NULL_DATA_TID 17
  71. #define WLAN_CFG_RX_FST_MAX_SEARCH 2
  72. #define WLAN_CFG_RX_FST_TOEPLITZ_KEYLEN 40
  73. #define INVALID_PDEV_ID 0xFF
  74. struct wlan_cfg_dp_pdev_ctxt;
  75. /**
  76. * struct wlan_srng_cfg - Per ring configuration parameters
  77. * @timer_threshold: Config to control interrupts based on timer duration
  78. * @batch_count_threshold: Config to control interrupts based on
  79. * number of packets in the ring
  80. * @low_threshold: Config to control low threshold interrupts for SRC rings
  81. */
  82. struct wlan_srng_cfg {
  83. uint32_t timer_threshold;
  84. uint32_t batch_count_threshold;
  85. uint32_t low_threshold;
  86. };
  87. /**
  88. * struct wlan_cfg_dp_soc_ctxt - Configuration parameters for SoC (core TxRx)
  89. * @num_int_ctxts: Number of NAPI/Interrupt contexts to be registered for DP
  90. * @max_clients: Maximum number of peers/stations supported by device
  91. * @max_alloc_size: Maximum allocation size for any dynamic memory
  92. * allocation request for this device
  93. * @per_pdev_tx_ring: 0: TCL ring is not mapped per radio
  94. * 1: Each TCL ring is mapped to one radio/pdev
  95. * @num_tcl_data_rings: Number of TCL Data rings supported by device
  96. * @per_pdev_rx_ring: 0: REO ring is not mapped per radio
  97. * 1: Each REO ring is mapped to one radio/pdev
  98. * @num_tx_desc_pool: Number of Tx Descriptor pools
  99. * @num_tx_ext_desc_pool: Number of Tx MSDU extension Descriptor pools
  100. * @num_tx_desc: Number of Tx Descriptors per pool
  101. * @min_tx_desc: Minimum number of Tx Descriptors per pool
  102. * @num_tx_ext_desc: Number of Tx MSDU extension Descriptors per pool
  103. * @max_peer_id: Maximum value of peer id that FW can assign for a client
  104. * @htt_packet_type: Default 802.11 encapsulation type for any VAP created
  105. * @int_tx_ring_mask: Bitmap of Tx interrupts mapped to each NAPI/Intr context
  106. * @int_rx_ring_mask: Bitmap of Rx interrupts mapped to each NAPI/Intr context
  107. * @int_rx_mon_ring_mask: Bitmap of Rx monitor ring interrupts mapped to each
  108. * NAPI/Intr context
  109. * @int_rx_err_ring_mask: Bitmap of Rx err ring interrupts mapped to each
  110. * NAPI/Intr context
  111. * @int_wbm_rel_ring_mask: Bitmap of wbm rel ring interrupts mapped to each
  112. * NAPI/Intr context
  113. * @int_reo_status_ring_mask: Bitmap of reo status ring interrupts mapped to
  114. * each NAPI/Intr context
  115. * @int_ce_ring_mask: Bitmap of CE interrupts mapped to each NAPI/Intr context
  116. * @lro_enabled: enable/disable lro feature
  117. * @rx_hash: Enable hash based steering of rx packets
  118. * @tso_enabled: enable/disable tso feature
  119. * @lro_enabled: enable/disable LRO feature
  120. * @sg_enabled: enable disable scatter gather feature
  121. * @gro_enabled: enable disable GRO feature
  122. * @ipa_enabled: Flag indicating if IPA is enabled
  123. * @ol_tx_csum_enabled: Flag indicating if TX csum is enabled
  124. * @ol_rx_csum_enabled: Flag indicating if Rx csum is enabled
  125. * @rawmode_enabled: Flag indicating if RAW mode is enabled
  126. * @peer_flow_ctrl_enabled: Flag indicating if peer flow control is enabled
  127. * @napi_enabled: enable/disable interrupt mode for reaping tx and rx packets
  128. * @tcp_udp_checksumoffload: enable/disable checksum offload
  129. * @nss_cfg: nss configuration
  130. * @rx_defrag_min_timeout: rx defrag minimum timeout
  131. * @wbm_release_ring: wbm release ring size
  132. * @tcl_cmd_credit_ring: tcl command/credit ring size
  133. * @tcl_status_ring: tcl status ring size
  134. * @reo_reinject_ring: reo reinject ring
  135. * @rx_release_ring: rx release ring size
  136. * @reo_exception_ring: reo exception ring size
  137. * @reo_cmd_ring: reo cmd ring size
  138. * @reo_status_ring: reo status ting size
  139. * @rxdma_refill_ring: rxdma refill ring size
  140. * @rxdma_err_dst_ring: rxdma error detination ring size
  141. * @raw_mode_war: enable/disable raw mode war
  142. * @enable_data_stall_detection: flag to enable data stall detection
  143. * @disable_intra_bss_fwd: flag to disable intra bss forwarding
  144. * @rxdma1_enable: flag to indicate if rxdma1 is enabled
  145. * @tx_desc_limit_0: tx_desc limit for 5G H
  146. * @tx_desc_limit_1: tx_desc limit for 2G
  147. * @tx_desc_limit_2: tx_desc limit for 5G L
  148. * @tx_device_limit: tx device limit
  149. * @tx_sw_internode_queue: tx sw internode queue
  150. * @tx_comp_loop_pkt_limit: Max # of packets to be processed in 1 tx comp loop
  151. * @rx_reap_loop_pkt_limit: Max # of packets to be processed in 1 rx reap loop
  152. * @rx_hp_oos_update_limit: Max # of HP OOS (out of sync) updates
  153. * @rx_enable_eol_data_check: flag to enable check for more ring data at end of
  154. * dp_rx_process loop
  155. * @tx_comp_enable_eol_data_check: flag to enable/disable checking for more data
  156. * at end of tx_comp_handler loop.
  157. * @rx_sw_desc_weight: rx sw descriptor weight configuration
  158. * @is_rx_mon_protocol_flow_tag_enabled: flag to enable/disable RX protocol or
  159. * flow tagging in monitor/mon-lite mode
  160. * @is_rx_flow_tag_enabled: flag to enable/disable RX flow tagging using FSE
  161. * @is_rx_flow_search_table_per_pdev: flag to indicate if a per-SOC or per-pdev
  162. * table should be used
  163. * @rx_flow_search_table_size: indicates the number of flows in the flow search
  164. * table
  165. * @rx_flow_max_search: max skid length for each hash entry
  166. * @rx_toeplitz_hash_key: toeplitz key pointer used for hash computation over
  167. * 5 tuple flow entry
  168. * @pktlog_buffer_size: packet log buffer size
  169. * @is_rx_fisa_enabled: flag to enable/disable FISA Rx
  170. */
  171. struct wlan_cfg_dp_soc_ctxt {
  172. int num_int_ctxts;
  173. int max_clients;
  174. int max_alloc_size;
  175. int per_pdev_tx_ring;
  176. int num_tcl_data_rings;
  177. int per_pdev_rx_ring;
  178. int per_pdev_lmac_ring;
  179. int num_reo_dest_rings;
  180. int num_tx_desc_pool;
  181. int num_tx_ext_desc_pool;
  182. int num_tx_desc;
  183. int min_tx_desc;
  184. int num_tx_ext_desc;
  185. int max_peer_id;
  186. int htt_packet_type;
  187. int int_batch_threshold_tx;
  188. int int_timer_threshold_tx;
  189. int int_batch_threshold_rx;
  190. int int_timer_threshold_rx;
  191. int int_batch_threshold_other;
  192. int int_timer_threshold_other;
  193. int int_timer_threshold_mon;
  194. int tx_ring_size;
  195. int tx_comp_ring_size;
  196. int tx_comp_ring_size_nss;
  197. int int_tx_ring_mask[WLAN_CFG_INT_NUM_CONTEXTS];
  198. int int_rx_ring_mask[WLAN_CFG_INT_NUM_CONTEXTS];
  199. int int_rx_mon_ring_mask[WLAN_CFG_INT_NUM_CONTEXTS];
  200. int int_host2rxdma_mon_ring_mask[WLAN_CFG_INT_NUM_CONTEXTS];
  201. int int_rxdma2host_mon_ring_mask[WLAN_CFG_INT_NUM_CONTEXTS];
  202. int int_ce_ring_mask[WLAN_CFG_INT_NUM_CONTEXTS];
  203. int int_rx_err_ring_mask[WLAN_CFG_INT_NUM_CONTEXTS];
  204. int int_rx_wbm_rel_ring_mask[WLAN_CFG_INT_NUM_CONTEXTS];
  205. int int_reo_status_ring_mask[WLAN_CFG_INT_NUM_CONTEXTS];
  206. int int_rxdma2host_ring_mask[WLAN_CFG_INT_NUM_CONTEXTS];
  207. int int_host2rxdma_ring_mask[WLAN_CFG_INT_NUM_CONTEXTS];
  208. int hw_macid[MAX_PDEV_CNT];
  209. int hw_macid_pdev_id_map[MAX_PDEV_CNT];
  210. int base_hw_macid;
  211. bool rx_hash;
  212. bool tso_enabled;
  213. bool lro_enabled;
  214. bool sg_enabled;
  215. bool gro_enabled;
  216. bool ipa_enabled;
  217. bool ol_tx_csum_enabled;
  218. bool ol_rx_csum_enabled;
  219. bool rawmode_enabled;
  220. bool peer_flow_ctrl_enabled;
  221. bool napi_enabled;
  222. bool tcp_udp_checksumoffload;
  223. bool defrag_timeout_check;
  224. int nss_cfg;
  225. uint32_t tx_flow_stop_queue_threshold;
  226. uint32_t tx_flow_start_queue_offset;
  227. int rx_defrag_min_timeout;
  228. int reo_dst_ring_size;
  229. int wbm_release_ring;
  230. int tcl_cmd_credit_ring;
  231. int tcl_status_ring;
  232. int reo_reinject_ring;
  233. int rx_release_ring;
  234. int reo_exception_ring;
  235. int reo_cmd_ring;
  236. int reo_status_ring;
  237. int rxdma_refill_ring;
  238. int rxdma_err_dst_ring;
  239. uint32_t per_pkt_trace;
  240. bool raw_mode_war;
  241. bool enable_data_stall_detection;
  242. bool disable_intra_bss_fwd;
  243. bool rxdma1_enable;
  244. int max_ast_idx;
  245. int tx_desc_limit_0;
  246. int tx_desc_limit_1;
  247. int tx_desc_limit_2;
  248. int tx_device_limit;
  249. int tx_sw_internode_queue;
  250. int mon_drop_thresh;
  251. #ifdef WLAN_FEATURE_RX_SOFTIRQ_TIME_LIMIT
  252. uint32_t tx_comp_loop_pkt_limit;
  253. uint32_t rx_reap_loop_pkt_limit;
  254. uint32_t rx_hp_oos_update_limit;
  255. bool rx_enable_eol_data_check;
  256. bool tx_comp_enable_eol_data_check;
  257. #endif /* WLAN_FEATURE_RX_SOFTIRQ_TIME_LIMIT */
  258. int rx_sw_desc_weight;
  259. bool is_rx_mon_protocol_flow_tag_enabled;
  260. bool is_rx_flow_tag_enabled;
  261. bool is_rx_flow_search_table_per_pdev;
  262. uint16_t rx_flow_search_table_size;
  263. uint16_t rx_flow_max_search;
  264. uint8_t *rx_toeplitz_hash_key;
  265. uint8_t pktlog_buffer_size;
  266. uint8_t is_rx_fisa_enabled;
  267. };
  268. /**
  269. * struct wlan_cfg_dp_pdev_ctxt - Configuration parameters for pdev (radio)
  270. * @rx_dma_buf_ring_size - Size of RxDMA buffer ring
  271. * @dma_mon_buf_ring_size - Size of RxDMA Monitor buffer ring
  272. * @dma_mon_dest_ring_size - Size of RxDMA Monitor Destination ring
  273. * @dma_mon_status_ring_size - Size of RxDMA Monitor Status ring
  274. * @rxdma_monitor_desc_ring - rxdma monitor desc ring size
  275. */
  276. struct wlan_cfg_dp_pdev_ctxt {
  277. int rx_dma_buf_ring_size;
  278. int dma_mon_buf_ring_size;
  279. int dma_mon_dest_ring_size;
  280. int dma_mon_status_ring_size;
  281. int rxdma_monitor_desc_ring;
  282. int num_mac_rings;
  283. int nss_enabled;
  284. };
  285. /**
  286. * wlan_cfg_soc_attach() - Attach configuration interface for SoC
  287. * @ctrl_obj - PSOC object
  288. *
  289. * Allocates context for Soc configuration parameters,
  290. * Read configuration information from device tree/ini file and
  291. * returns back handle
  292. *
  293. * Return: Handle to configuration context
  294. */
  295. struct wlan_cfg_dp_soc_ctxt *
  296. wlan_cfg_soc_attach(struct cdp_ctrl_objmgr_psoc *ctrl_obj);
  297. /**
  298. * wlan_cfg_soc_detach() - Detach soc configuration handle
  299. * @wlan_cfg_ctx: soc configuration handle
  300. *
  301. * De-allocates memory allocated for SoC configuration
  302. *
  303. * Return:none
  304. */
  305. void wlan_cfg_soc_detach(struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx);
  306. /**
  307. * wlan_cfg_pdev_attach() Attach configuration interface for pdev
  308. * @ctrl_obj - PSOC object
  309. *
  310. * Allocates context for pdev configuration parameters,
  311. * Read configuration information from device tree/ini file and
  312. * returns back handle
  313. *
  314. * Return: Handle to configuration context
  315. */
  316. struct wlan_cfg_dp_pdev_ctxt *
  317. wlan_cfg_pdev_attach(struct cdp_ctrl_objmgr_psoc *ctrl_obj);
  318. /**
  319. * wlan_cfg_pdev_detach() Detach and free pdev configuration handle
  320. * @wlan_cfg_pdev_ctx - PDEV Configuration Handle
  321. *
  322. * Return: void
  323. */
  324. void wlan_cfg_pdev_detach(struct wlan_cfg_dp_pdev_ctxt *wlan_cfg_pdev_ctx);
  325. void wlan_cfg_set_num_contexts(struct wlan_cfg_dp_soc_ctxt *cfg, int num);
  326. void wlan_cfg_set_tx_ring_mask(struct wlan_cfg_dp_soc_ctxt *cfg,
  327. int context, int mask);
  328. void wlan_cfg_set_rx_ring_mask(struct wlan_cfg_dp_soc_ctxt *cfg,
  329. int context, int mask);
  330. void wlan_cfg_set_rx_mon_ring_mask(struct wlan_cfg_dp_soc_ctxt *cfg,
  331. int context, int mask);
  332. void wlan_cfg_set_ce_ring_mask(struct wlan_cfg_dp_soc_ctxt *cfg,
  333. int context, int mask);
  334. void wlan_cfg_set_rxbuf_ring_mask(struct wlan_cfg_dp_soc_ctxt *cfg, int context,
  335. int mask);
  336. void wlan_cfg_set_max_peer_id(struct wlan_cfg_dp_soc_ctxt *cfg, uint32_t val);
  337. void wlan_cfg_set_max_ast_idx(struct wlan_cfg_dp_soc_ctxt *cfg, uint32_t val);
  338. int wlan_cfg_get_max_ast_idx(struct wlan_cfg_dp_soc_ctxt *cfg);
  339. int wlan_cfg_get_mon_drop_thresh(struct wlan_cfg_dp_soc_ctxt *cfg);
  340. int wlan_cfg_set_rx_err_ring_mask(struct wlan_cfg_dp_soc_ctxt *cfg,
  341. int context, int mask);
  342. int wlan_cfg_set_rx_wbm_rel_ring_mask(struct wlan_cfg_dp_soc_ctxt *cfg,
  343. int context, int mask);
  344. int wlan_cfg_set_reo_status_ring_mask(struct wlan_cfg_dp_soc_ctxt *cfg,
  345. int context, int mask);
  346. /**
  347. * wlan_cfg_get_num_contexts() - Number of interrupt contexts to be registered
  348. * @wlan_cfg_ctx - Configuration Handle
  349. *
  350. * For WIN, DP_NUM_INTERRUPT_CONTEXTS will be equal to number of CPU cores.
  351. * Each context (for linux it is a NAPI context) will have a tx_ring_mask,
  352. * rx_ring_mask ,and rx_monitor_ring mask to indicate the rings
  353. * that are processed by the handler.
  354. *
  355. * Return: num_contexts
  356. */
  357. int wlan_cfg_get_num_contexts(struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx);
  358. /**
  359. * wlan_cfg_get_tx_ring_mask() - Return Tx interrupt mask mapped to an
  360. * interrupt context
  361. * @wlan_cfg_ctx - Configuration Handle
  362. * @context - Numerical ID identifying the Interrupt/NAPI context
  363. *
  364. * Return: int_tx_ring_mask[context]
  365. */
  366. int wlan_cfg_get_tx_ring_mask(struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx,
  367. int context);
  368. /**
  369. * wlan_cfg_get_rx_ring_mask() - Return Rx interrupt mask mapped to an
  370. * interrupt context
  371. * @wlan_cfg_ctx - Configuration Handle
  372. * @context - Numerical ID identifying the Interrupt/NAPI context
  373. *
  374. * Return: int_rx_ring_mask[context]
  375. */
  376. int wlan_cfg_get_rx_ring_mask(struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx,
  377. int context);
  378. /**
  379. * wlan_cfg_get_rx_mon_ring_mask() - Return Rx monitor ring interrupt mask
  380. * mapped to an interrupt context
  381. * @wlan_cfg_ctx - Configuration Handle
  382. * @context - Numerical ID identifying the Interrupt/NAPI context
  383. *
  384. * Return: int_rx_mon_ring_mask[context]
  385. */
  386. int wlan_cfg_get_rx_mon_ring_mask(struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx,
  387. int context);
  388. /**
  389. * wlan_cfg_set_rxdma2host_ring_mask() - Set rxdma2host ring interrupt mask
  390. * for the given interrupt context
  391. * @wlan_cfg_ctx - Configuration Handle
  392. * @context - Numerical ID identifying the Interrupt/NAPI context
  393. *
  394. */
  395. void wlan_cfg_set_rxdma2host_ring_mask(struct wlan_cfg_dp_soc_ctxt *cfg,
  396. int context, int mask);
  397. /**
  398. * wlan_cfg_get_rxdma2host_ring_mask() - Return rxdma2host ring interrupt mask
  399. * mapped to an interrupt context
  400. * @wlan_cfg_ctx - Configuration Handle
  401. * @context - Numerical ID identifying the Interrupt/NAPI context
  402. *
  403. * Return: int_rxdma2host_ring_mask[context]
  404. */
  405. int wlan_cfg_get_rxdma2host_ring_mask(struct wlan_cfg_dp_soc_ctxt *cfg,
  406. int context);
  407. /**
  408. * wlan_cfg_set_host2rxdma_ring_mask() - Set host2rxdma ring interrupt mask
  409. * for the given interrupt context
  410. * @wlan_cfg_ctx - Configuration Handle
  411. * @context - Numerical ID identifying the Interrupt/NAPI context
  412. *
  413. */
  414. void wlan_cfg_set_host2rxdma_ring_mask(struct wlan_cfg_dp_soc_ctxt *cfg,
  415. int context, int mask);
  416. /**
  417. * wlan_cfg_get_host2rxdma_ring_mask() - Return host2rxdma ring interrupt mask
  418. * mapped to an interrupt context
  419. * @wlan_cfg_ctx - Configuration Handle
  420. * @context - Numerical ID identifying the Interrupt/NAPI context
  421. *
  422. * Return: int_host2rxdma_ring_mask[context]
  423. */
  424. int wlan_cfg_get_host2rxdma_ring_mask(struct wlan_cfg_dp_soc_ctxt *cfg,
  425. int context);
  426. /**
  427. * wlan_cfg_set_host2rxdma_mon_ring_mask() - Set host2rxdma monitor ring
  428. * interrupt mask for the given interrupt context
  429. * @wlan_cfg_ctx - Configuration Handle
  430. * @context - Numerical ID identifying the Interrupt/NAPI context
  431. *
  432. */
  433. void wlan_cfg_set_host2rxdma_mon_ring_mask(struct wlan_cfg_dp_soc_ctxt *cfg,
  434. int context, int mask);
  435. /**
  436. * wlan_cfg_get_host2rxdma_mon_ring_mask() - Return host2rxdma monitoe ring
  437. * interrupt mask mapped to an interrupt context
  438. * @wlan_cfg_ctx - Configuration Handle
  439. * @context - Numerical ID identifying the Interrupt/NAPI context
  440. *
  441. * Return: int_host2rxdma_mon_ring_mask[context]
  442. */
  443. int wlan_cfg_get_host2rxdma_mon_ring_mask(struct wlan_cfg_dp_soc_ctxt *cfg,
  444. int context);
  445. /**
  446. * wlan_cfg_set_rxdma2host_mon_ring_mask() - Set rxdma2host monitor
  447. * destination ring interrupt mask
  448. * for the given interrupt context
  449. * @wlan_cfg_ctx - Configuration Handle
  450. * @context - Numerical ID identifying the Interrupt/NAPI context
  451. *
  452. */
  453. void wlan_cfg_set_rxdma2host_mon_ring_mask(struct wlan_cfg_dp_soc_ctxt *cfg,
  454. int context, int mask);
  455. /**
  456. * wlan_cfg_get_rxdma2host_mon_ring_mask() - Return rxdma2host monitor
  457. * destination ring interrupt mask
  458. * mapped to an interrupt context
  459. * @wlan_cfg_ctx - Configuration Handle
  460. * @context - Numerical ID identifying the Interrupt/NAPI context
  461. *
  462. * Return: int_rxdma2host_mon_ring_mask[context]
  463. */
  464. int wlan_cfg_get_rxdma2host_mon_ring_mask(struct wlan_cfg_dp_soc_ctxt *cfg,
  465. int context);
  466. /**
  467. * wlan_cfg_set_hw_macidx() - Set HW MAC Idx for the given PDEV index
  468. *
  469. * @wlan_cfg_ctx - Configuration Handle
  470. * @pdev_idx - Index of SW PDEV
  471. * @hw_macid - HW MAC Id
  472. *
  473. */
  474. void wlan_cfg_set_hw_mac_idx
  475. (struct wlan_cfg_dp_soc_ctxt *cfg, int pdev_idx, int hw_macid);
  476. /**
  477. * wlan_cfg_get_hw_mac_idx() - Get 0 based HW MAC index for the given
  478. * PDEV index
  479. *
  480. * @wlan_cfg_ctx - Configuration Handle
  481. * @pdev_idx - Index of SW PDEV
  482. *
  483. * Return: HW MAC index
  484. */
  485. int wlan_cfg_get_hw_mac_idx(struct wlan_cfg_dp_soc_ctxt *cfg, int pdev_idx);
  486. /**
  487. * wlan_cfg_get_target_pdev_id() - Get target PDEV ID for HW MAC ID
  488. *
  489. * @wlan_cfg_ctx - Configuration Handle
  490. * @hw_macid - Index of hw mac
  491. *
  492. * Return: PDEV ID
  493. */
  494. int
  495. wlan_cfg_get_target_pdev_id(struct wlan_cfg_dp_soc_ctxt *cfg, int hw_macid);
  496. /**
  497. * wlan_cfg_set_pdev_idx() - Set 0 based host PDEV index for the given
  498. * hw mac index
  499. *
  500. * @wlan_cfg_ctx - Configuration Handle
  501. * @pdev_idx - Index of SW PDEV
  502. * @hw_macid - Index of hw mac
  503. *
  504. * Return: PDEV index
  505. */
  506. void wlan_cfg_set_pdev_idx
  507. (struct wlan_cfg_dp_soc_ctxt *cfg, int pdev_idx, int hw_macid);
  508. /**
  509. * wlan_cfg_get_pdev_idx() - Get 0 based PDEV index for the given
  510. * hw mac index
  511. *
  512. * @wlan_cfg_ctx - Configuration Handle
  513. * @hw_macid - Index of hw mac
  514. *
  515. * Return: PDEV index
  516. */
  517. int wlan_cfg_get_pdev_idx(struct wlan_cfg_dp_soc_ctxt *cfg, int hw_macid);
  518. /**
  519. * wlan_cfg_get_rx_err_ring_mask() - Return Rx monitor ring interrupt mask
  520. * mapped to an interrupt context
  521. * @wlan_cfg_ctx - Configuration Handle
  522. * @context - Numerical ID identifying the Interrupt/NAPI context
  523. *
  524. * Return: int_rx_err_ring_mask[context]
  525. */
  526. int wlan_cfg_get_rx_err_ring_mask(struct wlan_cfg_dp_soc_ctxt *cfg, int
  527. context);
  528. /**
  529. * wlan_cfg_get_rx_wbm_rel_ring_mask() - Return Rx monitor ring interrupt mask
  530. * mapped to an interrupt context
  531. * @wlan_cfg_ctx - Configuration Handle
  532. * @context - Numerical ID identifying the Interrupt/NAPI context
  533. *
  534. * Return: int_wbm_rel_ring_mask[context]
  535. */
  536. int wlan_cfg_get_rx_wbm_rel_ring_mask(struct wlan_cfg_dp_soc_ctxt *cfg, int
  537. context);
  538. /**
  539. * wlan_cfg_get_reo_status_ring_mask() - Return Rx monitor ring interrupt mask
  540. * mapped to an interrupt context
  541. * @wlan_cfg_ctx - Configuration Handle
  542. * @context - Numerical ID identifying the Interrupt/NAPI context
  543. *
  544. * Return: int_reo_status_ring_mask[context]
  545. */
  546. int wlan_cfg_get_reo_status_ring_mask(struct wlan_cfg_dp_soc_ctxt *cfg, int
  547. context);
  548. /**
  549. * wlan_cfg_get_ce_ring_mask() - Return CE ring interrupt mask
  550. * mapped to an interrupt context
  551. * @wlan_cfg_ctx - Configuration Handle
  552. * @context - Numerical ID identifying the Interrupt/NAPI context
  553. *
  554. * Return: int_ce_ring_mask[context]
  555. */
  556. int wlan_cfg_get_ce_ring_mask(struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx,
  557. int context);
  558. /**
  559. * wlan_cfg_get_max_clients() - Return maximum number of peers/stations
  560. * supported by device
  561. * @wlan_cfg_ctx - Configuration Handle
  562. *
  563. * Return: max_clients
  564. */
  565. uint32_t wlan_cfg_get_max_clients(struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx);
  566. /**
  567. * wlan_cfg_max_alloc_size() - Return Maximum allocation size for any dynamic
  568. * memory allocation request for this device
  569. * @wlan_cfg_ctx - Configuration Handle
  570. *
  571. * Return: max_alloc_size
  572. */
  573. uint32_t wlan_cfg_max_alloc_size(struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx);
  574. /*
  575. * wlan_cfg_per_pdev_tx_ring() - Return true if Tx rings are mapped as
  576. * one per radio
  577. * @wlan_cfg_ctx - Configuration Handle
  578. *
  579. * Return: per_pdev_tx_ring
  580. */
  581. int wlan_cfg_per_pdev_tx_ring(struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx);
  582. /*
  583. * wlan_cfg_num_tcl_data_rings() - Number of TCL Data rings supported by device
  584. * @wlan_cfg_ctx
  585. *
  586. * Return: num_tcl_data_rings
  587. */
  588. int wlan_cfg_num_tcl_data_rings(struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx);
  589. /*
  590. * wlan_cfg_per_pdev_rx_ring() - Return true if Rx rings are mapped as
  591. * one per radio
  592. * @wlan_cfg_ctx
  593. *
  594. * Return: per_pdev_rx_ring
  595. */
  596. int wlan_cfg_per_pdev_rx_ring(struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx);
  597. /*
  598. * wlan_cfg_per_pdev_lmac_ring() - Return true if error rings are mapped as
  599. * one per radio
  600. * @wlan_cfg_ctx
  601. *
  602. * Return: return 1 if per pdev error ring else 0
  603. */
  604. int wlan_cfg_per_pdev_lmac_ring(struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx);
  605. /*
  606. * wlan_cfg_num_reo_dest_rings() - Number of REO Data rings supported by device
  607. * @wlan_cfg_ctx - Configuration Handle
  608. *
  609. * Return: num_reo_dest_rings
  610. */
  611. int wlan_cfg_num_reo_dest_rings(struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx);
  612. /*
  613. * wlan_cfg_pkt_type() - Default 802.11 encapsulation type
  614. * @wlan_cfg_ctx - Configuration Handle
  615. *
  616. * Return: htt_pkt_type_ethernet
  617. */
  618. int wlan_cfg_pkt_type(struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx);
  619. /*
  620. * wlan_cfg_get_num_tx_desc_pool() - Number of Tx Descriptor pools for the
  621. * device
  622. * @wlan_cfg_ctx - Configuration Handle
  623. *
  624. * Return: num_tx_desc_pool
  625. */
  626. int wlan_cfg_get_num_tx_desc_pool(struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx);
  627. /*
  628. * wlan_cfg_set_num_tx_desc_pool() - Set the number of Tx Descriptor pools for the
  629. * device
  630. * @wlan_cfg_ctx - Configuration Handle
  631. * @num_pool - Number of pool
  632. */
  633. void wlan_cfg_set_num_tx_desc_pool(struct wlan_cfg_dp_soc_ctxt *cfg, int num_pool);
  634. /*
  635. * wlan_cfg_get_num_tx_ext_desc_pool() - Number of Tx MSDU ext Descriptor
  636. * pools
  637. * @wlan_cfg_ctx - Configuration Handle
  638. *
  639. * Return: num_tx_ext_desc_pool
  640. */
  641. int wlan_cfg_get_num_tx_ext_desc_pool(
  642. struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx);
  643. /*
  644. * wlan_cfg_get_reo_dst_ring_size() - Get REO destination ring size
  645. *
  646. * @wlan_cfg_ctx - Configuration Handle
  647. *
  648. * Return: reo_dst_ring_size
  649. */
  650. int wlan_cfg_get_reo_dst_ring_size(struct wlan_cfg_dp_soc_ctxt *cfg);
  651. /*
  652. * wlan_cfg_set_num_tx_desc_pool() - Set the REO Destination ring size
  653. *
  654. * @wlan_cfg_ctx - Configuration Handle
  655. * @reo_dst_ring_size - REO Destination ring size
  656. */
  657. void wlan_cfg_set_reo_dst_ring_size(struct wlan_cfg_dp_soc_ctxt *cfg,
  658. int reo_dst_ring_size);
  659. /*
  660. * wlan_cfg_set_raw_mode_war() - Set raw mode war configuration
  661. *
  662. * @wlan_cfg_ctx - Configuration Handle
  663. * @raw_mode_war - raw mode war configuration
  664. */
  665. void wlan_cfg_set_raw_mode_war(struct wlan_cfg_dp_soc_ctxt *cfg,
  666. bool raw_mode_war);
  667. /*
  668. * wlan_cfg_get_raw_mode_war() - Get raw mode war configuration
  669. *
  670. * @wlan_cfg_ctx - Configuration Handle
  671. *
  672. * Return: reo_dst_ring_size
  673. */
  674. bool wlan_cfg_get_raw_mode_war(struct wlan_cfg_dp_soc_ctxt *cfg);
  675. /*
  676. * wlan_cfg_set_num_tx_ext_desc_pool() - Set the number of Tx MSDU ext Descriptor
  677. * pools
  678. * @wlan_cfg_ctx - Configuration Handle
  679. * @num_pool - Number of pool
  680. */
  681. void wlan_cfg_set_num_tx_ext_desc_pool(struct wlan_cfg_dp_soc_ctxt *cfg, int num_pool);
  682. /*
  683. * wlan_cfg_get_num_tx_desc() - Number of Tx Descriptors per pool
  684. * @wlan_cfg_ctx - Configuration Handle
  685. *
  686. * Return: num_tx_desc
  687. */
  688. int wlan_cfg_get_num_tx_desc(struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx);
  689. /*
  690. * wlan_cfg_get_min_tx_desc() - Minimum number of Tx Descriptors per pool
  691. * @wlan_cfg_ctx - Configuration Handle
  692. *
  693. * Return: num_tx_desc
  694. */
  695. int wlan_cfg_get_min_tx_desc(struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx);
  696. /*
  697. * wlan_cfg_set_num_tx_desc() - Set the number of Tx Descriptors per pool
  698. *
  699. * @wlan_cfg_ctx - Configuration Handle
  700. * @num_desc: Number of descriptor
  701. */
  702. void wlan_cfg_set_num_tx_desc(struct wlan_cfg_dp_soc_ctxt *cfg, int num_desc);
  703. /*
  704. * wlan_cfg_get_num_tx_ext_desc() - Number of Tx MSDU extension Descriptors
  705. * per pool
  706. * @wlan_cfg_ctx - Configuration Handle
  707. *
  708. * Return: num_tx_ext_desc
  709. */
  710. int wlan_cfg_get_num_tx_ext_desc(struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx);
  711. /*
  712. * wlan_cfg_set_num_tx_ext_desc() - Set the number of Tx MSDU extension Descriptors
  713. * per pool
  714. * @wlan_cfg_ctx - Configuration Handle
  715. * @num_desc: Number of descriptor
  716. */
  717. void wlan_cfg_set_num_tx_ext_desc(struct wlan_cfg_dp_soc_ctxt *cfg, int num_ext_desc);
  718. /*
  719. * wlan_cfg_max_peer_id() - Get maximum peer ID
  720. * @cfg: Configuration Handle
  721. *
  722. * Return: maximum peer ID
  723. */
  724. uint32_t wlan_cfg_max_peer_id(struct wlan_cfg_dp_soc_ctxt *cfg);
  725. /*
  726. * wlan_cfg_get_dma_mon_buf_ring_size() - Return Size of monitor buffer ring
  727. * @wlan_cfg_pdev_ctx
  728. *
  729. * Return: dma_mon_buf_ring_size
  730. */
  731. int wlan_cfg_get_dma_mon_buf_ring_size(
  732. struct wlan_cfg_dp_pdev_ctxt *wlan_cfg_pdev_ctx);
  733. /*
  734. * wlan_cfg_get_dma_mon_dest_ring_size() - Return Size of RxDMA Monitor
  735. * Destination ring
  736. * @wlan_cfg_pdev_ctx
  737. *
  738. * Return: dma_mon_dest_size
  739. */
  740. int wlan_cfg_get_dma_mon_dest_ring_size(
  741. struct wlan_cfg_dp_pdev_ctxt *wlan_cfg_pdev_ctx);
  742. /*
  743. * wlan_cfg_get_dma_mon_stat_ring_size() - Return size of Monitor Status ring
  744. * @wlan_cfg_pdev_ctx
  745. *
  746. * Return: dma_mon_stat_ring_size
  747. */
  748. int wlan_cfg_get_dma_mon_stat_ring_size(
  749. struct wlan_cfg_dp_pdev_ctxt *wlan_cfg_pdev_ctx);
  750. /*
  751. * wlan_cfg_get_dma_mon_desc_ring_size - Get rxdma monitor size
  752. * @wlan_cfg_soc_ctx
  753. *
  754. * Return: rxdma monitor desc ring size
  755. */
  756. int
  757. wlan_cfg_get_dma_mon_desc_ring_size(struct wlan_cfg_dp_pdev_ctxt *cfg);
  758. /*
  759. * wlan_cfg_get_rx_dma_buf_ring_size() - Return Size of RxDMA buffer ring
  760. * @wlan_cfg_pdev_ctx
  761. *
  762. * Return: rx_dma_buf_ring_size
  763. */
  764. int wlan_cfg_get_rx_dma_buf_ring_size(
  765. struct wlan_cfg_dp_pdev_ctxt *wlan_cfg_pdev_ctx);
  766. /*
  767. * wlan_cfg_get_num_mac_rings() - Return the number of MAC RX DMA rings
  768. * per pdev
  769. * @wlan_cfg_pdev_ctx
  770. *
  771. * Return: number of mac DMA rings per pdev
  772. */
  773. int wlan_cfg_get_num_mac_rings(struct wlan_cfg_dp_pdev_ctxt *cfg);
  774. /*
  775. * wlan_cfg_is_lro_enabled - Return LRO enabled/disabled
  776. * @wlan_cfg_dp_soc_ctxt
  777. *
  778. * Return: true - LRO enabled false - LRO disabled
  779. */
  780. bool wlan_cfg_is_lro_enabled(struct wlan_cfg_dp_soc_ctxt *cfg);
  781. /*
  782. * wlan_cfg_is_gro_enabled - Return GRO enabled/disabled
  783. * @wlan_cfg_dp_soc_ctxt
  784. *
  785. * Return: true - GRO enabled false - GRO disabled
  786. */
  787. bool wlan_cfg_is_gro_enabled(struct wlan_cfg_dp_soc_ctxt *cfg);
  788. /*
  789. * wlan_cfg_is_rx_hash_enabled - Return RX hash enabled/disabled
  790. * @wlan_cfg_dp_soc_ctxt
  791. *
  792. * Return: true - enabled false - disabled
  793. */
  794. bool wlan_cfg_is_rx_hash_enabled(struct wlan_cfg_dp_soc_ctxt *cfg);
  795. /*
  796. * wlan_cfg_is_ipa_enabled - Return IPA enabled/disabled
  797. * @wlan_cfg_dp_soc_ctxt
  798. *
  799. * Return: true - enabled false - disabled
  800. */
  801. bool wlan_cfg_is_ipa_enabled(struct wlan_cfg_dp_soc_ctxt *cfg);
  802. /*
  803. * wlan_cfg_set_rx_hash - set rx hash enabled/disabled
  804. * @wlan_cfg_soc_ctx
  805. * @rx_hash
  806. */
  807. void wlan_cfg_set_rx_hash(struct wlan_cfg_dp_soc_ctxt *cfg, bool rx_hash);
  808. /*
  809. * wlan_cfg_get_dp_pdev_nss_enabled - Return pdev nss enabled/disabled
  810. * @wlan_cfg_pdev_ctx
  811. *
  812. * Return: 1 - enabled 0 - disabled
  813. */
  814. int wlan_cfg_get_dp_pdev_nss_enabled(struct wlan_cfg_dp_pdev_ctxt *cfg);
  815. /*
  816. * wlan_cfg_set_dp_pdev_nss_enabled - set pdev nss enabled/disabled
  817. * @wlan_cfg_pdev_ctx
  818. */
  819. void wlan_cfg_set_dp_pdev_nss_enabled(struct wlan_cfg_dp_pdev_ctxt *cfg, int nss_enabled);
  820. /*
  821. * wlan_cfg_get_dp_soc_nss_cfg - Return soc nss config
  822. * @wlan_cfg_pdev_ctx
  823. *
  824. * Return: nss_cfg
  825. */
  826. int wlan_cfg_get_dp_soc_nss_cfg(struct wlan_cfg_dp_soc_ctxt *cfg);
  827. /*
  828. * wlan_cfg_set_dp_soc_nss_cfg - set soc nss config
  829. * @wlan_cfg_pdev_ctx
  830. *
  831. */
  832. void wlan_cfg_set_dp_soc_nss_cfg(struct wlan_cfg_dp_soc_ctxt *cfg, int nss_cfg);
  833. /*
  834. * wlan_cfg_get_int_batch_threshold_tx - Get interrupt mitigation cfg for Tx
  835. * @wlan_cfg_soc_ctx
  836. *
  837. * Return: Batch threshold
  838. */
  839. int wlan_cfg_get_int_batch_threshold_tx(struct wlan_cfg_dp_soc_ctxt *cfg);
  840. /*
  841. * wlan_cfg_get_int_timer_threshold_tx - Get interrupt mitigation cfg for Tx
  842. * @wlan_cfg_soc_ctx
  843. *
  844. * Return: Timer threshold
  845. */
  846. int wlan_cfg_get_int_timer_threshold_tx(struct wlan_cfg_dp_soc_ctxt *cfg);
  847. /*
  848. * wlan_cfg_get_int_batch_threshold_rx - Get interrupt mitigation cfg for Rx
  849. * @wlan_cfg_soc_ctx
  850. *
  851. * Return: Batch threshold
  852. */
  853. int wlan_cfg_get_int_batch_threshold_rx(struct wlan_cfg_dp_soc_ctxt *cfg);
  854. /*
  855. * wlan_cfg_get_int_batch_threshold_rx - Get interrupt mitigation cfg for Rx
  856. * @wlan_cfg_soc_ctx
  857. *
  858. * Return: Timer threshold
  859. */
  860. int wlan_cfg_get_int_timer_threshold_rx(struct wlan_cfg_dp_soc_ctxt *cfg);
  861. /*
  862. * wlan_cfg_get_int_batch_threshold_tx - Get interrupt mitigation cfg for other srngs
  863. * @wlan_cfg_soc_ctx
  864. *
  865. * Return: Batch threshold
  866. */
  867. int wlan_cfg_get_int_batch_threshold_other(struct wlan_cfg_dp_soc_ctxt *cfg);
  868. /*
  869. * wlan_cfg_get_int_batch_threshold_tx - Get interrupt mitigation cfg for other srngs
  870. * @wlan_cfg_soc_ctx
  871. *
  872. * Return: Timer threshold
  873. */
  874. int wlan_cfg_get_int_timer_threshold_other(struct wlan_cfg_dp_soc_ctxt *cfg);
  875. /*
  876. * wlan_cfg_get_int_timer_threshold_mon - Get int mitigation cfg for mon srngs
  877. * @wlan_cfg_soc_ctx
  878. *
  879. * Return: Timer threshold
  880. */
  881. int wlan_cfg_get_int_timer_threshold_mon(struct wlan_cfg_dp_soc_ctxt *cfg);
  882. /*
  883. * wlan_cfg_get_checksum_offload - Get checksum offload enable or disable status
  884. * @wlan_cfg_soc_ctx
  885. *
  886. * Return: Checksum offload enable or disable
  887. */
  888. int wlan_cfg_get_checksum_offload(struct wlan_cfg_dp_soc_ctxt *cfg);
  889. /*
  890. * wlan_cfg_tx_ring_size - Get Tx DMA ring size (TCL Data Ring)
  891. * @wlan_cfg_soc_ctx
  892. *
  893. * Return: Tx Ring Size
  894. */
  895. int wlan_cfg_tx_ring_size(struct wlan_cfg_dp_soc_ctxt *cfg);
  896. /*
  897. * wlan_cfg_tx_comp_ring_size - Get Tx completion ring size (WBM Ring)
  898. * @wlan_cfg_soc_ctx
  899. *
  900. * Return: Tx Completion ring size
  901. */
  902. int wlan_cfg_tx_comp_ring_size(struct wlan_cfg_dp_soc_ctxt *cfg);
  903. /*
  904. * wlan_cfg_get_dp_soc_wbm_release_ring_size - Get wbm_release_ring size
  905. * @wlan_cfg_soc_ctx
  906. *
  907. * Return: wbm_release_ring size
  908. */
  909. int
  910. wlan_cfg_get_dp_soc_wbm_release_ring_size(struct wlan_cfg_dp_soc_ctxt *cfg);
  911. /*
  912. * wlan_cfg_get_dp_soc_tcl_cmd_credit_ring_size - Get command/credit ring size
  913. * @wlan_cfg_soc_ctx
  914. *
  915. * Return: tcl_cmd_credit_ring size
  916. */
  917. int
  918. wlan_cfg_get_dp_soc_tcl_cmd_credit_ring_size(struct wlan_cfg_dp_soc_ctxt *cfg);
  919. /*
  920. * wlan_cfg_get_dp_soc_tcl_status_ring_size - Get tcl_status_ring size
  921. * @wlan_cfg_soc_ctx
  922. *
  923. * Return: tcl_status_ring size
  924. */
  925. int
  926. wlan_cfg_get_dp_soc_tcl_status_ring_size(struct wlan_cfg_dp_soc_ctxt *cfg);
  927. /*
  928. * wlan_cfg_get_dp_soc_reo_reinject_ring_size - Get reo_reinject_ring size
  929. * @wlan_cfg_soc_ctx
  930. *
  931. * Return: reo_reinject_ring size
  932. */
  933. int
  934. wlan_cfg_get_dp_soc_reo_reinject_ring_size(struct wlan_cfg_dp_soc_ctxt *cfg);
  935. /*
  936. * wlan_cfg_get_dp_soc_rx_release_ring_size - Get rx_release_ring size
  937. * @wlan_cfg_soc_ctx
  938. *
  939. * Return: rx_release_ring size
  940. */
  941. int
  942. wlan_cfg_get_dp_soc_rx_release_ring_size(struct wlan_cfg_dp_soc_ctxt *cfg);
  943. /*
  944. * wlan_cfg_get_dp_soc_reo_exception_ring_size - Get reo_exception_ring size
  945. * @wlan_cfg_soc_ctx
  946. *
  947. * Return: reo_exception_ring size
  948. */
  949. int
  950. wlan_cfg_get_dp_soc_reo_exception_ring_size(struct wlan_cfg_dp_soc_ctxt *cfg);
  951. /*
  952. * wlan_cfg_get_dp_soc_reo_cmd_ring_size - Get reo_cmd_ring size
  953. * @wlan_cfg_soc_ctx
  954. *
  955. * Return: reo_cmd_ring size
  956. */
  957. int
  958. wlan_cfg_get_dp_soc_reo_cmd_ring_size(struct wlan_cfg_dp_soc_ctxt *cfg);
  959. /*
  960. * wlan_cfg_get_dp_soc_reo_status_ring_size - Get reo_status_ring size
  961. * @wlan_cfg_soc_ctx
  962. *
  963. * Return: reo_status_ring size
  964. */
  965. int
  966. wlan_cfg_get_dp_soc_reo_status_ring_size(struct wlan_cfg_dp_soc_ctxt *cfg);
  967. /*
  968. * wlan_cfg_get_dp_soc_tx_desc_limit_0 - Get tx desc limit for 5G H
  969. * @wlan_cfg_soc_ctx
  970. *
  971. * Return: tx desc limit for 5G H
  972. */
  973. int
  974. wlan_cfg_get_dp_soc_tx_desc_limit_0(struct wlan_cfg_dp_soc_ctxt *cfg);
  975. /*
  976. * wlan_cfg_get_dp_soc_tx_desc_limit_1 - Get tx desc limit for 2G
  977. * @wlan_cfg_soc_ctx
  978. *
  979. * Return: tx desc limit for 2G
  980. */
  981. int
  982. wlan_cfg_get_dp_soc_tx_desc_limit_1(struct wlan_cfg_dp_soc_ctxt *cfg);
  983. /*
  984. * wlan_cfg_get_dp_soc_tx_desc_limit_2 - Get tx desc limit for 5G L
  985. * @wlan_cfg_soc_ctx
  986. *
  987. * Return: tx desc limit for 5G L
  988. */
  989. int
  990. wlan_cfg_get_dp_soc_tx_desc_limit_2(struct wlan_cfg_dp_soc_ctxt *cfg);
  991. /*
  992. * wlan_cfg_get_dp_soc_tx_device_limit - Get tx device limit
  993. * @wlan_cfg_soc_ctx
  994. *
  995. * Return: tx device limit
  996. */
  997. int
  998. wlan_cfg_get_dp_soc_tx_device_limit(struct wlan_cfg_dp_soc_ctxt *cfg);
  999. /*
  1000. * wlan_cfg_get_dp_soc_tx_sw_internode_queue - Get tx sw internode queue
  1001. * @wlan_cfg_soc_ctx
  1002. *
  1003. * Return: tx sw internode queue
  1004. */
  1005. int
  1006. wlan_cfg_get_dp_soc_tx_sw_internode_queue(struct wlan_cfg_dp_soc_ctxt *cfg);
  1007. /*
  1008. * wlan_cfg_get_dp_soc_rxdma_refill_ring_size - Get rxdma refill ring size
  1009. * @wlan_cfg_soc_ctx
  1010. *
  1011. * Return: rxdma refill ring size
  1012. */
  1013. int
  1014. wlan_cfg_get_dp_soc_rxdma_refill_ring_size(struct wlan_cfg_dp_soc_ctxt *cfg);
  1015. /*
  1016. * wlan_cfg_get_dp_soc_rxdma_err_dst_ring_size - Get rxdma dst ring size
  1017. * @wlan_cfg_soc_ctx
  1018. *
  1019. * Return: rxdma error dst ring size
  1020. */
  1021. int
  1022. wlan_cfg_get_dp_soc_rxdma_err_dst_ring_size(struct wlan_cfg_dp_soc_ctxt *cfg);
  1023. /*
  1024. * wlan_cfg_get_dp_soc_rx_sw_desc_weight - Get rx sw desc weight
  1025. * @wlan_cfg_soc_ctx
  1026. *
  1027. * Return: rx_sw_desc_weight
  1028. */
  1029. int
  1030. wlan_cfg_get_dp_soc_rx_sw_desc_weight(struct wlan_cfg_dp_soc_ctxt *cfg);
  1031. /*
  1032. * wlan_cfg_get_dp_caps - Get dp capablities
  1033. * @wlan_cfg_soc_ctx
  1034. * @dp_caps: enum for dp capablities
  1035. *
  1036. * Return: bool if a dp capabilities is enabled
  1037. */
  1038. bool
  1039. wlan_cfg_get_dp_caps(struct wlan_cfg_dp_soc_ctxt *cfg,
  1040. enum cdp_capabilities dp_caps);
  1041. /**
  1042. * wlan_set_srng_cfg() - Fill per ring specific
  1043. * configuration parameters
  1044. * @wlan_cfg: global srng configuration table
  1045. *
  1046. * Return: None
  1047. */
  1048. void wlan_set_srng_cfg(struct wlan_srng_cfg **wlan_cfg);
  1049. #ifdef QCA_LL_TX_FLOW_CONTROL_V2
  1050. int wlan_cfg_get_tx_flow_stop_queue_th(struct wlan_cfg_dp_soc_ctxt *cfg);
  1051. int wlan_cfg_get_tx_flow_start_queue_offset(struct wlan_cfg_dp_soc_ctxt *cfg);
  1052. #endif /* QCA_LL_TX_FLOW_CONTROL_V2 */
  1053. int wlan_cfg_get_rx_defrag_min_timeout(struct wlan_cfg_dp_soc_ctxt *cfg);
  1054. int wlan_cfg_get_defrag_timeout_check(struct wlan_cfg_dp_soc_ctxt *cfg);
  1055. /**
  1056. * wlan_cfg_get_rx_flow_search_table_size() - Return the size of Rx FST
  1057. * in number of entries
  1058. *
  1059. * @wlan_cfg_dp_soc_ctxt: soc configuration context
  1060. *
  1061. * Return: rx_fst_size
  1062. */
  1063. uint16_t
  1064. wlan_cfg_get_rx_flow_search_table_size(struct wlan_cfg_dp_soc_ctxt *cfg);
  1065. /**
  1066. * wlan_cfg_rx_fst_get_max_search() - Return the max skid length for FST search
  1067. *
  1068. * @wlan_cfg_dp_soc_ctxt: soc configuration context
  1069. *
  1070. * Return: max_search
  1071. */
  1072. uint8_t wlan_cfg_rx_fst_get_max_search(struct wlan_cfg_dp_soc_ctxt *cfg);
  1073. /**
  1074. * wlan_cfg_rx_fst_get_hash_key() - Return Toeplitz Hash Key used for FST
  1075. * search
  1076. *
  1077. * @wlan_cfg_dp_soc_ctxt: soc configuration context
  1078. *
  1079. * Return: 320-bit Hash Key
  1080. */
  1081. uint8_t *wlan_cfg_rx_fst_get_hash_key(struct wlan_cfg_dp_soc_ctxt *cfg);
  1082. /**
  1083. * wlan_cfg_set_rx_flow_tag_enabled() - set rx flow tag enabled flag in
  1084. * DP soc context
  1085. * @wlan_cfg_dp_soc_ctxt: soc configuration context
  1086. * @val: Rx flow tag feature flag value
  1087. *
  1088. * Return: None
  1089. */
  1090. void wlan_cfg_set_rx_flow_tag_enabled(struct wlan_cfg_dp_soc_ctxt *cfg,
  1091. bool val);
  1092. /**
  1093. * wlan_cfg_is_rx_flow_tag_enabled() - get rx flow tag enabled flag from
  1094. * DP soc context
  1095. * @wlan_cfg_dp_soc_ctxt: soc configuration context
  1096. *
  1097. * Return: true if feature is enabled, else false
  1098. */
  1099. bool wlan_cfg_is_rx_flow_tag_enabled(struct wlan_cfg_dp_soc_ctxt *cfg);
  1100. /**
  1101. * wlan_cfg_set_rx_flow_search_table_per_pdev() - Set flag to indicate that
  1102. * Rx FST is per pdev
  1103. * @wlan_cfg_dp_soc_ctxt: soc configuration context
  1104. * @val: boolean flag indicating Rx FST per pdev or per SOC
  1105. *
  1106. * Return: None
  1107. */
  1108. void
  1109. wlan_cfg_set_rx_flow_search_table_per_pdev(struct wlan_cfg_dp_soc_ctxt *cfg,
  1110. bool val);
  1111. /**
  1112. * wlan_cfg_is_rx_flow_search_table_per_pdev() - get RX FST flag for per pdev
  1113. * @wlan_cfg_dp_soc_ctxt: soc configuration context
  1114. *
  1115. * Return: true if Rx FST is per pdev, else false
  1116. */
  1117. bool
  1118. wlan_cfg_is_rx_flow_search_table_per_pdev(struct wlan_cfg_dp_soc_ctxt *cfg);
  1119. /**
  1120. * wlan_cfg_set_rx_flow_search_table_size() - set RX FST size in DP SoC context
  1121. * @wlan_cfg_dp_soc_ctxt: soc configuration context
  1122. * @val: Rx FST size in number of entries
  1123. *
  1124. * Return: None
  1125. */
  1126. void
  1127. wlan_cfg_set_rx_flow_search_table_size(struct wlan_cfg_dp_soc_ctxt *cfg,
  1128. uint16_t val);
  1129. /**
  1130. * wlan_cfg_set_rx_mon_protocol_flow_tag_enabled() - set mon rx tag enabled flag
  1131. * in DP soc context
  1132. * @wlan_cfg_dp_soc_ctxt: soc configuration context
  1133. * @val: Rx protocol or flow tag feature flag value in monitor mode from INI
  1134. *
  1135. * Return: None
  1136. */
  1137. void
  1138. wlan_cfg_set_rx_mon_protocol_flow_tag_enabled(struct wlan_cfg_dp_soc_ctxt *cfg,
  1139. bool val);
  1140. /**
  1141. * wlan_cfg_is_rx_mon_protocol_flow_tag_enabled() - get mon rx tag enabled flag
  1142. * from DP soc context
  1143. * @wlan_cfg_dp_soc_ctxt: soc configuration context
  1144. *
  1145. * Return: true if feature is enabled in monitor mode for protocol or flow
  1146. * tagging in INI, false otherwise
  1147. */
  1148. bool
  1149. wlan_cfg_is_rx_mon_protocol_flow_tag_enabled(struct wlan_cfg_dp_soc_ctxt *cfg);
  1150. /**
  1151. * wlan_cfg_fill_interrupt_mask() - set interrupt mask
  1152. *
  1153. * @wlan_cfg_dp_soc_ctxt: soc configuration context
  1154. * @interrupt_mode: interrupt_mode: MSI/LEGACY
  1155. * @is_monitor_mode: is monitor mode enabled
  1156. *
  1157. * Return: void
  1158. */
  1159. void wlan_cfg_fill_interrupt_mask(struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx,
  1160. int interrupt_mode, bool is_monitor_mode);
  1161. /**
  1162. * wlan_cfg_is_rx_fisa_enabled() - Get Rx FISA enabled flag
  1163. *
  1164. *
  1165. * @cfg: soc configuration context
  1166. *
  1167. * Return: true if enabled, false otherwise.
  1168. */
  1169. bool wlan_cfg_is_rx_fisa_enabled(struct wlan_cfg_dp_soc_ctxt *cfg);
  1170. #endif