--- ns83820.c Fri Aug 31 20:30:09 2001 +++ /tmp/ns83820.c Tue Sep 4 19:04:42 2001 @@ -1,4 +1,4 @@ -#define VERSION "0.10" +#define VERSION "0.10b" /* ns83820.c by Benjamin LaHaise * * $Revision: 1.34 $ @@ -456,10 +456,8 @@ next_empty = dev->rx_info.next_empty; /* don't overrun last rx marker */ - if (nr_rx_empty(dev) <= 2) { - kfree_skb(skb); + if (nr_rx_empty(dev) <= 2) return 1; - } #if 0 dprintk("next_empty[%d] nr_used[%d] next_rx[%d]\n", @@ -491,11 +489,11 @@ long flags = 0; dprintk("rx_refill(%p)\n", dev); - if (gfp == GFP_ATOMIC) - spin_lock_irqsave(&dev->rx_info.lock, flags); for (i=0; idev = &dev->net_dev; - if (gfp != GFP_ATOMIC) - spin_lock_irqsave(&dev->rx_info.lock, flags); + spin_lock_irqsave(&dev->rx_info.lock, flags); res = ns83820_add_rx_skb(dev, skb); - if (gfp != GFP_ATOMIC) - spin_unlock_irqrestore(&dev->rx_info.lock, flags); + spin_unlock_irqrestore(&dev->rx_info.lock, flags); if (res) { + kfree_skb(skb); i = 1; break; } } - if (gfp == GFP_ATOMIC) - spin_unlock_irqrestore(&dev->rx_info.lock, flags); return i ? 0 : -ENOMEM; }