summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAmarnath Hullur Subramanyam <amarnath@codeaurora.org>2015-06-24 20:07:33 +0530
committerVineeta Srivastava <vsrivastava@google.com>2015-07-09 11:59:08 -0700
commitd0d336f8cfaa370fc8f9ff7426ffba0036063c61 (patch)
tree8c6e20d72879c93da6fd8c86e334de3823d7a997
parented4dcce93b498214a4be7ff6ec45519a1e47b627 (diff)
downloadwlan-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.cpp3
-rw-r--r--qcwcn/wifi_hal/cpp_bindings.h1
-rw-r--r--qcwcn/wifi_hal/rssi_monitor.cpp20
-rw-r--r--qcwcn/wifi_hal/rssi_monitor.h1
-rw-r--r--qcwcn/wifi_hal/wifi_hal.cpp4
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) {