Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

net: openthread: support WC and WED #80132

Merged
merged 5 commits into from
Nov 16, 2024

Conversation

ankuns
Copy link
Contributor

@ankuns ankuns commented Oct 21, 2024

This PR adds support code for new roles Wake-Up Coordinator and Wake-Up End Device developed in OpenThread.
Related Thread Specification changes named collectively as Thread-In-Mobile (SPEC-1267).

The features require additional Information Elements (OpenThread-specific) to be sent, what's covered by the SPEC-1267.
The driver supporting the new feature CST (Coordinated Sampled Transmitting) has the capability IEE802154_OPENTHREAD_HW_CST which is OpenThread's extension to a ieee802154 driver. This capability allows to configure CST period and CST expected transmission time point.
No driver has the duty to support the capability.

The support for IEE802154_OPENTHREAD_HW_CST capability is added to the ieee802154_nrf5 driver.

The new Kconfig options OPENTHREAD_WAKEUP_COORDINATOR and OPENTHREAD_WAKEUP_END_DEVICE are added to configure the OpenThread. When OPENTHREAD_WAKEUP_COORDINATOR is enabled it enables the IEE802154_OPENTHREAD_HW_CST within the ieee802154_nrf5 driver by default.

Refs:
7ec824602518060a19b7ba851435f043b5ca8a8d
f59ec0e8af9f1c373752bdf1324befb27de1f493
a3dcf1c536387a0f9ba662436ce37617cf9cedf7

@ankuns
Copy link
Contributor Author

ankuns commented Oct 21, 2024

Hi @fgrandel could you please have a look on this draft PR? I would like to ask you if this proposal is compliant with adopted rules, especially #61227 .

I think only the commit with title net: openthread: add capability IEEE802154_OPENTHREAD_HW_CST is relevant to these rules, remaining are specific just to ieee802154_nrf5 driver and openthread integration.

The new introduced capability IEEE802154_OPENTHREAD_HW_CST is specific to OpenThread (the extension that is being currently developed and OpenThread specification changes are pending), so it comes through ieee802154_radio_openthread.h.
Drivers has no duty to support this capability, unless they wants to support the new OpenThread feature.
The implementation is provided for ieee802154_nrf5 driver only.
Upper layers other then OpenThread do not need to be aware of this capability, it is turned off by default even for ieee802154_nrf5.
The ieee802154_nrf5 is aware and turns on the feature if in build-time if relevant OpenThread Kconfig is requested.

@ghost
Copy link

ghost commented Oct 21, 2024

Hi @fgrandel could you please have a look on this draft PR? I would like to ask you if this proposal is compliant with adopted rules, especially #61227 .

Hi, sure. As CST is not specified by the IEEE 802.15.4 standard (or is it?), it needs to be encapsulated in OT-specific files, exactly as you did. That's what we have zephyr/include/zephyr/net/ieee802154_radio_openthread.h for.

The only problem I see is the lack of documentation. Please orient yourself to the exact timing diagrams and context that has been documented for the CSL feature. This is the level you should achieve. The reason is to make it obvious to other driver implementers what they have to do to implement this features. As OT is not public any more we cannot even point them to an external spec.

Unfortunately I don't have access to the Thread documents that describe DST. So I cannot be 100% sure that it isn't just another name for an otherwise standard feature. But as you have access to both, OT and IEEE standards, you can check that of course. I guess, though, that it's just the inverse of CSL and that doesn't exist in the standard IIRC.

include/zephyr/net/ieee802154_radio_openthread.h Outdated Show resolved Hide resolved
include/zephyr/net/ieee802154_radio_openthread.h Outdated Show resolved Hide resolved
include/zephyr/net/ieee802154_radio_openthread.h Outdated Show resolved Hide resolved
include/zephyr/net/ieee802154_radio_openthread.h Outdated Show resolved Hide resolved

/** Capability to support CST-related features.
*
* The CST-related features are described by "Specification changes for Thread-in-Mobile"
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Worth documenting somewhere that this indicates the point of time when the end of SFD/start of PHR for the next transmission will occur.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please have a look on doc for IEEE802154_OPENTHREAD_CONFIG_EXPECTED_TX_TIME, it's mentioned there.

@ankuns ankuns force-pushed the openthread_cst branch 2 times, most recently from 2d6f833 to 811fcbf Compare November 12, 2024 12:37
@ankuns
Copy link
Contributor Author

ankuns commented Nov 12, 2024

Updated commit metadata

edmont
edmont previously approved these changes Nov 12, 2024
Damian-Nordic and others added 5 commits November 13, 2024 07:54
The new capability `IEEE802154_OPENTHREAD_HW_CST` is added.
The option MAY be implemented as an extension to IEEE 802.15.4
drivers allowing to inject CST related Information Elements.

Signed-off-by: Damian Krolik <[email protected]>
Co-authored-by: Andrzej Kuroś <[email protected]>
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 <[email protected]>
Co-authored-by: Andrzej Kuroś <[email protected]>
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 <[email protected]>
Co-authored-by: Andrzej Kuroś <[email protected]>
Add Kconfig option to enable the Wake-up End Device role.

Signed-off-by: Eduardo Montoya <[email protected]>
Signed-off-by: Damian Krolik <[email protected]>
Co-authored-by: Andrzej Kuroś <[email protected]>
Make it possible to enable Wake-up End Device feature with
CSL receiver disabled (to receive wake-up frames on MED).

Signed-off-by: Damian Krolik <[email protected]>
@nashif nashif merged commit 11b6bd0 into zephyrproject-rtos:main Nov 16, 2024
26 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants