Skip to content

Commit 0b7b4a3

Browse files
committed
libxdp: Assign default values for fields in xsk_umem_opts
Use 0 as default(or unset) value for fd when creating umem, also, set fields to their default values if passed in by 0. Signed-off-by: Muyang Tian <[email protected]>
1 parent fb8a8f5 commit 0b7b4a3

File tree

1 file changed

+25
-14
lines changed

1 file changed

+25
-14
lines changed

lib/libxdp/xsk.c

Lines changed: 25 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -316,7 +316,7 @@ struct xsk_umem *xsk_umem__create_opts(void *umem_area,
316316
err = -EINVAL;
317317
goto err;
318318
}
319-
fd = OPTS_GET(opts, fd, -1);
319+
fd = OPTS_GET(opts, fd, 0);
320320
size = OPTS_GET(opts, size, 0);
321321

322322
if (!size && !xsk_page_aligned(umem_area)) {
@@ -330,7 +330,7 @@ struct xsk_umem *xsk_umem__create_opts(void *umem_area,
330330
goto err;
331331
}
332332

333-
umem->fd = fd < 0 ? socket(AF_XDP, SOCK_RAW, 0) : fd;
333+
umem->fd = fd > 0 ? fd : socket(AF_XDP, SOCK_RAW, 0);
334334
if (umem->fd < 0) {
335335
err = -errno;
336336
goto out_umem_alloc;
@@ -379,26 +379,37 @@ int xsk_umem__create_with_fd(struct xsk_umem **umem_ptr, int fd,
379379
struct xsk_ring_cons *comp,
380380
const struct xsk_umem_config *usr_config)
381381
{
382+
__u32 fill_size, comp_size, frame_size, frame_headroom, flags;
382383
struct xsk_umem *umem;
383384

384385
if(!umem_ptr)
385386
return -EFAULT;
386387

388+
if(!usr_config) {
389+
fill_size = XSK_RING_PROD__DEFAULT_NUM_DESCS;
390+
comp_size = XSK_RING_CONS__DEFAULT_NUM_DESCS;
391+
frame_size = XSK_UMEM__DEFAULT_FRAME_SIZE;
392+
frame_headroom = XSK_UMEM__DEFAULT_FRAME_HEADROOM;
393+
flags = XSK_UMEM__DEFAULT_FLAGS;
394+
} else {
395+
/* Set the following fields to their default values if they are passed in as 0 */
396+
fill_size = usr_config->fill_size ? usr_config->fill_size : XSK_RING_PROD__DEFAULT_NUM_DESCS;
397+
comp_size = usr_config->comp_size ? usr_config->comp_size : XSK_RING_CONS__DEFAULT_NUM_DESCS;
398+
frame_size = usr_config->frame_size ? usr_config->frame_size : XSK_UMEM__DEFAULT_FRAME_SIZE;
399+
/* The following fields are 0 by default, just keep them as what they are passed in */
400+
frame_headroom = usr_config->frame_headroom;
401+
flags = usr_config->flags;
402+
}
403+
387404
DECLARE_LIBXDP_OPTS(xsk_umem_opts, opts,
388405
.fd = fd,
389406
.size = size,
390-
.fill_size = usr_config ? usr_config->fill_size
391-
: XSK_RING_PROD__DEFAULT_NUM_DESCS,
392-
.comp_size = usr_config ? usr_config->comp_size
393-
: XSK_RING_CONS__DEFAULT_NUM_DESCS,
394-
.frame_size = usr_config ? usr_config->frame_size
395-
: XSK_UMEM__DEFAULT_FRAME_SIZE,
396-
.frame_headroom = usr_config ? usr_config->frame_headroom
397-
: XSK_UMEM__DEFAULT_FRAME_HEADROOM,
398-
.flags = usr_config ? usr_config->flags
399-
: XSK_UMEM__DEFAULT_FLAGS,
407+
.fill_size = fill_size,
408+
.comp_size = comp_size,
409+
.frame_size = frame_size,
410+
.frame_headroom = frame_headroom,
411+
.flags = flags,
400412
);
401-
402413
umem = xsk_umem__create_opts(umem_area, fill, comp, &opts);
403414
if(!umem)
404415
return errno;
@@ -412,7 +423,7 @@ int xsk_umem__create(struct xsk_umem **umem_ptr, void *umem_area,
412423
struct xsk_ring_cons *comp,
413424
const struct xsk_umem_config *usr_config)
414425
{
415-
return xsk_umem__create_with_fd(umem_ptr, -1, umem_area, size,
426+
return xsk_umem__create_with_fd(umem_ptr, 0, umem_area, size,
416427
fill, comp, usr_config);
417428
}
418429

0 commit comments

Comments
 (0)