svn commit: r191037 - head/sys/net
Robert Watson
rwatson at FreeBSD.org
Tue Apr 14 09:22:29 UTC 2009
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
More information about the svn-src-all
mailing list