@@ -, +, @@ 
---
 drivers/net/wireless/realtek/rtlwifi/core.c | 44 +++++++++++++++++++++--------
 1 file changed, 32 insertions(+), 12 deletions(-)
--- a/drivers/net/wireless/realtek/rtlwifi/core.c	
+++ a/drivers/net/wireless/realtek/rtlwifi/core.c	
@@ -54,39 +54,59 @@ EXPORT_SYMBOL(channel5g_80m);
 void rtl_addr_delay(u32 addr)
 {
 	if (addr == 0xfe)
-		msleep(50);
+		mdelay(50);
 	else if (addr == 0xfd)
-		msleep(5);
+		mdelay(5);
 	else if (addr == 0xfc)
-		msleep(1);
+		mdelay(1);
 	else if (addr == 0xfb)
-		usleep_range(50, 100);
+		udelay(50);
 	else if (addr == 0xfa)
-		usleep_range(5, 10);
+		udelay(5);
 	else if (addr == 0xf9)
-		usleep_range(1, 2);
+		udelay(1);
 }
 EXPORT_SYMBOL(rtl_addr_delay);
 
 void rtl_rfreg_delay(struct ieee80211_hw *hw, enum radio_path rfpath, u32 addr,
 		     u32 mask, u32 data)
 {
-	if (addr >= 0xf9 && addr <= 0xfe) {
-		rtl_addr_delay(addr);
+	if (addr == 0xfe) {
+		mdelay(50);
+	} else if (addr == 0xfd) {
+		mdelay(5);
+	} else if (addr == 0xfc) {
+		mdelay(1);
+	} else if (addr == 0xfb) {
+		udelay(50);
+	} else if (addr == 0xfa) {
+		udelay(5);
+	} else if (addr == 0xf9) {
+		udelay(1);
 	} else {
 		rtl_set_rfreg(hw, rfpath, addr, mask, data);
-		usleep_range(1, 2);
+		udelay(1);
 	}
 }
 EXPORT_SYMBOL(rtl_rfreg_delay);
 
 void rtl_bb_delay(struct ieee80211_hw *hw, u32 addr, u32 data)
 {
-	if (addr >= 0xf9 && addr <= 0xfe) {
-		rtl_addr_delay(addr);
+	if (addr == 0xfe) {
+		mdelay(50);
+	} else if (addr == 0xfd) {
+		mdelay(5);
+	} else if (addr == 0xfc) {
+		mdelay(1);
+	} else if (addr == 0xfb) {
+		udelay(50);
+	} else if (addr == 0xfa) {
+		udelay(5);
+	} else if (addr == 0xf9) {
+		udelay(1);
 	} else {
 		rtl_set_bbreg(hw, addr, MASKDWORD, data);
-		usleep_range(1, 2);
+		udelay(1);
 	}
 }
 EXPORT_SYMBOL(rtl_bb_delay);
-- 
