Commit graph

579 commits

Author SHA1 Message Date
Chaitanya Tata
da26d02d63 nrf_wifi: Move shim files from driver to module
The shim files should be part of the Zephyr module directory within
Zephyr, as they are coupled with the module implementation which os OS
agnostic.

Signed-off-by: Chaitanya Tata <Chaitanya.Tata@nordicsemi.no>
2024-11-25 17:43:34 +01:00
Chaitanya Tata
459f972785 drivers: nrf_wifi: Remove OSAL code handling
This is now taken care by the Zephyr module shim.

Signed-off-by: Chaitanya Tata <Chaitanya.Tata@nordicsemi.no>
2024-11-25 17:43:34 +01:00
Chaitanya Tata
f7dc9f82d2 drivers: nrf_wifi: Fix the path to OSAL code
The OSAL code now lives in it's own repo nrf_wifi.

Signed-off-by: Chaitanya Tata <Chaitanya.Tata@nordicsemi.no>
2024-11-25 17:43:34 +01:00
Chaitanya Tata
139ce48c8b nrf_wifi: Fix the directory name
Following the naming convention add an underscore and update path in the
maintainers file too.

Signed-off-by: Chaitanya Tata <Chaitanya.Tata@nordicsemi.no>
2024-11-25 17:43:34 +01:00
Maochen Wang
30763cfc4a drivers: wifi: nxp: default use hostapd AP
For NXP Wi-Fi, default use hostapd based AP.

Signed-off-by: Maochen Wang <maochen.wang@nxp.com>
2024-11-25 08:30:38 +01:00
Yong Cong Sin
b1def7145f arch: deprecate _current
`_current` is now functionally equals to `arch_curr_thread()`, remove
its usage in-tree and deprecate it instead of removing it outright,
as it has been with us since forever.

Signed-off-by: Yong Cong Sin <ycsin@meta.com>
Signed-off-by: Yong Cong Sin <yongcong.sin@gmail.com>
2024-11-23 20:12:24 -05:00
Hongquan Li
41e33573e8 drivers: wifi: esp_at: Fix serial receive interrupt can't exit
If a character is received immediately after modem_iface_uart_init called,
the modem_iface_uart_isr function will not read the data in the serial port
fifo register as the context has not been registered at this time,
which will result in the program not being able to exit the interrupt,
so the context should registered before the serial port is initialised.

Signed-off-by: Hongquan Li <hongquan.prog@gmail.com>
2024-11-21 20:12:00 +01:00
Valerio Setti
516886be1b mbedtls: MBEDTLS_ENTROPY_POLL_ZEPHYR default on if MBEDTLS_ENTROPY_C
As long as MBEDTLS_ENTROPY_C is enabled, Mbed TLS needs to
poll some entropy source to gather data that will then be
processed by CTR/HMAC-DRBG modules. This means that in most
of the cases, once MBEDTLS_ENTROPY_C is enabled then also
MBEDTLS_ENTROPY_POLL_ZEPHYR needs to be enabled. This was
done manually until now, as the long list of samples/tests
demonstrate.

This commit solves this dependency by defaulting
MBEDTLS_ENTROPY_POLL_ZEPHYR to on as soon as
MBEDTLS_ENTROPY_C is set. As a consequence, all manual
enablement of MBEDTLS_ENTROPY_POLL_ZEPHYR in samples/tests
are removed.

Signed-off-by: Valerio Setti <vsetti@baylibre.com>
2024-11-20 15:59:40 -05:00
Chaitanya Tata
f537cf311d drivers: nrfwifi: Remove passing unused flag
This flag is now unused in OSAL as it takes the input via the API.

Signed-off-by: Chaitanya Tata <Chaitanya.Tata@nordicsemi.no>
2024-11-17 19:06:34 -05:00
Kapil Bhatt
62e06a5072 drivers: wifi: Fix offloaded raw TX feature flags
Pass passive scan and offloaded raw tx feature flags to OSAL.

Signed-off-by: Kapil Bhatt <kapil.bhatt@nordicsemi.no>
2024-11-17 19:06:34 -05:00
Gang Li
f8acf35ddc drivers: wifi: nxp: fix build failure after disabling 802.11ax
Fixed build error, when disabling 802.11ax, if-else does not match.
Fixes #81117

Signed-off-by: Gang Li <gang.li_1@nxp.com>
2024-11-16 15:09:22 -05:00
Nazar Palamar
7e1b00d35e Infineon: board: remove CONFIG_GPIO from defconfigs
Remove CONFIG_GPIO from defconfigs for Infineon boards.
Applications, drivers will enable GPIO if need.

Added 'select GPIO' from spi/Kconfig.ifx_cat1
Added 'select GPIO' from wifi/infineon/Kconfig.airoc

Signed-off-by: Nazar Palamar <nazar.palamar@infineon.com>
2024-11-14 17:27:06 -06:00
Hongquan Li
c5fa9af235 drivers/wifi/nrfwifi: Add buffer for discard bytes
Some spi drivers do not allow the send buffer
and receive buffer to be empty at the same time,
if this happens it will cause the spi to be unable
to communicate with the nrf7002, so add the receive
buffer for the discard byte in the spim_xfer_rx.

