From 08677e75104bd3fb34f7853d62c0d0d5f68c4b3e Mon Sep 17 00:00:00 2001 From: Clemens Ladisch Date: Wed, 11 Apr 2012 17:39:59 +0200 Subject: [PATCH] --- yaml --- r: 307583 b: refs/heads/master c: 8527f8e2934683e53405fbe876a4e6f4a0c46eb8 h: refs/heads/master i: 307581: b5fa01001e827e843d227e20f7bb81b4de4bcb06 307579: eb9f504d0b5dc0893fff5b2987efee39db205435 307575: 09e51c890eb7dedf3c6123aacc5ba544dad38921 307567: 7de455206a7e326db05bf9321c005965ec452ca4 307551: 40d3b4d4c3659ad43d4c1817b4ec373f1e07c539 307519: 1a881a7da1c92df2d8c5e7406f7db56f7c1ad533 307455: a04b7ef5d79a7caee997218753b197a217654c50 v: v3 --- [refs] | 2 +- trunk/drivers/firewire/core-device.c | 33 ++++++++++------------------ 2 files changed, 13 insertions(+), 22 deletions(-) diff --git a/[refs] b/[refs] index cf0b6b93f760..abba5effcbe4 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 94fba9fbeac44462c498e848496ba088198d78d1 +refs/heads/master: 8527f8e2934683e53405fbe876a4e6f4a0c46eb8 diff --git a/trunk/drivers/firewire/core-device.c b/trunk/drivers/firewire/core-device.c index a3f486fbd7b7..4d460ef87161 100644 --- a/trunk/drivers/firewire/core-device.c +++ b/trunk/drivers/firewire/core-device.c @@ -1115,16 +1115,8 @@ static void fw_device_refresh(struct work_struct *work) bool changed; ret = reread_config_rom(device, device->generation, &changed); - if (ret != RCODE_COMPLETE) { - if (device->config_rom_retries < MAX_RETRIES / 2 && - atomic_read(&device->state) == FW_DEVICE_INITIALIZING) { - device->config_rom_retries++; - fw_schedule_device_work(device, RETRY_DELAY / 2); - - return; - } - goto give_up; - } + if (ret != RCODE_COMPLETE) + goto failed_config_rom; if (!changed) { if (atomic_cmpxchg(&device->state, @@ -1144,16 +1136,8 @@ static void fw_device_refresh(struct work_struct *work) device_for_each_child(&device->device, NULL, shutdown_unit); ret = read_config_rom(device, device->generation); - if (ret != RCODE_COMPLETE) { - if (device->config_rom_retries < MAX_RETRIES && - atomic_read(&device->state) == FW_DEVICE_INITIALIZING) { - device->config_rom_retries++; - fw_schedule_device_work(device, RETRY_DELAY); - - return; - } - goto give_up; - } + if (ret != RCODE_COMPLETE) + goto failed_config_rom; fw_device_cdev_update(device); create_units(device); @@ -1170,7 +1154,14 @@ static void fw_device_refresh(struct work_struct *work) device->config_rom_retries = 0; goto out; - give_up: + failed_config_rom: + if (device->config_rom_retries < MAX_RETRIES && + atomic_read(&device->state) == FW_DEVICE_INITIALIZING) { + device->config_rom_retries++; + fw_schedule_device_work(device, RETRY_DELAY); + return; + } + fw_notice(card, "giving up on refresh of device %s: %s\n", dev_name(&device->device), fw_rcode_string(ret)); gone: