Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 14 Apr 2009 10:22:28 +0100 (BST)
From:      Robert Watson <rwatson@FreeBSD.org>
To:        Kip Macy <kmacy@FreeBSD.org>
Cc:        svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org
Subject:   Re: svn commit: r191037 - head/sys/net
Message-ID:  <alpine.BSF.2.00.0904141018530.19879@fledge.watson.org>
In-Reply-To: <200904140317.n3E3HigF092519@svn.freebsd.org>
References:  <200904140317.n3E3HigF092519@svn.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Tue, 14 Apr 2009, Kip Macy wrote:

>  call default if_qflush on ifq if default method isn't used by the driver
>
...
> Modified: head/sys/net/if.c
> ==============================================================================
> --- head/sys/net/if.c	Tue Apr 14 03:13:05 2009	(r191036)
> +++ head/sys/net/if.c	Tue Apr 14 03:17:44 2009	(r191037)
> @@ -1509,6 +1509,8 @@ if_unroute(struct ifnet *ifp, int flag,
> 		if (fam == PF_UNSPEC || (fam == ifa->ifa_addr->sa_family))
> 			pfctlinput(PRC_IFDOWN, ifa->ifa_addr);
> 	ifp->if_qflush(ifp);
> +	if (ifp->if_snd.ifq_head != NULL)
> +		if_qflush(ifp);

The commit message should perhaps read:

   Call default if_qflush on ifq if there are still packets left in the default
   queue after calling the driver's flush method.

However, this seems a bit odd: what if the driver uses if_snd as its queue but 
implements other differences in the transmit routine?  In that case, we might 
impose default queue properties on if_snd even though the driver doesn't use 
them.  Could you talk a bit about the circumstances under which the driver 
provides an if_qflush that doesn't drain its queues properly?

Robert N M Watson
Computer Laboratory
University of Cambridge



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