diff options
Diffstat (limited to 'drivers/net/wireless/rt2x00/rt2500usb.c')
| -rw-r--r-- | drivers/net/wireless/rt2x00/rt2500usb.c | 36 | 
1 files changed, 21 insertions, 15 deletions
diff --git a/drivers/net/wireless/rt2x00/rt2500usb.c b/drivers/net/wireless/rt2x00/rt2500usb.c index 9851cefaabf..0462d6d35b8 100644 --- a/drivers/net/wireless/rt2x00/rt2500usb.c +++ b/drivers/net/wireless/rt2x00/rt2500usb.c @@ -138,11 +138,8 @@ static void rt2500usb_bbp_write(struct rt2x00_dev *rt2x00dev,  	 * Wait until the BBP becomes ready.  	 */  	reg = rt2500usb_bbp_check(rt2x00dev); -	if (rt2x00_get_field16(reg, PHY_CSR8_BUSY)) { -		ERROR(rt2x00dev, "PHY_CSR8 register busy. Write failed.\n"); -		mutex_unlock(&rt2x00dev->usb_cache_mutex); -		return; -	} +	if (rt2x00_get_field16(reg, PHY_CSR8_BUSY)) +		goto exit_fail;  	/*  	 * Write the data into the BBP. @@ -155,6 +152,13 @@ static void rt2500usb_bbp_write(struct rt2x00_dev *rt2x00dev,  	rt2500usb_register_write_lock(rt2x00dev, PHY_CSR7, reg);  	mutex_unlock(&rt2x00dev->usb_cache_mutex); + +	return; + +exit_fail: +	mutex_unlock(&rt2x00dev->usb_cache_mutex); + +	ERROR(rt2x00dev, "PHY_CSR8 register busy. Write failed.\n");  }  static void rt2500usb_bbp_read(struct rt2x00_dev *rt2x00dev, @@ -168,10 +172,8 @@ static void rt2500usb_bbp_read(struct rt2x00_dev *rt2x00dev,  	 * Wait until the BBP becomes ready.  	 */  	reg = rt2500usb_bbp_check(rt2x00dev); -	if (rt2x00_get_field16(reg, PHY_CSR8_BUSY)) { -		ERROR(rt2x00dev, "PHY_CSR8 register busy. Read failed.\n"); -		return; -	} +	if (rt2x00_get_field16(reg, PHY_CSR8_BUSY)) +		goto exit_fail;  	/*  	 * Write the request into the BBP. @@ -186,17 +188,21 @@ static void rt2500usb_bbp_read(struct rt2x00_dev *rt2x00dev,  	 * Wait until the BBP becomes ready.  	 */  	reg = rt2500usb_bbp_check(rt2x00dev); -	if (rt2x00_get_field16(reg, PHY_CSR8_BUSY)) { -		ERROR(rt2x00dev, "PHY_CSR8 register busy. Read failed.\n"); -		*value = 0xff; -		mutex_unlock(&rt2x00dev->usb_cache_mutex); -		return; -	} +	if (rt2x00_get_field16(reg, PHY_CSR8_BUSY)) +		goto exit_fail;  	rt2500usb_register_read_lock(rt2x00dev, PHY_CSR7, ®);  	*value = rt2x00_get_field16(reg, PHY_CSR7_DATA);  	mutex_unlock(&rt2x00dev->usb_cache_mutex); + +	return; + +exit_fail: +	mutex_unlock(&rt2x00dev->usb_cache_mutex); + +	ERROR(rt2x00dev, "PHY_CSR8 register busy. Read failed.\n"); +	*value = 0xff;  }  static void rt2500usb_rf_write(struct rt2x00_dev *rt2x00dev,  |