Commit a59d7e01 authored by Alexey Marchuk's avatar Alexey Marchuk Committed by Konrad Sztyber
Browse files

lib/mlx5: Add API to check if UMR registration supported



The 2 new APIs are used for negotiation between different
modules to use accel sequence/UMR

Signed-off-by: default avatarAlexey Marchuk <alexeymar@nvidia.com>
Change-Id: Ifca6a3e3a7649e48392785d7a977e1b468dbf4be
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/24700


Reviewed-by: default avatarShuhei Matsumoto <smatsumoto@nvidia.com>
Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarKonrad Sztyber <konrad.sztyber@intel.com>
Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com>
Community-CI: Community CI Samsung <spdk.community.ci.samsung@gmail.com>
Community-CI: Mellanox Build Bot
parent f6925f5e
Loading
Loading
Loading
Loading
+14 −0
Original line number Diff line number Diff line
@@ -499,4 +499,18 @@ int spdk_mlx5_mkey_pool_get_bulk(struct spdk_mlx5_mkey_pool *pool,
void spdk_mlx5_mkey_pool_put_bulk(struct spdk_mlx5_mkey_pool *pool,
				  struct spdk_mlx5_mkey_pool_obj **mkeys, uint32_t mkeys_count);

/**
 * Notify the mlx5 library that a module which can handle UMR configuration is registered or unregistered
 *
 * \param registered True if the module is registered, false otherwise
 */
void spdk_mlx5_umr_implementer_register(bool registered);

/**
 * Check whether a module which can handle UMR configuration is registered or not
 *
 * \return True of the UMR implementer is registered, false otherwise
 */
bool spdk_mlx5_umr_implementer_is_registered(void);

#endif /* SPDK_MLX5_H */
+14 −0
Original line number Diff line number Diff line
@@ -68,6 +68,8 @@ struct spdk_mlx5_mkey_pool {
	TAILQ_ENTRY(spdk_mlx5_mkey_pool) link;
};

static bool g_umr_implementer_registered;

static int
mlx5_key_obj_compare(struct spdk_mlx5_mkey_pool_obj *key1, struct spdk_mlx5_mkey_pool_obj *key2)
{
@@ -1102,3 +1104,15 @@ spdk_mlx5_qp_set_psv(struct spdk_mlx5_qp *qp, uint32_t psv_index, uint32_t crc_s

	return 0;
}

void
spdk_mlx5_umr_implementer_register(bool registered)
{
	g_umr_implementer_registered = registered;
}

bool
spdk_mlx5_umr_implementer_is_registered(void)
{
	return g_umr_implementer_registered;
}
+3 −0
Original line number Diff line number Diff line
@@ -35,5 +35,8 @@
    spdk_mlx5_mkey_pool_get_bulk;
    spdk_mlx5_mkey_pool_put_bulk;

    spdk_mlx5_umr_implementer_register;
    spdk_mlx5_umr_implementer_is_registered;

	local: *;
};
+2 −0
Original line number Diff line number Diff line
@@ -2637,6 +2637,7 @@ accel_mlx5_deinit_cb(void *ctx)
{
	accel_mlx5_free_resources();
	spdk_spin_destroy(&g_accel_mlx5.lock);
	spdk_mlx5_umr_implementer_register(false);
	spdk_accel_module_finish();
}

@@ -2969,6 +2970,7 @@ accel_mlx5_init(void)
		SPDK_NOTICELOG("Enabling mlx5 platform driver\n");
		spdk_accel_driver_register(&g_accel_mlx5_driver);
		spdk_accel_set_driver(g_accel_mlx5_driver.name);
		spdk_mlx5_umr_implementer_register(true);
	}

	return 0;