summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStefan Richter <stefanr@s5r6.in-berlin.de>2009-03-10 21:07:46 +0100
committerStefan Richter <stefanr@s5r6.in-berlin.de>2009-03-24 20:56:51 +0100
commite1dc7cab43619a2fbc90fd4cd712bd3fff703768 (patch)
tree71c0868fbd395e7dd67e4add14aa5b247b9693ce
parenta38a00fdef98a8eda23a25e54490b32865bc7c33 (diff)
downloadop-kernel-dev-e1dc7cab43619a2fbc90fd4cd712bd3fff703768.zip
op-kernel-dev-e1dc7cab43619a2fbc90fd4cd712bd3fff703768.tar.gz
firewire: core: increase bus manager grace period
Per IEEE 1394 clause 8.4.2.5, bus manager capable nodes which are not incumbent shall wait at least 125ms before trying to establish themselves as bus manager. Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
-rw-r--r--drivers/firewire/fw-card.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/drivers/firewire/fw-card.c b/drivers/firewire/fw-card.c
index f2b363e..b3463b8 100644
--- a/drivers/firewire/fw-card.c
+++ b/drivers/firewire/fw-card.c
@@ -368,9 +368,11 @@ static void fw_card_bm_work(struct work_struct *work)
atomic_read(&root_device->state) == FW_DEVICE_RUNNING;
root_device_is_cmc = root_device && root_device->cmc;
root_id = root_node->node_id;
- grace = time_after(jiffies, card->reset_jiffies + DIV_ROUND_UP(HZ, 10));
irm_device = irm_node->data;
local_device = local_node->data;
+
+ grace = time_after(jiffies, card->reset_jiffies + DIV_ROUND_UP(HZ, 8));
+
if (is_next_generation(generation, card->bm_generation) ||
(card->bm_generation != generation && grace)) {
/*
@@ -434,12 +436,11 @@ static void fw_card_bm_work(struct work_struct *work)
}
} else if (card->bm_generation != generation) {
/*
- * OK, we weren't BM in the last generation, and it's
- * less than 100ms since last bus reset. Reschedule
- * this task 100ms from now.
+ * We weren't BM in the last generation, and the last
+ * bus reset is less than 125ms ago. Reschedule this job.
*/
spin_unlock_irqrestore(&card->lock, flags);
- fw_schedule_bm_work(card, DIV_ROUND_UP(HZ, 10));
+ fw_schedule_bm_work(card, DIV_ROUND_UP(HZ, 8));
goto out;
}
OpenPOWER on IntegriCloud