summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPurushottam Kushwaha <quic_pkushwah@quicinc.com>2020-04-21 16:47:29 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2020-04-21 16:47:29 +0000
commit2f26517cfb4122c48605826c70818552fbbc3eb3 (patch)
tree6d7376b968f5f4b8eab2303d667ca0090ecdfa1e
parent92caf3d66c78a1ec5ad0ee314e14101fcf90be3f (diff)
parent61084a9ad8e2ffcc0fcab6bf33066b85f5fe563a (diff)
downloadwificond-2f26517cfb4122c48605826c70818552fbbc3eb3.tar.gz
Scanning: Trigger Wi-fi Recovery on consecutive scan failures. am: 61084a9ad8
Change-Id: I8af2f78afb78a71188bc1269f4ea83c16175ce27
-rw-r--r--scanning/scanner_impl.cpp31
-rw-r--r--scanning/scanner_impl.h3
2 files changed, 22 insertions, 12 deletions
diff --git a/scanning/scanner_impl.cpp b/scanning/scanner_impl.cpp
index 83eceb2..d108369 100644
--- a/scanning/scanner_impl.cpp
+++ b/scanning/scanner_impl.cpp
@@ -73,7 +73,8 @@ ScannerImpl::ScannerImpl(uint32_t interface_index,
: valid_(true),
scan_started_(false),
pno_scan_started_(false),
- nodev_counter_(0),
+ fatal_error_counter_(0),
+ ebusy_error_counter_(0),
interface_index_(interface_index),
scan_capabilities_(scan_capabilities),
wiphy_features_(wiphy_features),
@@ -175,16 +176,20 @@ Status ScannerImpl::scan(const SingleScanSettings& scan_settings,
int error_code = 0;
if (!scan_utils_->Scan(interface_index_, request_random_mac, scan_type,
ssids, freqs, &error_code)) {
- if (error_code == ENODEV) {
- nodev_counter_ ++;
- LOG(WARNING) << "Scan failed with error=nodev. counter=" << nodev_counter_;
+ if (error_code == EBUSY) {
+ ebusy_error_counter_ ++;
+ LOG(WARNING) << "Scan failed with busy error. counter=" << ebusy_error_counter_;
+ } else {
+ fatal_error_counter_++;
+ LOG(WARNING) << "Scan failed with fatal error. counter=" << fatal_error_counter_;
}
- CHECK(error_code != ENODEV || nodev_counter_ <= 3)
+ CHECK(fatal_error_counter_ <= 5 && ebusy_error_counter_ <= 10)
<< "Driver is in a bad state, restarting wificond";
*out_success = false;
return Status::ok();
}
- nodev_counter_ = 0;
+ ebusy_error_counter_ = 0;
+ fatal_error_counter_ = 0;
scan_started_ = true;
*out_success = true;
return Status::ok();
@@ -287,12 +292,15 @@ bool ScannerImpl::StartPnoScanDefault(const PnoSettings& pno_settings) {
match_ssids,
freqs,
&error_code)) {
- if (error_code == ENODEV) {
- nodev_counter_ ++;
- LOG(WARNING) << "Pno Scan failed with error=nodev. counter=" << nodev_counter_;
+ if (error_code == EBUSY) {
+ ebusy_error_counter_ ++;
+ LOG(WARNING) << "Scan failed with busy error. counter=" << ebusy_error_counter_;
+ } else {
+ fatal_error_counter_++;
+ LOG(WARNING) << "Scan failed with fatal error. counter=" << fatal_error_counter_;
}
LOG(ERROR) << "Failed to start pno scan";
- CHECK(error_code != ENODEV || nodev_counter_ <= 3)
+ CHECK(fatal_error_counter_ <= 5 && ebusy_error_counter_ <= 10)
<< "Driver is in a bad state, restarting wificond";
return false;
}
@@ -306,7 +314,8 @@ bool ScannerImpl::StartPnoScanDefault(const PnoSettings& pno_settings) {
}
}
LOG(INFO) << "Pno scan started " << freq_string;
- nodev_counter_ = 0;
+ ebusy_error_counter_ = 0;
+ fatal_error_counter_ = 0;
pno_scan_started_ = true;
return true;
}
diff --git a/scanning/scanner_impl.h b/scanning/scanner_impl.h
index 6e23ea7..1ba97ec 100644
--- a/scanning/scanner_impl.h
+++ b/scanning/scanner_impl.h
@@ -93,7 +93,8 @@ class ScannerImpl : public android::net::wifi::nl80211::BnWifiScannerImpl {
bool pno_scan_started_;
android::net::wifi::nl80211::PnoSettings pno_settings_;
- uint32_t nodev_counter_;
+ uint32_t fatal_error_counter_;
+ uint32_t ebusy_error_counter_;
const uint32_t interface_index_;
// Scanning relevant capability information for this wiphy/interface.