diff options
Diffstat (limited to 'drivers/firewire')
-rw-r--r-- | drivers/firewire/core-card.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/drivers/firewire/core-card.c b/drivers/firewire/core-card.c index 9dcb30466ec0..901435cdd5c2 100644 --- a/drivers/firewire/core-card.c +++ b/drivers/firewire/core-card.c | |||
@@ -306,6 +306,16 @@ static void fw_card_bm_work(struct work_struct *work) | |||
306 | goto out; | 306 | goto out; |
307 | } | 307 | } |
308 | 308 | ||
309 | if (rcode == RCODE_SEND_ERROR) { | ||
310 | /* | ||
311 | * We have been unable to send the lock request due to | ||
312 | * some local problem. Let's try again later and hope | ||
313 | * that the problem has gone away by then. | ||
314 | */ | ||
315 | fw_schedule_bm_work(card, DIV_ROUND_UP(HZ, 8)); | ||
316 | goto out; | ||
317 | } | ||
318 | |||
309 | spin_lock_irqsave(&card->lock, flags); | 319 | spin_lock_irqsave(&card->lock, flags); |
310 | 320 | ||
311 | if (rcode != RCODE_COMPLETE) { | 321 | if (rcode != RCODE_COMPLETE) { |