[channel-manager] require CSL to enabled with CSL_CHANNEL_SELECT_ENABLE (#10266)

This commit requires `MAC_CSL_RECEIVER_ENABLE` to be enabled when
`CHANNEL_MANAGER_CSL_CHANNEL_SELECT_ENABLE` is also enabled. This is
checked and enforced in the `channel_manager.hpp`, emitting an
`#error` if it fails. This simplifies the `#if` checks related to
this in the `ChannelManager` class and CLI module.
This commit is contained in:
Abtin Keshavarzian
2024-07-11 14:16:26 -07:00
committed by GitHub
parent fbb715baa7
commit 2d2e8cf80a
7 changed files with 39 additions and 48 deletions
-6
View File
@@ -245,9 +245,6 @@ jobs:
COVERAGE: 1
THREAD_VERSION: 1.3
VIRTUAL_TIME: 1
INTER_OP: 1
INTER_OP_BBR: 1
ADDON_FEAT_1_2: 1
steps:
- name: Harden Runner
uses: step-security/harden-runner@17d0e2bd7d51742c71671bd19fa12bdc9d40a3d6 # v2.8.1
@@ -268,9 +265,6 @@ jobs:
- name: Run
run: |
ulimit -c unlimited
./script/test cert_suite ./tests/scripts/thread-cert/Cert_*.py
./script/test cert_suite ./tests/scripts/thread-cert/test_*.py
./script/test cert_suite ./tests/scripts/thread-cert/v1_2_*.py
./script/test cert_suite ./tests/scripts/thread-cert/addon_test_channel_manager_autocsl*.py
- uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1
if: ${{ failure() }}
+6 -8
View File
@@ -1320,8 +1320,7 @@ template <> otError Interpreter::Process<Cmd("channel")>(Arg aArgs[])
}
#endif // OPENTHREAD_CONFIG_CHANNEL_MONITOR_ENABLE
#if OPENTHREAD_CONFIG_CHANNEL_MANAGER_ENABLE && \
(OPENTHREAD_FTD || \
(OPENTHREAD_CONFIG_MAC_CSL_RECEIVER_ENABLE && OPENTHREAD_CONFIG_CHANNEL_MANAGER_CSL_CHANNEL_SELECT_ENABLE))
(OPENTHREAD_FTD || OPENTHREAD_CONFIG_CHANNEL_MANAGER_CSL_CHANNEL_SELECT_ENABLE)
else if (aArgs[0] == "manager")
{
/**
@@ -1348,17 +1347,16 @@ template <> otError Interpreter::Process<Cmd("channel")>(Arg aArgs[])
#if OPENTHREAD_FTD
OutputLine("auto: %d", otChannelManagerGetAutoChannelSelectionEnabled(GetInstancePtr()));
#endif
#if (OPENTHREAD_CONFIG_MAC_CSL_RECEIVER_ENABLE && OPENTHREAD_CONFIG_CHANNEL_MANAGER_CSL_CHANNEL_SELECT_ENABLE)
#if OPENTHREAD_CONFIG_CHANNEL_MANAGER_CSL_CHANNEL_SELECT_ENABLE
OutputLine("autocsl: %u", otChannelManagerGetAutoCslChannelSelectionEnabled(GetInstancePtr()));
#endif
#if (OPENTHREAD_FTD && OPENTHREAD_CONFIG_MAC_CSL_RECEIVER_ENABLE && \
OPENTHREAD_CONFIG_CHANNEL_MANAGER_CSL_CHANNEL_SELECT_ENABLE)
#if (OPENTHREAD_FTD && OPENTHREAD_CONFIG_CHANNEL_MANAGER_CSL_CHANNEL_SELECT_ENABLE)
if (otChannelManagerGetAutoChannelSelectionEnabled(GetInstancePtr()) ||
otChannelManagerGetAutoCslChannelSelectionEnabled(GetInstancePtr()))
#elif OPENTHREAD_FTD
if (otChannelManagerGetAutoChannelSelectionEnabled(GetInstancePtr()))
#elif (OPENTHREAD_CONFIG_MAC_CSL_RECEIVER_ENABLE && OPENTHREAD_CONFIG_CHANNEL_MANAGER_CSL_CHANNEL_SELECT_ENABLE)
#elif OPENTHREAD_CONFIG_CHANNEL_MANAGER_CSL_CHANNEL_SELECT_ENABLE
if (otChannelManagerGetAutoCslChannelSelectionEnabled(GetInstancePtr()))
#endif
{
@@ -1440,7 +1438,7 @@ template <> otError Interpreter::Process<Cmd("channel")>(Arg aArgs[])
otChannelManagerSetAutoChannelSelectionEnabled(GetInstancePtr(), enable);
}
#endif // OPENTHREAD_FTD
#if (OPENTHREAD_CONFIG_MAC_CSL_RECEIVER_ENABLE && OPENTHREAD_CONFIG_CHANNEL_MANAGER_CSL_CHANNEL_SELECT_ENABLE)
#if OPENTHREAD_CONFIG_CHANNEL_MANAGER_CSL_CHANNEL_SELECT_ENABLE
/**
* @cli channel manager autocsl
* @code
@@ -1463,7 +1461,7 @@ template <> otError Interpreter::Process<Cmd("channel")>(Arg aArgs[])
SuccessOrExit(error = aArgs[2].ParseAsBool(enable));
otChannelManagerSetAutoCslChannelSelectionEnabled(GetInstancePtr(), enable);
}
#endif // (OPENTHREAD_CONFIG_MAC_CSL_RECEIVER_ENABLE && OPENTHREAD_CONFIG_CHANNEL_MANAGER_CSL_CHANNEL_SELECT_ENABLE)
#endif // OPENTHREAD_CONFIG_CHANNEL_MANAGER_CSL_CHANNEL_SELECT_ENABLE
#if OPENTHREAD_FTD
/**
* @cli channel manager delay
+2 -3
View File
@@ -34,8 +34,7 @@
#include "openthread-core-config.h"
#if OPENTHREAD_CONFIG_CHANNEL_MANAGER_ENABLE && \
(OPENTHREAD_FTD || \
(OPENTHREAD_CONFIG_MAC_CSL_RECEIVER_ENABLE && OPENTHREAD_CONFIG_CHANNEL_MANAGER_CSL_CHANNEL_SELECT_ENABLE))
(OPENTHREAD_FTD || OPENTHREAD_CONFIG_CHANNEL_MANAGER_CSL_CHANNEL_SELECT_ENABLE)
#include <openthread/channel_manager.h>
@@ -86,7 +85,7 @@ bool otChannelManagerGetAutoChannelSelectionEnabled(otInstance *aInstance)
}
#endif // OPENTHREAD_FTD
#if (OPENTHREAD_CONFIG_MAC_CSL_RECEIVER_ENABLE && OPENTHREAD_CONFIG_CHANNEL_MANAGER_CSL_CHANNEL_SELECT_ENABLE)
#if OPENTHREAD_CONFIG_CHANNEL_MANAGER_CSL_CHANNEL_SELECT_ENABLE
#if OPENTHREAD_CONFIG_CHANNEL_MONITOR_ENABLE
otError otChannelManagerRequestCslChannelSelect(otInstance *aInstance, bool aSkipQualityCheck)
{
+1 -2
View File
@@ -234,8 +234,7 @@ Instance::Instance(void)
, mChannelMonitor(*this)
#endif
#if OPENTHREAD_CONFIG_CHANNEL_MANAGER_ENABLE && \
(OPENTHREAD_FTD || \
(OPENTHREAD_CONFIG_MAC_CSL_RECEIVER_ENABLE && OPENTHREAD_CONFIG_CHANNEL_MANAGER_CSL_CHANNEL_SELECT_ENABLE))
(OPENTHREAD_FTD || OPENTHREAD_CONFIG_CHANNEL_MANAGER_CSL_CHANNEL_SELECT_ENABLE)
, mChannelManager(*this)
#endif
#if OPENTHREAD_CONFIG_MESH_DIAG_ENABLE && OPENTHREAD_FTD
+2 -4
View File
@@ -671,8 +671,7 @@ private:
#endif
#if OPENTHREAD_CONFIG_CHANNEL_MANAGER_ENABLE && \
(OPENTHREAD_FTD || \
(OPENTHREAD_CONFIG_MAC_CSL_RECEIVER_ENABLE && OPENTHREAD_CONFIG_CHANNEL_MANAGER_CSL_CHANNEL_SELECT_ENABLE))
(OPENTHREAD_FTD || OPENTHREAD_CONFIG_CHANNEL_MANAGER_CSL_CHANNEL_SELECT_ENABLE)
Utils::ChannelManager mChannelManager;
#endif
@@ -978,8 +977,7 @@ template <> inline Utils::ChannelMonitor &Instance::Get(void) { return mChannelM
#endif
#if OPENTHREAD_CONFIG_CHANNEL_MANAGER_ENABLE && \
(OPENTHREAD_FTD || \
(OPENTHREAD_CONFIG_MAC_CSL_RECEIVER_ENABLE && OPENTHREAD_CONFIG_CHANNEL_MANAGER_CSL_CHANNEL_SELECT_ENABLE))
(OPENTHREAD_FTD || OPENTHREAD_CONFIG_CHANNEL_MANAGER_CSL_CHANNEL_SELECT_ENABLE)
template <> inline Utils::ChannelManager &Instance::Get(void) { return mChannelManager; }
#endif
+14 -16
View File
@@ -34,9 +34,8 @@
#include "channel_manager.hpp"
#if OPENTHREAD_CONFIG_CHANNEL_MANAGER_ENABLE && \
(OPENTHREAD_FTD || \
(OPENTHREAD_CONFIG_MAC_CSL_RECEIVER_ENABLE && OPENTHREAD_CONFIG_CHANNEL_MANAGER_CSL_CHANNEL_SELECT_ENABLE))
#if OPENTHREAD_CONFIG_CHANNEL_MANAGER_ENABLE
#if (OPENTHREAD_FTD || OPENTHREAD_CONFIG_CHANNEL_MANAGER_CSL_CHANNEL_SELECT_ENABLE)
#include "common/code_utils.hpp"
#include "common/locator_getters.hpp"
@@ -67,7 +66,7 @@ ChannelManager::ChannelManager(Instance &aInstance)
#if OPENTHREAD_FTD
, mAutoSelectEnabled(false)
#endif
#if (OPENTHREAD_CONFIG_MAC_CSL_RECEIVER_ENABLE && OPENTHREAD_CONFIG_CHANNEL_MANAGER_CSL_CHANNEL_SELECT_ENABLE)
#if OPENTHREAD_CONFIG_CHANNEL_MANAGER_CSL_CHANNEL_SELECT_ENABLE
, mAutoSelectCslEnabled(false)
#endif
, mCcaFailureRateThreshold(kCcaFailureRateThreshold)
@@ -82,7 +81,7 @@ void ChannelManager::RequestChannelChange(uint8_t aChannel)
RequestNetworkChannelChange(aChannel);
}
#endif
#if (OPENTHREAD_CONFIG_MAC_CSL_RECEIVER_ENABLE && OPENTHREAD_CONFIG_CHANNEL_MANAGER_CSL_CHANNEL_SELECT_ENABLE)
#if OPENTHREAD_CONFIG_CHANNEL_MANAGER_CSL_CHANNEL_SELECT_ENABLE
if (mAutoSelectCslEnabled)
{
ChangeCslChannel(aChannel);
@@ -118,7 +117,7 @@ exit:
}
#endif
#if (OPENTHREAD_CONFIG_MAC_CSL_RECEIVER_ENABLE && OPENTHREAD_CONFIG_CHANNEL_MANAGER_CSL_CHANNEL_SELECT_ENABLE)
#if OPENTHREAD_CONFIG_CHANNEL_MANAGER_CSL_CHANNEL_SELECT_ENABLE
void ChannelManager::ChangeCslChannel(uint8_t aChannel)
{
if (!(!Get<Mle::Mle>().IsRxOnWhenIdle() && Get<Mac::Mac>().IsCslEnabled()))
@@ -143,7 +142,7 @@ void ChannelManager::ChangeCslChannel(uint8_t aChannel)
exit:
return;
}
#endif // (OPENTHREAD_CONFIG_MAC_CSL_RECEIVER_ENABLE && OPENTHREAD_CONFIG_CHANNEL_MANAGER_CSL_CHANNEL_SELECT_ENABLE)
#endif // OPENTHREAD_CONFIG_CHANNEL_MANAGER_CSL_CHANNEL_SELECT_ENABLE
#if OPENTHREAD_FTD
Error ChannelManager::SetDelay(uint16_t aDelay)
@@ -315,7 +314,7 @@ exit:
}
#endif
#if (OPENTHREAD_CONFIG_MAC_CSL_RECEIVER_ENABLE && OPENTHREAD_CONFIG_CHANNEL_MANAGER_CSL_CHANNEL_SELECT_ENABLE)
#if OPENTHREAD_CONFIG_CHANNEL_MANAGER_CSL_CHANNEL_SELECT_ENABLE
Error ChannelManager::RequestCslChannelSelect(bool aSkipQualityCheck)
{
Error error = kErrorNone;
@@ -358,7 +357,7 @@ Error ChannelManager::RequestChannelSelect(bool aSkipQualityCheck)
SuccessOrExit(error = FindBetterChannel(newChannel, newOccupancy));
#if (OPENTHREAD_CONFIG_MAC_CSL_RECEIVER_ENABLE && OPENTHREAD_CONFIG_CHANNEL_MANAGER_CSL_CHANNEL_SELECT_ENABLE)
#if OPENTHREAD_CONFIG_CHANNEL_MANAGER_CSL_CHANNEL_SELECT_ENABLE
if (Get<Mac::Mac>().IsCslEnabled() && (Get<Mac::Mac>().GetCslChannel() != 0))
{
curChannel = Get<Mac::Mac>().GetCslChannel();
@@ -402,12 +401,11 @@ void ChannelManager::StartAutoSelectTimer(void)
{
VerifyOrExit(mState == kStateIdle);
#if (OPENTHREAD_FTD && OPENTHREAD_CONFIG_MAC_CSL_RECEIVER_ENABLE && \
OPENTHREAD_CONFIG_CHANNEL_MANAGER_CSL_CHANNEL_SELECT_ENABLE)
#if (OPENTHREAD_FTD && OPENTHREAD_CONFIG_CHANNEL_MANAGER_CSL_CHANNEL_SELECT_ENABLE)
if (mAutoSelectEnabled || mAutoSelectCslEnabled)
#elif OPENTHREAD_FTD
if (mAutoSelectEnabled)
#elif (OPENTHREAD_CONFIG_MAC_CSL_RECEIVER_ENABLE && OPENTHREAD_CONFIG_CHANNEL_MANAGER_CSL_CHANNEL_SELECT_ENABLE)
#elif OPENTHREAD_CONFIG_CHANNEL_MANAGER_CSL_CHANNEL_SELECT_ENABLE
if (mAutoSelectCslEnabled)
#endif
{
@@ -436,7 +434,7 @@ void ChannelManager::SetAutoNetworkChannelSelectionEnabled(bool aEnabled)
}
#endif
#if (OPENTHREAD_CONFIG_MAC_CSL_RECEIVER_ENABLE && OPENTHREAD_CONFIG_CHANNEL_MANAGER_CSL_CHANNEL_SELECT_ENABLE)
#if OPENTHREAD_CONFIG_CHANNEL_MANAGER_CSL_CHANNEL_SELECT_ENABLE
void ChannelManager::SetAutoCslChannelSelectionEnabled(bool aEnabled)
{
if (aEnabled != mAutoSelectCslEnabled)
@@ -457,12 +455,11 @@ Error ChannelManager::SetAutoChannelSelectionInterval(uint32_t aInterval)
mAutoSelectInterval = aInterval;
#if (OPENTHREAD_FTD && OPENTHREAD_CONFIG_MAC_CSL_RECEIVER_ENABLE && \
OPENTHREAD_CONFIG_CHANNEL_MANAGER_CSL_CHANNEL_SELECT_ENABLE)
#if (OPENTHREAD_FTD && OPENTHREAD_CONFIG_CHANNEL_MANAGER_CSL_CHANNEL_SELECT_ENABLE)
if (mAutoSelectEnabled || mAutoSelectCslEnabled)
#elif OPENTHREAD_FTD
if (mAutoSelectEnabled)
#elif (OPENTHREAD_CONFIG_MAC_CSL_RECEIVER_ENABLE && OPENTHREAD_CONFIG_CHANNEL_MANAGER_CSL_CHANNEL_SELECT_ENABLE)
#elif OPENTHREAD_CONFIG_CHANNEL_MANAGER_CSL_CHANNEL_SELECT_ENABLE
if (mAutoSelectCslEnabled)
#endif
{
@@ -500,4 +497,5 @@ void ChannelManager::SetCcaFailureRateThreshold(uint16_t aThreshold)
} // namespace Utils
} // namespace ot
#endif // #if (OPENTHREAD_FTD || OPENTHREAD_CONFIG_CHANNEL_MANAGER_CSL_CHANNEL_SELECT_ENABLE)
#endif // #if OPENTHREAD_CONFIG_CHANNEL_MANAGER_ENABLE
+14 -9
View File
@@ -36,9 +36,13 @@
#include "openthread-core-config.h"
#if OPENTHREAD_CONFIG_CHANNEL_MANAGER_ENABLE && \
(OPENTHREAD_FTD || \
(OPENTHREAD_CONFIG_MAC_CSL_RECEIVER_ENABLE && OPENTHREAD_CONFIG_CHANNEL_MANAGER_CSL_CHANNEL_SELECT_ENABLE))
#if OPENTHREAD_CONFIG_CHANNEL_MANAGER_ENABLE
#if (OPENTHREAD_CONFIG_CHANNEL_MANAGER_CSL_CHANNEL_SELECT_ENABLE && !OPENTHREAD_CONFIG_MAC_CSL_RECEIVER_ENABLE)
#error "CHANNEL_MANAGER_CSL_CHANNEL_SELECT_ENABLE requires OPENTHREAD_CONFIG_MAC_CSL_RECEIVER_ENABLE";
#endif
#if (OPENTHREAD_FTD || OPENTHREAD_CONFIG_CHANNEL_MANAGER_CSL_CHANNEL_SELECT_ENABLE)
#include <openthread/platform/radio.h>
@@ -164,7 +168,7 @@ public:
Error RequestNetworkChannelSelect(bool aSkipQualityCheck);
#endif // OPENTHREAD_FTD
#if (OPENTHREAD_CONFIG_MAC_CSL_RECEIVER_ENABLE && OPENTHREAD_CONFIG_CHANNEL_MANAGER_CSL_CHANNEL_SELECT_ENABLE)
#if OPENTHREAD_CONFIG_CHANNEL_MANAGER_CSL_CHANNEL_SELECT_ENABLE
/**
* Requests that `ChannelManager` checks and selects a new Csl channel and starts a channel change.
*
@@ -192,7 +196,7 @@ public:
*
*/
Error RequestCslChannelSelect(bool aSkipQualityCheck);
#endif // (OPENTHREAD_CONFIG_MAC_CSL_RECEIVER_ENABLE && OPENTHREAD_CONFIG_CHANNEL_MANAGER_CSL_CHANNEL_SELECT_ENABLE)
#endif // OPENTHREAD_CONFIG_CHANNEL_MANAGER_CSL_CHANNEL_SELECT_ENABLE
#if OPENTHREAD_FTD
/**
@@ -215,7 +219,7 @@ public:
bool GetAutoNetworkChannelSelectionEnabled(void) const { return mAutoSelectEnabled; }
#endif
#if (OPENTHREAD_CONFIG_MAC_CSL_RECEIVER_ENABLE && OPENTHREAD_CONFIG_CHANNEL_MANAGER_CSL_CHANNEL_SELECT_ENABLE)
#if OPENTHREAD_CONFIG_CHANNEL_MANAGER_CSL_CHANNEL_SELECT_ENABLE
/**
* Enables/disables the auto-channel-selection functionality.
*
@@ -352,7 +356,7 @@ private:
bool ShouldAttemptChannelChange(void);
#endif
#if (OPENTHREAD_CONFIG_MAC_CSL_RECEIVER_ENABLE && OPENTHREAD_CONFIG_CHANNEL_MANAGER_CSL_CHANNEL_SELECT_ENABLE)
#if OPENTHREAD_CONFIG_CHANNEL_MANAGER_CSL_CHANNEL_SELECT_ENABLE
void ChangeCslChannel(uint8_t aChannel);
#endif
@@ -371,7 +375,7 @@ private:
#if OPENTHREAD_FTD
bool mAutoSelectEnabled;
#endif
#if (OPENTHREAD_CONFIG_MAC_CSL_RECEIVER_ENABLE && OPENTHREAD_CONFIG_CHANNEL_MANAGER_CSL_CHANNEL_SELECT_ENABLE)
#if OPENTHREAD_CONFIG_CHANNEL_MANAGER_CSL_CHANNEL_SELECT_ENABLE
bool mAutoSelectCslEnabled;
#endif
uint16_t mCcaFailureRateThreshold;
@@ -385,6 +389,7 @@ private:
} // namespace Utils
} // namespace ot
#endif // OPENTHREAD_CONFIG_CHANNEL_MANAGER_ENABLE && OPENTHREAD_FTD
#endif // #if (OPENTHREAD_FTD || OPENTHREAD_CONFIG_CHANNEL_MANAGER_CSL_CHANNEL_SELECT_ENABLE)
#endif // #if OPENTHREAD_CONFIG_CHANNEL_MANAGER_ENABLE
#endif // CHANNEL_MANAGER_HPP_