diff options
author | android-build-team Robot <android-build-team-robot@google.com> | 2020-08-21 23:09:23 +0000 |
---|---|---|
committer | android-build-team Robot <android-build-team-robot@google.com> | 2020-08-21 23:09:23 +0000 |
commit | aa5dca71c67969f10a00fe88c397bf15a9dccb91 (patch) | |
tree | b66f2107a99ff834d6c91b67981be9e915da3e08 | |
parent | 7eb7d4c75588d2aef2f97e210e70add82801da1c (diff) | |
parent | c389040e534b5db022b4daf7219f5a749a31aa84 (diff) |
Snap for 6782765 from c389040e534b5db022b4daf7219f5a749a31aa84 to rvc-qpr1-release
Change-Id: I8c98f4f49cf7541ae6aa4e37fecd363b85d888b8
5 files changed, 46 insertions, 19 deletions
diff --git a/service/java/com/android/server/wifi/ClientModeImpl.java b/service/java/com/android/server/wifi/ClientModeImpl.java index e88eefc6d..95983096a 100644 --- a/service/java/com/android/server/wifi/ClientModeImpl.java +++ b/service/java/com/android/server/wifi/ClientModeImpl.java @@ -6285,18 +6285,22 @@ public class ClientModeImpl extends StateMachine { if ((frameData.mBssTmDataFlagsMask - & MboOceConstants.BTM_DATA_FLAG_MBO_ASSOC_RETRY_DELAY_INCLUDED) - != 0) { - long duration = frameData.mBlackListDurationMs; - mWifiMetrics.incrementSteeringRequestCountIncludingMboAssocRetryDelay(); + & MboOceConstants.BTM_DATA_FLAG_DISASSOCIATION_IMMINENT) != 0) { + long duration = 0; + if ((frameData.mBssTmDataFlagsMask + & MboOceConstants.BTM_DATA_FLAG_MBO_ASSOC_RETRY_DELAY_INCLUDED) != 0) { + mWifiMetrics.incrementSteeringRequestCountIncludingMboAssocRetryDelay(); + duration = frameData.mBlockListDurationMs; + } if (duration == 0) { /* - * When MBO assoc retry delay is set to zero(reserved as per spec), - * blacklist the BSS for sometime to avoid AP rejecting the re-connect request. + * When disassoc imminent bit alone is set or MBO assoc retry delay is + * set to zero(reserved as per spec), blocklist the BSS for sometime to + * avoid AP rejecting the re-connect request. */ - duration = MboOceConstants.DEFAULT_BLACKLIST_DURATION_MS; + duration = MboOceConstants.DEFAULT_BLOCKLIST_DURATION_MS; } - // Blacklist the current BSS + // Blocklist the current BSS mBssidBlocklistMonitor.blockBssidForDurationMs(bssid, ssid, duration, BssidBlocklistMonitor.REASON_FRAMEWORK_DISCONNECT_MBO_OCE, 0); } diff --git a/service/java/com/android/server/wifi/MboOceConstants.java b/service/java/com/android/server/wifi/MboOceConstants.java index 4ef3cab0c..66948b030 100644 --- a/service/java/com/android/server/wifi/MboOceConstants.java +++ b/service/java/com/android/server/wifi/MboOceConstants.java @@ -176,7 +176,7 @@ public class MboOceConstants { @Retention(RetentionPolicy.SOURCE) @interface MboCellularDataConnectionPreference{} - /** default Blacklist duration when AP doesn't advertise it */ - public static final long DEFAULT_BLACKLIST_DURATION_MS = 300_000; // 5 minutes + /** default Blocklist duration when AP doesn't advertise non zero MBO assoc retry delay */ + public static final long DEFAULT_BLOCKLIST_DURATION_MS = 300_000; // 5 minutes } diff --git a/service/java/com/android/server/wifi/MboOceController.java b/service/java/com/android/server/wifi/MboOceController.java index 41006371e..d71034d81 100644 --- a/service/java/com/android/server/wifi/MboOceController.java +++ b/service/java/com/android/server/wifi/MboOceController.java @@ -130,7 +130,7 @@ public class MboOceController { public @MboOceConstants.BtmResponseStatus int mStatus = MboOceConstants.BTM_RESPONSE_STATUS_INVALID; public int mBssTmDataFlagsMask = 0; - public long mBlackListDurationMs = 0; + public long mBlockListDurationMs = 0; public @MboOceConstants.MboTransitionReason int mTransitionReason = MboOceConstants.MBO_TRANSITION_REASON_INVALID; public @MboOceConstants.MboCellularDataConnectionPreference int mCellPreference = @@ -140,7 +140,7 @@ public class MboOceController { public String toString() { return new StringBuilder("BtmFrameData status=").append(mStatus).append( ", flags=").append(mBssTmDataFlagsMask).append( - ", assocRetryDelay=").append(mBlackListDurationMs).append( + ", assocRetryDelay=").append(mBlockListDurationMs).append( ", transitionReason=").append(mTransitionReason).append( ", cellPref=").append(mCellPreference).toString(); } diff --git a/service/java/com/android/server/wifi/SupplicantStaIfaceCallbackV1_3Impl.java b/service/java/com/android/server/wifi/SupplicantStaIfaceCallbackV1_3Impl.java index 596b56d57..f293b9d7c 100644 --- a/service/java/com/android/server/wifi/SupplicantStaIfaceCallbackV1_3Impl.java +++ b/service/java/com/android/server/wifi/SupplicantStaIfaceCallbackV1_3Impl.java @@ -252,7 +252,7 @@ abstract class SupplicantStaIfaceCallbackV1_3Impl extends btmFrmData.mStatus = halToFrameworkBtmResponseStatus(tmData.status); btmFrmData.mBssTmDataFlagsMask = halToFrameworkBssTmDataFlagsMask(tmData.flags); - btmFrmData.mBlackListDurationMs = tmData.assocRetryDelayMs; + btmFrmData.mBlockListDurationMs = tmData.assocRetryDelayMs; if ((tmData.flags & BssTmDataFlagsMask.MBO_TRANSITION_REASON_CODE_INCLUDED) != 0) { btmFrmData.mTransitionReason = halToFrameworkMboTransitionReason( tmData.mboTransitionReason); diff --git a/tests/wifitests/src/com/android/server/wifi/ClientModeImplTest.java b/tests/wifitests/src/com/android/server/wifi/ClientModeImplTest.java index 42a465ecc..a9d7f0ce2 100644 --- a/tests/wifitests/src/com/android/server/wifi/ClientModeImplTest.java +++ b/tests/wifitests/src/com/android/server/wifi/ClientModeImplTest.java @@ -4330,12 +4330,12 @@ public class ClientModeImplTest extends WifiBaseTest { } /** - * Test that handleBssTransitionRequest() blacklist the BSS upon + * Test that handleBssTransitionRequest() blocklist the BSS upon * receiving BTM request frame that contains MBO-OCE IE with an * association retry delay attribute. */ @Test - public void testBtmFrameWithMboAssocretryDelayBlackListTheBssid() throws Exception { + public void testBtmFrameWithMboAssocretryDelayBlockListTheBssid() throws Exception { // Connect to network with |sBSSID|, |sFreq|. connect(); @@ -4344,14 +4344,37 @@ public class ClientModeImplTest extends WifiBaseTest { btmFrmData.mStatus = MboOceConstants.BTM_RESPONSE_STATUS_REJECT_UNSPECIFIED; btmFrmData.mBssTmDataFlagsMask = MboOceConstants.BTM_DATA_FLAG_DISASSOCIATION_IMMINENT | MboOceConstants.BTM_DATA_FLAG_MBO_ASSOC_RETRY_DELAY_INCLUDED; - btmFrmData.mBlackListDurationMs = 60000; + btmFrmData.mBlockListDurationMs = 60000; mCmi.sendMessage(WifiMonitor.MBO_OCE_BSS_TM_HANDLING_DONE, btmFrmData); mLooper.dispatchAll(); verify(mWifiMetrics, times(1)).incrementSteeringRequestCountIncludingMboAssocRetryDelay(); verify(mBssidBlocklistMonitor).blockBssidForDurationMs(eq(sBSSID), eq(sSSID), - eq(btmFrmData.mBlackListDurationMs), anyInt(), anyInt()); + eq(btmFrmData.mBlockListDurationMs), anyInt(), anyInt()); + } + + /** + * Test that handleBssTransitionRequest() blocklist the BSS upon + * receiving BTM request frame that contains disassociation imminent bit + * set to 1. + */ + @Test + public void testBtmFrameWithDisassocImminentBitBlockListTheBssid() throws Exception { + // Connect to network with |sBSSID|, |sFreq|. + connect(); + + MboOceController.BtmFrameData btmFrmData = new MboOceController.BtmFrameData(); + + btmFrmData.mStatus = MboOceConstants.BTM_RESPONSE_STATUS_ACCEPT; + btmFrmData.mBssTmDataFlagsMask = MboOceConstants.BTM_DATA_FLAG_DISASSOCIATION_IMMINENT; + + mCmi.sendMessage(WifiMonitor.MBO_OCE_BSS_TM_HANDLING_DONE, btmFrmData); + mLooper.dispatchAll(); + + verify(mWifiMetrics, never()).incrementSteeringRequestCountIncludingMboAssocRetryDelay(); + verify(mBssidBlocklistMonitor).blockBssidForDurationMs(eq(sBSSID), eq(sSSID), + eq(MboOceConstants.DEFAULT_BLOCKLIST_DURATION_MS), anyInt(), anyInt()); } /** @@ -4369,13 +4392,13 @@ public class ClientModeImplTest extends WifiBaseTest { btmFrmData.mBssTmDataFlagsMask = MboOceConstants.BTM_DATA_FLAG_DISASSOCIATION_IMMINENT | MboOceConstants.BTM_DATA_FLAG_BSS_TERMINATION_INCLUDED | MboOceConstants.BTM_DATA_FLAG_MBO_CELL_DATA_CONNECTION_PREFERENCE_INCLUDED; - btmFrmData.mBlackListDurationMs = 60000; + btmFrmData.mBlockListDurationMs = 60000; mCmi.sendMessage(WifiMonitor.MBO_OCE_BSS_TM_HANDLING_DONE, btmFrmData); mLooper.dispatchAll(); verify(mBssidBlocklistMonitor, never()).blockBssidForDurationMs(eq(sBSSID), eq(sSSID), - eq(btmFrmData.mBlackListDurationMs), anyInt(), anyInt()); + eq(btmFrmData.mBlockListDurationMs), anyInt(), anyInt()); verify(mWifiConnectivityManager).forceConnectivityScan(ClientModeImpl.WIFI_WORK_SOURCE); verify(mWifiMetrics, times(1)).incrementMboCellularSwitchRequestCount(); verify(mWifiMetrics, times(1)) |