From cb0a5b0bf4ff644ffd3506a8e5e7a2a1b0945f98 Mon Sep 17 00:00:00 2001 From: Naveen Rawat Date: Wed, 30 May 2018 17:47:15 -0700 Subject: [PATCH] qcacmn: Fix NDI create sequence Create NDI vdev after adapter is added to back of hdd adapter list, so that vdev create completion callback can identify right adapter and set corresponding completion variable. Change-Id: Id0d78a5e482c875fee346224f37c29a874814133 CRs-Fixed: 2252031 --- os_if/linux/nan/src/os_if_nan.c | 16 +++++----------- umac/nan/core/inc/nan_public_structs.h | 4 ++-- 2 files changed, 7 insertions(+), 13 deletions(-) diff --git a/os_if/linux/nan/src/os_if_nan.c b/os_if/linux/nan/src/os_if_nan.c index bf8b29c5d6fc..6a08c88adbdc 100644 --- a/os_if/linux/nan/src/os_if_nan.c +++ b/os_if/linux/nan/src/os_if_nan.c @@ -135,6 +135,7 @@ vendor_attr_policy[QCA_WLAN_VENDOR_ATTR_NDP_PARAMS_MAX + 1] = { static int os_if_nan_process_ndi_create(struct wlan_objmgr_psoc *psoc, struct nlattr **tb) { + int ret; char *iface_name; QDF_STATUS status; uint16_t transaction_id; @@ -169,21 +170,14 @@ static int os_if_nan_process_ndi_create(struct wlan_objmgr_psoc *psoc, return -EINVAL; } - nan_vdev = cb_obj.ndi_open(iface_name); - - if (!nan_vdev) { + ret = cb_obj.ndi_open(iface_name); + if (ret) { cfg80211_err("ndi_open failed"); - return -EINVAL; + return ret; } - /* - * Create transaction id is required to be saved since the firmware - * does not honor the transaction id for create request - */ - ucfg_nan_set_ndp_create_transaction_id(nan_vdev, transaction_id); - ucfg_nan_set_ndi_state(nan_vdev, NAN_DATA_NDI_CREATING_STATE); - return cb_obj.ndi_start(wlan_vdev_get_id(nan_vdev)); + return cb_obj.ndi_start(iface_name, transaction_id); } static int os_if_nan_process_ndi_delete(struct wlan_objmgr_psoc *psoc, diff --git a/umac/nan/core/inc/nan_public_structs.h b/umac/nan/core/inc/nan_public_structs.h index a4da6e8225b3..1ac7483a7c1e 100644 --- a/umac/nan/core/inc/nan_public_structs.h +++ b/umac/nan/core/inc/nan_public_structs.h @@ -589,8 +589,8 @@ struct nan_callbacks { struct wlan_objmgr_vdev *vdev, uint32_t type, void *msg); - struct wlan_objmgr_vdev* (*ndi_open)(char *iface_name); - int (*ndi_start)(uint8_t); + int (*ndi_open)(char *iface_name); + int (*ndi_start)(char *iface_name, uint16_t); void (*ndi_close)(uint8_t); int (*ndi_delete)(uint8_t, char *iface_name, uint16_t transaction_id); void (*drv_ndi_create_rsp_handler)(uint8_t,