summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorandroid-build-team Robot <android-build-team-robot@google.com>2020-08-21 23:09:23 +0000
committerandroid-build-team Robot <android-build-team-robot@google.com>2020-08-21 23:09:23 +0000
commitaa5dca71c67969f10a00fe88c397bf15a9dccb91 (patch)
treeb66f2107a99ff834d6c91b67981be9e915da3e08
parent7eb7d4c75588d2aef2f97e210e70add82801da1c (diff)
parentc389040e534b5db022b4daf7219f5a749a31aa84 (diff)
Snap for 6782765 from c389040e534b5db022b4daf7219f5a749a31aa84 to rvc-qpr1-release
Change-Id: I8c98f4f49cf7541ae6aa4e37fecd363b85d888b8
-rw-r--r--service/java/com/android/server/wifi/ClientModeImpl.java20
-rw-r--r--service/java/com/android/server/wifi/MboOceConstants.java4
-rw-r--r--service/java/com/android/server/wifi/MboOceController.java4
-rw-r--r--service/java/com/android/server/wifi/SupplicantStaIfaceCallbackV1_3Impl.java2
-rw-r--r--tests/wifitests/src/com/android/server/wifi/ClientModeImplTest.java35
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))