|
|
# Nordic Wi-Fi driver for nRF70 series SoCs |
|
|
# |
|
|
# Copyright (c) 2024 Nordic Semiconductor |
|
|
# |
|
|
# SPDX-License-Identifier: Apache-2.0 |
|
|
# |
|
|
|
|
|
# TODO: Use DTS generated Kconfig once the board support is added |
|
|
DT_COMPAT_NORDIC_WIFI71 := nordic,wifi71 |
|
|
|
|
|
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 |
|
|
select NRF70_BUSLIB |
|
|
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 || \ |
|
|
$(dt_compat_enabled,$(DT_COMPAT_NORDIC_WIFI71)) |
|
|
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 || $(dt_compat_enabled,$(DT_COMPAT_NORDIC_WIFI71)) |
|
|
|
|
|
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 |
|
|
|
|
|
|
|
|
choice WIFI_USAGE_MODE |
|
|
default WIFI_USAGE_MODE_SCAN_ONLY if WIFI_NRF7000 |
|
|
endchoice |
|
|
|
|
|
config NRF70_QSPI_LOW_POWER |
|
|
bool "low power mode in QSPI" |
|
|
default y if NRF_WIFI_LOW_POWER |
|
|
|
|
|
choice NRF70_OPER_MODES |
|
|
bool "nRF70 operating modes" |
|
|
default NRF70_SYSTEM_MODE if !WIFI_USAGE_MODE_SCAN_ONLY |
|
|
default NRF70_SCAN_ONLY |
|
|
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. |
|
|
In this mode, the driver can only perform scanning operations |
|
|
to discover nearby Wi-Fi networks, but cannot establish connections |
|
|
or transmit/receive data. Mainly used for location accuracy |
|
|
improvement. |
|
|
|
|
|
config NRF70_SYSTEM_MODE |
|
|
bool "System mode of the nRF70 driver" |
|
|
help |
|
|
Select this option to enable system mode of the nRF70 driver. |
|
|
This is the normal operating mode that supports full Wi-Fi |
|
|
functionality including sub-modes like STA, AP, and P2P. |
|
|
|
|
|
config NRF70_RADIO_TEST |
|
|
bool "Radio test mode of the nRF70 driver" |
|
|
help |
|
|
Select this option to enable radio test mode of the nRF70 driver. |
|
|
This mode is used for testing RF performance and regulatory |
|
|
compliance. It provides direct control of the radio hardware |
|
|
for transmitting test patterns and measuring RF parameters. |
|
|
|
|
|
config NRF70_OFFLOADED_RAW_TX |
|
|
bool "Offloaded raw TX mode of the nRF70 driver" |
|
|
help |
|
|
Select this option to enable offloaded raw TX mode. |
|
|
In this mode, raw 802.11 frames can be transmitted directly |
|
|
without normal Wi-Fi protocol processing. The frame construction |
|
|
and transmission timing is handled by the Wi-Fi hardware, |
|
|
reducing CPU load. |
|
|
|
|
|
endchoice |
|
|
|
|
|
config NET_L2_ETHERNET |
|
|
default y if (!NRF70_RADIO_TEST && !NRF70_OFFLOADED_RAW_TX) |
|
|
|
|
|
if NRF70_SYSTEM_MODE |
|
|
config NRF70_STA_MODE |
|
|
bool "nRF70 STA mode" |
|
|
default y if WIFI_USAGE_MODE_STA || WIFI_USAGE_MODE_STA_AP |
|
|
depends on WIFI_NRF7002 || WIFI_NRF7001 |
|
|
select WIFI_NM_WPA_SUPPLICANT |
|
|
select NRF70_DATA_TX |
|
|
help |
|
|
Select this option to enable STA mode of the nRF70 driver. |
|
|
config NRF70_AP_MODE |
|
|
bool "Access point mode" |
|
|
depends on WIFI_NRF7002 || WIFI_NRF7001 |
|
|
select NRF70_DATA_TX |
|
|
depends on WIFI_NM_WPA_SUPPLICANT_AP |
|
|
default y if WIFI_USAGE_MODE_AP || WIFI_USAGE_MODE_STA_AP |
|
|
|
|
|
config NRF70_P2P_MODE |
|
|
bool "P2P support in driver" |
|
|
|
|
|
config NRF70_SYSTEM_WITH_RAW_MODES |
|
|
bool "nRF70 system mode with raw modes" |
|
|
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. |
|
|
|
|
|
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 |
|
|
endif # NRF70_SYSTEM_MODE |
|
|
|
|
|
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" |
|
|
depends on !BUILD_ONLY_NO_BLOBS |
|
|
default NRF_WIFI_PATCHES_BUILTIN |
|
|
|
|
|
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" |
|
|
depends on !NRF70_RADIO_TEST && !NRF70_AP_MODE |
|
|
depends on !NRF71_ON_IPC |
|
|
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 |
|
|
default 4600 |
|
|
|
|
|
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" |
|
|
|
|
|
if NRF70_SR_COEX |
|
|
config NRF70_SR_COEX_RF_SWITCH |
|
|
bool "GPIO configuration to control SR side RF switch position" |
|
|
depends on $(dt_nodelabel_has_prop,nrf70,srrf-switch-gpios) |
|
|
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). |
|
|
|
|
|
config NRF70_SR_COEX_SLEEP_CTRL_GPIO_CTRL |
|
|
bool "Configuration of GPIO control for coexistence" |
|
|
depends on !NRF71_ON_IPC |
|
|
default y |
|
|
|
|
|
config NRF70_SR_COEX_SWCTRL1_OUTPUT |
|
|
int "Configure SWCTRIL1 as output" |
|
|
default 0 |
|
|
|
|
|
config NRF70_SR_COEX_BT_GRANT_ACTIVE_LOW |
|
|
int "Configure BT grant active low" |
|
|
default 1 |
|
|
endif # NRF70_SR_COEX |
|
|
|
|
|
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_DEBUG_SHELL |
|
|
depends on SHELL |
|
|
bool "Debug 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. |
|
|
|
|
|
config NRF_WIFI_GLOBAL_HEAP |
|
|
bool "Use Zephyr kernel heap for Wi-Fi driver" |
|
|
depends on KERNEL_MEM_POOL && ((HEAP_MEM_POOL_SIZE > 0) || HEAP_MEM_POOL_IGNORE_MIN) |
|
|
help |
|
|
Enable this option to use K_HEAP for memory allocations in Wi-Fi driver. |
|
|
|
|
|
if NRF_WIFI_GLOBAL_HEAP |
|
|
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 |
|
|
endif # NRF_WIFI_GLOBAL_HEAP |
|
|
|
|
|
if !NRF_WIFI_GLOBAL_HEAP |
|
|
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 0 if NRF70_RADIO_TEST || NRF70_OFFLOADED_RAW_TX |
|
|
default 8000 if NRF70_SCAN_ONLY |
|
|
default 110000 if !SOC_FAMILY_NORDIC_NRF |
|
|
default 130000 |
|
|
endif |
|
|
|
|
|
if NETWORKING |
|
|
# Finetune defaults for certain system components used by the driver |
|
|
# Note: These will take effect only if the symbol is not defined already |
|
|
# (i.e., the original symbol is processed after "drivers/Kconfig") |
|
|
config NET_TX_STACK_SIZE |
|
|
default 4096 |
|
|
|
|
|
config NET_RX_STACK_SIZE |
|
|
default 4096 |
|
|
|
|
|
config NET_TC_TX_COUNT |
|
|
default 1 |
|
|
|
|
|
endif # NETWORKING |
|
|
|
|
|
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 |
|
|
# 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 |
|
|
endif # NRF_WIFI_USE_VARIABLE_NET_BUFS |
|
|
|
|
|
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 |
|
|
depends on NRF_WIFI_LOW_POWER |
|
|
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_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" |
|
|
# Raw scan results need host based refilling |
|
|
depends on !WIFI_MGMT_RAW_SCAN_RESULTS |
|
|
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. |
|
|
|
|
|
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. |
|
|
|
|
|
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. |
|
|
|
|
|
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 |
|
|
|
|
|
config NRF_WIFI_MAX_PS_POLL_FAIL_CNT |
|
|
int "Maximum number of PS-Poll failures" |
|
|
default 10 |
|
|
range 10 4294967295 |
|
|
help |
|
|
Maximum number of PS-Poll failures before entering qos null-based power save. |
|
|
|
|
|
config NRF_WIFI_RX_STBC_HT |
|
|
bool "Receive packets encoded with STBC in HT (Wi-Fi4) mode" |
|
|
default y |
|
|
help |
|
|
Receive packets encoded with STBC (Space-Time Block Coding) |
|
|
in HT (Wi-Fi4) mode. |
|
|
|
|
|
config NRF_WIFI_DYNAMIC_BANDWIDTH_SIGNALLING |
|
|
bool "Dynamic bandwidth signalling for Wi-Fi" |
|
|
help |
|
|
This option enables support for dynamic bandwidth signalling. |
|
|
|
|
|
config NRF_WIFI_DYNAMIC_ED |
|
|
bool "Dynamic ED" |
|
|
help |
|
|
This option enables support for proprietary algorithm to |
|
|
enhance performance in high-traffic channels. |
|
|
endif # WIFI_NRF70
|
|
|
|