Commit graph zephyr/drivers/ieee802154
Author SHA1 Message Date
Alexandre Bailon
06503ceb02 ieee802154: cc13xx_cc26xx: Improve channel selection
When using OpenThread, set_channel operation may be called often
with the same channel number.
Everytime, even if the channel has not changed, the driver stop all
the radio operations, restart the synthesizer and then restart RX
operations.
This behavior prevents OpenThread joiner to work correcly.
This updates the driver to only stop radio operations if this is really
required.

Signed-off-by: Alexandre Bailon <abailon@baylibre.com>
2026-01-12 11:53:47 +01:00
Vincent Tardy
7273479e43 soc: st: stm32wba: hci_if: allow forcing ISR registration
Add parameter to the link_layer_register_isr() to force
or not the link layer isr registration in case of multiple
function calls.
This change fixes the interrupt service when resuming
from a PM standby state.

Update Bluetooth hci_stm32wba.c driver and
IEEE 802.15.4 ieee802154_stm32wba.c driver accordingly.

Signed-off-by: Vincent Tardy <vincent.tardy@st.com>
2025-12-18 14:50:58 +00:00
Sylvio Alves
f8d2e00a0e includes: remove duplicated entries in zephyr-tree
Remove duplicated #include directives within the same
preprocessor scope across the Zephyr tree.

Duplicates inside different #ifdef branches are preserved
as they may be intentional.

Signed-off-by: Sylvio Alves <sylvio.alves@espressif.com>
2025-12-17 13:57:38 -05:00
Xavier Razavet
aef5728e57 drivers: ieee802154: mcxw ieee802154 driver updated
To support the SSED attachment, the IEEE802154_MCXW_CSL_ACCURACY
default value shall be 50.

Signed-off-by: Xavier Razavet <xavier.razavet@nxp.com>
2025-12-15 17:09:20 +00:00
Xavier Razavet
91079cf825 drivers: ieee802154: SSED attachment management
Few functions have been corrected to the SSED attachment for the
MCXW72 as leader :
- mcxw_tx():
  tx_frame.tx_delay corrected.
  Adjusts the scheduled transmission start time to account for the SHR
  duration (160us) as requested by the OpenThread radio API.

- mcxw_rx_thread():
  Stores the frame counter and key ID from a
  security-enabled enhanced ACK into the received packet's metadata
  for cryptographic verification.

- mcxw_tx_started() added:
  Notifies the registered event handler that a frame transmission has
  started, passing the frame buffer as context.

- pd_mac_sap_handler(): timestamp corrected

- mcxw_configure(): IEEE802154_CONFIG_EVENT_HANDLER case updated

Signed-off-by: Xavier Razavet <xavier.razavet@nxp.com>
2025-12-15 17:09:20 +00:00
Damian Krolik
1a6ff4f8e4 drivers: ieee802154: remove unused IEEE802154_CSL_DEBUG
The Kconfig option is not used anywhere for a while.

Signed-off-by: Damian Krolik <damian.krolik@nordicsemi.no>
2025-12-12 09:57:00 -05:00
Simon Piriou
9aa69e6bc1 drivers: ieee802154: nrf5: improve debug logs
This commit prefixes "0x%x" debug logs with the entity, and prints the
"set" parameter when updating a filter.

Signed-off-by: Simon Piriou <spiriou31@gmail.com>
2025-12-01 12:23:56 -05:00
Jukka Rissanen
882387eeaa drivers: ieee802154: Properly namespace AF_UNSPEC by NET_AF_UNSPEC
Couple of AF_UNSPEC need to be replaced by NET_AF_UNSPEC so that
OpenThread tests will pass.

Signed-off-by: Jukka Rissanen <jukka.rissanen@nordicsemi.no>
2025-11-24 08:47:05 +01:00
Jukka Rissanen
985d1c0351 net: Convert IEEE 802.15.4 drivers to use renamed network APIs
Rename network symbols in IEEE 802.15.4 drivers to use the renamed
network APIs.

Signed-off-by: Jukka Rissanen <jukka.rissanen@nordicsemi.no>
2025-11-17 14:01:32 -05:00
Josuah Demangeon
30950b888d style: drivers: sort Kconfig and CMake includes
Use the "zephyr-keep-sorted-start/stop" comment to have CI check
the alphabetical order of includes, to help reducing the chance
of conflicts while contributing drivers.

