From 4ef0bd6b6cfc1ef220e462a34a566eaf300959d8 Mon Sep 17 00:00:00 2001 From: Kapil Bhatt Date: Fri, 27 Sep 2024 19:24:15 +0530 Subject: [PATCH] wifi: samples: Add offloaded raw tx mode sample This sample demonstrates the offloaded raw TX packet functionality of the nRF70 device. Signed-off-by: Kapil Bhatt --- README.rst | 14 +- cmake/sysbuild/nrf700x.cmake | 2 + .../protocols/wifi/advanced_modes/index.rst | 1 + .../wifi/advanced_modes/offloaded_raw_tx.rst | 53 ++++ samples/wifi/offloaded_raw_tx/CMakeLists.txt | 14 + samples/wifi/offloaded_raw_tx/Kconfig | 24 ++ samples/wifi/offloaded_raw_tx/README.rst | 110 ++++++++ samples/wifi/offloaded_raw_tx/prj.conf | 8 + samples/wifi/offloaded_raw_tx/sample.yaml | 20 ++ samples/wifi/offloaded_raw_tx/src/main.c | 248 ++++++++++++++++++ samples/wifi/offloaded_raw_tx/sysbuild.conf | 8 + sysbuild/Kconfig.wifi | 3 + 12 files changed, 503 insertions(+), 2 deletions(-) create mode 100644 doc/nrf/protocols/wifi/advanced_modes/offloaded_raw_tx.rst create mode 100644 samples/wifi/offloaded_raw_tx/CMakeLists.txt create mode 100644 samples/wifi/offloaded_raw_tx/Kconfig create mode 100644 samples/wifi/offloaded_raw_tx/README.rst create mode 100644 samples/wifi/offloaded_raw_tx/prj.conf create mode 100644 samples/wifi/offloaded_raw_tx/sample.yaml create mode 100644 samples/wifi/offloaded_raw_tx/src/main.c create mode 100644 samples/wifi/offloaded_raw_tx/sysbuild.conf diff --git a/README.rst b/README.rst index 04211a26660..e00535d4801 100644 --- a/README.rst +++ b/README.rst @@ -13,6 +13,16 @@ manifest (west.yml). Documentation ************* -Official latest documentation at https://docs.nordicsemi.com/bundle/ncs-latest/page/nrf/index.html +Documentation is available at https://files.nordicsemi.com/artifactory/NCS/Wi-Fi/docs/ -For earlier versions, open the latest version and use the drop-down under the title header. +Steps for viewing the documentation: +------------------------------------ + +1. Download `nrf70_off_raw_tx_doc.tgz` from the link provided above. +2. Unpack the package by running `tar -xf nrf70_off_raw_tx_doc.tgz`. +3. Open nrf/index.html from your favourite browser. + +Relevant pages in the documentation: + +1. Protocols->Wi-Fi->Advanced modes->Offloaded raw transmit operation +2. Samples -> Wi-Fi samples -> Wi-Fi: Offloaded raw TX diff --git a/cmake/sysbuild/nrf700x.cmake b/cmake/sysbuild/nrf700x.cmake index 77edb6a6801..2a34e34edf7 100644 --- a/cmake/sysbuild/nrf700x.cmake +++ b/cmake/sysbuild/nrf700x.cmake @@ -14,6 +14,8 @@ function(setup_nrf700x_xip_data) set(NRF70_PATCH ${OS_AGNOSTIC_BASE}/fw_bins/default/nrf70.bin) elseif(SB_CONFIG_WIFI_NRF700X_RADIO_TEST) set(NRF70_PATCH ${OS_AGNOSTIC_BASE}/fw_bins/radio_test/nrf70.bin) + elseif(SB_CONFIG_WIFI_NRF70_OFFLOADED_RAW_TX) + set(NRF70_PATCH ${OS_AGNOSTIC_BASE}/fw_bins/offloaded_raw_tx/nrf70.bin) elseif(SB_CONFIG_WIFI_NRF700X_SCAN_ONLY) set(NRF70_PATCH ${OS_AGNOSTIC_BASE}/fw_bins/scan_only/nrf70.bin) elseif(SB_CONFIG_WIFI_NRF700X_SYSTEM_WITH_RAW_MODES) diff --git a/doc/nrf/protocols/wifi/advanced_modes/index.rst b/doc/nrf/protocols/wifi/advanced_modes/index.rst index ad57cd8ce86..fe1d9c4d44c 100644 --- a/doc/nrf/protocols/wifi/advanced_modes/index.rst +++ b/doc/nrf/protocols/wifi/advanced_modes/index.rst @@ -13,3 +13,4 @@ The following subpages cover topics related to the transmission and reception of raw_tx_operation sniffer_rx_operation promiscuous_operation + offloaded_raw_tx diff --git a/doc/nrf/protocols/wifi/advanced_modes/offloaded_raw_tx.rst b/doc/nrf/protocols/wifi/advanced_modes/offloaded_raw_tx.rst new file mode 100644 index 00000000000..15aa0da7568 --- /dev/null +++ b/doc/nrf/protocols/wifi/advanced_modes/offloaded_raw_tx.rst @@ -0,0 +1,53 @@ +.. _ug_nrf70_developing_offloaded_raw_tx: + +Offloaded raw transmit operation +################################ + +.. contents:: + :local: + :depth: 2 + +The nRF70 series ICs can be used as offloaded raw transmit devices wherein the nRF70 series device can transmit frames at regular intervals utilizing very low power. The contents of the frame as well as parameters such as frequency and channel of transmission etc. are programmable. The major functionality of transmitting the frames is offloaded to the nRF70 device thereby placing very minimal requirements on the host (mainly programming capability) thereby leading to very little host memory requirements (Flash and RAM). + +This can serve as an ideal solution for applications such as indoor navigation and tracking, where the anchor nodes need to do low-power beaconing. Anchor devices can transmit beacon-compliant packets containing tracking/location information inside the BSSID/SSID fields. This information can then be used by the devices that scan for these beacon-compliant packets. + +The Offloaded Raw TX is supported as a separate stand-alone compile-time mode of operation in the Wi-Fi driver and is exclusive to the already existing modes of operation, i.e.: + +1. `Wi-Fi mode` and +2. `Radio Test mode` + +In addition to providing start/stop control over the offloaded raw transmit operation, the driver supports updating the configuration parameters as below: + +Frame contents +Channel of operation +Data rate +Rate flags +Periodicity of transmission +Transmit power + +.. _ug_nrf70_developing_enabling_offloaded_raw_tx: + +Offloaded raw transmit API +************************** + +The offloaded raw transmit functionality offered by nRF70 series ICs can be exercised using the APIs exposed by the driver. The API reference can be found at: + +| Header file: :file:`zephyr/drivers/wifi/nrfwifi/off_raw_tx/off_raw_tx_api.h` + + +The usage of the API is demonstrated by the :ref:`Offloaded raw transmit sample ` + +.. _ug_nrf70_developing_offloaded_raw_tx_power_consumption: + +Power consumption +***************** + +The power consumed by the nRF70 device during the offloaded raw TX operation is dependent on: + +1. Operating data rate (e.g. 6 Mbps, MCS0 etc.) : Power consumption decreases as the data rate increases. +2. Payload length : Power consumption increases with the payload length. +3. Periodicity of transmission : Power consumption increases as the period between successive transmissions decreases. +4. Transmit power : Power consumption increases as the transmit power is increased. + +The simulated power profiler can be found at: +https://devzone.nordicsemi.com/power/w/opp/14/online-power-profiler-for-wi-fi diff --git a/samples/wifi/offloaded_raw_tx/CMakeLists.txt b/samples/wifi/offloaded_raw_tx/CMakeLists.txt new file mode 100644 index 00000000000..6f380dd8076 --- /dev/null +++ b/samples/wifi/offloaded_raw_tx/CMakeLists.txt @@ -0,0 +1,14 @@ +# +# Copyright (c) 2022 Nordic Semiconductor ASA +# +# SPDX-License-Identifier: LicenseRef-Nordic-5-Clause +# + +cmake_minimum_required(VERSION 3.20.0) + +find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE}) +project(nrf_wifi_offloaded_raw_tx) + +target_sources(app PRIVATE + src/main.c +) diff --git a/samples/wifi/offloaded_raw_tx/Kconfig b/samples/wifi/offloaded_raw_tx/Kconfig new file mode 100644 index 00000000000..e622fa26bf6 --- /dev/null +++ b/samples/wifi/offloaded_raw_tx/Kconfig @@ -0,0 +1,24 @@ +# +# Copyright (c) 2023 Nordic Semiconductor +# +# SPDX-License-Identifier: LicenseRef-Nordic-5-Clause +# + +source "Kconfig.zephyr" + +menu "Offloaded Raw TX sample" + +config GENERATE_MAC_ADDRESS + bool "Random Wi-Fi MAC address" + depends on ENTROPY_GENERATOR + help + MAC address to be used by the sample. This is only used + when the nRF7002 OTP is not programmed with a MAC address. + +config BEACON_INTERVAL + int "Beacon interval in milliseconds" + default 100 + range 20 10000 + help + Time interval (in ms) between beacon transmissions. +endmenu diff --git a/samples/wifi/offloaded_raw_tx/README.rst b/samples/wifi/offloaded_raw_tx/README.rst new file mode 100644 index 00000000000..68dbb841a2d --- /dev/null +++ b/samples/wifi/offloaded_raw_tx/README.rst @@ -0,0 +1,110 @@ +.. _wifi_offloaded_raw_tx_packet_sample: + +Wi-Fi: Offloaded raw TX +####################### + +.. contents:: + :local: + :depth: 2 + +The Offloaded raw TX sample demonstrates how to use the `Offloaded raw TX` APIs provided by the nRF70 driver for transmitting raw packets. + +Requirements +************ + +The sample supports the following development kits: + +.. table-from-sample-yaml:: + +Overview +******** + +The sample generates and broadcasts 802.11 beacon frames as raw TX packets. +As a consequence, the nRF70 Series device can be identified as a Wi-FiĀ® beaconing device. + +Configuration +************* + +|config| + +Configuration options +===================== + +.. options-from-kconfig:: + +Building and running +******************** + +.. |sample path| replace:: :file:`samples/wifi/offloaded_raw_tx` + +.. include:: /includes/build_and_run_ns.txt + +To build for the nRF7002 DK, use the ``nrf7002dk/nrf5340/cpuapp`` board target. + + .. code-block:: console + + west build -p -b nrf7002dk/nrf5340/cpuapp + +To be able to generate beacons with random source MAC address and BSSID: + + .. code-block:: console + + west build -p -b nrf7002dk/nrf5340/cpuapp -- -DCONFIG_GENERATE_MAC_ADDRESS=y -DCONFIG_ENTROPY_GENERATOR=y + +To be able to transmit beacons at a specified interval: + + .. code-block:: console + + west build -p -b nrf7002dk/nrf5340/cpuapp -- -DCONFIG_BEACON_INTERVAL=200 + +Change the board target as given below for the nRF7002 EK. + +.. code-block:: console + + nrf5340dk/nrf5340/cpuapp -- -DSHIELD=nrf7002ek + +Testing +======= + +|test_sample| + +#. |connect_kit| +#. |connect_terminal| + + The sample shows the following output: + + .. code-block:: console + + *** Booting nRF Connect SDK v2.7.99-cb26b7c84971 *** + *** Using Zephyr OS v3.7.99-9056bece3e70 *** + ----- Initializing nRF70 ----- + ----- Starting to transmit beacons with the following configuration ----- + SSID: nRF70_off_raw_tx_1 + Period: 200000 + TX Power: 15 + Channel: 1 + Short Preamble: 0 + Number of Retries: 10 + Throughput Mode: Legacy + Rate: 54M + HE GI: 1 + HE LTF: 1 + ----- Statistics ----- + Packet sent: 150 + ----- Updating configuration to ----- + SSID: nRF70_off_raw_tx_2 + Period: 200000 + TX Power: 11 + Channel: 36 + Short Preamble: 0 + Number of Retries: 10 + Throughput Mode: Legacy + Rate: 12M + HE GI: 1 + HE LTF: 1 + ----- Statistics ----- + Packet sent: 299 + ----- Stopping transmission ----- + ----- Deinitializing nRF70 ----- + + Packets sent out, can be observed in a sniffer capture by filtering the packets by their transmit MAC address or SSID. diff --git a/samples/wifi/offloaded_raw_tx/prj.conf b/samples/wifi/offloaded_raw_tx/prj.conf new file mode 100644 index 00000000000..1af06a568fb --- /dev/null +++ b/samples/wifi/offloaded_raw_tx/prj.conf @@ -0,0 +1,8 @@ +CONFIG_WIFI=y +CONFIG_WIFI_NRF70=y +CONFIG_NRF70_OFFLOADED_RAW_TX=y + +# Memories +CONFIG_MAIN_STACK_SIZE=4096 +CONFIG_HEAP_MEM_POOL_SIZE=18000 +CONFIG_HEAP_MEM_POOL_IGNORE_MIN=y diff --git a/samples/wifi/offloaded_raw_tx/sample.yaml b/samples/wifi/offloaded_raw_tx/sample.yaml new file mode 100644 index 00000000000..1c61df2051b --- /dev/null +++ b/samples/wifi/offloaded_raw_tx/sample.yaml @@ -0,0 +1,20 @@ +sample: + description: Wi-Fi Offloaded Raw Tx Packet sample + application + name: Wi-Fi Offloaded Raw Tx Packet sample +tests: + sample.nrf7002.offloaded_raw_tx: + sysbuild: true + build_only: true + integration_platforms: + - nrf7002dk/nrf5340/cpuapp + platform_allow: nrf7002dk/nrf5340/cpuapp + tags: ci_build sysbuild ci_samples_wifi + sample.nrf7002_eks.offloaded_raw_tx: + sysbuild: true + build_only: true + extra_args: SHIELD=nrf7002ek + integration_platforms: + - nrf5340dk/nrf5340/cpuapp + platform_allow: nrf5340dk/nrf5340/cpuapp + tags: ci_build sysbuild ci_samples_wifi diff --git a/samples/wifi/offloaded_raw_tx/src/main.c b/samples/wifi/offloaded_raw_tx/src/main.c new file mode 100644 index 00000000000..c56501655e9 --- /dev/null +++ b/samples/wifi/offloaded_raw_tx/src/main.c @@ -0,0 +1,248 @@ +/* + * Copyright (c) 2024 Nordic Semiconductor ASA + * + * SPDX-License-Identifier: LicenseRef-Nordic-5-Clause + */ + +/** @file + * @brief Wi-Fi Offloaded raw tx sample + */ + +#include +#include +#include +#include +#include +#include +#include + +#ifdef CONFIG_GENERATE_MAC_ADDRESS +#include + +#define UNICAST_MASK GENMASK(7, 1) +#define LOCAL_BIT BIT(1) +#endif /* CONFIG_GENERATE_MAC_ADDRESS */ + +uint8_t bcn_extra_fields[] = { +0x03, 0x01, 0x01, 0x05, 0x04, 0x00, 0x01, 0x00, 0x00, 0x07, 0x06, 0x55, 0x53, 0x04, 0x01, 0x0b, +0x1e, 0x23, 0x02, 0x1c, 0x00, 0x2a, 0x01, 0x04, 0x32, 0x04, 0x0c, 0x12, 0x18, 0x60, 0x0b, 0x05, +0x00, 0x00, 0xd4, 0x00, 0x00, 0x46, 0x05, 0x32, 0x00, 0x00, 0x00, 0x00, 0x2d, 0x1a, 0xad, 0x09, +0x17, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3d, 0x16, 0x01, 0x08, 0x11, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x7f, 0x09, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0xdd, 0x18, 0x00, 0x50, 0xf2, +0x02, 0x01, 0x01, 0x8c, 0x00, 0x03, 0xa4, 0x00, 0x00, 0x27, 0xa4, 0x00, 0x00, 0x42, 0x43, 0x5e, +0x00, 0x62, 0x32, 0x2f, 0x00 +}; + + +struct bcn_frame { + uint8_t frame[NRF_WIFI_OFF_RAW_TX_FRAME_SIZE_MAX]; + uint16_t len; +} bcn; + +unsigned char bssid[6] = {0xf4, 0xce, 0x36, 0x00, 0x10, 0xaa}; + +unsigned char bcn_supp_rates[] = {0x02, 0x04, 0x0b, 0x16}; + +/* Example function to build a beacon frame */ +static int build_wifi_beacon(unsigned short beacon_interval, + unsigned short cap_info, + const char *ssid, + unsigned char *supp_rates, + unsigned int supp_rates_len, + unsigned char *extra_fields, + unsigned int extra_fields_len) +{ + unsigned int ssid_len = strlen(ssid); + unsigned int pos = 0; + unsigned char *bcn_frm = bcn.frame; + unsigned int len = 0; + + len = sizeof(beacon_interval) + sizeof(cap_info) + ssid_len + extra_fields_len; + + if (len < NRF_WIFI_OFF_RAW_TX_FRAME_SIZE_MIN) { + printf("Beacon frame exceeds maximum size\n"); + return -1; + } + + if (len > NRF_WIFI_OFF_RAW_TX_FRAME_SIZE_MAX) { + printf("Beacon frame exceeds maximum size\n"); + return 0; + } + + /* Frame Control */ + bcn_frm[pos++] = 0x80; /* Beacon frame */ + bcn_frm[pos++] = 0x00; + + /* Duration */ + bcn_frm[pos++] = 0x00; + bcn_frm[pos++] = 0x00; + + /* Destination Address (Broadcast) */ + memset(&bcn_frm[pos], 0xff, 6); + pos += 6; + + if (nrf70_off_raw_tx_mac_addr_get(bssid)) { + printf("Failed to get MAC address\n"); + return -1; + } + + /* Source Address */ + memcpy(&bcn_frm[pos], bssid, 6); + pos += 6; + + /* BSSID */ + memcpy(&bcn_frm[pos], bssid, 6); + pos += 6; + + /* Sequence Control */ + bcn_frm[pos++] = 0x00; + bcn_frm[pos++] = 0x00; + + /* Timestamp */ + memset(&bcn_frm[pos], 0x00, 8); + pos += 8; + + /* Beacon Interval */ + bcn_frm[pos++] = beacon_interval & 0xff; + bcn_frm[pos++] = (beacon_interval >> 8) & 0xff; + + /* Capability Information */ + bcn_frm[pos++] = cap_info & 0xff; + bcn_frm[pos++] = (cap_info >> 8) & 0xff; + + /* SSID Parameter Set */ + bcn_frm[pos++] = 0x00; /* SSID Element ID */ + bcn_frm[pos++] = ssid_len; /* SSID Length */ + memcpy(&bcn_frm[pos], ssid, ssid_len); + pos += ssid_len; + + /* Supported Rates */ + bcn_frm[pos++] = 0x01; /* Supported Rates Element ID */ + bcn_frm[pos++] = supp_rates_len; /* Supported Rates Length */ + memcpy(&bcn_frm[pos], supp_rates, supp_rates_len); + pos += supp_rates_len; + + /* Extra fields */ + memcpy(&bcn_frm[pos], extra_fields, extra_fields_len); + pos += extra_fields_len; + + return pos; +} + + +int main(void) +{ + struct nrf_wifi_off_raw_tx_conf conf; + struct nrf_wifi_off_raw_tx_stats stats; + int len = -1; + uint8_t *mac_addr = NULL; + char rate[RATE_MAX][10] = {"1M", "2M", "5.5M", "11M", "6M", "9M", "12M", "18M", + "24M", "36M", "48M", "54M", "MC0", "MC1", "MC2", "MC3", + "MC4", "MC5", "MC6", "MC7"}; + char tput_mode[TPUT_MODE_MAX][10] = {"Legacy", "HT", "VHT", "HE SU", "HE ER SU", "HE TB"}; + + printf("----- Initializing nRF70 -----\n"); + +#ifdef CONFIG_GENERATE_MAC_ADDRESS + mac_addr = malloc(6); + if (!mac_addr) { + printf("Failed to allocate memory for mac_addr\n"); + return -ENOMEM; + } + sys_rand_get(mac_addr, 6); + mac_addr[0] = (mac_addr[0] & UNICAST_MASK) | LOCAL_BIT; +#endif /* CONFIG_GENERATE_MAC_ADDRESS */ + + nrf70_off_raw_tx_init(mac_addr); + + /* Build a beacon frame */ + len = build_wifi_beacon(CONFIG_BEACON_INTERVAL, + 0x431, + "nRF70_off_raw_tx_1", + bcn_supp_rates, + sizeof(bcn_supp_rates), + bcn_extra_fields, + sizeof(bcn_extra_fields)); + + memset(&conf, 0, sizeof(conf)); + conf.pkt = bcn.frame; + conf.pkt_len = len; + conf.period_us = CONFIG_BEACON_INTERVAL * USEC_PER_MSEC; + conf.tx_pwr = 15; + conf.chan = 1; + conf.short_preamble = false; + conf.num_retries = 10; + conf.tput_mode = TPUT_MODE_LEGACY; + conf.rate = RATE_54M; + conf.he_gi = 1; + conf.he_ltf = 1; + + printf("----- Starting to transmit beacons with the following configuration -----\n"); + printf("\tSSID: nRF70_off_raw_tx_1\n"); + printf("\tPeriod: %d\n", conf.period_us); + printf("\tTX Power: %d\n", conf.tx_pwr); + printf("\tChannel: %d\n", conf.chan); + printf("\tShort Preamble: %d\n", conf.short_preamble); + printf("\tNumber of Retries: %d\n", conf.num_retries); + printf("\tThroughput Mode: %s\n", tput_mode[conf.tput_mode]); + printf("\tRate: %s\n", rate[conf.rate]); + printf("\tHE GI: %d\n", conf.he_gi); + printf("\tHE LTF: %d\n", conf.he_ltf); + nrf70_off_raw_tx_start(&conf); + + k_sleep(K_SECONDS(30)); + + memset(&stats, 0, sizeof(stats)); + nrf70_off_raw_tx_stats(&stats); + printf("----- Statistics -----\n"); + printf("\tPacket sent: %u\n", stats.off_raw_tx_pkt_sent); + + /* Build a beacon frame */ + len = build_wifi_beacon(CONFIG_BEACON_INTERVAL, + 0x431, + "nRF70_off_raw_tx_2", + bcn_supp_rates, + sizeof(bcn_supp_rates), + bcn_extra_fields, + sizeof(bcn_extra_fields)); + conf.pkt = bcn.frame; + conf.pkt_len = len; + conf.tx_pwr = 11; + conf.chan = 36; + conf.short_preamble = false; + conf.num_retries = 10; + conf.rate = RATE_12M; + + printf("----- Updating configuration to -----\n"); + printf("\tSSID: nRF70_off_raw_tx_2\n"); + printf("\tPeriod: %d\n", conf.period_us); + printf("\tTX Power: %d\n", conf.tx_pwr); + printf("\tChannel: %d\n", conf.chan); + printf("\tShort Preamble: %d\n", conf.short_preamble); + printf("\tNumber of Retries: %d\n", conf.num_retries); + printf("\tThroughput Mode: %s\n", tput_mode[conf.tput_mode]); + printf("\tRate: %s\n", rate[conf.rate]); + printf("\tHE GI: %d\n", conf.he_gi); + printf("\tHE LTF: %d\n", conf.he_ltf); + nrf70_off_raw_tx_conf_updt(&conf); + + k_sleep(K_SECONDS(30)); + + nrf70_off_raw_tx_stats(&stats); + printf("----- Statistics -----\n"); + printf("\tPacket sent: %u\n", stats.off_raw_tx_pkt_sent); + + printf("----- Stopping transmission -----\n"); + nrf70_off_raw_tx_stop(); + + printf("----- Deinitializing nRF70 -----\n"); + nrf70_off_raw_tx_deinit(); + + if (mac_addr) { + free(mac_addr); + } + + return 0; +} diff --git a/samples/wifi/offloaded_raw_tx/sysbuild.conf b/samples/wifi/offloaded_raw_tx/sysbuild.conf new file mode 100644 index 00000000000..cce82009028 --- /dev/null +++ b/samples/wifi/offloaded_raw_tx/sysbuild.conf @@ -0,0 +1,8 @@ +# +# Copyright (c) 2024 Nordic Semiconductor ASA +# +# SPDX-License-Identifier: LicenseRef-Nordic-5-Clause +# + +SB_CONFIG_WIFI_NRF70=y +SB_CONFIG_WIFI_NRF70_OFFLOADED_RAW_TX=y diff --git a/sysbuild/Kconfig.wifi b/sysbuild/Kconfig.wifi index 398033674bf..37acbf307f8 100644 --- a/sysbuild/Kconfig.wifi +++ b/sysbuild/Kconfig.wifi @@ -28,6 +28,9 @@ config WIFI_NRF700X_SCAN_ONLY config WIFI_NRF700X_RADIO_TEST bool "Radio test mode of the nRF700x driver" +config WIFI_NRF70_OFFLOADED_RAW_TX + bool "Offloaded raw tx mode of the nRF700x driver" + config WIFI_NRF700X_SYSTEM_WITH_RAW_MODES bool "Enable nRF700X system mode with raw modes" help