Browse Source

qcacmn: API to get the number of links for a peer from CP

API to get the number of links for a peer from CP

Change-Id: I63b118a339f591f0a86ddcc29c392dc5f9803e01
CRs-Fixed: 3521689
Sai Rupesh Chevuru 2 years ago
parent
commit
d261c841e3
3 changed files with 15 additions and 18 deletions
  1. 6 0
      dp/inc/cdp_txrx_ops.h
  2. 7 18
      dp/wifi3.0/dp_main.c
  3. 2 0
      umac/mlo_mgr/src/wlan_mlo_mgr_peer_list.c

+ 6 - 0
dp/inc/cdp_txrx_ops.h

@@ -1586,6 +1586,12 @@ struct ol_if_ops {
 					    uint8_t *target_pdev_id);
 	bool (*is_roam_inprogress)(uint32_t vdev_id);
 	enum QDF_GLOBAL_MODE (*get_con_mode)(void);
+#if defined(WLAN_FEATURE_11BE_MLO) && defined(WLAN_MLO_MULTI_CHIP)
+	uint8_t (*peer_get_num_mlo_links)(struct cdp_ctrl_objmgr_psoc *psoc,
+					  uint8_t vdev_id,
+					  uint8_t *peer_macaddr,
+					  bool is_mld_peer);
+#endif
 #ifdef QCA_PEER_MULTIQ_SUPPORT
 	int (*peer_ast_flowid_map)(struct cdp_ctrl_objmgr_psoc *ol_soc_handle,
 				   uint16_t peer_id, uint8_t vdev_id,

+ 7 - 18
dp/wifi3.0/dp_main.c

@@ -4145,25 +4145,14 @@ void dp_peer_delete(struct dp_soc *soc,
 static uint8_t
 dp_mlo_get_num_link_peer(struct dp_soc *soc, struct dp_peer *peer)
 {
-	struct dp_peer *mld_peer = NULL;
-	struct dp_mld_link_peers link_peers_info = {0};
-	uint8_t num_link = 0;
-
-	if (IS_MLO_DP_LINK_PEER(peer))
-		mld_peer = DP_GET_MLD_PEER_FROM_PEER(peer);
-
-	if (IS_MLO_DP_MLD_PEER(peer))
-		mld_peer = peer;
-
-	if (!mld_peer)
-		return 0;
+	if (soc->cdp_soc.ol_ops->peer_get_num_mlo_links)
+		return soc->cdp_soc.ol_ops->peer_get_num_mlo_links(
+				soc->ctrl_psoc,
+				peer->vdev->vdev_id,
+				peer->mac_addr.raw,
+				IS_MLO_DP_MLD_PEER(peer));
 
-	/* get link peers with reference */
-	dp_get_link_peers_ref_from_mld_peer(soc, mld_peer, &link_peers_info,
-					    DP_MOD_ID_CDP);
-	num_link = link_peers_info.num_links;
-	dp_release_link_peers_ref(&link_peers_info, DP_MOD_ID_CDP);
-	return num_link;
+	return 0;
 }
 
 void dp_mlo_peer_delete(struct dp_soc *soc, struct dp_peer *peer, void *arg)

+ 2 - 0
umac/mlo_mgr/src/wlan_mlo_mgr_peer_list.c

@@ -255,6 +255,8 @@ struct wlan_mlo_peer_context *wlan_mlo_get_mlpeer_by_linkmac(
 	return NULL;
 }
 
+qdf_export_symbol(wlan_mlo_get_mlpeer_by_linkmac);
+
 struct wlan_mlo_peer_context *wlan_mlo_get_mlpeer_by_aid(
 				struct wlan_mlo_dev_context *ml_dev,
 				uint16_t assoc_id)