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