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) {