Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 30 Oct 2011 19:30:16 +0330
From:      Hooman Fazaeli <hoomanfazaeli@gmail.com>
To:        Ryan Stone <rysto32@gmail.com>
Cc:        pyunyh@gmail.com, freebsd-net@freebsd.org, Jason Wolfe <nitroboost@gmail.com>, Jack Vogel <jfvogel@gmail.com>, Emil Muratov <gpm@hotplug.ru>
Subject:   Re: Intel 82574L interface wedging on em 7.1.9/7.2.3 when MSIX enabled
Message-ID:  <4EAD7490.4040108@gmail.com>
In-Reply-To: <CAFMmRNxPGJ%2BDQ2giaFbofAmC6progTmW7haKmRCKV3NsniRsNQ@mail.gmail.com>
References:  <CAAAm0r0RXEJo4UiKS=Ui0e5OQTg6sg-xcYf3mYB5%2Bvk8i8557w@mail.gmail.com>	<4E8F157A.40702@sentex.net>	<CAAAm0r2JH43Rct7UxQK2duH1p43Nepnj5mpb6bXo==DPayhJLg@mail.gmail.com>	<4E8F51D4.1060509@sentex.net>	<CACqU3MVwLaepFymZJkaVk6p=SpykGhqs=VYFjLh9fP9S=AxDhg@mail.gmail.com>	<CAAAm0r1DKvoL9=Ket9up=4%2B5xiCzTTZJK99FhF9jcCA28B0M%2BA@mail.gmail.com>	<CAAAm0r3XdsMHZh%2BP_NF-txZasdExzwZ8ymmGQgGhJQds0fOiBQ@mail.gmail.com>	<CAAAm0r1iS3z-7CBJ=xYDf%2BJOA1Q2nU0O54Twbyb7FjvgWHjKVw@mail.gmail.com>	<4EA7E203.3020306@sepehrs.com>	<CAAAm0r3Nr2t8cCetPkFnLQ-3KwqHw_0SpqbtvYPRUkSP=9n8CA@mail.gmail.com>	<4EA80818.3030504@sentex.net>	<4EA80F88.4000400@hotplug.ru>	<4EA82715.2000404@gmail.com>	<4EA8FA40.7010504@hotplug.ru>	<4EA91836.2040508@gmail.com>	<4EA959EE.2070806@hotplug.ru>	<4EAD116A.8090006@gmail.com> <CAFMmRNxPGJ%2BDQ2giaFbofAmC6progTmW7haKmRCKV3NsniRsNQ@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On 10/30/2011 6:03 PM, Ryan Stone wrote:
> On Sun, Oct 30, 2011 at 4:57 AM, Hooman Fazaeli<hoomanfazaeli@gmail.com>  wrote:
>> IMHO, this is not a driver issue and the real fix would be to change
>> IFQ_HANDOFF to call if_start when the queue is full.
> I'm not sure that's the right approach.  99% of the time, calling
> if_start when the queue is full will be a waste of time. It seems to
> me that the link interrupt handler needs to kick off the tx task to
> drain the tx queue instead.
If the queue were not full, system would consume the CPU for sending
packets. Now, that it is full, a much little time is used to recover
from a (temporary) problem. Not a big deal!

Furthermore, the most common case for queue being full is stack
sending packets too fast. In this case OACTIVE is set and if_start
is not called at all.

Changing HANDOFF has the benefit that it is simple, can be implemented fast and
fixes the problem once for all drivers and for all such dangerous bugs not yet
discovered. It also makes drivers' code simpler.





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