rt2x00: allow txstatus_fifo w/o txstatus_tasklet
authorJohannes Stezenbach <js@sig21.net>
Mon, 27 Dec 2010 14:04:54 +0000 (15:04 +0100)
committerJohn W. Linville <linville@tuxdriver.com>
Tue, 4 Jan 2011 19:35:13 +0000 (14:35 -0500)
When DRIVER_REQUIRE_TXSTATUS_FIFO is set, intialize the
txstatus_fifo, but initialize rt2x00dev->txstatus_tasklet
only when both DRIVER_REQUIRE_TXSTATUS_FIFO and
rt2x00dev->ops->lib->txstatus_tasklet are set.

This allows the txstatus_fifo to be used by rt2800usb which
does not use txstatus_tasklet.

Signed-off-by: Johannes Stezenbach <js@sig21.net>
Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/rt2x00/rt2x00dev.c

index fa74acd..97a8911 100644 (file)
@@ -813,8 +813,7 @@ static int rt2x00lib_probe_hw(struct rt2x00_dev *rt2x00dev)
        /*
         * Allocate tx status FIFO for driver use.
         */
-       if (test_bit(DRIVER_REQUIRE_TXSTATUS_FIFO, &rt2x00dev->flags) &&
-           rt2x00dev->ops->lib->txstatus_tasklet) {
+       if (test_bit(DRIVER_REQUIRE_TXSTATUS_FIFO, &rt2x00dev->flags)) {
                /*
                 * Allocate txstatus fifo and tasklet, we use a size of 512
                 * for the kfifo which is big enough to store 512/4=128 tx
@@ -828,9 +827,10 @@ static int rt2x00lib_probe_hw(struct rt2x00_dev *rt2x00dev)
                        return status;
 
                /* tasklet for processing the tx status reports. */
-               tasklet_init(&rt2x00dev->txstatus_tasklet,
-                            rt2x00dev->ops->lib->txstatus_tasklet,
-                            (unsigned long)rt2x00dev);
+               if (rt2x00dev->ops->lib->txstatus_tasklet)
+                       tasklet_init(&rt2x00dev->txstatus_tasklet,
+                                    rt2x00dev->ops->lib->txstatus_tasklet,
+                                    (unsigned long)rt2x00dev);
 
        }