Skip to contentSkip to conversation

b43: LP-PHY: Remove BROKEN from B43_PHY_LP

PATCH Superseded Gábor Stefanik 2 participants 2 messages Aug 16, 2009 Networking drivers (wireless)

v1 of 2 Superseded Latest is v2 →

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 b43: LP-PHY: Remove BROKEN from B43_PHY_LP

Larry has reported success getting scan data with an LP-PHY device, so it's probably time to release LP-PHY support for testing.

Also add a temporary BROKEN Kconfig symbol to disable 5GHz support, as 5GHz currently causes the driver to panic (NULL pointer deref).

---

drivers/net/wireless/b43/Kconfig  |   25 +++++++++++++++++++------
drivers/net/wireless/b43/main.c   |    2 ++
drivers/net/wireless/b43/phy_lp.c |    2 ++
3 files changed, 23 insertions(+), 6 deletions(-)
drivers/net/wireless/b43/Kconfig +0 -0
index 67f564e..13414c9 100644
@@ -80,16 +80,29 @@ config B43_NPHY

SAY N.

config B43_PHY_LP
- bool "IEEE 802.11g LP-PHY support (BROKEN)"
- depends on B43 && EXPERIMENTAL && BROKEN
+ bool "Support for low-power (LP-PHY) devices (VERY EXPERIMENTAL)"
+ depends on B43 && EXPERIMENTAL

	---help---
	  Support for the LP-PHY.
-	  The LP-PHY is an IEEE 802.11g based PHY built into some notebooks
-	  and embedded devices.
+	  The LP-PHY is a low-power PHY built into some notebooks
+	  and embedded devices. It supports 802.11a/g
+	  (802.11a support is optional, and currently disabled).
-	  THIS IS BROKEN AND DOES NOT WORK YET.
+	  Known LP-PHY devices include the BCM4310, BCM4312 (PCI ID 0x4315),
+	  BCM4325 (currently unsupported), BCM4326 & BCM4328 wireless cards
+	  and the BCM5354 SoC.
-	  SAY N.
+	  This is heavily experimental, and probably will not work for you.
+	  Say N unless you want to help debug the driver.

+
+config B43_PHY_LP_5GHZ
+ bool "Enable 802.11a support for LP-PHYs (BROKEN)"
+ depends on B43_PHY_LP && BROKEN
+ ---help---
+ Enable the 5GHz band of LP-PHY devices. Currently, all it
+ does is cause the driver to panic on startup.
+
+ Only select this if you are a developer working on this feature.

# This config option automatically enables b43 LEDS support,

# if it's possible.
drivers/net/wireless/b43/main.c +0 -0
index 99b41ce..0096d25 100644
@@ -4514,7 +4514,9 @@ static int b43_wireless_core_attach(struct b43_wldev *dev)
			have_5ghz_phy = 1;
			break;
		case B43_PHYTYPE_LP: //FIXME not always!
+#ifdef CONFIG_B43_PHY_LP_5GHZ
			have_5ghz_phy = 1;
+#endif
		case B43_PHYTYPE_G:
		case B43_PHYTYPE_N:
			have_2ghz_phy = 1;
drivers/net/wireless/b43/phy_lp.c +0 -0
index 3889519..c902dd1 100644
@@ -43,7 +43,9 @@ static inline u16 channel2freq_lp(u8 channel)
 

static unsigned int b43_lpphy_op_get_default_chan(struct b43_wldev *dev) {
+#ifdef CONFIG_B43_PHY_LP_5GHZ

	if (b43_current_band(dev->wl) == IEEE80211_BAND_2GHZ)
+#endif
		return 1;
	return 36;
}
Signature · 1 line
1.6.2.4
#1 lore raw
Quoted 18 lines · On Sunday 16 August 2009 18:42:51 Gábor Stefanik wrote:

Larry has reported success getting scan data with an LP-PHY device, so it's probably time to release LP-PHY support for testing.

Also add a temporary BROKEN Kconfig symbol to disable 5GHz support, as 5GHz currently causes the driver to panic (NULL pointer deref).

