summaryrefslogtreecommitdiff
path: root/wifi/1.4/default/wifi_chip.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'wifi/1.4/default/wifi_chip.cpp')
-rw-r--r--wifi/1.4/default/wifi_chip.cpp15
1 files changed, 15 insertions, 0 deletions
diff --git a/wifi/1.4/default/wifi_chip.cpp b/wifi/1.4/default/wifi_chip.cpp
index 2fa0cb833c..b667b664e0 100644
--- a/wifi/1.4/default/wifi_chip.cpp
+++ b/wifi/1.4/default/wifi_chip.cpp
@@ -102,6 +102,16 @@ std::string getWlanIfaceName(unsigned idx) {
return "wlan" + std::to_string(idx);
}
+// Returns the dedicated iface name if one is defined.
+std::string getApIfaceName() {
+ std::array<char, PROPERTY_VALUE_MAX> buffer;
+ if (property_get("ro.vendor.wifi.sap.interface", buffer.data(), nullptr) ==
+ 0) {
+ return {};
+ }
+ return buffer.data();
+}
+
std::string getP2pIfaceName() {
std::array<char, PROPERTY_VALUE_MAX> buffer;
property_get("wifi.direct.interface", buffer.data(), "p2p0");
@@ -1623,6 +1633,11 @@ std::string WifiChip::allocateApOrStaIfaceName(uint32_t start_idx) {
// AP iface names start with idx 1 for modes supporting
// concurrent STA, else start with idx 0.
std::string WifiChip::allocateApIfaceName() {
+ // Check if we have a dedicated iface for AP.
+ std::string ifname = getApIfaceName();
+ if (!ifname.empty()) {
+ return ifname;
+ }
return allocateApOrStaIfaceName(
isStaApConcurrencyAllowedInCurrentMode() ? 1 : 0);
}