rt2x00: simplify txstatus_fifo handling
authorJohannes Stezenbach <js@sig21.net>
Mon, 27 Dec 2010 14:04:29 +0000 (15:04 +0100)
committerJohn W. Linville <linville@tuxdriver.com>
Tue, 4 Jan 2011 19:35:13 +0000 (14:35 -0500)
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/rt2800pci.c
drivers/net/wireless/rt2x00/rt2x00.h

index baa1468..aa97971 100644 (file)
@@ -688,14 +688,7 @@ static void rt2800pci_txdone(struct rt2x00_dev *rt2x00dev)
        u32 status;
        u8 qid;
 
-       while (!kfifo_is_empty(&rt2x00dev->txstatus_fifo)) {
-               /* Now remove the tx status from the FIFO */
-               if (kfifo_out(&rt2x00dev->txstatus_fifo, &status,
-                             sizeof(status)) != sizeof(status)) {
-                       WARN_ON(1);
-                       break;
-               }
-
+       while (kfifo_get(&rt2x00dev->txstatus_fifo, &status)) {
                qid = rt2x00_get_field32(status, TX_STA_FIFO_PID_QUEUE);
                if (qid >= QID_RX) {
                        /*
@@ -803,14 +796,7 @@ static void rt2800pci_txstatus_interrupt(struct rt2x00_dev *rt2x00dev)
                if (!rt2x00_get_field32(status, TX_STA_FIFO_VALID))
                        break;
 
-               if (kfifo_is_full(&rt2x00dev->txstatus_fifo)) {
-                       WARNING(rt2x00dev, "TX status FIFO overrun,"
-                               " drop tx status report.\n");
-                       break;
-               }
-
-               if (kfifo_in(&rt2x00dev->txstatus_fifo, &status,
-                            sizeof(status)) != sizeof(status)) {
+               if (!kfifo_put(&rt2x00dev->txstatus_fifo, &status)) {
                        WARNING(rt2x00dev, "TX status FIFO overrun,"
                                "drop tx status report.\n");
                        break;
index c254d5a..af1d3ef 100644 (file)
@@ -908,7 +908,7 @@ struct rt2x00_dev {
        /*
         * FIFO for storing tx status reports between isr and tasklet.
         */
-       struct kfifo txstatus_fifo;
+       DECLARE_KFIFO_PTR(txstatus_fifo, u32);
 
        /*
         * Tasklet for processing tx status reports (rt2800pci).