aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/firewire
diff options
context:
space:
mode:
authorStefan Richter <stefanr@s5r6.in-berlin.de>2011-03-14 19:04:42 -0400
committerStefan Richter <stefanr@s5r6.in-berlin.de>2011-03-20 11:45:24 -0400
commit7a4e1e9c682cd87fe8a749b435b13afeef083c34 (patch)
tree4a2d0558222d25a2d37fc215cc95090ace00ffa7 /drivers/firewire
parentdd5eeb99f47d18c05efffcd247c0aa07eaa9ffaa (diff)
firewire: sbp2: revert obsolete 'fix stall with "Unsolicited response"'
Now that firewire-core sets the local node's SPLIT_TIMEOUT to 2 seconds per default, commit a481e97d3cdc40b9d58271675bd4f0abb79d4872 is no longer required. Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
Diffstat (limited to 'drivers/firewire')
-rw-r--r--drivers/firewire/sbp2.c11
1 files changed, 3 insertions, 8 deletions
diff --git a/drivers/firewire/sbp2.c b/drivers/firewire/sbp2.c
index afa576a75a8e..77ed589b360d 100644
--- a/drivers/firewire/sbp2.c
+++ b/drivers/firewire/sbp2.c
@@ -472,18 +472,12 @@ static void complete_transaction(struct fw_card *card, int rcode,
472 * So this callback only sets the rcode if it hasn't already 472 * So this callback only sets the rcode if it hasn't already
473 * been set and only does the cleanup if the transaction 473 * been set and only does the cleanup if the transaction
474 * failed and we didn't already get a status write. 474 * failed and we didn't already get a status write.
475 *
476 * Here we treat RCODE_CANCELLED like RCODE_COMPLETE because some
477 * OXUF936QSE firmwares occasionally respond after Split_Timeout and
478 * complete the ORB just fine. Note, we also get RCODE_CANCELLED
479 * from sbp2_cancel_orbs() if fw_cancel_transaction() == 0.
480 */ 475 */
481 spin_lock_irqsave(&card->lock, flags); 476 spin_lock_irqsave(&card->lock, flags);
482 477
483 if (orb->rcode == -1) 478 if (orb->rcode == -1)
484 orb->rcode = rcode; 479 orb->rcode = rcode;
485 480 if (orb->rcode != RCODE_COMPLETE) {
486 if (orb->rcode != RCODE_COMPLETE && orb->rcode != RCODE_CANCELLED) {
487 list_del(&orb->link); 481 list_del(&orb->link);
488 spin_unlock_irqrestore(&card->lock, flags); 482 spin_unlock_irqrestore(&card->lock, flags);
489 483
@@ -532,7 +526,8 @@ static int sbp2_cancel_orbs(struct sbp2_logical_unit *lu)
532 526
533 list_for_each_entry_safe(orb, next, &list, link) { 527 list_for_each_entry_safe(orb, next, &list, link) {
534 retval = 0; 528 retval = 0;
535 fw_cancel_transaction(device->card, &orb->t); 529 if (fw_cancel_transaction(device->card, &orb->t) == 0)
530 continue;
536 531
537 orb->rcode = RCODE_CANCELLED; 532 orb->rcode = RCODE_CANCELLED;
538 orb->callback(orb, NULL); 533 orb->callback(orb, NULL);