From: linas@austin.ibm.com (Linas Vepstas)
To: Jeff Garzik <jgarzik@pobox.com>, Andrew Morton <akpm@osdl.org>
Cc: netdev@vger.kernel.org, Florin Malita <fmalita@gmail.com>,
cbe-oss-dev@ozlabs.org, linuxppc-dev@ozlabs.org
Subject: [PATCH 8/10] spidernet: reset the card when an rxramfull is seen
Date: Tue, 22 May 2007 18:45:32 -0500 [thread overview]
Message-ID: <20070522234532.GG2147@austin.ibm.com> (raw)
In-Reply-To: <20070522230942.GT5921@austin.ibm.com>
Some versions of the spider have a firmware bug, where the
RX ring sequencer goes crazy when the RX RAM on the device
fills up. Appearently the only viable wrkaround is a soft
reset of the card.
Signed-off-by: Linas Vepstas <linas@austin.ibm.com>
----
drivers/net/spider_net.c | 14 +++++++++++---
1 file changed, 11 insertions(+), 3 deletions(-)
Index: netdev-2.6/drivers/net/spider_net.c
===================================================================
--- netdev-2.6.orig/drivers/net/spider_net.c 2007-05-22 18:03:37.000000000 -0500
+++ netdev-2.6/drivers/net/spider_net.c 2007-05-22 18:03:39.000000000 -0500
@@ -1506,11 +1506,17 @@ spider_net_handle_error_irq(struct spide
case SPIDER_NET_GRFBFLLINT: /* fallthrough */
case SPIDER_NET_GRFAFLLINT: /* fallthrough */
case SPIDER_NET_GRMFLLINT:
- if (netif_msg_intr(card) && net_ratelimit())
- pr_err("%s: Spider RX RAM full, incoming packets "
- "might be discarded!\n", card->netdev->name);
+ if (netif_msg_intr(card) && net_ratelimit()) {
+ pr_err("%s: Spider RX RAM full, reseting device.\n",
+ card->netdev->name);
+ show_rx_chain(card);
+ }
spider_net_rx_irq_off(card);
netif_rx_schedule(card->netdev);
+
+ /* If the card is spewing rxramfulls, then reset */
+ atomic_inc(&card->tx_timeout_task_counter);
+ schedule_work(&card->tx_timeout_task);
show_error = 0;
break;
@@ -2087,6 +2093,8 @@ spider_net_workaround_rxramfull(struct s
{
int i, sequencer = 0;
+ printk(KERN_INFO "%s: calling rxramfull workaround\n", card->netdev->name);
+
/* cancel reset */
spider_net_write_reg(card, SPIDER_NET_CKRCTRL,
SPIDER_NET_CKRCTRL_RUN_VALUE);
WARNING: multiple messages have this Message-ID (diff)
From: linas@austin.ibm.com (Linas Vepstas)
To: Jeff Garzik <jgarzik@pobox.com>, Andrew Morton <akpm@osdl.org>
Cc: cbe-oss-dev@ozlabs.org, netdev@vger.kernel.org,
linuxppc-dev@ozlabs.org, Florin Malita <fmalita@gmail.com>
Subject: [PATCH 8/10] spidernet: reset the card when an rxramfull is seen
Date: Tue, 22 May 2007 18:45:32 -0500 [thread overview]
Message-ID: <20070522234532.GG2147@austin.ibm.com> (raw)
In-Reply-To: <20070522230942.GT5921@austin.ibm.com>
Some versions of the spider have a firmware bug, where the
RX ring sequencer goes crazy when the RX RAM on the device
fills up. Appearently the only viable wrkaround is a soft
reset of the card.
Signed-off-by: Linas Vepstas <linas@austin.ibm.com>
----
drivers/net/spider_net.c | 14 +++++++++++---
1 file changed, 11 insertions(+), 3 deletions(-)
Index: netdev-2.6/drivers/net/spider_net.c
===================================================================
--- netdev-2.6.orig/drivers/net/spider_net.c 2007-05-22 18:03:37.000000000 -0500
+++ netdev-2.6/drivers/net/spider_net.c 2007-05-22 18:03:39.000000000 -0500
@@ -1506,11 +1506,17 @@ spider_net_handle_error_irq(struct spide
case SPIDER_NET_GRFBFLLINT: /* fallthrough */
case SPIDER_NET_GRFAFLLINT: /* fallthrough */
case SPIDER_NET_GRMFLLINT:
- if (netif_msg_intr(card) && net_ratelimit())
- pr_err("%s: Spider RX RAM full, incoming packets "
- "might be discarded!\n", card->netdev->name);
+ if (netif_msg_intr(card) && net_ratelimit()) {
+ pr_err("%s: Spider RX RAM full, reseting device.\n",
+ card->netdev->name);
+ show_rx_chain(card);
+ }
spider_net_rx_irq_off(card);
netif_rx_schedule(card->netdev);
+
+ /* If the card is spewing rxramfulls, then reset */
+ atomic_inc(&card->tx_timeout_task_counter);
+ schedule_work(&card->tx_timeout_task);
show_error = 0;
break;
@@ -2087,6 +2093,8 @@ spider_net_workaround_rxramfull(struct s
{
int i, sequencer = 0;
+ printk(KERN_INFO "%s: calling rxramfull workaround\n", card->netdev->name);
+
/* cancel reset */
spider_net_write_reg(card, SPIDER_NET_CKRCTRL,
SPIDER_NET_CKRCTRL_RUN_VALUE);
next prev parent reply other threads:[~2007-05-22 23:45 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-05-22 23:09 [PATCH 1/10] spidernet: skb used after netif_receive_skb Linas Vepstas
2007-05-22 23:09 ` Linas Vepstas
2007-05-22 23:13 ` [PATCH 2/10] spidernet: beautify error messages Linas Vepstas
2007-05-22 23:13 ` Linas Vepstas
2007-05-24 21:27 ` Jeff Garzik
2007-05-24 21:27 ` Jeff Garzik
2007-05-22 23:21 ` [PATCH 3/10] spidernet: move a block of code around Linas Vepstas
2007-05-22 23:21 ` Linas Vepstas
2007-05-22 23:36 ` [PATCH 4/10] spidernet: zero out a pointer Linas Vepstas
2007-05-22 23:36 ` Linas Vepstas
2007-05-22 23:39 ` [PATCH 5/10] spidernet: null out skb pointer after its been used Linas Vepstas
2007-05-22 23:39 ` Linas Vepstas
2007-05-22 23:40 ` [PATCH 6/10] spidernet: Don't terminate the RX ring Linas Vepstas
2007-05-22 23:40 ` Linas Vepstas
2007-05-22 23:42 ` [PATCH 7/10] spidernet: enhance the dump routine Linas Vepstas
2007-05-22 23:42 ` Linas Vepstas
2007-05-22 23:45 ` Linas Vepstas [this message]
2007-05-22 23:45 ` [PATCH 8/10] spidernet: reset the card when an rxramfull is seen Linas Vepstas
2007-05-22 23:47 ` [PATCH 9/10] spidernet: service TX later Linas Vepstas
2007-05-22 23:47 ` Linas Vepstas
2007-05-22 23:52 ` [PATCH 10/10] spidernet: increase the NAPI weight Linas Vepstas
2007-05-22 23:52 ` Linas Vepstas
2007-05-24 21:25 ` [PATCH 1/10] spidernet: skb used after netif_receive_skb Jeff Garzik
2007-05-24 21:25 ` Jeff Garzik
-- strict thread matches above, loose matches on Subject: below --
2007-05-16 21:56 [PATCH 0/10] spidernet assorted fixes Linas Vepstas
2007-05-16 22:19 ` [PATCH 8/10] spidernet: reset the card when an rxramfull is seen 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=20070522234532.GG2147@austin.ibm.com \
--to=linas@austin.ibm.com \
--cc=akpm@osdl.org \
--cc=cbe-oss-dev@ozlabs.org \
--cc=fmalita@gmail.com \
--cc=jgarzik@pobox.com \
--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.