Linux Audio

Check our new training course

Loading...
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
# Nordic Wi-Fi driver for nRF70 series SoCs
#
# Copyright (c) 2024 Nordic Semiconductor
#
# SPDX-License-Identifier: Apache-2.0
#

menuconfig WIFI_NRF70
	bool "nRF70 driver"
	select NET_L2_WIFI_MGMT if NETWORKING
	select NET_L2_ETHERNET_MGMT if NETWORKING && NET_L2_ETHERNET
	select WIFI_USE_NATIVE_NETWORKING if NETWORKING
	select EXPERIMENTAL if !SOC_SERIES_NRF53X && !SOC_SERIES_NRF91X
	default y
	depends on \
		DT_HAS_NORDIC_NRF7002_SPI_ENABLED || DT_HAS_NORDIC_NRF7002_QSPI_ENABLED || \
		DT_HAS_NORDIC_NRF7001_SPI_ENABLED || DT_HAS_NORDIC_NRF7001_QSPI_ENABLED || \
		DT_HAS_NORDIC_NRF7000_SPI_ENABLED || DT_HAS_NORDIC_NRF7000_QSPI_ENABLED
	help
	  Nordic Wi-Fi Driver

if WIFI_NRF70
# Hidden symbols for internal use
config WIFI_NRF7002
	bool
	default y if DT_HAS_NORDIC_NRF7002_SPI_ENABLED || DT_HAS_NORDIC_NRF7002_QSPI_ENABLED

config WIFI_NRF7001
	bool
	default y if DT_HAS_NORDIC_NRF7001_SPI_ENABLED || DT_HAS_NORDIC_NRF7001_QSPI_ENABLED

config WIFI_NRF7000
	bool
	default y if DT_HAS_NORDIC_NRF7000_SPI_ENABLED || DT_HAS_NORDIC_NRF7000_QSPI_ENABLED


module = WIFI_NRF70_BUS
module-dep = LOG
module-str = Log level for Wi-Fi nRF70 bus layers
module-help = Sets log level for Wi-Fi nRF70 bus layers
source "subsys/net/Kconfig.template.log_config.net"

config WIFI_NRF70_BUS_LOG_LEVEL
	# Enable error by default
	default 1

choice NRF70_OPER_MODES
	bool "nRF70 operating modes"
	default NRF70_SYSTEM_WITH_RAW_MODES if !WIFI_NRF7000 && \
		(NRF70_RAW_DATA_TX || NRF70_RAW_DATA_RX || NRF70_PROMISC_DATA_RX)
	default NRF70_SYSTEM_MODE if !WIFI_NRF7000
	default NRF70_SCAN_ONLY if WIFI_NRF7000
	help
	  Select the operating mode of the nRF70 driver

config NRF70_SYSTEM_MODE
	bool "nRF70 system mode"
	depends on WIFI_NRF7002 || WIFI_NRF7001
	select WIFI_NM_WPA_SUPPLICANT
	help
	  Select this option to enable system mode of the nRF70 driver

config NRF70_SCAN_ONLY
	bool "nRF70 scan only mode"
	help
	  Select this option to enable scan only mode of the nRF70 driver

config NRF70_RADIO_TEST
	bool "Radio test mode of the nRF70 driver"

config NRF70_OFFLOADED_RAW_TX
	bool "Offloaded raw TX mode of the nRF70 driver"

config NRF70_SYSTEM_WITH_RAW_MODES
	bool "nRF70 system mode with raw modes"
	depends on WIFI_NRF7002 || WIFI_NRF7001
	select WIFI_NM_WPA_SUPPLICANT
	help
	  Select this option to enable system mode of the nRF70 driver with raw modes.
endchoice

config NRF70_SYSTEM_MODE_COMMON
	bool
	default y if NRF70_SYSTEM_MODE || NRF70_SYSTEM_WITH_RAW_MODES

config NET_L2_ETHERNET
	default y if (!NRF70_RADIO_TEST && !NRF70_OFFLOADED_RAW_TX)

