Linux wireless drivers development
 help / color / mirror / Atom feed
* [PATCH v3 16/25] wireless: organize group drivers alphabetically
From: Luis R. Rodriguez @ 2009-08-14  4:59 UTC (permalink / raw)
  To: linville; +Cc: linux-wireless, Larry.Finger, Luis R. Rodriguez

Signed-off-by: Luis R. Rodriguez <lrodriguez@atheros.com>
---

This is a simple resend attempt #3

This fixes a typo I made when moving :

source "drivers/net/wireless/wl12xx/Kconfig"

up, I had chopped off the ending '"'.

 drivers/net/wireless/Kconfig |  286 +++++++++++++++++++++---------------------
 1 files changed, 144 insertions(+), 142 deletions(-)

diff --git a/drivers/net/wireless/Kconfig b/drivers/net/wireless/Kconfig
index 4ed50f6..a267887 100644
--- a/drivers/net/wireless/Kconfig
+++ b/drivers/net/wireless/Kconfig
@@ -110,77 +110,73 @@ menuconfig WLAN_80211
 	  This option does not affect the kernel build, it only
 	  lets you choose drivers.
 
-menuconfig MARVELL_80211
-	bool "Marvell"
-	depends on WLAN_80211
-	---help---
-	  This will enable the support for Marvell wireless drivers. This includes
-	  the drivers: libertas, libertas_tf, and mwl8k.
+source "drivers/net/wireless/ath/Kconfig"
 
-if MARVELL_80211
-config LIBERTAS
-	tristate "Marvell 8xxx Libertas WLAN driver support"
+config ATMEL_80211
+	bool "Atmel"
 	depends on WLAN_80211
-	select WIRELESS_EXT
-	select LIB80211
-	select FW_LOADER
 	---help---
-	  A library for Marvell Libertas 8xxx devices.
-
-config LIBERTAS_USB
-	tristate "Marvell Libertas 8388 USB 802.11b/g cards"
-	depends on LIBERTAS && USB
-	---help---
-	  A driver for Marvell Libertas 8388 USB devices.
+	  This will enable the support for Atmel wireless drivers.
 
-config LIBERTAS_CS
-	tristate "Marvell Libertas 8385 CompactFlash 802.11b/g cards"
-	depends on LIBERTAS && PCMCIA
-	select FW_LOADER
-	---help---
-	  A driver for Marvell Libertas 8385 CompactFlash devices.
+if ATMEL_80211
 
-config LIBERTAS_SDIO
-	tristate "Marvell Libertas 8385/8686/8688 SDIO 802.11b/g cards"
-	depends on LIBERTAS && MMC
-	---help---
-	  A driver for Marvell Libertas 8385/8686/8688 SDIO devices.
+config ATMEL
+      tristate "Atmel at76c50x chipset  802.11b support"
+      depends on (PCI || PCMCIA) && WLAN_80211
+      select WIRELESS_EXT
+      select FW_LOADER
+      select CRC32
+       ---help---
+        A driver 802.11b wireless cards based on the Atmel fast-vnet
+        chips. This driver supports standard Linux wireless extensions.
 
-config LIBERTAS_SPI
-	tristate "Marvell Libertas 8686 SPI 802.11b/g cards"
-	depends on LIBERTAS && SPI
-	---help---
-	  A driver for Marvell Libertas 8686 SPI devices.
+        Many  cards based on this chipset do not have flash memory
+        and need their firmware loaded at start-up. If yours is
+        one of these, you will need to provide a firmware image
+        to be loaded into the card by the driver. The Atmel
+        firmware package can be downloaded from
+        <http://www.thekelleys.org.uk/atmel>
 
-config LIBERTAS_DEBUG
-	bool "Enable full debugging output in the Libertas module."
-	depends on LIBERTAS
-	---help---
-	  Debugging support.
+config PCI_ATMEL
+      tristate "Atmel at76c506 PCI cards"
+      depends on ATMEL && PCI
+       ---help---
+        Enable support for PCI and mini-PCI cards containing the
+        Atmel at76c506 chip.
 
-config LIBERTAS_THINFIRM
-	tristate "Marvell 8xxx Libertas WLAN driver support with thin firmware"
-	depends on WLAN_80211 && MAC80211
+config PCMCIA_ATMEL
+	tristate "Atmel at76c502/at76c504 PCMCIA cards"
+	depends on ATMEL && PCMCIA
+	select WIRELESS_EXT
 	select FW_LOADER
+	select CRC32
 	---help---
-	  A library for Marvell Libertas 8xxx devices using thinfirm.
+	  Enable support for PCMCIA cards containing the
+	  Atmel at76c502 and at76c504 chips.
 
-config LIBERTAS_THINFIRM_USB
-	tristate "Marvell Libertas 8388 USB 802.11b/g cards with thin firmware"
-	depends on LIBERTAS_THINFIRM && USB
-	---help---
-	  A driver for Marvell Libertas 8388 USB devices using thinfirm.
+config AT76C50X_USB
+        tristate "Atmel at76c503/at76c505/at76c505a USB cards"
+        depends on MAC80211 && WLAN_80211 && USB
+        select FW_LOADER
+        ---help---
+          Enable support for USB Wireless devices using Atmel at76c503,
+          at76c505 or at76c505a chips.
 
-config MWL8K
-	tristate "Marvell 88W8xxx PCI/PCIe Wireless support"
-	depends on MAC80211 && PCI && WLAN_80211 && EXPERIMENTAL
+endif # ATMEL_80211
+
+config BROADCOM_80211
+	bool "Broadcom wireless driver support"
+	depends on WLAN_80211
 	---help---
-	  This driver supports Marvell TOPDOG 802.11 wireless cards.
+	  This will enable the support for Broadcom wireless drivers. This
+	  includes b43 driver and the b43legacy driver.
 
-	  To compile this driver as a module, choose M here: the module
-	  will be called mwl8k.  If unsure, say N.
+if BROADCOM_80211
 
-endif # MARVELL_80211
+source "drivers/net/wireless/b43/Kconfig"
+source "drivers/net/wireless/b43legacy/Kconfig"
+
+endif # BROADCOM_80211
 
 config CISCO_80211
 	bool "Cisco"
@@ -232,57 +228,20 @@ config AIRO_CS
 
 endif # CISCO_80211
 
-config ATMEL_80211
-	bool "Atmel"
+menuconfig INTEL_80211
+	bool "Intel"
 	depends on WLAN_80211
 	---help---
-	  This will enable the support for Atmel wireless drivers.
-
-if ATMEL_80211
-
-config ATMEL
-      tristate "Atmel at76c50x chipset  802.11b support"
-      depends on (PCI || PCMCIA) && WLAN_80211
-      select WIRELESS_EXT
-      select FW_LOADER
-      select CRC32
-       ---help---
-        A driver 802.11b wireless cards based on the Atmel fast-vnet
-        chips. This driver supports standard Linux wireless extensions.
-
-        Many  cards based on this chipset do not have flash memory
-        and need their firmware loaded at start-up. If yours is
-        one of these, you will need to provide a firmware image
-        to be loaded into the card by the driver. The Atmel
-        firmware package can be downloaded from
-        <http://www.thekelleys.org.uk/atmel>
-
-config PCI_ATMEL
-      tristate "Atmel at76c506 PCI cards"
-      depends on ATMEL && PCI
-       ---help---
-        Enable support for PCI and mini-PCI cards containing the
-        Atmel at76c506 chip.
+	  This will enable the support for Intel wireless drivers. This
+	  includes ipw2100, ipw2200, iwl3945, iwlagn, and iwmc3200wifi
 
-config PCMCIA_ATMEL
-	tristate "Atmel at76c502/at76c504 PCMCIA cards"
-	depends on ATMEL && PCMCIA
-	select WIRELESS_EXT
-	select FW_LOADER
-	select CRC32
-	---help---
-	  Enable support for PCMCIA cards containing the
-	  Atmel at76c502 and at76c504 chips.
+if INTEL_80211
 
-config AT76C50X_USB
-        tristate "Atmel at76c503/at76c505/at76c505a USB cards"
-        depends on MAC80211 && WLAN_80211 && USB
-        select FW_LOADER
-        ---help---
-          Enable support for USB Wireless devices using Atmel at76c503,
-          at76c505 or at76c505a chips.
+source "drivers/net/wireless/ipw2x00/Kconfig"
+source "drivers/net/wireless/iwlwifi/Kconfig"
+source "drivers/net/wireless/iwmc3200wifi/Kconfig"
 
-endif # ATMEL_80211
+endif # INTEL_80211
 
 config CONEXANT_ST_80211
 	bool "Intersil / Conexant / STEricsson"
@@ -347,50 +306,79 @@ config PRISM54
 
 endif # CONEXANT_ST_80211
 
-config ZYDAS_80211
-	bool "ZyDAS"
+menuconfig MARVELL_80211
+	bool "Marvell"
 	depends on WLAN_80211
 	---help---
-	  This will enable the support for ZyDAS wireless drivers. This includes
-	  the 802.11g zd1211rw usb driver and the older 802.11b zd1201 usb driver.
+	  This will enable the support for Marvell wireless drivers. This includes
+	  the drivers: libertas, libertas_tf, and mwl8k.
 
-if ZYDAS_80211
+if MARVELL_80211
+config LIBERTAS
+	tristate "Marvell 8xxx Libertas WLAN driver support"
+	depends on WLAN_80211
+	select WIRELESS_EXT
+	select LIB80211
+	select FW_LOADER
+	---help---
+	  A library for Marvell Libertas 8xxx devices.
 
