Search Linux Wireless

[PATCH 6/6] ath5k: Do not let the driver through for not yet supported radios

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



The IBM AR5424 card uses the same vendor:device ID as an old AR5212. AR5424
is not yet supported though. We detect this and report it.

OpenBSD has similar checks but they check for 64-bit.

Changes to ath5k_base.[ch]
Changes-licensed-under: 3-clause-BSD

Changes to hw.c
Changes-licensed-under: ISC

Signed-off-by: Luis R. Rodriguez <mcgrof@xxxxxxxxx>
---
 drivers/net/wireless/ath5k/base.c |    1 +
 drivers/net/wireless/ath5k/base.h |    1 +
 drivers/net/wireless/ath5k/hw.c   |   22 ++++++++++++++++++++++
 3 files changed, 24 insertions(+), 0 deletions(-)

diff --git a/drivers/net/wireless/ath5k/base.c b/drivers/net/wireless/ath5k/base.c
index caf9562..97a7613 100644
--- a/drivers/net/wireless/ath5k/base.c
+++ b/drivers/net/wireless/ath5k/base.c
@@ -2423,6 +2423,7 @@ static int __devinit ath_pci_probe(struct pci_dev *pdev,
 	sc->iobase = mem;
 	sc->cachelsz = csz * sizeof(u32); /* convert to bytes */
 	sc->opmode = IEEE80211_IF_TYPE_STA;
+	sc->pci_express = !!pci_find_capability(pdev, PCI_CAP_ID_EXP);
 	mutex_init(&sc->lock);
 	spin_lock_init(&sc->rxbuflock);
 	spin_lock_init(&sc->txbuflock);
diff --git a/drivers/net/wireless/ath5k/base.h b/drivers/net/wireless/ath5k/base.h
index 1bd1d1f..fde51f1 100644
--- a/drivers/net/wireless/ath5k/base.h
+++ b/drivers/net/wireless/ath5k/base.h
@@ -131,6 +131,7 @@ struct ath_softc {
 	struct ieee80211_rate	rates[AR5K_MAX_RATES * NUM_IEEE80211_MODES];
 	enum ieee80211_if_types	opmode;
 	struct ath_hw		*ah;		/* Atheros HW */
+	unsigned int		pci_express : 1;/* indicates PCI Express */
 
 	int			debug;
 
diff --git a/drivers/net/wireless/ath5k/hw.c b/drivers/net/wireless/ath5k/hw.c
index 445fa96..5f2edce 100644
--- a/drivers/net/wireless/ath5k/hw.c
+++ b/drivers/net/wireless/ath5k/hw.c
@@ -240,6 +240,28 @@ struct ath_hw *ath5k_hw_attach(u16 device,
 		 */
 		hal->ah_single_chip = true;
 		break;
+	case PCI_DEVICE_ID_ATHEROS_AR5212_IBM:
+		/*
+		* IBM ThinkPads use the same device ID for different
+		* chipset versions... we differentiate by pci_express
+		*/
+		if (sc->pci_express) {
+			/*
+			* PCI Express "Mini Card" interface based on the
+			* AR5424 chipset.
+			*/
+			hal->ah_single_chip = true;
+			/* not yet supported */
+			dev_info(&sc->pdev->dev, 
+				"PCI-Express AR5424 not yet supported\n");
+				ret = -EINVAL;
+			goto err_free;
+		} else {
+			/* Classic Mini PCI interface based on AR5212 */
+			hal->ah_single_chip = false;
+		}
+		break;
+
 	default:
 		/*
 		 * Multi chip solutions
-- 
1.5.2.5

-
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]
  Powered by Linux