Altough 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, rsulting 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 | 3 ++- 2 files changed, 12 insertions(+), 11 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-07 11:53:55.000000000 -0500 +++ linux-2.6.22-rc1/drivers/net/spider_net.c 2007-06-07 11:56:10.000000000 -0500 @@ -1314,6 +1314,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; } @@ -1584,17 +1585,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()) { - dev_info(&card->netdev->dev, "Spider RX RAM full, " - "incoming packets might be discarded!\n"); - show_rx_chain(card); - } /* 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; @@ -2374,6 +2373,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-07 11:52:35.000000000 -0500 +++ linux-2.6.22-rc1/drivers/net/spider_net.h 2007-06-07 11:55:06.000000000 -0500 @@ -164,7 +164,7 @@ extern char spider_net_driver_name[]; /** interrupt mask registers */ #define SPIDER_NET_INT0_MASK_VALUE 0x3f7fe2c7 -#define SPIDER_NET_INT1_MASK_VALUE 0xffff7ff7 +#define SPIDER_NET_INT1_MASK_VALUE 0xffff5ff5 /* no MAC aborts -> auto retransmission */ #define SPIDER_NET_INT2_MASK_VALUE 0xffef7ff1 @@ -467,6 +467,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