config HEAP_MEM_POOL_ADD_SIZE_NRF70
	# Use a maximum that works for typical use cases and boards, each sample/app can override
	# this value if needed by using CONFIG_HEAP_MEM_POOL_IGNORE_MIN
	def_int 25000 if NRF70_SCAN_ONLY
	def_int 150000

if NRF70_SYSTEM_MODE || NRF70_SYSTEM_WITH_RAW_MODES
config NRF70_STA_MODE
	bool "nRF70 STA mode"
	default y
	help
	  Select this option to enable STA mode of the nRF70 driver.

config NRF70_AP_MODE
	bool "Access point mode"
	depends on WIFI_NM_WPA_SUPPLICANT_AP

config NRF70_P2P_MODE
	bool "P2P support in driver"
endif # NRF70_SYSTEM_MODE || NRF70_SYSTEM_WITH_RAW_MODES

config NRF70_RAW_DATA_TX
	bool "RAW TX data path in the driver"
	select EXPERIMENTAL

config NRF70_RAW_DATA_RX
	bool "RAW RX sniffer operation in the driver"
	select EXPERIMENTAL

config NRF70_PROMISC_DATA_RX
	bool "Promiscuous RX sniffer operation in the driver"
	select WIFI_NM_WPA_SUPPLICANT
	select EXPERIMENTAL
	select NET_PROMISCUOUS_MODE

config NRF70_DATA_TX
	bool "TX data path in the driver"
	default y if NRF70_SYSTEM_MODE || NRF70_SYSTEM_WITH_RAW_MODES

config NRF_WIFI_IF_AUTO_START
	bool "Wi-Fi interface auto start on boot"
	default y

choice NRF_WIFI_FW_BLOB_HANDLING
	prompt "nRF70 Firmware blob handling"
	default NRF_WIFI_PATCHES_BUILTIN

config NRF_WIFI_BUILD_ONLY_MODE
	bool "Build only mode"
	help
	  Enable this option to build the driver without firmware loading, removes
	  dependency on firmware binary and patches.
	  This is useful to check the build and link errors.

config NRF_WIFI_PATCHES_BUILTIN
	bool "Store nRF70 FW patches as part of the driver"
	help
	  Select this option to store nRF70 FW patches as part of the driver.
	  This option impacts the code memory footprint of the driver.

config NRF_WIFI_PATCHES_EXTERNAL
	bool "Load nRF70 FW patches from external binary"
	help
	  Select this option to load nRF70 FW patches from an external tooling.
endchoice

config NRF_WIFI_LOW_POWER
	bool "Low power mode in nRF Wi-Fi chipsets"
	default y

config NRF70_TCP_IP_CHECKSUM_OFFLOAD
	bool "TCP/IP checksum offload"
	default y

config NRF70_REG_DOMAIN
	string "The ISO/IEC alpha2 country code for the country in which this device is currently operating. Default 00 (World regulatory)"
	# 00 is used for World regulatory
	default "00"

# Making calls to RPU from net_mgmt callbacks.
#
# If WPA supplicant is enabled, then don't override as it has higher
# stack requirements.
config NET_MGMT_EVENT_STACK_SIZE
	default 2048 if !WIFI_NM_WPA_SUPPLICANT

config NRF70_LOG_VERBOSE
	bool "Maintains the verbosity of information in logs"
	default y

module = WIFI_NRF70
module-dep = LOG
module-str = Log level for Wi-Fi nRF70 driver
module-help = Sets log level for Wi-Fi nRF70 driver
source "subsys/logging/Kconfig.template.log_config"

config WIFI_NRF70_LOG_LEVEL
	# Enable error by default
	default 1

config NRF70_ON_QSPI
	def_bool DT_HAS_NORDIC_NRF7002_QSPI_ENABLED || \
			 DT_HAS_NORDIC_NRF7001_QSPI_ENABLED || \
			 DT_HAS_NORDIC_NRF7000_QSPI_ENABLED
	select NRFX_QSPI

