wifi(vts): Ignore IWifi.stop() returning ERROR_NOT_AVAILABLE

When IWifi.stop() is invoked back to back (happens in the ConfigureChip
vts test), the HAL would return ERROR_NOT_AVAILABLE if the previous stop
is still being processed. This is not an error that needs to fail the test,
but a legitimate status for stop. We have a retry mechanism to handle
this in both the VTS test and framework for the case where IWifi.start()
is invoked while the previous stop is being processed.

While there, corrected a few log messages emitted by the HAL to debug
such startup/stop issues better.

Bug: 63971806
Test: `vts-tradefed run commandAndExit vts --skip-all-system-status-check
--primary-abi-only --skip-preconditions --module VtsHalWifiV1_0Target -l
INFO`

Change-Id: I5e3470ac97541a6ea10aceec9b737e5d03ed5206
This commit is contained in:
Roshan Pius
2017-08-03 15:05:05 -07:00
parent 6d5cf73b75
commit 8c216524a3
3 changed files with 8 additions and 4 deletions

View File

@@ -206,5 +206,7 @@ bool configureChipToSupportIfaceType(const sp<IWifiChip>& wifi_chip,
void stopWifi() {
sp<IWifi> wifi = getWifi();
ASSERT_NE(wifi, nullptr);
ASSERT_EQ(HIDL_INVOKE(wifi, stop).code, WifiStatusCode::SUCCESS);
const auto status = HIDL_INVOKE(wifi, stop);
ASSERT_TRUE((status.code == WifiStatusCode::SUCCESS) ||
(status.code == WifiStatusCode::ERROR_NOT_AVAILABLE));
}

View File

@@ -27,7 +27,7 @@ using android::hardware::joinRpcThreadpool;
int main(int /*argc*/, char** argv) {
android::base::InitLogging(argv,
android::base::LogdLogger(android::base::SYSTEM));
LOG(INFO) << "Wifi Hal is starting up...";
LOG(INFO) << "Wifi Hal is booting up...";
configureRpcThreadpool(1, true /* callerWillJoin */);

View File

@@ -108,14 +108,15 @@ WifiStatus Wifi::startInternal() {
LOG(ERROR) << "Failed to invoke onStart callback";
};
}
LOG(INFO) << "Wifi HAL started";
} else {
for (const auto& callback : event_cb_handler_.getCallbacks()) {
if (!callback->onFailure(wifi_status).isOk()) {
LOG(ERROR) << "Failed to invoke onFailure callback";
}
}
LOG(ERROR) << "Wifi HAL start failed";
}
LOG(INFO) << "Wifi HAL started";
return wifi_status;
}
@@ -139,14 +140,15 @@ WifiStatus Wifi::stopInternal() {
LOG(ERROR) << "Failed to invoke onStop callback";
};
}
LOG(INFO) << "Wifi HAL stopped";
} else {
for (const auto& callback : event_cb_handler_.getCallbacks()) {
if (!callback->onFailure(wifi_status).isOk()) {
LOG(ERROR) << "Failed to invoke onFailure callback";
}
}
LOG(ERROR) << "Wifi HAL stop failed";
}
LOG(INFO) << "Wifi HAL stopped";
return wifi_status;
}