Re: Cannot run multiple 'xdpsock' concurrently?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Feb 04, 2020 at 04:41:31PM +0100, Björn Töpel wrote:
> On Tue, 4 Feb 2020 at 14:58, Maciej Fijalkowski
> <maciej.fijalkowski@xxxxxxxxx> wrote:
> >
> > On Mon, Feb 03, 2020 at 01:49:11PM +0200, Maxim Mikityanskiy wrote:
> [...]
> > > Right, we shouldn't drop this check, at least it's needed to sync on
> > > xsk_wakeup when closing a socket. I think there are two issues here, and I
> > > suggest this way of solving them:
> > >
> > > 1. __I40E_CONFIG_BUSY is set while a single QP is being recreated, e.g.,
> > > when opening/closing an XSK. I considered it as a flag for global
> > > configuration changes, but apparently it's also needed when a single XSK is
> > > being configured. Probably xsk_wakeup shouldn't return ENETDOWN when this
> > > flag is set, but something lighter like EAGAIN. xdpsock will need to repeat
> > > the syscall instead of bailing out.
> > >
> > Haven't yet checked the l2fwd case since I broke my hw setup, but do we
> > really need the syscall repetition? For tx only scenario skipping the
> > syscall would mean that we wouldn't post entries to completion queue and
> > in case tx ring gets full we would call complete_tx_only() again. So there
> > we have syscall being repeated?
> >
> 
> I sort of like EAGAIN, as Max suggested, is better. Kind of nice for a
> user to know that "hey, for some reason the driver couldn't service
> you ATM, please try again".
> 
> > > 2. Should xdpsock stop on ENETDOWN? Normal network sockets don't close as
> > > soon as the carrier is lost, so why should xdpsock fail on ENETDOWN? IMO,
> > > xdpsock should handle it more gracefully (wait with some timeout?).
> > >
> > > Does it sound like the right direction?
> >
> > It does! :) But in general I would allow ENETDOWN to the set of errnos
> > checked in kick_tx(). Not sure about repeating syscall though.
> >
> 
> The fact that xdpsock die() on errors are a bit harsh, can't argue
> there. So, I'm all in for simplifying the sample error checking for
> kick_tx().

So to summarize that:
- return EAGAIN instead of ENETDOWN within ndo_xsk_wakeup implementations
  in i40e/ixgbe,
- check for ENETDOWN in kick_tx() as well

Do you guys agree?

What about timeout and syscall repetition? That's the last question.

> 
> 
> Björn



[Index of Archives]     [Linux Networking Development]     [Fedora Linux Users]     [Linux SCTP]     [DCCP]     [Gimp]     [Yosemite Campsites]

  Powered by Linux