On Thu, 21 Mar 2019 17:18:41 +0800
Xiaolong Ye <xiaolong...@intel.com> 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.

Reply via email to