diff --git a/wpa_supplicant/aidl/mainline/mainline_supplicant.cpp b/wpa_supplicant/aidl/mainline/mainline_supplicant.cpp
index b1a873d..b557dca 100644
--- a/wpa_supplicant/aidl/mainline/mainline_supplicant.cpp
+++ b/wpa_supplicant/aidl/mainline/mainline_supplicant.cpp
@@ -18,17 +18,17 @@
     wpa_global_ = global;
 }
 
-ndk::ScopedAStatus MainlineSupplicant::addStaInterface(const std::string& ifaceName,
-        std::shared_ptr<IStaInterface>* _aidl_return) {
+ndk::ScopedAStatus MainlineSupplicant::addUsdInterface(const std::string& ifaceName,
+        std::shared_ptr<IUsdInterface>* _aidl_return) {
     if (ifaceName.empty()) {
         wpa_printf(MSG_ERROR, "Empty iface name provided");
         return createStatus(SupplicantStatusCode::FAILURE_ARGS_INVALID);
     }
 
-    if (active_sta_ifaces_.find(ifaceName) != active_sta_ifaces_.end()) {
+    if (active_usd_ifaces_.find(ifaceName) != active_usd_ifaces_.end()) {
         wpa_printf(MSG_INFO, "Interface %s already exists", ifaceName.c_str());
-        std::shared_ptr<IStaInterface> staIface = active_sta_ifaces_[ifaceName];
-        _aidl_return = &staIface;
+        std::shared_ptr<IUsdInterface> usdIface = active_usd_ifaces_[ifaceName];
+        _aidl_return = &usdIface;
         return ndk::ScopedAStatus::ok();
     }
 
@@ -49,22 +49,22 @@
         return createStatus(SupplicantStatusCode::FAILURE_UNKNOWN);
     }
 
-    std::shared_ptr<IStaInterface> staIface =
-        ndk::SharedRefBase::make<StaIface>(wpa_global_, ifaceName);
-    active_sta_ifaces_[ifaceName] = staIface;
-    _aidl_return = &staIface;
+    std::shared_ptr<IUsdInterface> usdIface =
+        ndk::SharedRefBase::make<UsdIface>(wpa_global_, ifaceName);
+    active_usd_ifaces_[ifaceName] = usdIface;
+    _aidl_return = &usdIface;
 
     wpa_printf(MSG_INFO, "Interface %s was added successfully", ifaceName.c_str());
     return ndk::ScopedAStatus::ok();
 }
 
-ndk::ScopedAStatus MainlineSupplicant::removeStaInterface(const std::string& ifaceName) {
+ndk::ScopedAStatus MainlineSupplicant::removeUsdInterface(const std::string& ifaceName) {
     if (ifaceName.empty()) {
         wpa_printf(MSG_ERROR, "Empty iface name provided");
         return createStatus(SupplicantStatusCode::FAILURE_ARGS_INVALID);
     }
 
-    if (active_sta_ifaces_.find(ifaceName) == active_sta_ifaces_.end()) {
+    if (active_usd_ifaces_.find(ifaceName) == active_usd_ifaces_.end()) {
         wpa_printf(MSG_ERROR, "Interface %s does not exist", ifaceName.c_str());
         return createStatus(SupplicantStatusCode::FAILURE_IFACE_UNKNOWN);
     }
@@ -81,7 +81,7 @@
     }
 
     wpa_printf(MSG_INFO, "Interface %s was removed successfully", ifaceName.c_str());
-    active_sta_ifaces_.erase(ifaceName);
+    active_usd_ifaces_.erase(ifaceName);
     return ndk::ScopedAStatus::ok();
 }
 
diff --git a/wpa_supplicant/aidl/mainline/mainline_supplicant.h b/wpa_supplicant/aidl/mainline/mainline_supplicant.h
index 1f05a9c..d37d099 100644
--- a/wpa_supplicant/aidl/mainline/mainline_supplicant.h
+++ b/wpa_supplicant/aidl/mainline/mainline_supplicant.h
@@ -11,7 +11,7 @@
 
 #include <map>
 
-#include "sta_iface.h"
+#include "usd_iface.h"
 
 #include <aidl/android/system/wifi/mainline_supplicant/BnMainlineSupplicant.h>
 #include <aidl/android/system/wifi/mainline_supplicant/IUsdInterface.h>
@@ -27,22 +27,22 @@
 }
 
 using ::aidl::android::system::wifi::mainline_supplicant::BnMainlineSupplicant;
-using ::aidl::android::system::wifi::mainline_supplicant::IStaInterface;
+using ::aidl::android::system::wifi::mainline_supplicant::IUsdInterface;
 using ::aidl::android::system::wifi::mainline_supplicant::SupplicantStatusCode;
 
 class MainlineSupplicant : public BnMainlineSupplicant {
     public:
         MainlineSupplicant(struct wpa_global* global);
-        ndk::ScopedAStatus addStaInterface(const std::string& ifaceName,
-            std::shared_ptr<IStaInterface>* _aidl_return);
-        ndk::ScopedAStatus removeStaInterface(const std::string& ifaceName);
+        ndk::ScopedAStatus addUsdInterface(const std::string& ifaceName,
+            std::shared_ptr<IUsdInterface>* _aidl_return);
+        ndk::ScopedAStatus removeUsdInterface(const std::string& ifaceName);
         ndk::ScopedAStatus terminate();
 
     private:
         // Raw pointer to the global structure maintained by the core
         struct wpa_global* wpa_global_;
-        // Map containing all active STA interfaces, mapped by iface name -> object
-        std::map<std::string, std::shared_ptr<IStaInterface>> active_sta_ifaces_;
+        // Map containing all active USD interfaces, mapped by iface name -> object
+        std::map<std::string, std::shared_ptr<IUsdInterface>> active_usd_ifaces_;
 };
 
 #endif  // MAINLINE_SUPPLICANT_IMPL_H
diff --git a/wpa_supplicant/aidl/mainline/sta_iface.cpp b/wpa_supplicant/aidl/mainline/sta_iface.cpp
deleted file mode 100644
index bfa9c9e..0000000
--- a/wpa_supplicant/aidl/mainline/sta_iface.cpp
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * WPA Supplicant - Station mode interface
- * Copyright (c) 2024, Google Inc. All rights reserved.
- *
- * This software may be distributed under the terms of the BSD license.
- * See README for more details.
- */
-
-#include "sta_iface.h"
-
-StaIface::StaIface(struct wpa_global* wpa_global, std::string iface_name)
-    : wpa_global_(wpa_global), iface_name_(iface_name) {}
-
-::ndk::ScopedAStatus StaIface::registerCallback(
-        const std::shared_ptr<IStaInterfaceCallback>& in_callback) {
-    return ndk::ScopedAStatus::ok();
-}
-
-::ndk::ScopedAStatus StaIface::getUsdCapabilities(UsdCapabilities* _aidl_return) {
-    return ndk::ScopedAStatus::ok();
-}
-
-::ndk::ScopedAStatus StaIface::startUsdPublish(int32_t in_cmdId,
-        const PublishConfig& in_usdPublishConfig) {
-    return ndk::ScopedAStatus::ok();
-}
-
-::ndk::ScopedAStatus StaIface::startUsdSubscribe(int32_t in_cmdId,
-        const SubscribeConfig& in_usdSubscribeConfig) {
-    return ndk::ScopedAStatus::ok();
-}
-
-::ndk::ScopedAStatus StaIface::updateUsdPublish(int32_t in_publishId,
-        const std::vector<uint8_t>& in_serviceSpecificInfo) {
-    return ndk::ScopedAStatus::ok();
-}
-
-::ndk::ScopedAStatus StaIface::cancelUsdPublish(int32_t in_publishId) {
-    return ndk::ScopedAStatus::ok();
-}
-
-::ndk::ScopedAStatus StaIface::cancelUsdSubscribe(int32_t in_subscribeId) {
-    return ndk::ScopedAStatus::ok();
-}
-
-::ndk::ScopedAStatus StaIface::sendUsdMessage(const UsdMessageInfo& in_messageInfo) {
-    return ndk::ScopedAStatus::ok();
-}
diff --git a/wpa_supplicant/aidl/mainline/usd_iface.cpp b/wpa_supplicant/aidl/mainline/usd_iface.cpp
new file mode 100644
index 0000000..b514f77
--- /dev/null
+++ b/wpa_supplicant/aidl/mainline/usd_iface.cpp
@@ -0,0 +1,43 @@
+/*
+ * WPA Supplicant - Interface for USD operations
+ * Copyright (c) 2024, Google Inc. All rights reserved.
+ *
+ * This software may be distributed under the terms of the BSD license.
+ * See README for more details.
+ */
+
+#include "usd_iface.h"
+
+UsdIface::UsdIface(struct wpa_global* wpa_global, std::string iface_name)
+    : wpa_global_(wpa_global), iface_name_(iface_name) {}
+
+::ndk::ScopedAStatus UsdIface::getUsdCapabilities(UsdCapabilities* _aidl_return) {
+    return ndk::ScopedAStatus::ok();
+}
+
+::ndk::ScopedAStatus UsdIface::startUsdPublish(int32_t in_cmdId,
+        const PublishConfig& in_usdPublishConfig) {
+    return ndk::ScopedAStatus::ok();
+}
+
+::ndk::ScopedAStatus UsdIface::startUsdSubscribe(int32_t in_cmdId,
+        const SubscribeConfig& in_usdSubscribeConfig) {
+    return ndk::ScopedAStatus::ok();
+}
+
+::ndk::ScopedAStatus UsdIface::updateUsdPublish(int32_t in_publishId,
+        const std::vector<uint8_t>& in_serviceSpecificInfo) {
+    return ndk::ScopedAStatus::ok();
+}
+
+::ndk::ScopedAStatus UsdIface::cancelUsdPublish(int32_t in_publishId) {
+    return ndk::ScopedAStatus::ok();
+}
+
+::ndk::ScopedAStatus UsdIface::cancelUsdSubscribe(int32_t in_subscribeId) {
+    return ndk::ScopedAStatus::ok();
+}
+
+::ndk::ScopedAStatus UsdIface::sendUsdMessage(const UsdMessageInfo& in_messageInfo) {
+    return ndk::ScopedAStatus::ok();
+}
diff --git a/wpa_supplicant/aidl/mainline/sta_iface.h b/wpa_supplicant/aidl/mainline/usd_iface.h
similarity index 62%
rename from wpa_supplicant/aidl/mainline/sta_iface.h
rename to wpa_supplicant/aidl/mainline/usd_iface.h
index 84ad201..32b86cc 100644
--- a/wpa_supplicant/aidl/mainline/sta_iface.h
+++ b/wpa_supplicant/aidl/mainline/usd_iface.h
@@ -1,26 +1,22 @@
 /*
- * WPA Supplicant - Station mode interface
+ * WPA Supplicant - Interface for USD operations
  * Copyright (c) 2024, Google Inc. All rights reserved.
  *
  * This software may be distributed under the terms of the BSD license.
  * See README for more details.
  */
 
-#ifndef MAINLINE_SUPPLICANT_STA_IFACE_H
-#define MAINLINE_SUPPLICANT_STA_IFACE_H
+#ifndef MAINLINE_SUPPLICANT_USD_IFACE_H
+#define MAINLINE_SUPPLICANT_USD_IFACE_H
 
-#include <aidl/android/system/wifi/mainline_supplicant/BnStaInterface.h>
-#include <aidl/android/system/wifi/mainline_supplicant/IStaInterfaceCallback.h>
+#include <aidl/android/system/wifi/mainline_supplicant/BnUsdInterface.h>
 
-using ::aidl::android::system::wifi::mainline_supplicant::BnStaInterface;
-using ::aidl::android::system::wifi::mainline_supplicant::IStaInterfaceCallback;
+using ::aidl::android::system::wifi::mainline_supplicant::BnUsdInterface;
 using ::aidl::android::system::wifi::mainline_supplicant::UsdMessageInfo;
 
-class StaIface : public BnStaInterface {
+class UsdIface : public BnUsdInterface {
     public:
-        StaIface(struct wpa_global* wpa_global, std::string iface_name);
-        ::ndk::ScopedAStatus registerCallback(
-            const std::shared_ptr<IStaInterfaceCallback>& in_callback) override;
+        UsdIface(struct wpa_global* wpa_global, std::string iface_name);
         ::ndk::ScopedAStatus getUsdCapabilities(UsdCapabilities* _aidl_return) override;
         ::ndk::ScopedAStatus startUsdPublish(int32_t in_cmdId,
             const PublishConfig& in_usdPublishConfig) override;
@@ -37,4 +33,4 @@
         std::string iface_name_;
 };
 
-#endif // MAINLINE_SUPPLICANT_STA_IFACE_H
+#endif // MAINLINE_SUPPLICANT_USD_IFACE_H