Fix #80686

Signed-off-by: Hongquan Li <hongquan.prog@gmail.com>
2024-11-08 14:01:23 -06:00
Chaitanya Tata
9561a0ac76 drivers: nrfwifi: Fix recovery for SAP
nRF70 recovery relies on power-management feature which isn't applicable
for SAP, so, we keep seeing false recovery causing interface restart.

Disabled recovery for SAP to fix the issue.

Fixes #81130.

Signed-off-by: Chaitanya Tata <Chaitanya.Tata@nordicsemi.no>
2024-11-08 11:37:31 -06:00
Chaitanya Tata
073f68d248 drivers: nrfwifi: WAR for performance regression
With the newly introduced settling time for PLLS, we are seeing a peak
performance drop of 3Mbps in Zperf benchmarks, and also other
performance tests are also impacted.

This settling time was introduced based on observations in lab and not
because of any real problem or bug reported, so, for now, use zero
settling time (same as earlier) till we fully investigate and understand
the impacts and need.

Fixes #80951.

Signed-off-by: Chaitanya Tata <Chaitanya.Tata@nordicsemi.no>
2024-11-07 18:04:44 -06:00
Chaitanya Tata
4ae6520c3a drivers: nrfwifi: Fix passing of RAW scan results flag
The CONFIG_ prefix should be removed when passing to OSAL code.

Signed-off-by: Chaitanya Tata <Chaitanya.Tata@nordicsemi.no>
2024-11-07 09:00:35 -08:00
Chaitanya Tata
87a9363fa7 drivers: nrfiwif: Enable recovery by default
This is needed to ensure Wi-Fi can always be used.

Signed-off-by: Chaitanya Tata <Chaitanya.Tata@nordicsemi.no>
2024-11-06 14:41:44 -06:00
Chaitanya Tata
c0a84524cd drivers: nrfwifi: Fix the undefined macro usage
This works because undefined macro in conditional is treated as zero,
but could end up choosing the wrong divider.

Fix the macro with the new name.

Signed-off-by: Chaitanya Tata <Chaitanya.Tata@nordicsemi.no>
2024-11-06 09:58:37 -08:00
Chaitanya Tata
9705fc06b4 [nrf fromlist] drivers: nrfwifi: Fix CSUM support
With introduction of Raw modes, nRF70 driver now advertises get_c
onfig OP, but doesn't implement all types.

This causes problems two-fold with checksum calculations:
  1. The "config" isn't uninitialized, so, every call returns differnet
     values. So, for UDP header checksum would be done and
     pkt->chksumdone would be set. But for IPv4 header checksum might be
     skipped.
  2. Even if we initialize to zero, then network stack gets all zeros
     and calculates checksum by itself rendering offload moot.

There is another problem in #1, as there is only single flag for pkt for
all checksum, nRF70 driver sees this and tells UMAC to skip checksum for
the entire packet. The design isn't coherent, and should be converted to
communicate per-type checksum status (some are filled by network stack
and some HW).

But as nRF70 support all checksum offloads, advertise all types for both
RX and TX.

Upstream PR #: 80882

Signed-off-by: Chaitanya Tata <Chaitanya.Tata@nordicsemi.no>
2024-11-06 09:54:12 -08:00
Chaitanya Tata
c86225384a drivers: nrfwifi: Add a NULL check for FMAC context
In case the driver UP fails, the FMAC context will be NULL, so, add a
NULL check in the DOWN.

Fixes a crash seen when working with unprogrammed OTP (no MAC) that
fails the interface UP.

Signed-off-by: Chaitanya Tata <Chaitanya.Tata@nordicsemi.no>
2024-11-06 09:54:12 -08:00
Chaitanya Tata
580707ed4d drivers: nrfwifi: Fixes from doc review
Help text fixes from doc-team.

Signed-off-by: Richa Pandey <richa.pandey@nordicsemi.no>
Signed-off-by: Chaitanya Tata <Chaitanya.Tata@nordicsemi.no>
2024-11-05 10:53:24 -06:00
Chaitanya Tata
92985011b6 drivers: nrfwifi: Fix memory leak in TX path
During secure association, if we get any data packets from the
networking stack (as we switch off the dormancy) then they will be
dropped till the 802.1x port is authorized, but with recent changes the
corresponding network buffer isn't freed causing a memory leak.

