From: Linas Vepstas Date: Wed, 13 Dec 2006 21:18:52 +0000 (-0600) Subject: Spidernet RX Refill X-Git-Tag: v2.6.21-rc1~92^2~31^2~82 X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=80dab7c7e5b7c4e53e9423c22375bfd9cbf7f2c3;p=linux-2.6 Spidernet RX Refill The invocation of the rx ring refill routine is haphazard, it can be called from a central location. Signed-off-by: Linas Vepstas Cc: James K Lewis Cc: Arnd Bergmann Signed-off-by: Jeff Garzik --- diff --git a/drivers/net/spider_net.c b/drivers/net/spider_net.c index 32a45859df..f587412391 100644 --- a/drivers/net/spider_net.c +++ b/drivers/net/spider_net.c @@ -980,17 +980,11 @@ spider_net_decode_one_descr(struct spider_net_card *card) status = spider_net_get_descr_status(descr); - /* nothing in the descriptor yet */ - if (status == SPIDER_NET_DESCR_CARDOWNED) + /* Nothing in the descriptor, or ring must be empty */ + if ((status == SPIDER_NET_DESCR_CARDOWNED) || + (status == SPIDER_NET_DESCR_NOT_IN_USE)) return 0; - if (status == SPIDER_NET_DESCR_NOT_IN_USE) { - /* not initialized yet, the ring must be empty */ - spider_net_refill_rx_chain(card); - spider_net_enable_rxdmac(card); - return 0; - } - /* descriptor definitively used -- move on tail */ chain->tail = descr->next; @@ -1074,6 +1068,7 @@ spider_net_poll(struct net_device *netdev, int *budget) netdev->quota -= packets_done; *budget -= packets_done; spider_net_refill_rx_chain(card); + spider_net_enable_rxdmac(card); /* if all packets are in the stack, enable interrupts and return 0 */ /* if not, return 1 */