firewire: Implement topology map and fix a couple of loopback bugs.

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-transaction.h b/drivers/firewire/fw-transaction.h
index e7301b8..a661afb 100644
--- a/drivers/firewire/fw-transaction.h
+++ b/drivers/firewire/fw-transaction.h
@@ -285,9 +285,10 @@
 	int link_speed;
 	int config_rom_generation;
 
-	/* We need to store up to 4 self ID for a maximum of 63 devices. */
+	/* We need to store up to 4 self ID for a maximum of 63
+	 * devices plus 3 words for the topology map header. */
 	int self_id_count;
-	u32 self_ids[252];
+	u32 topology_map[252 + 3];
 
 	spinlock_t lock; /* Take this lock when handling the lists in
 			  * this struct. */