diff --git a/src/platform/nxp/zephyr/wifi/ConnectivityManagerImplWiFi.cpp b/src/platform/Zephyr/wifi/ConnectivityManagerImplWiFi.cpp
similarity index 100%
rename from src/platform/nxp/zephyr/wifi/ConnectivityManagerImplWiFi.cpp
rename to src/platform/Zephyr/wifi/ConnectivityManagerImplWiFi.cpp
diff --git a/src/platform/nxp/zephyr/wifi/ConnectivityManagerImplWiFi.h b/src/platform/Zephyr/wifi/ConnectivityManagerImplWiFi.h
similarity index 100%
rename from src/platform/nxp/zephyr/wifi/ConnectivityManagerImplWiFi.h
rename to src/platform/Zephyr/wifi/ConnectivityManagerImplWiFi.h
diff --git a/src/platform/nxp/zephyr/wifi/WiFiManager.cpp b/src/platform/Zephyr/wifi/WiFiManager.cpp
similarity index 100%
rename from src/platform/nxp/zephyr/wifi/WiFiManager.cpp
rename to src/platform/Zephyr/wifi/WiFiManager.cpp
diff --git a/src/platform/nxp/zephyr/wifi/WiFiManager.h b/src/platform/Zephyr/wifi/WiFiManager.h
similarity index 100%
rename from src/platform/nxp/zephyr/wifi/WiFiManager.h
rename to src/platform/Zephyr/wifi/WiFiManager.h
diff --git a/src/platform/nxp/zephyr/wifi/NxpWifiDriver.cpp b/src/platform/Zephyr/wifi/ZephyrWifiDriver.cpp
similarity index 85%
rename from src/platform/nxp/zephyr/wifi/NxpWifiDriver.cpp
rename to src/platform/Zephyr/wifi/ZephyrWifiDriver.cpp
index f3969a5..53b7fa6 100644
--- a/src/platform/nxp/zephyr/wifi/NxpWifiDriver.cpp
+++ b/src/platform/Zephyr/wifi/ZephyrWifiDriver.cpp
@@ -15,7 +15,7 @@
  *    limitations under the License.
  */
 
-#include "NxpWifiDriver.h"
+#include "ZephyrWifiDriver.h"
 
 #include <platform/KeyValueStoreManager.h>
 
