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.