diff options
author | Amarnath Hullur Subramanyam <amarnath@codeaurora.org> | 2015-06-24 20:07:33 +0530 |
---|---|---|
committer | Vineeta Srivastava <vsrivastava@google.com> | 2015-07-09 11:59:08 -0700 |
commit | d0d336f8cfaa370fc8f9ff7426ffba0036063c61 (patch) | |
tree | 8c6e20d72879c93da6fd8c86e334de3823d7a997 | |
parent | ed4dcce93b498214a4be7ff6ec45519a1e47b627 (diff) | |
download | wlan-d0d336f8cfaa370fc8f9ff7426ffba0036063c61.tar.gz |
WiFi-HAL: Maintain request id in the object of wifiVendorCommand
We may need request id in WifiVendorCommand class to compare with
the request id received in asynchronous events. Maintain the
request id received from invoker in the object of
WifiVendorCommand
Change-Id: I6514c912dc41212dc22703af11220378d19551bc
-rw-r--r-- | qcwcn/wifi_hal/cpp_bindings.cpp | 3 | ||||
-rw-r--r-- | qcwcn/wifi_hal/cpp_bindings.h | 1 | ||||
-rw-r--r-- | qcwcn/wifi_hal/rssi_monitor.cpp | 20 | ||||
-rw-r--r-- | qcwcn/wifi_hal/rssi_monitor.h | 1 | ||||
-rw-r--r-- | qcwcn/wifi_hal/wifi_hal.cpp | 4 |
5 files changed, 19 insertions, 10 deletions
diff --git a/qcwcn/wifi_hal/cpp_bindings.cpp b/qcwcn/wifi_hal/cpp_bindings.cpp index e9272c6..92fe9f8 100644 --- a/qcwcn/wifi_hal/cpp_bindings.cpp +++ b/qcwcn/wifi_hal/cpp_bindings.cpp @@ -999,6 +999,7 @@ wifi_error WifiVendorCommand::get_mac_addr(struct nlattr **tb_vendor, } wifi_error initialize_vendor_cmd(wifi_interface_handle iface, + wifi_request_id id, u32 subcmd, WifiVendorCommand **vCommand) { @@ -1011,7 +1012,7 @@ wifi_error initialize_vendor_cmd(wifi_interface_handle iface, return WIFI_ERROR_INVALID_ARGS; } - *vCommand = new WifiVendorCommand(wifiHandle, 0, + *vCommand = new WifiVendorCommand(wifiHandle, id, OUI_QCA, subcmd); if (*vCommand == NULL) { diff --git a/qcwcn/wifi_hal/cpp_bindings.h b/qcwcn/wifi_hal/cpp_bindings.h index f7a4607..419110b 100644 --- a/qcwcn/wifi_hal/cpp_bindings.h +++ b/qcwcn/wifi_hal/cpp_bindings.h @@ -475,6 +475,7 @@ protected: pos = (nlattr *)nla_next(pos, &(rem))) wifi_error initialize_vendor_cmd(wifi_interface_handle iface, + wifi_request_id id, u32 subcmd, WifiVendorCommand **vCommand); #endif diff --git a/qcwcn/wifi_hal/rssi_monitor.cpp b/qcwcn/wifi_hal/rssi_monitor.cpp index 1a698ae..e942c7f 100644 --- a/qcwcn/wifi_hal/rssi_monitor.cpp +++ b/qcwcn/wifi_hal/rssi_monitor.cpp @@ -55,6 +55,11 @@ RSSIMonitorCommand::~RSSIMonitorCommand() mRSSIMonitorCommandInstance = NULL; } +void RSSIMonitorCommand::setReqId(wifi_request_id reqid) +{ + mId = reqid; +} + RSSIMonitorCommand* RSSIMonitorCommand::instance(wifi_handle handle, wifi_request_id id) { @@ -78,6 +83,7 @@ RSSIMonitorCommand* RSSIMonitorCommand::instance(wifi_handle handle, ALOGI("Handle different, update the handle"); mRSSIMonitorCommandInstance->mInfo = (hal_info *)handle; } + mRSSIMonitorCommandInstance->setReqId(id); } ALOGV("RSSIMonitorCommand %p created already", mRSSIMonitorCommandInstance); return mRSSIMonitorCommandInstance; @@ -123,10 +129,10 @@ int RSSIMonitorCommand::handleEvent(WifiEvent &event) /* If event has a different request_id, ignore that and use the * request_id value which we're maintaining. */ - if (reqId != wifi_request_id()) { + if (reqId != id()) { ALOGE("%s: Event has Req. ID:%d <> Ours:%d, continue...", - __FUNCTION__, reqId, wifi_request_id()); - reqId = wifi_request_id(); + __FUNCTION__, reqId, id()); + reqId = id(); } ret = get_mac_addr(tb_vendor, QCA_WLAN_VENDOR_ATTR_RSSI_MONITORING_CUR_BSSID, @@ -175,9 +181,9 @@ int RSSIMonitorCommand::setCallbackHandler(wifi_rssi_event_handler nHandler, return ret; } -wifi_error RSSIMonitorCommand::unregisterHandler(u32 subCmd, wifi_request_id id) +wifi_error RSSIMonitorCommand::unregisterHandler(u32 subCmd, wifi_request_id reqid) { - if (id != (wifi_request_id)mVendor_id) + if (reqid != id()) return WIFI_ERROR_INVALID_REQUEST_ID; unregisterVendorHandler(mVendor_id, subCmd); return WIFI_SUCCESS; @@ -195,7 +201,7 @@ wifi_error wifi_start_rssi_monitoring(wifi_request_id id, wifi_handle wifiHandle = getWifiHandle(iface); RSSIMonitorCommand *rssiCommand; - ret = initialize_vendor_cmd(iface, + ret = initialize_vendor_cmd(iface, id, QCA_NL80211_VENDOR_SUBCMD_MONITOR_RSSI, &vCommand); if (ret != WIFI_SUCCESS) { @@ -256,7 +262,7 @@ wifi_error wifi_stop_rssi_monitoring(wifi_request_id id, wifi_handle wifiHandle = getWifiHandle(iface); RSSIMonitorCommand *rssiCommand; - ret = initialize_vendor_cmd(iface, + ret = initialize_vendor_cmd(iface, id, QCA_NL80211_VENDOR_SUBCMD_MONITOR_RSSI, &vCommand); if (ret != WIFI_SUCCESS) { diff --git a/qcwcn/wifi_hal/rssi_monitor.h b/qcwcn/wifi_hal/rssi_monitor.h index 5b6a9f6..8d4cff9 100644 --- a/qcwcn/wifi_hal/rssi_monitor.h +++ b/qcwcn/wifi_hal/rssi_monitor.h @@ -49,6 +49,7 @@ public: virtual int setCallbackHandler(wifi_rssi_event_handler nHandler, u32 event); virtual int handleEvent(WifiEvent &event); virtual wifi_error unregisterHandler(u32 subCmd, wifi_request_id id); + virtual void setReqId(wifi_request_id reqid); }; #ifdef __cplusplus diff --git a/qcwcn/wifi_hal/wifi_hal.cpp b/qcwcn/wifi_hal/wifi_hal.cpp index f397e35..56e6f6e 100644 --- a/qcwcn/wifi_hal/wifi_hal.cpp +++ b/qcwcn/wifi_hal/wifi_hal.cpp @@ -1045,7 +1045,7 @@ wifi_error wifi_start_sending_offloaded_packet(wifi_request_id id, struct nlattr *nlData; WifiVendorCommand *vCommand = NULL; - ret = initialize_vendor_cmd(iface, + ret = initialize_vendor_cmd(iface, id, QCA_NL80211_VENDOR_SUBCMD_OFFLOADED_PACKETS, &vCommand); if (ret != WIFI_SUCCESS) { @@ -1104,7 +1104,7 @@ wifi_error wifi_stop_sending_offloaded_packet(wifi_request_id id, struct nlattr *nlData; WifiVendorCommand *vCommand = NULL; - ret = initialize_vendor_cmd(iface, + ret = initialize_vendor_cmd(iface, id, QCA_NL80211_VENDOR_SUBCMD_OFFLOADED_PACKETS, &vCommand); if (ret != WIFI_SUCCESS) { |