diff options
author | Stefan Richter <stefanr@s5r6.in-berlin.de> | 2008-11-29 20:56:47 +0300 |
---|---|---|
committer | Stefan Richter <stefanr@s5r6.in-berlin.de> | 2009-01-05 01:50:38 +0300 |
commit | d6f95a3d14dc403881b23ad268ec1e3600c4e6b4 (patch) | |
tree | 5c5662fed71f11afa75d55ea5179e7d47da6a24a /drivers/firewire | |
parent | 0fa1986f3a6c385b3bca0b6a051c30e548bda30d (diff) | |
download | linux-d6f95a3d14dc403881b23ad268ec1e3600c4e6b4.tar.xz |
firewire: fix resetting of bus manager retry counter
An earlier change, maybe long ago, removed the copying of self_id_count
into card->self_id_count. Since then each bus reset cleared
card->bm_retries even when it shouldn't.
Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
Diffstat (limited to 'drivers/firewire')
-rw-r--r-- | drivers/firewire/fw-topology.c | 14 | ||||
-rw-r--r-- | drivers/firewire/fw-transaction.h | 1 |
2 files changed, 6 insertions, 9 deletions
diff --git a/drivers/firewire/fw-topology.c b/drivers/firewire/fw-topology.c index 7687dca1a690..c9be6e6948c4 100644 --- a/drivers/firewire/fw-topology.c +++ b/drivers/firewire/fw-topology.c @@ -355,6 +355,9 @@ report_lost_node(struct fw_card *card, { fw_node_event(card, node, FW_NODE_DESTROYED); fw_node_put(node); + + /* Topology has changed - reset bus manager retry counter */ + card->bm_retries = 0; } static void @@ -374,6 +377,9 @@ report_found_node(struct fw_card *card, } fw_node_event(card, node, FW_NODE_CREATED); + + /* Topology has changed - reset bus manager retry counter */ + card->bm_retries = 0; } void fw_destroy_nodes(struct fw_card *card) @@ -514,14 +520,6 @@ fw_core_handle_bus_reset(struct fw_card *card, spin_lock_irqsave(&card->lock, flags); - /* - * If the new topology has a different self_id_count the topology - * 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->bm_retries = 0; - card->node_id = node_id; /* * Update node_id before generation to prevent anybody from using diff --git a/drivers/firewire/fw-transaction.h b/drivers/firewire/fw-transaction.h index 0497a18dc59e..5a57bb897e23 100644 --- a/drivers/firewire/fw-transaction.h +++ b/drivers/firewire/fw-transaction.h @@ -241,7 +241,6 @@ struct fw_card { * 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 topology_map[252 + 3]; u32 broadcast_channel; |