Signed-off-by: Josuah Demangeon <me@josuah.net>
2025-11-17 13:48:03 -05:00
Mathieu Choplain
21b2283fc5 drivers: *: stm32: use series-agnostic STM32 LL headers
Use the series-agnostic STM32 LL headers from the STM32Cube HAL module
instead of series-specific ones in STM32 drivers.

Signed-off-by: Mathieu Choplain <mathieu.choplain-ext@st.com>
2025-11-14 12:19:48 +02:00
Xavier Razavet
76a102a8bd drivers: ieee802154: mcxw_get_eui64() updated to manage MAC address
The mcxw_get_eui64() function allows to provide a persistent MAC
address if it does not exist

Signed-off-by: Xavier Razavet <xavier.razavet@nxp.com>
2025-11-13 20:42:22 -05:00
Raffael Rostagno
9ca6920d98 drivers: ieee802154: esp32: Todo's review
Review todo items to make sure points are solved.

Signed-off-by: Raffael Rostagno <raffael.rostagno@espressif.com>
2025-11-13 23:12:14 +02:00
Raffael Rostagno
7d46b82568 drivers: ieee802154: esp32: Fix start/stop API
Fix start/stop driver API implementation. OT stack expects these
functions to only put IEEE802.15.4 in sleep mode and back in RX
mode when calling start. Fixes ifconfig down/up cycling as well
as nodes staying in leader role and not forming a network.

Signed-off-by: Raffael Rostagno <raffael.rostagno@espressif.com>
2025-11-13 23:12:14 +02:00
George Stefan
e25a7417f1 drivers: ieee802154: mcxw: disable poll optimization
The 802.15.4 PHY has the poll optimization enabled by default.
Disable it until the driver state machine is updated.

Signed-off-by: George Stefan <george.stefan@nxp.com>
2025-10-24 01:10:20 +03:00
Alessandro Manganaro
077e5a3584 drivers: ieee802154: STM32WBA cube fw 1.7.0 updates
Changes required to update STM32WBA ieee802154 driver
according STM32WBA Cube FW 1.7.0 version.

Signed-off-by: Alessandro Manganaro <alessandro.manganaro@st.com>
2025-10-16 12:16:31 -04:00
Declan Snyder
570b445a61 drivers: Convert to use SPI macro without delay parameters
Convert all drivers and other consumers to use SPI macros without the
delay parameters.

Signed-off-by: Declan Snyder <declan.snyder@nxp.com>
2025-10-01 14:39:36 +03:00
Rafał Kuźnia
3d63165050 drivers: ieee802154: nrf5: Remove temporary API migration code
The new nrf-802154 now has the updated API signatures. The migration
code is no longer needed.

Signed-off-by: Rafał Kuźnia <rafal.kuznia@nordicsemi.no>
2025-09-29 12:47:02 -04:00
Vincent Tardy
dc89803697 drivers: ieee802154: add support of 802.15.4 for STM32WBA
Add the driver itself and Kconfig/CMakeLists/dts/bindings related to it.
Other files and libraries needed are in ST's dedicated folder
hal_stm32 (modules/hal/stm32).

Signed-off-by: Vincent Tardy <vincent.tardy@st.com>
2025-09-26 20:44:45 -04:00
Jason Kridner
1f03dcfa0c cc13xx_cc26xx: select CRC with SubG driver
This was previously only selected when the 2.4GHz driver was
enabled, but SubG can be enabled without the 2.4GHz driver.

Build tested using:

```
west build -b beagleconnect_freedom -d \
 build/bcf/ot_coap samples/net/openthread/coap
west flash -d build/bcf/ot_coap
```

Signed-off-by: Jason Kridner <jkridner@beagleboard.org>
2025-09-24 19:20:49 -04:00
Rafał Kuźnia
92b1346f91 drivers: ieee802154: nrf5: Add temporary API migration code
The transmit functions will return an error code, instead of a boolean
value. To prepare for this, the API calls are temporarily implemented in
two variants, for old and new API declarations.

The presence of new API will be detected by the use of
NRF_802154_TX_FUNCTIONS_RETURN_ERROR_CODE macro, which will be
unconditionally defined by a newer nrf-802154 driver.

