Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 12 Jan 2015 14:52:44 +0000 (UTC)
From:      Gleb Smirnoff <glebius@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r277072 - head/sys/netinet6
Message-ID:  <201501121452.t0CEqihQ050794@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: glebius
Date: Mon Jan 12 14:52:43 2015
New Revision: 277072
URL: https://svnweb.freebsd.org/changeset/base/277072

Log:
  Do not go one layer down to check ifqueue length. First, not all drivers
  use ifqueue at all. Second, there is no point in this lockless check.
  Either positive or negative result of the check could be incorrect after
  a tick.
  
  Sponsored by:	Nginx, Inc.

Modified:
  head/sys/netinet6/ip6_output.c

Modified: head/sys/netinet6/ip6_output.c
==============================================================================
--- head/sys/netinet6/ip6_output.c	Mon Jan 12 13:53:40 2015	(r277071)
+++ head/sys/netinet6/ip6_output.c	Mon Jan 12 14:52:43 2015	(r277072)
@@ -905,8 +905,6 @@ passout:
 		u_int32_t id = htonl(ip6_randomid());
 		u_char nextproto;
 
-		int qslots = ifp->if_snd.ifq_maxlen - ifp->if_snd.ifq_len;
-
 		/*
 		 * Too large for the destination or interface;
 		 * fragment if possible.
@@ -924,18 +922,6 @@ passout:
 		}
 
 		/*
-		 * Verify that we have any chance at all of being able to queue
-		 *      the packet or packet fragments
-		 */
-		if (qslots <= 0 || ((u_int)qslots * (mtu - hlen)
-		    < tlen  /* - hlen */)) {
-			error = ENOBUFS;
-			IP6STAT_INC(ip6s_odropped);
-			goto bad;
-		}
-
-
-		/*
 		 * If the interface will not calculate checksums on
 		 * fragmented packets, then do it here.
 		 * XXX-BZ handle the hw offloading case.  Need flags.



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201501121452.t0CEqihQ050794>