aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/rt2x00/rt2800usb.c
diff options
context:
space:
mode:
authorJohannes Stezenbach <js@sig21.net>2011-04-18 09:30:01 -0400
committerJohn W. Linville <linville@tuxdriver.com>2011-04-19 15:39:32 -0400
commit6e6d6932a3f525d734f6c2f5845e9cadfaeddce9 (patch)
tree7e33c091bdc04d0659579b6be178f689faa040e5 /drivers/net/wireless/rt2x00/rt2800usb.c
parent75256f0348d38f414b7ac50ac78d4a4532bb6762 (diff)
rt2800usb: handle TX status timeouts
The watchdog just triggers rt2800usb_work_txdone() when it detects a TX status timeout, thus rt2800usb_work_txdone() needs to handle this case. 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>
Diffstat (limited to 'drivers/net/wireless/rt2x00/rt2800usb.c')
-rw-r--r--drivers/net/wireless/rt2x00/rt2800usb.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/drivers/net/wireless/rt2x00/rt2800usb.c b/drivers/net/wireless/rt2x00/rt2800usb.c
index 862430e600ad..69004b968122 100644
--- a/drivers/net/wireless/rt2x00/rt2800usb.c
+++ b/drivers/net/wireless/rt2x00/rt2800usb.c
@@ -449,11 +449,14 @@ static void rt2800usb_work_txdone(struct work_struct *work)
449 while (!rt2x00queue_empty(queue)) { 449 while (!rt2x00queue_empty(queue)) {
450 entry = rt2x00queue_get_entry(queue, Q_INDEX_DONE); 450 entry = rt2x00queue_get_entry(queue, Q_INDEX_DONE);
451 451
452 if (test_bit(ENTRY_OWNER_DEVICE_DATA, &entry->flags) || 452 if (test_bit(ENTRY_OWNER_DEVICE_DATA, &entry->flags))
453 !test_bit(ENTRY_DATA_IO_FAILED, &entry->flags)) 453 break;
454 if (test_bit(ENTRY_DATA_IO_FAILED, &entry->flags))
455 rt2x00lib_txdone_noinfo(entry, TXDONE_FAILURE);
456 else if (rt2x00queue_status_timeout(entry))
457 rt2x00lib_txdone_noinfo(entry, TXDONE_UNKNOWN);
458 else
454 break; 459 break;
455
456 rt2x00lib_txdone_noinfo(entry, TXDONE_FAILURE);
457 } 460 }
458 } 461 }
459} 462}