Commit 20b14cdc authored by Jim Harris's avatar Jim Harris
Browse files

rdma_utils: add spdk_rdma_cm_id_get_numa_id()



Signed-off-by: default avatarJim Harris <jim.harris@samsung.com>
Change-Id: Id1a39601b23b51605c45a1c6ea817af0152f6819
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/24511


Community-CI: Mellanox Build Bot
Reviewed-by: default avatarBen Walker <ben@nvidia.com>
Reviewed-by: default avatarGangCao <gang.cao@intel.com>
Reviewed-by: default avatarKonrad Sztyber <konrad.sztyber@intel.com>
Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
parent 87a2b42b
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -131,6 +131,15 @@ struct spdk_memory_domain *spdk_rdma_utils_get_memory_domain(struct ibv_pd *pd);
 */
int spdk_rdma_utils_put_memory_domain(struct spdk_memory_domain *_domain);

struct rdma_cm_id;
/**
 * Get the NUMA ID for the local interface associated with the given cm_id.
 *
 * \param cm_id cm_id
 * \return NUMA ID
 */
int32_t spdk_rdma_cm_id_get_numa_id(struct rdma_cm_id *cm_id);

#ifdef __cplusplus
}
#endif
+31 −0
Original line number Diff line number Diff line
@@ -8,6 +8,8 @@
#include "spdk/log.h"
#include "spdk/string.h"
#include "spdk/likely.h"
#include "spdk/net.h"
#include "spdk/file.h"

#include "spdk_internal/assert.h"

@@ -519,3 +521,32 @@ spdk_rdma_utils_put_memory_domain(struct spdk_memory_domain *_domain)

	return 0;
}

int32_t
spdk_rdma_cm_id_get_numa_id(struct rdma_cm_id *cm_id)
{
	struct sockaddr	*sa;
	char		addr[64];
	char		ifc[64];
	uint32_t	numa_id;
	int		rc;

	sa = rdma_get_local_addr(cm_id);
	if (sa == NULL) {
		return SPDK_ENV_NUMA_ID_ANY;
	}
	rc = spdk_net_get_address_string(sa, addr, sizeof(addr));
	if (rc) {
		return SPDK_ENV_NUMA_ID_ANY;
	}
	rc = spdk_net_get_interface_name(addr, ifc, sizeof(ifc));
	if (rc) {
		return SPDK_ENV_NUMA_ID_ANY;
	}
	rc = spdk_read_sysfs_attribute_uint32(&numa_id,
					      "/sys/class/net/%s/device/numa_node", ifc);
	if (rc || numa_id > INT32_MAX) {
		return SPDK_ENV_NUMA_ID_ANY;
	}
	return (int32_t)numa_id;
}
+1 −0
Original line number Diff line number Diff line
@@ -9,6 +9,7 @@
	spdk_rdma_utils_put_pd;
	spdk_rdma_utils_get_memory_domain;
	spdk_rdma_utils_put_memory_domain;
	spdk_rdma_cm_id_get_numa_id;

	local: *;
};