mirror of
https://github.com/Evolution-X/hardware_interfaces
synced 2026-02-01 22:04:26 +00:00
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
This commit is contained in:
@@ -36,6 +36,9 @@ endif
|
||||
ifdef WIFI_HIDL_FEATURE_DISABLE_AP_MAC_RANDOMIZATION
|
||||
LOCAL_CPPFLAGS += -DWIFI_HIDL_FEATURE_DISABLE_AP_MAC_RANDOMIZATION
|
||||
endif
|
||||
ifdef WIFI_AVOID_IFACE_RESET_MAC_CHANGE
|
||||
LOCAL_CPPFLAGS += -DWIFI_AVOID_IFACE_RESET_MAC_CHANGE
|
||||
endif
|
||||
# Allow implicit fallthroughs in wifi_legacy_hal.cpp until they are fixed.
|
||||
LOCAL_CFLAGS += -Wno-error=implicit-fallthrough
|
||||
LOCAL_SRC_FILES := \
|
||||
|
||||
@@ -52,18 +52,22 @@ std::array<uint8_t, 6> WifiIfaceUtil::getFactoryMacAddress(
|
||||
|
||||
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()) {
|
||||
|
||||
Reference in New Issue
Block a user