123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224 |
- /*
- * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
- *
- * Permission to use, copy, modify, and/or distribute this software for
- * any purpose with or without fee is hereby granted, provided that the
- * above copyright notice and this permission notice appear in all
- * copies.
- *
- * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
- * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
- * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
- * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
- * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- */
- #ifndef WLAN_DP_CFG_H__
- #define WLAN_DP_CFG_H__
- #define CFG_DP_RPS_RX_QUEUE_CPU_MAP_LIST_LEN 30
- #ifdef CONFIG_DP_TRACE
- /* Max length of gDptraceConfig string. e.g.- "1, 6, 1, 62" */
- #define DP_TRACE_CONFIG_STRING_LENGTH (20)
- /* At max 4 DP Trace config parameters are allowed. Refer - gDptraceConfig */
- #define DP_TRACE_CONFIG_NUM_PARAMS (4)
- /*
- * Default value of live mode in case it cannot be determined from cfg string
- * gDptraceConfig
- */
- #define DP_TRACE_CONFIG_DEFAULT_LIVE_MODE (1)
- /*
- * Default value of thresh (packets/second) beyond which DP Trace is disabled.
- * Use this default in case the value cannot be determined from cfg string
- * gDptraceConfig
- */
- #define DP_TRACE_CONFIG_DEFAULT_THRESH (6)
- /*
- * Number of intervals of BW timer to wait before enabling/disabling DP Trace.
- * Since throughput threshold to disable live logging for DP Trace is very low,
- * we calculate throughput based on # packets received in a second.
- * For example assuming bandwidth timer interval is 100ms, and if more than 6
- * prints are received in 10 * 100 ms interval, we want to disable DP Trace
- * live logging. DP_TRACE_CONFIG_DEFAULT_THRESH_TIME_LIMIT is the default
- * value, to be used in case the real value cannot be derived from
- * bw timer interval
- */
- #define DP_TRACE_CONFIG_DEFAULT_THRESH_TIME_LIMIT (10)
- /* Default proto bitmap in case its missing in gDptraceConfig string */
- #define DP_TRACE_CONFIG_DEFAULT_BITMAP \
- (QDF_NBUF_PKT_TRAC_TYPE_EAPOL |\
- QDF_NBUF_PKT_TRAC_TYPE_DHCP |\
- QDF_NBUF_PKT_TRAC_TYPE_MGMT_ACTION |\
- QDF_NBUF_PKT_TRAC_TYPE_ARP |\
- QDF_NBUF_PKT_TRAC_TYPE_ICMP |\
- QDF_NBUF_PKT_TRAC_TYPE_ICMPv6)\
- /* Default verbosity, in case its missing in gDptraceConfig string*/
- #define DP_TRACE_CONFIG_DEFAULT_VERBOSTY QDF_DP_TRACE_VERBOSITY_LOW
- #endif
- #define CFG_ENABLE_RX_THREAD BIT(0)
- #define CFG_ENABLE_RPS BIT(1)
- #define CFG_ENABLE_NAPI BIT(2)
- #define CFG_ENABLE_DYNAMIC_RPS BIT(3)
- #define CFG_ENABLE_DP_RX_THREADS BIT(4)
- #define CFG_RX_MODE_MAX (CFG_ENABLE_RX_THREAD | \
- CFG_ENABLE_RPS | \
- CFG_ENABLE_NAPI | \
- CFG_ENABLE_DYNAMIC_RPS | \
- CFG_ENABLE_DP_RX_THREADS)
- #ifdef MDM_PLATFORM
- #define CFG_RX_MODE_DEFAULT 0
- #elif defined(HELIUMPLUS)
- #define CFG_RX_MODE_DEFAULT CFG_ENABLE_NAPI
- #endif
- #ifndef CFG_RX_MODE_DEFAULT
- #if defined(FEATURE_WLAN_DP_RX_THREADS)
- #define CFG_RX_MODE_DEFAULT (CFG_ENABLE_DP_RX_THREADS | CFG_ENABLE_NAPI)
- #else
- #define CFG_RX_MODE_DEFAULT (CFG_ENABLE_RX_THREAD | CFG_ENABLE_NAPI)
- #endif
- #endif
- /* Max # of packets to be processed in 1 tx comp loop */
- #define CFG_DP_TX_COMP_LOOP_PKT_LIMIT_DEFAULT 64
- #define CFG_DP_TX_COMP_LOOP_PKT_LIMIT_MAX (1024 * 1024)
- /*Max # of packets to be processed in 1 rx reap loop */
- #define CFG_DP_RX_REAP_LOOP_PKT_LIMIT_DEFAULT 64
- #define CFG_DP_RX_REAP_LOOP_PKT_LIMIT_MAX (1024 * 1024)
- /* Max # of HP OOS (out of sync) updates */
- #define CFG_DP_RX_HP_OOS_UPDATE_LIMIT_DEFAULT 0
- #define CFG_DP_RX_HP_OOS_UPDATE_LIMIT_MAX 1024
- /* Max Yield time duration for RX Softirq */
- #define CFG_DP_RX_SOFTIRQ_MAX_YIELD_TIME_NS_DEFAULT (500 * 1000)
- #define CFG_DP_RX_SOFTIRQ_MAX_YIELD_TIME_NS_MAX (10 * 1000 * 1000)
- #ifdef WLAN_FEATURE_DP_BUS_BANDWIDTH
- /*
- * <ini>
- * gBusBandwidthUltraHighThreshold - bus bandwidth ultra high threshold
- *
- * @Min: 0
- * @Max: 4294967295UL
- * @Default: 12000
- *
- * This ini specifies the bus bandwidth very high threshold
- *
- * Usage: Internal
- *
- * </ini>
- */
- #define CFG_DP_BUS_BANDWIDTH_ULTRA_HIGH_THRESHOLD \
- CFG_INI_UINT( \
- "gBusBandwidthUltraHighThreshold", \
- 0, \
- 4294967295UL, \
- 12000, \
- CFG_VALUE_OR_DEFAULT, \
- "Bus bandwidth ultra high threshold")
- /*
- * <ini>
- * gBusBandwidthVeryHighThreshold - bus bandwidth very high threshold
- *
- * @Min: 0
- * @Max: 4294967295UL
- * @Default: 10000
- *
- * This ini specifies the bus bandwidth very high threshold
- *
- * Usage: Internal
- *
- * </ini>
- */
- #define CFG_DP_BUS_BANDWIDTH_VERY_HIGH_THRESHOLD \
- CFG_INI_UINT( \
- "gBusBandwidthVeryHighThreshold", \
- 0, \
- 4294967295UL, \
- 10000, \
- CFG_VALUE_OR_DEFAULT, \
- "Bus bandwidth very high threshold")
- /*
- * <ini>
- * gBusBandwidthDBSThreshold - bus bandwidth for DBS mode threshold
- *
- * @Min: 0
- * @Max: 4294967295UL
- * @Default: 6000
- *
- * This ini specifies the bus bandwidth high threshold
- *
- * Usage: Internal
- *
- * </ini>
- */
- #define CFG_DP_BUS_BANDWIDTH_DBS_THRESHOLD \
- CFG_INI_UINT( \
- "gBusBandwidthDBSThreshold", \
- 0, \
- 4294967295UL, \
- 6000, \
- CFG_VALUE_OR_DEFAULT, \
- "Bus bandwidth DBS mode threshold")
- /*
- * <ini>
- * gBusBandwidthHighThreshold - bus bandwidth high threshold
- *
- * @Min: 0
- * @Max: 4294967295UL
- * @Default: 2000
- *
- * This ini specifies the bus bandwidth high threshold
- *
- * Usage: Internal
- *
- * </ini>
- */
- #define CFG_DP_BUS_BANDWIDTH_HIGH_THRESHOLD \
- CFG_INI_UINT( \
- "gBusBandwidthHighThreshold", \
- 0, \
- 4294967295UL, \
- 2000, \
- CFG_VALUE_OR_DEFAULT, \
- "Bus bandwidth high threshold")
- /*
- * <ini>
- * gBusBandwidthMediumThreshold - bus bandwidth medium threshold
- *
- * @Min: 0
- * @Max: 4294967295UL
- * @Default: 500
- *
- * This ini specifies the bus bandwidth medium threshold
- *
- * Usage: Internal
- *
- * </ini>
- */
- #define CFG_DP_BUS_BANDWIDTH_MEDIUM_THRESHOLD \
- CFG_INI_UINT( \
- "gBusBandwidthMediumThreshold", \
- 0, \
- 4294967295UL, \
- 500, \
- CFG_VALUE_OR_DEFAULT, \
- "Bus bandwidth medium threshold")
- /*
- * <ini>
- * gBusBandwidthLowThreshold - bus bandwidth low threshold
- *
- * @Min: 0
- * @Max: 4294967295UL
- * @Default: 150
- *
- * This ini specifies the bus bandwidth low threshold
- *
- * Usage: Internal
- *
- * </ini>
- */
- #define CFG_DP_BUS_BANDWIDTH_LOW_THRESHOLD \
- CFG_INI_UINT( \
- "gBusBandwidthLowThreshold", \
- 0, \
- 4294967295UL, \
- 150, \
- CFG_VALUE_OR_DEFAULT, \
- "Bus bandwidth low threshold")
- /*
- * <ini>
- * gBusBandwidthComputeInterval - bus bandwidth compute interval
- *
- * @Min: 0
- * @Max: 10000
- * @Default: 100
- *
- * This ini specifies thebus bandwidth compute interval
- *
- * Usage: Internal
- *
- * </ini>
- */
- #define CFG_DP_BUS_BANDWIDTH_COMPUTE_INTERVAL \
- CFG_INI_UINT( \
- "gBusBandwidthComputeInterval", \
- 0, \
- 10000, \
- 100, \
- CFG_VALUE_OR_DEFAULT, \
- "Bus bandwidth compute interval")
- /*
- * <ini>
- * gTcpLimitOutputEnable - Control to enable TCP limit output byte
- * @Default: true
- *
- * This ini is used to enable dynamic configuration of TCP limit output bytes
- * tcp_limit_output_bytes param. Enabling this will let driver post message to
- * cnss-daemon, accordingly cnss-daemon will modify the tcp_limit_output_bytes.
- *
- * Supported Feature: Tcp limit output bytes
- *
- * Usage: Internal
- *
- * </ini>
- */
- #define CFG_DP_ENABLE_TCP_LIMIT_OUTPUT \
- CFG_INI_BOOL( \
- "gTcpLimitOutputEnable", \
- true, \
- "Control to enable TCP limit output byte")
- /*
- * <ini>
- * gTcpAdvWinScaleEnable - Control to enable TCP adv window scaling
- * @Default: true
- *
- * This ini is used to enable dynamic configuration of TCP adv window scaling
- * system parameter.
- *
- * Supported Feature: Tcp Advance Window Scaling
- *
- * Usage: Internal
- *
- * </ini>
- */
- #define CFG_DP_ENABLE_TCP_ADV_WIN_SCALE \
- CFG_INI_BOOL( \
- "gTcpAdvWinScaleEnable", \
- true, \
- "Control to enable TCP adv window scaling")
- /*
- * <ini>
- * gTcpDelAckEnable - Control to enable Dynamic Configuration of Tcp Delayed Ack
- * @Default: true
- *
- * This ini is used to enable Dynamic Configuration of Tcp Delayed Ack
- *
- * Related: gTcpDelAckThresholdHigh, gTcpDelAckThresholdLow,
- * gTcpDelAckTimerCount
- *
- * Supported Feature: Tcp Delayed Ack
- *
- * Usage: Internal
- *
- * </ini>
- */
- #define CFG_DP_ENABLE_TCP_DELACK \
- CFG_INI_BOOL( \
- "gTcpDelAckEnable", \
- true, \
- "Control to enable Dynamic Config of Tcp Delayed Ack")
- /*
- * <ini>
- * gTcpDelAckThresholdHigh - High Threshold inorder to trigger TCP Del Ack
- * indication
- * @Min: 0
- * @Max: 16000
- * @Default: 500
- *
- * This ini is used to mention the High Threshold inorder to trigger TCP Del Ack
- * indication i.e the threshold of packets received over a period of 100 ms.
- * i.e to have a low RX throughput requirement
- * Related: gTcpDelAckEnable, gTcpDelAckThresholdLow, gTcpDelAckTimerCount
- *
- * Supported Feature: Tcp Delayed Ack
- *
- * Usage: Internal
- *
- * </ini>
- */
- #define CFG_DP_TCP_DELACK_THRESHOLD_HIGH \
- CFG_INI_UINT( \
- "gTcpDelAckThresholdHigh", \
- 0, \
- 16000, \
- 500, \
- CFG_VALUE_OR_DEFAULT, \
- "High Threshold inorder to trigger TCP Del Ack")
- /*
- * <ini>
- * gTcpDelAckThresholdLow - Low Threshold inorder to trigger TCP Del Ack
- * indication
- * @Min: 0
- * @Max: 10000
- * @Default: 1000
- *
- * This ini is used to mention the Low Threshold inorder to trigger TCP Del Ack
- * indication i.e the threshold of packets received over a period of 100 ms.
- * i.e to have a low RX throughput requirement
- *
- * Related: gTcpDelAckEnable, gTcpDelAckThresholdHigh, gTcpDelAckTimerCount
- *
- * Supported Feature: Tcp Delayed Ack
- *
- * Usage: Internal
- *
- * </ini>
- */
- #define CFG_DP_TCP_DELACK_THRESHOLD_LOW \
- CFG_INI_UINT( \
- "gTcpDelAckThresholdLow", \
- 0, \
- 10000, \
- 1000, \
- CFG_VALUE_OR_DEFAULT, \
- "Low Threshold inorder to trigger TCP Del Ack")
- /*
- * <ini>
- * gTcpDelAckTimerCount - Del Ack Timer Count inorder to trigger TCP Del Ack
- * indication
- * @Min: 1
- * @Max: 1000
- * @Default: 30
- *
- * This ini is used to mention the Del Ack Timer Count inorder to
- * trigger TCP Del Ack indication i.e number of 100 ms periods
- *
- * Related: gTcpDelAckEnable, gTcpDelAckThresholdHigh, gTcpDelAckThresholdLow
- *
- * Supported Feature: Tcp Delayed Ack
- *
- * Usage: Internal
- *
- * </ini>
- */
- #define CFG_DP_TCP_DELACK_TIMER_COUNT \
- CFG_INI_UINT( \
- "gTcpDelAckTimerCount", \
- 1, \
- 1000, \
- 30, \
- CFG_VALUE_OR_DEFAULT, \
- "Del Ack Timer Count inorder to trigger TCP Del Ack")
- /*
- * <ini>
- * gTcpTxHighTputThreshold - High Threshold inorder to trigger High
- * Tx Throughput requirement.
- * @Min: 0
- * @Max: 16000
- * @Default: 500
- *
- * This ini specifies the threshold of packets transmitted
- * over a period of 100 ms beyond which TCP can be considered to have a high
- * TX throughput requirement. The driver uses this condition to tweak TCP TX
- * specific parameters (via cnss-daemon)
- *
- * Supported Feature: To tweak TCP TX n/w parameters
- *
- * Usage: Internal
- *
- * </ini>
- */
- #define CFG_DP_TCP_TX_HIGH_TPUT_THRESHOLD \
- CFG_INI_UINT( \
- "gTcpTxHighTputThreshold", \
- 0, \
- 16000, \
- 500, \
- CFG_VALUE_OR_DEFAULT, \
- "High Threshold inorder to trigger High Tx Tp")
- /*
- * <ini>
- * gBusLowTputCntThreshold - Threshold count to trigger low Tput
- * GRO flush skip
- * @Min: 0
- * @Max: 200
- * @Default: 10
- *
- * This ini is a threshold that if count of times for bus Tput level
- * PLD_BUS_WIDTH_LOW in bus_bw_timer() >= this threshold, will enable skipping
- * GRO flush, current default threshold is 10, then will delay GRO flush-skip
- * 1 second for low Tput level.
- *
- * Supported Feature: GRO flush skip when low T-put
- *
- * Usage: Internal
- *
- * </ini>
- */
- #define CFG_DP_BUS_LOW_BW_CNT_THRESHOLD \
- CFG_INI_UINT( \
- "gBusLowTputCntThreshold", \
- 0, \
- 200, \
- 10, \
- CFG_VALUE_OR_DEFAULT, \
- "Threshold to trigger GRO flush skip for low T-put")
- /*
- * <ini>
- * gHandleLatencyCriticalClients - Enable the handling of latency critical
- * clients in bus bandwidth timer.
- * @Default: false
- *
- * This ini enables the handling of latency critical clients, eg: 11g/a
- * clients, when they are running their corresponding peak throughput.
- *
- * Supported Feature: Latency critical clients in host
- *
- * Usage: External
- *
- * </ini>
- */
- #define CFG_DP_BUS_HANDLE_LATENCY_CRITICAL_CLIENTS \
- CFG_INI_BOOL( \
- "gHandleLatencyCriticalClients", \
- false, \
- "Control to enable latency critical clients")
- #endif /*WLAN_FEATURE_DP_BUS_BANDWIDTH*/
- #ifdef QCA_SUPPORT_TXRX_DRIVER_TCP_DEL_ACK
- /*
- * <ini>
- * gDriverDelAckHighThreshold - High Threshold inorder to trigger TCP
- * delay ack feature in the host.
- * @Min: 0
- * @Max: 70000
- * @Default: 300
- *
- * This ini specifies the threshold of RX packets transmitted
- * over a period of 100 ms beyond which TCP delay ack can be enabled
- * to improve TCP RX throughput requirement.
- *
- * Supported Feature: Tcp Delayed Ack in the host
- *
- * Usage: Internal
- *
- * </ini>
- */
- #define CFG_DP_DRIVER_TCP_DELACK_HIGH_THRESHOLD \
- CFG_INI_UINT( \
- "gDriverDelAckHighThreshold", \
- 0, \
- 70000, \
- 300, \
- CFG_VALUE_OR_DEFAULT, \
- "TCP delack high threshold")
- /*
- * <ini>
- * gDriverDelAckLowThreshold - Low Threshold inorder to disable TCP
- * delay ack feature in the host.
- * @Min: 0
- * @Max: 70000
- * @Default: 100
- *
- * This ini is used to mention the Low Threshold inorder to disable TCP Del
- * Ack feature in the host.
- *
- * Supported Feature: Tcp Delayed Ack in the host
- *
- * Usage: Internal
- *
- * </ini>
- */
- #define CFG_DP_DRIVER_TCP_DELACK_LOW_THRESHOLD \
- CFG_INI_UINT( \
- "gDriverDelAckLowThreshold", \
- 0, \
- 70000, \
- 100, \
- CFG_VALUE_OR_DEFAULT, \
- "TCP delack low threshold")
- /*
- * <ini>
- * gDriverDelAckTimerValue - Timeout value (ms) to send out all TCP del
- * ack frames
- * @Min: 1
- * @Max: 15
- * @Default: 3
- *
- * This ini specifies the time out value to send out all pending TCP delay
- * ACK frames.
- *
- * Supported Feature: Tcp Delayed Ack in the host
- *
- * Usage: Internal
- *
- * </ini>
- */
- #define CFG_DP_DRIVER_TCP_DELACK_TIMER_VALUE \
- CFG_INI_UINT( \
- "gDriverDelAckTimerValue", \
- 1, \
- 15, \
- 3, \
- CFG_VALUE_OR_DEFAULT, \
- "Send out all TCP Del Acks if time out")
- /*
- * <ini>
- * gDriverDelAckPktCount - The maximum number of TCP delay ack frames
- * @Min: 0
- * @Max: 50
- * @Default: 20
- *
- * This ini specifies the maximum number of TCP delayed ack frames.
- *
- * Supported Feature: Tcp Delayed Ack in the host
- *
- * Usage: Internal
- *
- * </ini>
- */
- #define CFG_DP_DRIVER_TCP_DELACK_PKT_CNT \
- CFG_INI_UINT( \
- "gDriverDelAckPktCount", \
- 0, \
- 50, \
- 20, \
- CFG_VALUE_OR_DEFAULT, \
- "No of TCP Del ACK count")
- /*
- * <ini>
- * gDriverDelAckEnable - Control to enable Dynamic Configuration of Tcp
- * Delayed Ack in the host.
- * @Default: true
- *
- * This ini is used to enable Dynamic Configuration of Tcp Delayed Ack
- * in the host.
- *
- * Related: gDriverDelAckHighThreshold, gDriverDelAckLowThreshold,
- * gDriverDelAckPktCount, gDriverDelAckTimerValue
- *
- * Supported Feature: Tcp Delayed Ack in the host
- *
- * Usage: Internal
- *
- * </ini>
- */
- #define CFG_DP_DRIVER_TCP_DELACK_ENABLE \
- CFG_INI_BOOL( \
- "gDriverDelAckEnable", \
- true, \
- "Enable tcp del ack in the driver")
- #endif
- /*
- * <ini>
- * RX_THREAD_CPU_AFFINITY_MASK - CPU mask to affine Rx_thread
- *
- * @Min: 0
- * @Max: 0xFF
- * @Default: 0x02
- *
- * This ini is used to set Rx_thread CPU affinity
- *
- * Supported Feature: Rx_thread
- *
- * Usage: Internal
- *
- * </ini>
- */
- #ifdef RX_PERFORMANCE
- #define CFG_DP_RX_THREAD_CPU_MASK \
- CFG_INI_UINT( \
- "RX_THREAD_CPU_AFFINITY_MASK", \
- 0, \
- 0xFF, \
- 0xFE, \
- CFG_VALUE_OR_DEFAULT, \
- "CPU mask to affine Rx_thread")
- #else
- #define CFG_DP_RX_THREAD_CPU_MASK \
- CFG_INI_UINT( \
- "RX_THREAD_CPU_AFFINITY_MASK", \
- 0, \
- 0xFF, \
- 0, \
- CFG_VALUE_OR_DEFAULT, \
- "CPU mask to affine Rx_thread")
- #endif
- /*
- * <ini>
- * RX_THREAD_UL_CPU_AFFINITY_MASK - CPU mask to affine Rx_thread
- *
- * @Min: 0
- * @Max: 0xFF
- * @Default: 0x0
- *
- * This ini is used to set Rx_thread CPU affinity for uplink traffic
- *
- * Supported Feature: Rx_thread
- *
- * Usage: Internal
- *
- * </ini>
- */
- #define CFG_DP_RX_THREAD_UL_CPU_MASK \
- CFG_INI_UINT( \
- "RX_THREAD_UL_CPU_AFFINITY_MASK", \
- 0, \
- 0xFF, \
- 0x0, \
- CFG_VALUE_OR_DEFAULT, \
- "CPU mask to affine Rx_thread for uplink traffic")
- /*
- * <ini>
- * rpsRxQueueCpuMapList - RPS map for different RX queues
- *
- * @Default: e
- *
- * This ini is used to set RPS map for different RX queues.
- *
- * List of RPS CPU maps for different rx queues registered by WLAN driver
- * Ref - Kernel/Documentation/networking/scaling.txt
- * RPS CPU map for a particular RX queue, selects CPU(s) for bottom half
- * processing of RX packets. For example, for a system with 4 CPUs,
- * 0xe: Use CPU1 - CPU3 and donot use CPU0.
- * 0x0: RPS is disabled, packets are processed on the interrupting CPU.
- .*
- * WLAN driver registers NUM_TX_QUEUES queues for tx and rx each during
- * alloc_netdev_mq. Hence, we need to have a cpu mask for each of the rx queues.
- *
- * For example, if the NUM_TX_QUEUES is 4, a sample WLAN ini entry may look like
- * rpsRxQueueCpuMapList=a b c d
- * For a 4 CPU system (CPU0 - CPU3), this implies:
- * 0xa - (1010) use CPU1, CPU3 for rx queue 0
- * 0xb - (1011) use CPU0, CPU1 and CPU3 for rx queue 1
- * 0xc - (1100) use CPU2, CPU3 for rx queue 2
- * 0xd - (1101) use CPU0, CPU2 and CPU3 for rx queue 3
- * In practice, we may want to avoid the cores which are heavily loaded.
- *
- * Default value of rpsRxQueueCpuMapList. Different platforms may have
- * different configurations for NUM_TX_QUEUES and # of cpus, and will need to
- * configure an appropriate value via ini file. Setting default value to 'e' to
- * avoid use of CPU0 (since its heavily used by other system processes) by rx
- * queue 0, which is currently being used for rx packet processing.
- *
- * Maximum length of string used to hold a list of cpu maps for various rx
- * queues. Considering a 16 core system with 5 rx queues, a RPS CPU map
- * list may look like -
- * rpsRxQueueCpuMapList = ffff ffff ffff ffff ffff
- * (all 5 rx queues can be processed on all 16 cores)
- * max string len = 24 + 1(for '\0'). Considering 30 to be on safe side.
- *
- * Supported Feature: Rx_thread
- *
- * Usage: Internal
- * </ini>
- */
- #define CFG_DP_RPS_RX_QUEUE_CPU_MAP_LIST \
- CFG_INI_STRING( \
- "rpsRxQueueCpuMapList", \
- 1, \
- 30, \
- "e", \
- "specify RPS map for different RX queues")
- /*
- * <ini>
- * gEnableTxOrphan- Enable/Disable orphaning of Tx packets
- * @Default: false
- *
- * This ini is used to enable/disable orphaning of Tx packets.
- *
- * Related: None
- *
- * Usage: External
- *
- * </ini>
- */
- #define CFG_DP_TX_ORPHAN_ENABLE \
- CFG_INI_BOOL( \
- "gEnableTxOrphan", \
- false, \
- "orphaning of Tx packets")
- /*
- * <ini>
- * rx_mode - Control to decide rx mode for packet processing
- *
- * @Min: 0
- * @Max: (CFG_ENABLE_RX_THREAD | CFG_ENABLE_RPS | CFG_ENABLE_NAPI | \
- * CFG_ENABLE_DYNAMIC_RPS)
- *
- * Some possible configurations:
- * rx_mode=0 - Uses tasklets for bottom half
- * CFG_ENABLE_NAPI (rx_mode=4) - Uses NAPI for bottom half
- * CFG_ENABLE_RX_THREAD | CFG_ENABLE_NAPI (rx_mode=5) - NAPI for bottom half,
- * rx_thread for stack. Single threaded.
- * CFG_ENABLE_DP_RX_THREAD | CFG_ENABLE_NAPI (rx_mode=10) - NAPI for bottom
- * half, dp_rx_thread for stack processing. Supports multiple rx threads.
- *
- * Usage: Internal
- *
- * </ini>
- */
- #define CFG_DP_RX_MODE \
- CFG_INI_UINT("rx_mode", \
- 0, CFG_RX_MODE_MAX, CFG_RX_MODE_DEFAULT, \
- CFG_VALUE_OR_DEFAULT, \
- "Control to decide rx mode for packet processing")
- /*
- * <ini>
- * tx_comp_loop_pkt_limit - Control to decide max # of packets to be processed
- * in 1 tx comp loop
- *
- * @Min: 8
- * @Max: CFG_DP_TX_COMP_LOOP_PKT_LIMIT_MAX
- *
- * Usage: Internal
- *
- * </ini>
- */
- #define CFG_DP_TX_COMP_LOOP_PKT_LIMIT \
- CFG_INI_UINT("tx_comp_loop_pkt_limit", \
- 1, CFG_DP_TX_COMP_LOOP_PKT_LIMIT_MAX, \
- CFG_DP_TX_COMP_LOOP_PKT_LIMIT_DEFAULT, \
- CFG_VALUE_OR_DEFAULT, \
- "Control to decide tx comp loop pkt limit")
- /*
- * <ini>
- * rx_reap_loop_pkt_limit - Control to decide max # of packets to be reaped
- * in 1 dp_rx_process reap loop
- *
- * @Min: 8
- * @Max: CFG_DP_RX_REAP_LOOP_PKT_LIMIT_MAX
- *
- * Usage: Internal
- *
- * </ini>
- */
- #define CFG_DP_RX_REAP_LOOP_PKT_LIMIT \
- CFG_INI_UINT("rx_reap_loop_pkt_limit", \
- 0, CFG_DP_RX_REAP_LOOP_PKT_LIMIT_MAX, \
- CFG_DP_RX_REAP_LOOP_PKT_LIMIT_DEFAULT, \
- CFG_VALUE_OR_DEFAULT, \
- "Control to decide rx reap loop packet limit")
- /*
- * <ini>
- * rx_hp_oos_update_limit - Control to decide max # of HP OOS (out of sync)
- * updates
- *
- * @Min: 0
- * @Max: CFG_DP_RX_HP_OOS_UPDATE_LIMIT_MAX
- *
- * Usage: Internal
- *
- * </ini>
- */
- #define CFG_DP_RX_HP_OOS_UPDATE_LIMIT \
- CFG_INI_UINT("rx_hp_oos_update_limit", \
- 0, CFG_DP_RX_HP_OOS_UPDATE_LIMIT_MAX, \
- CFG_DP_RX_HP_OOS_UPDATE_LIMIT_DEFAULT, \
- CFG_VALUE_OR_DEFAULT, \
- "Control to decide HP OOS update limit")
- /*
- * <ini>
- * rx_softirq_max_yield_duration_ns - Control to decide max duration for RX
- * softirq
- *
- * @Min: 100 * 1000 , 100us
- * @Max: CFG_DP_RX_SOFTIRQ_MAX_YIELD_TIME_NS_MAX
- *
- * Usage: Internal
- *
- * </ini>
- */
- #define CFG_DP_RX_SOFTIRQ_MAX_YIELD_TIME_NS \
- CFG_INI_UINT("rx_softirq_max_yield_duration_ns", \
- 100 * 1000, CFG_DP_RX_SOFTIRQ_MAX_YIELD_TIME_NS_MAX, \
- CFG_DP_RX_SOFTIRQ_MAX_YIELD_TIME_NS_DEFAULT, \
- CFG_VALUE_OR_DEFAULT, \
- "max yield time duration for RX Softirq")
- /*
- * <ini>
- * enable_multicast_replay_filter - Enable filtering of replayed multicast
- * packets
- *
- * In a typical infrastructure setup, it is quite normal to receive
- * replayed multicast packets. These packets may cause more harm than
- * help if not handled properly. Providing a configuration option
- * to enable filtering of such packets
- *
- * </ini>
- */
- #define CFG_DP_FILTER_MULTICAST_REPLAY \
- CFG_INI_BOOL("enable_multicast_replay_filter", \
- true, "Enable filtering of replayed multicast packets")
- /*
- * <ini>
- * rx_wakelock_timeout - Amount of time to hold wakelock for RX unicast packets
- * @Min: 0
- * @Max: 100
- * @Default: 50
- *
- * This ini item configures the amount of time, in milliseconds, that the driver
- * should prevent system power collapse after receiving an RX unicast packet.
- * A conigured value of 0 disables the RX Wakelock feature completely.
- *
- * Related: None.
- *
- * Supported Feature: RX Wakelock
- *
- * Usage: Internal/External
- *
- * </ini>
- */
- #define CFG_DP_RX_WAKELOCK_TIMEOUT \
- CFG_INI_UINT("rx_wakelock_timeout", \
- 0, 100, 50, CFG_VALUE_OR_DEFAULT, \
- "Amount of time to hold wakelock for RX unicast packets")
- /*
- * <ini>
- * num_dp_rx_threads - Control to set the number of dp rx threads
- *
- * @Min: 1
- * @Max: 4
- * @Default: 1
- *
- * Usage: Internal
- *
- * </ini>
- */
- #define CFG_DP_NUM_DP_RX_THREADS \
- CFG_INI_UINT("num_dp_rx_threads", \
- 1, 4, 1, CFG_VALUE_OR_DEFAULT, \
- "Control to set the number of dp rx threads")
- /*
- * <ini>
- * ce_service_max_rx_ind_flush - Maximum number of HTT messages
- * to be processed per NAPI poll
- *
- * @Min: 1
- * @Max: 32
- * @Default: 1
- *
- * Usage: Internal
- *
- * </ini>
- */
- #define CFG_DP_CE_SERVICE_MAX_RX_IND_FLUSH \
- CFG_INI_UINT("ce_service_max_rx_ind_flush", \
- 1, 32, 1, \
- CFG_VALUE_OR_DEFAULT, "Ctrl to set ce service max rx ind flsh")
- /*
- * <ini>
- * ce_service_max_yield_time - Time in microseconds after which
- * a NAPI poll must yield
- *
- * @Min: 500
- * @Max: 10000
- * @Default: 500
- *
- * Usage: Internal
- *
- * </ini>
- */
- #define CFG_DP_CE_SERVICE_MAX_YIELD_TIME \
- CFG_INI_UINT("ce_service_max_yield_time", \
- 500, 10000, 500, \
- CFG_VALUE_OR_DEFAULT, "Ctrl to set ce service max yield time")
- #ifdef WLAN_FEATURE_FASTPATH
- #define CFG_DP_ENABLE_FASTPATH \
- CFG_INI_BOOL("gEnableFastPath", \
- false, "Ctrl to enable fastpath feature")
- #define CFG_DP_ENABLE_FASTPATH_ALL \
- CFG(CFG_DP_ENABLE_FASTPATH)
- #else
- #define CFG_DP_ENABLE_FASTPATH_ALL
- #endif
- #define CFG_DP_ENABLE_TCP_PARAM_UPDATE \
- CFG_INI_BOOL("enable_tcp_param_update", \
- false, "configure TCP param through Wi-Fi HAL")
- /*
- * <ini>
- *
- * Enable/disable DPTRACE
- * Enabling this might have performace impact.
- *
- * Config DPTRACE
- * The sequence of params is important. If some param is missing, defaults are
- * considered.
- * Param 1: Enable/Disable DP Trace live mode (uint8_t)
- * Param 2: DP Trace live mode high bandwidth thresh.(uint8_t)
- * (packets/second) beyond which DP Trace is disabled. Decimal Val.
- * MGMT, DHCP, EAPOL, ARP pkts are not counted. ICMP and Data are.
- * Param 3: Default Verbosity (0-4)
- * Param 4: Proto Bitmap (uint8_t). Decimal Value.
- * (decimal 62 = 0x3e)
- * e.g., to disable live mode, use the following param in the ini file.
- * gDptraceConfig = 0
- * e.g., to enable dptrace live mode and set the thresh as 6,
- * use the following param in the ini file.
- * gDptraceConfig = 1, 6
- *
- * </ini>
- */
- #ifdef CONFIG_DP_TRACE
- #define CFG_DP_ENABLE_DP_TRACE \
- CFG_INI_BOOL("enable_dp_trace", \
- true, "Ctrl to enable dp trace feature")
- #define CFG_DP_DP_TRACE_CONFIG \
- CFG_INI_STRING( \
- "gDptraceConfig", \
- 1, \
- 20, \
- "1, 6, 2, 126", \
- "dp trace configuration string")
- /*
- * <ini>
- * dp_proto_event_bitmap - Control for which protocol packet diag event should
- * be sent to user space.
- * @Min: 0
- * @Max: 0x17
- * @Default: 0x6
- *
- * This ini is used to control for which protocol packet diag event should be
- * sent to user space.
- *
- * QDF_NBUF_PKT_TRAC_TYPE_DNS 0x01
- * QDF_NBUF_PKT_TRAC_TYPE_EAPOL 0x02
- * QDF_NBUF_PKT_TRAC_TYPE_DHCP 0x04
- * QDF_NBUF_PKT_TRAC_TYPE_ARP 0x10
- *
- * Related: None
- *
- * Supported Feature: STA, SAP
- *
- * Usage: Internal
- *
- * <ini>
- */
- #define CFG_DP_PROTO_EVENT_BITMAP \
- CFG_INI_UINT("dp_proto_event_bitmap", \
- 0, 0x17, 0x17, \
- CFG_VALUE_OR_DEFAULT, \
- "Control for which protocol type diag log should be sent")
- #define CFG_DP_CONFIG_DP_TRACE_ALL \
- CFG(CFG_DP_ENABLE_DP_TRACE) \
- CFG(CFG_DP_DP_TRACE_CONFIG) \
- CFG(CFG_DP_PROTO_EVENT_BITMAP)
- #else
- #define CFG_DP_CONFIG_DP_TRACE_ALL
- #endif
- #ifdef WLAN_NUD_TRACKING
- /*
- * <ini>
- * gEnableNUDTracking - Will enable or disable NUD tracking within driver
- * @Min: 0
- * @Max: 3
- * @Default: 2
- *
- * This ini is used to specify the behaviour of the driver for NUD tracking.
- * If the ini value is:-
- * 0: Driver will not track the NUD failures, and ignore the same.
- * 1: Driver will track the NUD failures and if honoured will disconnect from
- * the connected BSSID.
- * 2: Driver will track the NUD failures and if honoured will roam away from
- * the connected BSSID to a new BSSID to retain the data connectivity.
- * 3: Driver will try to roam to a new AP but if roam fails, disconnect.
- * Related: None
- *
- * Supported Feature: STA
- *
- * Usage: External
- *
- * <ini>
- */
- #define CFG_DP_ENABLE_NUD_TRACKING \
- CFG_INI_UINT("gEnableNUDTracking", \
- 0, \
- 3, \
- 2, \
- CFG_VALUE_OR_DEFAULT, "Driver NUD tracking behaviour")
- #define CFG_DP_ENABLE_NUD_TRACKING_ALL \
- CFG(CFG_DP_ENABLE_NUD_TRACKING)
- #else
- #define CFG_DP_ENABLE_NUD_TRACKING_ALL
- #endif
- #ifdef WLAN_SUPPORT_TXRX_HL_BUNDLE
- #define CFG_DP_HL_BUNDLE_HIGH_TH \
- CFG_INI_UINT( \
- "tx_bundle_high_threashold", \
- 0, \
- 70000, \
- 4330, \
- CFG_VALUE_OR_DEFAULT, \
- "tx bundle high threashold")
- #define CFG_DP_HL_BUNDLE_LOW_TH \
- CFG_INI_UINT( \
- "tx_bundle_low_threashold", \
- 0, \
- 70000, \
- 4000, \
- CFG_VALUE_OR_DEFAULT, \
- "tx bundle low threashold")
- #define CFG_DP_HL_BUNDLE_TIMER_VALUE \
- CFG_INI_UINT( \
- "tx_bundle_timer_in_ms", \
- 10, \
- 10000, \
- 100, \
- CFG_VALUE_OR_DEFAULT, \
- "tx bundle timer value in ms")
- #define CFG_DP_HL_BUNDLE_SIZE \
- CFG_INI_UINT( \
- "tx_bundle_size", \
- 0, \
- 64, \
- 16, \
- CFG_VALUE_OR_DEFAULT, \
- "tx bundle size")
- #endif
- #define WLAN_CFG_ICMP_REQ_TO_FW_MARK_ALL (-1)
- #define WLAN_CFG_ICMP_REQ_TO_FW_MARK_INTERVAL 0
- #define WLAN_CFG_ICMP_REQ_TO_FW_MARK_INTERVAL_MIN (-1)
- #define WLAN_CFG_ICMP_REQ_TO_FW_MARK_INTERVAL_MAX 100000
- /*
- * <ini>
- * icmp_req_to_fw_mark_interval - Interval to mark the ICMP Request packet
- * to be sent to FW.
- * @Min: -1
- * @Max: 100000
- * @Default: 0
- *
- * This ini is used to control DP Software to mark the ICMP request packets
- * to be sent to FW at certain interval (in milliseconds).
- * The value 0 is used to disable marking of ICMP requests to be sent to FW.
- * The value -1 is used to mark all the ICMP requests to be sent to FW.
- * Any value greater than zero indicates the time interval (in milliseconds)
- * at which ICMP requests are marked to be sent to FW.
- *
- * Supported modes: All modes
- *
- * Usage: External
- *
- * </ini>
- */
- #define CFG_DP_ICMP_REQ_TO_FW_MARK_INTERVAL \
- CFG_INI_INT("icmp_req_to_fw_mark_interval", \
- WLAN_CFG_ICMP_REQ_TO_FW_MARK_INTERVAL_MIN, \
- WLAN_CFG_ICMP_REQ_TO_FW_MARK_INTERVAL_MAX, \
- WLAN_CFG_ICMP_REQ_TO_FW_MARK_INTERVAL, \
- CFG_VALUE_OR_DEFAULT, \
- "Interval to mark ICMP Request packets to be sent to FW")
- /*TODO Flow control part to be moved to DP later*/
- #ifdef WLAN_FEATURE_DP_BUS_BANDWIDTH
- #define CFG_DP_BUS_BANDWIDTH \
- CFG(CFG_DP_BUS_BANDWIDTH_ULTRA_HIGH_THRESHOLD) \
- CFG(CFG_DP_BUS_BANDWIDTH_VERY_HIGH_THRESHOLD) \
- CFG(CFG_DP_BUS_BANDWIDTH_DBS_THRESHOLD) \
- CFG(CFG_DP_BUS_BANDWIDTH_HIGH_THRESHOLD) \
- CFG(CFG_DP_BUS_BANDWIDTH_MEDIUM_THRESHOLD) \
- CFG(CFG_DP_BUS_BANDWIDTH_LOW_THRESHOLD) \
- CFG(CFG_DP_BUS_BANDWIDTH_COMPUTE_INTERVAL) \
- CFG(CFG_DP_ENABLE_TCP_LIMIT_OUTPUT) \
- CFG(CFG_DP_ENABLE_TCP_ADV_WIN_SCALE) \
- CFG(CFG_DP_ENABLE_TCP_DELACK) \
- CFG(CFG_DP_TCP_DELACK_THRESHOLD_HIGH) \
- CFG(CFG_DP_TCP_DELACK_THRESHOLD_LOW) \
- CFG(CFG_DP_TCP_DELACK_TIMER_COUNT) \
- CFG(CFG_DP_TCP_TX_HIGH_TPUT_THRESHOLD) \
- CFG(CFG_DP_BUS_LOW_BW_CNT_THRESHOLD) \
- CFG(CFG_DP_BUS_HANDLE_LATENCY_CRITICAL_CLIENTS)
- #else
- #define CFG_DP_BUS_BANDWIDTH
- #endif
- #ifdef QCA_SUPPORT_TXRX_DRIVER_TCP_DEL_ACK
- #define CFG_DP_DRIVER_TCP_DELACK \
- CFG(CFG_DP_DRIVER_TCP_DELACK_HIGH_THRESHOLD) \
- CFG(CFG_DP_DRIVER_TCP_DELACK_LOW_THRESHOLD) \
- CFG(CFG_DP_DRIVER_TCP_DELACK_TIMER_VALUE) \
- CFG(CFG_DP_DRIVER_TCP_DELACK_PKT_CNT) \
- CFG(CFG_DP_DRIVER_TCP_DELACK_ENABLE)
- #else
- #define CFG_DP_DRIVER_TCP_DELACK
- #endif
- #ifdef WLAN_SUPPORT_TXRX_HL_BUNDLE
- #define CFG_DP_HL_BUNDLE \
- CFG(CFG_DP_HL_BUNDLE_HIGH_TH) \
- CFG(CFG_DP_HL_BUNDLE_LOW_TH) \
- CFG(CFG_DP_HL_BUNDLE_TIMER_VALUE) \
- CFG(CFG_DP_HL_BUNDLE_SIZE)
- #else
- #define CFG_DP_HL_BUNDLE
- #endif
- #define CFG_DP_ALL \
- CFG(CFG_DP_RX_THREAD_CPU_MASK) \
- CFG(CFG_DP_RX_THREAD_UL_CPU_MASK) \
- CFG(CFG_DP_RPS_RX_QUEUE_CPU_MAP_LIST) \
- CFG(CFG_DP_TX_ORPHAN_ENABLE) \
- CFG(CFG_DP_RX_MODE) \
- CFG(CFG_DP_TX_COMP_LOOP_PKT_LIMIT)\
- CFG(CFG_DP_RX_REAP_LOOP_PKT_LIMIT)\
- CFG(CFG_DP_RX_HP_OOS_UPDATE_LIMIT)\
- CFG(CFG_DP_RX_SOFTIRQ_MAX_YIELD_TIME_NS)\
- CFG(CFG_DP_CE_SERVICE_MAX_RX_IND_FLUSH) \
- CFG(CFG_DP_CE_SERVICE_MAX_YIELD_TIME) \
- CFG(CFG_DP_ENABLE_TCP_PARAM_UPDATE) \
- CFG(CFG_DP_FILTER_MULTICAST_REPLAY) \
- CFG(CFG_DP_RX_WAKELOCK_TIMEOUT) \
- CFG(CFG_DP_NUM_DP_RX_THREADS) \
- CFG(CFG_DP_ICMP_REQ_TO_FW_MARK_INTERVAL) \
- CFG_DP_ENABLE_FASTPATH_ALL \
- CFG_DP_BUS_BANDWIDTH \
- CFG_DP_DRIVER_TCP_DELACK \
- CFG_DP_ENABLE_NUD_TRACKING_ALL \
- CFG_DP_CONFIG_DP_TRACE_ALL \
- CFG_DP_HL_BUNDLE
- #endif /* WLAN_DP_CFG_H__ */
|