Handle this case and free the network buffer (Using an OSAL API though
it's Zephyr to avoid duplication and also getting access to "struct
nwb");

Signed-off-by: Chaitanya Tata <Chaitanya.Tata@nordicsemi.no>
2024-10-30 09:43:41 -07:00
Sylvio Alves
b5c53d6ac4 wifi: esp32: move kconfig to driver area
Make sure all kconfig related to Wi-Fi is
in its driver area.
This commit also removes esp_timer_init() call
from Wi-Fi driver.

Signed-off-by: Sylvio Alves <sylvio.alves@espressif.com>
2024-10-27 20:53:48 -05:00
Alberto Escolar Piedras
9a50c10b34 drivers/wifi/winc1500: Fix build warnings with 64bit targets
Fix a set of warnings like:
drivers/wifi/winc1500/wifi_winc1500.c:332:25: error: cast from pointer
to integer of different size [-Werror=pointer-to-int-cast]
  332 |         SOCKET socket = (int)context->offload_context;

when int and void* do not have the same size, by casting the content
of context->offload_context to intptr_t which is whichever integer
size matches the pointer size.

Signed-off-by: Alberto Escolar Piedras <alberto.escolar.piedras@nordicsemi.no>
2024-10-26 11:29:46 +02:00
Chaitanya Tata
7d696f5b69 drivers: nrfwifi: Fix label name
The label is used for both positive and negative cases, so, should be
called "out".

Signed-off-by: Chaitanya Tata <Chaitanya.Tata@nordicsemi.no>
2024-10-26 03:57:12 +01:00
Chaitanya Tata
2ea25ea238 drivers: nrfwifi: Fix regulatory domain regression
Recent WPA supplicant changes have broken nRF regulatory support,
implement the new set/get country WPA supplicant ops.

WPA supplicant: Regulatory SET through WPA supplicant, GET is direct to
the driver

Scan only: SET and GET direct calls to the driver

Fixes #79916.

Signed-off-by: Chaitanya Tata <Chaitanya.Tata@nordicsemi.no>
2024-10-26 03:57:12 +01:00
Hui Bai
7c167c67c3 modules: hostap: add 11k cmd support
Add 11k cmds support. User can issue 11k cmds to enable/disable 11k and
send Neighbor Report Request packet.

Signed-off-by: Hui Bai <hui.bai@nxp.com>
2024-10-25 13:53:49 +02:00
James Roy
b443929f49 drivers: esp32: Fix esp_wifi_drv strncpy warning
Add '\0' to the end of the ssid to prevent warnings
or segmentation errors.

Signed-off-by: James Roy <rruuaanng@outlook.com>
2024-10-25 08:53:26 +02:00
Daniel DeGrasse
3d4f83aaac drivers: wifi: eswifi: fix casts for 64 bit pointers
The eswifi driver uses an integer to identify the socket used for each
connection, which must be cast to and from a `void *`. This causes
warnings on 64 bit platforms, as precision is lost when casting from a
`void *` to `int`. Use a `intptr_t` type to store the socket value to
resolve this warning. Also, fix a function signature for the `accept_cb`
to use `size_t` instead of `int` for the length

Fixes #80242

Signed-off-by: Daniel DeGrasse <daniel.degrasse@nxp.com>
2024-10-24 12:25:04 -05:00
Chaitanya Tata
3098c484cb drivers: nrfwifi: Fix a build error
The defines should explicitly be passed to nordic HAL as they dont' use
the CONFIG_ prefix.

Signed-off-by: Chaitanya Tata <Chaitanya.Tata@nordicsemi.no>
2024-10-24 13:15:25 +01:00
Daniel DeGrasse
7bc316ba3c drivers: wifi: nxp: add CONFIG_NXP_WIFI_BUILD_ONLY_MODE for CI testing
Add CONFIG_NXP_WIFI_BUILD_ONLY_MODE, which allows the NXP WiFi driver to
be built without a binary blob. The built application will not be
functional, but this enables continuous integration to run upstream.

Signed-off-by: Daniel DeGrasse <daniel.degrasse@nxp.com>
2024-10-24 09:29:21 +02:00
Daniel DeGrasse
8ea2c4f692 drivers: wifi: nxp: remove unused nxp_wifi_uap_status function
Remove unused function `nxp_wifi_uap_status`.

Signed-off-by: Daniel DeGrasse <daniel.degrasse@nxp.com>
2024-10-24 09:29:21 +02:00
Daniel DeGrasse
4703fb0707 drivers: wifi: nxp: remove non-existent TWT fields
Remove references to TWT fields that did not exist, to resolve a build
error.

Signed-off-by: Daniel DeGrasse <daniel.degrasse@nxp.com>
2024-10-24 09:29:21 +02:00
Daniel DeGrasse
452770f9e9 modules: hostap: remove set_btwt API
set_btwt API implementation is not complete. Remove the structure
definition and implementation from the NXP WiFi driver to fix a build
error.

Signed-off-by: Daniel DeGrasse <daniel.degrasse@nxp.com>
2024-10-24 09:29:21 +02:00
Daniel DeGrasse
db271a7392 modules: hostap: remove ap_bandwidth API
ap_bandwidth API implementation is not complete. Remove the structure
definition and implementation from the NXP WiFi driver to fix a build
error.

Signed-off-by: Daniel DeGrasse <daniel.degrasse@nxp.com>
2024-10-24 09:29:21 +02:00
Kapil Bhatt
7161a7a06a drivers: wifi: Add changes for regulatory domain
Add changes for offloaded raw tx regulatory domain.

Signed-off-by: Kapil Bhatt <kapil.bhatt@nordicsemi.no>
2024-10-23 16:50:15 +02:00
Kapil Bhatt
0b11b39461 drivers: wifi: Add Kconfig option for passive scan
Add kconfig option for forced passive scan, It will use for
only scan only mode.

Signed-off-by: Kapil Bhatt <kapil.bhatt@nordicsemi.no>
2024-10-22 20:40:01 +02:00
Chaitanya Tata
f7ef64df28 drivers: nrfwifi: Allow scan-only for all platforms
Though nRF7000 is a special Scan only chipset, scan only can work with
any nRF70 platforms, no need for this enforcement and we can keep things
flexible.

Signed-off-by: Chaitanya Tata <Chaitanya.Tata@nordicsemi.no>
2024-10-22 20:38:48 +02:00
Chaitanya Tata
9a9f8998f9 drivers: nrfwifi: Remove non-existing member
Opriv was removed but the doxygen doc string was left.

Signed-off-by: Chaitanya Tata <Chaitanya.Tata@nordicsemi.no>
2024-10-21 18:49:09 -05:00
Chaitanya Tata
a21648d7e6 drivers: wifi: Clean up exit path
Fix couple of bugs in exit path:

- In case of calloc failure, return's without unlocking
- memory is freed outside lock, in case of a tiny window of race, this
  can cause a crash when this function is called from two threads.

Signed-off-by: Chaitanya Tata <Chaitanya.Tata@nordicsemi.no>
2024-10-21 18:49:09 -05:00
Chaitanya Tata
ea7d3bea93 drivers: wifi: Fix memory leak in regulatory processing
During Wi-Fi connection UMAC sends an unsolicited regulatory change
event but the driver code always assumes that this event is solicited
hence doesn't free the memory for the event.

Fix this by dropping the unsolicited event as it's not supported yet.

Fixes #79733.

Signed-off-by: Chaitanya Tata <Chaitanya.Tata@nordicsemi.no>
2024-10-21 18:49:09 -05:00
Chaitanya Tata
f333e1f00f drivers: wifi: Add regulatory debug log
This log helps in identifing if the event is solicited or not.

Signed-off-by: Chaitanya Tata <Chaitanya.Tata@nordicsemi.no>
2024-10-21 18:49:09 -05:00
Vivekananda Uppunda
da0c30d52a drivers: wifi: nrfwifi: Add promiscuous mode support functions
This adds promiscuous mode support functions into build for filter
operation when the configuration CONFIG_NRF70_PROMISC_DATA_RX
is enabled.

Signed-off-by: Vivekananda Uppunda <vivekananda.uppunda@nordicsemi.no>
2024-10-18 08:31:50 -04:00
Vivekananda Uppunda
c9b56de040 drivers: wifi: nrfwifi: Promiscuous mode filtering support in driver
This set of changes brings in promiscuous mode filtering support in
driver. Since, firmware would be unable to filter packets due to
connection issues, the filtering support for promiscuous mode is
moved to the driver.

Signed-off-by: Vivekananda Uppunda <vivekananda.uppunda@nordicsemi.no>
2024-10-18 08:31:50 -04:00
Chaitanya Tata
9eedb6d7c8 drivers: nrfwifi: Fix build error
This crept-in due to bad merge conflict resolution.

Signed-off-by: Chaitanya Tata <Chaitanya.Tata@nordicsemi.no>
2024-10-17 09:45:34 +02:00
Chaitanya Tata
cd736558ef drivers: nrfwifi: Fix build errors when Util is enabled
This path is disabled by default.

Signed-off-by: Chaitanya Tata <Chaitanya.Tata@nordicsemi.no>
2024-10-17 09:45:34 +02:00
Chaitanya Tata
d30161cd8b drivers: wifi: Fix mutex re-initialization
The mutex is used to protect RPU zephyr context which gets modified for
every interface down and up (including recovery), so, it was being
re-initialized but also used to protect down and up which is a bug.

Move the re-initialization to the driver entry so that it happens only
once and we can properly use the mutext for down and up protection.

Signed-off-by: Chaitanya Tata <Chaitanya.Tata@nordicsemi.no>
2024-10-17 09:45:34 +02:00
Chaitanya Tata
ce9d71c476 drivers: wifi: Fix missing unlock for stats
The RPU context lock is not unlocked this is causing recovery to be
stuck waiting for the lock.

Signed-off-by: Chaitanya Tata <Chaitanya.Tata@nordicsemi.no>
2024-10-17 09:45:34 +02:00
Chaitanya Tata
67216f1b5a drivers: wifi: Fix crash when recovery is triggered
There is a race condition when recovery is in progress and in parallel
Wi-Fi util commands are being executed (CTF), where the RPU context is
de-initialized as part of recovery but no checks are present in the
Wi-Fi util command processing causing a crash.

This needs a proper fix for all commands, but for maintenance branch
fix is added only for commonly used commands.

Signed-off-by: Chaitanya Tata <Chaitanya.Tata@nordicsemi.no>
2024-10-17 09:45:34 +02:00
Ajay Parida
fe920fc9c9 drivers: wifi: Add PS exit strategy runtime configuration
Dynamically set power save exit strategy runtime configuration that
allows to switch b/w stratgies depending on conserving power and
low-latency traffic download.

Signed-off-by: Ajay Parida <ajay.parida@nordicsemi.no>
2024-10-17 09:45:34 +02:00
Chaitanya Tata
d0d659b675 drivers: wifi: Use mutex for spinlock
Ideally we should be using Zephyr spinlock APIs but that requires
changes to shim API, so, for this maintenance release just replace with
mutex to keep the context same and no API changes.

This solves the locking issue that we see when control and data path are
excited concurrently due to locking semantics of semaphores, the issue
is not root caused but mutex enforce strict locking semantics for
multiple threads and solve the issue.

Signed-off-by: Chaitanya Tata <Chaitanya.Tata@nordicsemi.no>
2024-10-17 09:45:34 +02:00
Chaitanya Tata
5f6dca377a drivers: wifi: Fix shell hang
Add a null check for HAL context in the interrupt handler, this was
causing locking issue operating on null. The root cause of null is not
known, but this solves the locking issue when data and control paths are
excited in parallel.

Signed-off-by: Chaitanya Tata <Chaitanya.Tata@nordicsemi.no>
2024-10-17 09:45:34 +02:00
Chaitanya Tata
7c3d342796 drivers: wifi: Add support for keepalive
To handle interoperability issue with few APs, add a feature to keep
sending keepalive frames periodically to avoid AP disconnecting the STA.

This is disabled by default to avoid unnecessary power consumption as
it's only seen with few old APs.

Signed-off-by: Chaitanya Tata <Chaitanya.Tata@nordicsemi.no>
2024-10-17 09:45:34 +02:00
Chaitanya Tata
94f9fb95d9 drivers: wifi: Increase default PS active timeout interval
In crowded environments RPU is active for more than 10s due to too many
retries and this triggers a false RPU recovery. To avoid this, increase
the default to 50s to handle corner cases, as this will only impact the
recovery triggered case, higher timeout doesn't have any impact in
normal cases.

Signed-off-by: Chaitanya Tata <Chaitanya.Tata@nordicsemi.no>
2024-10-17 09:45:34 +02:00
Chaitanya Tata
dbda09d3e5 drivers: wifi: Enable management buffers offload
With this offload, host doesn't need to manage RX buffers for management
frames, and this saves Host-RPU comms and thus giving RPU to sleep more
often and is essential to test RPU recovery.

Signed-off-by: Chaitanya Tata <Chaitanya.Tata@nordicsemi.no>
2024-10-17 09:45:34 +02:00
Chaitanya Tata
a4537a7eea drivers: wifi: Add PS state debugs
These are very frequent, so, a separate debug is added for debugging
host RPU recovery logic.

Signed-off-by: Chaitanya Tata <Chaitanya.Tata@nordicsemi.no>
2024-10-17 09:45:34 +02:00
Chaitanya Tata
9c36d97646 drivers: wifi: Fix TX buffers leak
During interface down in case TX has pending buffers in either TXQ or
Pending_Q then they are not freed instead the Q itself is freed.

Fix by traversing the Q and freeing all members.

Signed-off-by: Chaitanya Tata <Chaitanya.Tata@nordicsemi.no>
2024-10-17 09:45:34 +02:00
Chaitanya Tata
5c8f1807c1 drivers: wifi: Fix RPU recovery disabled build failures
Fix RPU recovery protection to solve build failures when RPU recovery is
disabled.

As recovery is primarily based on power-management, add a Kconfig
dependency to enforce, this simplies the macros to protect the code.

Signed-off-by: Chaitanya Tata <Chaitanya.Tata@nordicsemi.no>
2024-10-17 09:45:34 +02:00
Chaitanya Tata
9b105698ed drivers: wifi: Add RPU recovery retry mechanism
In case RPU is stuck in consecutive recovery over a time period then
that means it's not recoverable through RPU recovery, only thing left to
do is to trigger a system reboot. This feature is disabled by default,
so, either application can do their own implementatio or enable this
feature in the driver along with configurable retries and window period.

Signed-off-by: Chaitanya Tata <Chaitanya.Tata@nordicsemi.no>
2024-10-17 09:45:34 +02:00
Chaitanya Tata
6f7fbf8451 drivers: wifi: Fix the NULL check
Check for RPU context as well.

To fix this properly we need more fixes to be backported, but this
should suffice for now.

Signed-off-by: Chaitanya Tata <Chaitanya.Tata@nordicsemi.no>
2024-10-17 09:45:34 +02:00
Chaitanya Tata
ed7c10ead3 drivers: wifi: Add quiet period for RPU recovery
This is to avoid successive recoveries in case we get successive
watchdog interrupts from the RPU.

Signed-off-by: Chaitanya Tata <Chaitanya.Tata@nordicsemi.no>
2024-10-17 09:45:34 +02:00
Chaitanya Tata
ce521b89ee drivers: wifi: Ignore parallel recovery requests
During recovery we might get further watchdog interrupts causing
multiple recovery requests, ignore them if a recovery is already in
progress.

Signed-off-by: Chaitanya Tata <Chaitanya.Tata@nordicsemi.no>
2024-10-17 09:45:34 +02:00
Chaitanya Tata
c1afe97e94 drivers: wifi: Increase the propogation delay
In order for the interface down to propagate and cleanup it needs more
time, using Shell 10ms was working due to human delay, but
programatically this needs higher delay.

Signed-off-by: Chaitanya Tata <Chaitanya.Tata@nordicsemi.no>
2024-10-17 09:45:34 +02:00
Chaitanya Tata
1e5db78afc drivers: wifi: Add support for separate debugs for RPU recovery
These are helpful for debugging RPU recovery only.

Signed-off-by: Chaitanya Tata <Chaitanya.Tata@nordicsemi.no>
2024-10-17 09:45:34 +02:00
Chaitanya Tata
a23184c473 drivers: wifi: Add a sanity check for RPU comms
Before proceeding with RPU bringup, do a sanity check by reading a known
signature to make sure the Host-RPU comms are operational.

Signed-off-by: Chaitanya Tata <Chaitanya.Tata@nordicsemi.no>
2024-10-17 09:45:34 +02:00
Chaitanya Tata
04ddd6d2b0 drivers: wifi: nrf700x: Ignore all failures in iface down
In case RPU is stuck and need a recovery, the failures in interface down
should be ignored as they are expected and we should proceed with device
removal that in turn removes power to the RPU.

TODO: This works for single VIF, but needs more thought for multi-VIF.

Signed-off-by: Chaitanya Tata <Chaitanya.Tata@nordicsemi.no>
2024-10-17 09:45:34 +02:00
Chaitanya Tata
5ad7339311 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-10-17 09:45:34 +02:00
Sylvio Alves
59f0418d2e soc: esp32: unify runtime heap usage
This commit applies several changes in the way "heap_runtime"
feature is used. It can't be split due to bisectability issues.

Whenever the feature is enabled, a new heap is created and
custom malloc/calloc/free functions are added into the build
system. Those functions are currently used for internal Wi-Fi and BLE
drivers only.

Such changes are described below:

1) Rename heap.c to esp_heap_runtime.c for better readability.
2) Rename RUNTIME_HEAP to HEAP_RUNTIME to make it similar to what is
available in Zephyr.
3) Add runtime heap to BT as such as Wi-Fi.

