From: Eric Lemoine <eric.lemoine@gmail.com>
To: hadi@cyberus.ca
Cc: netdev@oss.sgi.com, "David S. Miller" <davem@davemloft.net>,
openib-general@openib.org
Subject: Re: LLTX and netif_stop_queue
Date: Wed, 22 Dec 2004 19:49:48 +0100 [thread overview]
Message-ID: <5cac192f04122210491d64d4b6@mail.gmail.com> (raw)
In-Reply-To: <1103484675.1050.158.camel@jzny.localdomain>
[-- Attachment #1: Type: text/plain, Size: 863 bytes --]
On 19 Dec 2004 14:31:15 -0500, jamal <hadi@cyberus.ca> wrote:
> On Sat, 2004-12-18 at 00:44, David S. Miller wrote:
>
> > Perhaps one way to fix this is to add a pointer to a spinlock to
> > the netdev struct, and have hold that the upper level grab that
> > when NETIF_F_LLTX when doing queue state checks. Actually, that
> > could end up being racy too.
>
> How about releasing the qlock only when the LLTX transmit lock is
> grabbed? That should bring it to par with what it was originally.
I dont like the idea of releasing inside the driver a lock taken
outside. That might be just me...
Instead, I would suggest to have LLTX drivers check whether queue is
stopped after they grab their private tx lock and before they check tx
ring fullness. That way we close the race window but keep the driver
bug check around.
See attached sungem patch.
--
Eric
[-- Attachment #2: sungem-lltx.patch --]
[-- Type: application/octet-stream, Size: 511 bytes --]
===== drivers/net/sungem.c 1.71 vs edited =====
--- 1.71/drivers/net/sungem.c 2004-11-14 10:45:36 +01:00
+++ edited/drivers/net/sungem.c 2004-12-22 19:34:07 +01:00
@@ -976,6 +976,12 @@
return NETDEV_TX_LOCKED;
}
+ /* This handles a LLTX-related race condition */
+ if (netif_queue_stopped(dev)) {
+ spin_unlock_irqrestore(&gp->tx_lock, flags);
+ return NETDEV_TX_BUSY;
+ }
+
/* This is a hard error, log it. */
if (TX_BUFFS_AVAIL(gp) <= (skb_shinfo(skb)->nr_frags + 1)) {
netif_stop_queue(dev);
[-- Attachment #3: Type: text/plain, Size: 0 bytes --]
next prev parent reply other threads:[~2004-12-22 18:49 UTC|newest]
Thread overview: 62+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-12-17 21:57 LLTX and netif_stop_queue Roland Dreier
2004-12-18 5:44 ` David S. Miller
2004-12-18 15:35 ` Roland Dreier
2004-12-18 17:58 ` Roland Dreier
2004-12-18 18:26 ` Roland Dreier
2004-12-19 19:33 ` jamal
2004-12-19 19:31 ` jamal
2004-12-19 19:54 ` jamal
2004-12-19 20:02 ` Jamal Hadi Salim
2004-12-19 22:35 ` Roland Dreier
2004-12-19 23:06 ` jamal
2004-12-19 23:16 ` Roland Dreier
2004-12-22 18:49 ` Eric Lemoine [this message]
2004-12-23 4:29 ` David S. Miller
2004-12-23 4:38 ` Roland Dreier
2004-12-23 9:10 ` Eric Lemoine
2004-12-23 16:37 ` Patrick McHardy
2004-12-23 18:11 ` Eric Lemoine
2004-12-24 16:10 ` Eric Lemoine
2004-12-28 13:31 ` jamal
2005-01-02 23:30 ` Eric Lemoine
2005-01-03 7:41 ` Eric Lemoine
2005-01-03 15:04 ` jamal
2005-01-03 15:48 ` Eric Lemoine
2005-01-03 15:57 ` Roland Dreier
2005-01-03 16:41 ` Eric Lemoine
2005-01-03 16:54 ` Roland Dreier
2005-01-03 17:07 ` Eric Lemoine
2005-01-03 17:12 ` Grant Grundler
2005-01-04 4:18 ` jamal
2005-01-19 22:47 ` David S. Miller
2005-01-19 23:18 ` Stephen Hemminger
2005-01-19 23:41 ` David S. Miller
2005-01-20 0:02 ` [openib-general] " Jeff Garzik
2005-01-20 0:46 ` Stephen Hemminger
2005-01-20 0:47 ` David S. Miller
2005-01-20 0:47 ` Francois Romieu
2005-01-20 0:52 ` David S. Miller
2005-01-20 1:17 ` Francois Romieu
2005-01-20 0:46 ` [PATCH]: was " David S. Miller
2005-01-20 3:14 ` Andi Kleen
2005-01-20 7:05 ` David S. Miller
2005-01-20 3:43 ` Roland Dreier
2005-01-20 7:05 ` David S. Miller
2005-01-20 13:51 ` Tommy Christensen
2005-01-20 21:34 ` David S. Miller
2005-01-20 21:56 ` Grant Grundler
2005-01-21 1:01 ` David S. Miller
2005-01-22 3:17 ` Roland Dreier
2005-01-22 3:53 ` David S. Miller
2005-01-20 21:41 ` David S. Miller
2005-01-20 16:56 ` Stephen Hemminger
2005-01-21 10:54 ` Lennert Buytenhek
2005-01-26 6:27 ` David S. Miller
2005-01-26 13:25 ` Lennert Buytenhek
2005-01-27 6:32 ` David S. Miller
2005-01-27 7:16 ` Andi Kleen
2005-01-27 7:22 ` David S. Miller
2005-01-27 8:26 ` Andi Kleen
2005-01-20 19:16 ` Jeff Garzik
2005-01-20 4:01 ` jamal
2005-01-20 5:18 ` David S. Miller
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=5cac192f04122210491d64d4b6@mail.gmail.com \
--to=eric.lemoine@gmail.com \
--cc=davem@davemloft.net \
--cc=hadi@cyberus.ca \
--cc=netdev@oss.sgi.com \
--cc=openib-general@openib.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).