config NRF70_ON_SPI
	def_bool DT_HAS_NORDIC_NRF7002_SPI_ENABLED || \
			 DT_HAS_NORDIC_NRF7001_SPI_ENABLED || \
			 DT_HAS_NORDIC_NRF7000_SPI_ENABLED
	select SPI

config NRF70_2_4G_ONLY
	def_bool y if WIFI_NRF7001

# Wi-Fi and SR Coexistence Hardware configuration.
config NRF70_SR_COEX
	bool "Wi-Fi and SR coexistence support"

config NRF70_SR_COEX_RF_SWITCH
	bool "GPIO configuration to control SR side RF switch position"

config NRF70_WORKQ_STACK_SIZE
	int "Stack size for workqueue"
	default 4096

config NRF70_WORKQ_MAX_ITEMS
	int "Maximum work items for all workqueues"
	default 100

config NRF70_MAX_TX_PENDING_QLEN
	int "Maximum number of pending TX packets"
	default 18

config NRF70_UTIL
	depends on SHELL
	bool "Utility shell in nRF70 driver"

config NRF70_QSPI_LOW_POWER
	bool "low power mode in QSPI"
	default y if NRF_WIFI_LOW_POWER

config NRF70_PCB_LOSS_2G
	int "PCB loss for 2.4 GHz band"
	default 0
	range 0 4
	help
	  Specifies PCB loss from the antenna connector to the RF pin.
	  The values are in dB scale in steps of 1 dB and range of 0-4 dB.
	  The loss is considered in the RX path only.

config NRF70_PCB_LOSS_5G_BAND1
	int "PCB loss for 5 GHz band (5150 MHz - 5350 MHz, Channel-32 - Channel-68)"
	default 0
	range 0 4
	help
	  Specifies PCB loss from the antenna connector to the RF pin.
	  The values are in dB scale in steps of 1 dB and range of 0-4 dB.
	  The loss is considered in the RX path only.

config NRF70_PCB_LOSS_5G_BAND2
	int "PCB loss for 5 GHz band (5470 MHz - 5730 MHz, Channel-96 - Channel-144)"
	default 0
	range 0 4
	help
	  Specifies PCB loss from the antenna connector to the RF pin.
	  The values are in dB scale in steps of 1 dB and range of 0-4 dB.
	  The loss is considered in the RX path only.

config NRF70_PCB_LOSS_5G_BAND3
	int "PCB loss for 5 GHz band (5730 MHz - 5895 MHz, Channel-149 - Channel-177)"
	default 0
	range 0 4
	help
	  Specifies PCB loss from the antenna connector to the RF pin.
	  The values are in dB scale in steps of 1 dB and range of 0-4 dB.
	  The loss is considered in the RX path only.

config NRF70_ANT_GAIN_2G
	int "Antenna gain for 2.4 GHz band"
	default 0
	range 0 6

config NRF70_ANT_GAIN_5G_BAND1
	int "Antenna gain for 5 GHz band (5150 MHz - 5350 MHz)"
	default 0
	range 0 6

config NRF70_ANT_GAIN_5G_BAND2
	int "Antenna gain for 5 GHz band (5470 MHz - 5730 MHz)"
	default 0
	range 0 6

config NRF70_ANT_GAIN_5G_BAND3
	int "Antenna gain for 5 GHz band (5730 MHz - 5895 MHz)"
	default 0
	range 0 6

config NRF70_BAND_2G_LOWER_EDGE_BACKOFF_DSSS
	int "DSSS Transmit power backoff (in dB) for lower edge of 2.4 GHz frequency band"
	default 0
	range 0 10

config NRF70_BAND_2G_LOWER_EDGE_BACKOFF_HT
	int "HT/VHT Transmit power backoff (in dB) for lower edge of 2.4 GHz frequency band"
	default 0
	range 0 10

config NRF70_BAND_2G_LOWER_EDGE_BACKOFF_HE
	int "HE Transmit power backoff (in dB) for lower edge of 2.4 GHz frequency band"
	default 0
	range 0 10