Fixes #79490
Fixes #79470

Signed-off-by: Sylvio Alves <sylvio.alves@espressif.com>
2024-10-17 09:45:02 +02:00
Sylvio Alves
882ac1d088 drivers: esp32: wifi/bt: modify init call return error
Update both Wi-FI and BLE init codes to return proper
error code and logging when it is missing heap.

Signed-off-by: Sylvio Alves <sylvio.alves@espressif.com>
2024-10-17 09:45:02 +02:00
TOKITA Hiroshi
3c4789aca3 drivers: wifi: eswifi: Resolve the dependency on RING_BUFFER
`eswifi-uart` uses the ring buffer library, but the dependency is
not indicated.
Specify `select RING_BUFFER` to resolve the dependency.

Signed-off-by: TOKITA Hiroshi <tokita.hiroshi@gmail.com>
2024-10-16 12:27:05 +02:00
TOKITA Hiroshi
01f4c20fdc drivers: wifi: eswifi: Specify POSIX-2008 to use strnlen()
`_POSIX_C_SOURCE` must be specified to use the `strnlen()` function
in string.h. Make sure to specify this explicitly.

Signed-off-by: TOKITA Hiroshi <tokita.hiroshi@gmail.com>
2024-10-16 12:27:05 +02:00
Chaitanya Tata
cb1ea80c02 drivers: nrfwifi: Add provision to handle FW blobs externally
The FW blobs are contentious topic in OSS, so, add a provision to use
external tooling (e.g., NCS) to handle FW blobs for advanced usecases
(e.g., storing in external flash).

