Date: Fri, 29 Nov 2013 10:42:38 +0100 From: Michael Tuexen <Michael.Tuexen@lurchi.franken.de> To: Adrian Chadd <adrian@freebsd.org> Cc: "freebsd-net@freebsd.org list" <freebsd-net@freebsd.org> Subject: Re: ip_output()/if_output() behaviour Message-ID: <B7E3AA58-172A-4D20-B625-95C4712D46E7@lurchi.franken.de> In-Reply-To: <CAJ-Vmo=Jsf=7uXxwJ=Md5KLFpvSYAcaaNrq%2BbHsw75nfSG_ZaQ@mail.gmail.com> References: <BF7B04F7-0D45-4708-99A8-8BE030109CEC@lurchi.franken.de> <CAJ-Vmo=Jsf=7uXxwJ=Md5KLFpvSYAcaaNrq%2BbHsw75nfSG_ZaQ@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On Nov 29, 2013, at 3:54 AM, Adrian Chadd <adrian@freebsd.org> wrote: > On 28 November 2013 12:35, Michael Tuexen > <Michael.Tuexen@lurchi.franken.de> wrote: >> Dear all, >> >> I'm investigating a problem and need to understand the behaviour >> of ip_output(). Is it correct that if ip_output() returns an >> non-zero error, the corresponding packet was never sent? >> In the SCTP stack we assume this, but it seems that at least >> the em and the igb driver might return an error from >> igb_mq_start_locked(), for example, but have accepted the packet. > > Which error(s) ? ENOBUFS, but does it matter? What is the correct reaction to ip_output() returning an error? The SCTP stack assumes that the packet was not put on the wire. With the current version of the igb driver we are wrong. igb_mq_start() might return an error, even if the packets was enqueued successfully (in case igb_mq_start_locked() fails). But the SCTP stacks assumes in general that if ip_output() returns an error, the packet didn't make it out. Best regards Michael > >> Before digging further, I would like to know what the intended >> behaviour of ip_output() is. > > > -adrian >
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?B7E3AA58-172A-4D20-B625-95C4712D46E7>