Lines Matching defs:xsk

37 #include "xsk.h"
97 int xsk_socket__fd(const struct xsk_socket *xsk)
99 return xsk ? xsk->fd : -EINVAL;
445 int xsk_update_xskmap(struct bpf_map *map, struct xsk_socket *xsk)
451 sock_fd = xsk_socket__fd(xsk);
500 static struct xsk_ctx *xsk_create_ctx(struct xsk_socket *xsk,
514 err = xsk_create_umem_rings(umem, xsk->fd, fill, comp);
549 struct xsk_socket *xsk;
558 xsk = calloc(1, sizeof(*xsk));
559 if (!xsk)
562 err = xsk_set_xdp_socket_config(&xsk->config, usr_config);
567 xsk->fd = socket(AF_XDP, SOCK_RAW | SOCK_CLOEXEC, 0);
568 if (xsk->fd < 0) {
573 xsk->fd = umem->fd;
585 ctx = xsk_create_ctx(xsk, umem, ifindex, queue_id, fill, comp);
591 xsk->ctx = ctx;
594 err = setsockopt(xsk->fd, SOL_XDP, XDP_RX_RING,
595 &xsk->config.rx_size,
596 sizeof(xsk->config.rx_size));
601 if (xsk->fd == umem->fd)
605 err = setsockopt(xsk->fd, SOL_XDP, XDP_TX_RING,
606 &xsk->config.tx_size,
607 sizeof(xsk->config.tx_size));
612 if (xsk->fd == umem->fd)
616 err = xsk_get_mmap_offsets(xsk->fd, &off);
624 xsk->config.rx_size * sizeof(struct xdp_desc),
626 xsk->fd, XDP_PGOFF_RX_RING);
632 rx->mask = xsk->config.rx_size - 1;
633 rx->size = xsk->config.rx_size;
641 xsk->rx = rx;
645 xsk->config.tx_size * sizeof(struct xdp_desc),
647 xsk->fd, XDP_PGOFF_TX_RING);
653 tx->mask = xsk->config.tx_size - 1;
654 tx->size = xsk->config.tx_size;
663 tx->cached_cons = *tx->consumer + xsk->config.tx_size;
665 xsk->tx = tx;
674 sxdp.sxdp_flags = xsk->config.bind_flags;
677 err = bind(xsk->fd, (struct sockaddr *)&sxdp, sizeof(sxdp));
683 *xsk_ptr = xsk;
691 xsk->config.tx_size * sizeof(struct xdp_desc));
695 xsk->config.rx_size * sizeof(struct xdp_desc));
700 close(xsk->fd);
702 free(xsk);
744 void xsk_socket__delete(struct xsk_socket *xsk)
752 if (!xsk)
755 ctx = xsk->ctx;
760 err = xsk_get_mmap_offsets(xsk->fd, &off);
762 if (xsk->rx) {
763 munmap(xsk->rx->ring - off.rx.desc,
764 off.rx.desc + xsk->config.rx_size * desc_sz);
766 if (xsk->tx) {
767 munmap(xsk->tx->ring - off.tx.desc,
768 off.tx.desc + xsk->config.tx_size * desc_sz);
776 if (xsk->fd != umem->fd)
777 close(xsk->fd);
778 free(xsk);