diff options
author | Damien Bergamini <damien@cvs.openbsd.org> | 2011-01-09 15:53:07 +0000 |
---|---|---|
committer | Damien Bergamini <damien@cvs.openbsd.org> | 2011-01-09 15:53:07 +0000 |
commit | 836a87aa82c3a1086fd81d2ba63feaa6b6286009 (patch) | |
tree | 671988e3a4afb4c47f8ec4267486769d70a33ef1 | |
parent | f629e40b01331727787436fda298ba663ef36f36 (diff) |
trust the Tx/Rx chains masks in ROM except for the 4965 and 5100
which are known to have broken ROMs.
-rw-r--r-- | sys/dev/pci/if_iwn.c | 27 |
1 files changed, 5 insertions, 22 deletions
diff --git a/sys/dev/pci/if_iwn.c b/sys/dev/pci/if_iwn.c index a0bf3f5be56..da902a12d7d 100644 --- a/sys/dev/pci/if_iwn.c +++ b/sys/dev/pci/if_iwn.c @@ -1,4 +1,4 @@ -/* $OpenBSD: if_iwn.c,v 1.107 2011/01/09 15:45:37 damien Exp $ */ +/* $OpenBSD: if_iwn.c,v 1.108 2011/01/09 15:53:06 damien Exp $ */ /*- * Copyright (c) 2007-2010 Damien Bergamini <damien.bergamini@free.fr> @@ -561,6 +561,7 @@ iwn4965_attach(struct iwn_softc *sc, pci_product_id_t pid) sc->sched_txfact_addr = IWN4965_SCHED_TXFACT; sc->limits = &iwn4965_sensitivity_limits; sc->fwname = "iwn-4965"; + /* Override chains masks, ROM is known to be broken. */ sc->txchainmask = IWN_ANT_AB; sc->rxchainmask = IWN_ANT_ABC; @@ -602,55 +603,37 @@ iwn5000_attach(struct iwn_softc *sc, pci_product_id_t pid) case IWN_HW_REV_TYPE_5100: sc->limits = &iwn5000_sensitivity_limits; sc->fwname = "iwn-5000"; + /* Override chains masks, ROM is known to be broken. */ sc->txchainmask = IWN_ANT_B; sc->rxchainmask = IWN_ANT_AB; break; case IWN_HW_REV_TYPE_5150: sc->limits = &iwn5150_sensitivity_limits; sc->fwname = "iwn-5150"; - sc->txchainmask = IWN_ANT_A; - sc->rxchainmask = IWN_ANT_AB; break; case IWN_HW_REV_TYPE_5300: case IWN_HW_REV_TYPE_5350: sc->limits = &iwn5000_sensitivity_limits; sc->fwname = "iwn-5000"; - sc->txchainmask = IWN_ANT_ABC; - sc->rxchainmask = IWN_ANT_ABC; break; case IWN_HW_REV_TYPE_1000: sc->limits = &iwn1000_sensitivity_limits; sc->fwname = "iwn-1000"; - sc->txchainmask = IWN_ANT_A; - sc->rxchainmask = IWN_ANT_AB; break; case IWN_HW_REV_TYPE_6000: sc->limits = &iwn6000_sensitivity_limits; sc->fwname = "iwn-6000"; - switch (pid) { - case PCI_PRODUCT_INTEL_WL_6200_1: - case PCI_PRODUCT_INTEL_WL_6200_2: + if (pid == PCI_PRODUCT_INTEL_WL_6200_1 || + pid == PCI_PRODUCT_INTEL_WL_6200_2) sc->sc_flags |= IWN_FLAG_INTERNAL_PA; - sc->txchainmask = IWN_ANT_BC; - sc->rxchainmask = IWN_ANT_BC; - break; - default: - sc->txchainmask = IWN_ANT_ABC; - sc->rxchainmask = IWN_ANT_ABC; - break; - } break; case IWN_HW_REV_TYPE_6050: sc->limits = &iwn6000_sensitivity_limits; sc->fwname = "iwn-6050"; - sc->txchainmask = IWN_ANT_AB; - sc->rxchainmask = IWN_ANT_AB; break; case IWN_HW_REV_TYPE_6005: sc->limits = &iwn6000_sensitivity_limits; sc->fwname = "iwn-6005"; - sc->txchainmask = IWN_ANT_AB; - sc->rxchainmask = IWN_ANT_AB; break; default: printf(": adapter type %d not supported\n", sc->hw_type); |