diff options
author | Subhani Shaik <subhanis@codeaurora.org> | 2017-06-20 07:38:56 -0700 |
---|---|---|
committer | Etan Cohen <etancohen@google.com> | 2017-06-30 15:34:28 -0700 |
commit | 3b95b19e19743b7c2c055b10dfa9ffe5f089f90f (patch) | |
tree | 791b2cb69637d316392942e9f76c24a9ba23d8b2 | |
parent | 337510e659aa5d5f220fe613896335bd4136c94c (diff) | |
download | android_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.h | 1 | ||||
-rw-r--r-- | qcwcn/wifi_hal/nan_ind.cpp | 15 |
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; } |