aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/rt2x00
diff options
context:
space:
mode:
authorIvo van Doorn <ivdoorn@gmail.com>2010-08-06 14:46:53 -0400
committerJohn W. Linville <linville@tuxdriver.com>2010-08-16 15:26:42 -0400
commit3392beced38f67615b7fc88374940cecec6a0e4f (patch)
treeed1376272c1a29c26e9768cefcbca96d60e736c1 /drivers/net/wireless/rt2x00
parent84804cdca043e2315bf5eae60807ac105929073f (diff)
rt2x00: Add helper function for reporting tx status
At some points, some drivers can't report the full TX status information. This can happen for the UNKNOWN state, or the FAILURE state (in case the URB failed). Add a wrapper function to simplify reporting the empty TX information. Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com> Acked-by: Helmut Schaa <helmut.schaa@googlemail.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/rt2x00')
-rw-r--r--drivers/net/wireless/rt2x00/rt2x00.h1
-rw-r--r--drivers/net/wireless/rt2x00/rt2x00dev.c12
-rw-r--r--drivers/net/wireless/rt2x00/rt2x00usb.c10
-rw-r--r--drivers/net/wireless/rt2x00/rt61pci.c6
4 files changed, 16 insertions, 13 deletions
diff --git a/drivers/net/wireless/rt2x00/rt2x00.h b/drivers/net/wireless/rt2x00/rt2x00.h
index 5276c19f380a..edfc2b759282 100644
--- a/drivers/net/wireless/rt2x00/rt2x00.h
+++ b/drivers/net/wireless/rt2x00/rt2x00.h
@@ -1078,6 +1078,7 @@ void rt2x00lib_beacondone(struct rt2x00_dev *rt2x00dev);
1078void rt2x00lib_pretbtt(struct rt2x00_dev *rt2x00dev); 1078void rt2x00lib_pretbtt(struct rt2x00_dev *rt2x00dev);
1079void rt2x00lib_txdone(struct queue_entry *entry, 1079void rt2x00lib_txdone(struct queue_entry *entry,
1080 struct txdone_entry_desc *txdesc); 1080 struct txdone_entry_desc *txdesc);
1081void rt2x00lib_txdone_noinfo(struct queue_entry *entry, u32 status);
1081void rt2x00lib_rxdone(struct rt2x00_dev *rt2x00dev, 1082void rt2x00lib_rxdone(struct rt2x00_dev *rt2x00dev,
1082 struct queue_entry *entry); 1083 struct queue_entry *entry);
1083 1084
diff --git a/drivers/net/wireless/rt2x00/rt2x00dev.c b/drivers/net/wireless/rt2x00/rt2x00dev.c
index 94621bd4fb9b..6499cc416ca3 100644
--- a/drivers/net/wireless/rt2x00/rt2x00dev.c
+++ b/drivers/net/wireless/rt2x00/rt2x00dev.c
@@ -408,6 +408,18 @@ void rt2x00lib_txdone(struct queue_entry *entry,
408} 408}
409EXPORT_SYMBOL_GPL(rt2x00lib_txdone); 409EXPORT_SYMBOL_GPL(rt2x00lib_txdone);
410 410
411void rt2x00lib_txdone_noinfo(struct queue_entry *entry, u32 status)
412{
413 struct txdone_entry_desc txdesc;
414
415 txdesc.flags = 0;
416 __set_bit(status, &txdesc.flags);
417 txdesc.retry = 0;
418
419 rt2x00lib_txdone(entry, &txdesc);
420}
421EXPORT_SYMBOL_GPL(rt2x00lib_txdone_noinfo);
422
411static int rt2x00lib_rxdone_read_signal(struct rt2x00_dev *rt2x00dev, 423static int rt2x00lib_rxdone_read_signal(struct rt2x00_dev *rt2x00dev,
412 struct rxdone_entry_desc *rxdesc) 424 struct rxdone_entry_desc *rxdesc)
413{ 425{
diff --git a/drivers/net/wireless/rt2x00/rt2x00usb.c b/drivers/net/wireless/rt2x00/rt2x00usb.c
index 3f131017fd21..f76014f732ce 100644
--- a/drivers/net/wireless/rt2x00/rt2x00usb.c
+++ b/drivers/net/wireless/rt2x00/rt2x00usb.c
@@ -170,8 +170,6 @@ EXPORT_SYMBOL_GPL(rt2x00usb_regbusy_read);
170 */ 170 */
171static void rt2x00usb_work_txdone_entry(struct queue_entry *entry) 171static void rt2x00usb_work_txdone_entry(struct queue_entry *entry)
172{ 172{
173 struct txdone_entry_desc txdesc;
174
175 /* 173 /*
176 * If the transfer to hardware succeeded, it does not mean the 174 * If the transfer to hardware succeeded, it does not mean the
177 * frame was send out correctly. It only means the frame 175 * frame was send out correctly. It only means the frame
@@ -180,14 +178,10 @@ static void rt2x00usb_work_txdone_entry(struct queue_entry *entry)
180 * (Only indirectly by looking at the failed TX counters 178 * (Only indirectly by looking at the failed TX counters
181 * in the register). 179 * in the register).
182 */ 180 */
183 txdesc.flags = 0;
184 if (test_bit(ENTRY_DATA_IO_FAILED, &entry->flags)) 181 if (test_bit(ENTRY_DATA_IO_FAILED, &entry->flags))
185 __set_bit(TXDONE_FAILURE, &txdesc.flags); 182 rt2x00lib_txdone_noinfo(entry, TXDONE_FAILURE);
186 else 183 else
187 __set_bit(TXDONE_UNKNOWN, &txdesc.flags); 184 rt2x00lib_txdone_noinfo(entry, TXDONE_UNKNOWN);
188 txdesc.retry = 0;
189
190 rt2x00lib_txdone(entry, &txdesc);
191} 185}
192 186
193static void rt2x00usb_work_txdone(struct work_struct *work) 187static void rt2x00usb_work_txdone(struct work_struct *work)
diff --git a/drivers/net/wireless/rt2x00/rt61pci.c b/drivers/net/wireless/rt2x00/rt61pci.c
index e539c6cb636f..dc6f3ebb8376 100644
--- a/drivers/net/wireless/rt2x00/rt61pci.c
+++ b/drivers/net/wireless/rt2x00/rt61pci.c
@@ -2107,11 +2107,7 @@ static void rt61pci_txdone(struct rt2x00_dev *rt2x00dev)
2107 "TX status report missed for entry %d\n", 2107 "TX status report missed for entry %d\n",
2108 entry_done->entry_idx); 2108 entry_done->entry_idx);
2109 2109
2110 txdesc.flags = 0; 2110 rt2x00lib_txdone_noinfo(entry, TXDONE_UNKNOWN);
2111 __set_bit(TXDONE_UNKNOWN, &txdesc.flags);
2112 txdesc.retry = 0;
2113
2114 rt2x00lib_txdone(entry_done, &txdesc);
2115 entry_done = rt2x00queue_get_entry(queue, Q_INDEX_DONE); 2111 entry_done = rt2x00queue_get_entry(queue, Q_INDEX_DONE);
2116 } 2112 }
2117 2113