summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinux Build Service Account <lnxbuild@localhost>2014-10-31 15:11:41 -0700
committerGerrit - the friendly Code Review server <code-review@localhost>2014-10-31 15:11:41 -0700
commit46be11c24a439d29402ba44406720db41fba09ca (patch)
treedadfcf781a7f55b268a6ef74461665574f962ead
parent084350308c08bcb44b2420bc6a29df1084c16f68 (diff)
parent9de0a16e04bfcfc5ee8222fd57bfa6c75408dccb (diff)
downloadandroid_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.cpp10
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;