Map error to correct error code
This patch has been provided by the vendor.
Test: VtsHalWifiV1_3TargetTest passes all tests now
Bug: 186692129
Signed-off-by: mullerf <mullerf@google.com>
Change-Id: I9a4e9398f6fb1e95a9c314fca30c3e066acfd459
(cherry picked from commit 8b051c25bb8dcf644ebe90121473cd49d4c13fde)
diff --git a/bcmdhd/wifi_hal/cpp_bindings.cpp b/bcmdhd/wifi_hal/cpp_bindings.cpp
index 698789d..5311e6e 100755
--- a/bcmdhd/wifi_hal/cpp_bindings.cpp
+++ b/bcmdhd/wifi_hal/cpp_bindings.cpp
@@ -579,27 +579,56 @@
}
}
+static int mapErrorCodes(int err)
+{
+ int ret;
+ if (!err) {
+ return WIFI_SUCCESS;
+ }
+ switch (err) {
+ case -EOPNOTSUPP:
+ ret = WIFI_ERROR_NOT_SUPPORTED;
+ break;
+ case -ETIMEDOUT:
+ ret = WIFI_ERROR_TIMED_OUT;
+ break;
+ case -EINVAL:
+ ret = WIFI_ERROR_INVALID_ARGS;
+ break;
+ case -ENOMEM:
+ ret = WIFI_ERROR_OUT_OF_MEMORY;
+ break;
+ case -EBUSY:
+ ret = WIFI_ERROR_BUSY;
+ break;
+ default:
+ ret = WIFI_ERROR_UNKNOWN;
+ }
+ ALOGD("error code %d mapped to %d", err, ret);
+ return ret;
+}
+
int WifiRequest::create(uint32_t id, int subcmd) {
int res = create(NL80211_CMD_VENDOR);
if (res < 0) {
- return res;
+ return mapErrorCodes(res);
}
res = put_u32(NL80211_ATTR_VENDOR_ID, id);
if (res < 0) {
- return res;
+ return mapErrorCodes(res);
}
res = put_u32(NL80211_ATTR_VENDOR_SUBCMD, subcmd);
if (res < 0) {
- return res;
+ return mapErrorCodes(res);
}
if (mIface != -1) {
res = set_iface_id(mIface);
}
- return res;
+ return mapErrorCodes(res);
}
@@ -646,7 +675,7 @@
out:
nl_cb_put(cb);
pthread_mutex_unlock(&ResponseMutex);
- return err;
+ return mapErrorCodes(err);
}
int WifiCommand::requestEvent(int cmd) {
@@ -675,7 +704,7 @@
out:
wifi_unregister_handler(wifiHandle(), cmd);
- return res;
+ return mapErrorCodes(res);
}
int WifiCommand::requestVendorEvent(uint32_t id, int subcmd) {
@@ -699,7 +728,7 @@
out:
wifi_unregister_vendor_handler(wifiHandle(), id, subcmd);
- return res;
+ return mapErrorCodes(res);
}
/* Event handlers */