Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 272394
b: refs/heads/master
c: 32eaeae
h: refs/heads/master
v: v3
  • Loading branch information
Clemens Ladisch authored and Stefan Richter committed Oct 18, 2011
1 parent 4716a55 commit d3a2e32
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 3 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: a74477db9171e677b7a37b89e6e0ac8a15ba1f26
refs/heads/master: 32eaeae177bf77fbc224c35262add45bd5e6abb3
18 changes: 16 additions & 2 deletions trunk/drivers/firewire/ohci.c
Original file line number Diff line number Diff line change
Expand Up @@ -1860,8 +1860,22 @@ static void bus_reset_work(struct work_struct *work)

for (i = 1, j = 0; j < self_id_count; i += 2, j++) {
if (ohci->self_id_cpu[i] != ~ohci->self_id_cpu[i + 1]) {
fw_notify("inconsistent self IDs\n");
return;
/*
* If the invalid data looks like a cycle start packet,
* it's likely to be the result of the cycle master
* having a wrong gap count. In this case, the self IDs
* so far are valid and should be processed so that the
* bus manager can then correct the gap count.
*/
if (cond_le32_to_cpu(ohci->self_id_cpu[i])
== 0xffff008f) {
fw_notify("ignoring spurious self IDs\n");
self_id_count = j;
break;
} else {
fw_notify("inconsistent self IDs\n");
return;
}
}
ohci->self_id_buffer[j] =
cond_le32_to_cpu(ohci->self_id_cpu[i]);
Expand Down

0 comments on commit d3a2e32

Please sign in to comment.