aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/firewire
diff options
context:
space:
mode:
authorKristian Høgsberg <krh@redhat.com>2007-02-06 14:49:35 -0500
committerStefan Richter <stefanr@s5r6.in-berlin.de>2007-03-09 16:02:53 -0500
commit993baca3dde7959567e3c7c262c2bc843ba241de (patch)
treebc924ea80ec97b3ef04d9f4017608f25ab70566b /drivers/firewire
parent7f37c426c68d34aa221ce29262c1eba39034ac97 (diff)
firewire: Schedule topology work before calling driver update functions.
This prevents superfluous bus traffic as fw-sbp2 logs in only to get kicked off the device by another bus reset as the driver core does bus management. Scheduling it this way lets the driver core finish bus management before higher level drivers get the update callback. Signed-off-by: Kristian Høgsberg <krh@redhat.com> Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
Diffstat (limited to 'drivers/firewire')
-rw-r--r--drivers/firewire/fw-topology.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/drivers/firewire/fw-topology.c b/drivers/firewire/fw-topology.c
index 27c6cb9c8367..36c9be75b025 100644
--- a/drivers/firewire/fw-topology.c
+++ b/drivers/firewire/fw-topology.c
@@ -483,6 +483,7 @@ fw_core_handle_bus_reset(struct fw_card *card,
483 card->generation = generation; 483 card->generation = generation;
484 memcpy(card->self_ids, self_ids, self_id_count * 4); 484 memcpy(card->self_ids, self_ids, self_id_count * 4);
485 card->reset_jiffies = jiffies; 485 card->reset_jiffies = jiffies;
486 schedule_delayed_work(&card->work, 0);
486 487
487 local_node = build_tree(card); 488 local_node = build_tree(card);
488 489
@@ -498,8 +499,6 @@ fw_core_handle_bus_reset(struct fw_card *card,
498 update_tree(card, local_node); 499 update_tree(card, local_node);
499 } 500 }
500 501
501 schedule_delayed_work(&card->work, 0);
502
503 spin_unlock_irqrestore(&card->lock, flags); 502 spin_unlock_irqrestore(&card->lock, flags);
504} 503}
505EXPORT_SYMBOL(fw_core_handle_bus_reset); 504EXPORT_SYMBOL(fw_core_handle_bus_reset);