summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAhmed ElArabawy <arabawy@google.com>2019-12-09 16:20:49 -0800
committerAhmed ElArabawy <arabawy@google.com>2019-12-12 16:32:57 -0800
commit6921b854a62b2959a4b03088091e7c84641dabb0 (patch)
tree84b4b69cf3cc73106150bd67d9311b017110f7fa
parent6365f9620376f5541ee7f67b025b9f09ae9d02d4 (diff)
Wifi: Replace dual_band with 5GHz band support
As part of the support of the 6GHz band, the concept of dual-band is no longer valid since we have more than 2 bands supported by Android and can be checked on the device. This commit replaces checks on dual-band support with an explicit check on 5GHz band support. This commit also reads the device support for 5GHz/6GHz bands through the overlay configs, and removes the logic for reading it from the vendor HAL. Bug: 145936758 Bug: 139354972 Test: Manual Change-Id: I9f0ad7c5ab57107c71b13f857994e874a34d9bdf
-rw-r--r--RROOverlaySampleApp/res/values/config.xml2
-rw-r--r--service/java/com/android/server/wifi/WifiServiceImpl.java28
-rw-r--r--service/java/com/android/server/wifi/WifiVendorHal.java35
-rw-r--r--service/res/values/config.xml10
-rw-r--r--service/res/values/overlayable.xml3
-rw-r--r--tests/wifitests/src/com/android/server/wifi/WifiServiceImplTest.java6
-rw-r--r--tests/wifitests/src/com/android/server/wifi/WifiVendorHalTest.java80
7 files changed, 34 insertions, 130 deletions
diff --git a/RROOverlaySampleApp/res/values/config.xml b/RROOverlaySampleApp/res/values/config.xml
index cf6ab948d..08b0430a8 100644
--- a/RROOverlaySampleApp/res/values/config.xml
+++ b/RROOverlaySampleApp/res/values/config.xml
@@ -18,6 +18,6 @@
-->
<!-- Overrides the default value of the specified config values when this sample app is installed -->
<resources>
- <bool translatable="false" name="config_wifi_dual_band_support">true</bool>
+ <bool translatable="false" name="config_wifi5ghzSupport">true</bool>
<bool translatable="false" name="config_wifi_connected_mac_randomization_supported">true</bool>
</resources>
diff --git a/service/java/com/android/server/wifi/WifiServiceImpl.java b/service/java/com/android/server/wifi/WifiServiceImpl.java
index 43a200686..458f6d1ca 100644
--- a/service/java/com/android/server/wifi/WifiServiceImpl.java
+++ b/service/java/com/android/server/wifi/WifiServiceImpl.java
@@ -26,7 +26,6 @@ import static android.net.wifi.WifiManager.WIFI_AP_STATE_DISABLING;
import static android.net.wifi.WifiManager.WIFI_AP_STATE_ENABLED;
import static android.net.wifi.WifiManager.WIFI_AP_STATE_ENABLING;
import static android.net.wifi.WifiManager.WIFI_AP_STATE_FAILED;
-import static android.net.wifi.WifiManager.WIFI_FEATURE_INFRA_5G;
import android.annotation.CheckResult;
import android.annotation.NonNull;
@@ -1186,7 +1185,7 @@ public class WifiServiceImpl extends BaseWifiService {
boolean is5Ghz = hasAutomotiveFeature(mContext)
&& mContext.getResources().getBoolean(
R.bool.config_wifi_local_only_hotspot_5ghz)
- && is5GhzSupported();
+ && is5GhzBandSupportedInternal();
int band = is5Ghz ? WifiConfiguration.AP_BAND_5GHZ
: WifiConfiguration.AP_BAND_2GHZ;
@@ -2390,14 +2389,25 @@ public class WifiServiceImpl extends BaseWifiService {
}
@Override
- public boolean isDualBandSupported() {
- //TODO (b/123227116): pull it from the HAL
+ public boolean is5GHzBandSupported() {
if (mVerboseLoggingEnabled) {
- mLog.info("isDualBandSupported uid=%").c(Binder.getCallingUid()).flush();
+ mLog.info("is5GHzBandSupported uid=%").c(Binder.getCallingUid()).flush();
}
- return mContext.getResources().getBoolean(
- R.bool.config_wifi_dual_band_support);
+ return is5GhzBandSupportedInternal();
+ }
+
+ private boolean is5GhzBandSupportedInternal() {
+ return mContext.getResources().getBoolean(R.bool.config_wifi5ghzSupport);
+ }
+
+ @Override
+ public boolean is6GHzBandSupported() {
+ if (mVerboseLoggingEnabled) {
+ mLog.info("is6GHzBandSupported uid=%").c(Binder.getCallingUid()).flush();
+ }
+
+ return mContext.getResources().getBoolean(R.bool.config_wifi6ghzSupport);
}
private int getMaxApInterfacesCount() {
@@ -3158,10 +3168,6 @@ public class WifiServiceImpl extends BaseWifiService {
mWifiTrafficPoller.removeCallback(callbackIdentifier));
}
- private boolean is5GhzSupported() {
- return (getSupportedFeaturesInternal() & WIFI_FEATURE_INFRA_5G) == WIFI_FEATURE_INFRA_5G;
- }
-
private long getSupportedFeaturesInternal() {
final AsyncChannel channel = mClientModeImplChannel;
if (channel != null) {
diff --git a/service/java/com/android/server/wifi/WifiVendorHal.java b/service/java/com/android/server/wifi/WifiVendorHal.java
index 97dded62f..c98121f17 100644
--- a/service/java/com/android/server/wifi/WifiVendorHal.java
+++ b/service/java/com/android/server/wifi/WifiVendorHal.java
@@ -1142,9 +1142,6 @@ public class WifiVendorHal {
* Translation table used by getSupportedFeatureSet for translating IWifiStaIface caps
*/
private static final long[][] sStaFeatureCapabilityTranslation = {
- {WifiManager.WIFI_FEATURE_INFRA_5G,
- IWifiStaIface.StaIfaceCapabilityMask.STA_5G
- },
{WifiManager.WIFI_FEATURE_PASSPOINT,
IWifiStaIface.StaIfaceCapabilityMask.HOTSPOT
},
@@ -1180,9 +1177,6 @@ public class WifiVendorHal {
},
{WifiManager.WIFI_FEATURE_SCAN_RAND,
IWifiStaIface.StaIfaceCapabilityMask.SCAN_RAND
- },
- {WifiManager.WIFI_FEATURE_INFRA_6G,
- android.hardware.wifi.V1_4.IWifiStaIface.StaIfaceCapabilityMask.STA_6G
}
};
@@ -1232,21 +1226,12 @@ public class WifiVendorHal {
});
}
- android.hardware.wifi.V1_4.IWifiStaIface ifaceV14 =
- getWifiStaIfaceForV1_4Mockable(ifaceName);
- if (ifaceV14 != null) {
- ifaceV14.getCapabilities_1_4((status, capabilities) -> {
+ IWifiStaIface iface = getStaIface(ifaceName);
+ if (iface != null) {
+ iface.getCapabilities((status, capabilities) -> {
if (!ok(status)) return;
feat.value |= wifiFeatureMaskFromStaCapabilities(capabilities);
});
- } else {
- IWifiStaIface iface = getStaIface(ifaceName);
- if (iface != null) {
- iface.getCapabilities((status, capabilities) -> {
- if (!ok(status)) return;
- feat.value |= wifiFeatureMaskFromStaCapabilities(capabilities);
- });
- }
}
}
featureSet = feat.value;
@@ -2356,20 +2341,6 @@ public class WifiVendorHal {
return android.hardware.wifi.V1_3.IWifiStaIface.castFrom(iface);
}
- /**
- * Method to mock out the V1_4 IWifiStaIface retrieval in unit tests.
- *
- * @param ifaceName Name of the interface
- * @return 1.4 IWifiStaIface object if the device is running the 1.4 wifi hal service, null
- * otherwise.
- */
- protected android.hardware.wifi.V1_4.IWifiStaIface getWifiStaIfaceForV1_4Mockable(
- @NonNull String ifaceName) {
- IWifiStaIface iface = getStaIface(ifaceName);
- if (iface == null) return null;
- return android.hardware.wifi.V1_4.IWifiStaIface.castFrom(iface);
- }
-
protected android.hardware.wifi.V1_4.IWifiApIface getWifiApIfaceForV1_4Mockable(
String ifaceName) {
IWifiApIface iface = getApIface(ifaceName);
diff --git a/service/res/values/config.xml b/service/res/values/config.xml
index b7f6a7022..b5354a1ab 100644
--- a/service/res/values/config.xml
+++ b/service/res/values/config.xml
@@ -21,8 +21,14 @@
entries do not follow the convention, but all new entries should. -->
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- Boolean indicating whether the wifi chipset has dual frequency band support -->
- <bool translatable="false" name="config_wifi_dual_band_support">false</bool>
+ <!-- boolean indicating whether the WiFi chipset has 5GHz band support.
+ Note: This config is replacing the config_wifi_dual_band_support
+ since more bands may now be supported (such as 6GHz), the naming dual_band
+ is no longer indicative, and a separate config now exists for each band -->
+ <bool translatable="false" name ="config_wifi5ghzSupport">false</bool>
+
+ <!-- boolean indicating whether the WiFi chipset has 6GHz band support -->
+ <bool translatable="false" name ="config_wifi6ghzSupport">false</bool>
<!-- Maximum number of concurrent WiFi interfaces in AP mode -->
<integer translatable="false" name="config_wifi_max_ap_interfaces">1</integer>
diff --git a/service/res/values/overlayable.xml b/service/res/values/overlayable.xml
index 450aa1711..16e987bb8 100644
--- a/service/res/values/overlayable.xml
+++ b/service/res/values/overlayable.xml
@@ -20,7 +20,8 @@
<policy type="product|system|vendor">
<!-- Params from config.xml that can be overlayed -->
- <item type="bool" name="config_wifi_dual_band_support" />
+ <item type="bool" name="config_wifi5ghzSupport" />
+ <item type="bool" name="config_wifi6ghzSupport" />
<item type="integer" name="config_wifi_max_ap_interfaces" />
<item type="bool" name="config_wifi_convert_apband_5ghz_to_any" />
<item type="bool" name="config_wifi_fast_bss_transition_enabled" />
diff --git a/tests/wifitests/src/com/android/server/wifi/WifiServiceImplTest.java b/tests/wifitests/src/com/android/server/wifi/WifiServiceImplTest.java
index 0273211c7..f3cf19fd6 100644
--- a/tests/wifitests/src/com/android/server/wifi/WifiServiceImplTest.java
+++ b/tests/wifitests/src/com/android/server/wifi/WifiServiceImplTest.java
@@ -32,7 +32,6 @@ import static android.net.wifi.WifiManager.WIFI_AP_STATE_DISABLED;
import static android.net.wifi.WifiManager.WIFI_AP_STATE_DISABLING;
import static android.net.wifi.WifiManager.WIFI_AP_STATE_ENABLED;
import static android.net.wifi.WifiManager.WIFI_AP_STATE_FAILED;
-import static android.net.wifi.WifiManager.WIFI_FEATURE_INFRA_5G;
import static android.net.wifi.WifiManager.WIFI_STATE_DISABLED;
import static com.android.server.wifi.LocalOnlyHotspotRequestInfo.HOTSPOT_NO_ERROR;
@@ -1864,9 +1863,10 @@ public class WifiServiceImplTest extends WifiBaseTest {
when(mResources.getBoolean(
eq(R.bool.config_wifi_local_only_hotspot_5ghz)))
.thenReturn(true);
+ when(mResources.getBoolean(
+ eq(R.bool.config_wifi5ghzSupport)))
+ .thenReturn(true);
when(mPackageManager.hasSystemFeature(PackageManager.FEATURE_AUTOMOTIVE)).thenReturn(true);
- when(mClientModeImpl.syncGetSupportedFeatures(any(AsyncChannel.class)))
- .thenReturn((long) WIFI_FEATURE_INFRA_5G);
verify(mAsyncChannel).connect(any(), mHandlerCaptor.capture(), any(Handler.class));
final Handler handler = mHandlerCaptor.getValue();
diff --git a/tests/wifitests/src/com/android/server/wifi/WifiVendorHalTest.java b/tests/wifitests/src/com/android/server/wifi/WifiVendorHalTest.java
index 3d290e450..74053519b 100644
--- a/tests/wifitests/src/com/android/server/wifi/WifiVendorHalTest.java
+++ b/tests/wifitests/src/com/android/server/wifi/WifiVendorHalTest.java
@@ -157,8 +157,6 @@ public class WifiVendorHalTest extends WifiBaseTest {
private android.hardware.wifi.V1_2.IWifiStaIface mIWifiStaIfaceV12;
@Mock
private android.hardware.wifi.V1_3.IWifiStaIface mIWifiStaIfaceV13;
- @Mock
- private android.hardware.wifi.V1_4.IWifiStaIface mIWifiStaIfaceV14;
private IWifiStaIfaceEventCallback mIWifiStaIfaceEventCallback;
private IWifiChipEventCallback mIWifiChipEventCallback;
private android.hardware.wifi.V1_2.IWifiChipEventCallback mIWifiChipEventCallbackV12;
@@ -208,12 +206,6 @@ public class WifiVendorHalTest extends WifiBaseTest {
String ifaceName) {
return null;
}
-
- @Override
- protected android.hardware.wifi.V1_4.IWifiStaIface getWifiStaIfaceForV1_4Mockable(
- String ifaceName) {
- return null;
- }
}
/**
@@ -256,12 +248,6 @@ public class WifiVendorHalTest extends WifiBaseTest {
String ifaceName) {
return null;
}
-
- @Override
- protected android.hardware.wifi.V1_4.IWifiStaIface getWifiStaIfaceForV1_4Mockable(
- String ifaceName) {
- return null;
- }
}
/**
@@ -304,12 +290,6 @@ public class WifiVendorHalTest extends WifiBaseTest {
String ifaceName) {
return mIWifiStaIfaceV13;
}
-
- @Override
- protected android.hardware.wifi.V1_4.IWifiStaIface getWifiStaIfaceForV1_4Mockable(
- String ifaceName) {
- return null;
- }
}
/**
@@ -352,12 +332,6 @@ public class WifiVendorHalTest extends WifiBaseTest {
String ifaceName) {
return mIWifiStaIfaceV13;
}
-
- @Override
- protected android.hardware.wifi.V1_4.IWifiStaIface getWifiStaIfaceForV1_4Mockable(
- String ifaceName) {
- return mIWifiStaIfaceV14;
- }
}
/**
@@ -914,60 +888,6 @@ public class WifiVendorHalTest extends WifiBaseTest {
assertEquals(expectedFeatureSet, mWifiVendorHal.getSupportedFeatureSet(TEST_IFACE_NAME));
}
- /**
- * Test get supported features on HAL V1_4.
- * Tests whether we coalesce information from different sources
- * (IWifiStaIface, IWifiChip and HalDeviceManager) into the bitmask of supported features
- * correctly.
- */
- @Test
- public void testGetSupportedFeaturesV1_4() throws Exception {
- mWifiVendorHal = new WifiVendorHalSpyV1_4(mHalDeviceManager, mHandler);
- assertTrue(mWifiVendorHal.startVendorHalSta());
-
- int staIfaceHidlCaps = (
- IWifiStaIface.StaIfaceCapabilityMask.BACKGROUND_SCAN
- | IWifiStaIface.StaIfaceCapabilityMask.LINK_LAYER_STATS
- | android.hardware.wifi.V1_4.IWifiStaIface.StaIfaceCapabilityMask.STA_6G
- );
- int chipHidlCaps =
- android.hardware.wifi.V1_1.IWifiChip.ChipCapabilityMask.SET_TX_POWER_LIMIT;
- Set<Integer> halDeviceManagerSupportedIfaces = new HashSet<Integer>() {{
- add(IfaceType.STA);
- add(IfaceType.P2P);
- }};
- long expectedFeatureSet = (
- WifiManager.WIFI_FEATURE_SCANNER
- | WifiManager.WIFI_FEATURE_LINK_LAYER_STATS
- | WifiManager.WIFI_FEATURE_TX_POWER_LIMIT
- | WifiManager.WIFI_FEATURE_INFRA
- | WifiManager.WIFI_FEATURE_P2P
- | WifiManager.WIFI_FEATURE_INFRA_6G
- );
-
- doAnswer(new AnswerWithArguments() {
- public void answer(
- android.hardware.wifi.V1_4.IWifiStaIface.getCapabilities_1_4Callback cb)
- throws RemoteException {
- cb.onValues(mWifiStatusSuccess, staIfaceHidlCaps);
- }
- }).when(mIWifiStaIfaceV14).getCapabilities_1_4(
- any(android.hardware.wifi.V1_4.IWifiStaIface.getCapabilities_1_4Callback.class));
-
- doAnswer(new AnswerWithArguments() {
- public void answer(android.hardware.wifi.V1_3.IWifiChip.getCapabilities_1_3Callback cb)
- throws RemoteException {
- cb.onValues(mWifiStatusSuccess, chipHidlCaps);
- }
- }).when(mIWifiChipV13).getCapabilities_1_3(
- any(android.hardware.wifi.V1_3.IWifiChip.getCapabilities_1_3Callback.class));
-
- when(mHalDeviceManager.getSupportedIfaceTypes())
- .thenReturn(halDeviceManagerSupportedIfaces);
-
- assertEquals(expectedFeatureSet, mWifiVendorHal.getSupportedFeatureSet(TEST_IFACE_NAME));
- }
-
/**
* Test |getFactoryMacAddress| gets called when the hal version is V1_3
* @throws Exception