diff --git a/src/platform/OpenThread/GenericThreadStackManagerImpl_OpenThread.cpp b/src/platform/OpenThread/GenericThreadStackManagerImpl_OpenThread.cpp index 3fde426337db7d..6d8506de69769a 100644 --- a/src/platform/OpenThread/GenericThreadStackManagerImpl_OpenThread.cpp +++ b/src/platform/OpenThread/GenericThreadStackManagerImpl_OpenThread.cpp @@ -453,7 +453,11 @@ void GenericThreadStackManagerImpl_OpenThread::_OnNetworkScanFinished // If Thread scanning was done before commissioning, turn off the IPv6 interface. if (otThreadGetDeviceRole(mOTInst) == OT_DEVICE_ROLE_DISABLED && !otDatasetIsCommissioned(mOTInst)) { - otIp6SetEnabled(mOTInst, false); + DeviceLayer::SystemLayer().ScheduleLambda([this]() { + Impl()->LockThreadStack(); + otIp6SetEnabled(mOTInst, false); + Impl()->UnlockThreadStack(); + }); } if (mpScanCallback != nullptr)