diff options
Diffstat (limited to 'drivers/firewire/fw-topology.c')
-rw-r--r-- | drivers/firewire/fw-topology.c | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/drivers/firewire/fw-topology.c b/drivers/firewire/fw-topology.c index 5e204713002d..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, | |||
355 | { | 355 | { |
356 | fw_node_event(card, node, FW_NODE_DESTROYED); | 356 | fw_node_event(card, node, FW_NODE_DESTROYED); |
357 | fw_node_put(node); | 357 | fw_node_put(node); |
358 | |||
359 | /* Topology has changed - reset bus manager retry counter */ | ||
360 | card->bm_retries = 0; | ||
358 | } | 361 | } |
359 | 362 | ||
360 | static void | 363 | static void |
@@ -374,6 +377,9 @@ report_found_node(struct fw_card *card, | |||
374 | } | 377 | } |
375 | 378 | ||
376 | fw_node_event(card, node, FW_NODE_CREATED); | 379 | fw_node_event(card, node, FW_NODE_CREATED); |
380 | |||
381 | /* Topology has changed - reset bus manager retry counter */ | ||
382 | card->bm_retries = 0; | ||
377 | } | 383 | } |
378 | 384 | ||
379 | void fw_destroy_nodes(struct fw_card *card) | 385 | void fw_destroy_nodes(struct fw_card *card) |
@@ -514,14 +520,6 @@ fw_core_handle_bus_reset(struct fw_card *card, | |||
514 | 520 | ||
515 | spin_lock_irqsave(&card->lock, flags); | 521 | spin_lock_irqsave(&card->lock, flags); |
516 | 522 | ||
517 | /* | ||
518 | * If the new topology has a different self_id_count the topology | ||
519 | * changed, either nodes were added or removed. In that case we | ||
520 | * reset the IRM reset counter. | ||
521 | */ | ||
522 | if (card->self_id_count != self_id_count) | ||
523 | card->bm_retries = 0; | ||
524 | |||
525 | card->node_id = node_id; | 523 | card->node_id = node_id; |
526 | /* | 524 | /* |
527 | * Update node_id before generation to prevent anybody from using | 525 | * Update node_id before generation to prevent anybody from using |
@@ -530,7 +528,7 @@ fw_core_handle_bus_reset(struct fw_card *card, | |||
530 | smp_wmb(); | 528 | smp_wmb(); |
531 | card->generation = generation; | 529 | card->generation = generation; |
532 | card->reset_jiffies = jiffies; | 530 | card->reset_jiffies = jiffies; |
533 | schedule_delayed_work(&card->work, 0); | 531 | fw_schedule_bm_work(card, 0); |
534 | 532 | ||
535 | local_node = build_tree(card, self_ids, self_id_count); | 533 | local_node = build_tree(card, self_ids, self_id_count); |
536 | 534 | ||