On Thu, 21 Mar 2019 17:18:41 +0800
Xiaolong Ye <[email protected]> wrote:
> static void kick_tx(struct pkt_tx_queue *txq)
> +{
> + struct xsk_umem_info *umem = txq->pair->umem;
> +
> + while (send(xsk_socket__fd(txq->pair->xsk), NULL,
> + 0, MSG_DONTWAIT) < 0) {
> + /* some thing unexpected */
> + if (errno != EBUSY && errno != EAGAIN)
> + break;
> +
> + /* pull from complete qeueu to leave more space */
> + if (errno == EAGAIN)
> + pull_umem_cq(umem, ETH_AF_XDP_TX_BATCH_SIZE);
> + }
What about EINTR??
You should retry the send then.