Lines Matching refs:xsk

91 	struct xsk_socket *xsk;  member
203 xsk_socket__delete(xsks[0]->xsk); in int_exit()
313 struct xsk_socket_info *xsk; in xsk_configure_socket() local
318 xsk = calloc(1, sizeof(*xsk)); in xsk_configure_socket()
319 if (!xsk) in xsk_configure_socket()
322 xsk->umem = umem; in xsk_configure_socket()
328 ret = xsk_socket__create(&xsk->xsk, opt_if, opt_queue, umem->umem, in xsk_configure_socket()
329 &xsk->rx, &xsk->tx, &cfg); in xsk_configure_socket()
337 ret = xsk_ring_prod__reserve(&xsk->umem->fq, in xsk_configure_socket()
343 *xsk_ring_prod__fill_addr(&xsk->umem->fq, idx++) = in xsk_configure_socket()
345 xsk_ring_prod__submit(&xsk->umem->fq, in xsk_configure_socket()
348 return xsk; in xsk_configure_socket()
476 static void kick_tx(struct xsk_socket_info *xsk) in kick_tx() argument
480 ret = sendto(xsk_socket__fd(xsk->xsk), NULL, 0, MSG_DONTWAIT, NULL, 0); in kick_tx()
486 static inline void complete_tx_l2fwd(struct xsk_socket_info *xsk, in complete_tx_l2fwd() argument
489 struct xsk_umem_info *umem = xsk->umem; in complete_tx_l2fwd()
494 if (!xsk->outstanding_tx) in complete_tx_l2fwd()
497 if (!opt_need_wakeup || xsk_ring_prod__needs_wakeup(&xsk->tx)) in complete_tx_l2fwd()
498 kick_tx(xsk); in complete_tx_l2fwd()
500 ndescs = (xsk->outstanding_tx > BATCH_SIZE) ? BATCH_SIZE : in complete_tx_l2fwd()
501 xsk->outstanding_tx; in complete_tx_l2fwd()
522 xsk_ring_prod__submit(&xsk->umem->fq, rcvd); in complete_tx_l2fwd()
523 xsk_ring_cons__release(&xsk->umem->cq, rcvd); in complete_tx_l2fwd()
524 xsk->outstanding_tx -= rcvd; in complete_tx_l2fwd()
525 xsk->tx_npkts += rcvd; in complete_tx_l2fwd()
529 static inline void complete_tx_only(struct xsk_socket_info *xsk) in complete_tx_only() argument
534 if (!xsk->outstanding_tx) in complete_tx_only()
537 if (!opt_need_wakeup || xsk_ring_prod__needs_wakeup(&xsk->tx)) in complete_tx_only()
538 kick_tx(xsk); in complete_tx_only()
540 rcvd = xsk_ring_cons__peek(&xsk->umem->cq, BATCH_SIZE, &idx); in complete_tx_only()
542 xsk_ring_cons__release(&xsk->umem->cq, rcvd); in complete_tx_only()
543 xsk->outstanding_tx -= rcvd; in complete_tx_only()
544 xsk->tx_npkts += rcvd; in complete_tx_only()
548 static void rx_drop(struct xsk_socket_info *xsk, struct pollfd *fds) in rx_drop() argument
554 rcvd = xsk_ring_cons__peek(&xsk->rx, BATCH_SIZE, &idx_rx); in rx_drop()
556 if (xsk_ring_prod__needs_wakeup(&xsk->umem->fq)) in rx_drop()
561 ret = xsk_ring_prod__reserve(&xsk->umem->fq, rcvd, &idx_fq); in rx_drop()
565 if (xsk_ring_prod__needs_wakeup(&xsk->umem->fq)) in rx_drop()
567 ret = xsk_ring_prod__reserve(&xsk->umem->fq, rcvd, &idx_fq); in rx_drop()
571 u64 addr = xsk_ring_cons__rx_desc(&xsk->rx, idx_rx)->addr; in rx_drop()
572 u32 len = xsk_ring_cons__rx_desc(&xsk->rx, idx_rx++)->len; in rx_drop()
576 char *pkt = xsk_umem__get_data(xsk->umem->buffer, addr); in rx_drop()
579 *xsk_ring_prod__fill_addr(&xsk->umem->fq, idx_fq++) = orig; in rx_drop()
582 xsk_ring_prod__submit(&xsk->umem->fq, rcvd); in rx_drop()
583 xsk_ring_cons__release(&xsk->rx, rcvd); in rx_drop()
584 xsk->rx_npkts += rcvd; in rx_drop()
595 fds[i].fd = xsk_socket__fd(xsks[i]->xsk); in rx_drop_all()
611 static void tx_only(struct xsk_socket_info *xsk, u32 frame_nb) in tx_only() argument
615 if (xsk_ring_prod__reserve(&xsk->tx, BATCH_SIZE, &idx) == BATCH_SIZE) { in tx_only()
619 xsk_ring_prod__tx_desc(&xsk->tx, idx + i)->addr = in tx_only()
621 xsk_ring_prod__tx_desc(&xsk->tx, idx + i)->len = in tx_only()
625 xsk_ring_prod__submit(&xsk->tx, BATCH_SIZE); in tx_only()
626 xsk->outstanding_tx += BATCH_SIZE; in tx_only()
631 complete_tx_only(xsk); in tx_only()
642 fds[0].fd = xsk_socket__fd(xsks[i]->xsk); in tx_only_all()
661 static void l2fwd(struct xsk_socket_info *xsk, struct pollfd *fds) in l2fwd() argument
667 complete_tx_l2fwd(xsk, fds); in l2fwd()
669 rcvd = xsk_ring_cons__peek(&xsk->rx, BATCH_SIZE, &idx_rx); in l2fwd()
671 if (xsk_ring_prod__needs_wakeup(&xsk->umem->fq)) in l2fwd()
676 ret = xsk_ring_prod__reserve(&xsk->tx, rcvd, &idx_tx); in l2fwd()
680 if (xsk_ring_prod__needs_wakeup(&xsk->tx)) in l2fwd()
681 kick_tx(xsk); in l2fwd()
682 ret = xsk_ring_prod__reserve(&xsk->tx, rcvd, &idx_tx); in l2fwd()
686 u64 addr = xsk_ring_cons__rx_desc(&xsk->rx, idx_rx)->addr; in l2fwd()
687 u32 len = xsk_ring_cons__rx_desc(&xsk->rx, idx_rx++)->len; in l2fwd()
691 char *pkt = xsk_umem__get_data(xsk->umem->buffer, addr); in l2fwd()
696 xsk_ring_prod__tx_desc(&xsk->tx, idx_tx)->addr = orig; in l2fwd()
697 xsk_ring_prod__tx_desc(&xsk->tx, idx_tx++)->len = len; in l2fwd()
700 xsk_ring_prod__submit(&xsk->tx, rcvd); in l2fwd()
701 xsk_ring_cons__release(&xsk->rx, rcvd); in l2fwd()
703 xsk->rx_npkts += rcvd; in l2fwd()
704 xsk->outstanding_tx += rcvd; in l2fwd()
715 fds[i].fd = xsk_socket__fd(xsks[i]->xsk); in l2fwd_all()