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
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 @@
     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 @@
         /* 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 @@
             return result;
         }
 
-        /* unregister event handler */
-        unregisterVendorHandler(GOOGLE_OUI, GOOGLE_DEBUG_RING_EVENT);
         ALOGD("Success to clear loghandler");
         return WIFI_SUCCESS;
     }