diff options
| author | Stefan Richter <stefanr@s5r6.in-berlin.de> | 2011-03-14 19:04:42 -0400 |
|---|---|---|
| committer | Stefan Richter <stefanr@s5r6.in-berlin.de> | 2011-03-20 11:45:24 -0400 |
| commit | 7a4e1e9c682cd87fe8a749b435b13afeef083c34 (patch) | |
| tree | 4a2d0558222d25a2d37fc215cc95090ace00ffa7 /drivers | |
| parent | dd5eeb99f47d18c05efffcd247c0aa07eaa9ffaa (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')
| -rw-r--r-- | drivers/firewire/sbp2.c | 11 |
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); |
