@@ -316,7 +316,7 @@ struct xsk_umem *xsk_umem__create_opts(void *umem_area,
316
316
err = - EINVAL ;
317
317
goto err ;
318
318
}
319
- fd = OPTS_GET (opts , fd , -1 );
319
+ fd = OPTS_GET (opts , fd , 0 );
320
320
size = OPTS_GET (opts , size , 0 );
321
321
322
322
if (!size && !xsk_page_aligned (umem_area )) {
@@ -330,7 +330,7 @@ struct xsk_umem *xsk_umem__create_opts(void *umem_area,
330
330
goto err ;
331
331
}
332
332
333
- umem -> fd = fd < 0 ? socket (AF_XDP , SOCK_RAW , 0 ) : fd ;
333
+ umem -> fd = fd > 0 ? fd : socket (AF_XDP , SOCK_RAW , 0 );
334
334
if (umem -> fd < 0 ) {
335
335
err = - errno ;
336
336
goto out_umem_alloc ;
@@ -379,26 +379,37 @@ int xsk_umem__create_with_fd(struct xsk_umem **umem_ptr, int fd,
379
379
struct xsk_ring_cons * comp ,
380
380
const struct xsk_umem_config * usr_config )
381
381
{
382
+ __u32 fill_size , comp_size , frame_size , frame_headroom , flags ;
382
383
struct xsk_umem * umem ;
383
384
384
385
if (!umem_ptr )
385
386
return - EFAULT ;
386
387
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
+
387
404
DECLARE_LIBXDP_OPTS (xsk_umem_opts , opts ,
388
405
.fd = fd ,
389
406
.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 ,
400
412
);
401
-
402
413
umem = xsk_umem__create_opts (umem_area , fill , comp , & opts );
403
414
if (!umem )
404
415
return errno ;
@@ -412,7 +423,7 @@ int xsk_umem__create(struct xsk_umem **umem_ptr, void *umem_area,
412
423
struct xsk_ring_cons * comp ,
413
424
const struct xsk_umem_config * usr_config )
414
425
{
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 ,
416
427
fill , comp , usr_config );
417
428
}
418
429
0 commit comments