mirror of
https://github.com/Evolution-X/hardware_interfaces
synced 2026-02-01 16:50:18 +00:00
Merge changes from topic "MLO Scoring"
* changes: wifi: Legacy HAL support to get concurrent TDLS session count wifi: AIDL support to get concurrent TDLS session count wifi: Add getWifiChipCapabilities() in shim layer wifi: Add AIDL support for getWifiChipCapabilities()
This commit is contained in:
@@ -59,6 +59,7 @@ interface IWifiChip {
|
||||
@PropagateAllowBlocking android.hardware.wifi.IWifiStaIface getStaIface(in String ifname);
|
||||
String[] getStaIfaceNames();
|
||||
android.hardware.wifi.WifiRadioCombinationMatrix getSupportedRadioCombinationsMatrix();
|
||||
android.hardware.wifi.WifiChipCapabilities getWifiChipCapabilities();
|
||||
android.hardware.wifi.WifiUsableChannel[] getUsableChannels(in android.hardware.wifi.WifiBand band, in android.hardware.wifi.WifiIfaceMode ifaceModeMask, in android.hardware.wifi.IWifiChip.UsableChannelFilter filterMask);
|
||||
void registerEventCallback(in android.hardware.wifi.IWifiChipEventCallback callback);
|
||||
void removeApIface(in String ifname);
|
||||
|
||||
@@ -0,0 +1,39 @@
|
||||
/*
|
||||
* Copyright (C) 2022 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 IS IMMUTABLE. DO NOT EDIT IN ANY CASE. //
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// This file is a snapshot of an AIDL file. Do not edit it manually. There are
|
||||
// two cases:
|
||||
// 1). this is a frozen version file - do not edit this in any case.
|
||||
// 2). this is a 'current' file. If you make a backwards compatible change to
|
||||
// the interface (from the latest frozen version), the build system will
|
||||
// prompt you to update this file with `m <name>-update-api`.
|
||||
//
|
||||
// You must not make a backward incompatible change to any AIDL file built
|
||||
// with the aidl_interface module type with versions property set. The module
|
||||
// type is used to build AIDL files in a way that they can be used across
|
||||
// independently updatable components of the system. If a device is shipped
|
||||
// with such a backward incompatible change, it has a high risk of breaking
|
||||
// later when a module using the interface is updated, e.g., Mainline modules.
|
||||
|
||||
package android.hardware.wifi;
|
||||
@VintfStability
|
||||
parcelable WifiChipCapabilities {
|
||||
int maxMloLinkCount;
|
||||
int maxConcurrentTdlsSessionCount;
|
||||
}
|
||||
@@ -25,6 +25,7 @@ import android.hardware.wifi.IWifiStaIface;
|
||||
import android.hardware.wifi.IfaceConcurrencyType;
|
||||
import android.hardware.wifi.IfaceType;
|
||||
import android.hardware.wifi.WifiBand;
|
||||
import android.hardware.wifi.WifiChipCapabilities;
|
||||
import android.hardware.wifi.WifiDebugHostWakeReasonStats;
|
||||
import android.hardware.wifi.WifiDebugRingBufferStatus;
|
||||
import android.hardware.wifi.WifiDebugRingBufferVerboseLevel;
|
||||
@@ -784,6 +785,18 @@ interface IWifiChip {
|
||||
*/
|
||||
WifiRadioCombinationMatrix getSupportedRadioCombinationsMatrix();
|
||||
|
||||
/**
|
||||
* Get capabilities supported by this chip.
|
||||
*
|
||||
* @return Chip capabilities represented by |WifiChipCapabilities|.
|
||||
* @throws ServiceSpecificException with one of the following values:
|
||||
* |WifiStatusCode.ERROR_WIFI_CHIP_INVALID|,
|
||||
* |WifiStatusCode.ERROR_NOT_SUPPORTED|,
|
||||
* |WifiStatusCode.FAILURE_UNKNOWN|
|
||||
*
|
||||
*/
|
||||
WifiChipCapabilities getWifiChipCapabilities();
|
||||
|
||||
/**
|
||||
* Retrieve a list of usable Wifi channels for the specified band &
|
||||
* operational modes.
|
||||
|
||||
37
wifi/aidl/android/hardware/wifi/WifiChipCapabilities.aidl
Normal file
37
wifi/aidl/android/hardware/wifi/WifiChipCapabilities.aidl
Normal file
@@ -0,0 +1,37 @@
|
||||
/*
|
||||
* Copyright (C) 2022 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.
|
||||
*/
|
||||
|
||||
package android.hardware.wifi;
|
||||
|
||||
/**
|
||||
* WifiChipCapabilities captures various Wifi chip capability params.
|
||||
*/
|
||||
@VintfStability
|
||||
parcelable WifiChipCapabilities {
|
||||
/**
|
||||
* Maximum number of links used in Multi-Link Operation. The maximum
|
||||
* number of links used for MLO can be different from the number of
|
||||
* radios supported by the chip.
|
||||
*
|
||||
* This is a static configuration of the chip.
|
||||
*/
|
||||
int maxMloLinkCount;
|
||||
/**
|
||||
* Maximum number of concurrent TDLS sessions that can be enabled
|
||||
* by framework via ISupplicantStaIface#initiateTdlsSetup().
|
||||
*/
|
||||
int maxConcurrentTdlsSessionCount;
|
||||
}
|
||||
@@ -2768,6 +2768,15 @@ bool convertLegacyRadioCombinationsMatrixToAidl(
|
||||
return true;
|
||||
}
|
||||
|
||||
bool convertLegacyWifiChipCapabilitiesToAidl(
|
||||
const legacy_hal::wifi_chip_capabilities& legacy_chip_capabilities,
|
||||
WifiChipCapabilities& aidl_chip_capabilities) {
|
||||
aidl_chip_capabilities.maxMloLinkCount = legacy_chip_capabilities.max_mlo_link_count;
|
||||
aidl_chip_capabilities.maxConcurrentTdlsSessionCount =
|
||||
legacy_chip_capabilities.max_concurrent_tdls_session_count;
|
||||
return true;
|
||||
}
|
||||
|
||||
} // namespace aidl_struct_util
|
||||
} // namespace wifi
|
||||
} // namespace hardware
|
||||
|
||||
@@ -171,6 +171,9 @@ bool convertLegacyPeerInfoStatsToAidl(const legacy_hal::WifiPeerInfo& legacy_pee
|
||||
StaPeerInfo* aidl_peer_info_stats);
|
||||
bool convertLegacyWifiRateInfoToAidl(const legacy_hal::wifi_rate& legacy_rate,
|
||||
WifiRateInfo* aidl_rate);
|
||||
bool convertLegacyWifiChipCapabilitiesToAidl(
|
||||
const legacy_hal::wifi_chip_capabilities& legacy_chip_capabilities,
|
||||
WifiChipCapabilities& aidl_chip_capabilities);
|
||||
} // namespace aidl_struct_util
|
||||
} // namespace wifi
|
||||
} // namespace hardware
|
||||
|
||||
@@ -680,6 +680,11 @@ ndk::ScopedAStatus WifiChip::getSupportedRadioCombinationsMatrix(
|
||||
&WifiChip::getSupportedRadioCombinationsMatrixInternal, _aidl_return);
|
||||
}
|
||||
|
||||
ndk::ScopedAStatus WifiChip::getWifiChipCapabilities(WifiChipCapabilities* _aidl_return) {
|
||||
return validateAndCall(this, WifiStatusCode::ERROR_WIFI_CHIP_INVALID,
|
||||
&WifiChip::getWifiChipCapabilitiesInternal, _aidl_return);
|
||||
}
|
||||
|
||||
void WifiChip::invalidateAndRemoveAllIfaces() {
|
||||
invalidateAndClearBridgedApAll();
|
||||
invalidateAndClearAll(ap_ifaces_);
|
||||
@@ -1403,6 +1408,26 @@ WifiChip::getSupportedRadioCombinationsMatrixInternal() {
|
||||
return {aidl_matrix, ndk::ScopedAStatus::ok()};
|
||||
}
|
||||
|
||||
std::pair<WifiChipCapabilities, ndk::ScopedAStatus> WifiChip::getWifiChipCapabilitiesInternal() {
|
||||
legacy_hal::wifi_error legacy_status;
|
||||
legacy_hal::wifi_chip_capabilities legacy_chip_capabilities;
|
||||
std::tie(legacy_status, legacy_chip_capabilities) =
|
||||
legacy_hal_.lock()->getWifiChipCapabilities();
|
||||
if (legacy_status != legacy_hal::WIFI_SUCCESS) {
|
||||
LOG(ERROR) << "Failed to get chip capabilities from legacy HAL: "
|
||||
<< legacyErrorToString(legacy_status);
|
||||
return {WifiChipCapabilities(), createWifiStatusFromLegacyError(legacy_status)};
|
||||
}
|
||||
WifiChipCapabilities aidl_chip_capabilities;
|
||||
if (!aidl_struct_util::convertLegacyWifiChipCapabilitiesToAidl(legacy_chip_capabilities,
|
||||
aidl_chip_capabilities)) {
|
||||
LOG(ERROR) << "Failed convertLegacyWifiChipCapabilitiesToAidl() ";
|
||||
return {WifiChipCapabilities(), createWifiStatus(WifiStatusCode::ERROR_INVALID_ARGS)};
|
||||
}
|
||||
|
||||
return {aidl_chip_capabilities, ndk::ScopedAStatus::ok()};
|
||||
}
|
||||
|
||||
ndk::ScopedAStatus WifiChip::triggerSubsystemRestartInternal() {
|
||||
auto legacy_status = legacy_hal_.lock()->triggerSubsystemRestart();
|
||||
return createWifiStatusFromLegacyError(legacy_status);
|
||||
|
||||
@@ -144,6 +144,7 @@ class WifiChip : public BnWifiChip {
|
||||
ndk::ScopedAStatus triggerSubsystemRestart() override;
|
||||
ndk::ScopedAStatus getSupportedRadioCombinationsMatrix(
|
||||
WifiRadioCombinationMatrix* _aidl_return) override;
|
||||
ndk::ScopedAStatus getWifiChipCapabilities(WifiChipCapabilities* _aidl_return) override;
|
||||
binder_status_t dump(int fd, const char** args, uint32_t numArgs) override;
|
||||
|
||||
private:
|
||||
@@ -250,6 +251,7 @@ class WifiChip : public BnWifiChip {
|
||||
ndk::ScopedAStatus triggerSubsystemRestartInternal();
|
||||
std::pair<WifiRadioCombinationMatrix, ndk::ScopedAStatus>
|
||||
getSupportedRadioCombinationsMatrixInternal();
|
||||
std::pair<WifiChipCapabilities, ndk::ScopedAStatus> getWifiChipCapabilitiesInternal();
|
||||
void setWeakPtr(std::weak_ptr<WifiChip> ptr);
|
||||
|
||||
int32_t chip_id_;
|
||||
|
||||
@@ -1609,6 +1609,13 @@ wifi_error WifiLegacyHal::getWifiCachedScanResults(
|
||||
return status;
|
||||
}
|
||||
|
||||
std::pair<wifi_error, wifi_chip_capabilities> WifiLegacyHal::getWifiChipCapabilities() {
|
||||
wifi_chip_capabilities chip_capabilities;
|
||||
wifi_error status =
|
||||
global_func_table_.wifi_get_chip_capabilities(global_handle_, &chip_capabilities);
|
||||
return {status, chip_capabilities};
|
||||
}
|
||||
|
||||
void WifiLegacyHal::invalidate() {
|
||||
global_handle_ = nullptr;
|
||||
iface_name_to_handle_.clear();
|
||||
|
||||
@@ -232,6 +232,7 @@ using ::WIFI_CHAN_WIDTH_INVALID;
|
||||
using ::wifi_channel_info;
|
||||
using ::wifi_channel_stat;
|
||||
using ::wifi_channel_width;
|
||||
using ::wifi_chip_capabilities;
|
||||
using ::wifi_coex_restriction;
|
||||
using ::wifi_coex_unsafe_channel;
|
||||
using ::WIFI_DUAL_STA_NON_TRANSIENT_UNBIASED;
|
||||
@@ -693,6 +694,7 @@ class WifiLegacyHal {
|
||||
wifi_error enableWifiTxPowerLimits(const std::string& iface_name, bool enable);
|
||||
wifi_error getWifiCachedScanResults(const std::string& iface_name,
|
||||
const CachedScanResultsCallbackHandlers& handler);
|
||||
std::pair<wifi_error, wifi_chip_capabilities> getWifiChipCapabilities();
|
||||
|
||||
private:
|
||||
// Retrieve interface handles for all the available interfaces.
|
||||
|
||||
@@ -167,6 +167,7 @@ bool initHalFuncTableWithStubs(wifi_hal_fn* hal_fn) {
|
||||
populateStubFor(&hal_fn->wifi_chre_register_handler);
|
||||
populateStubFor(&hal_fn->wifi_enable_tx_power_limits);
|
||||
populateStubFor(&hal_fn->wifi_get_cached_scan_results);
|
||||
populateStubFor(&hal_fn->wifi_get_chip_capabilities);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user