diff --git a/api/current.txt b/api/current.txt index e678d1656fd46..5f32dec22de9c 100644 --- a/api/current.txt +++ b/api/current.txt @@ -31303,6 +31303,7 @@ package android.net.wifi { @Deprecated public static class WifiConfiguration.GroupCipher { field @Deprecated public static final int CCMP = 3; // 0x3 + field @Deprecated public static final int GCMP_128 = 7; // 0x7 field @Deprecated public static final int GCMP_256 = 5; // 0x5 field @Deprecated public static final int SMS4 = 6; // 0x6 field @Deprecated public static final int TKIP = 2; // 0x2 @@ -31332,6 +31333,7 @@ package android.net.wifi { @Deprecated public static class WifiConfiguration.PairwiseCipher { field @Deprecated public static final int CCMP = 2; // 0x2 + field @Deprecated public static final int GCMP_128 = 5; // 0x5 field @Deprecated public static final int GCMP_256 = 3; // 0x3 field @Deprecated public static final int NONE = 0; // 0x0 field @Deprecated public static final int SMS4 = 4; // 0x4 diff --git a/api/system-current.txt b/api/system-current.txt index 01d0a897a63c0..b908cae38ca1e 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -7344,6 +7344,7 @@ package android.net.wifi { method @Deprecated @Nullable @RequiresPermission(android.Manifest.permission.ACCESS_WIFI_STATE) public android.net.wifi.WifiConfiguration getWifiApConfiguration(); method @RequiresPermission(android.Manifest.permission.ACCESS_WIFI_STATE) public int getWifiApState(); method @NonNull @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_SETTINGS, android.Manifest.permission.NETWORK_SETUP_WIZARD}) public java.util.List getWifiConfigForMatchedNetworkSuggestionsSharedWithUser(@NonNull java.util.List); + method public boolean is60GHzBandSupported(); method public boolean isApMacRandomizationSupported(); method public boolean isConnectedMacRandomizationSupported(); method @Deprecated public boolean isDeviceToDeviceRttSupported(); @@ -7823,6 +7824,8 @@ package android.net.wifi.nl80211 { field public static final int BSS_CAPABILITY_CF_POLL_REQUEST = 8; // 0x8 field public static final int BSS_CAPABILITY_CHANNEL_AGILITY = 128; // 0x80 field public static final int BSS_CAPABILITY_DELAYED_BLOCK_ACK = 16384; // 0x4000 + field public static final int BSS_CAPABILITY_DMG_ESS = 3; // 0x3 + field public static final int BSS_CAPABILITY_DMG_IBSS = 1; // 0x1 field public static final int BSS_CAPABILITY_DSSS_OFDM = 8192; // 0x2000 field public static final int BSS_CAPABILITY_ESS = 1; // 0x1 field public static final int BSS_CAPABILITY_IBSS = 2; // 0x2 diff --git a/non-updatable-api/system-current.txt b/non-updatable-api/system-current.txt index 49cad8b587622..b807d1be6bf00 100644 --- a/non-updatable-api/system-current.txt +++ b/non-updatable-api/system-current.txt @@ -6813,6 +6813,8 @@ package android.net.wifi.nl80211 { field public static final int BSS_CAPABILITY_CF_POLL_REQUEST = 8; // 0x8 field public static final int BSS_CAPABILITY_CHANNEL_AGILITY = 128; // 0x80 field public static final int BSS_CAPABILITY_DELAYED_BLOCK_ACK = 16384; // 0x4000 + field public static final int BSS_CAPABILITY_DMG_ESS = 3; // 0x3 + field public static final int BSS_CAPABILITY_DMG_IBSS = 1; // 0x1 field public static final int BSS_CAPABILITY_DSSS_OFDM = 8192; // 0x2000 field public static final int BSS_CAPABILITY_ESS = 1; // 0x1 field public static final int BSS_CAPABILITY_IBSS = 2; // 0x2 diff --git a/wifi/api/current.txt b/wifi/api/current.txt index d0742c7c61ade..3f5c673eeb81c 100644 --- a/wifi/api/current.txt +++ b/wifi/api/current.txt @@ -144,6 +144,7 @@ package android.net.wifi { @Deprecated public static class WifiConfiguration.GroupCipher { field @Deprecated public static final int CCMP = 3; // 0x3 + field @Deprecated public static final int GCMP_128 = 7; // 0x7 field @Deprecated public static final int GCMP_256 = 5; // 0x5 field @Deprecated public static final int SMS4 = 6; // 0x6 field @Deprecated public static final int TKIP = 2; // 0x2 @@ -173,6 +174,7 @@ package android.net.wifi { @Deprecated public static class WifiConfiguration.PairwiseCipher { field @Deprecated public static final int CCMP = 2; // 0x2 + field @Deprecated public static final int GCMP_128 = 5; // 0x5 field @Deprecated public static final int GCMP_256 = 3; // 0x3 field @Deprecated public static final int NONE = 0; // 0x0 field @Deprecated public static final int SMS4 = 4; // 0x4 diff --git a/wifi/api/system-current.txt b/wifi/api/system-current.txt index b2c960365e699..c3e573c311c2c 100644 --- a/wifi/api/system-current.txt +++ b/wifi/api/system-current.txt @@ -449,6 +449,7 @@ package android.net.wifi { method @Deprecated @Nullable @RequiresPermission(android.Manifest.permission.ACCESS_WIFI_STATE) public android.net.wifi.WifiConfiguration getWifiApConfiguration(); method @RequiresPermission(android.Manifest.permission.ACCESS_WIFI_STATE) public int getWifiApState(); method @NonNull @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_SETTINGS, android.Manifest.permission.NETWORK_SETUP_WIZARD}) public java.util.List getWifiConfigForMatchedNetworkSuggestionsSharedWithUser(@NonNull java.util.List); + method public boolean is60GHzBandSupported(); method public boolean isApMacRandomizationSupported(); method public boolean isConnectedMacRandomizationSupported(); method @Deprecated public boolean isDeviceToDeviceRttSupported(); diff --git a/wifi/java/android/net/wifi/IWifiManager.aidl b/wifi/java/android/net/wifi/IWifiManager.aidl index e4937892e2f7a..b3ed8ac090346 100644 --- a/wifi/java/android/net/wifi/IWifiManager.aidl +++ b/wifi/java/android/net/wifi/IWifiManager.aidl @@ -118,6 +118,8 @@ interface IWifiManager boolean is6GHzBandSupported(); + boolean is60GHzBandSupported(); + boolean isWifiStandardSupported(int standard); DhcpInfo getDhcpInfo(); diff --git a/wifi/java/android/net/wifi/WifiConfiguration.java b/wifi/java/android/net/wifi/WifiConfiguration.java index 656444ea98db9..02b7a42d3878b 100644 --- a/wifi/java/android/net/wifi/WifiConfiguration.java +++ b/wifi/java/android/net/wifi/WifiConfiguration.java @@ -301,9 +301,16 @@ public class WifiConfiguration implements Parcelable { */ public static final int SMS4 = 4; + /** + * AES in Galois/Counter Mode with a 128-bit integrity key + */ + public static final int GCMP_128 = 5; + + public static final String varName = "pairwise"; - public static final String[] strings = { "NONE", "TKIP", "CCMP", "GCMP_256", "SMS4" }; + public static final String[] strings = { "NONE", "TKIP", "CCMP", "GCMP_256", "SMS4", + "GCMP_128" }; } /** @@ -345,13 +352,17 @@ public class WifiConfiguration implements Parcelable { * SMS4 cipher for WAPI */ public static final int SMS4 = 6; + /** + * AES in Galois/Counter Mode with a 128-bit integrity key + */ + public static final int GCMP_128 = 7; public static final String varName = "group"; public static final String[] strings = { /* deprecated */ "WEP40", /* deprecated */ "WEP104", "TKIP", "CCMP", "GTK_NOT_USED", "GCMP_256", - "SMS4" }; + "SMS4", "GCMP_128" }; } /** @@ -498,8 +509,10 @@ public class WifiConfiguration implements Parcelable { allowedProtocols.set(WifiConfiguration.Protocol.RSN); allowedKeyManagement.set(WifiConfiguration.KeyMgmt.SAE); allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP); + allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.GCMP_128); allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.GCMP_256); allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP); + allowedGroupCiphers.set(WifiConfiguration.GroupCipher.GCMP_128); allowedGroupCiphers.set(WifiConfiguration.GroupCipher.GCMP_256); requirePmf = true; break; @@ -508,7 +521,9 @@ public class WifiConfiguration implements Parcelable { allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_EAP); allowedKeyManagement.set(WifiConfiguration.KeyMgmt.IEEE8021X); allowedKeyManagement.set(WifiConfiguration.KeyMgmt.SUITE_B_192); + allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.GCMP_128); allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.GCMP_256); + allowedGroupCiphers.set(WifiConfiguration.GroupCipher.GCMP_128); allowedGroupCiphers.set(WifiConfiguration.GroupCipher.GCMP_256); allowedGroupManagementCiphers.set(WifiConfiguration.GroupMgmtCipher.BIP_GMAC_256); // Note: allowedSuiteBCiphers bitset will be set by the service once the @@ -519,8 +534,10 @@ public class WifiConfiguration implements Parcelable { allowedProtocols.set(WifiConfiguration.Protocol.RSN); allowedKeyManagement.set(WifiConfiguration.KeyMgmt.OWE); allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP); + allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.GCMP_128); allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.GCMP_256); allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP); + allowedGroupCiphers.set(WifiConfiguration.GroupCipher.GCMP_128); allowedGroupCiphers.set(WifiConfiguration.GroupCipher.GCMP_256); requirePmf = true; break; diff --git a/wifi/java/android/net/wifi/WifiManager.java b/wifi/java/android/net/wifi/WifiManager.java index b28b902910bfe..c76f4a63a777c 100644 --- a/wifi/java/android/net/wifi/WifiManager.java +++ b/wifi/java/android/net/wifi/WifiManager.java @@ -2407,6 +2407,8 @@ public class WifiManager { public static final long WIFI_FEATURE_OCE = 0x1000000000L; // OCE Support /** @hide */ public static final long WIFI_FEATURE_WAPI = 0x2000000000L; // WAPI + /** @hide */ + public static final long WIFI_FEATURE_INFRA_60G = 0x4000000000L; // 60 GHz Band Support /** @hide */ public static final long WIFI_FEATURE_FILS_SHA256 = 0x4000000000L; // FILS-SHA256 @@ -2568,6 +2570,21 @@ public class WifiManager { } } + /** + * Check if the chipset supports the 60GHz frequency band. + * + * @return {@code true} if supported, {@code false} otherwise. + * @hide + */ + @SystemApi + public boolean is60GHzBandSupported() { + try { + return mService.is60GHzBandSupported(); + } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); + } + } + /** * Check if the chipset supports 6GHz band. * @return {@code true} if supported, {@code false} otherwise. diff --git a/wifi/java/android/net/wifi/nl80211/NativeScanResult.java b/wifi/java/android/net/wifi/nl80211/NativeScanResult.java index a8e999973fe8f..35cf45fe36edf 100644 --- a/wifi/java/android/net/wifi/nl80211/NativeScanResult.java +++ b/wifi/java/android/net/wifi/nl80211/NativeScanResult.java @@ -225,6 +225,15 @@ public final class NativeScanResult implements Parcelable { * BSS capability bit (see IEEE Std 802.11: 9.4.1.4): Immediate Block Ack. */ public static final int BSS_CAPABILITY_IMMEDIATE_BLOCK_ACK = 0x1 << 15; + /** + * BSS capability bit (see IEEE Std 802.11: 9.4.1.4): DMG ESS. + * In DMG bits 0 and 1 are parsed together, where ESS=0x3 and IBSS=0x1 + */ + public static final int BSS_CAPABILITY_DMG_ESS = 0x3; + /** + * BSS capability bit (see IEEE Std 802.11: 9.4.1.4): DMG IBSS. + */ + public static final int BSS_CAPABILITY_DMG_IBSS = 0x1; /** * Returns the capabilities of the AP repseresented by this scan result as advertised in the