aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorLinas Vepstas <linas@austin.ibm.com>2006-12-13 16:10:06 -0500
committerJeff Garzik <jeff@garzik.org>2007-02-05 16:58:44 -0500
commit75856175c26f89198ec64eb2480ed00c4a39a5d6 (patch)
tree02eb736222b7348f1dc959347949bdcd37120714 /drivers
parent5a028877d2a350ebba3cda924cbf7f3bd2eb2135 (diff)
Spidernet remove rxramfull tasklet
Get rid of the rxramfull tasklet, and let the NAPI poll routine deal with this situation. (The rxramfull interrupt is simply stating that the h/w has run out of room for incoming packets). Signed-off-by: Linas Vepstas <linas@austin.ibm.com> Cc: James K Lewis <jklewis@us.ibm.com> Cc: Arnd Bergmann <arnd@arndb.de> Signed-off-by: Jeff Garzik <jeff@garzik.org>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/net/spider_net.c24
-rw-r--r--drivers/net/spider_net.h1
2 files changed, 1 insertions, 24 deletions
diff --git a/drivers/net/spider_net.c b/drivers/net/spider_net.c
index ce27e8d318df..572c7546e158 100644
--- a/drivers/net/spider_net.c
+++ b/drivers/net/spider_net.c
@@ -1221,24 +1221,6 @@ spider_net_set_mac(struct net_device *netdev, void *p)
1221} 1221}
1222 1222
1223/** 1223/**
1224 * spider_net_handle_rxram_full - cleans up RX ring upon RX RAM full interrupt
1225 * @card: card structure
1226 *
1227 * spider_net_handle_rxram_full empties the RX ring so that spider can put
1228 * more packets in it and empty its RX RAM. This is called in bottom half
1229 * context
1230 */
1231static void
1232spider_net_handle_rxram_full(struct spider_net_card *card)
1233{
1234 while (spider_net_decode_one_descr(card, 0))
1235 ;
1236 spider_net_enable_rxchtails(card);
1237 spider_net_enable_rxdmac(card);
1238 netif_rx_schedule(card->netdev);
1239}
1240
1241/**
1242 * spider_net_handle_error_irq - handles errors raised by an interrupt 1224 * spider_net_handle_error_irq - handles errors raised by an interrupt
1243 * @card: card structure 1225 * @card: card structure
1244 * @status_reg: interrupt status register 0 (GHIINT0STS) 1226 * @status_reg: interrupt status register 0 (GHIINT0STS)
@@ -1363,7 +1345,7 @@ spider_net_handle_error_irq(struct spider_net_card *card, u32 status_reg)
1363 pr_err("Spider RX RAM full, incoming packets " 1345 pr_err("Spider RX RAM full, incoming packets "
1364 "might be discarded!\n"); 1346 "might be discarded!\n");
1365 spider_net_rx_irq_off(card); 1347 spider_net_rx_irq_off(card);
1366 tasklet_schedule(&card->rxram_full_tl); 1348 netif_rx_schedule(card->netdev);
1367 show_error = 0; 1349 show_error = 0;
1368 break; 1350 break;
1369 1351
@@ -1895,7 +1877,6 @@ spider_net_stop(struct net_device *netdev)
1895{ 1877{
1896 struct spider_net_card *card = netdev_priv(netdev); 1878 struct spider_net_card *card = netdev_priv(netdev);
1897 1879
1898 tasklet_kill(&card->rxram_full_tl);
1899 netif_poll_disable(netdev); 1880 netif_poll_disable(netdev);
1900 netif_carrier_off(netdev); 1881 netif_carrier_off(netdev);
1901 netif_stop_queue(netdev); 1882 netif_stop_queue(netdev);
@@ -2040,9 +2021,6 @@ spider_net_setup_netdev(struct spider_net_card *card)
2040 2021
2041 pci_set_drvdata(card->pdev, netdev); 2022 pci_set_drvdata(card->pdev, netdev);
2042 2023
2043 card->rxram_full_tl.data = (unsigned long) card;
2044 card->rxram_full_tl.func =
2045 (void (*)(unsigned long)) spider_net_handle_rxram_full;
2046 init_timer(&card->tx_timer); 2024 init_timer(&card->tx_timer);
2047 card->tx_timer.function = 2025 card->tx_timer.function =
2048 (void (*)(unsigned long)) spider_net_cleanup_tx_ring; 2026 (void (*)(unsigned long)) spider_net_cleanup_tx_ring;
diff --git a/drivers/net/spider_net.h b/drivers/net/spider_net.h
index 0810e12e210b..2fec5cf76926 100644
--- a/drivers/net/spider_net.h
+++ b/drivers/net/spider_net.h
@@ -442,7 +442,6 @@ struct spider_net_card {
442 struct spider_net_descr_chain rx_chain; 442 struct spider_net_descr_chain rx_chain;
443 struct spider_net_descr *low_watermark; 443 struct spider_net_descr *low_watermark;
444 444
445 struct tasklet_struct rxram_full_tl;
446 struct timer_list tx_timer; 445 struct timer_list tx_timer;
447 struct work_struct tx_timeout_task; 446 struct work_struct tx_timeout_task;
448 atomic_t tx_timeout_task_counter; 447 atomic_t tx_timeout_task_counter;