diff options
author | Linux Build Service Account <lnxbuild@localhost> | 2014-10-31 15:11:41 -0700 |
---|---|---|
committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2014-10-31 15:11:41 -0700 |
commit | 46be11c24a439d29402ba44406720db41fba09ca (patch) | |
tree | dadfcf781a7f55b268a6ef74461665574f962ead | |
parent | 084350308c08bcb44b2420bc6a29df1084c16f68 (diff) | |
parent | 9de0a16e04bfcfc5ee8222fd57bfa6c75408dccb (diff) | |
download | android_hardware_qcom_wlan-46be11c24a439d29402ba44406720db41fba09ca.tar.gz android_hardware_qcom_wlan-46be11c24a439d29402ba44406720db41fba09ca.tar.bz2 android_hardware_qcom_wlan-46be11c24a439d29402ba44406720db41fba09ca.zip |
Merge "wifihal: Avoid registering for an event more than once"
-rw-r--r-- | qcwcn/wifi_hal/common.cpp | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/qcwcn/wifi_hal/common.cpp b/qcwcn/wifi_hal/common.cpp index 8634b9c..65a49b0 100644 --- a/qcwcn/wifi_hal/common.cpp +++ b/qcwcn/wifi_hal/common.cpp @@ -57,7 +57,15 @@ wifi_error wifi_register_handler(wifi_handle handle, int cmd, nl_recvmsg_msg_cb_ { hal_info *info = (hal_info *)handle; - /* TODO: check for multiple handlers? */ + for (int i = 0; i < info->num_event_cb; i++) { + if(info->event_cb[i].nl_cmd == cmd && + info->event_cb[i].cb_arg == arg) { + info->event_cb[i].cb_func = func; + ALOGI("Updated event handler %p for nl_cmd 0x%0x" + " and arg %p", func, cmd, arg); + return WIFI_SUCCESS; + } + } if (info->num_event_cb < info->alloc_event_cb) { info->event_cb[info->num_event_cb].nl_cmd = cmd; |