diff options
| author | Naveen Rawat <naveenrawat@codeaurora.org> | 2016-06-29 18:30:59 -0700 |
|---|---|---|
| committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2016-07-06 13:31:56 -0700 |
| commit | 8d63a59f3be20e29784bc70be2c4ec725084aedc (patch) | |
| tree | c2599dbc9fced9435680540d3845d26495250bd7 | |
| parent | d915350fe450d38b1fde0df7e2b6713325bab2f4 (diff) | |
qcacld-3.0: Add NDP reason codes in deferred rsp sent for NDP commands
This is qcacld-2.0 to qcacld-3.0 propagation.
Add NDP reason codes in deferred response sent for NDP commands so that
failure during processing of NDP cmds can be notified to service layer.
Change-Id: I731b520fde226c351464d94033a1ced2888a4d18
CRs-Fixed: 962367
| -rw-r--r-- | core/hdd/src/wlan_hdd_nan_datapath.c | 54 | ||||
| -rw-r--r-- | core/hdd/src/wlan_hdd_nan_datapath.h | 4 | ||||
| -rw-r--r-- | core/mac/inc/sir_api.h | 63 | ||||
| -rw-r--r-- | core/sme/inc/csr_api.h | 4 | ||||
| -rw-r--r-- | core/sme/inc/sme_nan_datapath.h | 17 | ||||
| -rw-r--r-- | core/sme/src/csr/csr_api_roam.c | 9 | ||||
| -rw-r--r-- | core/sme/src/nan/nan_datapath_api.c | 69 | ||||
| -rw-r--r-- | core/wma/src/wma_nan_datapath.c | 32 |
8 files changed, 142 insertions, 110 deletions
diff --git a/core/hdd/src/wlan_hdd_nan_datapath.c b/core/hdd/src/wlan_hdd_nan_datapath.c index f58ec0724c5b..8d150ba6d621 100644 --- a/core/hdd/src/wlan_hdd_nan_datapath.c +++ b/core/hdd/src/wlan_hdd_nan_datapath.c @@ -745,7 +745,7 @@ static void hdd_ndp_iface_create_rsp_handler(hdd_adapter_t *adapter, struct nan_datapath_ctx *ndp_ctx = WLAN_HDD_GET_NDP_CTX_PTR(adapter); bool create_fail = false; uint8_t create_transaction_id = 0; - uint8_t create_status = 0; + uint32_t create_status = 0; ENTER(); @@ -803,7 +803,8 @@ static void hdd_ndp_iface_create_rsp_handler(hdd_adapter_t *adapter, /* Status return value */ if (nla_put_u32(vendor_event, - QCA_WLAN_VENDOR_ATTR_NDP_DRV_RETURN_VALUE, 0xA5)) { + QCA_WLAN_VENDOR_ATTR_NDP_DRV_RETURN_VALUE, + ndi_rsp->reason)) { hdd_err(FL("VENDOR_ATTR_NDP_DRV_RETURN_VALUE put fail")); goto nla_put_failure; } @@ -817,7 +818,8 @@ static void hdd_ndp_iface_create_rsp_handler(hdd_adapter_t *adapter, hddLog(LOG2, FL("status code: %d, value: %d"), QCA_WLAN_VENDOR_ATTR_NDP_DRV_RETURN_TYPE, create_status); hddLog(LOG2, FL("Return value: %d, value: %d"), - QCA_WLAN_VENDOR_ATTR_NDP_DRV_RETURN_VALUE, 0xA5); + QCA_WLAN_VENDOR_ATTR_NDP_DRV_RETURN_VALUE, + ndi_rsp->reason); cfg80211_vendor_event(vendor_event, GFP_KERNEL); @@ -859,6 +861,7 @@ static void hdd_ndp_iface_delete_rsp_handler(hdd_adapter_t *adapter, { hdd_context_t *hdd_ctx = WLAN_HDD_GET_CTX(adapter); struct ndi_delete_rsp *ndi_rsp = rsp_params; + struct nan_datapath_ctx *ndp_ctx; if (wlan_hdd_validate_context(hdd_ctx)) return; @@ -868,14 +871,19 @@ static void hdd_ndp_iface_delete_rsp_handler(hdd_adapter_t *adapter, return; } - if (ndi_rsp->status == QDF_STATUS_SUCCESS) + if (ndi_rsp->status == NDP_RSP_STATUS_SUCCESS) hdd_err(FL("NDI BSS successfully stopped")); else hdd_err(FL("NDI BSS stop failed with reason %d"), ndi_rsp->reason); + + ndp_ctx = WLAN_HDD_GET_NDP_CTX_PTR(adapter); + ndp_ctx->ndi_delete_rsp_reason = ndi_rsp->reason; + ndp_ctx->ndi_delete_rsp_status = ndi_rsp->status; wlan_hdd_netif_queue_control(adapter, WLAN_STOP_ALL_NETIF_QUEUE_N_CARRIER, WLAN_CONTROL_PATH); + complete(&adapter->disconnect_comp_var); return; } @@ -957,14 +965,16 @@ void hdd_ndp_session_end_handler(hdd_adapter_t *adapter) /* Status code */ if (nla_put_u32(vendor_event, - QCA_WLAN_VENDOR_ATTR_NDP_DRV_RETURN_TYPE, 0x0)) { + QCA_WLAN_VENDOR_ATTR_NDP_DRV_RETURN_TYPE, + ndp_ctx->ndi_delete_rsp_status)) { hdd_err(FL("VENDOR_ATTR_NDP_DRV_RETURN_TYPE put fail")); goto failure; } /* Status return value */ if (nla_put_u32(vendor_event, - QCA_WLAN_VENDOR_ATTR_NDP_DRV_RETURN_VALUE, 0x0)) { + QCA_WLAN_VENDOR_ATTR_NDP_DRV_RETURN_VALUE, + ndp_ctx->ndi_delete_rsp_reason)) { hdd_err(FL("VENDOR_ATTR_NDP_DRV_RETURN_VALUE put fail")); goto failure; } @@ -977,9 +987,10 @@ void hdd_ndp_session_end_handler(hdd_adapter_t *adapter) ndp_ctx->ndp_delete_transaction_id); hddLog(LOG2, FL("status code: %d, value: %d"), QCA_WLAN_VENDOR_ATTR_NDP_DRV_RETURN_TYPE, - true); + ndp_ctx->ndi_delete_rsp_status); hddLog(LOG2, FL("Return value: %d, value: %d"), - QCA_WLAN_VENDOR_ATTR_NDP_DRV_RETURN_VALUE, 0x5A); + QCA_WLAN_VENDOR_ATTR_NDP_DRV_RETURN_VALUE, + ndp_ctx->ndi_delete_rsp_reason); ndp_ctx->ndp_delete_transaction_id = 0; ndp_ctx->state = NAN_DATA_NDI_DELETED_STATE; @@ -1050,16 +1061,17 @@ static void hdd_ndp_initiator_rsp_handler(hdd_adapter_t *adapter, goto ndp_initiator_rsp_nla_failed; if (nla_put_u32(vendor_event, QCA_WLAN_VENDOR_ATTR_NDP_DRV_RETURN_TYPE, - rsp->status)) + rsp->status)) goto ndp_initiator_rsp_nla_failed; if (nla_put_u32(vendor_event, QCA_WLAN_VENDOR_ATTR_NDP_DRV_RETURN_VALUE, - 0)) + rsp->reason)) goto ndp_initiator_rsp_nla_failed; hddLog(LOG1, - FL("NDP Initiator rsp sent, tid:%d, instance id:%d, status:%d"), - rsp->transaction_id, rsp->ndp_instance_id, rsp->status); + FL("NDP Initiator rsp sent, tid:%d, instance id:%d, status:%d, reason: %d"), + rsp->transaction_id, rsp->ndp_instance_id, rsp->status, + rsp->reason); cfg80211_vendor_event(vendor_event, GFP_KERNEL); EXIT(); return; @@ -1208,6 +1220,9 @@ static void hdd_ndp_confirm_ind_handler(hdd_adapter_t *adapter, + NLMSG_HDRLEN + (7 * NLA_HDRLEN) + ndp_confirm->ndp_info.ndp_app_info_len; + if (ndp_confirm->ndp_info.ndp_app_info_len) + data_len += NLA_HDRLEN + ndp_confirm->ndp_info.ndp_app_info_len; + vendor_event = cfg80211_vendor_event_alloc(hdd_ctx->wiphy, NULL, data_len, QCA_NL80211_VENDOR_SUBCMD_NDP_INDEX, GFP_KERNEL); @@ -1233,9 +1248,9 @@ static void hdd_ndp_confirm_ind_handler(hdd_adapter_t *adapter, goto ndp_confirm_nla_failed; if (ndp_confirm->ndp_info.ndp_app_info_len && nla_put(vendor_event, - QCA_WLAN_VENDOR_ATTR_NDP_APP_INFO, - ndp_confirm->ndp_info.ndp_app_info_len, - ndp_confirm->ndp_info.ndp_app_info)) + QCA_WLAN_VENDOR_ATTR_NDP_APP_INFO, + ndp_confirm->ndp_info.ndp_app_info_len, + ndp_confirm->ndp_info.ndp_app_info)) goto ndp_confirm_nla_failed; if (nla_put_u32(vendor_event, @@ -1243,6 +1258,11 @@ static void hdd_ndp_confirm_ind_handler(hdd_adapter_t *adapter, ndp_confirm->rsp_code)) goto ndp_confirm_nla_failed; + if (nla_put_u32(vendor_event, + QCA_WLAN_VENDOR_ATTR_NDP_DRV_RETURN_VALUE, + ndp_confirm->reason_code)) + goto ndp_confirm_nla_failed; + cfg80211_vendor_event(vendor_event, GFP_KERNEL); hddLog(LOG1, FL("NDP confim sent, ndp instance id: %d, peer addr: %pM, ndp_cfg: %d, rsp_code: %d, reason_code: %d"), ndp_confirm->ndp_instance_id, @@ -1678,11 +1698,11 @@ void hdd_ndp_event_handler(hdd_adapter_t *adapter, { if (roam_status == eCSR_ROAM_NDP_STATUS_UPDATE) { switch (roam_result) { - case eCSR_ROAM_RESULT_NDP_CREATE_RSP: + case eCSR_ROAM_RESULT_NDI_CREATE_RSP: hdd_ndp_iface_create_rsp_handler(adapter, &roam_info->ndp.ndi_create_params); break; - case eCSR_ROAM_RESULT_NDP_DELETE_RSP: + case eCSR_ROAM_RESULT_NDI_DELETE_RSP: hdd_ndp_iface_delete_rsp_handler(adapter, &roam_info->ndp.ndi_delete_params); break; diff --git a/core/hdd/src/wlan_hdd_nan_datapath.h b/core/hdd/src/wlan_hdd_nan_datapath.h index c7e869ceda7a..db57c16cb34f 100644 --- a/core/hdd/src/wlan_hdd_nan_datapath.h +++ b/core/hdd/src/wlan_hdd_nan_datapath.h @@ -178,6 +178,8 @@ enum nan_datapath_state { * @ndp_key_installed: NDP security key installed * @ndp_enc_key: NDP encryption key info * @ndp_debug_state: debug state info + * @ndi_delete_rsp_reason: reason code for ndi_delete rsp + * @ndi_delete_rsp_status: status for ndi_delete rsp */ struct nan_datapath_ctx { enum nan_datapath_state state; @@ -189,6 +191,8 @@ struct nan_datapath_ctx { bool ndp_key_installed; tCsrRoamSetKey ndp_enc_key; uint32_t ndp_debug_state; + uint32_t ndi_delete_rsp_reason; + uint32_t ndi_delete_rsp_status; }; #ifdef WLAN_FEATURE_NAN_DATAPATH diff --git a/core/mac/inc/sir_api.h b/core/mac/inc/sir_api.h index b4b4ee1236b6..1f1a663760df 100644 --- a/core/mac/inc/sir_api.h +++ b/core/mac/inc/sir_api.h @@ -5944,6 +5944,53 @@ enum ndp_end_reason_code { }; /** + * enum nan_status_type - NDP status type + * @NDP_RSP_STATUS_SUCCESS: request was successful + * @NDP_RSP_STATUS_ERROR: request failed + */ +enum nan_status_type { + NDP_RSP_STATUS_SUCCESS = 0x00, + NDP_RSP_STATUS_ERROR = 0x01, +}; + +/** + * enum nan_reason_code - NDP command rsp reason code value + * @NDP_UNSUPPORTED_CONCURRENCY: Will be used in unsupported concurrency cases + * @NDP_NAN_DATA_IFACE_CREATE_FAILED: ndi create failed + * @NDP_NAN_DATA_IFACE_DELETE_FAILED: ndi delete failed + * @NDP_DATA_INITIATOR_REQ_FAILED: data initiator request failed + * @NDP_DATA_RESPONDER_REQ_FAILED: data responder request failed + * @NDP_INVALID_SERVICE_INSTANCE_ID: invalid service instance id + * @NDP_INVALID_NDP_INSTANCE_ID: invalid ndp instance id + * @NDP_INVALID_RSP_CODE: invalid response code in ndp responder request + * @NDP_INVALID_APP_INFO_LEN: invalid app info length + * @NDP_NMF_REQ_FAIL: OTA nan mgmt frame failure for data request + * @NDP_NMF_RSP_FAIL: OTA nan mgmt frame failure for data response + * @NDP_NMF_CNF_FAIL: OTA nan mgmt frame failure for confirm + * @NDP_END_FAILED: ndp end failed + * @NDP_NMF_END_REQ_FAIL: OTA nan mgmt frame failure for data end + * @NDP_VENDOR_SPECIFIC_ERROR: other vendor specific failures + */ +enum nan_reason_code { + NDP_UNSUPPORTED_CONCURRENCY = 9000, + NDP_NAN_DATA_IFACE_CREATE_FAILED = 9001, + NDP_NAN_DATA_IFACE_DELETE_FAILED = 9002, + NDP_DATA_INITIATOR_REQ_FAILED = 9003, + NDP_DATA_RESPONDER_REQ_FAILED = 9004, + NDP_INVALID_SERVICE_INSTANCE_ID = 9005, + NDP_INVALID_NDP_INSTANCE_ID = 9006, + NDP_INVALID_RSP_CODE = 9007, + NDP_INVALID_APP_INFO_LEN = 9008, + NDP_NMF_REQ_FAIL = 9009, + NDP_NMF_RSP_FAIL = 9010, + NDP_NMF_CNF_FAIL = 9011, + NDP_END_FAILED = 9012, + NDP_NMF_END_REQ_FAIL = 9013, + /* 9500 onwards vendor specific error codes */ + NDP_VENDOR_SPECIFIC_ERROR = 9500, +}; + +/** * struct ndp_cfg - ndp configuration * @tag: unique identifier * @ndp_cfg_len: ndp configuration length @@ -5995,37 +6042,22 @@ struct ndi_create_req { /** * struct ndi_create_rsp - ndi create response params - * @transaction_id: unique identifier * @status: request status * @reason: reason if any * */ struct ndi_create_rsp { - uint32_t transaction_id; uint32_t status; uint32_t reason; }; /** - * struct ndi_delete_req - ndi delete request params - * @transaction_id: unique identifier - * @iface_name: interface name - * - */ -struct ndi_delete_req { - uint32_t transaction_id; - char iface_name[IFACE_NAME_SIZE]; -}; - -/** * struct ndi_delete_rsp - ndi delete response params - * @transaction_id: unique identifier * @status: request status * @reason: reason if any * */ struct ndi_delete_rsp { - uint32_t transaction_id; uint32_t status; uint32_t reason; }; @@ -6067,6 +6099,7 @@ struct ndp_initiator_rsp { uint32_t vdev_id; uint32_t ndp_instance_id; uint32_t status; + uint32_t reason; }; /** diff --git a/core/sme/inc/csr_api.h b/core/sme/inc/csr_api.h index b59650daa613..de7d011d7a98 100644 --- a/core/sme/inc/csr_api.h +++ b/core/sme/inc/csr_api.h @@ -610,8 +610,8 @@ typedef enum { eCSR_ROAM_RESULT_DFS_CHANSW_UPDATE_SUCCESS, eCSR_ROAM_EXT_CHG_CHNL_UPDATE_IND, - eCSR_ROAM_RESULT_NDP_CREATE_RSP, - eCSR_ROAM_RESULT_NDP_DELETE_RSP, + eCSR_ROAM_RESULT_NDI_CREATE_RSP, + eCSR_ROAM_RESULT_NDI_DELETE_RSP, eCSR_ROAM_RESULT_NDP_INITIATOR_RSP, eCSR_ROAM_RESULT_NDP_NEW_PEER_IND, eCSR_ROAM_RESULT_NDP_CONFIRM_IND, diff --git a/core/sme/inc/sme_nan_datapath.h b/core/sme/inc/sme_nan_datapath.h index eaeac76d08ac..e47554ee7aea 100644 --- a/core/sme/inc/sme_nan_datapath.h +++ b/core/sme/inc/sme_nan_datapath.h @@ -98,13 +98,6 @@ void sme_ndp_message_processor(tpAniSirGlobal mac_ctx, uint16_t msg_type, QDF_STATUS csr_roam_start_ndi(tpAniSirGlobal mac_ctx, uint32_t session_id, tCsrRoamProfile *profile); -void csr_roam_fill_roaminfo_ndp(tpAniSirGlobal mac_ctx, - tCsrRoamInfo *roam_info, - eCsrRoamResult roam_result, - tSirResultCodes status_code, - uint32_t reason_code, - uint32_t transaction_id); - void csr_roam_save_ndi_connected_info(tpAniSirGlobal mac_ctx, uint32_t session_id, tCsrRoamProfile *roam_profile, @@ -139,16 +132,6 @@ static inline QDF_STATUS csr_roam_start_ndi(tpAniSirGlobal mac_ctx, return QDF_STATUS_SUCCESS; } -/* Fill in ndp information in roam_info */ -static inline void csr_roam_fill_roaminfo_ndp(tpAniSirGlobal mac_ctx, - tCsrRoamInfo *roam_info, - eCsrRoamResult roam_result, - tSirResultCodes status_code, - uint32_t reason_code, - uint32_t transaction_id) -{ -} - static inline void csr_roam_save_ndi_connected_info(tpAniSirGlobal mac_ctx, uint32_t session_id, tCsrRoamProfile *roam_profile, diff --git a/core/sme/src/csr/csr_api_roam.c b/core/sme/src/csr/csr_api_roam.c index 89bb368017cd..ae83a030c6b0 100644 --- a/core/sme/src/csr/csr_api_roam.c +++ b/core/sme/src/csr/csr_api_roam.c @@ -6431,11 +6431,6 @@ static void csr_roam_process_start_bss_success(tpAniSirGlobal mac_ctx, &roam_status, &roam_result, &roam_info); - csr_roam_fill_roaminfo_ndp(mac_ctx, - &roam_info, - roam_result, - start_bss_rsp->statusCode, - 0, 0); } /* * Only tell upper layer is we start the BSS because Vista @@ -6919,10 +6914,6 @@ static bool csr_roam_process_results(tpAniSirGlobal mac_ctx, tSmeCmd *cmd, csr_roam_update_ndp_return_params(mac_ctx, eCsrStartBssFailure, &roam_status, &roam_result, &roam_info); - csr_roam_fill_roaminfo_ndp(mac_ctx, &roam_info, - roam_result, - (start_bss_rsp) ? start_bss_rsp->statusCode : - QDF_STATUS_E_FAILURE, 0, 0); } if (context) { diff --git a/core/sme/src/nan/nan_datapath_api.c b/core/sme/src/nan/nan_datapath_api.c index d3c7fdfa574f..070b25513f60 100644 --- a/core/sme/src/nan/nan_datapath_api.c +++ b/core/sme/src/nan/nan_datapath_api.c @@ -299,36 +299,6 @@ QDF_STATUS csr_roam_start_ndi(tpAniSirGlobal mac_ctx, uint32_t session, } /** - * csr_roam_fill_roaminfo_ndp() - fill the ndi create struct inside roam info - * @mac_ctx: Global MAC context - * @roam_info: roam info to be updated with ndi create params - * @roam_result: roam result to update - * @status_code: status code to update - * @reason_code: reason code to update - * @transaction_id: transcation id to update - * - * Return: None - */ -void csr_roam_fill_roaminfo_ndp(tpAniSirGlobal mac_ctx, - tCsrRoamInfo *roam_info, - eCsrRoamResult roam_result, - tSirResultCodes status_code, - uint32_t reason_code, - uint32_t transaction_id) -{ - struct ndi_create_rsp *rsp_params; - - sms_log(mac_ctx, LOG1, - FL("reason 0x%x, status 0x%x, transaction_id %d"), - reason_code, status_code, transaction_id); - rsp_params = (struct ndi_create_rsp *) - &roam_info->ndp.ndi_create_params; - rsp_params->reason = reason_code; - rsp_params->status = status_code; - rsp_params->transaction_id = transaction_id; -} - -/** * csr_roam_save_ndi_connected_info() - Save connected profile parameters * @mac_ctx: Global MAC context * @session_id: Session ID @@ -400,19 +370,32 @@ void csr_roam_update_ndp_return_params(tpAniSirGlobal mac_ctx, switch (result) { case eCsrStartBssSuccess: + roam_info->ndp.ndi_create_params.reason = 0; + roam_info->ndp.ndi_create_params.status = + NDP_RSP_STATUS_SUCCESS; + *roam_status = eCSR_ROAM_NDP_STATUS_UPDATE; + *roam_result = eCSR_ROAM_RESULT_NDI_CREATE_RSP; + break; case eCsrStartBssFailure: + roam_info->ndp.ndi_create_params.status = NDP_RSP_STATUS_ERROR; + roam_info->ndp.ndi_create_params.reason = + NDP_NAN_DATA_IFACE_CREATE_FAILED; *roam_status = eCSR_ROAM_NDP_STATUS_UPDATE; - *roam_result = eCSR_ROAM_RESULT_NDP_CREATE_RSP; + *roam_result = eCSR_ROAM_RESULT_NDI_CREATE_RSP; break; case eCsrStopBssSuccess: + roam_info->ndp.ndi_delete_params.reason = 0; + roam_info->ndp.ndi_delete_params.status = + NDP_RSP_STATUS_SUCCESS; *roam_status = eCSR_ROAM_NDP_STATUS_UPDATE; - *roam_result = eCSR_ROAM_RESULT_NDP_DELETE_RSP; - roam_info->ndp.ndi_delete_params.status = QDF_STATUS_SUCCESS; + *roam_result = eCSR_ROAM_RESULT_NDI_DELETE_RSP; break; case eCsrStopBssFailure: + roam_info->ndp.ndi_delete_params.status = NDP_RSP_STATUS_ERROR; + roam_info->ndp.ndi_delete_params.reason = + NDP_NAN_DATA_IFACE_DELETE_FAILED; *roam_status = eCSR_ROAM_NDP_STATUS_UPDATE; - *roam_result = eCSR_ROAM_RESULT_NDP_DELETE_RSP; - roam_info->ndp.ndi_delete_params.status = QDF_STATUS_E_FAILURE; + *roam_result = eCSR_ROAM_RESULT_NDI_DELETE_RSP; break; default: sms_log(mac_ctx, LOGE, @@ -431,6 +414,7 @@ void csr_roam_update_ndp_return_params(tpAniSirGlobal mac_ctx, QDF_STATUS csr_process_ndp_initiator_request(tpAniSirGlobal mac_ctx, tSmeCmd *cmd) { + QDF_STATUS status; struct sir_sme_ndp_initiator_req *lim_msg; uint16_t msg_len; uint8_t *self_mac_addr = NULL; @@ -462,7 +446,20 @@ QDF_STATUS csr_process_ndp_initiator_request(tpAniSirGlobal mac_ctx, sms_log(mac_ctx, LOG1, FL("selfMac = "MAC_ADDRESS_STR), MAC_ADDR_ARRAY(self_mac_addr)); - return cds_send_mb_message_to_mac(lim_msg); + status = cds_send_mb_message_to_mac(lim_msg); + if (status != QDF_STATUS_SUCCESS) { + /* + * If fail, free up the ndp_cfg and ndp_app_info + * allocated in sme. + */ + qdf_mem_free(cmd->u.initiator_req.ndp_info.ndp_app_info); + qdf_mem_free(cmd->u.initiator_req.ndp_config.ndp_cfg); + cmd->u.initiator_req.ndp_info.ndp_app_info_len = 0; + cmd->u.initiator_req.ndp_config.ndp_cfg_len = 0; + cmd->u.initiator_req.ndp_config.ndp_cfg = NULL; + cmd->u.initiator_req.ndp_info.ndp_app_info = NULL; + } + return status; } /** diff --git a/core/wma/src/wma_nan_datapath.c b/core/wma/src/wma_nan_datapath.c index c55a1d34fc91..60b26384d7dd 100644 --- a/core/wma/src/wma_nan_datapath.c +++ b/core/wma/src/wma_nan_datapath.c @@ -56,18 +56,18 @@ QDF_STATUS wma_handle_ndp_initiator_req(tp_wma_handle wma_handle, void *req) if (NULL == ndp_req) { WMA_LOGE(FL("Invalid ndp_req.")); - goto send_ndi_initiator_fail; + goto send_ndp_initiator_fail; } vdev_id = ndp_req->vdev_id; vdev = wma_find_vdev_by_id(wma_handle, vdev_id); if (!vdev) { WMA_LOGE(FL("vdev not found for vdev id %d."), vdev_id); - goto send_ndi_initiator_fail; + goto send_ndp_initiator_fail; } if (!WMA_IS_VDEV_IN_NDI_MODE(wma_handle->interfaces, vdev_id)) { WMA_LOGE(FL("vdev :%d, not in NDI mode"), vdev_id); - goto send_ndi_initiator_fail; + goto send_ndp_initiator_fail; } /* @@ -82,7 +82,7 @@ QDF_STATUS wma_handle_ndp_initiator_req(tp_wma_handle wma_handle, void *req) buf = wmi_buf_alloc(wma_handle->wmi_handle, len); if (!buf) { WMA_LOGE(FL("wmi_buf_alloc failed")); - goto send_ndi_initiator_fail; + goto send_ndp_initiator_fail; } cmd = (wmi_ndp_initiator_req_fixed_param *) wmi_buf_data(buf); WMITLV_SET_HDR(&cmd->tlv_header, @@ -141,18 +141,18 @@ QDF_STATUS wma_handle_ndp_initiator_req(tp_wma_handle wma_handle, void *req) WMA_LOGE(FL("WMI_NDP_INITIATOR_REQ_CMDID failed, ret: %d"), ret); wmi_buf_free(buf); - goto send_ndi_initiator_fail; + goto send_ndp_initiator_fail; } return QDF_STATUS_SUCCESS; -send_ndi_initiator_fail: +send_ndp_initiator_fail: status = QDF_STATUS_E_FAILURE; if (ndp_req) { ndp_rsp.vdev_id = ndp_req->vdev_id; ndp_rsp.transaction_id = ndp_req->transaction_id; ndp_rsp.ndp_instance_id = ndp_req->service_instance_id; - ndp_rsp.status = NDP_CMD_RSP_STATUS_ERROR; + ndp_rsp.status = NDP_DATA_INITIATOR_REQ_FAILED; } else { /* unblock SME queue, but do not send rsp to HDD */ pe_msg.bodyval = true; @@ -198,12 +198,12 @@ QDF_STATUS wma_handle_ndp_responder_req(tp_wma_handle wma_handle, vdev = wma_find_vdev_by_id(wma_handle, vdev_id); if (!vdev) { WMA_LOGE(FL("vdev not found for vdev id %d."), vdev_id); - goto send_ndi_responder_fail; + goto send_ndp_responder_fail; } if (!WMA_IS_VDEV_IN_NDI_MODE(wma_handle->interfaces, vdev_id)) { WMA_LOGE(FL("vdev :$%d, not in NDI mode"), vdev_id); - goto send_ndi_responder_fail; + goto send_ndp_responder_fail; } /* @@ -219,7 +219,7 @@ QDF_STATUS wma_handle_ndp_responder_req(tp_wma_handle wma_handle, buf = wmi_buf_alloc(wma_handle->wmi_handle, len); if (!buf) { WMA_LOGE(FL("wmi_buf_alloc failed")); - goto send_ndi_responder_fail; + goto send_ndp_responder_fail; } cmd = (wmi_ndp_responder_req_fixed_param *) wmi_buf_data(buf); WMITLV_SET_HDR(&cmd->tlv_header, @@ -265,14 +265,15 @@ QDF_STATUS wma_handle_ndp_responder_req(tp_wma_handle wma_handle, WMA_LOGE(FL("WMI_NDP_RESPONDER_REQ_CMDID failed, ret: %d"), ret); wmi_buf_free(buf); - goto send_ndi_responder_fail; + goto send_ndp_responder_fail; } return QDF_STATUS_SUCCESS; -send_ndi_responder_fail: +send_ndp_responder_fail: qdf_mem_zero(&rsp, sizeof(rsp)); rsp.vdev_id = req_params->vdev_id; rsp.transaction_id = req_params->transaction_id; - rsp.status = QDF_STATUS_E_FAILURE; + rsp.status = NDP_RSP_STATUS_ERROR; + rsp.reason = NDP_DATA_RESPONDER_REQ_FAILED; pe_msg.bodyptr = &rsp; pe_msg.type = SIR_HAL_NDP_RESPONDER_RSP; @@ -348,7 +349,8 @@ QDF_STATUS wma_handle_ndp_end_req(tp_wma_handle wma_handle, void *ptr) send_ndp_end_fail: pe_msg.type = SIR_HAL_NDP_END_RSP; if (req) { - end_rsp.status = NDP_CMD_RSP_STATUS_ERROR; + end_rsp.status = NDP_RSP_STATUS_ERROR; + end_rsp.reason = NDP_END_FAILED; end_rsp.transaction_id = req->transaction_id; pe_msg.bodyptr = &end_rsp; } else { @@ -601,6 +603,7 @@ static int wma_ndp_end_response_event_handler(void *handle, if (end_rsp->num_peers == 0) { WMA_LOGE(FL("num_peers in NDP rsp should not be 0.")); end_rsp->status = NDP_CMD_RSP_STATUS_ERROR; + end_rsp->reason = NDP_END_FAILED; goto send_ndp_end_rsp; } /* copy per peer response to return path buffer */ @@ -732,6 +735,7 @@ static int wma_ndp_initiator_rsp_event_handler(void *handle, ndp_rsp.transaction_id = fixed_params->transaction_id; ndp_rsp.ndp_instance_id = fixed_params->ndp_instance_id; ndp_rsp.status = fixed_params->rsp_status; + ndp_rsp.reason = fixed_params->reason_code; pe_msg.type = SIR_HAL_NDP_INITIATOR_RSP; pe_msg.bodyptr = &ndp_rsp; |