This won't be used upstream, only built-in or build-only are supported.

Signed-off-by: Chaitanya Tata <Chaitanya.Tata@nordicsemi.no>
2024-10-16 09:57:39 +02:00
Maochen Wang
d916d7287d drivers: wifi: nxp: fix build error
Fix build error of undefined 'nxp_wifi_ret_t'.

Signed-off-by: Maochen Wang <maochen.wang@nxp.com>
2024-10-16 09:56:04 +02:00
Kapil Bhatt
28b74947e0 wifi: Add wrapper APIs for offloaded raw TX feature
Add wrapper APIs for the offloaded raw TX feature supported
by nRF70 devices.

Signed-off-by: Kapil Bhatt <kapil.bhatt@nordicsemi.no>
2024-10-15 19:06:52 +01:00
Kapil Bhatt
5c3cc3730a drivers: nrfwifi: Create separate offloaded raw tx mode
Create separate offloaded raw tx mode which will work
as stand-alone compile-time mode.

Signed-off-by: Kapil Bhatt <kapil.bhatt@nordicsemi.no>
2024-10-15 19:06:52 +01:00
Chaitanya Tata
b40cb4c46c drivers: nrfwifi: Use Zephyr tooling to load nRF70 FW file
Instead of relying on INCBIN macros which do not properly add
dependencies, e.g., modifying FW file doesn't trigger rebuild.

