Merge "Update .rc for hostapd in vendor apex" into main
diff --git a/board_config_wpa_supplicant.mk b/board_config_wpa_supplicant.mk
new file mode 100644
index 0000000..c03f94a
--- /dev/null
+++ b/board_config_wpa_supplicant.mk
@@ -0,0 +1,96 @@
+#
+# Copyright (C) 2024 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+# ###############################################################
+# This file adds wpa_supplicant_8 variables into soong config namespace (`wpa_supplicant_8`)
+# ###############################################################
+
+ifdef BOARD_HOSTAPD_DRIVER
+$(call soong_config_set_bool,wpa_supplicant_8,wpa_build_hostapd,true)
+ifneq ($(BOARD_HOSTAPD_DRIVER),NL80211)
+ $(error BOARD_HOSTAPD_DRIVER set to $(BOARD_HOSTAPD_DRIVER) but current soong expected it should be NL80211 only!)
+endif
+endif
+
+ifdef BOARD_WPA_SUPPLICANT_DRIVER
+ifneq ($(BOARD_WPA_SUPPLICANT_DRIVER),NL80211)
+ $(error BOARD_WPA_SUPPLICANT_DRIVER set to $(BOARD_WPA_SUPPLICANT_DRIVER) but current soong expected it should be NL80211 only!)
+endif
+endif
+
+# This is for CONFIG_DRIVER_NL80211_BRCM, CONFIG_DRIVER_NL80211_SYNA, CONFIG_DRIVER_NL80211_QCA
+# And it is only used for a cflags setting in driver.
+$(call soong_config_set,wpa_supplicant_8,board_wlan_device,$(BOARD_WLAN_DEVICE))
+
+# Belong to CONFIG_IEEE80211AX definition
+ifeq ($(WIFI_FEATURE_HOSTAPD_11AX),true)
+$(call soong_config_set_bool,wpa_supplicant_8,hostapd_11ax,true)
+endif
+
+ifeq ($(WIFI_FEATURE_SUPPLICANT_11AX),true)
+$(call soong_config_set_bool,wpa_supplicant_8,wpa_supplicant_11ax,true)
+endif
+
+# Belong to CONFIG_IEEE80211BE definition
+ifeq ($(WIFI_FEATURE_HOSTAPD_11BE),true)
+$(call soong_config_set_bool,wpa_supplicant_8,hostapd_11be,true)
+endif
+
+ifeq ($(WIFI_FEATURE_SUPPLICANT_11BE),true)
+$(call soong_config_set_bool,wpa_supplicant_8,wpa_supplicant_11be,true)
+endif
+
+# PLATFORM_VERSION
+$(call soong_config_set,wpa_supplicant_8,platform_version,$(PLATFORM_VERSION))
+
+# BOARD_HOSTAPD_PRIVATE_LIB
+ifeq ($(BOARD_HOSTAPD_PRIVATE_LIB),)
+$(call soong_config_set_bool,wpa_supplicant_8,hostapd_use_stub_lib,true)
+else
+$(call soong_config_set,wpa_supplicant_8,board_hostapd_private_lib,$(BOARD_HOSTAPD_PRIVATE_LIB))
+endif
+
+ifeq ($(BOARD_HOSTAPD_CONFIG_80211W_MFP_OPTIONAL),true)
+$(call soong_config_set_bool,wpa_supplicant_8,board_hostapd_config_80211w_mfp_optional,true)
+endif
+
+ifneq ($(BOARD_HOSTAPD_PRIVATE_LIB_EVENT),)
+$(call soong_config_set_bool,wpa_supplicant_8,board_hostapd_private_lib_event,true)
+endif
+
+# BOARD_WPA_SUPPLICANT_PRIVATE_LIB
+ifeq ($(BOARD_WPA_SUPPLICANT_PRIVATE_LIB),)
+$(call soong_config_set_bool,wpa_supplicant_8,wpa_supplicant_use_stub_lib,true)
+else
+$(call soong_config_set,wpa_supplicant_8,board_wpa_supplicant_private_lib,$(BOARD_WPA_SUPPLICANT_PRIVATE_LIB))
+endif
+
+ifneq ($(BOARD_WPA_SUPPLICANT_PRIVATE_LIB_EVENT),)
+$(call soong_config_set_bool,wpa_supplicant_8,board_wpa_supplicant_private_lib_event,true)
+endif
+
+ifeq ($(WIFI_PRIV_CMD_UPDATE_MBO_CELL_STATUS), enabled)
+$(call soong_config_set_bool,wpa_supplicant_8,wifi_priv_cmd_update_mbo_cell_status,true)
+endif
+
+ifeq ($(WIFI_HIDL_UNIFIED_SUPPLICANT_SERVICE_RC_ENTRY), true)
+$(call soong_config_set_bool,wpa_supplicant_8,wifi_hidl_unified_supplicant_service_rc_entry,true)
+endif
+
+# New added in internal main
+ifeq ($(WIFI_BRCM_OPEN_SOURCE_MULTI_AKM), enabled)
+$(call soong_config_set_bool,wpa_supplicant_8,wifi_brcm_open_source_multi_akm,true)
+endif
diff --git a/wpa_supplicant/aidl/mainline/mainline_supplicant.cpp b/wpa_supplicant/aidl/mainline/mainline_supplicant.cpp
index dd2babe..b1a873d 100644
--- a/wpa_supplicant/aidl/mainline/mainline_supplicant.cpp
+++ b/wpa_supplicant/aidl/mainline/mainline_supplicant.cpp
@@ -18,14 +18,17 @@
wpa_global_ = global;
}
-ndk::ScopedAStatus MainlineSupplicant::addUsdInterface(const std::string& ifaceName) {
+ndk::ScopedAStatus MainlineSupplicant::addStaInterface(const std::string& ifaceName,
+ std::shared_ptr<IStaInterface>* _aidl_return) {
if (ifaceName.empty()) {
wpa_printf(MSG_ERROR, "Empty iface name provided");
return createStatus(SupplicantStatusCode::FAILURE_ARGS_INVALID);
}
- if (active_usd_ifaces_.find(ifaceName) != active_usd_ifaces_.end()) {
+ if (active_sta_ifaces_.find(ifaceName) != active_sta_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;
return ndk::ScopedAStatus::ok();
}
@@ -46,18 +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;
+
wpa_printf(MSG_INFO, "Interface %s was added successfully", ifaceName.c_str());
- active_usd_ifaces_.insert(ifaceName);
return ndk::ScopedAStatus::ok();
}
-ndk::ScopedAStatus MainlineSupplicant::removeUsdInterface(const std::string& ifaceName) {
+ndk::ScopedAStatus MainlineSupplicant::removeStaInterface(const std::string& ifaceName) {
if (ifaceName.empty()) {
wpa_printf(MSG_ERROR, "Empty iface name provided");
return createStatus(SupplicantStatusCode::FAILURE_ARGS_INVALID);
}
- if (active_usd_ifaces_.find(ifaceName) == active_usd_ifaces_.end()) {
+ if (active_sta_ifaces_.find(ifaceName) == active_sta_ifaces_.end()) {
wpa_printf(MSG_ERROR, "Interface %s does not exist", ifaceName.c_str());
return createStatus(SupplicantStatusCode::FAILURE_IFACE_UNKNOWN);
}
@@ -74,7 +81,7 @@
}
wpa_printf(MSG_INFO, "Interface %s was removed successfully", ifaceName.c_str());
- active_usd_ifaces_.erase(ifaceName);
+ active_sta_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 38a355f..fea7c73 100644
--- a/wpa_supplicant/aidl/mainline/mainline_supplicant.h
+++ b/wpa_supplicant/aidl/mainline/mainline_supplicant.h
@@ -9,9 +9,12 @@
#ifndef MAINLINE_SUPPLICANT_IMPL_H
#define MAINLINE_SUPPLICANT_IMPL_H
-#include <set>
+#include <map>
+
+#include "sta_iface.h"
#include <aidl/android/system/wifi/mainline_supplicant/BnMainlineSupplicant.h>
+#include <aidl/android/system/wifi/mainline_supplicant/IStaInterface.h>
#include <aidl/android/system/wifi/mainline_supplicant/SupplicantStatusCode.h>
extern "C"
@@ -24,20 +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::SupplicantStatusCode;
class MainlineSupplicant : public BnMainlineSupplicant {
public:
MainlineSupplicant(struct wpa_global* global);
- ndk::ScopedAStatus addUsdInterface(const std::string& ifaceName);
- ndk::ScopedAStatus removeUsdInterface(const std::string& ifaceName);
+ ndk::ScopedAStatus addStaInterface(const std::string& ifaceName,
+ std::shared_ptr<IStaInterface>* _aidl_return);
+ ndk::ScopedAStatus removeStaInterface(const std::string& ifaceName);
ndk::ScopedAStatus terminate();
private:
// Raw pointer to the global structure maintained by the core
struct wpa_global* wpa_global_;
- // Names of all active USD interfaces
- std::set<std::string> active_usd_ifaces_;
+ // Map containing all active STA interfaces, mapped by iface name -> object
+ std::map<std::string, std::shared_ptr<IStaInterface>> active_sta_ifaces_;
};
#endif // MAINLINE_SUPPLICANT_IMPL_H
diff --git a/wpa_supplicant/aidl/mainline/sta_iface.cpp b/wpa_supplicant/aidl/mainline/sta_iface.cpp
new file mode 100644
index 0000000..6104033
--- /dev/null
+++ b/wpa_supplicant/aidl/mainline/sta_iface.cpp
@@ -0,0 +1,48 @@
+/*
+ * 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 UsdPublishConfig& in_publishConfig) {
+ return ndk::ScopedAStatus::ok();
+}
+
+::ndk::ScopedAStatus StaIface::startUsdSubscribe(int32_t in_cmdId,
+ const UsdSubscribeConfig& in_subscribeConfig) {
+ 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/sta_iface.h b/wpa_supplicant/aidl/mainline/sta_iface.h
new file mode 100644
index 0000000..213eacf
--- /dev/null
+++ b/wpa_supplicant/aidl/mainline/sta_iface.h
@@ -0,0 +1,40 @@
+/*
+ * 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.
+ */
+
+#ifndef MAINLINE_SUPPLICANT_STA_IFACE_H
+#define MAINLINE_SUPPLICANT_STA_IFACE_H
+
+#include <aidl/android/system/wifi/mainline_supplicant/BnStaInterface.h>
+#include <aidl/android/system/wifi/mainline_supplicant/IStaInterfaceCallback.h>
+
+using ::aidl::android::system::wifi::mainline_supplicant::BnStaInterface;
+using ::aidl::android::system::wifi::mainline_supplicant::IStaInterfaceCallback;
+using ::aidl::android::system::wifi::mainline_supplicant::UsdMessageInfo;
+
+class StaIface : public BnStaInterface {
+ public:
+ StaIface(struct wpa_global* wpa_global, std::string iface_name);
+ ::ndk::ScopedAStatus registerCallback(
+ const std::shared_ptr<IStaInterfaceCallback>& in_callback) override;
+ ::ndk::ScopedAStatus getUsdCapabilities(UsdCapabilities* _aidl_return) override;
+ ::ndk::ScopedAStatus startUsdPublish(int32_t in_cmdId,
+ const UsdPublishConfig& in_publishConfig) override;
+ ::ndk::ScopedAStatus startUsdSubscribe(int32_t in_cmdId,
+ const UsdSubscribeConfig& in_subscribeConfig) override;
+ ::ndk::ScopedAStatus updateUsdPublish(int32_t in_publishId,
+ const std::vector<uint8_t>& in_serviceSpecificInfo) override;
+ ::ndk::ScopedAStatus cancelUsdPublish(int32_t in_publishId) override;
+ ::ndk::ScopedAStatus cancelUsdSubscribe(int32_t in_subscribeId) override;
+ ::ndk::ScopedAStatus sendUsdMessage(const UsdMessageInfo& in_messageInfo) override;
+
+ private:
+ wpa_global* wpa_global_;
+ std::string iface_name_;
+};
+
+#endif // MAINLINE_SUPPLICANT_STA_IFACE_H
diff --git a/wpa_supplicant/aidl/mainline/usd_iface.cpp b/wpa_supplicant/aidl/mainline/usd_iface.cpp
deleted file mode 100644
index b514f77..0000000
--- a/wpa_supplicant/aidl/mainline/usd_iface.cpp
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * 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/usd_iface.h b/wpa_supplicant/aidl/mainline/usd_iface.h
deleted file mode 100644
index 32b86cc..0000000
--- a/wpa_supplicant/aidl/mainline/usd_iface.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * 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_USD_IFACE_H
-#define MAINLINE_SUPPLICANT_USD_IFACE_H
-
-#include <aidl/android/system/wifi/mainline_supplicant/BnUsdInterface.h>
-
-using ::aidl::android::system::wifi::mainline_supplicant::BnUsdInterface;
-using ::aidl::android::system::wifi::mainline_supplicant::UsdMessageInfo;
-
-class UsdIface : public BnUsdInterface {
- public:
- 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;
- ::ndk::ScopedAStatus startUsdSubscribe(int32_t in_cmdId,
- const SubscribeConfig& in_usdSubscribeConfig) override;
- ::ndk::ScopedAStatus updateUsdPublish(int32_t in_publishId,
- const std::vector<uint8_t>& in_serviceSpecificInfo) override;
- ::ndk::ScopedAStatus cancelUsdPublish(int32_t in_publishId) override;
- ::ndk::ScopedAStatus cancelUsdSubscribe(int32_t in_subscribeId) override;
- ::ndk::ScopedAStatus sendUsdMessage(const UsdMessageInfo& in_messageInfo) override;
-
- private:
- wpa_global* wpa_global_;
- std::string iface_name_;
-};
-
-#endif // MAINLINE_SUPPLICANT_USD_IFACE_H
diff --git a/wpa_supplicant/aidl/vendor/aidl_manager.cpp b/wpa_supplicant/aidl/vendor/aidl_manager.cpp
index 60ce800..24e5a56 100644
--- a/wpa_supplicant/aidl/vendor/aidl_manager.cpp
+++ b/wpa_supplicant/aidl/vendor/aidl_manager.cpp
@@ -1866,7 +1866,11 @@
return;
}
- aidl_dpp_config_data.password = misc_utils::charBufToString(config->passphrase);
+ if (aidl_dpp_config_data.securityAkm == DppAkm::SAE)
+ aidl_dpp_config_data.password = misc_utils::charBufToString(config->sae_password);
+ else
+ aidl_dpp_config_data.password = misc_utils::charBufToString(config->passphrase);
+
aidl_dpp_config_data.psk = byteArrToVec(config->psk, 32);
std::vector<uint8_t> aidl_ssid(
config->ssid,
diff --git a/wpa_supplicant/aidl/vendor/sta_iface.cpp b/wpa_supplicant/aidl/vendor/sta_iface.cpp
index fe6738c..f6868d0 100644
--- a/wpa_supplicant/aidl/vendor/sta_iface.cpp
+++ b/wpa_supplicant/aidl/vendor/sta_iface.cpp
@@ -23,6 +23,7 @@
#include "dpp_supplicant.h"
#include "rsn_supp/wpa.h"
#include "rsn_supp/pmksa_cache.h"
+#include "src/common/nan_de.h"
}
namespace {
@@ -64,13 +65,23 @@
static_cast<uint32_t>(ISupplicant::EXT_RADIO_WORK_TIMEOUT_IN_SECS);
constexpr char kExtRadioWorkNamePrefix[] = "ext:";
-constexpr bool kIsUsdPublisherSupported = false;
-constexpr bool kIsUsdSubscriberSupported = false;
+#ifdef CONFIG_NAN_USD
+constexpr bool kIsUsdPublisherSupported = true;
+constexpr bool kIsUsdSubscriberSupported = true;
constexpr int32_t kMaxUsdLocalSsiLengthBytes = 1400;
constexpr int32_t kMaxUsdServiceNameLengthBytes = 255;
-constexpr int32_t kMaxUsdMatchFilterLengthBytes = 255;
-constexpr int32_t kMaxNumUsdPublishSessions = 1;
-constexpr int32_t kMaxNumUsdSubscribeSessions = 1;
+constexpr int32_t kMaxUsdMatchFilterLengthBytes = 0;
+constexpr int32_t kMaxNumUsdPublishSessions = NAN_DE_MAX_SERVICE;
+constexpr int32_t kMaxNumUsdSubscribeSessions = NAN_DE_MAX_SERVICE;
+#else
+constexpr bool kIsUsdPublisherSupported = false;
+constexpr bool kIsUsdSubscriberSupported = false;
+constexpr int32_t kMaxUsdLocalSsiLengthBytes = 0;
+constexpr int32_t kMaxUsdServiceNameLengthBytes = 0;
+constexpr int32_t kMaxUsdMatchFilterLengthBytes = 0;
+constexpr int32_t kMaxNumUsdPublishSessions = 0;
+constexpr int32_t kMaxNumUsdSubscribeSessions = 0;
+#endif
uint8_t convertAidlRxFilterTypeToInternal(
RxFilterType type)