-source "drivers/net/wireless/zd1211rw/Kconfig"
+config LIBERTAS_USB
+	tristate "Marvell Libertas 8388 USB 802.11b/g cards"
+	depends on LIBERTAS && USB
+	---help---
+	  A driver for Marvell Libertas 8388 USB devices.
 
-config USB_ZD1201
-	tristate "USB ZD1201 based Wireless device support"
-	depends on USB && WLAN_80211
-	select WIRELESS_EXT
+config LIBERTAS_CS
+	tristate "Marvell Libertas 8385 CompactFlash 802.11b/g cards"
+	depends on LIBERTAS && PCMCIA
 	select FW_LOADER
 	---help---
-	  Say Y if you want to use wireless LAN adapters based on the ZyDAS
-	  ZD1201 chip.
+	  A driver for Marvell Libertas 8385 CompactFlash devices.
 
-	  This driver makes the adapter appear as a normal Ethernet interface,
-	  typically on wlan0.
+config LIBERTAS_SDIO
+	tristate "Marvell Libertas 8385/8686/8688 SDIO 802.11b/g cards"
+	depends on LIBERTAS && MMC
+	---help---
+	  A driver for Marvell Libertas 8385/8686/8688 SDIO devices.
 
-	  The zd1201 device requires external firmware to be loaded.
-	  This can be found at http://linux-lc100020.sourceforge.net/
+config LIBERTAS_SPI
+	tristate "Marvell Libertas 8686 SPI 802.11b/g cards"
+	depends on LIBERTAS && SPI
+	---help---
+	  A driver for Marvell Libertas 8686 SPI devices.
 
-	  To compile this driver as a module, choose M here: the
-	  module will be called zd1201.
+config LIBERTAS_DEBUG
+	bool "Enable full debugging output in the Libertas module."
+	depends on LIBERTAS
+	---help---
+	  Debugging support.
 
-endif # ZYDAS_80211
+config LIBERTAS_THINFIRM
+	tristate "Marvell 8xxx Libertas WLAN driver support with thin firmware"
+	depends on WLAN_80211 && MAC80211
+	select FW_LOADER
+	---help---
+	  A library for Marvell Libertas 8xxx devices using thinfirm.
 
-config BROADCOM_80211
-	bool "Broadcom"
-	depends on WLAN_80211
+config LIBERTAS_THINFIRM_USB
+	tristate "Marvell Libertas 8388 USB 802.11b/g cards with thin firmware"
+	depends on LIBERTAS_THINFIRM && USB
 	---help---
-	  This will enable the support for Broadcom wireless drivers. This
-	  includes b43 driver, b43legacy driver and the rndis_wlan driver.
+	  A driver for Marvell Libertas 8388 USB devices using thinfirm.
 
-if BROADCOM_80211
+config MWL8K
+	tristate "Marvell 88W8xxx PCI/PCIe Wireless support"
+	depends on MAC80211 && PCI && WLAN_80211 && EXPERIMENTAL
+	---help---
+	  This driver supports Marvell TOPDOG 802.11 wireless cards.
 
-source "drivers/net/wireless/b43/Kconfig"
-source "drivers/net/wireless/b43legacy/Kconfig"
+	  To compile this driver as a module, choose M here: the module
+	  will be called mwl8k.  If unsure, say N.
 
-endif # BROADCOM_80211
+endif # MARVELL_80211
+
+source "drivers/net/wireless/rt2x00/Kconfig"
 
 config REALTEK_80211
 	bool "Realtek"
@@ -488,24 +476,38 @@ config RTL8187_LEDS
 
 endif # REALTEK_80211
 
-menuconfig INTEL_80211
-	bool "Intel"
+source "drivers/net/wireless/wl12xx/Kconfig"
+
+config ZYDAS_80211
+	bool "ZyDAS"
 	depends on WLAN_80211
 	---help---
-	  This will enable the support for Intel wireless drivers. This
-	  includes ipw2100, ipw2200, iwl3945, iwlagn, and iwmc3200wifi
+	  This will enable the support for ZyDAS wireless drivers. This includes
+	  the 802.11g zd1211rw usb driver and the older 802.11b zd1201 usb driver.
 
-if INTEL_80211
+if ZYDAS_80211
 
-source "drivers/net/wireless/ipw2x00/Kconfig"
-source "drivers/net/wireless/iwlwifi/Kconfig"
-source "drivers/net/wireless/iwmc3200wifi/Kconfig"
+source "drivers/net/wireless/zd1211rw/Kconfig"
 
-endif # INTEL_80211
+config USB_ZD1201
+	tristate "USB ZD1201 based Wireless device support"
+	depends on USB && WLAN_80211
+	select WIRELESS_EXT
+	select FW_LOADER
+	---help---
+	  Say Y if you want to use wireless LAN adapters based on the ZyDAS
+	  ZD1201 chip.
 
-source "drivers/net/wireless/ath/Kconfig"
-source "drivers/net/wireless/rt2x00/Kconfig"
-source "drivers/net/wireless/wl12xx/Kconfig"
+	  This driver makes the adapter appear as a normal Ethernet interface,
+	  typically on wlan0.
+
+	  The zd1201 device requires external firmware to be loaded.
+	  This can be found at http://linux-lc100020.sourceforge.net/
+
+	  To compile this driver as a module, choose M here: the
+	  module will be called zd1201.
+
+endif # ZYDAS_80211
 
 config PCMCIA_RAYCS
 	tristate "Aviator/Raytheon 2.4GHz wireless support"
-- 
1.6.2.5


^ permalink raw reply related

* Re: [PATCH] nl80211 connect API support
From: Johannes Berg @ 2009-08-14  5:50 UTC (permalink / raw)
  To: Zhu Yi
  Cc: Jouni Malinen, hostap@lists.shmoo.com,
	linux-wireless@vger.kernel.org, Samuel Ortiz
In-Reply-To: <1250223474.4972.47.camel@debian>