Use the Zephyr cmake tooling to load the FW patch file as a header.

This also improves memory report where the patch target is clearly
visible instead of a hidden section.

Signed-off-by: Chaitanya Tata <Chaitanya.Tata@nordicsemi.no>
2024-10-15 19:04:29 +01:00
Chaitanya Tata
7f9be54897 Revert "drivers: nrfwifi: Fix rebuilding when FW blobs are changes"
This reverts commit e2e96acebf.
This will be properly fixes by adding a target for nRF70.bin and
removing INCBIN approach.

Signed-off-by: Chaitanya Tata <Chaitanya.Tata@nordicsemi.no>
2024-10-15 19:04:29 +01:00
Chaitanya Tata
80db01f3bf drivers: nrfwifi: Fix random MAC address setting
Random MAC address setting can never be configured as the two defaults
cover all cases. Fix the defaults, now the order is

* Fixed
* OTP (default, in case of no config)
* Random

Signed-off-by: Chaitanya Tata <Chaitanya.Tata@nordicsemi.no>
2024-10-10 14:57:27 -04:00
Marcio Ribeiro
c20e43caaf drivers: wifi: esp32: adc2 init code calibration
Add call to adc2_init_code_calibration during wifi initialization on
esp32s2 and esp32c3

Signed-off-by: Marcio Ribeiro <marcio.ribeiro@espressif.com>
2024-10-09 09:43:58 +02:00
Chaitanya Tata
e2e96acebf drivers: nrfwifi: Fix rebuilding when FW blobs are changes
Whenever FW blobs are updated manually, we need to tell cmake to
auto-build the source files to use the latest firmware without doing a
pristine build.

