Selaa lähdekoodia

b43legacy: Do not select HW_RANDOM

Auto-depend on HW_RANDOM, rather than "select"ing it.
This way the user has the choice to enable or disable HWRNG support.

Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Larry Finger 16 vuotta sitten
vanhempi
commit
910cfee363

+ 7 - 1
drivers/net/wireless/b43legacy/Kconfig

@@ -3,7 +3,6 @@ config B43LEGACY
 	depends on SSB_POSSIBLE && MAC80211 && WLAN_80211 && HAS_DMA
 	depends on SSB_POSSIBLE && MAC80211 && WLAN_80211 && HAS_DMA
 	select SSB
 	select SSB
 	select FW_LOADER
 	select FW_LOADER
-	select HW_RANDOM
 	---help---
 	---help---
 	  b43legacy is a driver for 802.11b devices from Broadcom (BCM4301 and
 	  b43legacy is a driver for 802.11b devices from Broadcom (BCM4301 and
 	  BCM4303) and early model 802.11g chips (BCM4306 Ver. 2) used in the
 	  BCM4303) and early model 802.11g chips (BCM4306 Ver. 2) used in the
@@ -51,6 +50,13 @@ config B43LEGACY_RFKILL
 	depends on B43LEGACY && (RFKILL = y || RFKILL = B43LEGACY) && RFKILL_INPUT && (INPUT_POLLDEV = y || INPUT_POLLDEV = B43LEGACY)
 	depends on B43LEGACY && (RFKILL = y || RFKILL = B43LEGACY) && RFKILL_INPUT && (INPUT_POLLDEV = y || INPUT_POLLDEV = B43LEGACY)
 	default y
 	default y
 
 
+# This config option automatically enables b43 HW-RNG support,
+# if the HW-RNG core is enabled.
+config B43LEGACY_HWRNG
+	bool
+	depends on B43LEGACY && (HW_RANDOM = y || HW_RANDOM = B43LEGACY)
+	default y
+
 config B43LEGACY_DEBUG
 config B43LEGACY_DEBUG
 	bool "Broadcom 43xx-legacy debugging"
 	bool "Broadcom 43xx-legacy debugging"
 	depends on B43LEGACY
 	depends on B43LEGACY

+ 2 - 0
drivers/net/wireless/b43legacy/b43legacy.h

@@ -596,9 +596,11 @@ struct b43legacy_wl {
 	/* Stats about the wireless interface */
 	/* Stats about the wireless interface */
 	struct ieee80211_low_level_stats ieee_stats;
 	struct ieee80211_low_level_stats ieee_stats;
 
 
+#ifdef CONFIG_B43LEGACY_HWRNG
 	struct hwrng rng;
 	struct hwrng rng;
 	u8 rng_initialized;
 	u8 rng_initialized;
 	char rng_name[30 + 1];
 	char rng_name[30 + 1];
+#endif
 
 
 	/* The RF-kill button */
 	/* The RF-kill button */
 	struct b43legacy_rfkill rfkill;
 	struct b43legacy_rfkill rfkill;

+ 7 - 1
drivers/net/wireless/b43legacy/main.c

@@ -2297,6 +2297,7 @@ static void b43legacy_security_init(struct b43legacy_wldev *dev)
 				  dev->max_nr_keys - 8);
 				  dev->max_nr_keys - 8);
 }
 }
 
 
+#ifdef CONFIG_B43LEGACY_HWRNG
 static int b43legacy_rng_read(struct hwrng *rng, u32 *data)
 static int b43legacy_rng_read(struct hwrng *rng, u32 *data)
 {
 {
 	struct b43legacy_wl *wl = (struct b43legacy_wl *)rng->priv;
 	struct b43legacy_wl *wl = (struct b43legacy_wl *)rng->priv;
@@ -2312,17 +2313,21 @@ static int b43legacy_rng_read(struct hwrng *rng, u32 *data)
 
 
 	return (sizeof(u16));
 	return (sizeof(u16));
 }
 }
+#endif
 
 
 static void b43legacy_rng_exit(struct b43legacy_wl *wl)
 static void b43legacy_rng_exit(struct b43legacy_wl *wl)
 {
 {
+#ifdef CONFIG_B43LEGACY_HWRNG
 	if (wl->rng_initialized)
 	if (wl->rng_initialized)
 		hwrng_unregister(&wl->rng);
 		hwrng_unregister(&wl->rng);
+#endif
 }
 }
 
 
 static int b43legacy_rng_init(struct b43legacy_wl *wl)
 static int b43legacy_rng_init(struct b43legacy_wl *wl)
 {
 {
-	int err;
+	int err = 0;
 
 
+#ifdef CONFIG_B43LEGACY_HWRNG
 	snprintf(wl->rng_name, ARRAY_SIZE(wl->rng_name),
 	snprintf(wl->rng_name, ARRAY_SIZE(wl->rng_name),
 		 "%s_%s", KBUILD_MODNAME, wiphy_name(wl->hw->wiphy));
 		 "%s_%s", KBUILD_MODNAME, wiphy_name(wl->hw->wiphy));
 	wl->rng.name = wl->rng_name;
 	wl->rng.name = wl->rng_name;
@@ -2336,6 +2341,7 @@ static int b43legacy_rng_init(struct b43legacy_wl *wl)
 		       "number generator (%d)\n", err);
 		       "number generator (%d)\n", err);
 	}
 	}
 
 
+#endif
 	return err;
 	return err;
 }
 }