On 03/21, Stephen Hemminger wrote: >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.
Will do.