Signed-off-by: Rafał Kuźnia <rafal.kuznia@nordicsemi.no>
2025-09-22 13:31:17 -04:00
Yangbo Lu
15dc8d78f2 net: pkt: support common usage of control block
Supported common usage of control block for any layer.

Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
2025-09-15 14:06:56 -04:00
Rafał Kuźnia
3cccfa5f64 drivers: ieee802154: nrf5: prevent negative timestamps
The nrf-802154 driver may be unable to acquire a valid timestamp under
rare conditions. In such case, the nrf_802154_received_timestamp_raw
reports time=NRF_802154_NO_TIMESTAMP.
The shim implementation must not calculate the PHR timestamp when
receiving this value, because doing so results in an assert in
ptp_packet.h due to a negative time value.
When the driver is unable to capture the timestamp, the packet is
assigned zero as its timestamp.

Signed-off-by: Rafał Kuźnia <rafal.kuznia@nordicsemi.no>
2025-07-19 13:39:58 -04:00
Rafał Kuźnia
5925d718ef drivers: ieee802154: nrf5: drop packets that are too long
There was an observed situation where the assert checking frame length
is below 128 bytes was hit. While the nrf-802154 checks that the frame
does not exceed that size, there might exists code paths that allow such
packets to pass through.

The change removes the assert and drops the packet instead.
An error is also printed to allow for further debugging.

Signed-off-by: Rafał Kuźnia <rafal.kuznia@nordicsemi.no>
2025-07-19 13:23:06 -04:00
Martin Jäger
cba8b33c3d drivers: ieee802154: Add implementation for ESP32 series
Initial commit of the IEEE 802.15.4 driver using Espressif HAL.

Signed-off-by: Martin Jäger <martin@libre.solar>
2025-06-26 11:12:34 +02:00
Cristian Bulacu
b3cc778c87 drivers: ieee802154: update mcxw ieee802154 driver
Updated driver based on changes done in SDK 25.06.00-pvw2.
Update hal_nxp to include BLE LL and IEEE 802.15.4 PHY NBU
combo firmware for MCXW72 boards.

Signed-off-by: Cristian Bulacu <cristian.bulacu@nxp.com>
2025-06-12 09:34:16 -07:00
Cristian Bulacu
5cf2d4585e drivers: ieee802154: Fix resolution in mcxw_get_time function.
Updated mcxw_get_time function to output its result in nanosecond
resolution and updated code accordingly.

Signed-off-by: Cristian Bulacu <cristian.bulacu@nxp.com>
2025-06-12 09:34:16 -07:00
Vincent van der Locht
a06ded8db6 drivers: ieee802154: added raw mode to mcxw ieee802154 driver
Add support for raw mode of mcxw ieee802154 driver.

Signed-off-by: Vincent van der Locht <vincent@synchronicit.nl>
2025-05-29 23:25:41 +02:00
Andrei Menzopol
137199b19f drivers: ieee802154: fix mcxw ieee802154 driver
Fix mcxw_cca function.
Remove not used / not implemented caps.
Select counter as dependency.

Signed-off-by: Andrei Menzopol <andrei.menzopol@nxp.com>
2025-05-27 09:16:04 +02:00
Alexandre Bailon
db496c7a76 drivers: ieee802154: cc13xx_cc26xx: Don't filter beacon for OpenThread
OpenThread network discovery was not working.
The radio driver is filtering the beacon packets whereas
this is required for OpenThread.
Allow receiving beacon packets.

Signed-off-by: Alexandre Bailon <abailon@baylibre.com>
2025-05-13 22:20:55 -04:00
Alexandre Bailon
c1bce30fe5 drivers: ieee802154: cc13xx/26xx: Add support of 802.15.4 ED Scan
This adds support of ED scanning to cc13xx/cc26xx.
This could be required to select the least busy channel
or to found neighboring networks.

Note:
Although the scanning is working, OpenThread still fails
to discover OpenThread networks.

Signed-off-by: Alexandre Bailon <abailon@baylibre.com>
2025-04-28 12:54:59 -05:00
Damian Krolik
1e64c29ac3 drivers: ieee802154: nrf5: support reading EUI64 from UICR on nRF54L
Extend the existing code for reading EUI64 from UICR to
support nRF54L SoC series as well.