This adds a custom target to be run with nRF Wi-Fi driver and updates
timestamp of fw_load.c to rebuild whenevr the blob is updated.

Signed-off-by: Chaitanya Tata <Chaitanya.Tata@nordicsemi.no>
2024-10-08 16:58:52 +02:00
Chaitanya Tata
d15b7b5b3a drivers: wifi: nrf: Remove unused linker script
This script is needed only when external flash is used to store nRF70
firmware patches. This also uses PM which is supported only in NCS.

Signed-off-by: Chaitanya Tata <Chaitanya.Tata@nordicsemi.no>
2024-10-08 16:58:52 +02:00
Chaitanya Tata
f20e2d68b0 drivers: wifi: Add support to override FW load
For using external flash the tooling is only available in NCS, so, use
the existing Kconfig option to override the FW loading.

Signed-off-by: Chaitanya Tata <Chaitanya.Tata@nordicsemi.no>
2024-10-08 16:58:52 +02:00
Chaitanya Tata
3cd4700132 drivers: nrfwifi: Fix the indentation
The Cmake indentation is two spaces.

Signed-off-by: Chaitanya Tata <Chaitanya.Tata@nordicsemi.no>
2024-10-08 16:58:52 +02:00
Raffael Rostagno
565005c27a drivers: wifi: esp32: Check blobs dependency
Checks blobs presence as dependency to allow driver build.
Goal is to avoid building in environment where blobs won't
be present (e.g GitHub CI environment).

Signed-off-by: Raffael Rostagno <raffael.rostagno@espressif.com>
2024-09-30 16:57:50 -05:00
Gang Li
caf86128b7 drivers: wifi: nxp: add AP configuration cmd support
Implement NXP AP configuration parameter operations.

Signed-off-by: Gang Li <gang.li_1@nxp.com>
2024-09-27 10:56:57 +01:00
Bjarki Arge Andreasen
3ed1b40688 drivers: wifi: nrfwifi: determine shared iovdd and bucken from dt
Currently a user, or a shield definition, must select a Kconfig to
signal that the iovdd_ctrl and bucken GPIOs are connected to the same
pin. We can instead check this in the driver by simply checking if
the iovdd_ctrl_spec and bucken_spec are the same pin.

Update the nrfwifi driver and remove the redundant
NRF_WIFI_COMBINED_BUCKEN_IOVDD_GPIO config.

Signed-off-by: Bjarki Arge Andreasen <bjarki.andreasen@nordicsemi.no>
2024-09-19 18:27:36 +01:00
Pisit Sawangvonganan
a9800e2ea7 style: drivers: adjust return usage in void functions
For code clarity, this commit adjusts the use of `return` statements
in functions with a void return type as follows:
- Transform `return foo();` into separate statements:
  `foo();`
  `return;`
- Remove unnecessary `return` statements when
  they don't affect control flow.

Signed-off-by: Pisit Sawangvonganan <pisit@ndrsolution.com>
2024-09-18 09:56:16 +02:00
Kapil Bhatt
be295a7f02 drivers: nrfwifi: Get RTS threshold
Add api support to get RTS threshold.

