static void internal_event_handler(wifi_handle handle, int events)
{
    if (events & POLLERR) {
        ALOGE("Error reading from socket");
        internal_pollin_handler(handle);
    } else if (events & POLLHUP) {
        ALOGE("Remote side hung up");
    } else if (events & POLLIN) {
        ALOGV("Found some events!!!");
        internal_pollin_handler(handle);
    } else {
        ALOGE("Unknown event - %0x", events);
    }
}
/* Run event handler */
void wifi_event_loop(wifi_handle handle)
{
    hal_info *info = getHalInfo(handle);
    if (info->in_event_loop) {
        return;
    } else {
        info->in_event_loop = true;
    }

    pollfd pfd;
    memset(&pfd, 0, sizeof(pfd));

    pfd.fd = nl_socket_get_fd(info->event_sock);
    pfd.events = POLLIN;

    /* TODO: Add support for timeouts */

    do {
        int timeout = -1;                   /* Infinite timeout */
        pfd.revents = 0;
        // ALOGI("Polling socket");
        int result = poll(&pfd, 1, -1);
        if (result < 0) {
            ALOGE("Error polling socket");
        } else if (pfd.revents & POLLERR) {
            ALOGE("POLL Error; error no = %d", errno);
            char buf[2048];
            int result2 = read(pfd.fd, buf, sizeof(buf));
            ALOGE("Read after POLL returned %d, error no = %d", result2, errno);
        } else if (pfd.revents & POLLHUP) {
            ALOGE("Remote side hung up");
            break;
        } else if (pfd.revents & POLLIN) {
            // ALOGI("Found some events!!!");
            internal_pollin_handler(handle);
        } else {
            ALOGE("Unknown event - %0x", pfd.revents);
        }
    } while (!info->clean_up);


    ALOGI("Cleaning up");
    internal_cleaned_up_handler(handle);
}