rt2x00: Disable txstatus tasklet by default
authorHelmut Schaa <helmut.schaa@googlemail.com>
Sun, 30 Jan 2011 12:18:13 +0000 (13:18 +0100)
committerJohn W. Linville <linville@tuxdriver.com>
Mon, 31 Jan 2011 20:06:23 +0000 (15:06 -0500)
Enable the txstatus tasklet when interrupts are enabled and disable it
together with the interrupts. Also make the txstatus tasklet useful even
without the tx status FIFO and make use of the generic rt2x00 tasklet
initialization macro.

Signed-off-by: Helmut Schaa <helmut.schaa@googlemail.com>
Acked-by: Gertjan van Wingerde <gwingerde@gmail.com>
Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/rt2x00/rt2800pci.c
drivers/net/wireless/rt2x00/rt2x00dev.c

index 54e37e08c11471a1d43c38f90b841ee0a6255959..e4d97ad25bf4f083ebd033028ebb3c3277e5614e 100644 (file)
@@ -416,7 +416,10 @@ static void rt2800pci_toggle_irq(struct rt2x00_dev *rt2x00dev,
        if (state == STATE_RADIO_IRQ_ON) {
                rt2800_register_read(rt2x00dev, INT_SOURCE_CSR, &reg);
                rt2800_register_write(rt2x00dev, INT_SOURCE_CSR, reg);
-       }
+
+               tasklet_enable(&rt2x00dev->txstatus_tasklet);
+       } else if (state == STATE_RADIO_IRQ_OFF)
+               tasklet_disable(&rt2x00dev->txstatus_tasklet);
 
        rt2800_register_read(rt2x00dev, INT_MASK_CSR, &reg);
        rt2x00_set_field32(&reg, INT_MASK_CSR_RXDELAYINT, 0);
index 7d4dece64c1ad6ad72f9b62a9b08dc2f859f9de4..5812a4e05c7f1d768155e53346cbb2be0c83671c 100644 (file)
@@ -821,13 +821,6 @@ static int rt2x00lib_probe_hw(struct rt2x00_dev *rt2x00dev)
                                     GFP_KERNEL);
                if (status)
                        return status;
-
-               /* tasklet for processing the tx status reports. */
-               if (rt2x00dev->ops->lib->txstatus_tasklet)
-                       tasklet_init(&rt2x00dev->txstatus_tasklet,
-                                    rt2x00dev->ops->lib->txstatus_tasklet,
-                                    (unsigned long)rt2x00dev);
-
        }
 
        /*
@@ -843,6 +836,7 @@ static int rt2x00lib_probe_hw(struct rt2x00_dev *rt2x00dev)
                tasklet_disable(&rt2x00dev->taskletname); \
        }
 
+       RT2X00_TASKLET_INIT(txstatus_tasklet);
        RT2X00_TASKLET_INIT(pretbtt_tasklet);
        RT2X00_TASKLET_INIT(tbtt_tasklet);
        RT2X00_TASKLET_INIT(rxdone_tasklet);