Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0a0fe51a authored by xshu's avatar xshu
Browse files

Ringbuffer stops logging after wifi toggle

Forces ringbuffer updates before writing zipped files to bugreport.
Also properly resets the ringbuffer callback when it's deregistered.

Bug: 161307741
Test: make vts -j64 && vts-tradefed run commandAndExit vts --module VtsHalWifiV1_0Target
Test: manual verification with triggering a bugreport
Test: manual verification with wifi toggles
Change-Id: I74deffda917054e20cfcf4f0dd90d778626c89d3
parent 9801030d
Loading
Loading
Loading
Loading
+14 −2
Original line number Diff line number Diff line
@@ -626,6 +626,15 @@ Return<void> WifiChip::getCapabilities_1_3(getCapabilities_cb hidl_status_cb) {
Return<void> WifiChip::debug(const hidl_handle& handle,
                             const hidl_vec<hidl_string>&) {
    if (handle != nullptr && handle->numFds >= 1) {
        {
            std::unique_lock<std::mutex> lk(lock_t);
            for (const auto& item : ringbuffer_map_) {
                forceDumpToDebugRingBufferInternal(item.first);
            }
            // unique_lock unlocked here
        }
        usleep(100 * 1000);  // sleep for 100 milliseconds to wait for
                             // ringbuffer updates.
        int fd = handle->data[0];
        if (!writeRingbufferFilesInternal()) {
            LOG(ERROR) << "Error writing files to flash";
@@ -1127,6 +1136,9 @@ WifiStatus WifiChip::stopLoggingToDebugRingBufferInternal() {
    legacy_hal::wifi_error legacy_status =
        legacy_hal_.lock()->deregisterRingBufferCallbackHandler(
            getFirstActiveWlanIfaceName());
    if (legacy_status == legacy_hal::WIFI_SUCCESS) {
        debug_ring_buffer_cb_registered_ = false;
    }
    return createWifiStatusFromLegacyError(legacy_status);
}

@@ -1342,7 +1354,7 @@ WifiStatus WifiChip::registerDebugRingBufferCallback() {
                    LOG(ERROR) << "Ringname " << name << " not found";
                    return;
                }
                // unlock
                // unique_lock unlocked here
            }
        };
    legacy_hal::wifi_error legacy_status =
@@ -1644,7 +1656,7 @@ bool WifiChip::writeRingbufferFilesInternal() {
                }
            }
        }
        // unlock
        // unique_lock unlocked here
    }
    return true;
}