diff options
Diffstat (limited to 'drivers/net/wireless/rt2x00/rt73usb.c')
| -rw-r--r-- | drivers/net/wireless/rt2x00/rt73usb.c | 36 | 
1 files changed, 21 insertions, 15 deletions
diff --git a/drivers/net/wireless/rt2x00/rt73usb.c b/drivers/net/wireless/rt2x00/rt73usb.c index fceefd730ab..675ff7900ee 100644 --- a/drivers/net/wireless/rt2x00/rt73usb.c +++ b/drivers/net/wireless/rt2x00/rt73usb.c @@ -134,11 +134,8 @@ static void rt73usb_bbp_write(struct rt2x00_dev *rt2x00dev,  	 * Wait until the BBP becomes ready.  	 */  	reg = rt73usb_bbp_check(rt2x00dev); -	if (rt2x00_get_field32(reg, PHY_CSR3_BUSY)) { -		ERROR(rt2x00dev, "PHY_CSR3 register busy. Write failed.\n"); -		mutex_unlock(&rt2x00dev->usb_cache_mutex); -		return; -	} +	if (rt2x00_get_field32(reg, PHY_CSR3_BUSY)) +		goto exit_fail;  	/*  	 * Write the data into the BBP. @@ -151,6 +148,13 @@ static void rt73usb_bbp_write(struct rt2x00_dev *rt2x00dev,  	rt73usb_register_write_lock(rt2x00dev, PHY_CSR3, reg);  	mutex_unlock(&rt2x00dev->usb_cache_mutex); + +	return; + +exit_fail: +	mutex_unlock(&rt2x00dev->usb_cache_mutex); + +	ERROR(rt2x00dev, "PHY_CSR3 register busy. Write failed.\n");  }  static void rt73usb_bbp_read(struct rt2x00_dev *rt2x00dev, @@ -164,11 +168,8 @@ static void rt73usb_bbp_read(struct rt2x00_dev *rt2x00dev,  	 * Wait until the BBP becomes ready.  	 */  	reg = rt73usb_bbp_check(rt2x00dev); -	if (rt2x00_get_field32(reg, PHY_CSR3_BUSY)) { -		ERROR(rt2x00dev, "PHY_CSR3 register busy. Read failed.\n"); -		mutex_unlock(&rt2x00dev->usb_cache_mutex); -		return; -	} +	if (rt2x00_get_field32(reg, PHY_CSR3_BUSY)) +		goto exit_fail;  	/*  	 * Write the request into the BBP. @@ -184,14 +185,19 @@ static void rt73usb_bbp_read(struct rt2x00_dev *rt2x00dev,  	 * Wait until the BBP becomes ready.  	 */  	reg = rt73usb_bbp_check(rt2x00dev); -	if (rt2x00_get_field32(reg, PHY_CSR3_BUSY)) { -		ERROR(rt2x00dev, "PHY_CSR3 register busy. Read failed.\n"); -		*value = 0xff; -		return; -	} +	if (rt2x00_get_field32(reg, PHY_CSR3_BUSY)) +		goto exit_fail;  	*value = rt2x00_get_field32(reg, PHY_CSR3_VALUE);  	mutex_unlock(&rt2x00dev->usb_cache_mutex); + +	return; + +exit_fail: +	mutex_unlock(&rt2x00dev->usb_cache_mutex); + +	ERROR(rt2x00dev, "PHY_CSR3 register busy. Read failed.\n"); +	*value = 0xff;  }  static void rt73usb_rf_write(struct rt2x00_dev *rt2x00dev,  |