From f02f545dd490b658110fb837f4905050b3ed9c52 Mon Sep 17 00:00:00 2001 From: Vinit Deshpande Date: Thu, 16 Jul 2015 11:30:21 -0700 Subject: Fix couple of issues with unregistering event handlers First, on Hammerhead, we don't unregister GOOGLE_DEBUG_RING_EVENT if driver command fails - that's not correct. Also fixed a one-off error in unregistering event handlers. Bug: 22523219 Change-Id: Idaf27bc14f13d21e18cec512db8f8c3590895c66 --- bcmdhd/wifi_hal/common.cpp | 2 +- bcmdhd/wifi_hal/wifi_logger.cpp | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/bcmdhd/wifi_hal/common.cpp b/bcmdhd/wifi_hal/common.cpp index fc81d61..f0184d6 100644 --- a/bcmdhd/wifi_hal/common.cpp +++ b/bcmdhd/wifi_hal/common.cpp @@ -180,7 +180,7 @@ WifiCommand *wifi_unregister_cmd(wifi_handle handle, int id) for (int i = 0; i < info->num_cmd; i++) { if (info->cmd[i].id == id) { cmd = info->cmd[i].cmd; - memmove(&info->cmd[i], &info->cmd[i+1], (info->num_cmd - i) * sizeof(cmd_info)); + memmove(&info->cmd[i], &info->cmd[i+1], (info->num_cmd - i - 1) * sizeof(cmd_info)); info->num_cmd--; ALOGV("Successfully removed command %d: %p from %d", id, cmd, i); break; diff --git a/bcmdhd/wifi_hal/wifi_logger.cpp b/bcmdhd/wifi_hal/wifi_logger.cpp index 7f23df5..be1467f 100644 --- a/bcmdhd/wifi_hal/wifi_logger.cpp +++ b/bcmdhd/wifi_hal/wifi_logger.cpp @@ -458,9 +458,11 @@ public: /* Send a command to driver to stop generating logging events */ ALOGV("Clear loghandler"); + /* unregister event handler */ + unregisterVendorHandler(GOOGLE_OUI, GOOGLE_DEBUG_RING_EVENT); + WifiRequest request(familyId(), ifaceId()); int result = request.create(GOOGLE_OUI, LOGGER_RESET_LOGGING); - if (result != WIFI_SUCCESS) { ALOGE("failed to create reset request; result = %d", result); return result; @@ -472,8 +474,6 @@ public: return result; } - /* unregister event handler */ - unregisterVendorHandler(GOOGLE_OUI, GOOGLE_DEBUG_RING_EVENT); ALOGD("Success to clear loghandler"); return WIFI_SUCCESS; } -- cgit v1.1