1 /*
2  * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. 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 
19 #ifndef WLAN_DP_CFG_H__
20 #define WLAN_DP_CFG_H__
21 
22 #define CFG_DP_RPS_RX_QUEUE_CPU_MAP_LIST_LEN 30
23 
24 #ifdef CONFIG_DP_TRACE
25 /* Max length of gDptraceConfig string. e.g.- "1, 6, 1, 62" */
26 #define DP_TRACE_CONFIG_STRING_LENGTH		(20)
27 
28 /* At max 4 DP Trace config parameters are allowed. Refer - gDptraceConfig */
29 #define DP_TRACE_CONFIG_NUM_PARAMS		(4)
30 
31 /*
32  * Default value of live mode in case it cannot be determined from cfg string
33  * gDptraceConfig
34  */
35 #define DP_TRACE_CONFIG_DEFAULT_LIVE_MODE	(1)
36 
37 /*
38  * Default value of thresh (packets/second) beyond which DP Trace is disabled.
39  * Use this default in case the value cannot be determined from cfg string
40  * gDptraceConfig
41  */
42 #define DP_TRACE_CONFIG_DEFAULT_THRESH		(6)
43 
44 /*
45  * Number of intervals of BW timer to wait before enabling/disabling DP Trace.
46  * Since throughput threshold to disable live logging for DP Trace is very low,
47  * we calculate throughput based on # packets received in a second.
48  * For example assuming bandwidth timer interval is 100ms, and if more than 6
49  * prints are received in 10 * 100 ms interval, we want to disable DP Trace
50  * live logging. DP_TRACE_CONFIG_DEFAULT_THRESH_TIME_LIMIT is the default
51  * value, to be used in case the real value cannot be derived from
52  * bw timer interval
53  */
54 #define DP_TRACE_CONFIG_DEFAULT_THRESH_TIME_LIMIT (10)
55 
56 /* Default proto bitmap in case its missing in gDptraceConfig string */
57 #define DP_TRACE_CONFIG_DEFAULT_BITMAP \
58 			(QDF_NBUF_PKT_TRAC_TYPE_EAPOL |\
59 			QDF_NBUF_PKT_TRAC_TYPE_DHCP |\
60 			QDF_NBUF_PKT_TRAC_TYPE_MGMT_ACTION |\
61 			QDF_NBUF_PKT_TRAC_TYPE_ARP |\
62 			QDF_NBUF_PKT_TRAC_TYPE_ICMP |\
63 			QDF_NBUF_PKT_TRAC_TYPE_ICMPv6)\
64 
65 /* Default verbosity, in case its missing in gDptraceConfig string*/
66 #define DP_TRACE_CONFIG_DEFAULT_VERBOSTY QDF_DP_TRACE_VERBOSITY_LOW
67 
68 #endif
69 
70 #define CFG_ENABLE_RX_THREAD		BIT(0)
71 #define CFG_ENABLE_RPS			BIT(1)
72 #define CFG_ENABLE_NAPI			BIT(2)
73 #define CFG_ENABLE_DYNAMIC_RPS		BIT(3)
74 #define CFG_ENABLE_DP_RX_THREADS	BIT(4)
75 #define CFG_RX_MODE_MAX (CFG_ENABLE_RX_THREAD | \
76 					  CFG_ENABLE_RPS | \
77 					  CFG_ENABLE_NAPI | \
78 					  CFG_ENABLE_DYNAMIC_RPS | \
79 					  CFG_ENABLE_DP_RX_THREADS)
80 #ifdef MDM_PLATFORM
81 #define CFG_RX_MODE_DEFAULT 0
82 #elif defined(HELIUMPLUS)
83 #define CFG_RX_MODE_DEFAULT CFG_ENABLE_NAPI
84 #endif
85 
86 #ifndef CFG_RX_MODE_DEFAULT
87 #if defined(FEATURE_WLAN_DP_RX_THREADS)
88 #define CFG_RX_MODE_DEFAULT (CFG_ENABLE_DP_RX_THREADS | CFG_ENABLE_NAPI)
89 #else
90 #define CFG_RX_MODE_DEFAULT (CFG_ENABLE_RX_THREAD | CFG_ENABLE_NAPI)
91 #endif
92 #endif
93 
94 /* Max # of packets to be processed in 1 tx comp loop */
95 #define CFG_DP_TX_COMP_LOOP_PKT_LIMIT_DEFAULT 64
96 #define CFG_DP_TX_COMP_LOOP_PKT_LIMIT_MAX (1024 * 1024)
97 
98 /*Max # of packets to be processed in 1 rx reap loop */
99 #define CFG_DP_RX_REAP_LOOP_PKT_LIMIT_DEFAULT 64
100 #define CFG_DP_RX_REAP_LOOP_PKT_LIMIT_MAX (1024 * 1024)
101 
102 /* Max # of HP OOS (out of sync) updates */
103 #define CFG_DP_RX_HP_OOS_UPDATE_LIMIT_DEFAULT 0
104 #define CFG_DP_RX_HP_OOS_UPDATE_LIMIT_MAX 1024
105 
106 /* Max Yield time duration for RX Softirq */
107 #define CFG_DP_RX_SOFTIRQ_MAX_YIELD_TIME_NS_DEFAULT (500 * 1000)
108 #define CFG_DP_RX_SOFTIRQ_MAX_YIELD_TIME_NS_MAX (10 * 1000 * 1000)
109 
110 #ifdef WLAN_FEATURE_DP_BUS_BANDWIDTH
111 /*
112  * <ini>
113  * gBusBandwidthSuperHighThreshold - bus bandwidth super high threshold
114  *
115  * @Min: 0
116  * @Max: 4294967295UL
117  * @Default: 22000
118  *
119  * This ini specifies the bus bandwidth super high threshold
120  *
121  * Usage: Internal
122  *
123  * </ini>
124  */
125 #define CFG_DP_BUS_BANDWIDTH_SUPER_HIGH_THRESHOLD \
126 		CFG_INI_UINT( \
127 		"gBusBandwidthSuperHighThreshold", \
128 		0, \
129 		4294967295UL, \
130 		22000, \
131 		CFG_VALUE_OR_DEFAULT, \
132 		"Bus bandwidth super high threshold")
133 
134 /*
135  * <ini>
136  * gBusBandwidthUltraHighThreshold - bus bandwidth ultra high threshold
137  *
138  * @Min: 0
139  * @Max: 4294967295UL
140  * @Default: 12000
141  *
142  * This ini specifies the bus bandwidth very high threshold
143  *
144  * Usage: Internal
145  *
146  * </ini>
147  */
148 #define CFG_DP_BUS_BANDWIDTH_ULTRA_HIGH_THRESHOLD \
149 		CFG_INI_UINT( \
150 		"gBusBandwidthUltraHighThreshold", \
151 		0, \
152 		4294967295UL, \
153 		12000, \
154 		CFG_VALUE_OR_DEFAULT, \
155 		"Bus bandwidth ultra high threshold")
156 
157 /*
158  * <ini>
159  * gBusBandwidthVeryHighThreshold - bus bandwidth very high threshold
160  *
161  * @Min: 0
162  * @Max: 4294967295UL
163  * @Default: 10000
164  *
165  * This ini specifies the bus bandwidth very high threshold
166  *
167  * Usage: Internal
168  *
169  * </ini>
170  */
171 #define CFG_DP_BUS_BANDWIDTH_VERY_HIGH_THRESHOLD \
172 		CFG_INI_UINT( \
173 		"gBusBandwidthVeryHighThreshold", \
174 		0, \
175 		4294967295UL, \
176 		10000, \
177 		CFG_VALUE_OR_DEFAULT, \
178 		"Bus bandwidth very high threshold")
179 
180 /*
181  * <ini>
182  * gBusBandwidthMidHighThreshold - bus bandwidth high HE cases threshold
183  *
184  * @Min: 0
185  * @Max: 4294967295UL
186  * @Default: 0
187  *
188  * This ini specifies the bus bandwidth high HE cases threshold
189  *
190  * Usage: Internal
191  *
192  * </ini>
193  */
194 #define CFG_DP_BUS_BANDWIDTH_MID_HIGH_THRESHOLD \
195 		CFG_INI_UINT( \
196 		"gBusBandwidthMidHighThreshold", \
197 		0, \
198 		4294967295UL, \
199 		0, \
200 		CFG_VALUE_OR_DEFAULT, \
201 		"Bus bandwidth high threshold")
202 
203 /*
204  * <ini>
205  * gBusBandwidthDBSThreshold - bus bandwidth for DBS mode threshold
206  *
207  * @Min: 0
208  * @Max: 4294967295UL
209  * @Default: 6000
210  *
211  * This ini specifies the bus bandwidth high threshold
212  *
213  * Usage: Internal
214  *
215  * </ini>
216  */
217 #define CFG_DP_BUS_BANDWIDTH_DBS_THRESHOLD \
218 		CFG_INI_UINT( \
219 		"gBusBandwidthDBSThreshold", \
220 		0, \
221 		4294967295UL, \
222 		6000, \
223 		CFG_VALUE_OR_DEFAULT, \
224 		"Bus bandwidth DBS mode threshold")
225 /*
226  * <ini>
227  * gBusBandwidthHighThreshold - bus bandwidth high threshold
228  *
229  * @Min: 0
230  * @Max: 4294967295UL
231  * @Default: 2000
232  *
233  * This ini specifies the bus bandwidth high threshold
234  *
235  * Usage: Internal
236  *
237  * </ini>
238  */
239 #define CFG_DP_BUS_BANDWIDTH_HIGH_THRESHOLD \
240 		CFG_INI_UINT( \
241 		"gBusBandwidthHighThreshold", \
242 		0, \
243 		4294967295UL, \
244 		2000, \
245 		CFG_VALUE_OR_DEFAULT, \
246 		"Bus bandwidth high threshold")
247 
248 /*
249  * <ini>
250  * gBusBandwidthMediumThreshold - bus bandwidth medium threshold
251  *
252  * @Min: 0
253  * @Max: 4294967295UL
254  * @Default: 500
255  *
256  * This ini specifies the bus bandwidth medium threshold
257  *
258  * Usage: Internal
259  *
260  * </ini>
261  */
262 #define CFG_DP_BUS_BANDWIDTH_MEDIUM_THRESHOLD \
263 		CFG_INI_UINT( \
264 		"gBusBandwidthMediumThreshold", \
265 		0, \
266 		4294967295UL, \
267 		500, \
268 		CFG_VALUE_OR_DEFAULT, \
269 		"Bus bandwidth medium threshold")
270 
271 /*
272  * <ini>
273  * gBusBandwidthLowThreshold - bus bandwidth low threshold
274  *
275  * @Min: 0
276  * @Max: 4294967295UL
277  * @Default: 150
278  *
279  * This ini specifies the bus bandwidth low threshold
280  *
281  * Usage: Internal
282  *
283  * </ini>
284  */
285 #define CFG_DP_BUS_BANDWIDTH_LOW_THRESHOLD \
286 		CFG_INI_UINT( \
287 		"gBusBandwidthLowThreshold", \
288 		0, \
289 		4294967295UL, \
290 		150, \
291 		CFG_VALUE_OR_DEFAULT, \
292 		"Bus bandwidth low threshold")
293 
294 /*
295  * <ini>
296  * gBusBandwidthComputeInterval - bus bandwidth compute interval
297  *
298  * @Min: 0
299  * @Max: 10000
300  * @Default: 100
301  *
302  * This ini specifies thebus bandwidth compute interval
303  *
304  * Usage: Internal
305  *
306  * </ini>
307  */
308 #define CFG_DP_BUS_BANDWIDTH_COMPUTE_INTERVAL \
309 		CFG_INI_UINT( \
310 		"gBusBandwidthComputeInterval", \
311 		0, \
312 		10000, \
313 		100, \
314 		CFG_VALUE_OR_DEFAULT, \
315 		"Bus bandwidth compute interval")
316 
317 /*
318  * <ini>
319  * gTcpLimitOutputEnable - Control to enable TCP limit output byte
320  * @Default: true
321  *
322  * This ini is used to enable dynamic configuration of TCP limit output bytes
323  * tcp_limit_output_bytes param. Enabling this will let driver post message to
324  * cnss-daemon, accordingly cnss-daemon will modify the tcp_limit_output_bytes.
325  *
326  * Supported Feature: Tcp limit output bytes
327  *
328  * Usage: Internal
329  *
330  * </ini>
331  */
332 #define CFG_DP_ENABLE_TCP_LIMIT_OUTPUT \
333 		CFG_INI_BOOL( \
334 		"gTcpLimitOutputEnable", \
335 		true, \
336 		"Control to enable TCP limit output byte")
337 
338 /*
339  * <ini>
340  * gTcpAdvWinScaleEnable - Control to enable  TCP adv window scaling
341  * @Default: true
342  *
343  * This ini is used to enable dynamic configuration of TCP adv window scaling
344  * system parameter.
345  *
346  * Supported Feature: Tcp Advance Window Scaling
347  *
348  * Usage: Internal
349  *
350  * </ini>
351  */
352 #define CFG_DP_ENABLE_TCP_ADV_WIN_SCALE \
353 		CFG_INI_BOOL( \
354 		"gTcpAdvWinScaleEnable", \
355 		true, \
356 		"Control to enable  TCP adv window scaling")
357 
358 /*
359  * <ini>
360  * gTcpDelAckEnable - Control to enable Dynamic Configuration of Tcp Delayed Ack
361  * @Default: true
362  *
363  * This ini is used to enable Dynamic Configuration of Tcp Delayed Ack
364  *
365  * Related: gTcpDelAckThresholdHigh, gTcpDelAckThresholdLow,
366  *          gTcpDelAckTimerCount
367  *
368  * Supported Feature: Tcp Delayed Ack
369  *
370  * Usage: Internal
371  *
372  * </ini>
373  */
374 #define CFG_DP_ENABLE_TCP_DELACK \
375 		CFG_INI_BOOL( \
376 		"gTcpDelAckEnable", \
377 		true, \
378 		"Control to enable Dynamic Config of Tcp Delayed Ack")
379 
380 /*
381  * <ini>
382  * gTcpDelAckThresholdHigh - High Threshold inorder to trigger TCP Del Ack
383  *                                          indication
384  * @Min: 0
385  * @Max: 16000
386  * @Default: 500
387  *
388  * This ini is used to mention the High Threshold inorder to trigger TCP Del Ack
389  * indication i.e the threshold of packets received over a period of 100 ms.
390  * i.e to have a low RX throughput requirement
391  * Related: gTcpDelAckEnable, gTcpDelAckThresholdLow, gTcpDelAckTimerCount
392  *
393  * Supported Feature: Tcp Delayed Ack
394  *
395  * Usage: Internal
396  *
397  * </ini>
398  */
399 #define CFG_DP_TCP_DELACK_THRESHOLD_HIGH \
400 		CFG_INI_UINT( \
401 		"gTcpDelAckThresholdHigh", \
402 		0, \
403 		16000, \
404 		500, \
405 		CFG_VALUE_OR_DEFAULT, \
406 		"High Threshold inorder to trigger TCP Del Ack")
407 
408 /*
409  * <ini>
410  * gTcpDelAckThresholdLow - Low Threshold inorder to trigger TCP Del Ack
411  *                                          indication
412  * @Min: 0
413  * @Max: 10000
414  * @Default: 1000
415  *
416  * This ini is used to mention the Low Threshold inorder to trigger TCP Del Ack
417  * indication i.e the threshold of packets received over a period of 100 ms.
418  * i.e to have a low RX throughput requirement
419  *
420  * Related: gTcpDelAckEnable, gTcpDelAckThresholdHigh, gTcpDelAckTimerCount
421  *
422  * Supported Feature: Tcp Delayed Ack
423  *
424  * Usage: Internal
425  *
426  * </ini>
427  */
428 #define CFG_DP_TCP_DELACK_THRESHOLD_LOW \
429 		CFG_INI_UINT( \
430 		"gTcpDelAckThresholdLow", \
431 		0, \
432 		10000, \
433 		1000, \
434 		CFG_VALUE_OR_DEFAULT, \
435 		"Low Threshold inorder to trigger TCP Del Ack")
436 
437 /*
438  * <ini>
439  * gTcpDelAckTimerCount - Del Ack Timer Count inorder to trigger TCP Del Ack
440  *                                      indication
441  * @Min: 1
442  * @Max: 1000
443  * @Default: 30
444  *
445  * This ini is used to mention the Del Ack Timer Count inorder to
446  * trigger TCP Del Ack indication i.e number of 100 ms periods
447  *
448  * Related: gTcpDelAckEnable, gTcpDelAckThresholdHigh, gTcpDelAckThresholdLow
449  *
450  * Supported Feature: Tcp Delayed Ack
451  *
452  * Usage: Internal
453  *
454  * </ini>
455  */
456 #define CFG_DP_TCP_DELACK_TIMER_COUNT \
457 		CFG_INI_UINT( \
458 		"gTcpDelAckTimerCount", \
459 		1, \
460 		1000, \
461 		30, \
462 		CFG_VALUE_OR_DEFAULT, \
463 		"Del Ack Timer Count inorder to trigger TCP Del Ack")
464 
465 /*
466  * <ini>
467  * gTcpTxHighTputThreshold - High Threshold inorder to trigger High
468  *                                          Tx Throughput requirement.
469  * @Min: 0
470  * @Max: 16000
471  * @Default: 500
472  *
473  * This ini specifies the threshold of packets transmitted
474  * over a period of 100 ms beyond which TCP can be considered to have a high
475  * TX throughput requirement. The driver uses this condition to tweak TCP TX
476  * specific parameters (via cnss-daemon)
477  *
478  * Supported Feature: To tweak TCP TX n/w parameters
479  *
480  * Usage: Internal
481  *
482  * </ini>
483  */
484 #define CFG_DP_TCP_TX_HIGH_TPUT_THRESHOLD \
485 		CFG_INI_UINT( \
486 		"gTcpTxHighTputThreshold", \
487 		0, \
488 		16000, \
489 		500, \
490 		CFG_VALUE_OR_DEFAULT, \
491 		"High Threshold inorder to trigger High Tx Tp")
492 
493 /*
494  * <ini>
495  * gBusLowTputCntThreshold - Threshold count to trigger low Tput
496  *			     GRO flush skip
497  * @Min: 0
498  * @Max: 200
499  * @Default: 10
500  *
501  * This ini is a threshold that if count of times for bus Tput level
502  * PLD_BUS_WIDTH_LOW in bus_bw_timer() >= this threshold, will enable skipping
503  * GRO flush, current default threshold is 10, then will delay GRO flush-skip
504  * 1 second for low Tput level.
505  *
506  * Supported Feature: GRO flush skip when low T-put
507  *
508  * Usage: Internal
509  *
510  * </ini>
511  */
512 #define CFG_DP_BUS_LOW_BW_CNT_THRESHOLD \
513 		CFG_INI_UINT( \
514 		"gBusLowTputCntThreshold", \
515 		0, \
516 		200, \
517 		10, \
518 		CFG_VALUE_OR_DEFAULT, \
519 		"Threshold to trigger GRO flush skip for low T-put")
520 
521 /*
522  * <ini>
523  * gHandleLatencyCriticalClients - Enable the handling of latency critical
524  *			     clients in bus bandwidth timer.
525  * @Default: false
526  *
527  * This ini enables the handling of latency critical clients, eg: 11g/a
528  * clients, when they are running their corresponding peak throughput.
529  *
530  * Supported Feature: Latency critical clients in host
531  *
532  * Usage: External
533  *
534  * </ini>
535  */
536 #define CFG_DP_BUS_HANDLE_LATENCY_CRITICAL_CLIENTS \
537 		CFG_INI_BOOL( \
538 		"gHandleLatencyCriticalClients", \
539 		false, \
540 		"Control to enable latency critical clients")
541 
542 #endif /*WLAN_FEATURE_DP_BUS_BANDWIDTH*/
543 
544 #ifdef QCA_SUPPORT_TXRX_DRIVER_TCP_DEL_ACK
545 /*
546  * <ini>
547  * gDriverDelAckHighThreshold - High Threshold inorder to trigger TCP
548  *                              delay ack feature in the host.
549  * @Min: 0
550  * @Max: 70000
551  * @Default: 300
552  *
553  * This ini specifies the threshold of RX packets transmitted
554  * over a period of 100 ms beyond which TCP delay ack can be enabled
555  * to improve TCP RX throughput requirement.
556  *
557  * Supported Feature: Tcp Delayed Ack in the host
558  *
559  * Usage: Internal
560  *
561  * </ini>
562  */
563 #define CFG_DP_DRIVER_TCP_DELACK_HIGH_THRESHOLD \
564 		CFG_INI_UINT( \
565 		"gDriverDelAckHighThreshold", \
566 		0, \
567 		70000, \
568 		300, \
569 		CFG_VALUE_OR_DEFAULT, \
570 		"TCP delack high threshold")
571 
572 /*
573  * <ini>
574  * gDriverDelAckLowThreshold - Low Threshold inorder to disable TCP
575  *                             delay ack feature in the host.
576  * @Min: 0
577  * @Max: 70000
578  * @Default: 100
579  *
580  * This ini is used to mention the Low Threshold inorder to disable TCP Del
581  * Ack feature in the host.
582  *
583  * Supported Feature: Tcp Delayed Ack in the host
584  *
585  * Usage: Internal
586  *
587  * </ini>
588  */
589 #define CFG_DP_DRIVER_TCP_DELACK_LOW_THRESHOLD \
590 		CFG_INI_UINT( \
591 		"gDriverDelAckLowThreshold", \
592 		0, \
593 		70000, \
594 		100, \
595 		CFG_VALUE_OR_DEFAULT, \
596 		"TCP delack low threshold")
597 
598 /*
599  * <ini>
600  * gDriverDelAckTimerValue - Timeout value (ms) to send out all TCP del
601  *                           ack frames
602  * @Min: 1
603  * @Max: 15
604  * @Default: 3
605  *
606  * This ini specifies the time out value to send out all pending TCP delay
607  * ACK frames.
608  *
609  * Supported Feature: Tcp Delayed Ack in the host
610  *
611  * Usage: Internal
612  *
613  * </ini>
614  */
615 #define CFG_DP_DRIVER_TCP_DELACK_TIMER_VALUE \
616 		CFG_INI_UINT( \
617 		"gDriverDelAckTimerValue", \
618 		1, \
619 		15, \
620 		3, \
621 		CFG_VALUE_OR_DEFAULT, \
622 		"Send out all TCP Del Acks if time out")
623 
624 /*
625  * <ini>
626  * gDriverDelAckPktCount - The maximum number of TCP delay ack frames
627  * @Min: 0
628  * @Max: 50
629  * @Default: 20
630  *
631  * This ini specifies the maximum number of TCP delayed ack frames.
632  *
633  * Supported Feature: Tcp Delayed Ack in the host
634  *
635  * Usage: Internal
636  *
637  * </ini>
638  */
639 #define CFG_DP_DRIVER_TCP_DELACK_PKT_CNT \
640 		CFG_INI_UINT( \
641 		"gDriverDelAckPktCount", \
642 		0, \
643 		50, \
644 		20, \
645 		CFG_VALUE_OR_DEFAULT, \
646 		"No of TCP Del ACK count")
647 
648 /*
649  * <ini>
650  * gDriverDelAckEnable - Control to enable Dynamic Configuration of Tcp
651  *                       Delayed Ack in the host.
652  * @Default: true
653  *
654  * This ini is used to enable Dynamic Configuration of Tcp Delayed Ack
655  * in the host.
656  *
657  * Related: gDriverDelAckHighThreshold, gDriverDelAckLowThreshold,
658  *          gDriverDelAckPktCount, gDriverDelAckTimerValue
659  *
660  * Supported Feature: Tcp Delayed Ack in the host
661  *
662  * Usage: Internal
663  *
664  * </ini>
665  */
666 #define CFG_DP_DRIVER_TCP_DELACK_ENABLE \
667 		CFG_INI_BOOL( \
668 		"gDriverDelAckEnable", \
669 		true, \
670 		"Enable tcp del ack in the driver")
671 #endif
672 
673 /*
674  * <ini>
675  * RX_THREAD_CPU_AFFINITY_MASK - CPU mask to affine Rx_thread
676  *
677  * @Min: 0
678  * @Max: 0xFF
679  * @Default: 0x02
680  *
681  * This ini is used to set Rx_thread CPU affinity
682  *
683  * Supported Feature: Rx_thread
684  *
685  * Usage: Internal
686  *
687  * </ini>
688  */
689 #ifdef RX_PERFORMANCE
690 #define CFG_DP_RX_THREAD_CPU_MASK \
691 		CFG_INI_UINT( \
692 		"RX_THREAD_CPU_AFFINITY_MASK", \
693 		0, \
694 		0xFF, \
695 		0xFE, \
696 		CFG_VALUE_OR_DEFAULT, \
697 		"CPU mask to affine Rx_thread")
698 #else
699 #define CFG_DP_RX_THREAD_CPU_MASK \
700 		CFG_INI_UINT( \
701 		"RX_THREAD_CPU_AFFINITY_MASK", \
702 		0, \
703 		0xFF, \
704 		0, \
705 		CFG_VALUE_OR_DEFAULT, \
706 		"CPU mask to affine Rx_thread")
707 #endif
708 
709 /*
710  * <ini>
711  * RX_THREAD_UL_CPU_AFFINITY_MASK - CPU mask to affine Rx_thread
712  *
713  * @Min: 0
714  * @Max: 0xFF
715  * @Default: 0x0
716  *
717  * This ini is used to set Rx_thread CPU affinity for uplink traffic
718  *
719  * Supported Feature: Rx_thread
720  *
721  * Usage: Internal
722  *
723  * </ini>
724  */
725 #define CFG_DP_RX_THREAD_UL_CPU_MASK \
726 		CFG_INI_UINT( \
727 		"RX_THREAD_UL_CPU_AFFINITY_MASK", \
728 		0, \
729 		0xFF, \
730 		0x0, \
731 		CFG_VALUE_OR_DEFAULT, \
732 		"CPU mask to affine Rx_thread for uplink traffic")
733 
734 /*
735  * <ini>
736  * rpsRxQueueCpuMapList - RPS map for different RX queues
737  *
738  * @Default: e
739  *
740  * This ini is used to set RPS map for different RX queues.
741  *
742  * List of RPS CPU maps for different rx queues registered by WLAN driver
743  * Ref - Kernel/Documentation/networking/scaling.txt
744  * RPS CPU map for a particular RX queue, selects CPU(s) for bottom half
745  * processing of RX packets. For example, for a system with 4 CPUs,
746  * 0xe: Use CPU1 - CPU3 and donot use CPU0.
747  * 0x0: RPS is disabled, packets are processed on the interrupting CPU.
748 .*
749  * WLAN driver registers NUM_TX_QUEUES queues for tx and rx each during
750  * alloc_netdev_mq. Hence, we need to have a cpu mask for each of the rx queues.
751  *
752  * For example, if the NUM_TX_QUEUES is 4, a sample WLAN ini entry may look like
753  * rpsRxQueueCpuMapList=a b c d
754  * For a 4 CPU system (CPU0 - CPU3), this implies:
755  * 0xa - (1010) use CPU1, CPU3 for rx queue 0
756  * 0xb - (1011) use CPU0, CPU1 and CPU3 for rx queue 1
757  * 0xc - (1100) use CPU2, CPU3 for rx queue 2
758  * 0xd - (1101) use CPU0, CPU2 and CPU3 for rx queue 3
759 
760  * In practice, we may want to avoid the cores which are heavily loaded.
761  *
762  * Default value of rpsRxQueueCpuMapList. Different platforms may have
763  * different configurations for NUM_TX_QUEUES and # of cpus, and will need to
764  * configure an appropriate value via ini file. Setting default value to 'e' to
765  * avoid use of CPU0 (since its heavily used by other system processes) by rx
766  * queue 0, which is currently being used for rx packet processing.
767  *
768  * Maximum length of string used to hold a list of cpu maps for various rx
769  * queues. Considering a 16 core system with 5 rx queues, a RPS CPU map
770  * list may look like -
771  * rpsRxQueueCpuMapList = ffff ffff ffff ffff ffff
772  * (all 5 rx queues can be processed on all 16 cores)
773  * max string len = 24 + 1(for '\0'). Considering 30 to be on safe side.
774  *
775  * Supported Feature: Rx_thread
776  *
777  * Usage: Internal
778  * </ini>
779  */
780 #define CFG_DP_RPS_RX_QUEUE_CPU_MAP_LIST \
781 		CFG_INI_STRING( \
782 		"rpsRxQueueCpuMapList", \
783 		1, \
784 		30, \
785 		"e", \
786 		"specify RPS map for different RX queues")
787 
788 /*
789  * <ini>
790  * gEnableTxOrphan- Enable/Disable orphaning of Tx packets
791  * @Default: false
792  *
793  * This ini is used to enable/disable orphaning of Tx packets.
794  *
795  * Related: None
796  *
797  * Usage: External
798  *
799  * </ini>
800  */
801 #define CFG_DP_TX_ORPHAN_ENABLE \
802 		CFG_INI_BOOL( \
803 		"gEnableTxOrphan", \
804 		false, \
805 		"orphaning of Tx packets")
806 
807 /*
808  * <ini>
809  * rx_mode - Control to decide rx mode for packet processing
810  *
811  * @Min: 0
812  * @Max: (CFG_ENABLE_RX_THREAD | CFG_ENABLE_RPS | CFG_ENABLE_NAPI | \
813  *	 CFG_ENABLE_DYNAMIC_RPS)
814  *
815  * Some possible configurations:
816  * rx_mode=0 - Uses tasklets for bottom half
817  * CFG_ENABLE_NAPI (rx_mode=4) - Uses NAPI for bottom half
818  * CFG_ENABLE_RX_THREAD | CFG_ENABLE_NAPI (rx_mode=5) - NAPI for bottom half,
819  * rx_thread for stack. Single threaded.
820  * CFG_ENABLE_DP_RX_THREAD | CFG_ENABLE_NAPI (rx_mode=10) - NAPI for bottom
821  * half, dp_rx_thread for stack processing. Supports multiple rx threads.
822  *
823  * Usage: Internal
824  *
825  * </ini>
826  */
827 #define CFG_DP_RX_MODE \
828 		CFG_INI_UINT("rx_mode", \
829 		0, CFG_RX_MODE_MAX, CFG_RX_MODE_DEFAULT, \
830 		CFG_VALUE_OR_DEFAULT, \
831 		"Control to decide rx mode for packet processing")
832 
833 /*
834  * <ini>
835  * tx_comp_loop_pkt_limit - Control to decide max # of packets to be processed
836  *			    in 1 tx comp loop
837  *
838  * @Min: 8
839  * @Max: CFG_DP_TX_COMP_LOOP_PKT_LIMIT_MAX
840  *
841  * Usage: Internal
842  *
843  * </ini>
844  */
845 #define CFG_DP_TX_COMP_LOOP_PKT_LIMIT \
846 		CFG_INI_UINT("tx_comp_loop_pkt_limit", \
847 		1, CFG_DP_TX_COMP_LOOP_PKT_LIMIT_MAX, \
848 		CFG_DP_TX_COMP_LOOP_PKT_LIMIT_DEFAULT, \
849 		CFG_VALUE_OR_DEFAULT, \
850 		"Control to decide tx comp loop pkt limit")
851 /*
852  * <ini>
853  * rx_reap_loop_pkt_limit - Control to decide max # of packets to be reaped
854  *			    in 1 dp_rx_process reap loop
855  *
856  * @Min: 8
857  * @Max: CFG_DP_RX_REAP_LOOP_PKT_LIMIT_MAX
858  *
859  * Usage: Internal
860  *
861  * </ini>
862  */
863 #define CFG_DP_RX_REAP_LOOP_PKT_LIMIT \
864 		CFG_INI_UINT("rx_reap_loop_pkt_limit", \
865 		0, CFG_DP_RX_REAP_LOOP_PKT_LIMIT_MAX, \
866 		CFG_DP_RX_REAP_LOOP_PKT_LIMIT_DEFAULT, \
867 		CFG_VALUE_OR_DEFAULT, \
868 		"Control to decide rx reap loop packet limit")
869 
870 /*
871  * <ini>
872  * rx_hp_oos_update_limit - Control to decide max # of HP OOS (out of sync)
873  *			    updates
874  *
875  * @Min: 0
876  * @Max: CFG_DP_RX_HP_OOS_UPDATE_LIMIT_MAX
877  *
878  * Usage: Internal
879  *
880  * </ini>
881  */
882 #define CFG_DP_RX_HP_OOS_UPDATE_LIMIT \
883 		CFG_INI_UINT("rx_hp_oos_update_limit", \
884 		0, CFG_DP_RX_HP_OOS_UPDATE_LIMIT_MAX, \
885 		CFG_DP_RX_HP_OOS_UPDATE_LIMIT_DEFAULT, \
886 		CFG_VALUE_OR_DEFAULT, \
887 		"Control to decide HP OOS update limit")
888 
889 /*
890  * <ini>
891  * rx_softirq_max_yield_duration_ns - Control to decide max duration for RX
892  *				      softirq
893  *
894  * @Min: 100 * 1000 , 100us
895  * @Max: CFG_DP_RX_SOFTIRQ_MAX_YIELD_TIME_NS_MAX
896  *
897  * Usage: Internal
898  *
899  * </ini>
900  */
901 #define CFG_DP_RX_SOFTIRQ_MAX_YIELD_TIME_NS \
902 		CFG_INI_UINT("rx_softirq_max_yield_duration_ns", \
903 		100 * 1000, CFG_DP_RX_SOFTIRQ_MAX_YIELD_TIME_NS_MAX, \
904 		CFG_DP_RX_SOFTIRQ_MAX_YIELD_TIME_NS_DEFAULT, \
905 		CFG_VALUE_OR_DEFAULT, \
906 		"max yield time duration for RX Softirq")
907 
908 /*
909  * <ini>
910  * enable_multicast_replay_filter - Enable filtering of replayed multicast
911  * packets
912  *
913  * In a typical infrastructure setup, it is quite normal to receive
914  * replayed multicast packets. These packets may cause more harm than
915  * help if not handled properly. Providing a configuration option
916  * to enable filtering of such packets
917  *
918  * </ini>
919  */
920 #define CFG_DP_FILTER_MULTICAST_REPLAY \
921 	CFG_INI_BOOL("enable_multicast_replay_filter", \
922 	true, "Enable filtering of replayed multicast packets")
923 
924 /*
925  * <ini>
926  * rx_wakelock_timeout - Amount of time to hold wakelock for RX unicast packets
927  * @Min: 0
928  * @Max: 100
929  * @Default: 50
930  *
931  * This ini item configures the amount of time, in milliseconds, that the driver
932  * should prevent system power collapse after receiving an RX unicast packet.
933  * A conigured value of 0 disables the RX Wakelock feature completely.
934  *
935  * Related: None.
936  *
937  * Supported Feature: RX Wakelock
938  *
939  * Usage: Internal/External
940  *
941  * </ini>
942  */
943 #define CFG_DP_RX_WAKELOCK_TIMEOUT \
944 	CFG_INI_UINT("rx_wakelock_timeout", \
945 	0, 100, 50, CFG_VALUE_OR_DEFAULT, \
946 	"Amount of time to hold wakelock for RX unicast packets")
947 
948 /*
949  * <ini>
950  * num_dp_rx_threads - Control to set the number of dp rx threads
951  *
952  * @Min: 1
953  * @Max: 4
954  * @Default: 1
955  *
956  * Usage: Internal
957  *
958  * </ini>
959  */
960 #define CFG_DP_NUM_DP_RX_THREADS \
961 	CFG_INI_UINT("num_dp_rx_threads", \
962 	1, 4, 1, CFG_VALUE_OR_DEFAULT, \
963 	"Control to set the number of dp rx threads")
964 
965 /*
966  * <ini>
967  * ce_service_max_rx_ind_flush - Maximum number of HTT messages
968  * to be processed per NAPI poll
969  *
970  * @Min: 1
971  * @Max: 32
972  * @Default: 1
973  *
974  * Usage: Internal
975  *
976  * </ini>
977  */
978 #define CFG_DP_CE_SERVICE_MAX_RX_IND_FLUSH \
979 		CFG_INI_UINT("ce_service_max_rx_ind_flush", \
980 		1, 32, 1, \
981 		CFG_VALUE_OR_DEFAULT, "Ctrl to set ce service max rx ind flsh")
982 
983 /*
984  * <ini>
985  * ce_service_max_yield_time - Time in microseconds after which
986  * a NAPI poll must yield
987  *
988  * @Min: 500
989  * @Max: 10000
990  * @Default: 500
991  *
992  * Usage: Internal
993  *
994  * </ini>
995  */
996 #define CFG_DP_CE_SERVICE_MAX_YIELD_TIME \
997 		CFG_INI_UINT("ce_service_max_yield_time", \
998 		500, 10000, 500, \
999 		CFG_VALUE_OR_DEFAULT, "Ctrl to set ce service max yield time")
1000 
1001 #ifdef WLAN_FEATURE_FASTPATH
1002 #define CFG_DP_ENABLE_FASTPATH \
1003 		CFG_INI_BOOL("gEnableFastPath", \
1004 		false, "Ctrl to enable fastpath feature")
1005 
1006 #define CFG_DP_ENABLE_FASTPATH_ALL \
1007 	CFG(CFG_DP_ENABLE_FASTPATH)
1008 #else
1009 #define CFG_DP_ENABLE_FASTPATH_ALL
1010 #endif
1011 
1012 #define CFG_DP_ENABLE_TCP_PARAM_UPDATE \
1013 		CFG_INI_BOOL("enable_tcp_param_update", \
1014 		false, "configure TCP param through Wi-Fi HAL")
1015 /*
1016  * <ini>
1017  *
1018  * Enable/disable DPTRACE
1019  * Enabling this might have performance impact.
1020  *
1021  * Config DPTRACE
1022  * The sequence of params is important. If some param is missing, defaults are
1023  * considered.
1024  * Param 1: Enable/Disable DP Trace live mode (uint8_t)
1025  * Param 2: DP Trace live mode high bandwidth thresh.(uint8_t)
1026  *         (packets/second) beyond which DP Trace is disabled. Decimal Val.
1027  *          MGMT, DHCP, EAPOL, ARP pkts are not counted. ICMP and Data are.
1028  * Param 3: Default Verbosity (0-4)
1029  * Param 4: Proto Bitmap (uint8_t). Decimal Value.
1030  *          (decimal 62 = 0x3e)
1031  * e.g., to disable live mode, use the following param in the ini file.
1032  * gDptraceConfig = 0
1033  * e.g., to enable dptrace live mode and set the thresh as 6,
1034  * use the following param in the ini file.
1035  * gDptraceConfig = 1, 6
1036  *
1037  * </ini>
1038  */
1039 #ifdef CONFIG_DP_TRACE
1040 #define CFG_DP_ENABLE_DP_TRACE \
1041 			CFG_INI_BOOL("enable_dp_trace", \
1042 			true, "Ctrl to enable dp trace feature")
1043 
1044 #define CFG_DP_DP_TRACE_CONFIG \
1045 		CFG_INI_STRING( \
1046 		"gDptraceConfig", \
1047 		1, \
1048 		20, \
1049 		"1, 6, 2, 126", \
1050 		"dp trace configuration string")
1051 
1052 /*
1053  * <ini>
1054  * dp_proto_event_bitmap - Control for which protocol packet diag event should
1055  *  be sent to user space.
1056  * @Min: 0
1057  * @Max: 0x17
1058  * @Default: 0x6
1059  *
1060  * This ini is used to control for which protocol packet diag event should be
1061  * sent to user space.
1062  *
1063  * QDF_NBUF_PKT_TRAC_TYPE_DNS       0x01
1064  * QDF_NBUF_PKT_TRAC_TYPE_EAPOL     0x02
1065  * QDF_NBUF_PKT_TRAC_TYPE_DHCP      0x04
1066  * QDF_NBUF_PKT_TRAC_TYPE_ARP       0x10
1067  *
1068  * Related: None
1069  *
1070  * Supported Feature: STA, SAP
1071  *
1072  * Usage: Internal
1073  *
1074  * <ini>
1075  */
1076 #define CFG_DP_PROTO_EVENT_BITMAP \
1077 		CFG_INI_UINT("dp_proto_event_bitmap", \
1078 		0, 0x17, 0x17, \
1079 		CFG_VALUE_OR_DEFAULT, \
1080 		"Control for which protocol type diag log should be sent")
1081 
1082 #define CFG_DP_CONFIG_DP_TRACE_ALL \
1083 		CFG(CFG_DP_ENABLE_DP_TRACE) \
1084 		CFG(CFG_DP_DP_TRACE_CONFIG) \
1085 		CFG(CFG_DP_PROTO_EVENT_BITMAP)
1086 #else
1087 #define CFG_DP_CONFIG_DP_TRACE_ALL
1088 #endif
1089 
1090 #ifdef WLAN_NUD_TRACKING
1091 /*
1092  * <ini>
1093  * gEnableNUDTracking - Will enable or disable NUD tracking within driver
1094  * @Min: 0
1095  * @Max: 3
1096  * @Default: 2
1097  *
1098  * This ini is used to specify the behaviour of the driver for NUD tracking.
1099  * If the ini value is:-
1100  * 0: Driver will not track the NUD failures, and ignore the same.
1101  * 1: Driver will track the NUD failures and if honoured will disconnect from
1102  * the connected BSSID.
1103  * 2: Driver will track the NUD failures and if honoured will roam away from
1104  * the connected BSSID to a new BSSID to retain the data connectivity.
1105  * 3: Driver will try to roam to a new AP but if roam fails, disconnect.
1106  * Related: None
1107  *
1108  * Supported Feature: STA
1109  *
1110  * Usage: External
1111  *
1112  * <ini>
1113  */
1114 #define CFG_DP_ENABLE_NUD_TRACKING \
1115 		CFG_INI_UINT("gEnableNUDTracking", \
1116 		 0, \
1117 		 3, \
1118 		 2, \
1119 		 CFG_VALUE_OR_DEFAULT, "Driver NUD tracking behaviour")
1120 
1121 #define CFG_DP_ENABLE_NUD_TRACKING_ALL \
1122 			CFG(CFG_DP_ENABLE_NUD_TRACKING)
1123 #else
1124 #define CFG_DP_ENABLE_NUD_TRACKING_ALL
1125 #endif
1126 
1127 #ifdef WLAN_SUPPORT_TXRX_HL_BUNDLE
1128 
1129 #define CFG_DP_HL_BUNDLE_HIGH_TH \
1130 		CFG_INI_UINT( \
1131 		"tx_bundle_high_threashold", \
1132 		0, \
1133 		70000, \
1134 		4330, \
1135 		CFG_VALUE_OR_DEFAULT, \
1136 		"tx bundle high threashold")
1137 
1138 #define CFG_DP_HL_BUNDLE_LOW_TH \
1139 		CFG_INI_UINT( \
1140 		"tx_bundle_low_threashold", \
1141 		0, \
1142 		70000, \
1143 		4000, \
1144 		CFG_VALUE_OR_DEFAULT, \
1145 		"tx bundle low threashold")
1146 
1147 #define CFG_DP_HL_BUNDLE_TIMER_VALUE \
1148 		CFG_INI_UINT( \
1149 		"tx_bundle_timer_in_ms", \
1150 		10, \
1151 		10000, \
1152 		100, \
1153 		CFG_VALUE_OR_DEFAULT, \
1154 		"tx bundle timer value in ms")
1155 
1156 #define CFG_DP_HL_BUNDLE_SIZE \
1157 		CFG_INI_UINT( \
1158 		"tx_bundle_size", \
1159 		0, \
1160 		64, \
1161 		16, \
1162 		CFG_VALUE_OR_DEFAULT, \
1163 		"tx bundle size")
1164 
1165 #endif
1166 
1167 #define WLAN_CFG_ICMP_REQ_TO_FW_MARK_ALL (-1)
1168 #define WLAN_CFG_ICMP_REQ_TO_FW_MARK_INTERVAL 0
1169 #define WLAN_CFG_ICMP_REQ_TO_FW_MARK_INTERVAL_MIN (-1)
1170 #define WLAN_CFG_ICMP_REQ_TO_FW_MARK_INTERVAL_MAX 100000
1171 
1172 /*
1173  * <ini>
1174  * icmp_req_to_fw_mark_interval - Interval to mark the ICMP Request packet
1175  *				  to be sent to FW.
1176  * @Min: -1
1177  * @Max:  100000
1178  * @Default: 0
1179  *
1180  * This ini is used to control DP Software to mark the ICMP request packets
1181  * to be sent to FW at certain interval (in milliseconds).
1182  * The value 0 is used to disable marking of ICMP requests to be sent to FW.
1183  * The value -1 is used to mark all the ICMP requests to be sent to FW.
1184  * Any value greater than zero indicates the time interval (in milliseconds)
1185  * at which ICMP requests are marked to be sent to FW.
1186  *
1187  * Supported modes: All modes
1188  *
1189  * Usage: External
1190  *
1191  * </ini>
1192  */
1193 #define CFG_DP_ICMP_REQ_TO_FW_MARK_INTERVAL \
1194 	CFG_INI_INT("icmp_req_to_fw_mark_interval", \
1195 		    WLAN_CFG_ICMP_REQ_TO_FW_MARK_INTERVAL_MIN, \
1196 		    WLAN_CFG_ICMP_REQ_TO_FW_MARK_INTERVAL_MAX, \
1197 		    WLAN_CFG_ICMP_REQ_TO_FW_MARK_INTERVAL, \
1198 		    CFG_VALUE_OR_DEFAULT, \
1199 		    "Interval to mark ICMP Request packets to be sent to FW")
1200 
1201 /*
1202  * <ini>
1203  * enable_direct_link_ut_cmd - Enable direct link unit testing
1204  * @Min: 0
1205  * @Max: 1
1206  * @Default: 0
1207  *
1208  * This ini is used to enable direct link unit test
1209  *
1210  * Supported feature: Direct link
1211  *
1212  * Usage: Internal
1213  *
1214  * </ini>
1215  */
1216 #define CFG_ENABLE_DIRECT_LINK_UT_CMD \
1217 	CFG_INI_BOOL("enable_direct_link_ut_cmd", false, \
1218 		     "enable/disable direct link unit test")
1219 
1220 /*
1221  * <ini>
1222  * dp_apply_mem_profile - Apply mem profile config
1223  * @Min: 0
1224  * @Max: 1
1225  * @Default: 0
1226  *
1227  * This ini is used to apply DP mem profile config
1228  *
1229  * Supported feature: All modes
1230  *
1231  * Usage: Internal
1232  *
1233  * </ini>
1234  */
1235 #define CFG_DP_APPLY_MEM_PROFILE \
1236 	CFG_INI_BOOL("dp_apply_mem_profile", false, \
1237 		     "enable/disable dp mem profile")
1238 
1239 #ifdef WLAN_SUPPORT_RX_FISA
1240 /*
1241  * <ini>
1242  * dp_rx_fisa_enable - Control Rx datapath FISA
1243  * @Min: 0
1244  * @Max: 1
1245  * @Default: 1
1246  *
1247  * This ini is used to enable DP Rx FISA feature
1248  *
1249  * Related: dp_rx_flow_search_table_size
1250  *
1251  * Supported Feature: STA,P2P and SAP IPA disabled terminating
1252  *
1253  * Usage: Internal
1254  *
1255  * </ini>
1256  */
1257 #define CFG_DP_RX_FISA_ENABLE \
1258 	CFG_INI_BOOL("dp_rx_fisa_enable", true, \
1259 		     "Enable/Disable DP Rx FISA")
1260 
1261 /*
1262  * <ini>
1263  * dp_rx_fisa_lru_del_enable - Control Rx datapath FISA
1264  * @Min: 0
1265  * @Max: 1
1266  * @Default: 1
1267  *
1268  * This ini is used to enable DP Rx FISA lru deletion feature
1269  *
1270  * Related: dp_rx_fisa_enable
1271  *
1272  * Supported Feature: STA,P2P and SAP IPA disabled terminating
1273  *
1274  * Usage: Internal
1275  *
1276  * </ini>
1277  */
1278 #define CFG_DP_RX_FISA_LRU_DEL_ENABLE \
1279 	CFG_INI_BOOL("dp_rx_fisa_lru_del_enable", true, \
1280 		     "Enable/Disable DP Rx FISA LRU deletion")
1281 
1282 #define CFG_DP_FISA \
1283 	CFG(CFG_DP_RX_FISA_ENABLE) \
1284 	CFG(CFG_DP_RX_FISA_LRU_DEL_ENABLE)
1285 #else
1286 #define CFG_DP_FISA
1287 #endif
1288 
1289 /*TODO Flow control part to be moved to DP later*/
1290 
1291 #ifdef WLAN_FEATURE_DP_BUS_BANDWIDTH
1292 #define CFG_DP_BUS_BANDWIDTH \
1293 	CFG(CFG_DP_BUS_BANDWIDTH_SUPER_HIGH_THRESHOLD) \
1294 	CFG(CFG_DP_BUS_BANDWIDTH_ULTRA_HIGH_THRESHOLD) \
1295 	CFG(CFG_DP_BUS_BANDWIDTH_VERY_HIGH_THRESHOLD) \
1296 	CFG(CFG_DP_BUS_BANDWIDTH_MID_HIGH_THRESHOLD) \
1297 	CFG(CFG_DP_BUS_BANDWIDTH_DBS_THRESHOLD) \
1298 	CFG(CFG_DP_BUS_BANDWIDTH_HIGH_THRESHOLD) \
1299 	CFG(CFG_DP_BUS_BANDWIDTH_MEDIUM_THRESHOLD) \
1300 	CFG(CFG_DP_BUS_BANDWIDTH_LOW_THRESHOLD) \
1301 	CFG(CFG_DP_BUS_BANDWIDTH_COMPUTE_INTERVAL) \
1302 	CFG(CFG_DP_ENABLE_TCP_LIMIT_OUTPUT) \
1303 	CFG(CFG_DP_ENABLE_TCP_ADV_WIN_SCALE) \
1304 	CFG(CFG_DP_ENABLE_TCP_DELACK) \
1305 	CFG(CFG_DP_TCP_DELACK_THRESHOLD_HIGH) \
1306 	CFG(CFG_DP_TCP_DELACK_THRESHOLD_LOW) \
1307 	CFG(CFG_DP_TCP_DELACK_TIMER_COUNT) \
1308 	CFG(CFG_DP_TCP_TX_HIGH_TPUT_THRESHOLD) \
1309 	CFG(CFG_DP_BUS_LOW_BW_CNT_THRESHOLD) \
1310 	CFG(CFG_DP_BUS_HANDLE_LATENCY_CRITICAL_CLIENTS)
1311 
1312 #else
1313 #define CFG_DP_BUS_BANDWIDTH
1314 #endif
1315 
1316 #ifdef QCA_SUPPORT_TXRX_DRIVER_TCP_DEL_ACK
1317 #define CFG_DP_DRIVER_TCP_DELACK \
1318 	CFG(CFG_DP_DRIVER_TCP_DELACK_HIGH_THRESHOLD) \
1319 	CFG(CFG_DP_DRIVER_TCP_DELACK_LOW_THRESHOLD) \
1320 	CFG(CFG_DP_DRIVER_TCP_DELACK_TIMER_VALUE) \
1321 	CFG(CFG_DP_DRIVER_TCP_DELACK_PKT_CNT) \
1322 	CFG(CFG_DP_DRIVER_TCP_DELACK_ENABLE)
1323 #else
1324 #define CFG_DP_DRIVER_TCP_DELACK
1325 #endif
1326 
1327 #ifdef WLAN_SUPPORT_TXRX_HL_BUNDLE
1328 #define CFG_DP_HL_BUNDLE \
1329 	CFG(CFG_DP_HL_BUNDLE_HIGH_TH) \
1330 	CFG(CFG_DP_HL_BUNDLE_LOW_TH) \
1331 	CFG(CFG_DP_HL_BUNDLE_TIMER_VALUE) \
1332 	CFG(CFG_DP_HL_BUNDLE_SIZE)
1333 #else
1334 #define CFG_DP_HL_BUNDLE
1335 #endif
1336 
1337 #define CFG_DP_ALL \
1338 	CFG(CFG_DP_RX_THREAD_CPU_MASK) \
1339 	CFG(CFG_DP_RX_THREAD_UL_CPU_MASK) \
1340 	CFG(CFG_DP_RPS_RX_QUEUE_CPU_MAP_LIST) \
1341 	CFG(CFG_DP_TX_ORPHAN_ENABLE) \
1342 	CFG(CFG_DP_RX_MODE) \
1343 	CFG(CFG_DP_TX_COMP_LOOP_PKT_LIMIT)\
1344 	CFG(CFG_DP_RX_REAP_LOOP_PKT_LIMIT)\
1345 	CFG(CFG_DP_RX_HP_OOS_UPDATE_LIMIT)\
1346 	CFG(CFG_DP_RX_SOFTIRQ_MAX_YIELD_TIME_NS)\
1347 	CFG(CFG_DP_CE_SERVICE_MAX_RX_IND_FLUSH) \
1348 	CFG(CFG_DP_CE_SERVICE_MAX_YIELD_TIME) \
1349 	CFG(CFG_DP_ENABLE_TCP_PARAM_UPDATE) \
1350 	CFG(CFG_DP_FILTER_MULTICAST_REPLAY) \
1351 	CFG(CFG_DP_RX_WAKELOCK_TIMEOUT) \
1352 	CFG(CFG_DP_NUM_DP_RX_THREADS) \
1353 	CFG(CFG_DP_ICMP_REQ_TO_FW_MARK_INTERVAL) \
1354 	CFG(CFG_ENABLE_DIRECT_LINK_UT_CMD) \
1355 	CFG(CFG_DP_APPLY_MEM_PROFILE) \
1356 	CFG_DP_ENABLE_FASTPATH_ALL \
1357 	CFG_DP_BUS_BANDWIDTH \
1358 	CFG_DP_DRIVER_TCP_DELACK \
1359 	CFG_DP_ENABLE_NUD_TRACKING_ALL \
1360 	CFG_DP_CONFIG_DP_TRACE_ALL \
1361 	CFG_DP_HL_BUNDLE \
1362 	CFG_DP_FISA
1363 
1364 #endif /* WLAN_DP_CFG_H__ */
1365