From a27fc4f4d002e84626e38576a2b1d568614ccb5d Mon Sep 17 00:00:00 2001 From: Clemens Ladisch Date: Thu, 10 Jun 2010 08:23:28 +0200 Subject: [PATCH] --- yaml --- r: 206803 b: refs/heads/master c: bda3b8a1faf209a98063ccd77d6833a2bb0fc77e h: refs/heads/master i: 206801: ba274afa30b44624ed007149ba460ed9830264ac 206799: ab6751debdd2c6a5b8981e9cc40b3e5f7223f959 v: v3 --- [refs] | 2 +- trunk/drivers/firewire/core-card.c | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index ee253941899a..0d8f71422a57 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 153e3979201b76dbd5788f032fb683e95121e159 +refs/heads/master: bda3b8a1faf209a98063ccd77d6833a2bb0fc77e diff --git a/trunk/drivers/firewire/core-card.c b/trunk/drivers/firewire/core-card.c index 9dcb30466ec0..901435cdd5c2 100644 --- a/trunk/drivers/firewire/core-card.c +++ b/trunk/drivers/firewire/core-card.c @@ -306,6 +306,16 @@ static void fw_card_bm_work(struct work_struct *work) goto out; } + if (rcode == RCODE_SEND_ERROR) { + /* + * We have been unable to send the lock request due to + * some local problem. Let's try again later and hope + * that the problem has gone away by then. + */ + fw_schedule_bm_work(card, DIV_ROUND_UP(HZ, 8)); + goto out; + } + spin_lock_irqsave(&card->lock, flags); if (rcode != RCODE_COMPLETE) {