|
@@ -1,6 +1,6 @@
|
|
|
/*
|
|
|
* Copyright (c) 2011-2021 The Linux Foundation. All rights reserved.
|
|
|
- * Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
|
|
+ * Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
|
|
*
|
|
|
* Permission to use, copy, modify, and/or distribute this software for
|
|
|
* any purpose with or without fee is hereby granted, provided that the
|
|
@@ -1491,6 +1491,49 @@ station_adv_stats_cb_fail:
|
|
|
}
|
|
|
|
|
|
#ifdef WLAN_FEATURE_11BE_MLO
|
|
|
+/**
|
|
|
+ * wlan_cfg80211_get_mlstats_vdev_peer - get peer per ml vdev
|
|
|
+ * @psoc: pointer to psoc struct
|
|
|
+ * @req_info: pointer to request info struct
|
|
|
+ *
|
|
|
+ * Return: QDF_STATUS_SUCCESS on success
|
|
|
+ */
|
|
|
+static QDF_STATUS
|
|
|
+wlan_cfg80211_get_mlstats_vdev_peer(struct wlan_objmgr_psoc *psoc,
|
|
|
+ struct request_info *req_info)
|
|
|
+{
|
|
|
+ struct wlan_objmgr_vdev *vdev;
|
|
|
+ struct wlan_objmgr_peer *peer;
|
|
|
+ struct mlo_stats_vdev_params *info = &req_info->ml_vdev_info;
|
|
|
+ int i;
|
|
|
+
|
|
|
+ for (i = 0; i < info->ml_vdev_count; i++) {
|
|
|
+ vdev = wlan_objmgr_get_vdev_by_id_from_psoc(psoc,
|
|
|
+ info->ml_vdev_id[i],
|
|
|
+ WLAN_OSIF_STATS_ID);
|
|
|
+ if (!vdev) {
|
|
|
+ hdd_err("vdev object is NULL for vdev %d",
|
|
|
+ info->ml_vdev_id[i]);
|
|
|
+ return QDF_STATUS_E_INVAL;
|
|
|
+ }
|
|
|
+
|
|
|
+ peer = wlan_objmgr_vdev_try_get_bsspeer(vdev,
|
|
|
+ WLAN_OSIF_STATS_ID);
|
|
|
+ if (!peer) {
|
|
|
+ hdd_err("peer is null");
|
|
|
+ wlan_objmgr_vdev_release_ref(vdev, WLAN_OSIF_STATS_ID);
|
|
|
+ return QDF_STATUS_E_INVAL;
|
|
|
+ }
|
|
|
+
|
|
|
+ qdf_mem_copy(&req_info->ml_peer_mac_addr[i][0], peer->macaddr,
|
|
|
+ QDF_MAC_ADDR_SIZE);
|
|
|
+
|
|
|
+ wlan_objmgr_peer_release_ref(peer, WLAN_OSIF_STATS_ID);
|
|
|
+ wlan_objmgr_vdev_release_ref(vdev, WLAN_OSIF_STATS_ID);
|
|
|
+ }
|
|
|
+ return QDF_STATUS_SUCCESS;
|
|
|
+}
|
|
|
+
|
|
|
static QDF_STATUS
|
|
|
wlan_cfg80211_get_mlstats_vdev_params(struct wlan_objmgr_vdev *vdev,
|
|
|
struct request_info *info)
|
|
@@ -1513,7 +1556,8 @@ wlan_cfg80211_get_mlstats_vdev_params(struct wlan_objmgr_vdev *vdev,
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- return QDF_STATUS_SUCCESS;
|
|
|
+ status = wlan_cfg80211_get_mlstats_vdev_peer(psoc, info);
|
|
|
+ return status;
|
|
|
}
|
|
|
#else
|
|
|
static QDF_STATUS
|