From owner-freebsd-net@FreeBSD.ORG Fri Nov 29 09:42:42 2013 Return-Path: Delivered-To: freebsd-net@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 56F3DCFD; Fri, 29 Nov 2013 09:42:42 +0000 (UTC) Received: from mail-n.franken.de (drew.ipv6.franken.de [IPv6:2001:638:a02:a001:20e:cff:fe4a:feaa]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id E110A1A38; Fri, 29 Nov 2013 09:42:41 +0000 (UTC) Received: from [192.168.1.102] (p508F32E7.dip0.t-ipconnect.de [80.143.50.231]) (Authenticated sender: macmic) by mail-n.franken.de (Postfix) with ESMTP id 826DE1C0C0692; Fri, 29 Nov 2013 10:42:39 +0100 (CET) Content-Type: text/plain; charset=iso-8859-1 Mime-Version: 1.0 (Mac OS X Mail 6.6 \(1510\)) Subject: Re: ip_output()/if_output() behaviour From: Michael Tuexen In-Reply-To: Date: Fri, 29 Nov 2013 10:42:38 +0100 Content-Transfer-Encoding: 7bit Message-Id: References: To: Adrian Chadd X-Mailer: Apple Mail (2.1510) Cc: "freebsd-net@freebsd.org list" X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.16 Precedence: list List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 Nov 2013 09:42:42 -0000 On Nov 29, 2013, at 3:54 AM, Adrian Chadd wrote: > On 28 November 2013 12:35, Michael Tuexen > 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 >