Selaa lähdekoodia

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
Naveen Rawat 7 vuotta sitten
vanhempi
sitoutus
95eb4063a3
2 muutettua tiedostoa jossa 8 lisäystä ja 1 poistoa
  1. 6 1
      core/hdd/src/wlan_hdd_assoc.c
  2. 2 0
      core/hdd/src/wlan_hdd_object_manager.c

+ 6 - 1
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);

+ 2 - 0
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;