config NRF70_BAND_2G_UPPER_EDGE_BACKOFF_DSSS
	int "DSSS Transmit power backoff (in dB) for upper edge of 2.4 GHz frequency band"
	default 0
	range 0 10

config NRF70_BAND_2G_UPPER_EDGE_BACKOFF_HT
	int "HT/VHT Transmit power backoff (in dB) for upper edge of 2.4 GHz frequency band"
	default 0
	range 0 10

config NRF70_BAND_2G_UPPER_EDGE_BACKOFF_HE
	int "HE Transmit power backoff (in dB) for upper edge of 2.4 GHz frequency band"
	default 0
	range 0 10

config NRF70_BAND_UNII_1_LOWER_EDGE_BACKOFF_HT
	int "HT/VHT Transmit power backoff (in dB) for lower edge of UNII-1 frequency band"
	default 0
	range 0 10

config NRF70_BAND_UNII_1_LOWER_EDGE_BACKOFF_HE
	int "HE Transmit power backoff (in dB) for lower edge of UNII-1 frequency band"
	default 0
	range 0 10

config NRF70_BAND_UNII_1_UPPER_EDGE_BACKOFF_HT
	int "HT/VHT Transmit power backoff (in dB) for upper edge of UNII-1 frequency band"
	default 0
	range 0 10

config NRF70_BAND_UNII_1_UPPER_EDGE_BACKOFF_HE
	int "HE Transmit power backoff (in dB) for upper edge of UNII-1 frequency band"
	default 0
	range 0 10

config NRF70_BAND_UNII_2A_LOWER_EDGE_BACKOFF_HT
	int "HT/VHT Transmit power backoff (in dB) for lower edge of UNII-2A frequency band"
	default 0
	range 0 10

config NRF70_BAND_UNII_2A_LOWER_EDGE_BACKOFF_HE
	int "HE Transmit power backoff (in dB) for lower edge of UNII-2A frequency band"
	default 0
	range 0 10

config NRF70_BAND_UNII_2A_UPPER_EDGE_BACKOFF_HT
	int "HT/VHT Transmit power backoff (in dB) for upper edge of UNII-2A frequency band"
	default 0
	range 0 10

config NRF70_BAND_UNII_2A_UPPER_EDGE_BACKOFF_HE
	int "HE Transmit power backoff (in dB) for upper edge of UNII-2A frequency band"
	default 0
	range 0 10

config NRF70_BAND_UNII_2C_LOWER_EDGE_BACKOFF_HT
	int "HT/VHT Transmit power backoff (in dB) for lower edge of UNII-2C frequency band"
	default 0
	range 0 10

config NRF70_BAND_UNII_2C_LOWER_EDGE_BACKOFF_HE
	int "HE Transmit power backoff (in dB) for lower edge of UNII-2C frequency band"
	default 0
	range 0 10

config NRF70_BAND_UNII_2C_UPPER_EDGE_BACKOFF_HT
	int "HT/VHT Transmit power backoff (in dB) for upper edge of UNII-2C frequency band"
	default 0
	range 0 10

config NRF70_BAND_UNII_2C_UPPER_EDGE_BACKOFF_HE
	int "HE Transmit power backoff (in dB) for upper edge of UNII-2C frequency band"
	default 0
	range 0 10

config NRF70_BAND_UNII_3_LOWER_EDGE_BACKOFF_HT
	int "HT/VHT Transmit power backoff (in dB) for lower edge of UNII-3 frequency band"
	default 0
	range 0 10

config NRF70_BAND_UNII_3_LOWER_EDGE_BACKOFF_HE
	int "HE Transmit power backoff (in dB) for lower edge of UNII-3 frequency band"
	default 0
	range 0 10

config NRF70_BAND_UNII_3_UPPER_EDGE_BACKOFF_HT
	int "HT/VHT Transmit power backoff (in dB) for upper edge of UNII-3 frequency band"
	default 0
	range 0 10

config NRF70_BAND_UNII_3_UPPER_EDGE_BACKOFF_HE
	int "HE Transmit power backoff (in dB) for upper edge of UNII-3 frequency band"
	default 0
	range 0 10