Signed-off-by: Damian Krolik <damian.krolik@nordicsemi.no>
2025-04-28 16:41:23 +02:00
Benjamin Cabé
9dd1dbbbc6 drivers: ieee802154: fix spelling of "written"
s/writen/written/

Signed-off-by: Benjamin Cabé <benjamin@zephyrproject.org>
2025-02-21 11:41:46 +00:00
Andrei Menzopol
f7167ed606 drivers: ieee802154: add mcxw ieee802154 driver
Add mcxw ieee802154 driver
Fix compliance errors for added files.
Update function names to snake_case style.

Signed-off-by: Andrei Menzopol <andrei.menzopol@nxp.com>
2025-02-14 03:08:48 +01:00
Tom Hughes
5bb029893e drivers: ieee802154: Remove unused function
Building with clang warns:

drivers/ieee802154/ieee802154_dw1000.c:277:24: error: unused function
'dwt_reg_read_u16' [-Werror,-Wunused-function]
static inline uint16_t dwt_reg_read_u16(const struct device *dev,
                       ^

Signed-off-by: Tom Hughes <tomhughes@chromium.org>
2025-02-12 07:52:18 +01:00
Martin Jäger
2a95996a03 drivers: ieee802154: nrf5: cast payload ptr to void for debug output
Without this fix I get an MPU fault in samples/net/openthread/shell/
with CONFIG_IEEE802154_DRIVER_LOG_LEVEL_DBG=y.

Related commit: a7224830ce

Signed-off-by: Martin Jäger <martin@libre.solar>
2025-01-14 13:26:47 +01:00
Martin Jäger
6046368e59 drivers: ieee802154: unify FCS configuration in L2 packet
Use the same Kconfig for all drivers to configure if the FCS bytes
(checksum) should be included in the packets passed to L2.

The description is slightly reworded to make clear that it does not
only affect the length, but the packet content itself.

Signed-off-by: Martin Jäger <martin@libre.solar>
2025-01-07 11:52:51 +01:00
Martin Jäger
9d3d67d3d1 drivers: ieee802154: b91: fix status variable type in RX ISR
The status variable stores the return value of `net_recv_data`, which
is an `int` and may be negative.

Signed-off-by: Martin Jäger <martin@libre.solar>
2024-12-30 19:47:05 +01:00
Pieter De Gendt
45be45d7e0 drivers: crypto: Place API into iterable section
Add wrapper DEVICE_API macro to all crypto_driver_api instances.

Signed-off-by: Pieter De Gendt <pieter.degendt@basalte.be>
2024-12-06 12:13:37 +01:00
Przemyslaw Bida
63e1bb41b1 net: openthread: Add modcarrier command to OT diag module.
Commit add `modcarrier` shell command for Openthread diagnostic mode.
Command can transmit modulated carrier out of device for test purposes.

Signed-off-by: Przemyslaw Bida <przemyslaw.bida@nordicsemi.no>
2024-12-04 12:10:11 +01:00
Przemyslaw Bida
e0f94f8823 drivers: ieee802154: New API for modulated carrier wave transmission.
Added new API function to start modulated carrier wave transmission

Signed-off-by: Przemyslaw Bida <przemyslaw.bida@nordicsemi.no>
2024-11-29 21:46:46 +01:00
Damian Krolik
8ce12aaa04 net: openthread: add wake-up coordinator support
Add Kconfig option `OPENTHREAD_WAKEUP_COORDINATOR` to enable
the Wake-up Coordinator role. Implement API to set Coordinated
Sampled Transmitting sample time and period for a driver that supports
`IEE802154_OPENTHREAD_HW_CST` capability.

The feature is be enabled on with ieee802154_nrf5 driver with option
by setting default value of CONFIG_IEEE802154_NRF5_CST_ENDPOINT.

Signed-off-by: Damian Krolik <damian.krolik@nordicsemi.no>
Co-authored-by: Andrzej Kuroś <andrzej.kuros@nordicsemi.no>
2024-11-16 15:09:07 -05:00
Damian Krolik
c9dbce36c0 drivers: ieee802154_nrf5: cabability IEE802154_OPENTHREAD_HW_CST
The new Kconfig option `IEEE802154_NRF5_CST_ENDPOINT` is added.
When it is enabled, then capability `IEE802154_OPENTHREAD_HW_CST`
is supported by the ieee802154_nrf5 driver and allows to set the
CST period and CST expected transmission time point.
This feature is an OpenThread-specific extention to the
ieee802154_nrf5 driver.

Signed-off-by: Damian Krolik <damian.krolik@nordicsemi.no>
Co-authored-by: Andrzej Kuroś <andrzej.kuros@nordicsemi.no>
2024-11-16 15:09:07 -05:00
Damian Krolik
502c9ffb32 drivers: ieee802154_nrf5: skip Enh Ack conf for invalid short address
If the invalid short address (0xfffe) is specified,
configure the Enhanced Ack just for the extended address.
This is needed because Header IEs for Enhanced Ack must be
configured before the short address has been assigned to
the child.

Signed-off-by: Damian Krolik <damian.krolik@nordicsemi.no>
2024-10-31 09:24:03 -05:00
Andrzej Kuros
30c449d9e6 drivers: ieee802154_nrf5: support IEEE802154_SELECTIVE_TXCHANNEL
The ieee802154_nrf5 supports the IEEE802154_SELECTIVE_TXCHANNEL
Kconfig option and advertises the IEEE802154_HW_SELECTIVE_TXCHANNEL
capability.
The ieee802154_nrf5 driver now allows to schedule timed transmission
requests with selective tx channel, that is set at the latest
possible moment. This improves reception performance when the
timed transmissions are requested.

Signed-off-by: Damian Krolik <damian.krolik@nordicsemi.no>
Signed-off-by: Andrzej Kuroś <andrzej.kuros@nordicsemi.no>
2024-10-22 14:04:33 +02:00
Andrzej Kuros
2fbba82591 drivers: ieee802154: add Kconfig IEEE802154_SELECTIVE_TXCHANNEL
The Kconfig `IEEE802154_SELECTIVE_TXCHANNEL` is added along with
the new capability `IEEE802154_HW_SELECTIVE_TXCHANNEL`.
The new capability of the ieee802154 drivers allows to schedule
CSL transmissions as stated in IEEE 802.15.4-2020 chapter 6.12.2.7
CSL over multiple channels. The benefit of the new API is that
additional call to `ieee802154_radio_api::set_channel()` is not
required. The drivers will switch to the new channel as late as
possible for CSL transmissions thus will not interrupt any reception
that might be in progress until the very late moment when the
transmission actually starts.
This improves reception performance when CSL transmissions are used.

Signed-off-by: Damian Krolik <damian.krolik@nordicsemi.no>
Signed-off-by: Andrzej Kuroś <andrzej.kuros@nordicsemi.no>
2024-10-22 14:04:33 +02:00
Florian Grandel
f55cf43ddf drivers: ieee802154: ieee802154_uart_pipe: replace magic number
Replaces a magic number by the appropriate definition.

Signed-off-by: Florian Grandel <fgrandel@code-for-humans.de>
2024-09-29 21:20:20 +02:00
TOKITA Hiroshi
a88ee692b9 drivers: ieee802154: mcr20a: Specify the dependency on HAL_MCUX
The mcr20a driver referencing `MCR20Overwrites.h` which is under
`hal/nxp/mcux`.

So, put `depends HAS_MCUX` for clarify the dependency.

Signed-off-by: TOKITA Hiroshi <tokita.hiroshi@gmail.com>
2024-09-19 15:14:06 +02:00
Alexandre Bailon
3341298c0c drivers: ieee802154: cc13xx_cc26xx: Enable support of OpenThread L2
This updates the driver to enable support of OpenThread L2.

Signed-off-by: Alexandre Bailon <abailon@baylibre.com>
2024-09-18 15:32:09 +02:00
Alexandre Bailon
f44072c299 drivers: ieee802154: cc13xx_cc26xx: Fixup a bus error
Sometime, the radio causes a bus error.
This happens because we cast a struct and access to a member
that doesn't exists in the original struct.
This updates the driver to use the right struct to make the cast safe.

Signed-off-by: Alexandre Bailon <abailon@baylibre.com>
2024-09-18 15:32:09 +02:00