Magnus Karlsson wrote: > From: Magnus Karlsson <magnus.karls...@intel.com> > > In the skb Tx path, transmission of a packet is performed with > dev_direct_xmit(). When NETDEV_TX_BUSY is set in the drivers, it > signifies that it was not possible to send the packet right now, > please try later. Unfortunately, the xsk transmit code discarded the > packet and returned EBUSY to the application. Fix this unnecessary > packet loss, by not discarding the packet in the Tx ring and return > EAGAIN. As EAGAIN is returned to the application, it can then retry > the send operation later and the packet will then likely be sent as > the driver will then likely have space/resources to send the packet. > > In summary, EAGAIN tells the application that the packet was not > discarded from the Tx ring and that it needs to call send() > again. EBUSY, on the other hand, signifies that the packet was not > sent and discarded from the Tx ring. The application needs to put the > packet on the Tx ring again if it wants it to be sent. > > Fixes: 35fcde7f8deb ("xsk: support for Tx") > Signed-off-by: Magnus Karlsson <magnus.karls...@intel.com> > Reported-by: Arkadiusz Zema <a.z...@falconvsystems.com> > Suggested-by: Arkadiusz Zema <a.z...@falconvsystems.com> > Suggested-by: Daniel Borkmann <dan...@iogearbox.net>
Patch seems to make sense to me, better matches the expectations/path of the stack. Reviewed-by: Jesse Brandeburg <jesse.brandeb...@intel.com>