diff --git a/drivers/net/wireless/b43/leds.c b/drivers/net/wireless/b43/leds.c
index 85d965d..0f155b4 100644
--- a/drivers/net/wireless/b43/leds.c
+++ b/drivers/net/wireless/b43/leds.c
@@ -176,6 +176,7 @@
 	unsigned long interval = 0;
 	u16 ledctl;
 	unsigned long flags;
+	bool radio_enabled = (phy->radio_on && dev->radio_hw_enable);
 
 	spin_lock_irqsave(&dev->wl->leds_lock, flags);
 	ledctl = b43_read16(dev, B43_MMIO_GPIO_CONTROL);
@@ -195,21 +196,19 @@
 			turn_on = activity;
 			break;
 		case B43_LED_RADIO_ALL:
-			turn_on = phy->radio_on && b43_is_hw_radio_enabled(dev);
+			turn_on = radio_enabled;
 			break;
 		case B43_LED_RADIO_A:
-			turn_on = (phy->radio_on && b43_is_hw_radio_enabled(dev)
-				   && phy->type == B43_PHYTYPE_A);
+			turn_on = (radio_enabled && phy->type == B43_PHYTYPE_A);
 			break;
 		case B43_LED_RADIO_B:
-			turn_on = (phy->radio_on && b43_is_hw_radio_enabled(dev)
-				   && (phy->type == B43_PHYTYPE_B
-				       || phy->type == B43_PHYTYPE_G));
+			turn_on = (radio_enabled &&
+				   (phy->type == B43_PHYTYPE_B
+				    || phy->type == B43_PHYTYPE_G));
 			break;
 		case B43_LED_MODE_BG:
 			if (phy->type == B43_PHYTYPE_G
-			    && b43_is_hw_radio_enabled(dev)
-			    && 1 /*FIXME: using G rates. */ )
+			    && radio_enabled)
 				turn_on = 1;
 			break;
 		case B43_LED_TRANSFER:
diff --git a/drivers/net/wireless/b43/main.c b/drivers/net/wireless/b43/main.c
index 66c89df..1390f41 100644
--- a/drivers/net/wireless/b43/main.c
+++ b/drivers/net/wireless/b43/main.c
@@ -2175,6 +2175,21 @@
 	b43_shm_write16(dev, B43_SHM_SHARED, B43_SHM_SH_PRPHYCTL, tmp);
 }
 
+/* Returns TRUE, if the radio is enabled in hardware. */
+static bool b43_is_hw_radio_enabled(struct b43_wldev *dev)
+{
+	if (dev->phy.rev >= 3) {
+		if (!(b43_read32(dev, B43_MMIO_RADIO_HWENABLED_HI)
+		      & B43_MMIO_RADIO_HWENABLED_HI_MASK))
+			return 1;
+	} else {
+		if (b43_read16(dev, B43_MMIO_RADIO_HWENABLED_LO)
+		    & B43_MMIO_RADIO_HWENABLED_LO_MASK)
+			return 1;
+	}
+	return 0;
+}
+
 /* This is the opposite of b43_chip_init() */
 static void b43_chip_exit(struct b43_wldev *dev)
 {
@@ -2214,7 +2229,7 @@
 	b43_radio_turn_on(dev);
 	dev->radio_hw_enable = b43_is_hw_radio_enabled(dev);
 	b43dbg(dev->wl, "Radio %s by hardware\n",
-	       (dev->radio_hw_enable == 0) ? "disabled" : "enabled");
+	       dev->radio_hw_enable ? "enabled" : "disabled");
 
 	b43_write16(dev, 0x03E6, 0x0000);
 	err = b43_phy_init(dev);
@@ -2373,14 +2388,14 @@
 
 static void b43_periodic_every1sec(struct b43_wldev *dev)
 {
-	int radio_hw_enable;
+	bool radio_hw_enable;
 
 	/* check if radio hardware enabled status changed */
 	radio_hw_enable = b43_is_hw_radio_enabled(dev);
 	if (unlikely(dev->radio_hw_enable != radio_hw_enable)) {
 		dev->radio_hw_enable = radio_hw_enable;
-		b43dbg(dev->wl, "Radio hardware status changed to %s\n",
-		       (radio_hw_enable == 0) ? "disabled" : "enabled");
+		b43info(dev->wl, "Radio hardware status changed to %s\n",
+			radio_hw_enable ? "ENABLED" : "DISABLED");
 		b43_leds_update(dev, 0);
 	}
 }
diff --git a/drivers/net/wireless/b43/main.h b/drivers/net/wireless/b43/main.h
index bd8fcf7..284d17d 100644
--- a/drivers/net/wireless/b43/main.h
+++ b/drivers/net/wireless/b43/main.h
@@ -96,23 +96,6 @@
 	return !b43_is_cck_rate(rate);
 }
 
-static inline int b43_is_hw_radio_enabled(struct b43_wldev *dev)
-{
-	/* function to return state of hardware enable of radio
-	 * returns 0 if radio disabled, 1 if radio enabled
-	 */
-	struct b43_phy *phy = &dev->phy;
-
-	if (phy->rev >= 3)
-		return ((b43_read32(dev, B43_MMIO_RADIO_HWENABLED_HI)
-			 & B43_MMIO_RADIO_HWENABLED_HI_MASK)
-			== 0) ? 1 : 0;
-	else
-		return ((b43_read16(dev, B43_MMIO_RADIO_HWENABLED_LO)
-			 & B43_MMIO_RADIO_HWENABLED_LO_MASK)
-			== 0) ? 0 : 1;
-}
-
 void b43_tsf_read(struct b43_wldev *dev, u64 * tsf);
 void b43_tsf_write(struct b43_wldev *dev, u64 tsf);
 