@@ -32,13 +32,13 @@
 namespace DeviceLayer {
 namespace NetworkCommissioning {
 
-size_t NxpWifiDriver::WiFiNetworkIterator::Count()
+size_t ZephyrWifiDriver::WiFiNetworkIterator::Count()
 {
     VerifyOrReturnValue(mDriver != nullptr, 0);
     return mDriver->mStagingNetwork.IsConfigured() ? 1 : 0;
 }
 
-bool NxpWifiDriver::WiFiNetworkIterator::Next(Network & item)
+bool ZephyrWifiDriver::WiFiNetworkIterator::Next(Network & item)
 {
     // we assume only one network is actually supported
     // TODO: verify if this can be extended
@@ -67,7 +67,7 @@
     return true;
 }
 
-bool NxpWifiScanResponseIterator::Next(WiFiScanResponse & item)
+bool ZephyrWifiScanResponseIterator::Next(WiFiScanResponse & item)
 {
     if (mResultId < mResultCount)
     {
@@ -77,14 +77,14 @@
     return false;
 }
 
-void NxpWifiScanResponseIterator::Release()
+void ZephyrWifiScanResponseIterator::Release()
 {
     mResultId = mResultCount = 0;
     Platform::MemoryFree(mResults);
     mResults = nullptr;
 }
 
-void NxpWifiScanResponseIterator::Add(const WiFiScanResponse & result)
+void ZephyrWifiScanResponseIterator::Add(const WiFiScanResponse & result)
 {
     void * newResults = Platform::MemoryRealloc(mResults, (mResultCount + 1) * sizeof(WiFiScanResponse));
 
@@ -95,7 +95,7 @@
     }
 }
 
-CHIP_ERROR NxpWifiDriver::Init(NetworkStatusChangeCallback * networkStatusChangeCallback)
+CHIP_ERROR ZephyrWifiDriver::Init(NetworkStatusChangeCallback * networkStatusChangeCallback)
 {
     mpNetworkStatusChangeCallback = networkStatusChangeCallback;
 
@@ -113,7 +113,7 @@
     return CHIP_NO_ERROR;
 }
 
-void NxpWifiDriver::OnNetworkStatusChanged(Status status)
+void ZephyrWifiDriver::OnNetworkStatusChanged(Status status)
 {
     if (status == Status::kSuccess)
     {
@@ -132,12 +132,12 @@
     }
 }
 
-void NxpWifiDriver::Shutdown()
+void ZephyrWifiDriver::Shutdown()
 {
     mpNetworkStatusChangeCallback = nullptr;
 }
 
-CHIP_ERROR NxpWifiDriver::CommitConfiguration()
+CHIP_ERROR ZephyrWifiDriver::CommitConfiguration()
 {
     ReturnErrorOnFailure(KeyValueStoreMgr().Put(kPassKey, mStagingNetwork.pass, mStagingNetwork.passLen));
     ReturnErrorOnFailure(KeyValueStoreMgr().Put(kSsidKey, mStagingNetwork.ssid, mStagingNetwork.ssidLen));
@@ -145,7 +145,7 @@
     return CHIP_NO_ERROR;
 }
 
-CHIP_ERROR NxpWifiDriver::RevertConfiguration()
+CHIP_ERROR ZephyrWifiDriver::RevertConfiguration()
 {
     LoadFromStorage();
 
@@ -172,8 +172,8 @@
     return CHIP_NO_ERROR;
 }
 
-Status NxpWifiDriver::AddOrUpdateNetwork(ByteSpan ssid, ByteSpan credentials, MutableCharSpan & outDebugText,
-                                         uint8_t & outNetworkIndex)
+Status ZephyrWifiDriver::AddOrUpdateNetwork(ByteSpan ssid, ByteSpan credentials, MutableCharSpan & outDebugText,
+                                            uint8_t & outNetworkIndex)
 {
     outDebugText    = {};
     outNetworkIndex = 0;
@@ -191,7 +191,7 @@
     return Status::kSuccess;
 }
 
-Status NxpWifiDriver::RemoveNetwork(ByteSpan networkId, MutableCharSpan & outDebugText, uint8_t & outNetworkIndex)
+Status ZephyrWifiDriver::RemoveNetwork(ByteSpan networkId, MutableCharSpan & outDebugText, uint8_t & outNetworkIndex)
 {
     outDebugText    = {};
     outNetworkIndex = 0;
@@ -202,7 +202,7 @@
     return Status::kSuccess;
 }
 
-Status NxpWifiDriver::ReorderNetwork(ByteSpan networkId, uint8_t index, MutableCharSpan & outDebugText)
+Status ZephyrWifiDriver::ReorderNetwork(ByteSpan networkId, uint8_t index, MutableCharSpan & outDebugText)
 {
     outDebugText = {};
 
@@ -213,7 +213,7 @@
     return Status::kSuccess;
 }
 
-void NxpWifiDriver::ConnectNetwork(ByteSpan networkId, ConnectCallback * callback)
+void ZephyrWifiDriver::ConnectNetwork(ByteSpan networkId, ConnectCallback * callback)
 {
     Status status = Status::kSuccess;
     WiFiManager::StationStatus stationStatus;
@@ -252,7 +252,7 @@
     }
 }
 
-void NxpWifiDriver::LoadFromStorage()
+void ZephyrWifiDriver::LoadFromStorage()
 {
     WiFiManager::WiFiNetwork network;
 
@@ -262,7 +262,7 @@
     mStagingNetwork = network;
 }
 
-void NxpWifiDriver::OnScanWiFiNetworkDone(WiFiManager::WiFiRequestStatus status)
+void ZephyrWifiDriver::OnScanWiFiNetworkDone(WiFiManager::WiFiRequestStatus status)
 {
     VerifyOrReturn(mScanCallback != nullptr);
     mScanCallback->OnFinished(status == WiFiManager::WiFiRequestStatus::SUCCESS ? Status::kSuccess : Status::kUnknownError,
@@ -270,12 +270,12 @@
     mScanCallback = nullptr;
 }
 
-void NxpWifiDriver::OnScanWiFiNetworkResult(const WiFiScanResponse & response)
+void ZephyrWifiDriver::OnScanWiFiNetworkResult(const WiFiScanResponse & response)
 {
     mScanResponseIterator.Add(response);
 }
 
-void NxpWifiDriver::ScanNetworks(ByteSpan ssid, WiFiDriver::ScanCallback * callback)
+void ZephyrWifiDriver::ScanNetworks(ByteSpan ssid, WiFiDriver::ScanCallback * callback)
 {
     mScanCallback    = callback;
     CHIP_ERROR error = WiFiManager::Instance().Scan(
diff --git a/src/platform/nxp/zephyr/wifi/NxpWifiDriver.h b/src/platform/Zephyr/wifi/ZephyrWifiDriver.h
similarity index 90%
rename from src/platform/nxp/zephyr/wifi/NxpWifiDriver.h
rename to src/platform/Zephyr/wifi/ZephyrWifiDriver.h
index 01e4964..9096aa4 100644
--- a/src/platform/nxp/zephyr/wifi/NxpWifiDriver.h
+++ b/src/platform/Zephyr/wifi/ZephyrWifiDriver.h
@@ -29,7 +29,7 @@
 constexpr uint8_t kWiFiScanNetworksTimeOutSeconds   = 10;
 constexpr uint8_t kWiFiConnectNetworkTimeoutSeconds = 35;
 
-class NxpWifiScanResponseIterator : public Iterator<WiFiScanResponse>
+class ZephyrWifiScanResponseIterator : public Iterator<WiFiScanResponse>
 {
 public:
     size_t Count() override { return mResultCount; }
@@ -43,7 +43,7 @@
     WiFiScanResponse * mResults = nullptr;
 };
 
-class NxpWifiDriver final : public WiFiDriver
+class ZephyrWifiDriver final : public WiFiDriver
 {
 public:
     // Define non-volatile storage keys for SSID and password.
@@ -54,14 +54,14 @@
     class WiFiNetworkIterator final : public NetworkIterator
     {
     public:
-        WiFiNetworkIterator(NxpWifiDriver * aDriver) : mDriver(aDriver) {}
+        WiFiNetworkIterator(ZephyrWifiDriver * aDriver) : mDriver(aDriver) {}
         size_t Count() override;
         bool Next(Network & item) override;
         void Release() override { delete this; }
         ~WiFiNetworkIterator() = default;
 
     private:
-        NxpWifiDriver * mDriver;
+        ZephyrWifiDriver * mDriver;
         bool mExhausted{ false };
     };
 
@@ -87,9 +87,9 @@
                               uint8_t & outNetworkIndex) override;
     void ScanNetworks(ByteSpan ssid, ScanCallback * callback) override;
 
-    static NxpWifiDriver & Instance()
+    static ZephyrWifiDriver & Instance()
     {
-        static NxpWifiDriver sInstance;
+        static ZephyrWifiDriver sInstance;
         return sInstance;
     }
 
@@ -103,7 +103,7 @@
     ConnectCallback * mpConnectCallback{ nullptr };
     NetworkStatusChangeCallback * mpNetworkStatusChangeCallback{ nullptr };
     WiFiManager::WiFiNetwork mStagingNetwork;
-    NxpWifiScanResponseIterator mScanResponseIterator;
+    ZephyrWifiScanResponseIterator mScanResponseIterator;
     ScanCallback * mScanCallback{ nullptr };
 };
 
diff --git a/src/platform/nxp/zephyr/BUILD.gn b/src/platform/nxp/zephyr/BUILD.gn
index 1c37075..bdf1f2b 100644
--- a/src/platform/nxp/zephyr/BUILD.gn
+++ b/src/platform/nxp/zephyr/BUILD.gn
@@ -87,12 +87,12 @@
     sources += [
       "../../Zephyr/InetUtils.cpp",
       "../../Zephyr/InetUtils.h",
-      "wifi/ConnectivityManagerImplWiFi.cpp",
-      "wifi/ConnectivityManagerImplWiFi.h",
-      "wifi/NxpWifiDriver.cpp",
-      "wifi/NxpWifiDriver.h",
-      "wifi/WiFiManager.cpp",
-      "wifi/WiFiManager.h",
+      "../../Zephyr/wifi/ConnectivityManagerImplWiFi.cpp",
+      "../../Zephyr/wifi/ConnectivityManagerImplWiFi.h",
+      "../../Zephyr/wifi/WiFiManager.cpp",
+      "../../Zephyr/wifi/WiFiManager.h",
+      "../../Zephyr/wifi/ZephyrWifiDriver.cpp",
+      "../../Zephyr/wifi/ZephyrWifiDriver.h",
     ]
   }
 
diff --git a/src/platform/nxp/zephyr/CHIPDevicePlatformConfig.h b/src/platform/nxp/zephyr/CHIPDevicePlatformConfig.h
index 7a80a39..900aa84 100644
--- a/src/platform/nxp/zephyr/CHIPDevicePlatformConfig.h
+++ b/src/platform/nxp/zephyr/CHIPDevicePlatformConfig.h
@@ -105,7 +105,7 @@
 // ========== Platform-specific Configuration Overrides =========
 
 #ifndef CHIP_DEVICE_CONFIG_CHIP_TASK_PRIORITY
-#define CHIP_DEVICE_CONFIG_CHIP_TASK_PRIORITY (K_PRIO_PREEMPT(1))
+#define CHIP_DEVICE_CONFIG_CHIP_TASK_PRIORITY (K_PRIO_PREEMPT(5))
 #endif // CHIP_DEVICE_CONFIG_CHIP_TASK_PRIORITY
 
 #ifndef CHIP_DEVICE_CONFIG_CHIP_TASK_STACK_SIZE
diff --git a/src/platform/nxp/zephyr/ConnectivityManagerImpl.h b/src/platform/nxp/zephyr/ConnectivityManagerImpl.h
index 6d7a717..c43d6a3 100644
--- a/src/platform/nxp/zephyr/ConnectivityManagerImpl.h
+++ b/src/platform/nxp/zephyr/ConnectivityManagerImpl.h
@@ -36,7 +36,7 @@
 #endif
 
 #if CHIP_DEVICE_CONFIG_ENABLE_WIFI
-#include "wifi/ConnectivityManagerImplWiFi.h"
+#include <platform/Zephyr/wifi/ConnectivityManagerImplWiFi.h>
 #else
 #include <platform/internal/GenericConnectivityManagerImpl_NoWiFi.h>
 #endif
diff --git a/src/platform/nxp/zephyr/DiagnosticDataProviderImplNxp.cpp b/src/platform/nxp/zephyr/DiagnosticDataProviderImplNxp.cpp
index b7f0e25..6c3481d 100644
--- a/src/platform/nxp/zephyr/DiagnosticDataProviderImplNxp.cpp
+++ b/src/platform/nxp/zephyr/DiagnosticDataProviderImplNxp.cpp
@@ -24,7 +24,7 @@
 #include "DiagnosticDataProviderImplNxp.h"
 
 #ifdef CONFIG_WIFI_NXP
-#include <platform/nxp/zephyr/wifi/WiFiManager.h>
+#include <platform/Zephyr/wifi/WiFiManager.h>
 #endif
 
 namespace chip {
