summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSubhani Shaik <subhanis@codeaurora.org>2017-06-20 07:38:56 -0700
committerEtan Cohen <etancohen@google.com>2017-06-30 15:34:28 -0700
commit3b95b19e19743b7c2c055b10dfa9ffe5f089f90f (patch)
tree791b2cb69637d316392942e9f76c24a9ba23d8b2
parent337510e659aa5d5f220fe613896335bd4136c94c (diff)
downloadandroid_hardware_qcom_wlan-3b95b19e19743b7c2c055b10dfa9ffe5f089f90f.tar.gz
android_hardware_qcom_wlan-3b95b19e19743b7c2c055b10dfa9ffe5f089f90f.tar.bz2
android_hardware_qcom_wlan-3b95b19e19743b7c2c055b10dfa9ffe5f089f90f.zip
WifiHal: Fix NDP incorrect error returns
NDP Confirm was not returning the error code from FW in WifiHal. NDP initiator request/responses initial fw response, NDP End initial response also are not translating the error returned from the FW. Bug: 62339353 Change-Id: I98590d50f9a4d9fca016d33939cae65c97359914
-rw-r--r--qcwcn/wifi_hal/nan_i.h1
-rw-r--r--qcwcn/wifi_hal/nan_ind.cpp15
2 files changed, 16 insertions, 0 deletions
diff --git a/qcwcn/wifi_hal/nan_i.h b/qcwcn/wifi_hal/nan_i.h
index 7e7f2f9..5938919 100644
--- a/qcwcn/wifi_hal/nan_i.h
+++ b/qcwcn/wifi_hal/nan_i.h
@@ -1190,6 +1190,7 @@ typedef enum {
NDP_I_MGMT_FRAME_CONFIRM_FAILED = 9011,
NDP_I_END_FAILED = 9012,
NDP_I_MGMT_FRAME_END_REQUEST_FAILED = 9013,
+ NDP_I_MGMT_FRAME_SECURITY_INSTALL_FAILED = 9014,
/* 9500 onwards vendor specific error codes */
NDP_I_VENDOR_SPECIFIC_ERROR = 9500
diff --git a/qcwcn/wifi_hal/nan_ind.cpp b/qcwcn/wifi_hal/nan_ind.cpp
index a57f228..2f3d0e6 100644
--- a/qcwcn/wifi_hal/nan_ind.cpp
+++ b/qcwcn/wifi_hal/nan_ind.cpp
@@ -1070,6 +1070,7 @@ int NanCommand::getNdpConfirm(struct nlattr **tb_vendor,
NanDataPathConfirmInd *event)
{
u32 len = 0;
+ NanInternalStatusType drv_reason_code;
if (event == NULL || tb_vendor == NULL) {
ALOGE("%s: Invalid input argument event:%p tb_vendor:%p",
@@ -1101,6 +1102,20 @@ int NanCommand::getNdpConfirm(struct nlattr **tb_vendor,
} else {
ALOGD("%s: NDP App Info not present", __FUNCTION__);
}
+ drv_reason_code = (NanInternalStatusType)nla_get_u32(tb_vendor[QCA_WLAN_VENDOR_ATTR_NDP_DRV_RETURN_VALUE]);
+ ALOGD("%s: Drv reason code %d", __FUNCTION__, drv_reason_code);
+ switch (drv_reason_code) {
+ case NDP_I_MGMT_FRAME_REQUEST_FAILED:
+ case NDP_I_MGMT_FRAME_RESPONSE_FAILED:
+ case NDP_I_MGMT_FRAME_CONFIRM_FAILED:
+ case NDP_I_MGMT_FRAME_SECURITY_INSTALL_FAILED:
+ event->reason_code = NAN_STATUS_PROTOCOL_FAILURE;
+ break;
+ default:
+ event->reason_code = (NanStatusType)drv_reason_code;
+ break;
+ }
+ ALOGD("%s: Reason code %d", __FUNCTION__, event->reason_code);
return WIFI_SUCCESS;
}