diff options
author | Purushottam Kushwaha <quic_pkushwah@quicinc.com> | 2020-04-21 16:47:29 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2020-04-21 16:47:29 +0000 |
commit | 2f26517cfb4122c48605826c70818552fbbc3eb3 (patch) | |
tree | 6d7376b968f5f4b8eab2303d667ca0090ecdfa1e | |
parent | 92caf3d66c78a1ec5ad0ee314e14101fcf90be3f (diff) | |
parent | 61084a9ad8e2ffcc0fcab6bf33066b85f5fe563a (diff) | |
download | wificond-2f26517cfb4122c48605826c70818552fbbc3eb3.tar.gz |
Scanning: Trigger Wi-fi Recovery on consecutive scan failures. am: 61084a9ad8
Change-Id: I8af2f78afb78a71188bc1269f4ea83c16175ce27
-rw-r--r-- | scanning/scanner_impl.cpp | 31 | ||||
-rw-r--r-- | scanning/scanner_impl.h | 3 |
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. |