1# Nordic Wi-Fi driver for nRF70 series SoCs
2#
3# Copyright (c) 2024 Nordic Semiconductor
4#
5# SPDX-License-Identifier: Apache-2.0
6#
7
8menuconfig WIFI_NRF70
9	bool "nRF70 driver"
10	select NET_L2_WIFI_MGMT if NETWORKING
11	select NET_L2_ETHERNET_MGMT if NETWORKING && NET_L2_ETHERNET
12	select WIFI_USE_NATIVE_NETWORKING if NETWORKING
13	select EXPERIMENTAL if !SOC_SERIES_NRF53X && !SOC_SERIES_NRF91X
14	select NRF70_BUSLIB
15	default y
16	depends on \
17		DT_HAS_NORDIC_NRF7002_SPI_ENABLED || DT_HAS_NORDIC_NRF7002_QSPI_ENABLED || \
18		DT_HAS_NORDIC_NRF7001_SPI_ENABLED || DT_HAS_NORDIC_NRF7001_QSPI_ENABLED || \
19		DT_HAS_NORDIC_NRF7000_SPI_ENABLED || DT_HAS_NORDIC_NRF7000_QSPI_ENABLED
20	help
21	  Nordic Wi-Fi Driver
22
23if WIFI_NRF70
24# Hidden symbols for internal use
25config WIFI_NRF7002
26	bool
27	default y if DT_HAS_NORDIC_NRF7002_SPI_ENABLED || DT_HAS_NORDIC_NRF7002_QSPI_ENABLED
28
29config WIFI_NRF7001
30	bool
31	default y if DT_HAS_NORDIC_NRF7001_SPI_ENABLED || DT_HAS_NORDIC_NRF7001_QSPI_ENABLED
32
33config WIFI_NRF7000
34	bool
35	default y if DT_HAS_NORDIC_NRF7000_SPI_ENABLED || DT_HAS_NORDIC_NRF7000_QSPI_ENABLED
36
37config NRF70_QSPI_LOW_POWER
38	bool "low power mode in QSPI"
39	default y if NRF_WIFI_LOW_POWER
40
41choice NRF70_OPER_MODES
42	bool "nRF70 operating modes"
43	default NRF70_SYSTEM_MODE if !WIFI_NRF7000
44	default NRF70_SCAN_ONLY if WIFI_NRF7000
45	help
46	  Select the operating mode of the nRF70 driver
47
48config NRF70_SCAN_ONLY
49	bool "nRF70 scan only mode"
50	help
51	  Select this option to enable scan only mode of the nRF70 driver
52
53config NRF70_SYSTEM_MODE
54	bool "System mode of the nRF70 driver"
55	help
56	  Select this option to enable system mode of the nRF70 driver
57
58config NRF70_RADIO_TEST
59	bool "Radio test mode of the nRF70 driver"
60
61config NRF70_OFFLOADED_RAW_TX
62	bool "Offloaded raw TX mode of the nRF70 driver"
63
64endchoice
65
66config NET_L2_ETHERNET
67	default y if (!NRF70_RADIO_TEST && !NRF70_OFFLOADED_RAW_TX)
68
69if NRF70_SYSTEM_MODE
70config NRF70_STA_MODE
71	bool "nRF70 STA mode"
72	default y
73	depends on WIFI_NRF7002 || WIFI_NRF7001
74	select WIFI_NM_WPA_SUPPLICANT
75	select NRF70_DATA_TX
76	help
77	  Select this option to enable STA mode of the nRF70 driver.
78config NRF70_AP_MODE
79	bool "Access point mode"
80	depends on WIFI_NRF7002 || WIFI_NRF7001
81	select NRF70_DATA_TX
82	depends on WIFI_NM_WPA_SUPPLICANT_AP
83	default y if WIFI_NM_WPA_SUPPLICANT_AP
84
85config NRF70_P2P_MODE
86	bool "P2P support in driver"
87
88config NRF70_SYSTEM_WITH_RAW_MODES
89	bool
90	default y if (NRF70_RAW_DATA_TX || NRF70_RAW_DATA_RX || NRF70_PROMISC_DATA_RX)
91	depends on WIFI_NRF7002 || WIFI_NRF7001
92	help
93	  Select this option to enable system mode of the nRF70 driver with raw modes.
94
95config NRF70_RAW_DATA_TX
96	bool "RAW TX data path in the driver"
97	select EXPERIMENTAL
98
99config NRF70_RAW_DATA_RX
100	bool "RAW RX sniffer operation in the driver"
101	select EXPERIMENTAL
102
103config NRF70_PROMISC_DATA_RX
104	bool "Promiscuous RX sniffer operation in the driver"
105	select WIFI_NM_WPA_SUPPLICANT
106	select EXPERIMENTAL
107	select NET_PROMISCUOUS_MODE
108
109config NRF70_DATA_TX
110	bool
111endif # NRF70_SYSTEM_MODE
112
113config NRF_WIFI_IF_AUTO_START
114	bool "Wi-Fi interface auto start on boot"
115	default y
116
117choice NRF_WIFI_FW_BLOB_HANDLING
118	prompt "nRF70 Firmware blob handling"
119	depends on !BUILD_ONLY_NO_BLOBS
120	default NRF_WIFI_PATCHES_BUILTIN
121
122config NRF_WIFI_PATCHES_BUILTIN
123	bool "Store nRF70 FW patches as part of the driver"
124	help
125	  Select this option to store nRF70 FW patches as part of the driver.
126	  This option impacts the code memory footprint of the driver.
127
128config NRF_WIFI_PATCHES_EXTERNAL
129	bool "Load nRF70 FW patches from external binary"
130	help
131	  Select this option to load nRF70 FW patches from an external tooling.
132endchoice
133
134config NRF_WIFI_LOW_POWER
135	bool "Low power mode in nRF Wi-Fi chipsets"
136	default y
137
138config NRF70_TCP_IP_CHECKSUM_OFFLOAD
139	bool "TCP/IP checksum offload"
140	default y
141
142config NRF70_REG_DOMAIN
143	string "The ISO/IEC alpha2 country code for the country in which this device is currently operating. Default 00 (World regulatory)"
144	# 00 is used for World regulatory
145	default "00"
146
147# Making calls to RPU from net_mgmt callbacks.
148#
149# If WPA supplicant is enabled, then don't override as it has higher
150# stack requirements.
151config NET_MGMT_EVENT_STACK_SIZE
152	default 2048 if !WIFI_NM_WPA_SUPPLICANT
153	default 4600
154
155config NRF70_LOG_VERBOSE
156	bool "Maintains the verbosity of information in logs"
157	default y
158
159module = WIFI_NRF70
160module-dep = LOG
161module-str = Log level for Wi-Fi nRF70 driver
162module-help = Sets log level for Wi-Fi nRF70 driver
163source "subsys/logging/Kconfig.template.log_config"
164
165config WIFI_NRF70_LOG_LEVEL
166	# Enable error by default
167	default 1
168
169config NRF70_2_4G_ONLY
170	def_bool y if WIFI_NRF7001
171
172# Wi-Fi and SR Coexistence Hardware configuration.
173config NRF70_SR_COEX
174	bool "Wi-Fi and SR coexistence support"
175
176config NRF70_SR_COEX_RF_SWITCH
177	bool "GPIO configuration to control SR side RF switch position"
178	depends on $(dt_node_has_prop,nrf70, srrf-switch-gpios)
179	depends on NRF70_SR_COEX
180	help
181	  Select this option to enable GPIO configuration to control SR side RF switch position.
182	  If this GPIO is asserted (1), the SR side RF switch is connected to the Wi-Fi side (shared antenna).
183	  If this GPIO is de-asserted (0), the SR side RF switch is connected to the SR side (separate antenna).
184
185config NRF70_WORKQ_STACK_SIZE
186	int "Stack size for workqueue"
187	default 4096
188
189config NRF70_WORKQ_MAX_ITEMS
190	int "Maximum work items for all workqueues"
191	default 100
192
193config NRF70_MAX_TX_PENDING_QLEN
194	int "Maximum number of pending TX packets"
195	default 18
196
197config NRF70_UTIL
198	depends on SHELL
199	bool "Utility shell in nRF70 driver"
200
201config NRF70_QSPI_LOW_POWER
202	bool "low power mode in QSPI"
203	default y if NRF_WIFI_LOW_POWER
204
205config NRF70_PCB_LOSS_2G
206	int "PCB loss for 2.4 GHz band"
207	default 0
208	range 0 4
209	help
210	  Specifies PCB loss from the antenna connector to the RF pin.
211	  The values are in dB scale in steps of 1 dB and range of 0-4 dB.
212	  The loss is considered in the RX path only.
213
214config NRF70_PCB_LOSS_5G_BAND1
215	int "PCB loss for 5 GHz band (5150 MHz - 5350 MHz, Channel-32 - Channel-68)"
216	default 0
217	range 0 4
218	help
219	  Specifies PCB loss from the antenna connector to the RF pin.
220	  The values are in dB scale in steps of 1 dB and range of 0-4 dB.
221	  The loss is considered in the RX path only.
222
223config NRF70_PCB_LOSS_5G_BAND2
224	int "PCB loss for 5 GHz band (5470 MHz - 5730 MHz, Channel-96 - Channel-144)"
225	default 0
226	range 0 4
227	help
228	  Specifies PCB loss from the antenna connector to the RF pin.
229	  The values are in dB scale in steps of 1 dB and range of 0-4 dB.
230	  The loss is considered in the RX path only.
231
232config NRF70_PCB_LOSS_5G_BAND3
233	int "PCB loss for 5 GHz band (5730 MHz - 5895 MHz, Channel-149 - Channel-177)"
234	default 0
235	range 0 4
236	help
237	  Specifies PCB loss from the antenna connector to the RF pin.
238	  The values are in dB scale in steps of 1 dB and range of 0-4 dB.
239	  The loss is considered in the RX path only.
240
241config NRF70_ANT_GAIN_2G
242	int "Antenna gain for 2.4 GHz band"
243	default 0
244	range 0 6
245
246config NRF70_ANT_GAIN_5G_BAND1
247	int "Antenna gain for 5 GHz band (5150 MHz - 5350 MHz)"
248	default 0
249	range 0 6
250
251config NRF70_ANT_GAIN_5G_BAND2
252	int "Antenna gain for 5 GHz band (5470 MHz - 5730 MHz)"
253	default 0
254	range 0 6
255
256config NRF70_ANT_GAIN_5G_BAND3
257	int "Antenna gain for 5 GHz band (5730 MHz - 5895 MHz)"
258	default 0
259	range 0 6
260
261config NRF70_BAND_2G_LOWER_EDGE_BACKOFF_DSSS
262	int "DSSS Transmit power backoff (in dB) for lower edge of 2.4 GHz frequency band"
263	default 0
264	range 0 10
265
266config NRF70_BAND_2G_LOWER_EDGE_BACKOFF_HT
267	int "HT/VHT Transmit power backoff (in dB) for lower edge of 2.4 GHz frequency band"
268	default 0
269	range 0 10
270
271config NRF70_BAND_2G_LOWER_EDGE_BACKOFF_HE
272	int "HE Transmit power backoff (in dB) for lower edge of 2.4 GHz frequency band"
273	default 0
274	range 0 10
275
276config NRF70_BAND_2G_UPPER_EDGE_BACKOFF_DSSS
277	int "DSSS Transmit power backoff (in dB) for upper edge of 2.4 GHz frequency band"
278	default 0
279	range 0 10
280
281config NRF70_BAND_2G_UPPER_EDGE_BACKOFF_HT
282	int "HT/VHT Transmit power backoff (in dB) for upper edge of 2.4 GHz frequency band"
283	default 0
284	range 0 10
285
286config NRF70_BAND_2G_UPPER_EDGE_BACKOFF_HE
287	int "HE Transmit power backoff (in dB) for upper edge of 2.4 GHz frequency band"
288	default 0
289	range 0 10
290
291config NRF70_BAND_UNII_1_LOWER_EDGE_BACKOFF_HT
292	int "HT/VHT Transmit power backoff (in dB) for lower edge of UNII-1 frequency band"
293	default 0
294	range 0 10
295
296config NRF70_BAND_UNII_1_LOWER_EDGE_BACKOFF_HE
297	int "HE Transmit power backoff (in dB) for lower edge of UNII-1 frequency band"
298	default 0
299	range 0 10
300
301config NRF70_BAND_UNII_1_UPPER_EDGE_BACKOFF_HT
302	int "HT/VHT Transmit power backoff (in dB) for upper edge of UNII-1 frequency band"
303	default 0
304	range 0 10
305
306config NRF70_BAND_UNII_1_UPPER_EDGE_BACKOFF_HE
307	int "HE Transmit power backoff (in dB) for upper edge of UNII-1 frequency band"
308	default 0
309	range 0 10
310
311config NRF70_BAND_UNII_2A_LOWER_EDGE_BACKOFF_HT
312	int "HT/VHT Transmit power backoff (in dB) for lower edge of UNII-2A frequency band"
313	default 0
314	range 0 10
315
316config NRF70_BAND_UNII_2A_LOWER_EDGE_BACKOFF_HE
317	int "HE Transmit power backoff (in dB) for lower edge of UNII-2A frequency band"
318	default 0
319	range 0 10
320
321config NRF70_BAND_UNII_2A_UPPER_EDGE_BACKOFF_HT
322	int "HT/VHT Transmit power backoff (in dB) for upper edge of UNII-2A frequency band"
323	default 0
324	range 0 10
325
326config NRF70_BAND_UNII_2A_UPPER_EDGE_BACKOFF_HE
327	int "HE Transmit power backoff (in dB) for upper edge of UNII-2A frequency band"
328	default 0
329	range 0 10
330
331config NRF70_BAND_UNII_2C_LOWER_EDGE_BACKOFF_HT
332	int "HT/VHT Transmit power backoff (in dB) for lower edge of UNII-2C frequency band"
333	default 0
334	range 0 10
335
336config NRF70_BAND_UNII_2C_LOWER_EDGE_BACKOFF_HE
337	int "HE Transmit power backoff (in dB) for lower edge of UNII-2C frequency band"
338	default 0
339	range 0 10
340
341config NRF70_BAND_UNII_2C_UPPER_EDGE_BACKOFF_HT
342	int "HT/VHT Transmit power backoff (in dB) for upper edge of UNII-2C frequency band"
343	default 0
344	range 0 10
345
346config NRF70_BAND_UNII_2C_UPPER_EDGE_BACKOFF_HE
347	int "HE Transmit power backoff (in dB) for upper edge of UNII-2C frequency band"
348	default 0
349	range 0 10
350
351config NRF70_BAND_UNII_3_LOWER_EDGE_BACKOFF_HT
352	int "HT/VHT Transmit power backoff (in dB) for lower edge of UNII-3 frequency band"
353	default 0
354	range 0 10
355
356config NRF70_BAND_UNII_3_LOWER_EDGE_BACKOFF_HE
357	int "HE Transmit power backoff (in dB) for lower edge of UNII-3 frequency band"
358	default 0
359	range 0 10
360
361config NRF70_BAND_UNII_3_UPPER_EDGE_BACKOFF_HT
362	int "HT/VHT Transmit power backoff (in dB) for upper edge of UNII-3 frequency band"
363	default 0
364	range 0 10
365
366config NRF70_BAND_UNII_3_UPPER_EDGE_BACKOFF_HE
367	int "HE Transmit power backoff (in dB) for upper edge of UNII-3 frequency band"
368	default 0
369	range 0 10
370
371config NRF70_BAND_UNII_4_LOWER_EDGE_BACKOFF_HT
372	int "HT/VHT Transmit power backoff (in dB) for lower edge of UNII-4 frequency band"
373	default 0
374	range 0 10
375
376config NRF70_BAND_UNII_4_LOWER_EDGE_BACKOFF_HE
377	int "HE Transmit power backoff (in dB) for lower edge of UNII-4 frequency band"
378	default 0
379	range 0 10
380
381config NRF70_BAND_UNII_4_UPPER_EDGE_BACKOFF_HT
382	int "HT/VHT Transmit power backoff (in dB) for upper edge of UNII-4 frequency band"
383	default 0
384	range 0 10
385
386config NRF70_BAND_UNII_4_UPPER_EDGE_BACKOFF_HE
387	int "HE Transmit power backoff (in dB) for upper edge of UNII-4 frequency band"
388	default 0
389	range 0 10
390
391# Performance fine tuning options
392
393config NRF70_RX_NUM_BUFS
394	int "Number of RX buffers"
395	default 48
396
397config NRF70_MAX_TX_AGGREGATION
398	int "Maximum number of TX packets to aggregate"
399	default 12
400
401config NRF70_MAX_TX_TOKENS
402	int "Maximum number of TX tokens"
403	range 5 12 if !NRF70_RADIO_TEST
404	default 10
405
406config NRF70_TX_MAX_DATA_SIZE
407	int "Maximum size of TX data"
408	default 1600
409
410config NRF70_RX_MAX_DATA_SIZE
411	int "Maximum size of RX data"
412	default 1600
413
414config NRF70_TX_DONE_WQ_ENABLED
415	bool "TX done workqueue (impacts performance negatively)"
416
417config NRF70_RX_WQ_ENABLED
418	bool "RX workqueue"
419
420# Use for IRQ processing (TODO: using for BH processing causes issues)
421config NUM_METAIRQ_PRIORITIES
422	default 1
423
424config NRF70_IRQ_WQ_PRIORITY
425	int "Priority of the workqueue for handling IRQs"
426	default -15
427
428config NRF70_BH_WQ_PRIORITY
429	int "Priority of the workqueue for handling bottom half"
430	default 0
431
432config NRF70_IRQ_WQ_STACK_SIZE
433	int "Stack size of the workqueue for handling IRQs"
434	default 2048
435
436config NRF70_BH_WQ_STACK_SIZE
437	int "Stack size of the workqueue for handling bottom half"
438	default 2048
439
440if NRF70_TX_DONE_WQ_ENABLED
441config NRF70_TX_DONE_WQ_PRIORITY
442	int "Priority of the workqueue for handling TX done"
443	default 0
444
445config NRF70_TX_DONE_WQ_STACK_SIZE
446	int "Stack size of the workqueue for handling TX done"
447	default 2048
448endif # NRF70_TX_DONE_WQ_ENABLED
449if NRF70_RX_WQ_ENABLED
450config NRF70_RX_WQ_PRIORITY
451	int "Priority of the workqueue for handling RX"
452	default 0
453
454config NRF70_RX_WQ_STACK_SIZE
455	int "Stack size of the workqueue for handling RX"
456	default 2048
457endif # NRF70_RX_WQ_ENABLED
458
459if NRF_WIFI_LOW_POWER
460config NRF70_RPU_PS_IDLE_TIMEOUT_MS
461	int "RPU power save idle timeout in milliseconds"
462	default 10
463
464config NRF70_RPU_EXTEND_TWT_SP
465	bool "extending TWT service period"
466	help
467	  In case frames accepted before the beginning of SP are not
468	  transmitted before the SP completes, then typically they are
469	  dropped to conform to the SP window as per the specification that is, no
470	  transmission outside SP window.
471	  This feature mitigates frame loss by transmitting even after SP
472	  completion by using a standard contention mechanism, which is allowed
473	  in specification but not recommended. As the device is actively transmitting
474	  beyond SP, the power consumption increases depending on the amount
475	  of traffic available at the start of the SP.
476	  Note that if a frame is sent after the SP starts, it will be queued, and this
477	  mechanism is not used.
478endif # NRF_WIFI_LOW_POWER
479
480config WIFI_FIXED_MAC_ADDRESS
481	string "Wi-Fi Fixed MAC address in format XX:XX:XX:XX:XX:XX"
482	help
483	  This option overrides the MAC address read from OTP. It is strictly for testing purposes only.
484
485choice
486	prompt "Wi-Fi MAC address type"
487	default WIFI_FIXED_MAC_ADDRESS_ENABLED if WIFI_FIXED_MAC_ADDRESS != ""
488	default WIFI_OTP_MAC_ADDRESS
489	help
490	  Select the type of MAC address to be used by the Wi-Fi driver
491
492config WIFI_OTP_MAC_ADDRESS
493	bool "Use MAC address from OTP"
494	help
495	  This option uses the MAC address stored in the OTP memory of the nRF70.
496
497config WIFI_FIXED_MAC_ADDRESS_ENABLED
498	bool "fixed MAC address"
499	help
500	  Enable fixed MAC address
501
502config WIFI_RANDOM_MAC_ADDRESS
503	bool "Random MAC address generation at runtime"
504	depends on ENTROPY_GENERATOR
505	help
506	  This option enables random MAC address generation at runtime.
507	  The random MAC address is generated using the entropy device random generator.
508
509endchoice
510
511config NRF70_RSSI_STALE_TIMEOUT_MS
512	int "RSSI stale timeout in milliseconds"
513	default 1000
514	help
515	  RSSI stale timeout is the period after which the driver queries
516	  RPU to get the RSSI value.
517	  If data is active (for example, ping), the driver stores the RSSI value from
518	  the received frames and provides this stored information
519	  to wpa_supplicant. In this case, a higher value will be suitable
520	  as the stored RSSI value at the driver will be updated regularly.
521	  If data is not active or after the stale timeout duration,
522	  the driver queries the RPU to get the RSSI value
523	  and provides it to wpa_supplicant. The value should be set to a lower
524	  value as the driver does not store it and requires RPU to provide the
525	  information.
526
527config NRF_WIFI_CTRL_HEAP_SIZE
528	int "Dedicated memory pool for control plane"
529	default 20000
530
531config NRF_WIFI_DATA_HEAP_SIZE
532	int "Dedicated memory pool for data plane"
533	default 6000 if NRF70_SCAN_ONLY
534	default 110000 if !SOC_FAMILY_NORDIC_NRF
535	default 130000
536
537if NETWORKING
538# Finetune defaults for certain system components used by the driver
539
540config SYSTEM_WORKQUEUE_STACK_SIZE
541	default 4096
542
543config NET_TX_STACK_SIZE
544	default 4096
545
546config NET_RX_STACK_SIZE
547	default 4096
548
549config NET_TC_TX_COUNT
550	default 1
551
552endif # NETWORKING
553
554# nRF70 now uses variable buffers as default to optimize RAM usage. Default pool sizes are used, samples/apps can override
555# for higher performance.
556choice NET_PKT_DATA_ALLOC_TYPE
557	default NET_BUF_VARIABLE_DATA_SIZE
558endchoice
559
560config MAIN_STACK_SIZE
561	default 4096
562
563config SHELL_STACK_SIZE
564	default 4096
565
566# Override the Wi-Fi subsystems WIFI_MGMT_SCAN_SSID_FILT_MAX parameter,
567# since we support a maximum of 2 SSIDs for scan result filtering.
568config WIFI_MGMT_SCAN_SSID_FILT_MAX
569	default 2
570
571config NRF_WIFI_SCAN_MAX_BSS_CNT
572	int "Maximum number of scan results to return."
573	default 0
574	range 0 65535
575	help
576	  Maximum number of scan results to return. 0 represents unlimited number of BSSes.
577
578config NRF_WIFI_BEAMFORMING
579	bool "Wi-Fi beamforming. Enabling beamforming can provide a slight improvement in performance, whereas disabling it can provide better power savings in low network activity applications"
580	default y
581
582config WIFI_NRF70_SCAN_TIMEOUT_S
583	int "Scan timeout in seconds"
584	default 30
585
586menu "nRF Wi-Fi operation band(s)"
587	visible if !NRF70_2_4G_ONLY
588
589config NRF_WIFI_2G_BAND
590	bool "Set operation band to 2.4GHz"
591	default y if NRF70_2_4G_ONLY
592
593config NRF_WIFI_5G_BAND
594	bool "Set operation band to 5GHz"
595	depends on !NRF70_2_4G_ONLY
596
597config NRF_WIFI_OP_BAND
598	int "Options to set operation band"
599	default 1 if NRF_WIFI_2G_BAND
600	default 2 if NRF_WIFI_5G_BAND
601	default 3
602	help
603	  Set this option to select frequency band
604	  1 - 2.4GHz
605	  2 - 5GHz
606	  3 - All ( 2.4GHz and 5GHz )
607endmenu
608
609config NRF_WIFI_IFACE_MTU
610	int "MTU for Wi-Fi interface"
611	range 576 2304 if NET_IPV4
612	range 1280 2304 if NET_IPV6
613	default 1500
614
615config WIFI_NRF70_SKIP_LOCAL_ADMIN_MAC
616	bool "Suppress networks with non-individual MAC addresses as BSSID in the scan results"
617	help
618	  Wi-Fi access points use locally administered MAC addresses to manage
619	  multiple virtual interfaces. For geo-location use cases, these networks
620	  from the virtual interfaces do not help in any way as they are co-located with the primary interface
621	  that has a globally unique MAC address.
622	  So, to save resources, this option drops such networks from the scan results.
623
624config WIFI_NRF70_SCAN_DISABLE_DFS_CHANNELS
625	bool "Disables DFS channels in scan operation"
626	help
627	  This option disables inclusion of the DFS channels in the scan operation.
628	  This is useful to reduce the scan time, as DFS channels are seldom used.
629
630config NET_INTERFACE_NAME_LEN
631	# nordic_wlanN
632	default 15
633
634config NRF_WIFI_AP_DEAD_DETECT_TIMEOUT
635	int "Access point dead detection timeout in seconds"
636	range 1 30
637	default 20
638	help
639		The number of seconds after which the AP is declared dead if no beacons
640		are received from the AP. This is used to detect AP silently going down, for example, due to power off.
641
642config NRF_WIFI_RPU_RECOVERY
643	bool "RPU recovery mechanism"
644	# Relies on power-save mode, so, LPM is needed and AP mode is not supported
645	depends on NRF_WIFI_LOW_POWER
646	depends on !NRF70_AP_MODE
647	default y
648	select EXPERIMENTAL
649	help
650		Enable the RPU recovery mechanism to recover from an RPU (nRF70) hang.
651		This feature performs an interface reset (down and up), which triggers
652		a RPU cold boot. The application's network connection will be lost during
653		the recovery process, and it is the application's responsibility to
654		re-establish the network connection.
655
656if NRF_WIFI_RPU_RECOVERY
657config NRF_WIFI_RPU_RECOVERY_PROPAGATION_DELAY_MS
658	int "RPU recovery propagation delay in milliseconds"
659	default 2000
660	help
661		Propagation delay in milliseconds to wait after RPU is powered down
662		before powering it up. This delay is required to ensure that the recovery
663		is propagated to all the applications and stack and have enough time to
664		clean up the resources.
665
666config NET_MGMT_EVENT_QUEUE_SIZE
667	# Doing interface down and up even with delay puts a lot of events in the queue
668	default 16
669
670config NRF_WIFI_RPU_RECOVERY_PS_ACTIVE_TIMEOUT_MS
671	int "RPU recovery power save active timeout in milliseconds"
672	default 50000
673	help
674	  Power save active timeout in milliseconds, after which the RPU recovery
675	  mechanism will be triggered. This timeout is used to ensure that the
676	  RPU attempts to enter power save mode in case of inactivity.
677
678config NRF_WIFI_RPU_MIN_TIME_TO_ENTER_SLEEP_MS
679	int "Minimum idle time to enter sleep in milliseconds"
680	range 100 5000
681	default 1000
682	help
683	  Minimum time the host should de-assert WAKEUP_NOW and let RPU enter
684	  sleep mode, assuming there is no activity.
685
686config NRF_WIFI_RPU_RECOVERY_DEBUG
687	bool "RPU recovery debug logs"
688	help
689		Enable RPU recovery debug logs to help debug the RPU recovery mechanism.
690
691config NRF_WIFI_RPU_RECOVERY_QUIET_PERIOD_MS
692	int "RPU recovery quiet period in milliseconds"
693	default 5000
694	help
695	  Quiet period in milliseconds after RPU recovery is triggered. During
696	  this period, no new RPU recovery will be triggered.
697
698config NRF_WIFI_RPU_RECOVERY_MAX_RETRIES
699	int "Maximum number of consecutive RPU recovery retries, 0 to disable"
700	default 0
701	help
702	  Maximum number of consecutive RPU recovery retries before giving up
703	  and resetting the system. Set it to 0 to keep retrying indefinitely.
704
705config NRF_WIFI_RPU_RECOVERY_RETRY_WINDOW_S
706	int "RPU recovery retry window in seconds"
707	default 900
708	help
709	  Window in seconds during which the number of consecutive RPU recovery
710	  retries are counted. If the number of consecutive RPU recovery retries
711	  exceeds NRF_WIFI_RPU_RECOVERY_MAX_RETRIES within this window, the system
712	  will be reset.
713
714config NRF_WIFI_RPU_RECOVERY_PS_STATE_DEBUG
715	bool "RPU recovery power save state debug logs"
716	help
717	  Enable RPU recovery power save state debug logs to help debug the RPU recovery mechanism.
718endif # NRF_WIFI_RPU_RECOVERY
719
720config NRF_WIFI_FEAT_WMM
721	bool "WMM/QoS support"
722	default y
723	help
724	  This option controls disable/enable of the WMM (Wireless Multi-Media) feature.
725
726choice NRF_WIFI_PS_DATA_RETRIEVAL_MECHANISM
727	prompt "Power save data retrieval mechanism"
728	default NRF_WIFI_PS_POLL_BASED_RETRIEVAL
729	help
730	  Select the mechanism to retrieve buffered data from AP.
731
732config NRF_WIFI_PS_POLL_BASED_RETRIEVAL
733	bool "PS-Poll frame-based mechanism to retrieve buffered data from AP"
734	help
735	  When the AP notifies about the availability of buffered data, the STA stays in power save
736	  and retrieves the frames one-by-one. This conserves more power but adds latency
737	  to the traffic. It is ideal for minimum number of frames.
738
739config NRF_WIFI_QOS_NULL_BASED_RETRIEVAL
740	bool "QoS null frame-based mechanism to retrieve buffered data from AP"
741	help
742	  When the AP notifies about the availability of buffered data, the STA comes out of
743	  power save, and then AP can deliver all buffered frames without any additional
744	  overhead or latency, but STA enters power save after a delay costing more power
745	  depending on the delay. It is ideal for heavy buffered traffic.
746endchoice
747
748config NRF_WIFI_MGMT_BUFF_OFFLOAD
749	bool "Management buffer offload"
750	default y
751	help
752	  This option offloads the refilling of management buffers to the UMAC, saving the host
753	  from having to exchange commands and events for every management packet even if it is
754	  consumed by UMAC.
755
756config NRF_WIFI_FEAT_KEEPALIVE
757	bool "Wi-Fi keepalive feature for connection maintenance"
758	depends on NRF70_STA_MODE
759	help
760	  Enable the Wi-Fi keepalive feature to keep the connection alive by sending
761	  keepalive packets to the AP. This feature is primarily intended to interoperate with APs
762	  that disconnect idle clients without any explicit checks. It slightly increases
763	  power consumption.
764
765if NRF_WIFI_FEAT_KEEPALIVE
766config NRF_WIFI_KEEPALIVE_PERIOD_S
767	int "Keepalive period in seconds"
768	range 30 3600
769	default 60
770	help
771	  Keepalive period in seconds to send keepalive packets to the AP.
772endif
773
774choice NRF_WIFI_PS_EXIT_STRATEGY
775	prompt "Power save exit strategy"
776	default NRF_WIFI_PS_INT_PS
777	help
778	  Select the power save exit strategy to retrieve buffered data from AP.
779
780config NRF_WIFI_PS_EXIT_EVERY_TIM
781	bool "Exit power save every time to retrieve buffered data from AP"
782	help
783	  Exit power save every time to retrieve buffered data from AP. Entering back to
784	  power save mode might take some time and power.
785
786config NRF_WIFI_PS_INT_PS
787	bool "Exit power save based on an intelligent algorithm"
788	help
789	  Exit power save based on an intelligent algorithm to retrieve buffered data from the AP.
790	  The algorithm tracks the buffered data at the AP and then dynamically decides
791	  whether to stay in PS (for a lower amount of buffered data) or exit PS (for a higher
792	  amount of buffered data).
793endchoice
794
795config NRF70_PASSIVE_SCAN_ONLY
796	bool "Forced Passive scan"
797	depends on NRF70_SCAN_ONLY
798	help
799	  Enable this configuration to force passive scan on all channels.
800	  This will override application-specified scan type.
801
802config NRF_WIFI_DISPLAY_SCAN_BSS_LIMIT
803	# Display scan BSS entries limit
804	# By default, the limit is 250 in scan-only mode and 150 in regular mode.
805	int "Display scan bss limit"
806	range 1 450 if NRF70_SCAN_ONLY
807	def_int 250 if NRF70_SCAN_ONLY
808	range 1 160
809	def_int 150
810	help
811	  Number of BSS entries in scan result.
812
813config NRF_WIFI_COEX_DISABLE_PRIORITY_WINDOW_FOR_SCAN
814	bool "Force disable priority window for scan in the case of coexistence with Short Range radio"
815	help
816	  Enable this configuration to disable priority window for scan
817	  in the case of coexistence with Short Range radio.
818endif # WIFI_NRF70
819