wimax/i2400m: don't call netif_start_queue() in _tx_msg_sent()
authorInaky Perez-Gonzalez <inaky@linux.intel.com>
Fri, 8 May 2009 15:58:51 +0000 (08:58 -0700)
committerInaky Perez-Gonzalez <inaky@linux.intel.com>
Thu, 11 Jun 2009 10:30:18 +0000 (03:30 -0700)
Reported and fixed by Cindy H Kao.

When the device is stopped __i2400m_dev_stop() stops the network
queue.

However, when this is done in the middle of heavy network operation,
when the bus-specific subdriver is still wrapping up and it reports a
sent TX transaction with _tx_msg_sent() right after the device was
stopped, the queue was being started again, which was causing a stream
of oopsen and finally a panic.

In any case, said call has no place there. It's a left over from an
early implementation that was discarded later on.

Signed-off-by: Inaky Perez-Gonzalez <inaky@linux.intel.com>
drivers/net/wimax/i2400m/tx.c

index 613a88ffd651e03725d333feb5d77baa5cdd13e7..8ef724d31fbf34d839dd9fa1cd9a3005451d9a85 100644 (file)
@@ -773,7 +773,6 @@ void i2400m_tx_msg_sent(struct i2400m *i2400m)
        n = i2400m->tx_out / I2400M_TX_BUF_SIZE;
        i2400m->tx_out %= I2400M_TX_BUF_SIZE;
        i2400m->tx_in -= n * I2400M_TX_BUF_SIZE;
-       netif_start_queue(i2400m->wimax_dev.net_dev);
        spin_unlock_irqrestore(&i2400m->tx_lock, flags);
        d_fnend(3, dev, "(i2400m %p) = void\n", i2400m);
 }