config NRF70_BAND_UNII_4_LOWER_EDGE_BACKOFF_HT
	int "HT/VHT Transmit power backoff (in dB) for lower edge of UNII-4 frequency band"
	default 0
	range 0 10

config NRF70_BAND_UNII_4_LOWER_EDGE_BACKOFF_HE
	int "HE Transmit power backoff (in dB) for lower edge of UNII-4 frequency band"
	default 0
	range 0 10

config NRF70_BAND_UNII_4_UPPER_EDGE_BACKOFF_HT
	int "HT/VHT Transmit power backoff (in dB) for upper edge of UNII-4 frequency band"
	default 0
	range 0 10

config NRF70_BAND_UNII_4_UPPER_EDGE_BACKOFF_HE
	int "HE Transmit power backoff (in dB) for upper edge of UNII-4 frequency band"
	default 0
	range 0 10

# Performance fine tuning options

config NRF70_RX_NUM_BUFS
	int "Number of RX buffers"
	default 48

config NRF70_MAX_TX_AGGREGATION
	int "Maximum number of TX packets to aggregate"
	default 12

config NRF70_MAX_TX_TOKENS
	int "Maximum number of TX tokens"
	range 5 12 if !NRF70_RADIO_TEST
	default 10

config NRF70_TX_MAX_DATA_SIZE
	int "Maximum size of TX data"
	default 1600

config NRF70_RX_MAX_DATA_SIZE
	int "Maximum size of RX data"
	default 1600

config NRF70_TX_DONE_WQ_ENABLED
	bool "TX done workqueue (impacts performance negatively)"

config NRF70_RX_WQ_ENABLED
	bool "RX workqueue"

# Use for IRQ processing (TODO: using for BH processing causes issues)
config NUM_METAIRQ_PRIORITIES
	default 1

config NRF70_IRQ_WQ_PRIORITY
	int "Priority of the workqueue for handling IRQs"
	default -15

config NRF70_BH_WQ_PRIORITY
	int "Priority of the workqueue for handling bottom half"
	default 0

config NRF70_IRQ_WQ_STACK_SIZE
	int "Stack size of the workqueue for handling IRQs"
	default 2048

config NRF70_BH_WQ_STACK_SIZE
	int "Stack size of the workqueue for handling bottom half"
	default 2048

if NRF70_TX_DONE_WQ_ENABLED
config NRF70_TX_DONE_WQ_PRIORITY
	int "Priority of the workqueue for handling TX done"
	default 0

config NRF70_TX_DONE_WQ_STACK_SIZE
	int "Stack size of the workqueue for handling TX done"
	default 2048
endif # NRF70_TX_DONE_WQ_ENABLED
if NRF70_RX_WQ_ENABLED
config NRF70_RX_WQ_PRIORITY
	int "Priority of the workqueue for handling RX"
	default 0

config NRF70_RX_WQ_STACK_SIZE
	int "Stack size of the workqueue for handling RX"
	default 2048
endif # NRF70_RX_WQ_ENABLED

if NRF_WIFI_LOW_POWER
config NRF70_RPU_PS_IDLE_TIMEOUT_MS
	int "RPU power save idle timeout in milliseconds"
	default 10

config NRF70_RPU_EXTEND_TWT_SP
	bool "extending TWT service period"
	help
	  In case frames accepted before the beginning of SP are not
	  transmitted before the SP completes, then typically they are
	  dropped to conform to the SP window as per the specification that is, no
	  transmission outside SP window.
	  This feature mitigates frame loss by transmitting even after SP
	  completion by using a standard contention mechanism, which is allowed
	  in specification but not recommended. As the device is actively transmitting
	  beyond SP, the power consumption increases depending on the amount
	  of traffic available at the start of the SP.
	  Note that if a frame is sent after the SP starts, it will be queued, and this
	  mechanism is not used.
endif # NRF_WIFI_LOW_POWER

