Wifi: Optionally avoid interface down/up when doing setMacAddress
Some vendors implementation will reset wifi chip when doing interface
down.
Accordingly, We need to avoid the interface down/up when doing
setMacAddress to avoid loss of sync between framework and firmware.
This commit uses a BOARD_WIFI_AVOID_IFACE_RESET_MAC_CHANGE macro to
check if it is needed to avoid interface down/up at setMacAddress.
Bug: 153771961
Test: VTS Test
Test: atest VtsHalWifiV1_2TargetTest
Change-Id: I971764f1c272ebfd245959974fa0d1b10ba7c39b
diff --git a/wifi/1.4/default/wifi_iface_util.cpp b/wifi/1.4/default/wifi_iface_util.cpp
index 036c97b..13ba022 100644
--- a/wifi/1.4/default/wifi_iface_util.cpp
+++ b/wifi/1.4/default/wifi_iface_util.cpp
@@ -52,18 +52,22 @@
bool WifiIfaceUtil::setMacAddress(const std::string& iface_name,
const std::array<uint8_t, 6>& mac) {
+#ifndef WIFI_AVOID_IFACE_RESET_MAC_CHANGE
if (!iface_tool_.lock()->SetUpState(iface_name.c_str(), false)) {
LOG(ERROR) << "SetUpState(false) failed.";
return false;
}
+#endif
if (!iface_tool_.lock()->SetMacAddress(iface_name.c_str(), mac)) {
LOG(ERROR) << "SetMacAddress failed.";
return false;
}
+#ifndef WIFI_AVOID_IFACE_RESET_MAC_CHANGE
if (!iface_tool_.lock()->SetUpState(iface_name.c_str(), true)) {
LOG(ERROR) << "SetUpState(true) failed.";
return false;
}
+#endif
IfaceEventHandlers event_handlers = {};
const auto it = event_handlers_map_.find(iface_name);
if (it != event_handlers_map_.end()) {