Signed-off-by: Kapil Bhatt <kapil.bhatt@nordicsemi.no>
2024-09-13 13:42:26 +02:00
Sylvio Alves
b4117f97d3 drivers: wifi: fix esp32 build error
There is a regression caused by #76177, which
causes build to fail due to missing includes and others.
This wraps it with proper checks and fixes wifi scan call.

This also remove unused variable present in the same driver.

Signed-off-by: Sylvio Alves <sylvio.alves@espressif.com>
2024-09-11 20:14:07 -04:00
Pisit Sawangvonganan
847a4eaad2 style: drivers: comply with MISRA C:2012 Rule 15.6
Add missing braces to comply with MISRA C:2012 Rule 15.6 and
also following Zephyr's style guideline.

Signed-off-by: Pisit Sawangvonganan <pisit@ndrsolution.com>
2024-09-11 07:40:35 -04:00
Maochen Wang
a206ab0ac3 drivers: wifi: nxp: add Kconfig to enable Wi-Fi features
Add some default Wi-Fi Kconfig for NXP driver.

Signed-off-by: Maochen Wang <maochen.wang@nxp.com>
2024-09-10 11:44:03 +02:00
Maochen Wang
55ee1ae4a9 drivers: wifi: nxp: update the correct Macro config.
For Soft-AP case, use CONFIG_WIFI_NM_HOSTAPD_AP to replace the
CONFIG_WIFI_NM_WPA_SUPPLICANT macro.

Signed-off-by: Maochen Wang <maochen.wang@nxp.com>
2024-09-10 11:44:03 +02:00
Sylvio Alves
8233b70ece espressif: clean up unused code
Remove all entries that as not being used.
This also update hal to re-enable warning flags
as such as -Wno-unused-variable.

Signed-off-by: Sylvio Alves <sylvio.alves@espressif.com>
2024-09-09 13:55:39 -04:00
Daniel Mangum
a80af336c2 drivers: wifi: esp_at: only log errors in active mode with full IPD
Removes constant error logging when parsing IPD headers in active mode and
waiting on remote IP and port. Currently an error message is logged for
every character in the remote IP and port until the full length obtained.

Signed-off-by: Daniel Mangum <georgedanielmangum@gmail.com>
2024-09-06 12:04:49 -05:00
Muhammad Haziq
91b688a666 driver: wifi: esp32: add APSTA support
The ESP32 Wi-Fi driver previously did not support APSTA mode,
enabling AP mode would disable STA mode and vice versa.
Support for APSTA has been added by introducing additional
network interface: one for STA (Interface 2) and one for
AP (Interface 1). The CONFIG_ESP32_WIFI_AP_STA_MODE option in
Kconfig now allows enabling or disabling this support.

Signed-off-by: Muhammad Haziq <muhammad.haziq@zintechnologies.com>
2024-09-06 11:28:15 -04:00
Daniel Mangum
126e3ee6c3 driver: wifi: esp_at: fix typo in CIPDINFO option
Fixes typo in the CIPDINFO option description.

Signed-off-by: Daniel Mangum <georgedanielmangum@gmail.com>
2024-09-05 09:49:33 +02:00
Maochen Wang
d5a5f072a9 drivers: wifi: nxp: link the library of hostap
When build with the psa_crypto_driver, it will try to include common.h
of mbedtls, but actually include the common.h from hostap, and causes
build error of undefined symbol. Now link the library of hostap to use
the header file in /utils path, to fix the build error.

Signed-off-by: Maochen Wang <maochen.wang@nxp.com>
2024-09-04 09:53:12 +02:00
Nazar Palamar
7a31df456f drivers: wifi/airoc: Update condition to enable NET_STATISTICS
Updated condition to enable NET_STATISTICS. Changed
CONFIG_NET_STATISTICS_ETHERNET to CONFIG_NET_STATISTICS_WIFI
in airoc_wifi.c

Signed-off-by: Nazar Palamar <nazar.palamar@infineon.com>
2024-09-03 10:43:10 +02:00
Chaitanya Tata
803f59f3e1 drivers: wifi: nrf: Add support for twister CI build
Add a mode to build the driver without FW blobs, this is mainly for
twister to run and catch any build issues without depending on any FW
blobs.

Signed-off-by: Chaitanya Tata <Chaitanya.Tata@nordicsemi.no>
2024-09-02 12:31:06 -04:00
Gang Li
e1d20235d3 drivers: wifi: nxp: change the dormant state
1) After the wifi driver successfully connects to the AP,
the dormant state should be set to OFF.
Once a deauth/disassoc frame is received or link lost occurs,
the dormant state should be set to ON.
2) Enable CONFIG_NET_TC_SKIP_FOR_HIGH_PRIO and CONFIG_NET_CONTEXT_PRIORITY
to push high priority packets directly to network driver.

Signed-off-by: Gang Li <gang.li_1@nxp.com>
2024-08-29 18:03:48 +02:00