diff options
author | Sunil Ravi <sunilravi@google.com> | 2020-03-26 00:04:27 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2020-03-26 00:04:27 +0000 |
commit | 8a4c5e709e27c306e2d8562bdb5eca40ac003cbc (patch) | |
tree | a29cb9ab5f36576cd16f6c3ae57c4c19a6e562c6 | |
parent | 4255d177937aac4abf6c1271432d860f86f91ecf (diff) | |
parent | d66d7953ed80e1ef044499b96ef404598b944021 (diff) |
Merge "Blacklist the BSS only if MBO assoc retry delay is included." into rvc-dev
-rw-r--r-- | service/java/com/android/server/wifi/ClientModeImpl.java | 12 | ||||
-rw-r--r-- | tests/wifitests/src/com/android/server/wifi/ClientModeImplTest.java | 17 |
2 files changed, 14 insertions, 15 deletions
diff --git a/service/java/com/android/server/wifi/ClientModeImpl.java b/service/java/com/android/server/wifi/ClientModeImpl.java index 173e10d14..6941fbf7d 100644 --- a/service/java/com/android/server/wifi/ClientModeImpl.java +++ b/service/java/com/android/server/wifi/ClientModeImpl.java @@ -6095,11 +6095,6 @@ public class ClientModeImpl extends StateMachine { return; } - boolean isImminentBit = (frameData.mBssTmDataFlagsMask - & (MboOceConstants.BTM_DATA_FLAG_DISASSOCIATION_IMMINENT - | MboOceConstants.BTM_DATA_FLAG_BSS_TERMINATION_INCLUDED - | MboOceConstants.BTM_DATA_FLAG_ESS_DISASSOCIATION_IMMINENT)) != 0; - if ((frameData.mBssTmDataFlagsMask & MboOceConstants.BTM_DATA_FLAG_MBO_CELL_DATA_CONNECTION_PREFERENCE_INCLUDED) != 0) { @@ -6107,12 +6102,13 @@ public class ClientModeImpl extends StateMachine { } - if (isImminentBit) { + if ((frameData.mBssTmDataFlagsMask + & MboOceConstants.BTM_DATA_FLAG_MBO_ASSOC_RETRY_DELAY_INCLUDED) + != 0) { long duration = frameData.mBlackListDurationMs; if (duration == 0) { /* - * When AP sets one of the imminent bits and disassociation timer / BSS termination - * duration / MBO assoc retry delay is set to zero(reserved as per spec), + * 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. */ duration = MboOceConstants.DEFAULT_BLACKLIST_DURATION_MS; diff --git a/tests/wifitests/src/com/android/server/wifi/ClientModeImplTest.java b/tests/wifitests/src/com/android/server/wifi/ClientModeImplTest.java index 865d4ac25..60284978b 100644 --- a/tests/wifitests/src/com/android/server/wifi/ClientModeImplTest.java +++ b/tests/wifitests/src/com/android/server/wifi/ClientModeImplTest.java @@ -4130,18 +4130,20 @@ public class ClientModeImplTest extends WifiBaseTest { } /** - * Test that handleBssTransitionRequest() blacklist the BSS when - * imminent bit is set. + * Test that handleBssTransitionRequest() blacklist the BSS upon + * receiving BTM request frame that contains MBO-OCE IE with an + * association retry delay attribute. */ @Test - public void testBtmFrameWithImminentBitBlackListTheBssid() throws Exception { + public void testBtmFrameWithMboAssocretryDelayBlackListTheBssid() throws Exception { // Connect to network with |sBSSID|, |sFreq|. connect(); MboOceController.BtmFrameData btmFrmData = new MboOceController.BtmFrameData(); btmFrmData.mStatus = MboOceConstants.BTM_RESPONSE_STATUS_REJECT_UNSPECIFIED; - btmFrmData.mBssTmDataFlagsMask = MboOceConstants.BTM_DATA_FLAG_DISASSOCIATION_IMMINENT; + btmFrmData.mBssTmDataFlagsMask = MboOceConstants.BTM_DATA_FLAG_DISASSOCIATION_IMMINENT + | MboOceConstants.BTM_DATA_FLAG_MBO_ASSOC_RETRY_DELAY_INCLUDED; btmFrmData.mBlackListDurationMs = 60000; mCmi.sendMessage(WifiMonitor.MBO_OCE_BSS_TM_HANDLING_DONE, btmFrmData); @@ -4164,14 +4166,15 @@ 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_BSS_TERMINATION_INCLUDED | MboOceConstants.BTM_DATA_FLAG_MBO_CELL_DATA_CONNECTION_PREFERENCE_INCLUDED; - btmFrmData.mBlackListDurationMs = 0; + btmFrmData.mBlackListDurationMs = 60000; mCmi.sendMessage(WifiMonitor.MBO_OCE_BSS_TM_HANDLING_DONE, btmFrmData); mLooper.dispatchAll(); - verify(mBssidBlocklistMonitor).blockBssidForDurationMs(sBSSID, sSSID, - MboOceConstants.DEFAULT_BLACKLIST_DURATION_MS); + verify(mBssidBlocklistMonitor, never()).blockBssidForDurationMs(sBSSID, sSSID, + btmFrmData.mBlackListDurationMs); verify(mWifiConnectivityManager).forceConnectivityScan(ClientModeImpl.WIFI_WORK_SOURCE); verify(mWifiMetrics, times(1)).incrementMboCellularSwitchRequestCount(); verify(mWifiMetrics, times(1)) |