---
 drivers/net/wireless/b43/Kconfig  |   25 +++++++++++++++++++------
 drivers/net/wireless/b43/main.c   |    2 ++
 drivers/net/wireless/b43/phy_lp.c |    2 ++
 3 files changed, 23 insertions(+), 6 deletions(-)
drivers/net/wireless/b43/Kconfig +0 -0
index 67f564e..13414c9 100644

drivers/net/wireless/b43/Kconfig config B43_NPHY · line 83

Quoted 6 lines
drivers/net/wireless/b43/Kconfig +1 -2
@@ -80,16 +80,29 @@ config B43_NPHY
 	  SAY N.
 
 config B43_PHY_LP
-	bool "IEEE 802.11g LP-PHY support (BROKEN)"
-	depends on B43 && EXPERIMENTAL && BROKEN
+	bool "Support for low-power (LP-PHY) devices (VERY EXPERIMENTAL)"

Very is a vague term. Just remove it.

drivers/net/wireless/b43/Kconfig config B43_NPHY · line 93

Quoted 13 lines
drivers/net/wireless/b43/Kconfig +7 -3
+	depends on B43 && EXPERIMENTAL
 	---help---
 	  Support for the LP-PHY.
-	  The LP-PHY is an IEEE 802.11g based PHY built into some notebooks
-	  and embedded devices.
+	  The LP-PHY is a low-power PHY built into some notebooks
+	  and embedded devices. It supports 802.11a/g
+	  (802.11a support is optional, and currently disabled).
 
-	  THIS IS BROKEN AND DOES NOT WORK YET.
+	  Known LP-PHY devices include the BCM4310, BCM4312 (PCI ID 0x4315),
+	  BCM4325 (currently unsupported), BCM4326 & BCM4328 wireless cards
+	  and the BCM5354 SoC.

It's pointless to list them here, as the list will always be obsolete and never be correct.

drivers/net/wireless/b43/Kconfig config B43_NPHY · line 104

Quoted 13 lines
drivers/net/wireless/b43/Kconfig +11 -1
-	  SAY N.
+	  This is heavily experimental, and probably will not work for you.
+	  Say N unless you want to help debug the driver.
+
+config B43_PHY_LP_5GHZ
+	bool "Enable 802.11a support for LP-PHYs (BROKEN)"
+	depends on B43_PHY_LP && BROKEN
+	---help---
+	  Enable the 5GHz band of LP-PHY devices. Currently, all it
+	  does is cause the driver to panic on startup.
+
+	  Only select this if you are a developer working on this feature.

I don't think we should introduce another config option. Just hardcode disable the 802.11a for LP-PHYs. There's no point in enabling an option that crashes the kernel. And if you fix the crash, there's no point in leaving it disabled.

Quoted 21 lines
drivers/net/wireless/b43/Kconfig +0 -0
 # This config option automatically enables b43 LEDS support,
 # if it's possible.
drivers/net/wireless/b43/main.c +2 -0
index 99b41ce..0096d25 100644
@@ -4514,7 +4514,9 @@ static int b43_wireless_core_attach(struct b43_wldev *dev)
 			have_5ghz_phy = 1;
 			break;
 		case B43_PHYTYPE_LP: //FIXME not always!
+#ifdef CONFIG_B43_PHY_LP_5GHZ
 			have_5ghz_phy = 1;
+#endif
 		case B43_PHYTYPE_G:
 		case B43_PHYTYPE_N:
 			have_2ghz_phy = 1;
drivers/net/wireless/b43/phy_lp.c +0 -0
index 3889519..c902dd1 100644

drivers/net/wireless/b43/phy_lp.c static inline u16 channel2freq_lp(u8 channel) · line 51

Quoted 9 lines
drivers/net/wireless/b43/phy_lp.c +2 -0
@@ -43,7 +43,9 @@ static inline u16 channel2freq_lp(u8 channel)
 
 static unsigned int b43_lpphy_op_get_default_chan(struct b43_wldev *dev)
 {
+#ifdef CONFIG_B43_PHY_LP_5GHZ
 	if (b43_current_band(dev->wl) == IEEE80211_BAND_2GHZ)
+#endif
 		return 1;
 	return 36;
 }

This is a completely pointless ifdef.

Signature · 1 line
Greetings, Michael.