|
@@ -847,23 +847,22 @@ static int b44_poll(struct napi_struct *napi, int budget)
|
|
|
{
|
|
|
struct b44 *bp = container_of(napi, struct b44, napi);
|
|
|
int work_done;
|
|
|
+ unsigned long flags;
|
|
|
|
|
|
- spin_lock_irq(&bp->lock);
|
|
|
+ spin_lock_irqsave(&bp->lock, flags);
|
|
|
|
|
|
if (bp->istat & (ISTAT_TX | ISTAT_TO)) {
|
|
|
/* spin_lock(&bp->tx_lock); */
|
|
|
b44_tx(bp);
|
|
|
/* spin_unlock(&bp->tx_lock); */
|
|
|
}
|
|
|
- spin_unlock_irq(&bp->lock);
|
|
|
+ spin_unlock_irqrestore(&bp->lock, flags);
|
|
|
|
|
|
work_done = 0;
|
|
|
if (bp->istat & ISTAT_RX)
|
|
|
work_done += b44_rx(bp, budget);
|
|
|
|
|
|
if (bp->istat & ISTAT_ERRORS) {
|
|
|
- unsigned long flags;
|
|
|
-
|
|
|
spin_lock_irqsave(&bp->lock, flags);
|
|
|
b44_halt(bp);
|
|
|
b44_init_rings(bp);
|