From: linas@austin.ibm.com (Linas Vepstas)
To: akpm@osdl.org, jeff@garzik.org
Cc: netdev@vger.kernel.org, James K Lewis <jklewis@us.ibm.com>,
linux-kernel@vger.kernel.org, Arnd Bergmann <arnd@arndb.de>,
linuxppc-dev@ozlabs.org
Subject: [PATCH 1/4]: Spidernet stop queue when queue is full
Date: Tue, 3 Oct 2006 15:57:29 -0500 [thread overview]
Message-ID: <20061003205729.GF4381@austin.ibm.com> (raw)
In-Reply-To: <20061003205240.GE4381@austin.ibm.com>
Subject: [PATCH 1/4]: Spidernet stop queue when queue is full.
This patch adds a call to netif_stop_queue() when there is
no more room for more packets on the transmit queue.
Signed-off-by: Linas Vepstas <linas@austin.ibm.com>
Cc: James K Lewis <jklewis@us.ibm.com>
Cc: Arnd Bergmann <arnd@arndb.de>
----
drivers/net/spider_net.c | 19 ++++++++-----------
1 file changed, 8 insertions(+), 11 deletions(-)
Index: linux-2.6.18-mm2/drivers/net/spider_net.c
===================================================================
--- linux-2.6.18-mm2.orig/drivers/net/spider_net.c 2006-10-02 12:12:56.000000000 -0500
+++ linux-2.6.18-mm2/drivers/net/spider_net.c 2006-10-02 18:59:43.000000000 -0500
@@ -686,6 +686,7 @@ spider_net_prepare_tx_descr(struct spide
/* Chain the bus address, so that the DMA engine finds this descr. */
descr->prev->next_descr_addr = descr->bus_addr;
+ card->netdev->trans_start = jiffies;
return 0;
}
@@ -857,29 +858,23 @@ spider_net_xmit(struct sk_buff *skb, str
spider_net_release_tx_chain(card, 0);
- if (chain->head->next == chain->tail->prev) {
- card->netdev_stats.tx_dropped++;
- result = NETDEV_TX_LOCKED;
- goto out;
- }
-
- if (spider_net_get_descr_status(descr) != SPIDER_NET_DESCR_NOT_IN_USE) {
- card->netdev_stats.tx_dropped++;
+ if ((chain->head->next == chain->tail->prev) ||
+ (spider_net_get_descr_status(descr) != SPIDER_NET_DESCR_NOT_IN_USE)) {
result = NETDEV_TX_LOCKED;
goto out;
}
if (spider_net_prepare_tx_descr(card, skb) != 0) {
- card->netdev_stats.tx_dropped++;
result = NETDEV_TX_BUSY;
goto out;
}
- result = NETDEV_TX_OK;
spider_net_kick_tx_dma(card);
+ return NETDEV_TX_OK;
out:
- netif_wake_queue(netdev);
+ card->netdev_stats.tx_dropped++;
+ netif_stop_queue(netdev);
return result;
}
@@ -898,6 +893,8 @@ spider_net_cleanup_tx_ring(struct spider
if ((spider_net_release_tx_chain(card, 0) != 0) &&
(card->netdev->flags & IFF_UP))
spider_net_kick_tx_dma(card);
+
+ netif_wake_queue(card->netdev);
}
/**
next prev parent reply other threads:[~2006-10-03 20:57 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-10-03 20:52 [PATCH 0/4]: Spidernet transmit patches Linas Vepstas
2006-10-03 20:52 ` Linas Vepstas
2006-10-03 20:57 ` Linas Vepstas [this message]
2006-10-03 22:19 ` [PATCH 1/4]: Spidernet stop queue when queue is full Arnd Bergmann
2006-10-03 22:19 ` Arnd Bergmann
2006-10-05 0:06 ` Linas Vepstas
2006-10-03 20:59 ` [PATCH 2/4]: Spidernet fix register field definitions Linas Vepstas
2006-10-03 21:03 ` [PATCH 3/4]: Spidernet transmit interupt mitigation Linas Vepstas
2006-10-03 21:04 ` [PATCH 4/4]: Spidernet module parm permissions Linas Vepstas
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=20061003205729.GF4381@austin.ibm.com \
--to=linas@austin.ibm.com \
--cc=akpm@osdl.org \
--cc=arnd@arndb.de \
--cc=jeff@garzik.org \
--cc=jklewis@us.ibm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linuxppc-dev@ozlabs.org \
--cc=netdev@vger.kernel.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.