firewire: core: Fix tlabel exhaustion problem
authorPeter Hurley <phurley@charter.net>
Fri, 23 Apr 2010 23:27:25 +0000 (19:27 -0400)
committerStefan Richter <stefanr@s5r6.in-berlin.de>
Tue, 18 May 2010 22:06:47 +0000 (00:06 +0200)
fw_core_handle_response() was not properly clearing tlabel_mask. This
was resulting in premature tlabel exhaustion.

Signed-off-by: Peter Hurley <phurley@charter.net>
This fixes an omission in 2.6.31-rc1 commit 1e626fdc "firewire: core:
use more outbound tlabels" which prevented to really use 64 instead of
32 transaction labels, as soon as split transactions occurred that had
their AR-resp tasklet run after the AT-req tasklet.

Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
drivers/firewire/core-transaction.c

index 9882240205cd221b3f4e0df7515a2da65cb2d8fb..901669876c253e78518c91331ac5a37c6786827b 100644 (file)
@@ -842,7 +842,7 @@ void fw_core_handle_response(struct fw_card *card, struct fw_packet *p)
        list_for_each_entry(t, &card->transaction_list, link) {
                if (t->node_id == source && t->tlabel == tlabel) {
                        list_del(&t->link);
-                       card->tlabel_mask &= ~(1 << t->tlabel);
+                       card->tlabel_mask &= ~(1ULL << t->tlabel);
                        break;
                }
        }