From a1c52bf1a3e3c994d08b5baa6d2320fb2dac9b4c Mon Sep 17 00:00:00 2001 From: Linas Vepstas Date: Mon, 11 Jun 2007 13:23:42 -0500 Subject: [PATCH] --- yaml --- r: 57909 b: refs/heads/master c: 2bf27a0d4913a5f0ef38e3be510b1b3add2869ad h: refs/heads/master i: 57907: 01713bd3780abf4d9720b948ff4e6a4ff6b0ee20 v: v3 --- [refs] | 2 +- trunk/drivers/net/spider_net.c | 18 +++++++++--------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/[refs] b/[refs] index 83618479409c..61e9cbe514aa 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 4c4bd5a97a87670d2c368ed4ed8a8f2c93080605 +refs/heads/master: 2bf27a0d4913a5f0ef38e3be510b1b3add2869ad diff --git a/trunk/drivers/net/spider_net.c b/trunk/drivers/net/spider_net.c index c99980a14203..f5ede5f6073c 100644 --- a/trunk/drivers/net/spider_net.c +++ b/trunk/drivers/net/spider_net.c @@ -460,13 +460,9 @@ spider_net_prepare_rx_descr(struct spider_net_card *card, hwdescr->dmac_cmd_status = SPIDER_NET_DESCR_NOT_IN_USE; } else { hwdescr->buf_addr = buf; - hwdescr->next_descr_addr = 0; wmb(); hwdescr->dmac_cmd_status = SPIDER_NET_DESCR_CARDOWNED | SPIDER_NET_DMAC_NOINTR_COMPLETE; - - wmb(); - descr->prev->hwdescr->next_descr_addr = descr->bus_addr; } return 0; @@ -541,12 +537,16 @@ spider_net_refill_rx_chain(struct spider_net_card *card) static int spider_net_alloc_rx_skbs(struct spider_net_card *card) { - int result; - struct spider_net_descr_chain *chain; + struct spider_net_descr_chain *chain = &card->rx_chain; + struct spider_net_descr *start = chain->tail; + struct spider_net_descr *descr = start; - result = -ENOMEM; + /* Link up the hardware chain pointers */ + do { + descr->prev->hwdescr->next_descr_addr = descr->bus_addr; + descr = descr->next; + } while (descr != start); - chain = &card->rx_chain; /* Put at least one buffer into the chain. if this fails, * we've got a problem. If not, spider_net_refill_rx_chain * will do the rest at the end of this function. */ @@ -563,7 +563,7 @@ spider_net_alloc_rx_skbs(struct spider_net_card *card) error: spider_net_free_rx_chain_contents(card); - return result; + return -ENOMEM; } /**