Skip to content

Commit

Permalink
prov/net: Enable io_uring send/sendv through sockapi
Browse files Browse the repository at this point in the history
Signed-off-by: Sylvain Didelot <sdidelot@ddn.com>
  • Loading branch information
sydidelot committed Oct 27, 2022
1 parent 17c2d12 commit ffa47f0
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 10 deletions.
1 change: 1 addition & 0 deletions prov/net/src/xnet.h
Expand Up @@ -301,6 +301,7 @@ struct xnet_progress {

struct xnet_uring tx_uring;
struct xnet_uring rx_uring;
struct ofi_sockapi sockapi;

struct ofi_dynpoll epoll_fd;

Expand Down
12 changes: 2 additions & 10 deletions prov/net/src/xnet_ep.c
Expand Up @@ -44,14 +44,6 @@ extern struct fi_ops_rma xnet_rma_ops;
extern struct fi_ops_msg xnet_msg_ops;
extern struct fi_ops_tagged xnet_tagged_ops;

static struct ofi_sockapi xnet_sockapi =
{
.send = ofi_sockapi_send_socket,
.sendv = ofi_sockapi_sendv_socket,
.recv = ofi_sockapi_recv_socket,
.recvv = ofi_sockapi_recvv_socket,
};

void xnet_hdr_none(struct xnet_base_hdr *hdr)
{
/* no-op */
Expand Down Expand Up @@ -630,8 +622,8 @@ int xnet_endpoint(struct fid_domain *domain, struct fi_info *info,
if (ret)
goto err1;

ofi_bsock_init(&ep->bsock, &xnet_sockapi, xnet_staging_sbuf_size,
xnet_prefetch_rbuf_size);
ofi_bsock_init(&ep->bsock, &xnet_ep2_progress(ep)->sockapi,
xnet_staging_sbuf_size, xnet_prefetch_rbuf_size);
if (info->handle) {
if (((fid_t) info->handle)->fclass == FI_CLASS_PEP) {
pep = container_of(info->handle, struct xnet_pep,
Expand Down
22 changes: 22 additions & 0 deletions prov/net/src/xnet_progress.c
Expand Up @@ -46,6 +46,22 @@

static ssize_t (*xnet_start_op[ofi_op_write + 1])(struct xnet_ep *ep);

static struct ofi_sockapi xnet_sockapi_uring =
{
.send = ofi_sockapi_send_uring,
.sendv = ofi_sockapi_sendv_uring,
.recv = ofi_sockapi_recv_socket,
.recvv = ofi_sockapi_recvv_socket,
};

static struct ofi_sockapi xnet_sockapi_socket =
{
.send = ofi_sockapi_send_socket,
.sendv = ofi_sockapi_sendv_socket,
.recv = ofi_sockapi_recv_socket,
.recvv = ofi_sockapi_recvv_socket,
};


static void xnet_update_pollflag(struct xnet_ep *ep, short pollflag, bool set)
{
Expand Down Expand Up @@ -1164,6 +1180,12 @@ int xnet_init_progress(struct xnet_progress *progress, struct fi_info *info)
POLLIN, &progress->rx_uring.fid);
if (ret)
goto err8;

progress->sockapi = xnet_sockapi_uring;
progress->sockapi.tx_io_uring = &progress->tx_uring.ring;
progress->sockapi.rx_io_uring = &progress->rx_uring.ring;
} else {
progress->sockapi = xnet_sockapi_socket;
}

return 0;
Expand Down

0 comments on commit ffa47f0

Please sign in to comment.