From 052025af8807d7c3d03d735be5cfe00966f25cc2 Mon Sep 17 00:00:00 2001 From: Jussi Kivilinna Date: Mon, 31 Jan 2011 20:50:02 +0200 Subject: [PATCH] --- yaml --- r: 237041 b: refs/heads/master c: 3985a46543d47a50b94e839e0a16e67d959ab092 h: refs/heads/master i: 237039: 7a8f39ebce2d8d511bb8f28477864c64ac27dd7f v: v3 --- [refs] | 2 +- trunk/drivers/net/wireless/zd1211rw/zd_mac.c | 13 ++++++++++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index d8fcfafbde9d..4ce3611a1432 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: a0fd751f0924e0eefa36592f1d358c4ab18b44c5 +refs/heads/master: 3985a46543d47a50b94e839e0a16e67d959ab092 diff --git a/trunk/drivers/net/wireless/zd1211rw/zd_mac.c b/trunk/drivers/net/wireless/zd1211rw/zd_mac.c index a590a94cb6fa..beaa969f7426 100644 --- a/trunk/drivers/net/wireless/zd1211rw/zd_mac.c +++ b/trunk/drivers/net/wireless/zd1211rw/zd_mac.c @@ -703,7 +703,7 @@ static int zd_mac_config_beacon(struct ieee80211_hw *hw, struct sk_buff *beacon) dev_err(zd_mac_dev(mac), "Giving up beacon config.\n"); r = -ETIMEDOUT; - goto release_sema; + goto reset_device; } } msleep(20); @@ -770,6 +770,17 @@ static int zd_mac_config_beacon(struct ieee80211_hw *hw, struct sk_buff *beacon) mutex_unlock(&mac->chip.mutex); kfree(ioreqs); return r; + +reset_device: + mutex_unlock(&mac->chip.mutex); + kfree(ioreqs); + + /* semaphore stuck, reset device to avoid fw freeze later */ + dev_warn(zd_mac_dev(mac), "CR_BCN_FIFO_SEMAPHORE stuck, " + "reseting device..."); + usb_queue_reset_device(mac->chip.usb.intf); + + return r; } static int fill_ctrlset(struct zd_mac *mac,