diff options
| -rw-r--r-- | drivers/firewire/core-card.c | 5 | ||||
| -rw-r--r-- | drivers/firewire/core-cdev.c | 3 | ||||
| -rw-r--r-- | drivers/firewire/core-device.c | 3 | ||||
| -rw-r--r-- | drivers/firewire/core-topology.c | 2 | ||||
| -rw-r--r-- | include/linux/firewire.h | 2 |
5 files changed, 9 insertions, 6 deletions
diff --git a/drivers/firewire/core-card.c b/drivers/firewire/core-card.c index 24ff35511e2b..3241dc4e1fc9 100644 --- a/drivers/firewire/core-card.c +++ b/drivers/firewire/core-card.c | |||
| @@ -233,7 +233,7 @@ static void br_work(struct work_struct *work) | |||
| 233 | 233 | ||
| 234 | /* Delay for 2s after last reset per IEEE 1394 clause 8.2.1. */ | 234 | /* Delay for 2s after last reset per IEEE 1394 clause 8.2.1. */ |
| 235 | if (card->reset_jiffies != 0 && | 235 | if (card->reset_jiffies != 0 && |
| 236 | time_is_after_jiffies(card->reset_jiffies + 2 * HZ)) { | 236 | time_before64(get_jiffies_64(), card->reset_jiffies + 2 * HZ)) { |
| 237 | if (!schedule_delayed_work(&card->br_work, 2 * HZ)) | 237 | if (!schedule_delayed_work(&card->br_work, 2 * HZ)) |
| 238 | fw_card_put(card); | 238 | fw_card_put(card); |
| 239 | return; | 239 | return; |
| @@ -316,7 +316,8 @@ static void bm_work(struct work_struct *work) | |||
| 316 | irm_id = card->irm_node->node_id; | 316 | irm_id = card->irm_node->node_id; |
| 317 | local_id = card->local_node->node_id; | 317 | local_id = card->local_node->node_id; |
| 318 | 318 | ||
| 319 | grace = time_after(jiffies, card->reset_jiffies + DIV_ROUND_UP(HZ, 8)); | 319 | grace = time_after64(get_jiffies_64(), |
| 320 | card->reset_jiffies + DIV_ROUND_UP(HZ, 8)); | ||
| 320 | 321 | ||
| 321 | if ((is_next_generation(generation, card->bm_generation) && | 322 | if ((is_next_generation(generation, card->bm_generation) && |
| 322 | !card->bm_abdicate) || | 323 | !card->bm_abdicate) || |
diff --git a/drivers/firewire/core-cdev.c b/drivers/firewire/core-cdev.c index e0c13fb3ae22..62ac111af243 100644 --- a/drivers/firewire/core-cdev.c +++ b/drivers/firewire/core-cdev.c | |||
| @@ -1205,7 +1205,8 @@ static void iso_resource_work(struct work_struct *work) | |||
| 1205 | todo = r->todo; | 1205 | todo = r->todo; |
| 1206 | /* Allow 1000ms grace period for other reallocations. */ | 1206 | /* Allow 1000ms grace period for other reallocations. */ |
| 1207 | if (todo == ISO_RES_ALLOC && | 1207 | if (todo == ISO_RES_ALLOC && |
| 1208 | time_is_after_jiffies(client->device->card->reset_jiffies + HZ)) { | 1208 | time_before64(get_jiffies_64(), |
| 1209 | client->device->card->reset_jiffies + HZ)) { | ||
| 1209 | schedule_iso_resource(r, DIV_ROUND_UP(HZ, 3)); | 1210 | schedule_iso_resource(r, DIV_ROUND_UP(HZ, 3)); |
| 1210 | skip = true; | 1211 | skip = true; |
| 1211 | } else { | 1212 | } else { |
diff --git a/drivers/firewire/core-device.c b/drivers/firewire/core-device.c index 6113b896e790..57461923bacf 100644 --- a/drivers/firewire/core-device.c +++ b/drivers/firewire/core-device.c | |||
| @@ -747,7 +747,8 @@ static void fw_device_shutdown(struct work_struct *work) | |||
| 747 | container_of(work, struct fw_device, work.work); | 747 | container_of(work, struct fw_device, work.work); |
| 748 | int minor = MINOR(device->device.devt); | 748 | int minor = MINOR(device->device.devt); |
| 749 | 749 | ||
| 750 | if (time_is_after_jiffies(device->card->reset_jiffies + SHUTDOWN_DELAY) | 750 | if (time_before64(get_jiffies_64(), |
| 751 | device->card->reset_jiffies + SHUTDOWN_DELAY) | ||
| 751 | && !list_empty(&device->card->link)) { | 752 | && !list_empty(&device->card->link)) { |
| 752 | schedule_delayed_work(&device->work, SHUTDOWN_DELAY); | 753 | schedule_delayed_work(&device->work, SHUTDOWN_DELAY); |
| 753 | return; | 754 | return; |
diff --git a/drivers/firewire/core-topology.c b/drivers/firewire/core-topology.c index 09be1a635505..193ed9233144 100644 --- a/drivers/firewire/core-topology.c +++ b/drivers/firewire/core-topology.c | |||
| @@ -545,7 +545,7 @@ void fw_core_handle_bus_reset(struct fw_card *card, int node_id, int generation, | |||
| 545 | */ | 545 | */ |
| 546 | smp_wmb(); | 546 | smp_wmb(); |
| 547 | card->generation = generation; | 547 | card->generation = generation; |
| 548 | card->reset_jiffies = jiffies; | 548 | card->reset_jiffies = get_jiffies_64(); |
| 549 | card->bm_node_id = 0xffff; | 549 | card->bm_node_id = 0xffff; |
| 550 | card->bm_abdicate = bm_abdicate; | 550 | card->bm_abdicate = bm_abdicate; |
| 551 | fw_schedule_bm_work(card, 0); | 551 | fw_schedule_bm_work(card, 0); |
diff --git a/include/linux/firewire.h b/include/linux/firewire.h index 9a3f5f9383f6..b6d21d5a11a2 100644 --- a/include/linux/firewire.h +++ b/include/linux/firewire.h | |||
| @@ -89,7 +89,7 @@ struct fw_card { | |||
| 89 | int current_tlabel; | 89 | int current_tlabel; |
| 90 | u64 tlabel_mask; | 90 | u64 tlabel_mask; |
| 91 | struct list_head transaction_list; | 91 | struct list_head transaction_list; |
| 92 | unsigned long reset_jiffies; | 92 | u64 reset_jiffies; |
| 93 | 93 | ||
| 94 | u32 split_timeout_hi; | 94 | u32 split_timeout_hi; |
| 95 | u32 split_timeout_lo; | 95 | u32 split_timeout_lo; |