config WIFI_FIXED_MAC_ADDRESS
	string "Wi-Fi Fixed MAC address in format XX:XX:XX:XX:XX:XX"
	help
	  This option overrides the MAC address read from OTP. It is strictly for testing purposes only.

choice
	prompt "Wi-Fi MAC address type"
	default WIFI_FIXED_MAC_ADDRESS_ENABLED if WIFI_FIXED_MAC_ADDRESS != ""
	default WIFI_OTP_MAC_ADDRESS
	help
	  Select the type of MAC address to be used by the Wi-Fi driver

config WIFI_OTP_MAC_ADDRESS
	bool "Use MAC address from OTP"
	help
	  This option uses the MAC address stored in the OTP memory of the nRF70.

config WIFI_FIXED_MAC_ADDRESS_ENABLED
	bool "fixed MAC address"
	help
	  Enable fixed MAC address

config WIFI_RANDOM_MAC_ADDRESS
	bool "Random MAC address generation at runtime"
	depends on ENTROPY_GENERATOR
	help
	  This option enables random MAC address generation at runtime.
	  The random MAC address is generated using the entropy device random generator.

endchoice

config NRF70_RSSI_STALE_TIMEOUT_MS
	int "RSSI stale timeout in milliseconds"
	default 1000
	help
	  RSSI stale timeout is the period after which the driver queries
	  RPU to get the RSSI value.
	  If data is active (for example, ping), the driver stores the RSSI value from
	  the received frames and provides this stored information
	  to wpa_supplicant. In this case, a higher value will be suitable
	  as the stored RSSI value at the driver will be updated regularly.
	  If data is not active or after the stale timeout duration,
	  the driver queries the RPU to get the RSSI value
	  and provides it to wpa_supplicant. The value should be set to a lower
	  value as the driver does not store it and requires RPU to provide the
	  information.

if NETWORKING
# Finetune defaults for certain system components used by the driver
config SYSTEM_WORKQUEUE_STACK_SIZE
	default 4096

config NET_TX_STACK_SIZE
	default 4096

config NET_RX_STACK_SIZE
	default 4096

config NET_TC_TX_COUNT
	default 1

endif # NETWORKING

config MAIN_STACK_SIZE
	default 4096

config SHELL_STACK_SIZE
	default 4096

# Override the Wi-Fi subsystems WIFI_MGMT_SCAN_SSID_FILT_MAX parameter,
# since we support a maximum of 2 SSIDs for scan result filtering.
config WIFI_MGMT_SCAN_SSID_FILT_MAX
	default 2

config NRF_WIFI_SCAN_MAX_BSS_CNT
	int "Maximum number of scan results to return."
	default 0
	range 0 65535
	help
	  Maximum number of scan results to return. 0 represents unlimited number of BSSes.

config NRF_WIFI_BEAMFORMING
	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"
	default y

config WIFI_NRF70_SCAN_TIMEOUT_S
	int "Scan timeout in seconds"
	default 30

menu "nRF Wi-Fi operation band(s)"
	visible if !NRF70_2_4G_ONLY

config NRF_WIFI_2G_BAND
	bool "Set operation band to 2.4GHz"
	default y if NRF70_2_4G_ONLY

config NRF_WIFI_5G_BAND
	bool "Set operation band to 5GHz"
	depends on !NRF70_2_4G_ONLY

config NRF_WIFI_OP_BAND
	int "Options to set operation band"
	default 1 if NRF_WIFI_2G_BAND
	default 2 if NRF_WIFI_5G_BAND
	default 3
	help
	  Set this option to select frequency band
	  1 - 2.4GHz
	  2 - 5GHz
	  3 - All ( 2.4GHz and 5GHz )
endmenu

config NRF_WIFI_IFACE_MTU
	int "MTU for Wi-Fi interface"
	range 576 2304 if NET_IPV4
	range 1280 2304 if NET_IPV6
	default 1500

