Ver código fonte

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
Naveen Rawat 7 anos atrás
pai
commit
b7be1ed72c
2 arquivos alterados com 16 adições e 1 exclusões
  1. 15 0
      core/hdd/src/wlan_hdd_nan_datapath.c
  2. 1 1
      core/sme/src/common/sme_api.c

+ 15 - 0
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) {

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