[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20110208.122115.183054158.davem@davemloft.net>
Date: Tue, 08 Feb 2011 12:21:15 -0800 (PST)
From: David Miller <davem@...emloft.net>
To: jeffrey.t.kirsher@...el.com
Cc: bruce.w.allan@...el.com, netdev@...r.kernel.org, gospo@...hat.com,
bphilips@...ell.com
Subject: Re: [net-next-2.6 03/16] e1000e: do not wakeup Tx queue until ready
From: Jeff Kirsher <jeffrey.t.kirsher@...el.com>
Date: Tue, 8 Feb 2011 04:29:14 -0800
> From: Bruce Allan <bruce.w.allan@...el.com>
>
> When restarting the adapter via calls to e1000e_down() followed by
> e1000e_up() (for example when restarting autonegotiation via ethtool),
> packets can be queued for transmit before link is actually up and
> netif_carrier_on is set. This was causing the watchdog_task to do an
> extra unnecessary reset of the adapter. Delaying the wakeup of the Tx
> queue until link is up prevents the reset.
>
> Signed-off-by: Bruce Allan <bruce.w.allan@...el.com>
> Tested-by: Jeff Pieper <jeffrey.e.pieper@...el.com>
> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@...el.com>
You should not control the TX queue based upon link status information.
That's the job of netif_carrier_{on,off}().
The TX queue state should be set based solely upon that state of the
TX ring, whether it is full or not.
When the netif carrier is off, the packet scheduler is blocked from
sending packets to the driver.
If that isn't happening, that's a bug which you need to track down.
Maybe you're not doing netif_carrier_off() early enough.
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists