From 95eb4063a30e2772ca2db3798ba969cffafe8e2a Mon Sep 17 00:00:00 2001 From: Naveen Rawat Date: Thu, 2 Nov 2017 16:46:41 -0700 Subject: [PATCH] qcacld-3.0: Fix peer_mac addr for NDI in hdd_roam_deregister_sta In function NDI peer is not considered leading to peer_mac address being NULL and API failing for NDI peer. Fix the condition to include NDI device mode and add handling of NDI vdev in hdd_objmgr_add_peer_object. Change-Id: I34b467fdab4a92696d6377306a775f06fadfc1a9 CRs-Fixed: 2137423 --- core/hdd/src/wlan_hdd_assoc.c | 7 ++++++- core/hdd/src/wlan_hdd_object_manager.c | 2 ++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/core/hdd/src/wlan_hdd_assoc.c b/core/hdd/src/wlan_hdd_assoc.c index 9078975e943d..505bb39b9608 100644 --- a/core/hdd/src/wlan_hdd_assoc.c +++ b/core/hdd/src/wlan_hdd_assoc.c @@ -1486,18 +1486,23 @@ QDF_STATUS hdd_roam_deregister_sta(struct hdd_adapter *adapter, uint8_t staid) if (adapter->device_mode == QDF_STA_MODE) { peer_mac = &sta_ctx->conn_info.bssId; - } else if (adapter->device_mode == QDF_IBSS_MODE) { + } else if (adapter->device_mode == QDF_IBSS_MODE || + adapter->device_mode == QDF_NDI_MODE) { if (sta_ctx->broadcast_staid == staid) peer_mac = &broadcastMacAddr; else peer_mac = hdd_wlan_get_ibss_mac_addr_from_staid(adapter, staid); } + if (!peer_mac) { hdd_err("Coudnt find peer MAC for staid %d, delete fails", staid); return QDF_STATUS_E_FAILURE; } + + hdd_debug("peer_mac_addr: "MAC_ADDRESS_STR, + MAC_ADDR_ARRAY(peer_mac->bytes)); ret = hdd_objmgr_remove_peer_object(adapter->hdd_vdev, peer_mac->bytes); if (ret) { hdd_err("Peer obj %pM delete fails", peer_mac); diff --git a/core/hdd/src/wlan_hdd_object_manager.c b/core/hdd/src/wlan_hdd_object_manager.c index 5af1d26f17fe..b26054a8a980 100644 --- a/core/hdd/src/wlan_hdd_object_manager.c +++ b/core/hdd/src/wlan_hdd_object_manager.c @@ -278,6 +278,8 @@ int hdd_objmgr_add_peer_object(struct wlan_objmgr_vdev *vdev, } } else if (adapter_mode == QDF_IBSS_MODE) { peer_type = WLAN_PEER_IBSS; + } else if (adapter_mode == QDF_NDI_MODE) { + peer_type = WLAN_PEER_NDP; } else { hdd_err("Unsupported device mode %d", adapter_mode); return -EINVAL;