Although the previous patch resolved issues with hangs when the RX ram full interrupt is encountered, there are still situations where lots of RX ramfull interrupts arrive, resulting in a noisy log in syslog. There is no need for this.
Signed-off-by: Linas Vepstas <[EMAIL PROTECTED]> ---- drivers/net/spider_net.c | 20 +++++++++++--------- drivers/net/spider_net.h | 1 + 2 files changed, 12 insertions(+), 9 deletions(-) Index: linux-2.6.22-rc1/drivers/net/spider_net.c =================================================================== --- linux-2.6.22-rc1.orig/drivers/net/spider_net.c 2007-06-11 10:02:34.000000000 -0500 +++ linux-2.6.22-rc1/drivers/net/spider_net.c 2007-06-11 11:45:25.000000000 -0500 @@ -1172,7 +1172,7 @@ spider_net_decode_one_descr(struct spide goto bad_desc; } - if (hwdescr->dmac_cmd_status & 0xfefe) { + if (hwdescr->dmac_cmd_status & 0xfcf4) { pr_err("%s: bad status, cmd_status=x%08x\n", card->netdev->name, hwdescr->dmac_cmd_status); @@ -1251,6 +1251,7 @@ spider_net_poll(struct net_device *netde if (no_more_packets) { netif_rx_complete(netdev); spider_net_rx_irq_on(card); + card->ignore_rx_ramfull = 0; return 0; } @@ -1521,15 +1522,15 @@ 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("Spider RX RAM full, incoming packets " - "might be discarded!\n"); /* Could happen when rx chain is full */ - spider_net_resync_head_ptr(card); - spider_net_refill_rx_chain(card); - spider_net_enable_rxdmac(card); - card->num_rx_ints ++; - netif_rx_schedule(card->netdev); + if (card->ignore_rx_ramfull == 0) { + card->ignore_rx_ramfull = 1; + spider_net_resync_head_ptr(card); + spider_net_refill_rx_chain(card); + spider_net_enable_rxdmac(card); + card->num_rx_ints ++; + netif_rx_schedule(card->netdev); + } show_error = 0; break; @@ -2305,6 +2306,7 @@ spider_net_setup_netdev(struct spider_ne netdev->irq = card->pdev->irq; card->num_rx_ints = 0; + card->ignore_rx_ramfull = 0; dn = pci_device_to_OF_node(card->pdev); if (!dn) Index: linux-2.6.22-rc1/drivers/net/spider_net.h =================================================================== --- linux-2.6.22-rc1.orig/drivers/net/spider_net.h 2007-06-11 10:02:25.000000000 -0500 +++ linux-2.6.22-rc1/drivers/net/spider_net.h 2007-06-11 11:45:50.000000000 -0500 @@ -462,6 +462,7 @@ struct spider_net_card { atomic_t tx_timeout_task_counter; wait_queue_head_t waitq; int num_rx_ints; + int ignore_rx_ramfull; /* for ethtool */ int msg_enable; - To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html