[-- Attachment #1: Type: text/plain, Size: 733 bytes --]

On Fri, 2009-08-14 at 12:17 +0800, Zhu Yi wrote:

> Johannes, I think we need a way in cfg80211 to tell connect vs.
> auth/assoc. The current capability method (nl80211_send_wiphy) cannot do
> this. For example,
> 
> 	if (dev->ops->connect || dev->ops->auth)
> 		NLA_PUT_U32(msg, i, NL80211_CMD_CONNECT);
> 
> We need to either make NL80211_CMD_CONNECT only depends on ops->connect
> or make NL80211_CMD_AUTH depends on ops->auth. Johannes, which one do
> you prefer?

The latter is already there as far as I can see?

        CMD(auth, AUTHENTICATE);
        CMD(assoc, ASSOCIATE);
        CMD(deauth, DEAUTHENTICATE);
        CMD(disassoc, DISASSOCIATE);

so you should be able to check for these.

johannes

[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 801 bytes --]

^ permalink raw reply

* [PATCH 1/5] ath9k: Add open loop power control support for AR9287.
From: Vivek Natarajan @ 2009-08-14  5:57 UTC (permalink / raw)
  To: linville; +Cc: linux-wireless

Signed-off-by: Vivek Natarajan <vnatarajan@atheros.com>
---
 drivers/net/wireless/ath/ath9k/calib.c |   44 +++++++++++++++++++++----------
 drivers/net/wireless/ath/ath9k/hw.c    |   20 +++++++++++---
 drivers/net/wireless/ath/ath9k/phy.h   |    7 +++++
 3 files changed, 52 insertions(+), 19 deletions(-)

diff --git a/drivers/net/wireless/ath/ath9k/calib.c b/drivers/net/wireless/ath/ath9k/calib.c
index 26d8752..20f74b5 100644
--- a/drivers/net/wireless/ath/ath9k/calib.c
+++ b/drivers/net/wireless/ath/ath9k/calib.c
@@ -729,26 +729,42 @@ s16 ath9k_hw_getchan_noise(struct ath_hw *ah, struct ath9k_channel *chan)
 static void ath9k_olc_temp_compensation(struct ath_hw *ah)
 {
 	u32 rddata, i;
-	int delta, currPDADC, regval;
+	int delta, currPDADC, regval, slope;
 
 	rddata = REG_READ(ah, AR_PHY_TX_PWRCTRL4);
-
 	currPDADC = MS(rddata, AR_PHY_TX_PWRCTRL_PD_AVG_OUT);
 
-	if (ah->eep_ops->get_eeprom(ah, EEP_DAC_HPWR_5G))
-		delta = (currPDADC - ah->initPDADC + 4) / 8;
-	else
-		delta = (currPDADC - ah->initPDADC + 5) / 10;
 
-	if (delta != ah->PDADCdelta) {
-		ah->PDADCdelta = delta;
-		for (i = 1; i < AR9280_TX_GAIN_TABLE_SIZE; i++) {
-			regval = ah->originalGain[i] - delta;
-			if (regval < 0)
-				regval = 0;
+	if (OLC_FOR_AR9287_10_LATER) {
+		if (ah->initPDADC == 0 || currPDADC == 0) {
+			return;
+		} else {
+			slope = ah->eep_ops->get_eeprom(ah, EEP_TEMPSENSE_SLOPE);
+			if (slope == 0)
+				delta = 0;
+			else
+				delta = ((currPDADC - ah->initPDADC)*4) / slope;
+			REG_RMW_FIELD(ah, AR_PHY_CH0_TX_PWRCTRL11,
+					AR_PHY_TX_PWRCTRL_OLPC_TEMP_COMP, delta);
+			REG_RMW_FIELD(ah, AR_PHY_CH1_TX_PWRCTRL11,
+					AR_PHY_TX_PWRCTRL_OLPC_TEMP_COMP, delta);
+		}
+	} else {
+		if (ah->eep_ops->get_eeprom(ah, EEP_DAC_HPWR_5G))
+			delta = (currPDADC - ah->initPDADC + 4) / 8;
+		else
+			delta = (currPDADC - ah->initPDADC + 5) / 10;
+
+		if (delta != ah->PDADCdelta) {
+			ah->PDADCdelta = delta;
+			for (i = 1; i < AR9280_TX_GAIN_TABLE_SIZE; i++) {
+				regval = ah->originalGain[i] - delta;
+				if (regval < 0)
+					regval = 0;
 
-			REG_RMW_FIELD(ah, AR_PHY_TX_GAIN_TBL1 + i * 4,
-					AR_PHY_TX_GAIN, regval);
+				REG_RMW_FIELD(ah, AR_PHY_TX_GAIN_TBL1 + i * 4,
+						AR_PHY_TX_GAIN, regval);
+			}
 		}
 	}
 }
diff --git a/drivers/net/wireless/ath/ath9k/hw.c b/drivers/net/wireless/ath/ath9k/hw.c
index 6eef7b4..1d2cc25 100644
--- a/drivers/net/wireless/ath/ath9k/hw.c
+++ b/drivers/net/wireless/ath/ath9k/hw.c
@@ -1332,11 +1332,21 @@ static void ath9k_olc_init(struct ath_hw *ah)
 {
 	u32 i;
 
-	for (i = 0; i < AR9280_TX_GAIN_TABLE_SIZE; i++)
-		ah->originalGain[i] =
-			MS(REG_READ(ah, AR_PHY_TX_GAIN_TBL1 + i * 4),
-					AR_PHY_TX_GAIN);
-	ah->PDADCdelta = 0;
+	if (OLC_FOR_AR9287_10_LATER) {
+		REG_SET_BIT(ah, AR_PHY_TX_PWRCTRL9,
+				AR_PHY_TX_PWRCTRL9_RES_DC_REMOVAL);
+		ath9k_hw_analog_shift_rmw(ah, AR9287_AN_TXPC0,
+				AR9287_AN_TXPC0_TXPCMODE,
+				AR9287_AN_TXPC0_TXPCMODE_S,
+				AR9287_AN_TXPC0_TXPCMODE_TEMPSENSE);
+		udelay(100);
+	} else {
+		for (i = 0; i < AR9280_TX_GAIN_TABLE_SIZE; i++)
+			ah->originalGain[i] =
+				MS(REG_READ(ah, AR_PHY_TX_GAIN_TBL1 + i * 4),
+						AR_PHY_TX_GAIN);
+		ah->PDADCdelta = 0;
+	}
 }
 
 static u32 ath9k_regd_get_ctl(struct ath_regulatory *reg,
diff --git a/drivers/net/wireless/ath/ath9k/phy.h b/drivers/net/wireless/ath/ath9k/phy.h
index e83cd4a..dfda6f4 100644
--- a/drivers/net/wireless/ath/ath9k/phy.h
+++ b/drivers/net/wireless/ath/ath9k/phy.h
@@ -490,11 +490,18 @@ bool ath9k_hw_init_rf(struct ath_hw *ah,
 #define AR_PHY_TX_PWRCTRL9       0xa27C
 #define AR_PHY_TX_DESIRED_SCALE_CCK        0x00007C00
 #define AR_PHY_TX_DESIRED_SCALE_CCK_S      10
+#define AR_PHY_TX_PWRCTRL9_RES_DC_REMOVAL  0x80000000
+#define AR_PHY_TX_PWRCTRL9_RES_DC_REMOVAL_S 31
 
 #define AR_PHY_TX_GAIN_TBL1      0xa300
 #define AR_PHY_TX_GAIN                     0x0007F000
 #define AR_PHY_TX_GAIN_S                   12
 
+#define AR_PHY_CH0_TX_PWRCTRL11  0xa398
+#define AR_PHY_CH1_TX_PWRCTRL11  0xb398
+#define AR_PHY_TX_PWRCTRL_OLPC_TEMP_COMP   0x0000FC00
+#define AR_PHY_TX_PWRCTRL_OLPC_TEMP_COMP_S 10
+
 #define AR_PHY_VIT_MASK2_M_46_61 0xa3a0
 #define AR_PHY_MASK2_M_31_45     0xa3a4
 #define AR_PHY_MASK2_M_16_30     0xa3a8
-- 
1.6.0.1


^ permalink raw reply related

* [PATCH 2/5] ath9k: Set AR_WA for AR9287 as it improves consistency in throughput.
From: Vivek Natarajan @ 2009-08-14  5:59 UTC (permalink / raw)
  To: linville; +Cc: linux-wireless

Signed-off-by: Vivek Natarajan <vnatarajan@atheros.com>
---
 drivers/net/wireless/ath/ath9k/hw.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/drivers/net/wireless/ath/ath9k/hw.c b/drivers/net/wireless/ath/ath9k/hw.c
index 1d2cc25..4f58112 100644
--- a/drivers/net/wireless/ath/ath9k/hw.c
+++ b/drivers/net/wireless/ath/ath9k/hw.c
@@ -3073,7 +3073,7 @@ void ath9k_hw_configpcipowersave(struct ath_hw *ah, int restore)
 	if (ah->config.pcie_waen) {
 		REG_WRITE(ah, AR_WA, ah->config.pcie_waen);
 	} else {
-		if (AR_SREV_9285(ah) || AR_SREV_9271(ah))
+		if (AR_SREV_9285(ah) || AR_SREV_9271(ah) || AR_SREV_9287(ah))
 			REG_WRITE(ah, AR_WA, AR9285_WA_DEFAULT);
 		/*
 		 * On AR9280 chips bit 22 of 0x4004 needs to be set to
-- 
1.6.0.1


^ permalink raw reply related

* [PATCH 3/5] ath9k: Enable LEDs for AR9287 chipsets.
From: Vivek Natarajan @ 2009-08-14  6:00 UTC (permalink / raw)
  To: linville; +Cc: linux-wireless

Signed-off-by: Vivek Natarajan <vnatarajan@atheros.com>
---
 drivers/net/wireless/ath/ath9k/ath9k.h |    3 ++-
 drivers/net/wireless/ath/ath9k/hw.h    |    1 +
 drivers/net/wireless/ath/ath9k/main.c  |   27 ++++++++++++++++-----------
 drivers/net/wireless/ath/ath9k/pci.c   |    6 +++---
 4 files changed, 22 insertions(+), 15 deletions(-)

diff --git a/drivers/net/wireless/ath/ath9k/ath9k.h b/drivers/net/wireless/ath/ath9k/ath9k.h
index 7a5a157..ee2ba96 100644
--- a/drivers/net/wireless/ath/ath9k/ath9k.h
+++ b/drivers/net/wireless/ath/ath9k/ath9k.h
@@ -453,7 +453,8 @@ struct ath_ani {
 /*   LED Control    */
 /********************/
 
-#define ATH_LED_PIN	1
+#define ATH_LED_PIN_DEF 		1
+#define ATH_LED_PIN_9287		8
 #define ATH_LED_ON_DURATION_IDLE	350	/* in msecs */
 #define ATH_LED_OFF_DURATION_IDLE	250	/* in msecs */
 
diff --git a/drivers/net/wireless/ath/ath9k/hw.h b/drivers/net/wireless/ath/ath9k/hw.h
index 0336981..de31a15 100644
--- a/drivers/net/wireless/ath/ath9k/hw.h
+++ b/drivers/net/wireless/ath/ath9k/hw.h
@@ -522,6 +522,7 @@ struct ath_hw {
 	u32 originalGain[22];
 	int initPDADC;
 	int PDADCdelta;
+	u8 led_pin;
 
 	struct ar5416IniArray iniModes;
 	struct ar5416IniArray iniCommon;
diff --git a/drivers/net/wireless/ath/ath9k/main.c b/drivers/net/wireless/ath/ath9k/main.c
index f452c20..f0e2d41 100644
--- a/drivers/net/wireless/ath/ath9k/main.c
+++ b/drivers/net/wireless/ath/ath9k/main.c
@@ -968,9 +968,9 @@ static void ath_led_blink_work(struct work_struct *work)
 
 	if ((sc->led_on_duration == ATH_LED_ON_DURATION_IDLE) ||
 	    (sc->led_off_duration == ATH_LED_OFF_DURATION_IDLE))
-		ath9k_hw_set_gpio(sc->sc_ah, ATH_LED_PIN, 0);
+		ath9k_hw_set_gpio(sc->sc_ah, sc->sc_ah->led_pin, 0);
 	else
-		ath9k_hw_set_gpio(sc->sc_ah, ATH_LED_PIN,
+		ath9k_hw_set_gpio(sc->sc_ah, sc->sc_ah->led_pin,
 				  (sc->sc_flags & SC_OP_LED_ON) ? 1 : 0);
 
 	ieee80211_queue_delayed_work(sc->hw,
@@ -1002,7 +1002,7 @@ static void ath_led_brightness(struct led_classdev *led_cdev,
 	case LED_OFF:
 		if (led->led_type == ATH_LED_ASSOC ||
 		    led->led_type == ATH_LED_RADIO) {
-			ath9k_hw_set_gpio(sc->sc_ah, ATH_LED_PIN,
+			ath9k_hw_set_gpio(sc->sc_ah, sc->sc_ah->led_pin,
 				(led->led_type == ATH_LED_RADIO));
 			sc->sc_flags &= ~SC_OP_LED_ASSOCIATED;
 			if (led->led_type == ATH_LED_RADIO)
@@ -1017,7 +1017,7 @@ static void ath_led_brightness(struct led_classdev *led_cdev,
 			ieee80211_queue_delayed_work(sc->hw,
 						     &sc->ath_led_blink_work, 0);
 		} else if (led->led_type == ATH_LED_RADIO) {
-			ath9k_hw_set_gpio(sc->sc_ah, ATH_LED_PIN, 0);
+			ath9k_hw_set_gpio(sc->sc_ah, sc->sc_ah->led_pin, 0);
 			sc->sc_flags |= SC_OP_LED_ON;
 		} else {
 			sc->led_on_cnt++;
@@ -1062,7 +1062,7 @@ static void ath_deinit_leds(struct ath_softc *sc)
 	ath_unregister_led(&sc->tx_led);
 	ath_unregister_led(&sc->rx_led);
 	ath_unregister_led(&sc->radio_led);
-	ath9k_hw_set_gpio(sc->sc_ah, ATH_LED_PIN, 1);
+	ath9k_hw_set_gpio(sc->sc_ah, sc->sc_ah->led_pin, 1);
 }
 
 static void ath_init_leds(struct ath_softc *sc)
@@ -1070,11 +1070,16 @@ static void ath_init_leds(struct ath_softc *sc)
 	char *trigger;
 	int ret;
 
+	if (AR_SREV_9287(sc->sc_ah))
+		sc->sc_ah->led_pin = ATH_LED_PIN_9287;
+	else
+		sc->sc_ah->led_pin = ATH_LED_PIN_DEF;
+
 	/* Configure gpio 1 for output */
-	ath9k_hw_cfg_output(sc->sc_ah, ATH_LED_PIN,
+	ath9k_hw_cfg_output(sc->sc_ah, sc->sc_ah->led_pin,
 			    AR_GPIO_OUTPUT_MUX_AS_OUTPUT);
 	/* LED off, active low */
-	ath9k_hw_set_gpio(sc->sc_ah, ATH_LED_PIN, 1);
+	ath9k_hw_set_gpio(sc->sc_ah, sc->sc_ah->led_pin, 1);
 
 	INIT_DELAYED_WORK(&sc->ath_led_blink_work, ath_led_blink_work);
 
@@ -1153,9 +1158,9 @@ void ath_radio_enable(struct ath_softc *sc)
 	ath9k_hw_set_interrupts(ah, sc->imask);
 
 	/* Enable LED */
-	ath9k_hw_cfg_output(ah, ATH_LED_PIN,
+	ath9k_hw_cfg_output(ah, ah->led_pin,
 			    AR_GPIO_OUTPUT_MUX_AS_OUTPUT);
-	ath9k_hw_set_gpio(ah, ATH_LED_PIN, 0);
+	ath9k_hw_set_gpio(ah, ah->led_pin, 0);
 
 	ieee80211_wake_queues(sc->hw);
 	ath9k_ps_restore(sc);
@@ -1171,8 +1176,8 @@ void ath_radio_disable(struct ath_softc *sc)
 	ieee80211_stop_queues(sc->hw);
 
 	/* Disable LED */
-	ath9k_hw_set_gpio(ah, ATH_LED_PIN, 1);
-	ath9k_hw_cfg_gpio_input(ah, ATH_LED_PIN);
+	ath9k_hw_set_gpio(ah, ah->led_pin, 1);
+	ath9k_hw_cfg_gpio_input(ah, ah->led_pin);
 
 	/* Disable interrupts */
 	ath9k_hw_set_interrupts(ah, 0);
diff --git a/drivers/net/wireless/ath/ath9k/pci.c b/drivers/net/wireless/ath/ath9k/pci.c
index 616bdff..685a8ce 100644
--- a/drivers/net/wireless/ath/ath9k/pci.c
+++ b/drivers/net/wireless/ath/ath9k/pci.c
@@ -236,7 +236,7 @@ static int ath_pci_suspend(struct pci_dev *pdev, pm_message_t state)
 	struct ath_wiphy *aphy = hw->priv;
 	struct ath_softc *sc = aphy->sc;
 
-	ath9k_hw_set_gpio(sc->sc_ah, ATH_LED_PIN, 1);
+	ath9k_hw_set_gpio(sc->sc_ah, sc->sc_ah->led_pin, 1);
 
 	pci_save_state(pdev);
 	pci_disable_device(pdev);
@@ -269,9 +269,9 @@ static int ath_pci_resume(struct pci_dev *pdev)
 		pci_write_config_dword(pdev, 0x40, val & 0xffff00ff);
 
 	/* Enable LED */
-	ath9k_hw_cfg_output(sc->sc_ah, ATH_LED_PIN,
+	ath9k_hw_cfg_output(sc->sc_ah, sc->sc_ah->led_pin,
 			    AR_GPIO_OUTPUT_MUX_AS_OUTPUT);
-	ath9k_hw_set_gpio(sc->sc_ah, ATH_LED_PIN, 1);
+	ath9k_hw_set_gpio(sc->sc_ah, sc->sc_ah->led_pin, 1);
 
 	return 0;
 }
-- 
1.6.0.1


^ permalink raw reply related

* [PATCH 4/5] ath9k: Fix ref power interpolation logic for AR9287 chipsets.
From: Vivek Natarajan @ 2009-08-14  6:02 UTC (permalink / raw)
  To: linville; +Cc: linux-wireless

Signed-off-by: Vivek Natarajan <vnatarajan@atheros.com>
---
 drivers/net/wireless/ath/ath9k/eeprom_9287.c |   12 +++---------
 1 files changed, 3 insertions(+), 9 deletions(-)

diff --git a/drivers/net/wireless/ath/ath9k/eeprom_9287.c b/drivers/net/wireless/ath/ath9k/eeprom_9287.c
index aeb7f48..9590979 100644
--- a/drivers/net/wireless/ath/ath9k/eeprom_9287.c
+++ b/drivers/net/wireless/ath/ath9k/eeprom_9287.c
@@ -374,7 +374,6 @@ static void ar9287_eeprom_get_tx_gain_index(struct ath_hw *ah,
 			    u8 *pCalChans,  u16 availPiers,
 			    int8_t *pPwr)
 {
-	u8 pcdac, i = 0;
 	u16  idxL = 0, idxR = 0, numPiers;
 	bool match;
 	struct chan_centers centers;
@@ -392,17 +391,12 @@ static void ar9287_eeprom_get_tx_gain_index(struct ath_hw *ah,
 			&idxL, &idxR);
 
 	if (match) {
-		pcdac = pRawDatasetOpLoop[idxL].pcdac[0][0];
-		*pPwr = pRawDatasetOpLoop[idxL].pwrPdg[0][0];
+		*pPwr = (int8_t) pRawDatasetOpLoop[idxL].pwrPdg[0][0];
 	} else {
-		pcdac = pRawDatasetOpLoop[idxR].pcdac[0][0];
-		*pPwr = (pRawDatasetOpLoop[idxL].pwrPdg[0][0] +
-				pRawDatasetOpLoop[idxR].pwrPdg[0][0])/2;
+		*pPwr = ((int8_t) pRawDatasetOpLoop[idxL].pwrPdg[0][0] +
+			    (int8_t) pRawDatasetOpLoop[idxR].pwrPdg[0][0])/2;
 	}
 
-	while ((pcdac > ah->originalGain[i]) &&
-			(i < (AR9280_TX_GAIN_TABLE_SIZE - 1)))
-		i++;
 }
 
 static void ar9287_eeprom_olpc_set_pdadcs(struct ath_hw *ah,
-- 
1.6.0.1


^ permalink raw reply related

* [PATCH 5/5] ath9k: Updates for AR9287_12 version of chipset.
From: Vivek Natarajan @ 2009-08-14  6:03 UTC (permalink / raw)
  To: linville; +Cc: linux-wireless

Enable AsyncFIFO and AGGWEP for AR9287_12 and later revisions only.

Signed-off-by: Vivek Natarajan <vnatarajan@atheros.com>
---
 drivers/net/wireless/ath/ath9k/hw.c  |    6 +++---
 drivers/net/wireless/ath/ath9k/reg.h |    9 ++++++++-
 2 files changed, 11 insertions(+), 4 deletions(-)

diff --git a/drivers/net/wireless/ath/ath9k/hw.c b/drivers/net/wireless/ath/ath9k/hw.c
index 4f58112..9259f71 100644
--- a/drivers/net/wireless/ath/ath9k/hw.c
+++ b/drivers/net/wireless/ath/ath9k/hw.c
@@ -2392,7 +2392,7 @@ int ath9k_hw_reset(struct ath_hw *ah, struct ath9k_channel *chan,
 	if (AR_SREV_9280_10_OR_LATER(ah))
 		REG_SET_BIT(ah, AR_GPIO_INPUT_EN_VAL, AR_GPIO_JTAG_DISABLE);
 
-	if (AR_SREV_9287_10_OR_LATER(ah)) {
+	if (AR_SREV_9287_12_OR_LATER(ah)) {
 		/* Enable ASYNC FIFO */
 		REG_SET_BIT(ah, AR_MAC_PCU_ASYNC_FIFO_REG3,
 				AR_MAC_PCU_ASYNC_FIFO_REG3_DATAPATH_SEL);
@@ -2478,7 +2478,7 @@ int ath9k_hw_reset(struct ath_hw *ah, struct ath9k_channel *chan,
 
 	ath9k_hw_init_user_settings(ah);
 
-	if (AR_SREV_9287_10_OR_LATER(ah)) {
+	if (AR_SREV_9287_12_OR_LATER(ah)) {
 		REG_WRITE(ah, AR_D_GBL_IFS_SIFS,
 			  AR_D_GBL_IFS_SIFS_ASYNC_FIFO_DUR);
 		REG_WRITE(ah, AR_D_GBL_IFS_SLOT,
@@ -2494,7 +2494,7 @@ int ath9k_hw_reset(struct ath_hw *ah, struct ath9k_channel *chan,
 		REG_RMW_FIELD(ah, AR_AHB_MODE, AR_AHB_CUSTOM_BURST_EN,
 			      AR_AHB_CUSTOM_BURST_ASYNC_FIFO_VAL);
 	}
-	if (AR_SREV_9287_10_OR_LATER(ah)) {
+	if (AR_SREV_9287_12_OR_LATER(ah)) {
 		REG_SET_BIT(ah, AR_PCU_MISC_MODE2,
 				AR_PCU_MISC_MODE2_ENABLE_AGGWEP);
 	}
diff --git a/drivers/net/wireless/ath/ath9k/reg.h b/drivers/net/wireless/ath/ath9k/reg.h
index 13fd658..c9e1ac9 100644
--- a/drivers/net/wireless/ath/ath9k/reg.h
+++ b/drivers/net/wireless/ath/ath9k/reg.h
@@ -744,6 +744,7 @@
 #define AR_SREV_VERSION_9287                  0x180
 #define AR_SREV_REVISION_9287_10              0
 #define AR_SREV_REVISION_9287_11              1
+#define AR_SREV_REVISION_9287_12              2
 #define AR_SREV_VERSION_9271			0x140
 #define AR_SREV_REVISION_9271_10		0
 #define AR_SREV_REVISION_9271_11		1
@@ -817,7 +818,13 @@
 	(((_ah)->hw_version.macVersion > AR_SREV_VERSION_9287) || \
 	 (((_ah)->hw_version.macVersion == AR_SREV_VERSION_9287) && \
 	  ((_ah)->hw_version.macRev >= AR_SREV_REVISION_9287_11)))
-
+#define AR_SREV_9287_12(_ah) \
+	(((_ah)->hw_version.macVersion == AR_SREV_VERSION_9287) && \
+	 ((_ah)->hw_version.macRev == AR_SREV_REVISION_9287_12))
+#define AR_SREV_9287_12_OR_LATER(_ah) \
+	(((_ah)->hw_version.macVersion > AR_SREV_VERSION_9287) || \
+	 (((_ah)->hw_version.macVersion == AR_SREV_VERSION_9287) && \
+	  ((_ah)->hw_version.macRev >= AR_SREV_REVISION_9287_12)))
 #define AR_SREV_9271(_ah) \
     (((_ah))->hw_version.macVersion == AR_SREV_VERSION_9271)
 #define AR_SREV_9271_10(_ah) \
-- 
1.6.0.1


^ permalink raw reply related

* Re: Revert commit in ath9k
From: Pavel Roskin @ 2009-08-14  6:09 UTC (permalink / raw)
  To: Sujith; +Cc: linville, linux-wireless
In-Reply-To: <19076.56592.101907.186453@gargle.gargle.HOWL>

Quoting Sujith <Sujith.Manoharan@atheros.com>:

> John,
>
> Can you revert the commit - "ath9k: Change DEBUG level for certain   
> interrupts" ?
> This interrupt seems to trigger fairly often and floods the log.

I think it would be better to revert only the part for the actually  
triggered AR_INTR_SYNC_LOCAL_TIMEOUT.  This way we'll learn of other  
unexpected interrupts if they happen for some users.

-- 
Regards,
Pavel Roskin

^ permalink raw reply

* Re: Revert commit in ath9k
From: Sujith @ 2009-08-14  6:17 UTC (permalink / raw)
  To: Pavel Roskin; +Cc: linville@tuxdriver.com, linux-wireless@vger.kernel.org
In-Reply-To: <20090814020913.0h159bvuo0sccwcg-cebfxv@webmail.spamcop.net>

Pavel Roskin wrote:
> Quoting Sujith <Sujith.Manoharan@atheros.com>:
> 
> > John,
> >
> > Can you revert the commit - "ath9k: Change DEBUG level for certain
> > interrupts" ?
> > This interrupt seems to trigger fairly often and floods the log.
> 
> I think it would be better to revert only the part for the actually
> triggered AR_INTR_SYNC_LOCAL_TIMEOUT.  This way we'll learn of other
> unexpected interrupts if they happen for some users.

Well, the other interrupts are handled appropriately (marked as FATAL).
And the ISR does a chip reset for all interrupts marked as FATAL.
SYNC_LOCAL_TIMEOUT was the one I was really interested in, since I saw it
occurring in my machine - and was curious about its occurrence elsewhere.
Apparently, it is widespread. :)

Sujith

^ permalink raw reply

* Re: [PATCH v2 23/25] wireless: downgrade TI driver from menuconfig to config
From: Luciano Coelho @ 2009-08-14  7:03 UTC (permalink / raw)
  To: ext Luis R. Rodriguez
  Cc: linville@tuxdriver.com, linux-wireless@vger.kernel.org,
	Valo Kalle (Nokia-D/Tampere)
In-Reply-To: <1250210584-13374-24-git-send-email-lrodriguez@atheros.com>

ext Luis R. Rodriguez wrote:
> There's only a few options here so let this expand upon
> selection.
>
> Cc: Kalle Valo <kalle.valo@nokia.com>
> Cc: Luciano Coelho <luciano.coelho@nokia.com>
> Signed-off-by: Luis R. Rodriguez <lrodriguez@atheros.com>
> ---
>   

Acked-by: Luciano Coelho <luciano.coelho@nokia.com>

-- 
Cheers,
Luca.


^ permalink raw reply

* Re: [PATCH v2 24/25] wl12xx: be consistent with the other group driver entries
From: Luciano Coelho @ 2009-08-14  7:07 UTC (permalink / raw)
  To: ext Luis R. Rodriguez
  Cc: linville@tuxdriver.com, linux-wireless@vger.kernel.org,
	Valo Kalle (Nokia-D/Tampere)
In-Reply-To: <1250210584-13374-25-git-send-email-lrodriguez@atheros.com>

ext Luis R. Rodriguez wrote:
> Other TI drivers can land here now.
>
> Cc: Kalle Valo <kalle.valo@nokia.com>
> Cc: Luciano Coelho <luciano.coelho@nokia.com>
> Signed-off-by: Luis R. Rodriguez <lrodriguez@atheros.com>
> ---
>  drivers/net/wireless/wl12xx/Kconfig |    2 +-
>  1 files changed, 1 insertions(+), 1 deletions(-)
>
> diff --git a/drivers/net/wireless/wl12xx/Kconfig b/drivers/net/wireless/wl12xx/Kconfig
> index 78029fd..f4510f7 100644
> --- a/drivers/net/wireless/wl12xx/Kconfig
> +++ b/drivers/net/wireless/wl12xx/Kconfig
> @@ -1,5 +1,5 @@
>  config WL12XX
> -	boolean "TI wl12xx driver support"
> +	boolean "Texas Instruments"
>  	depends on MAC80211 && EXPERIMENTAL
>  	---help---
>  	  This will enable TI wl12xx driver support. The drivers make
>   

I think the description of this option should be changed as well.  What 
about s/This will enable TI wl12xx driver support/This will enable 
support for Texas Instruments chipsets/ ?

-- 
Cheers,
Luca.


^ permalink raw reply

* Re: [PATCH] nl80211 connect API support
From: Zhu Yi @ 2009-08-14  7:55 UTC (permalink / raw)
  To: Johannes Berg
  Cc: Jouni Malinen, hostap@lists.shmoo.com,
	linux-wireless@vger.kernel.org, Samuel Ortiz
In-Reply-To: <1250229046.7696.0.camel@johannes.local>

On Fri, 2009-08-14 at 13:50 +0800, Johannes Berg wrote:
> On Fri, 2009-08-14 at 12:17 +0800, Zhu Yi wrote:
> 
> > Johannes, I think we need a way in cfg80211 to tell connect vs.
> > auth/assoc. The current capability method (nl80211_send_wiphy) cannot do
> > this. For example,
> > 
> > 	if (dev->ops->connect || dev->ops->auth)
> > 		NLA_PUT_U32(msg, i, NL80211_CMD_CONNECT);
> > 
> > We need to either make NL80211_CMD_CONNECT only depends on ops->connect
> > or make NL80211_CMD_AUTH depends on ops->auth. Johannes, which one do
> > you prefer?
> 
> The latter is already there as far as I can see?
> 
>         CMD(auth, AUTHENTICATE);
>         CMD(assoc, ASSOCIATE);
>         CMD(deauth, DEAUTHENTICATE);
>         CMD(disassoc, DISASSOCIATE);
> 
> so you should be able to check for these.

My bad. I'll use NL80211_CMD_AUTHENTICATE.

Thanks,
-yi


^ permalink raw reply

* Re: [PATCH v2 00/25] wireless: cleanup and reorganize kconfig
From: Holger Schurig @ 2009-08-14  8:00 UTC (permalink / raw)
  To: Luis R. Rodriguez; +Cc: linux-wireless
In-Reply-To: <1250210584-13374-1-git-send-email-lrodriguez@atheros.com>

On Friday 14 August 2009 02:42:39 Luis R. Rodriguez wrote:

Could you also post one combined patch for all of this?

^ permalink raw reply

* Re: [RFT] ar9170: check mpdu len on single mpdu before processing
From: Christian Lamparter @ 2009-08-14  9:21 UTC (permalink / raw)
  To: Luis R. Rodriguez; +Cc: linux-wireless, Stephen Chen
In-Reply-To: <1250214676-10608-1-git-send-email-lrodriguez@atheros.com>

On Friday 14 August 2009 03:51:16 Luis R. Rodriguez wrote:
> When ar9170 recieves a single MPDU in RX stream mode
> we set the header and tail pointers for processing
> but we never check if the MPDU will actually have
> it given by the length passed. Should we have run into
> this we would be chowing down on memory which may
> not be ours.
> 
> Cc: Stephen Chen <Stephen.Chen@atheros.com>
> Cc: Christian Lamparter <chunkeey@web.de>
> Signed-off-by: Luis R. Rodriguez <lrodriguez@atheros.com>
> ---
> 
> I won't be able to test this for a bit, was reviewing
> RX stream support and noticed this.
> 
> BTW Chris, Stephen points out we *can* use packet mode for
> RX with Otus devices.
I know... The otus driver talks about how to set the stream modes.
But then you make the firmware cry, it wants to control the all the
USB settings by itself.

> I haven't yet checked if ar9170 supports
> it but I think that's what the Windows driver uses.
(Well, you basically answered this already in the other post...)
But here's some more: The windows driver also utilize txstream
since XP/Vista can feed whole _aggregates_ 
(well, not the aggregate you might think, just a bundle of frames) 
directly into the _tx routines.

> It seems RX stream mode is used to reduce the number of
> interrupt and can help on some platforms.
> The down side to RX stream mode seems to be that it
> "may introduce buffer copy as a side effect",
> not sure what that is though, Stephen, can you clarify?
well, seems like you're struck by the same thought I had when
I looked at it: But c'mon: even for low-cost systems the memory
bandwidth easily exceeds the USB 2.0 bandwidth by orders of magnitudes.

And another upside is that we don't have to alloc 16k frames - that's 
(order 3 I think) all the time.

It may sounds a bit strange, but as you know ar9170 supports 8k msdu.
So we have to be ready to receive them. 
Now it's pretty straight forward, this would be a very wasteful behavior.
Since A-MSDU aren't used much and normally the frames are between
1 and 2k... 

so yes, that rxstream is not so bad after all!
(Also, it makes refilling much easier since the original skb is not consumed,
 we will never run out of rx buffers when the memory is too fragmented)

>  drivers/net/wireless/ath/ar9170/main.c |   18 ++++++++++++++++++
>  1 files changed, 18 insertions(+), 0 deletions(-)
> 
> diff --git a/drivers/net/wireless/ath/ar9170/main.c b/drivers/net/wireless/ath/ar9170/main.c
> index ea8c941..75c317d 100644
> --- a/drivers/net/wireless/ath/ar9170/main.c
> +++ b/drivers/net/wireless/ath/ar9170/main.c
> @@ -1040,9 +1040,27 @@ static void ar9170_handle_mpdu(struct ar9170 *ar, u8 *buf, int len)
>  
>  	case AR9170_RX_STATUS_MPDU_SINGLE:
>  		/* single mpdu - has plcp (head) and phy status (tail) */
> +
> +		if (unlikely(mpdu_len < sizeof(struct ar9170_rx_head))) {
> +			if (ar9170_nag_limiter(ar))
> +				printk(KERN_ERR "%s: rx'd single mpdu "
> +				       "with no header.\n",
> +				       wiphy_name(ar->hw->wiphy));
> +			return;
> +		}
> +
>  		head = (void *) buf;
>  
>  		mpdu_len -= sizeof(struct ar9170_rx_head);
> +
> +		if (unlikely(mpdu_len < sizeof(struct ar9170_rx_phystatus))) {
> +			if (ar9170_nag_limiter(ar))
> +				printk(KERN_ERR "%s: rx'd single mpdu"
> +				       "with no tail.\n",
> +				       wiphy_name(ar->hw->wiphy));
> +			return ;
> +		}
> +
>  		mpdu_len -= sizeof(struct ar9170_rx_phystatus);
>  
>  		buf += sizeof(struct ar9170_rx_head);
> 

naaa, not necessary...  there is more than your eyes can see :)
---
        case AR9170_RX_STATUS_MPDU_SINGLE:
                /* single mpdu - has plcp (head) and phy status (tail) */
                head = (void *) buf;
		[...]
                mpdu_len -= sizeof(struct ar9170_rx_head);
                mpdu_len -= sizeof(struct ar9170_rx_phystatus);
		[...]
        default:
                BUG_ON(1);
                break;
        }

        if (unlikely(mpdu_len < FCS_LEN))
                return ;
---
of course frames that only have FCS_LEN octets are a most likely
_damaged_ in some way... but we don't know, so we pass it on to
the stack to decide, maybe the user has a running monitor...

Regards,
	Chr

^ permalink raw reply

* Re: [RFT] ar9170: downgrade BUG_ON() on unexpected mdpu
From: Christian Lamparter @ 2009-08-14  9:50 UTC (permalink / raw)
  To: Luis R. Rodriguez; +Cc: linux-wireless
In-Reply-To: <1250215295-11253-1-git-send-email-lrodriguez@atheros.com>

On Friday 14 August 2009 04:01:35 Luis R. Rodriguez wrote:
> If someone pulls the harware out while RX'ing a lot of traffic
> I would funky data may be passed, BUG_ON() seems pretty extreme
> so lets just drop the frame as we do when the length does not
> meet our criteria for processing.
> 
> Cc: Christian Lamparter <chunkeey@web.de>
> Signed-off-by: Luis R. Rodriguez <lrodriguez@atheros.com>
> ---
> 
> This one depends on my previous patch.
> 
>  drivers/net/wireless/ath/ar9170/main.c |    7 +++++--
>  1 files changed, 5 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/net/wireless/ath/ar9170/main.c b/drivers/net/wireless/ath/ar9170/main.c
> index 75c317d..0bbbc36 100644
> --- a/drivers/net/wireless/ath/ar9170/main.c
> +++ b/drivers/net/wireless/ath/ar9170/main.c
> @@ -1068,8 +1068,11 @@ static void ar9170_handle_mpdu(struct ar9170 *ar, u8 *buf, int len)
>  		break;
>  
>  	default:
> -		BUG_ON(1);
> -		break;
> +		if (ar9170_nag_limiter(ar))
> +			printk(KERN_ERR "%s: rx'd unexpected "
> +			       "type of MPDU.\n",
> +			       wiphy_name(ar->hw->wiphy));
> +		return;
>  	}

no, this is really impossible! really!

But let's take a closer look why should be so:

the switch goes like this:
> switch (mac->status & AR9170_RX_STATUS_MPDU_MASK) {
mac->status is a u8 and AND with AR9170_RX_STATUS_MPDU_MASK.

AR9170_RX_STATUS_MPDU_MASK (etc.) is #define in hw.h
and it's a 0x30 _mask_.

This leaves only four possibilities: 0x00, 0x10, 0x20, 0x30.

>case AR9170_RX_STATUS_MPDU_FIRST: (case 0x20:)
>case AR9170_RX_STATUS_MPDU_LAST: (case 0x10:)
>case AR9170_RX_STATUS_MPDU_MIDDLE: (case 0x30:)
>case AR9170_RX_STATUS_MPDU_SINGLE: (case 0x00:)

so the default case is a deadly dead code path here ;-).
And the reason why you see it was because some checker tool kept
complaining about unlikely _corner_ cases.

>  	if (unlikely(mpdu_len < FCS_LEN))

Regards,
	Chr

^ permalink raw reply

* Re: [PATCH v2 11/25] wireless: clarify rndis_wlan is not broadcom specific
From: Gábor Stefanik @ 2009-08-14 10:13 UTC (permalink / raw)
  To: Luis R. Rodriguez
  Cc: linville, linux-wireless, Michael Buesch, Johannes Berg,
	Jussi Kivilinna
In-Reply-To: <1250210584-13374-12-git-send-email-lrodriguez@atheros.com>

On Fri, Aug 14, 2009 at 2:42 AM, Luis R.
Rodriguez<lrodriguez@atheros.com> wrote:
> Cc: Michael Buesch <mb@bu3sch.de>
> Cc: Gábor Stefanik <netrolller.3d@gmail.com>
> Cc: Johannes Berg <johannes@sipsolutions.net>
> Cc: Jussi Kivilinna <jussi.kivilinna@mbnet.fi>
> Signed-off-by: Luis R. Rodriguez <lrodriguez@atheros.com>
> ---
>  drivers/net/wireless/Kconfig |    4 +++-
>  1 files changed, 3 insertions(+), 1 deletions(-)
>
> diff --git a/drivers/net/wireless/Kconfig b/drivers/net/wireless/Kconfig
> index cb5aae6..a1bdb51 100644
> --- a/drivers/net/wireless/Kconfig
> +++ b/drivers/net/wireless/Kconfig
> @@ -403,7 +403,9 @@ config USB_NET_RNDIS_WLAN
>          BUFFALO WLI-USB-G54
>
>          All of these devices are based on Broadcom 4320 chip which is the
> -         only wireless RNDIS chip known to date.
> +         only wireless RNDIS chip known to date. Technically RNDIS follows
> +         a specification and although only Broadcom currently supports this
> +         other vendors could technically follow the implementation as well.

To the aforementioned "other vendors" - please do not follow this
brain-dead, Microsoft-based spec! :-)

BTW, there are a few missing commas in the 3rd added line:
"a specification, and although only Broadcom currently support this,"
would be better.

>
>          If you choose to build a module, it'll be called rndis_wlan.
>
> --
> 1.6.2.5
>
>


-- 
Vista: [V]iruses, [I]ntruders, [S]pyware, [T]rojans and [A]dware. :-)

^ permalink raw reply

* Re: Deauthentications with p54usb
From: Christian Lamparter @ 2009-08-14 10:41 UTC (permalink / raw)
  To: Larry Finger; +Cc: wireless
In-Reply-To: <4A84995C.8060109@lwfinger.net>

On Friday 14 August 2009 00:53:16 Larry Finger wrote:
> Chunkeey@web.de wrote:
> > "Larry Finger" <Larry.Finger@lwfinger.net> wrote:
> >> I'll try to collect a dump.
> >>
> > Any news regarding that dump?
> > Or are you too busy reviewing b43's LP code? :)
> > 
> > It looks like more drivers are affected. 
> >  - Luis reported some deauth (reasons=7) for ath9k with a cisco ap.
> >  - Kalle has the same issues with wl1271 with a ?Zyxel? AP.
> 
> Not only reviewing the code, but updating the specs and doing the RE
> work. No, I have no further info. Mine have been on a Linksys AP.
yeah, b43 definitely needs the attention.

The powersave default mode should be back to "off" for p54, due to:
"[PATCH] cfg80211: allow driver to override PS default".
so, no need to revert the psm patch again.

Regards,
	Chr

^ permalink raw reply

* [PATCH -stable] rt2x00: fix memory corruption in rf cache, add a sanity check
From: Stanislaw Gruszka @ 2009-08-14 10:59 UTC (permalink / raw)
  To: stable
  Cc: linux-wireless, John W. Linville, Ivo van Doorn, Pavel Roskin,
	Stanislaw Gruszka

From: Pavel Roskin <proski@gnu.org>

Change rt2x00_rf_read() and rt2x00_rf_write() to subtract 1 from the rf
register number.  This is needed because the rf registers are enumerated
starting with one.  The size of the rf register cache is just enough to
hold all registers, so writing to the highest register was corrupting
memory.  Add a check to make sure that the rf register number is valid.

Signed-off-by: Pavel Roskin <proski@gnu.org>
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
---
I think nobody send this patch against stable yet. I have problem with
rt73usb memory corruption on 2.6.30, this patch solve it. Not sure if 
patch is also useful for 2.6.27. 

 drivers/net/wireless/rt2x00/rt2x00.h |    6 ++++--
 1 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/drivers/net/wireless/rt2x00/rt2x00.h b/drivers/net/wireless/rt2x00/rt2x00.h
index 84bd6f1..c242b54 100644
--- a/drivers/net/wireless/rt2x00/rt2x00.h
+++ b/drivers/net/wireless/rt2x00/rt2x00.h
@@ -814,13 +814,15 @@ struct rt2x00_dev {
 static inline void rt2x00_rf_read(struct rt2x00_dev *rt2x00dev,
 				  const unsigned int word, u32 *data)
 {
-	*data = rt2x00dev->rf[word];
+	BUG_ON(word < 1 || word > rt2x00dev->ops->rf_size / sizeof(u32));
+	*data = rt2x00dev->rf[word - 1];
 }
 
 static inline void rt2x00_rf_write(struct rt2x00_dev *rt2x00dev,
 				   const unsigned int word, u32 data)
 {
-	rt2x00dev->rf[word] = data;
+	BUG_ON(word < 1 || word > rt2x00dev->ops->rf_size / sizeof(u32));
+	rt2x00dev->rf[word - 1] = data;
 }
 
 /*
-- 
1.6.2.5


^ permalink raw reply related

* [PATCH] p54: disable PS by default
From: Christian Lamparter @ 2009-08-14 11:23 UTC (permalink / raw)
  To: wireless; +Cc: John W. Linville, Larry Finger, Johannes Berg

Johannes kindly pointed out that I completely missed a hunk in
his patch: "[PATCH] cfg80211: allow driver to override PS default".

The driver must explicitly set ps_default to false,
as the setting is pre-filled with the kconfig default.

Signed-off-by: Christian Lamparter <chunkeey@web.de>
---
diff --git a/drivers/net/wireless/p54/main.c b/drivers/net/wireless/p54/main.c
index 4a741df..77203e3 100644
--- a/drivers/net/wireless/p54/main.c
+++ b/drivers/net/wireless/p54/main.c
@@ -575,6 +575,12 @@ struct ieee80211_hw *p54_init_common(size_t priv_data_len)
 	dev->extra_tx_headroom = sizeof(struct p54_hdr) + 4 +
 				 sizeof(struct p54_tx_data);
 
+	/*
+	 * For now, disable PS by default because it affects
+	 * link stability significantly.
+	 */
+	dev->wiphy->ps_default = false;
+
 	mutex_init(&priv->conf_mutex);
 	mutex_init(&priv->eeprom_mutex);
 	init_completion(&priv->eeprom_comp);

^ permalink raw reply related

* Re: compat-wireless-2009-08-13 ath9k timeouts
From: Howard Chu @ 2009-08-14 11:43 UTC (permalink / raw)
  To: linux-wireless@vger.kernel.org
In-Reply-To: <4A84D3E4.5050406@symas.com>

After reading this hint

> From: Sujith <Sujith.Manoharan@...>
> Subject: Re: Revert commit in ath9k
> Date: 2009-08-14 06:17:42 GMT (5 hours and 20 minutes ago)
>
> Pavel Roskin wrote:
>> Quoting Sujith <Sujith.Manoharan@...>:
>>
>> > John,
>> >
>> > Can you revert the commit - "ath9k: Change DEBUG level for certain
>> > interrupts" ?
>> > This interrupt seems to trigger fairly often and floods the log.

I reverted that commit in my build, and things were a bit more usable. But now 
I'm seeing this momentary pauses, and this in dmesg:

[22479.126146] wlan0: associated
[22734.695276] ath9k: DMA failed to stop in 10 ms AR_CR=0x00000024 
AR_DIAG_SW=0x40000020
[22978.405252] ath9k: DMA failed to stop in 10 ms AR_CR=0x00000024 
AR_DIAG_SW=0x42000020

-- 
   -- Howard Chu
   CTO, Symas Corp.           http://www.symas.com
   Director, Highland Sun     http://highlandsun.com/hyc/
   Chief Architect, OpenLDAP  http://www.openldap.org/project/

^ permalink raw reply

* [PATCH] b43: Add LP-PHY firmware loading support
From: Gábor Stefanik @ 2009-08-14 11:51 UTC (permalink / raw)
  To: John Linville, Michael Buesch, Larry Finger, Mark Huijgen
  Cc: Broadcom Wireless, linux-wireless

Add support for loading LP-PHY firmware to b43_try_request_fw.

Signed-off-by: Gábor Stefanik <netrolller.3d@gmail.com>
---
For anyone hoping that the channel switch patches will make their LP card work - this is also definitely required.

Mark, this doesn't fix your problem specifically, but it will be needed after your problem is fixed.

 drivers/net/wireless/b43/main.c |   24 +++++++++++++++++++++++-
 1 files changed, 23 insertions(+), 1 deletions(-)

diff --git a/drivers/net/wireless/b43/main.c b/drivers/net/wireless/b43/main.c
index fbcbe4f..1e657fe 100644
--- a/drivers/net/wireless/b43/main.c
+++ b/drivers/net/wireless/b43/main.c
@@ -2062,8 +2062,12 @@ static int b43_try_request_fw(struct b43_request_fw_context *ctx)
 		filename = "ucode5";
 	else if ((rev >= 11) && (rev <= 12))
 		filename = "ucode11";
-	else if (rev >= 13)
+	else if (rev == 13)
 		filename = "ucode13";
+	else if (rev == 14)
+		filename = "ucode14";
+	else if (rev >= 15)
+		filename = "ucode15";
 	else
 		goto err_no_ucode;
 	err = b43_do_request_fw(ctx, filename, &fw->ucode);
@@ -2111,6 +2115,15 @@ static int b43_try_request_fw(struct b43_request_fw_context *ctx)
 		else
 			goto err_no_initvals;
 		break;
+	case B43_PHYTYPE_LP:
+		if (rev == 13)
+			filename = "lp0initvals13";
+		else if (rev == 14)
+			filename = "lp0initvals14";
+		else if (rev >= 15)
+			filename = "lp0initvals15";
+		else
+			goto err_no_initvals;
 	default:
 		goto err_no_initvals;
 	}
@@ -2145,6 +2158,15 @@ static int b43_try_request_fw(struct b43_request_fw_context *ctx)
 		else
 			goto err_no_initvals;
 		break;
+	case B43_PHYTYPE_LP:
+		if (rev == 13)
+			filename = "lp0bsinitvals13";
+		else if (rev == 14)
+			filename = "lp0bsinitvals14";
+		else if (rev >= 15)
+			filename = "lp0bsinitvals15";
+		else
+			goto err_no_initvals;
 	default:
 		goto err_no_initvals;
 	}
-- 
1.6.2.4




^ permalink raw reply related

* [PATCH] ssb: Fix e typo in the rev8 SPROM extraction routine
From: Gábor Stefanik @ 2009-08-14 12:11 UTC (permalink / raw)
  To: John Linville, Michael Buesch, Larry Finger, Mark Huijgen
  Cc: Broadcom Wireless, linux-wireless

No comment. :-)

Signed-off-by: Gábor Stefanik <netrolller.3d@gmail.com>
---
Mark, this should fix your MAC address bug.
Anyone else testing LP-PHY should also apply this.

 drivers/ssb/pci.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/drivers/ssb/pci.c b/drivers/ssb/pci.c
index 50811e4..335a43f 100644
--- a/drivers/ssb/pci.c
+++ b/drivers/ssb/pci.c
@@ -480,7 +480,7 @@ static void sprom_extract_r8(struct ssb_sprom *out, const u16 *in)
 
 	/* extract the MAC address */
 	for (i = 0; i < 3; i++) {
-		v = in[SPOFF(SSB_SPROM1_IL0MAC) + i];
+		v = in[SPOFF(SSB_SPROM8_IL0MAC) + i];
 		*(((__be16 *)out->il0mac) + i) = cpu_to_be16(v);
 	}
 	SPEX(country_code, SSB_SPROM8_CCODE, 0xFFFF, 0);
-- 
1.6.2.4




^ permalink raw reply related

* [PATCH v2] b43: Add LP-PHY firmware loading support
From: Gábor Stefanik @ 2009-08-14 12:17 UTC (permalink / raw)
  To: John Linville, Michael Buesch, Larry Finger, Mark Huijgen
  Cc: Broadcom Wireless, linux-wireless

Add support for loading LP-PHY firmware to b43_try_request_fw.

Signed-off-by: Gábor Stefanik <netrolller.3d@gmail.com>
---
 drivers/net/wireless/b43/main.c |   25 ++++++++++++++++++++++++-
 1 files changed, 24 insertions(+), 1 deletions(-)

diff --git a/drivers/net/wireless/b43/main.c b/drivers/net/wireless/b43/main.c
index fbcbe4f..51767fa 100644
--- a/drivers/net/wireless/b43/main.c
+++ b/drivers/net/wireless/b43/main.c
@@ -2062,8 +2062,12 @@ static int b43_try_request_fw(struct b43_request_fw_context *ctx)
 		filename = "ucode5";
 	else if ((rev >= 11) && (rev <= 12))
 		filename = "ucode11";
-	else if (rev >= 13)
+	else if (rev == 13)
 		filename = "ucode13";
+	else if (rev == 14)
+		filename = "ucode14";
+	else if (rev >= 15)
+		filename = "ucode15";
 	else
 		goto err_no_ucode;
 	err = b43_do_request_fw(ctx, filename, &fw->ucode);
@@ -2111,6 +2115,16 @@ static int b43_try_request_fw(struct b43_request_fw_context *ctx)
 		else
 			goto err_no_initvals;
 		break;
+	case B43_PHYTYPE_LP:
+		if (rev == 13)
+			filename = "lp0initvals13";
+		else if (rev == 14)
+			filename = "lp0initvals14";
+		else if (rev >= 15)
+			filename = "lp0initvals15";
+		else
+			goto err_no_initvals;
+		break;
 	default:
 		goto err_no_initvals;
 	}
@@ -2145,6 +2159,15 @@ static int b43_try_request_fw(struct b43_request_fw_context *ctx)
 		else
 			goto err_no_initvals;
 		break;
+	case B43_PHYTYPE_LP:
+		if (rev == 13)
+			filename = "lp0bsinitvals13";
+		else if (rev == 14)
+			filename = "lp0bsinitvals14";
+		else if (rev >= 15)
+			filename = "lp0bsinitvals15";
+		else
+			goto err_no_initvals;
 	default:
 		goto err_no_initvals;
 	}
-- 
1.6.2.4




^ permalink raw reply related

* Re: [PATCH v2] b43: Add LP-PHY firmware loading support
From: Mark Huijgen @ 2009-08-14 12:20 UTC (permalink / raw)
  To: Gábor Stefanik
  Cc: John Linville, Michael Buesch, Larry Finger, Broadcom Wireless,
	linux-wireless
In-Reply-To: <4A8555F5.5090603@gmail.com>

Still missing a break in the bandswitch initvals.

Mark

Gábor Stefanik wrote:
> Add support for loading LP-PHY firmware to b43_try_request_fw.
>
> Signed-off-by: Gábor Stefanik <netrolller.3d@gmail.com>
> ---
> drivers/net/wireless/b43/main.c |   25 ++++++++++++++++++++++++-
> 1 files changed, 24 insertions(+), 1 deletions(-)
>
> diff --git a/drivers/net/wireless/b43/main.c
> b/drivers/net/wireless/b43/main.c
> index fbcbe4f..51767fa 100644
> --- a/drivers/net/wireless/b43/main.c
> +++ b/drivers/net/wireless/b43/main.c
> @@ -2062,8 +2062,12 @@ static int b43_try_request_fw(struct
> b43_request_fw_context *ctx)
>         filename = "ucode5";
>     else if ((rev >= 11) && (rev <= 12))
>         filename = "ucode11";
> -    else if (rev >= 13)
> +    else if (rev == 13)
>         filename = "ucode13";
> +    else if (rev == 14)
> +        filename = "ucode14";
> +    else if (rev >= 15)
> +        filename = "ucode15";
>     else
>         goto err_no_ucode;
>     err = b43_do_request_fw(ctx, filename, &fw->ucode);
> @@ -2111,6 +2115,16 @@ static int b43_try_request_fw(struct
> b43_request_fw_context *ctx)
>         else
>             goto err_no_initvals;
>         break;
> +    case B43_PHYTYPE_LP:
> +        if (rev == 13)
> +            filename = "lp0initvals13";
> +        else if (rev == 14)
> +            filename = "lp0initvals14";
> +        else if (rev >= 15)
> +            filename = "lp0initvals15";
> +        else
> +            goto err_no_initvals;
> +        break;
>     default:
>         goto err_no_initvals;
>     }
> @@ -2145,6 +2159,15 @@ static int b43_try_request_fw(struct
> b43_request_fw_context *ctx)
>         else
>             goto err_no_initvals;
>         break;
> +    case B43_PHYTYPE_LP:
> +        if (rev == 13)
> +            filename = "lp0bsinitvals13";
> +        else if (rev == 14)
> +            filename = "lp0bsinitvals14";
> +        else if (rev >= 15)
> +            filename = "lp0bsinitvals15";
> +        else
> +            goto err_no_initvals;
>     default:
>         goto err_no_initvals;
>     }


^ permalink raw reply

* Re: [PATCH] b43: Add LP-PHY firmware loading support
From: Mark Huijgen @ 2009-08-14 12:11 UTC (permalink / raw)
  To: Gábor Stefanik
  Cc: John Linville, Michael Buesch, Larry Finger, linux-wireless,
	Broadcom Wireless
In-Reply-To: <4A854FDF.5020208@gmail.com>

Missing break in initval case switches, see below.

Gábor Stefanik wrote:
> Add support for loading LP-PHY firmware to b43_try_request_fw.
>
> Signed-off-by: Gábor Stefanik <netrolller.3d@gmail.com>
> ---
> For anyone hoping that the channel switch patches will make their LP card work - this is also definitely required.
>
> Mark, this doesn't fix your problem specifically, but it will be needed after your problem is fixed.
>
>  drivers/net/wireless/b43/main.c |   24 +++++++++++++++++++++++-
>  1 files changed, 23 insertions(+), 1 deletions(-)
>
> diff --git a/drivers/net/wireless/b43/main.c b/drivers/net/wireless/b43/main.c
> index fbcbe4f..1e657fe 100644
> --- a/drivers/net/wireless/b43/main.c
> +++ b/drivers/net/wireless/b43/main.c
> @@ -2062,8 +2062,12 @@ static int b43_try_request_fw(struct b43_request_fw_context *ctx)
>  		filename = "ucode5";
>  	else if ((rev >= 11) && (rev <= 12))
>  		filename = "ucode11";
> -	else if (rev >= 13)
> +	else if (rev == 13)
>  		filename = "ucode13";
> +	else if (rev == 14)
> +		filename = "ucode14";
> +	else if (rev >= 15)
> +		filename = "ucode15";
>  	else
>  		goto err_no_ucode;
>  	err = b43_do_request_fw(ctx, filename, &fw->ucode);
> @@ -2111,6 +2115,15 @@ static int b43_try_request_fw(struct b43_request_fw_context *ctx)
>  		else
>  			goto err_no_initvals;
>  		break;
> +	case B43_PHYTYPE_LP:
> +		if (rev == 13)
> +			filename = "lp0initvals13";
> +		else if (rev == 14)
> +			filename = "lp0initvals14";
> +		else if (rev >= 15)
> +			filename = "lp0initvals15";
> +		else
> +			goto err_no_initvals;
>   
break;
>  	default:
>  		goto err_no_initvals;
>  	}
> @@ -2145,6 +2158,15 @@ static int b43_try_request_fw(struct b43_request_fw_context *ctx)
>  		else
>  			goto err_no_initvals;
>  		break;
> +	case B43_PHYTYPE_LP:
> +		if (rev == 13)
> +			filename = "lp0bsinitvals13";
> +		else if (rev == 14)
> +			filename = "lp0bsinitvals14";
> +		else if (rev >= 15)
> +			filename = "lp0bsinitvals15";
> +		else
> +			goto err_no_initvals;
>   
break;
>  	default:
>  		goto err_no_initvals;
>  	}
>   


^ permalink raw reply


This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox