firewire: Implement compliant bus management.

Signed-off-by: Kristian Høgsberg <krh@redhat.com>
Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
diff --git a/drivers/firewire/fw-topology.c b/drivers/firewire/fw-topology.c
index fc8f1e7..27c6cb9 100644
--- a/drivers/firewire/fw-topology.c
+++ b/drivers/firewire/fw-topology.c
@@ -476,12 +476,13 @@
 	 * changed, either nodes were added or removed. In that case we
 	 * reset the IRM reset counter. */
 	if (card->self_id_count != self_id_count)
-		card->irm_retries = 0;
+		card->bm_retries = 0;
 
 	card->node_id = node_id;
 	card->self_id_count = self_id_count;
 	card->generation = generation;
 	memcpy(card->self_ids, self_ids, self_id_count * 4);
+	card->reset_jiffies = jiffies;
 
 	local_node = build_tree(card);
 
@@ -497,9 +498,7 @@
 		update_tree(card, local_node);
 	}
 
-	/* If we're not the root node, we may have to do some IRM work. */
-	if (card->local_node != card->root_node)
-		schedule_delayed_work(&card->work, 0);
+	schedule_delayed_work(&card->work, 0);
 
 	spin_unlock_irqrestore(&card->lock, flags);
 }