From b7be1ed72c44acece9bdb72d67ba4e2ee4d64682 Mon Sep 17 00:00:00 2001 From: Naveen Rawat Date: Thu, 16 Nov 2017 16:52:08 -0800 Subject: [PATCH] qcacld-3.0: Fix peer addition/removal API calls Call object manager peer create API when NDP peer is create. For peer delete, object manager API is called by deregister sta API. Change-Id: If84c9847d53b5563eea13646f669a6e8b7fd166d CRs-Fixed: 2137426 --- core/hdd/src/wlan_hdd_nan_datapath.c | 15 +++++++++++++++ core/sme/src/common/sme_api.c | 2 +- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/core/hdd/src/wlan_hdd_nan_datapath.c b/core/hdd/src/wlan_hdd_nan_datapath.c index e97d2c9814eb..5649304d26c2 100644 --- a/core/hdd/src/wlan_hdd_nan_datapath.c +++ b/core/hdd/src/wlan_hdd_nan_datapath.c @@ -2308,6 +2308,11 @@ void hdd_ndi_drv_ndi_create_rsp_handler(uint8_t vdev_id, hdd_roam_register_sta(adapter, &roam_info, sta_ctx->broadcast_staid, &bc_mac_addr, &tmp_bss_descp); + if (hdd_objmgr_add_peer_object(adapter->hdd_vdev, + QDF_NDI_MODE, bc_mac_addr.bytes, false)) + hdd_err("Peer object "MAC_ADDRESS_STR" add fails!", + MAC_ADDR_ARRAY(bc_mac_addr.bytes)); + hdd_ctx->sta_to_adapter[sta_ctx->broadcast_staid] = adapter; } @@ -2323,6 +2328,12 @@ void hdd_ndi_drv_ndi_delete_rsp_handler(uint8_t vdev_id) { struct hdd_context *hdd_ctx = cds_get_context(QDF_MODULE_ID_HDD); struct hdd_adapter *adapter = hdd_get_adapter_by_vdev(hdd_ctx, vdev_id); + struct hdd_station_ctx *sta_ctx = WLAN_HDD_GET_STATION_CTX_PTR(adapter); + + hdd_ctx->sta_to_adapter[sta_ctx->broadcast_staid] = NULL; + hdd_roam_deregister_sta(adapter, sta_ctx->broadcast_staid); + hdd_delete_peer(sta_ctx, sta_ctx->broadcast_staid); + sta_ctx->broadcast_staid = HDD_WLAN_INVALID_STA_ID; wlan_hdd_netif_queue_control(adapter, WLAN_STOP_ALL_NETIF_QUEUE_N_CARRIER, @@ -2371,6 +2382,10 @@ int hdd_ndp_new_peer_handler(uint8_t vdev_id, uint16_t sta_id, /* this function is called for each new peer */ hdd_roam_register_sta(adapter, &roam_info, sta_id, peer_mac_addr, &tmp_bss_descp); + if (hdd_objmgr_add_peer_object(adapter->hdd_vdev, + QDF_NDI_MODE, peer_mac_addr->bytes, false)) + hdd_err("Peer object "MAC_ADDRESS_STR" add fails!", + MAC_ADDR_ARRAY(peer_mac_addr->bytes)); hdd_ctx->sta_to_adapter[sta_id] = adapter; /* perform following steps for first new peer ind */ if (fist_peer) { diff --git a/core/sme/src/common/sme_api.c b/core/sme/src/common/sme_api.c index c63bd838feba..fb8a8c2a126c 100644 --- a/core/sme/src/common/sme_api.c +++ b/core/sme/src/common/sme_api.c @@ -15482,7 +15482,7 @@ QDF_STATUS sme_get_rcpi(tHalHandle hal, struct sme_rcpi_req *rcpi) { QDF_STATUS status = QDF_STATUS_E_FAILURE; tpAniSirGlobal pMac = PMAC_STRUCT(hal); - struct scheduler_msg msg; + struct scheduler_msg msg = {0}; struct sme_rcpi_req *rcpi_req; rcpi_req = qdf_mem_malloc(sizeof(*rcpi_req));