2024-06-13 00:02:02 +05:30
# 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
2024-12-01 16:08:00 +05:30
select NRF70_BUSLIB
2024-06-13 00:02:02 +05:30
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
2024-12-01 16:08:00 +05:30
config NRF70_QSPI_LOW_POWER
bool "low power mode in QSPI"
default y if NRF_WIFI_LOW_POWER
2024-06-13 00:02:02 +05:30
choice NRF70_OPER_MODES
bool "nRF70 operating modes"
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_SCAN_ONLY
bool "nRF70 scan only mode"
help
Select this option to enable scan only mode of the nRF70 driver
2025-02-06 21:52:06 +05:30
config NRF70_SYSTEM_MODE
bool "System mode of the nRF70 driver"
help
Select this option to enable system mode of the nRF70 driver
2024-06-13 00:02:02 +05:30
config NRF70_RADIO_TEST
bool "Radio test mode of the nRF70 driver"
2024-09-09 17:07:09 +05:30
config NRF70_OFFLOADED_RAW_TX
2024-11-01 21:49:25 +05:30
bool "Offloaded raw TX mode of the nRF70 driver"
2024-09-09 17:07:09 +05:30
2025-01-22 11:04:55 +10:00
endchoice
2024-06-13 00:02:02 +05:30
config NET_L2_ETHERNET
2024-09-09 17:07:09 +05:30
default y if (!NRF70_RADIO_TEST && !NRF70_OFFLOADED_RAW_TX)
2024-06-13 00:02:02 +05:30
2025-01-22 11:04:55 +10:00
if NRF70_SYSTEM_MODE
2024-06-13 00:02:02 +05:30
config NRF70_STA_MODE
bool "nRF70 STA mode"
default y
2025-02-06 21:52:06 +05:30
depends on WIFI_NRF7002 || WIFI_NRF7001
select WIFI_NM_WPA_SUPPLICANT
select NRF70_DATA_TX
2024-06-13 00:02:02 +05:30
help
2024-11-01 21:49:25 +05:30
Select this option to enable STA mode of the nRF70 driver.
2024-06-13 00:02:02 +05:30
config NRF70_AP_MODE
bool "Access point mode"
2025-02-06 21:52:06 +05:30
depends on WIFI_NRF7002 || WIFI_NRF7001
select NRF70_DATA_TX
2024-06-13 00:02:02 +05:30
depends on WIFI_NM_WPA_SUPPLICANT_AP
2024-12-12 00:36:22 +05:30
default y if WIFI_NM_WPA_SUPPLICANT_AP
2024-06-13 00:02:02 +05:30
config NRF70_P2P_MODE
bool "P2P support in driver"
2025-02-06 21:52:06 +05:30
config NRF70_SYSTEM_WITH_RAW_MODES
2025-03-20 18:15:44 +05:30
bool "nRF70 system mode with raw modes"
2025-02-06 21:52:06 +05:30
default y if (NRF70_RAW_DATA_TX || NRF70_RAW_DATA_RX || NRF70_PROMISC_DATA_RX)
depends on WIFI_NRF7002 || WIFI_NRF7001
help
Select this option to enable system mode of the nRF70 driver with raw modes.
2024-06-13 00:02:02 +05:30
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
2024-11-01 21:49:25 +05:30
bool "Promiscuous RX sniffer operation in the driver"
2024-06-13 00:02:02 +05:30
select WIFI_NM_WPA_SUPPLICANT
select EXPERIMENTAL
select NET_PROMISCUOUS_MODE
config NRF70_DATA_TX
2025-02-06 21:52:06 +05:30
bool
endif # NRF70_SYSTEM_MODE
2024-06-13 00:02:02 +05:30
config NRF_WIFI_IF_AUTO_START
bool "Wi-Fi interface auto start on boot"
default y
2024-10-12 21:59:54 +05:30
choice NRF_WIFI_FW_BLOB_HANDLING
prompt "nRF70 Firmware blob handling"
2024-11-02 11:39:04 -03:00
depends on !BUILD_ONLY_NO_BLOBS
2024-10-12 21:59:54 +05:30
default NRF_WIFI_PATCHES_BUILTIN
2024-06-13 00:02:02 +05:30
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.
2024-10-12 21:59:54 +05:30
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
2024-06-13 00:02:02 +05:30
config NRF_WIFI_LOW_POWER
2024-11-01 21:49:25 +05:30
bool "Low power mode in nRF Wi-Fi chipsets"
2024-06-13 00:02:02 +05:30
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
2025-03-13 13:15:59 +05:30
default 4600
2024-06-13 00:02:02 +05:30
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_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"
2024-12-18 22:03:42 +05:30
depends on $(dt_node_has_prop,nrf70, srrf-switch-gpios)
depends on NRF70_SR_COEX
2024-12-18 20:52:06 +05:30
help
Select this option to enable GPIO configuration to control SR side RF switch position.
If this GPIO is asserted (1), the SR side RF switch is connected to the Wi-Fi side (shared antenna).
If this GPIO is de-asserted (0), the SR side RF switch is connected to the SR side (separate antenna).
2024-06-13 00:02:02 +05:30
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.
2024-11-01 21:49:25 +05:30
The values are in dB scale in steps of 1 dB and range of 0-4 dB.
2024-06-13 00:02:02 +05:30
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.
2024-11-01 21:49:25 +05:30
The values are in dB scale in steps of 1 dB and range of 0-4 dB.
2024-06-13 00:02:02 +05:30
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.
2024-11-01 21:49:25 +05:30
The values are in dB scale in steps of 1 dB and range of 0-4 dB.
2024-06-13 00:02:02 +05:30
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.
2024-11-01 21:49:25 +05:30
The values are in dB scale in steps of 1 dB and range of 0-4 dB.
2024-06-13 00:02:02 +05:30
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
2024-11-01 21:49:25 +05:30
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
2024-06-13 00:02:02 +05:30
transmission outside SP window.
2024-11-01 21:49:25 +05:30
This feature mitigates frame loss by transmitting even after SP
completion by using a standard contention mechanism, which is allowed
2024-06-13 00:02:02 +05:30
in specification but not recommended. As the device is actively transmitting
beyond SP, the power consumption increases depending on the amount
2024-11-01 21:49:25 +05:30
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
2024-06-13 00:02:02 +05:30
mechanism is not used.
endif # NRF_WIFI_LOW_POWER
config WIFI_FIXED_MAC_ADDRESS
2024-11-01 21:49:25 +05:30
string "Wi-Fi Fixed MAC address in format XX:XX:XX:XX:XX:XX"
2024-06-13 00:02:02 +05:30
help
2024-11-01 21:49:25 +05:30
This option overrides the MAC address read from OTP. It is strictly for testing purposes only.
2024-06-13 00:02:02 +05:30
choice
prompt "Wi-Fi MAC address type"
default WIFI_FIXED_MAC_ADDRESS_ENABLED if WIFI_FIXED_MAC_ADDRESS != ""
2024-10-08 21:42:26 +05:30
default WIFI_OTP_MAC_ADDRESS
2024-06-13 00:02:02 +05:30
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
2024-11-01 21:49:25 +05:30
bool "Random MAC address generation at runtime"
2024-06-13 00:02:02 +05:30
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
2024-11-01 21:49:25 +05:30
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
2024-06-13 00:02:02 +05:30
the received frames and provides this stored information
2024-11-01 21:49:25 +05:30
to wpa_supplicant. In this case, a higher value will be suitable
as the stored RSSI value at the driver will be updated regularly.
2024-06-13 00:02:02 +05:30
If data is not active or after the stale timeout duration,
2024-11-01 21:49:25 +05:30
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.
2024-06-13 00:02:02 +05:30
2024-04-29 22:46:24 +05:30
config NRF_WIFI_CTRL_HEAP_SIZE
int "Dedicated memory pool for control plane"
default 20000
config NRF_WIFI_DATA_HEAP_SIZE
int "Dedicated memory pool for data plane"
default 6000 if NRF70_SCAN_ONLY
default 110000 if !SOC_FAMILY_NORDIC_NRF
default 130000
2024-06-13 00:02:02 +05:30
if NETWORKING
# Finetune defaults for certain system components used by the driver
2024-04-29 22:46:24 +05:30
2024-06-13 00:02:02 +05:30
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
2025-03-18 21:50:57 +05:30
config NRF_WIFI_USE_VARIABLE_NET_BUFS
bool "Use variable network buffers"
default y
help
This option enables the use of variable network buffers in the nRF70 driver.
Variable network buffers optimize RAM usage by allocating buffers of different sizes
based on the data size. This option is enabled by default to optimize RAM usage.
Samples and applications can override this option for higher performance.
if NRF_WIFI_USE_VARIABLE_NET_BUFS
2024-09-19 13:10:39 +05:30
# nRF70 now uses variable buffers as default to optimize RAM usage. Default pool sizes are used, samples/apps can override
# for higher performance.
choice NET_PKT_DATA_ALLOC_TYPE
default NET_BUF_VARIABLE_DATA_SIZE
endchoice
2025-03-18 21:50:57 +05:30
endif # NRF_WIFI_USE_VARIABLE_NET_BUFS
2024-09-19 13:10:39 +05:30
2024-06-13 00:02:02 +05:30
config MAIN_STACK_SIZE
default 4096
config SHELL_STACK_SIZE
default 4096
2024-11-01 21:49:25 +05:30
# Override the Wi-Fi subsystems WIFI_MGMT_SCAN_SSID_FILT_MAX parameter,
2024-06-13 00:02:02 +05:30
# 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
2024-11-01 21:49:25 +05:30
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"
2024-06-13 00:02:02 +05:30
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
2024-11-01 21:49:25 +05:30
bool "Suppress networks with non-individual MAC addresses as BSSID in the scan results"
2024-06-13 00:02:02 +05:30
help
2024-11-01 21:49:25 +05:30
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.
2024-06-13 00:02:02 +05:30
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
2024-11-01 21:49:25 +05:30
This option disables inclusion of the DFS channels in the scan operation.
2024-06-13 00:02:02 +05:30
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
2024-11-01 21:49:25 +05:30
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.
2024-06-13 00:02:02 +05:30
config NRF_WIFI_RPU_RECOVERY
bool "RPU recovery mechanism"
2024-11-08 17:31:04 +05:30
# Relies on power-save mode, so, LPM is needed and AP mode is not supported
2024-07-18 00:14:16 +05:30
depends on NRF_WIFI_LOW_POWER
2024-11-08 17:31:04 +05:30
depends on !NRF70_AP_MODE
2024-11-04 15:53:42 +05:30
default y
2024-06-13 00:02:02 +05:30
select EXPERIMENTAL
help
2024-11-01 21:49:25 +05:30
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
2024-06-13 00:02:02 +05:30
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"
2024-07-11 13:07:32 +05:30
default 2000
2024-06-13 00:02:02 +05:30
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
2024-11-01 21:49:25 +05:30
is propagated to all the applications and stack and have enough time to
2024-06-13 00:02:02 +05:30
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
drivers: wifi: Fix RPU recovery not being triggered
During watchdog (or any) interrupt processing, RPU accesses are being
made and they assert the wakeup_now flag this causes RPU recovery to not
trigger.
New false or true recovery detection algo:
Check the time difference b/w last de-assert and assert, and if it
exceeds minimum time needed for RPU to enter sleep, then not the
timestamp. This timestamp will be used to compare when a watchdog
interrupt is received and see if during the last window if host has
given a chance for RPU to attempt sleep, if yes, then attempt recovery
else ignore watchdog.
Also, add a Kconfig for the 10s active time that triggers recovery, this
needs to be passed to the FW (once we have enough patch memory).
Also, add a Kconfig for the minimum time needed for RPU to attempt sleep
in positive case.
Also, add a new _ms API for time stamp fetch, this is to avoid
precision loss when converting to and from ms to us and also makes code
readable by avoiding *1000 and /1000.
Signed-off-by: Chaitanya Tata <Chaitanya.Tata@nordicsemi.no>
2024-07-08 22:42:56 +05:30
config NRF_WIFI_RPU_RECOVERY_PS_ACTIVE_TIMEOUT_MS
int "RPU recovery power save active timeout in milliseconds"
2024-08-06 20:30:58 +05:30
default 50000
drivers: wifi: Fix RPU recovery not being triggered
During watchdog (or any) interrupt processing, RPU accesses are being
made and they assert the wakeup_now flag this causes RPU recovery to not
trigger.
New false or true recovery detection algo:
Check the time difference b/w last de-assert and assert, and if it
exceeds minimum time needed for RPU to enter sleep, then not the
timestamp. This timestamp will be used to compare when a watchdog
interrupt is received and see if during the last window if host has
given a chance for RPU to attempt sleep, if yes, then attempt recovery
else ignore watchdog.
Also, add a Kconfig for the 10s active time that triggers recovery, this
needs to be passed to the FW (once we have enough patch memory).
Also, add a Kconfig for the minimum time needed for RPU to attempt sleep
in positive case.
Also, add a new _ms API for time stamp fetch, this is to avoid
precision loss when converting to and from ms to us and also makes code
readable by avoiding *1000 and /1000.
Signed-off-by: Chaitanya Tata <Chaitanya.Tata@nordicsemi.no>
2024-07-08 22:42:56 +05:30
help
2024-11-01 21:49:25 +05:30
Power save active timeout in milliseconds, after which the RPU recovery
drivers: wifi: Fix RPU recovery not being triggered
During watchdog (or any) interrupt processing, RPU accesses are being
made and they assert the wakeup_now flag this causes RPU recovery to not
trigger.
New false or true recovery detection algo:
Check the time difference b/w last de-assert and assert, and if it
exceeds minimum time needed for RPU to enter sleep, then not the
timestamp. This timestamp will be used to compare when a watchdog
interrupt is received and see if during the last window if host has
given a chance for RPU to attempt sleep, if yes, then attempt recovery
else ignore watchdog.
Also, add a Kconfig for the 10s active time that triggers recovery, this
needs to be passed to the FW (once we have enough patch memory).
Also, add a Kconfig for the minimum time needed for RPU to attempt sleep
in positive case.
Also, add a new _ms API for time stamp fetch, this is to avoid
precision loss when converting to and from ms to us and also makes code
readable by avoiding *1000 and /1000.
Signed-off-by: Chaitanya Tata <Chaitanya.Tata@nordicsemi.no>
2024-07-08 22:42:56 +05:30
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.
2024-07-10 00:56:32 +05:30
config NRF_WIFI_RPU_RECOVERY_DEBUG
bool "RPU recovery debug logs"
help
2024-11-01 21:49:25 +05:30
Enable RPU recovery debug logs to help debug the RPU recovery mechanism.
2024-07-10 00:56:32 +05:30
2024-07-14 01:20:59 +05:30
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.
2024-07-14 01:57:29 +05:30
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
2024-11-01 21:49:25 +05:30
and resetting the system. Set it to 0 to keep retrying indefinitely.
2024-07-14 01:57:29 +05:30
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.
2024-07-18 20:52:19 +05:30
config NRF_WIFI_RPU_RECOVERY_PS_STATE_DEBUG
bool "RPU recovery power save state debug logs"
help
2024-11-01 21:49:25 +05:30
Enable RPU recovery power save state debug logs to help debug the RPU recovery mechanism.
2024-06-13 00:02:02 +05:30
endif # NRF_WIFI_RPU_RECOVERY
2024-06-11 11:32:29 +05:30
config NRF_WIFI_FEAT_WMM
bool "WMM/QoS support"
default y
help
2024-11-01 21:49:25 +05:30
This option controls disable/enable of the WMM (Wireless Multi-Media) feature.
2024-06-11 11:32:29 +05:30
2024-07-17 12:35:17 +05:30
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
2024-11-01 21:49:25 +05:30
bool "PS-Poll frame-based mechanism to retrieve buffered data from AP"
2024-07-17 12:35:17 +05:30
help
2024-11-01 21:49:25 +05:30
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.
2024-07-17 12:35:17 +05:30
config NRF_WIFI_QOS_NULL_BASED_RETRIEVAL
2024-11-01 21:49:25 +05:30
bool "QoS null frame-based mechanism to retrieve buffered data from AP"
2024-07-17 12:35:17 +05:30
help
2024-11-01 21:49:25 +05:30
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
2024-07-17 12:35:17 +05:30
overhead or latency, but STA enters power save after a delay costing more power
2024-11-01 21:49:25 +05:30
depending on the delay. It is ideal for heavy buffered traffic.
2024-07-17 12:35:17 +05:30
endchoice
2024-07-18 17:40:46 +05:30
config NRF_WIFI_MGMT_BUFF_OFFLOAD
2024-11-01 21:49:25 +05:30
bool "Management buffer offload"
2025-02-11 18:39:06 +05:30
# Raw scan results need host based refilling
depends on !WIFI_MGMT_RAW_SCAN_RESULTS
2024-07-18 17:40:46 +05:30
default y
help
2024-11-01 21:49:25 +05:30
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
2024-07-18 17:40:46 +05:30
consumed by UMAC.
2024-08-06 21:10:39 +05:30
config NRF_WIFI_FEAT_KEEPALIVE
bool "Wi-Fi keepalive feature for connection maintenance"
depends on NRF70_STA_MODE
help
2024-11-01 21:49:25 +05:30
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
2024-08-06 21:10:39 +05:30
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
2024-09-03 19:12:09 +05:30
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
2024-11-01 21:49:25 +05:30
Exit power save based on an intelligent algorithm to retrieve buffered data from the AP.
2024-09-03 19:12:09 +05:30
The algorithm tracks the buffered data at the AP and then dynamically decides
2024-11-01 21:49:25 +05:30
whether to stay in PS (for a lower amount of buffered data) or exit PS (for a higher
2024-09-03 19:12:09 +05:30
amount of buffered data).
endchoice
2024-10-17 19:01:23 +05:30
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.
2024-11-01 21:49:25 +05:30
This will override application-specified scan type.
2024-12-17 19:00:58 +05:30
2024-12-09 16:28:31 +05:30
config NRF_WIFI_DISPLAY_SCAN_BSS_LIMIT
# Display scan BSS entries limit
# By default, the limit is 250 in scan-only mode and 150 in regular mode.
int "Display scan bss limit"
range 1 450 if NRF70_SCAN_ONLY
def_int 250 if NRF70_SCAN_ONLY
range 1 160
def_int 150
help
Number of BSS entries in scan result.
2024-12-17 19:00:58 +05:30
config NRF_WIFI_COEX_DISABLE_PRIORITY_WINDOW_FOR_SCAN
bool "Force disable priority window for scan in the case of coexistence with Short Range radio"
help
Enable this configuration to disable priority window for scan
in the case of coexistence with Short Range radio.
2025-02-08 01:34:48 +05:30
if NETWORKING
config NRF_WIFI_ZERO_COPY_TX
bool "Zero copy Transmit path [EXPERIMENTAL]"
select NET_L2_ETHERNET_RESERVE_HEADER
select EXPERIMENTAL
# 54L has lower RAM
default y if SOC_SERIES_NRF54LX
help
Enable this configuration to use zero copy Transmit path.
The driver will use the network buffer directly for transmission
without copying the data to the driver's buffer. This reduces the
driver heap memory usage without much impact on the performance.
The application should configure the network buffers to ensure that
the whole packet fits in a single buffer, else the driver will fallback
to the normal copy path, but the memory requirements would still match
to the zero copy path and may be sub-optimal for the normal copy path.
endif # NETWORKING
2024-06-13 00:02:02 +05:30
endif # WIFI_NRF70