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
CRs-Fixed: 2079318
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 @@
     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 @@
                               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 @@
     } 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;
 }