Commit 7521dc6f authored by Krzysztof Karas's avatar Krzysztof Karas Committed by Tomasz Zawadzki
Browse files

sock: replace sock impl priorities



Instead of using socket priorities, use a macro to set the default
implementation.
POSIX is the simplest impl compared to other sockets in SPDK and it
should be used as default (POSIX is most likely to be present at all
times and has the minimal requirements to work).

Change-Id: I8f0dc47777183154773ac6905aa9306418657e06
Signed-off-by: default avatarKrzysztof Karas <krzysztof.karas@intel.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/22139


Reviewed-by: default avatarAleksey Marchuk <alexeymar@nvidia.com>
Community-CI: Mellanox Build Bot
Reviewed-by: default avatarJim Harris <jim.harris@samsung.com>
Reviewed-by: default avatarTomasz Zawadzki <tomasz.zawadzki@intel.com>
Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
parent 4061ed11
Loading
Loading
Loading
Loading
+10 −4
Original line number Diff line number Diff line
@@ -77,7 +77,6 @@ struct spdk_sock_map {

struct spdk_net_impl {
	const char *name;
	int priority;

	int (*getaddr)(struct spdk_sock *sock, char *saddr, int slen, uint16_t *sport, char *caddr,
		       int clen, uint16_t *cport);
@@ -117,12 +116,19 @@ struct spdk_net_impl {
	STAILQ_ENTRY(spdk_net_impl) link;
};

void spdk_net_impl_register(struct spdk_net_impl *impl, int priority);
void spdk_net_impl_register(struct spdk_net_impl *impl);

#define SPDK_NET_IMPL_REGISTER(name, impl, priority) \
#define SPDK_NET_IMPL_REGISTER(name, impl) \
static void __attribute__((constructor)) net_impl_register_##name(void) \
{ \
	spdk_net_impl_register(impl, priority); \
	spdk_net_impl_register(impl); \
}

#define SPDK_NET_IMPL_REGISTER_DEFAULT(name, impl) \
static void __attribute__((constructor)) net_impl_register_default_##name(void) \
{ \
	spdk_net_impl_register(impl); \
	spdk_sock_set_default_impl(SPDK_STRINGIFY(name)); \
}

size_t spdk_sock_group_get_buf(struct spdk_sock_group *group, void **buf, void **ctx);
+2 −24
Original line number Diff line number Diff line
@@ -910,25 +910,10 @@ spdk_sock_write_config_json(struct spdk_json_write_ctx *w)
}

void
spdk_net_impl_register(struct spdk_net_impl *impl, int priority)
spdk_net_impl_register(struct spdk_net_impl *impl)
{
	struct spdk_net_impl *cur, *prev;

	impl->priority = priority;
	prev = NULL;
	STAILQ_FOREACH(cur, &g_net_impls, link) {
		if (impl->priority > cur->priority) {
			break;
		}
		prev = cur;
	}

	if (prev) {
		STAILQ_INSERT_AFTER(&g_net_impls, prev, impl, link);
	} else {
	STAILQ_INSERT_HEAD(&g_net_impls, impl, link);
}
}

int
spdk_sock_set_default_impl(const char *impl_name)
@@ -965,17 +950,10 @@ spdk_sock_set_default_impl(const char *impl_name)
const char *
spdk_sock_get_default_impl(void)
{
	struct spdk_net_impl *impl = NULL;

	if (g_default_impl) {
		return g_default_impl->name;
	}

	impl = STAILQ_FIRST(&g_net_impls);
	if (impl) {
		return impl->name;
	}

	return NULL;
}

+2 −2
Original line number Diff line number Diff line
@@ -2219,7 +2219,7 @@ static struct spdk_net_impl g_posix_net_impl = {
	.set_opts	= posix_sock_impl_set_opts,
};

SPDK_NET_IMPL_REGISTER(posix, &g_posix_net_impl, DEFAULT_SOCK_PRIORITY + 1);
SPDK_NET_IMPL_REGISTER_DEFAULT(posix, &g_posix_net_impl);

static struct spdk_sock *
ssl_sock_listen(const char *ip, int port, struct spdk_sock_opts *opts)
@@ -2268,5 +2268,5 @@ static struct spdk_net_impl g_ssl_net_impl = {
	.set_opts	= ssl_sock_impl_set_opts,
};

SPDK_NET_IMPL_REGISTER(ssl, &g_ssl_net_impl, DEFAULT_SOCK_PRIORITY);
SPDK_NET_IMPL_REGISTER(ssl, &g_ssl_net_impl);
SPDK_LOG_REGISTER_COMPONENT(sock_posix)
+1 −1
Original line number Diff line number Diff line
@@ -2038,4 +2038,4 @@ static struct spdk_net_impl g_uring_net_impl = {
	.set_opts		= uring_sock_impl_set_opts,
};

SPDK_NET_IMPL_REGISTER(uring, &g_uring_net_impl, DEFAULT_SOCK_PRIORITY + 2);
SPDK_NET_IMPL_REGISTER(uring, &g_uring_net_impl);
+2 −1
Original line number Diff line number Diff line
@@ -21,7 +21,8 @@ DEFINE_STUB(spdk_sock_map_lookup, int, (struct spdk_sock_map *map, int placement
DEFINE_STUB(spdk_sock_map_find_free, int, (struct spdk_sock_map *map), -1);
DEFINE_STUB_V(spdk_sock_map_cleanup, (struct spdk_sock_map *map));

DEFINE_STUB_V(spdk_net_impl_register, (struct spdk_net_impl *impl, int priority));
DEFINE_STUB_V(spdk_net_impl_register, (struct spdk_net_impl *impl));
DEFINE_STUB(spdk_sock_set_default_impl, int, (const char *impl_name), 0);
DEFINE_STUB(spdk_sock_close, int, (struct spdk_sock **s), 0);
DEFINE_STUB(spdk_sock_group_provide_buf, int, (struct spdk_sock_group *group, void *buf,
		size_t len, void *ctx), 0);
Loading