mirror of
https://github.com/Evolution-X/hardware_interfaces
synced 2026-02-01 11:36:00 +00:00
Add config to skip state toggle off/on for Wi-Fi NAN
If STA and NAN share the same iface wlan0, Wi-Fi vendor HAL service sends eventDisabled to NAN framework when STA setMacAddress to wlan0. This disables NAN when STA is turned on. Since NAN always uses its own random MAC instead of using MAC of STA, this action is not necessary and gets NAN kicked off for no benefits. We add a build time configuration to optionally disable this behavior. Bug: 273426515 Test: manually test Change-Id: Ifc71b7e8d09eac1b66b9e18c70e0e6d202683ff6
This commit is contained in:
@@ -26,6 +26,7 @@ soong_config_module_type {
|
||||
"hidl_feature_disable_ap", // WIFI_HIDL_FEATURE_DISABLE_AP
|
||||
"hidl_feature_disable_ap_mac_randomization", // WIFI_HIDL_FEATURE_DISABLE_AP_MAC_RANDOMIZATION
|
||||
"avoid_iface_reset_mac_change", // WIFI_AVOID_IFACE_RESET_MAC_CHANGE
|
||||
"wifi_skip_state_toggle_off_on_for_nan", // WIFI_SKIP_STATE_TOGGLE_OFF_ON_FOR_NAN
|
||||
],
|
||||
value_variables: [
|
||||
"hal_interface_combinations", // WIFI_HAL_INTERFACE_COMBINATIONS
|
||||
@@ -53,6 +54,9 @@ wifi_hal_cc_defaults {
|
||||
avoid_iface_reset_mac_change: {
|
||||
cppflags: ["-DWIFI_AVOID_IFACE_RESET_MAC_CHANGE"],
|
||||
},
|
||||
wifi_skip_state_toggle_off_on_for_nan: {
|
||||
cppflags: ["-DWIFI_SKIP_STATE_TOGGLE_OFF_ON_FOR_NAN"],
|
||||
},
|
||||
hal_interface_combinations: {
|
||||
cppflags: ["-DWIFI_HAL_INTERFACE_COMBINATIONS=%s"],
|
||||
},
|
||||
|
||||
@@ -453,6 +453,7 @@ WifiNanIface::WifiNanIface(const std::string& ifname, bool is_dedicated_iface,
|
||||
|
||||
// Register for iface state toggle events.
|
||||
iface_util::IfaceEventHandlers event_handlers = {};
|
||||
#ifndef WIFI_SKIP_STATE_TOGGLE_OFF_ON_FOR_NAN
|
||||
event_handlers.on_state_toggle_off_on = [weak_ptr_this](const std::string& /* iface_name */) {
|
||||
const auto shared_ptr_this = weak_ptr_this.promote();
|
||||
if (!shared_ptr_this.get() || !shared_ptr_this->isValid()) {
|
||||
@@ -467,6 +468,7 @@ WifiNanIface::WifiNanIface(const std::string& ifname, bool is_dedicated_iface,
|
||||
}
|
||||
}
|
||||
};
|
||||
#endif
|
||||
iface_util_.lock()->registerIfaceEventHandlers(ifname_, event_handlers);
|
||||
}
|
||||
|
||||
|
||||
@@ -26,6 +26,7 @@ soong_config_module_type {
|
||||
"hidl_feature_disable_ap", // WIFI_HIDL_FEATURE_DISABLE_AP
|
||||
"hidl_feature_disable_ap_mac_randomization", // WIFI_HIDL_FEATURE_DISABLE_AP_MAC_RANDOMIZATION
|
||||
"avoid_iface_reset_mac_change", // WIFI_AVOID_IFACE_RESET_MAC_CHANGE
|
||||
"wifi_skip_state_toggle_off_on_for_nan", // WIFI_SKIP_STATE_TOGGLE_OFF_ON_FOR_NAN
|
||||
],
|
||||
value_variables: [
|
||||
"hal_interface_combinations", // WIFI_HAL_INTERFACE_COMBINATIONS
|
||||
@@ -53,6 +54,9 @@ wifi_hal_cc_defaults {
|
||||
avoid_iface_reset_mac_change: {
|
||||
cppflags: ["-DWIFI_AVOID_IFACE_RESET_MAC_CHANGE"],
|
||||
},
|
||||
wifi_skip_state_toggle_off_on_for_nan: {
|
||||
cppflags: ["-DWIFI_SKIP_STATE_TOGGLE_OFF_ON_FOR_NAN"],
|
||||
},
|
||||
hal_interface_combinations: {
|
||||
cppflags: ["-DWIFI_HAL_INTERFACE_COMBINATIONS=%s"],
|
||||
},
|
||||
|
||||
@@ -623,6 +623,7 @@ void WifiNanIface::registerCallbackHandlers() {
|
||||
|
||||
// Register for iface state toggle events.
|
||||
iface_util::IfaceEventHandlers event_handlers = {};
|
||||
#ifndef WIFI_SKIP_STATE_TOGGLE_OFF_ON_FOR_NAN
|
||||
event_handlers.on_state_toggle_off_on = [weak_ptr_this](const std::string& /* iface_name */) {
|
||||
const auto shared_ptr_this = weak_ptr_this.lock();
|
||||
if (!shared_ptr_this.get() || !shared_ptr_this->isValid()) {
|
||||
@@ -637,6 +638,7 @@ void WifiNanIface::registerCallbackHandlers() {
|
||||
}
|
||||
}
|
||||
};
|
||||
#endif
|
||||
iface_util_.lock()->registerIfaceEventHandlers(ifname_, event_handlers);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user