ipwireless: Put packets to pool start
David Sterba [Mon, 28 Jul 2008 14:53:27 +0000 (16:53 +0200)]
ipwireless: Put packets to pool start

Put packets to pool start, try to reuse cached memory.

Signed-off-by: David Sterba <dsterba@suse.cz>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

drivers/char/pcmcia/ipwireless/hardware.c

index 814ea32..d1e69de 100644 (file)
@@ -563,9 +563,9 @@ static struct ipw_rx_packet *pool_allocate(struct ipw_hardware *hw,
                if (!list_empty(&hw->rx_pool)) {
                        packet = list_first_entry(&hw->rx_pool,
                                        struct ipw_rx_packet, queue);
-                       list_del(&packet->queue);
                        hw->rx_pool_size--;
                        spin_unlock_irqrestore(&hw->lock, flags);
+                       list_del(&packet->queue);
                } else {
                        static int min_capacity = 256;
                        int new_capacity;
@@ -610,7 +610,7 @@ static void pool_free(struct ipw_hardware *hw, struct ipw_rx_packet *packet)
                kfree(packet);
        else {
                hw->rx_pool_size++;
-               list_add_tail(&packet->queue, &hw->rx_pool);
+               list_add(&packet->queue, &hw->rx_pool);
        }
 }