config WIFI_NRF70_SKIP_LOCAL_ADMIN_MAC
	bool "Suppress networks with non-individual MAC addresses as BSSID in the scan results"
	help
	  Wi-Fi access points use locally administered MAC addresses to manage
	  multiple virtual interfaces. For geo-location use cases, these networks
	  from the virtual interfaces do not help in any way as they are co-located with the primary interface
	  that has a globally unique MAC address.
	  So, to save resources, this option drops such networks from the scan results.

config WIFI_NRF70_SCAN_DISABLE_DFS_CHANNELS
	bool "Disables DFS channels in scan operation"
	help
	  This option disables inclusion of the DFS channels in the scan operation.
	  This is useful to reduce the scan time, as DFS channels are seldom used.

config NET_INTERFACE_NAME_LEN
	# nordic_wlanN
	default 15

config NRF_WIFI_AP_DEAD_DETECT_TIMEOUT
	int "Access point dead detection timeout in seconds"
	range 1 30
	default 20
	help
		The number of seconds after which the AP is declared dead if no beacons
		are received from the AP. This is used to detect AP silently going down, for example, due to power off.

config NRF_WIFI_RPU_RECOVERY
	bool "RPU recovery mechanism"
	# Relies on power-save mode, so, LPM is needed and AP mode is not supported
	depends on NRF_WIFI_LOW_POWER
	depends on !NRF70_AP_MODE
	default y
	select EXPERIMENTAL
	help
		Enable the RPU recovery mechanism to recover from an RPU (nRF70) hang.
		This feature performs an interface reset (down and up), which triggers
		a RPU cold boot. The application's network connection will be lost during
		the recovery process, and it is the application's responsibility to
		re-establish the network connection.

if NRF_WIFI_RPU_RECOVERY
config NRF_WIFI_RPU_RECOVERY_PROPAGATION_DELAY_MS
	int "RPU recovery propagation delay in milliseconds"
	default 2000
	help
		Propagation delay in milliseconds to wait after RPU is powered down
		before powering it up. This delay is required to ensure that the recovery
		is propagated to all the applications and stack and have enough time to
		clean up the resources.

config NET_MGMT_EVENT_QUEUE_SIZE
	# Doing interface down and up even with delay puts a lot of events in the queue
	default 16

config NRF_WIFI_RPU_RECOVERY_PROPAGATION_DELAY_MS
	int "RPU recovery propagation delay in milliseconds"
	default 10
	help
	  Propagation delay in milliseconds to wait after the RPU is powered down
	  before powering it up. This delay is required to ensure that the recovery
	  is propagated to all the applications and stack, and has enough time to
	  clean up the resources.

config NRF_WIFI_RPU_RECOVERY_PS_ACTIVE_TIMEOUT_MS
	int "RPU recovery power save active timeout in milliseconds"
	default 50000
	help
	  Power save active timeout in milliseconds, after which the RPU recovery
	  mechanism will be triggered. This timeout is used to ensure that the
	  RPU attempts to enter power save mode in case of inactivity.

config NRF_WIFI_RPU_MIN_TIME_TO_ENTER_SLEEP_MS
	int "Minimum idle time to enter sleep in milliseconds"
	range 100 5000
	default 1000
	help
	  Minimum time the host should de-assert WAKEUP_NOW and let RPU enter
	  sleep mode, assuming there is no activity.

config NRF_WIFI_RPU_RECOVERY_DEBUG
	bool "RPU recovery debug logs"
	help
		Enable RPU recovery debug logs to help debug the RPU recovery mechanism.

config NRF_WIFI_RPU_RECOVERY_QUIET_PERIOD_MS
	int "RPU recovery quiet period in milliseconds"
	default 5000
	help
	  Quiet period in milliseconds after RPU recovery is triggered. During
	  this period, no new RPU recovery will be triggered.

config NRF_WIFI_RPU_RECOVERY_MAX_RETRIES
	int "Maximum number of consecutive RPU recovery retries, 0 to disable"
	default 0
	help
	  Maximum number of consecutive RPU recovery retries before giving up
	  and resetting the system. Set it to 0 to keep retrying indefinitely.

