Lines Matching full:xsk

37 #include "xsk.h"
97 int xsk_socket__fd(const struct xsk_socket *xsk) in xsk_socket__fd() argument
99 return xsk ? xsk->fd : -EINVAL; in xsk_socket__fd()
448 int xsk_update_xskmap(struct bpf_map *map, struct xsk_socket *xsk, u32 index) in xsk_update_xskmap() argument
453 sock_fd = xsk_socket__fd(xsk); in xsk_update_xskmap()
502 static struct xsk_ctx *xsk_create_ctx(struct xsk_socket *xsk, in xsk_create_ctx() argument
516 err = xsk_create_umem_rings(umem, xsk->fd, fill, comp); in xsk_create_ctx()
551 struct xsk_socket *xsk; in xsk_socket__create_shared() local
560 xsk = calloc(1, sizeof(*xsk)); in xsk_socket__create_shared()
561 if (!xsk) in xsk_socket__create_shared()
564 err = xsk_set_xdp_socket_config(&xsk->config, usr_config); in xsk_socket__create_shared()
569 xsk->fd = socket(AF_XDP, SOCK_RAW | SOCK_CLOEXEC, 0); in xsk_socket__create_shared()
570 if (xsk->fd < 0) { in xsk_socket__create_shared()
575 xsk->fd = umem->fd; in xsk_socket__create_shared()
587 ctx = xsk_create_ctx(xsk, umem, ifindex, queue_id, fill, comp); in xsk_socket__create_shared()
593 xsk->ctx = ctx; in xsk_socket__create_shared()
596 err = setsockopt(xsk->fd, SOL_XDP, XDP_RX_RING, in xsk_socket__create_shared()
597 &xsk->config.rx_size, in xsk_socket__create_shared()
598 sizeof(xsk->config.rx_size)); in xsk_socket__create_shared()
603 if (xsk->fd == umem->fd) in xsk_socket__create_shared()
607 err = setsockopt(xsk->fd, SOL_XDP, XDP_TX_RING, in xsk_socket__create_shared()
608 &xsk->config.tx_size, in xsk_socket__create_shared()
609 sizeof(xsk->config.tx_size)); in xsk_socket__create_shared()
614 if (xsk->fd == umem->fd) in xsk_socket__create_shared()
618 err = xsk_get_mmap_offsets(xsk->fd, &off); in xsk_socket__create_shared()
626 xsk->config.rx_size * sizeof(struct xdp_desc), in xsk_socket__create_shared()
628 xsk->fd, XDP_PGOFF_RX_RING); in xsk_socket__create_shared()
634 rx->mask = xsk->config.rx_size - 1; in xsk_socket__create_shared()
635 rx->size = xsk->config.rx_size; in xsk_socket__create_shared()
643 xsk->rx = rx; in xsk_socket__create_shared()
647 xsk->config.tx_size * sizeof(struct xdp_desc), in xsk_socket__create_shared()
649 xsk->fd, XDP_PGOFF_TX_RING); in xsk_socket__create_shared()
655 tx->mask = xsk->config.tx_size - 1; in xsk_socket__create_shared()
656 tx->size = xsk->config.tx_size; in xsk_socket__create_shared()
665 tx->cached_cons = *tx->consumer + xsk->config.tx_size; in xsk_socket__create_shared()
667 xsk->tx = tx; in xsk_socket__create_shared()
676 sxdp.sxdp_flags = xsk->config.bind_flags; in xsk_socket__create_shared()
679 err = bind(xsk->fd, (struct sockaddr *)&sxdp, sizeof(sxdp)); in xsk_socket__create_shared()
685 *xsk_ptr = xsk; in xsk_socket__create_shared()
693 xsk->config.tx_size * sizeof(struct xdp_desc)); in xsk_socket__create_shared()
697 xsk->config.rx_size * sizeof(struct xdp_desc)); in xsk_socket__create_shared()
702 close(xsk->fd); in xsk_socket__create_shared()
704 free(xsk); in xsk_socket__create_shared()
746 void xsk_socket__delete(struct xsk_socket *xsk) in xsk_socket__delete() argument
754 if (!xsk) in xsk_socket__delete()
757 ctx = xsk->ctx; in xsk_socket__delete()
762 err = xsk_get_mmap_offsets(xsk->fd, &off); in xsk_socket__delete()
764 if (xsk->rx) { in xsk_socket__delete()
765 munmap(xsk->rx->ring - off.rx.desc, in xsk_socket__delete()
766 off.rx.desc + xsk->config.rx_size * desc_sz); in xsk_socket__delete()
768 if (xsk->tx) { in xsk_socket__delete()
769 munmap(xsk->tx->ring - off.tx.desc, in xsk_socket__delete()
770 off.tx.desc + xsk->config.tx_size * desc_sz); in xsk_socket__delete()
778 if (xsk->fd != umem->fd) in xsk_socket__delete()
779 close(xsk->fd); in xsk_socket__delete()
780 free(xsk); in xsk_socket__delete()