netdev
[Top] [All Lists]

Re: [PATCH] net: Disable queueing when carrier is lost

To: Herbert Xu <herbert@xxxxxxxxxxxxxxxxxxx>
Subject: Re: [PATCH] net: Disable queueing when carrier is lost
From: Tommy Christensen <tommy.christensen@xxxxxxxxx>
Date: Sat, 30 Apr 2005 14:59:54 +0200
Cc: davem@xxxxxxxxxxxxx, netdev@xxxxxxxxxxx
In-reply-to: <20050430004638.GA23386@xxxxxxxxxxxxxxxxxxx>
References: <E1DQlsn-0005yd-00@xxxxxxxxxxxxxxxxxxxxxxxx> <426FDF8B.1030808@xxxxxxxxx> <20050427214224.GA25325@xxxxxxxxxxxxxxxxxxx> <42701FFD.5000505@xxxxxxxxx> <20050427234359.GB22238@xxxxxxxxxxxxxxxxxxx> <1114768308.4695.1487.camel@xxxxxxxxxxxxxxxxxxx> <20050429101836.GA2237@xxxxxxxxxxxxxxxxxxx> <1114777355.4695.1598.camel@xxxxxxxxxxxxxxxxxxx> <20050429234512.GA22699@xxxxxxxxxxxxxxxxxxx> <20050430004638.GA23386@xxxxxxxxxxxxxxxxxxx>
Sender: netdev-bounce@xxxxxxxxxxx
User-agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.2) Gecko/20040803
Herbert Xu wrote:
What if we take a more direct approach and just drop the packets before
it hits hard_start_xmit? This also makes it easy for the drivers to do
TX ring flushing if it's necessary since we're guaranteeing (for drivers
that are not lockless anyway) that once carrier goes off while the xmit
lock is held hard_start_xmit will not be called again.

Something like this has been considered already. It's simple and obvious,
but has it's drawbacks as well:

 - it adds a slight overhead to the TX path (some people are rather
   sensitive about this)
 - it impacts all sorts of drivers, including those that don't need fixing
 - it doesn't work as intended! qdisc_run checks for queue_stopped before
   calling qdisc_restart

-Tommy

<Prev in Thread] Current Thread [Next in Thread>