config NRF_WIFI_RPU_RECOVERY_RETRY_WINDOW_S
	int "RPU recovery retry window in seconds"
	default 900
	help
	  Window in seconds during which the number of consecutive RPU recovery
	  retries are counted. If the number of consecutive RPU recovery retries
	  exceeds NRF_WIFI_RPU_RECOVERY_MAX_RETRIES within this window, the system
	  will be reset.

config NRF_WIFI_RPU_RECOVERY_PS_STATE_DEBUG
	bool "RPU recovery power save state debug logs"
	help
	  Enable RPU recovery power save state debug logs to help debug the RPU recovery mechanism.
endif # NRF_WIFI_RPU_RECOVERY

config NRF_WIFI_FEAT_WMM
	bool "WMM/QoS support"
	default y
	help
	  This option controls disable/enable of the WMM (Wireless Multi-Media) feature.

choice NRF_WIFI_PS_DATA_RETRIEVAL_MECHANISM
	prompt "Power save data retrieval mechanism"
	default NRF_WIFI_PS_POLL_BASED_RETRIEVAL
	help
	  Select the mechanism to retrieve buffered data from AP.

config NRF_WIFI_PS_POLL_BASED_RETRIEVAL
	bool "PS-Poll frame-based mechanism to retrieve buffered data from AP"
	help
	  When the AP notifies about the availability of buffered data, the STA stays in power save
	  and retrieves the frames one-by-one. This conserves more power but adds latency
	  to the traffic. It is ideal for minimum number of frames.

config NRF_WIFI_QOS_NULL_BASED_RETRIEVAL
	bool "QoS null frame-based mechanism to retrieve buffered data from AP"
	help
	  When the AP notifies about the availability of buffered data, the STA comes out of
	  power save, and then AP can deliver all buffered frames without any additional
	  overhead or latency, but STA enters power save after a delay costing more power
	  depending on the delay. It is ideal for heavy buffered traffic.
endchoice

config NRF_WIFI_MGMT_BUFF_OFFLOAD
	bool "Management buffer offload"
	default y
	help
	  This option offloads the refilling of management buffers to the UMAC, saving the host
	  from having to exchange commands and events for every management packet even if it is
	  consumed by UMAC.

config NRF_WIFI_FEAT_KEEPALIVE
	bool "Wi-Fi keepalive feature for connection maintenance"
	depends on NRF70_STA_MODE
	help
	  Enable the Wi-Fi keepalive feature to keep the connection alive by sending
	  keepalive packets to the AP. This feature is primarily intended to interoperate with APs
	  that disconnect idle clients without any explicit checks. It slightly increases
	  power consumption.

if NRF_WIFI_FEAT_KEEPALIVE
config NRF_WIFI_KEEPALIVE_PERIOD_S
	int "Keepalive period in seconds"
	range 30 3600
	default 60
	help
	  Keepalive period in seconds to send keepalive packets to the AP.
endif

choice NRF_WIFI_PS_EXIT_STRATEGY
	prompt "Power save exit strategy"
	default NRF_WIFI_PS_INT_PS
	help
	  Select the power save exit strategy to retrieve buffered data from AP.

config NRF_WIFI_PS_EXIT_EVERY_TIM
	bool "Exit power save every time to retrieve buffered data from AP"
	help
	  Exit power save every time to retrieve buffered data from AP. Entering back to
	  power save mode might take some time and power.

config NRF_WIFI_PS_INT_PS
	bool "Exit power save based on an intelligent algorithm"
	help
	  Exit power save based on an intelligent algorithm to retrieve buffered data from the AP.
	  The algorithm tracks the buffered data at the AP and then dynamically decides
	  whether to stay in PS (for a lower amount of buffered data) or exit PS (for a higher
	  amount of buffered data).
endchoice

config NRF70_PASSIVE_SCAN_ONLY
	bool "Forced Passive scan"
	depends on NRF70_SCAN_ONLY
	help
	  Enable this configuration to force passive scan on all channels.
	  This will override application-specified scan type.
endif # WIFI_NRF70