Module Name:    src
Committed By:   martin
Date:           Wed Jan 28 19:00:29 UTC 2015

Modified Files:
        src/distrib/sets/lists/base [netbsd-7]: mi
        src/external/intel-fw-public [netbsd-7]: Makefile
        src/share/man/man4 [netbsd-7]: iwn.4
        src/sys/dev/pci [netbsd-7]: if_iwn.c if_iwnreg.h if_iwnvar.h pcidevs
Added Files:
        src/external/intel-fw-public/iwl100 [netbsd-7]: Makefile
        src/external/intel-fw-public/iwl100/dist [netbsd-7]:
            LICENSE.iwlwifi-100-ucode README.iwlwifi-100-ucode
            iwlwifi-100-5.ucode
        src/external/intel-fw-public/iwl105 [netbsd-7]: Makefile
        src/external/intel-fw-public/iwl105/dist [netbsd-7]:
            LICENSE.iwlwifi-105-ucode README.iwlwifi-105-ucode
            iwlwifi-105-6.ucode
        src/external/intel-fw-public/iwl135 [netbsd-7]: Makefile
        src/external/intel-fw-public/iwl135/dist [netbsd-7]:
            LICENSE.iwlwifi-135-ucode README.iwlwifi-135-ucode
            iwlwifi-135-6.ucode
        src/external/intel-fw-public/iwl2000 [netbsd-7]: Makefile
        src/external/intel-fw-public/iwl2000/dist [netbsd-7]:
            LICENSE.iwlwifi-2000-ucode README.iwlwifi-2000-ucode
            iwlwifi-2000-6.ucode
        src/external/intel-fw-public/iwl2030 [netbsd-7]: Makefile
        src/external/intel-fw-public/iwl2030/dist [netbsd-7]:
            LICENSE.iwlwifi-2030-ucode README.iwlwifi-2030-ucode
            iwlwifi-2030-6.ucode

Log Message:
Pull up following revision(s) (requested by nonaka in ticket #467):
        external/intel-fw-public/iwl2030/dist/iwlwifi-2030-6.ucode: revision 1.1
        distrib/sets/lists/base/mi: revision 1.1091
        share/man/man4/iwn.4: revision 1.13
        external/intel-fw-public/iwl100/Makefile: revision 1.1
        external/intel-fw-public/iwl2030/Makefile: revision 1.1
        external/intel-fw-public/iwl135/Makefile: revision 1.1
        sys/dev/pci/pcidevs: revision 1.1205
        external/intel-fw-public/Makefile: revision 1.8
        external/intel-fw-public/iwl135/dist/iwlwifi-135-6.ucode: revision 1.1
        external/intel-fw-public/iwl2030/dist/LICENSE.iwlwifi-2030-ucode: 
revision 1.1
        external/intel-fw-public/iwl105/dist/LICENSE.iwlwifi-105-ucode: 
revision 1.1
        external/intel-fw-public/iwl2000/dist/LICENSE.iwlwifi-2000-ucode: 
revision 1.1
        external/intel-fw-public/iwl100/dist/iwlwifi-100-5.ucode: revision 1.1
        external/intel-fw-public/iwl135/dist/LICENSE.iwlwifi-135-ucode: 
revision 1.1
        external/intel-fw-public/iwl135/dist/README.iwlwifi-135-ucode: revision 
1.1
        sys/dev/pci/if_iwnvar.h: revision 1.16
        external/intel-fw-public/iwl2000/dist/iwlwifi-2000-6.ucode: revision 1.1
        external/intel-fw-public/iwl100/dist/README.iwlwifi-100-ucode: revision 
1.1
        sys/dev/pci/if_iwn.c: revision 1.72
        sys/dev/pci/if_iwnreg.h: revision 1.14
        external/intel-fw-public/iwl105/dist/README.iwlwifi-105-ucode: revision 
1.1
        external/intel-fw-public/iwl100/dist/LICENSE.iwlwifi-100-ucode: 
revision 1.1
        external/intel-fw-public/iwl2000/dist/README.iwlwifi-2000-ucode: 
revision 1.1
        external/intel-fw-public/iwl105/dist/iwlwifi-105-6.ucode: revision 1.1
        external/intel-fw-public/iwl2000/Makefile: revision 1.1
        external/intel-fw-public/iwl105/Makefile: revision 1.1
        external/intel-fw-public/iwl2030/dist/README.iwlwifi-2030-ucode: 
revision 1.1
Add some Intel Wi-Fi devices.
Add support for Intel Centrino Wireless-N 100/105/130/135/2200/2230.
>From OpenBSD.


To generate a diff of this commit:
cvs rdiff -u -r1.1087.2.2 -r1.1087.2.3 src/distrib/sets/lists/base/mi
cvs rdiff -u -r1.7 -r1.7.4.1 src/external/intel-fw-public/Makefile
cvs rdiff -u -r0 -r1.1.2.2 src/external/intel-fw-public/iwl100/Makefile
cvs rdiff -u -r0 -r1.1.2.2 \
    src/external/intel-fw-public/iwl100/dist/LICENSE.iwlwifi-100-ucode \
    src/external/intel-fw-public/iwl100/dist/README.iwlwifi-100-ucode \
    src/external/intel-fw-public/iwl100/dist/iwlwifi-100-5.ucode
cvs rdiff -u -r0 -r1.1.2.2 src/external/intel-fw-public/iwl105/Makefile
cvs rdiff -u -r0 -r1.1.2.2 \
    src/external/intel-fw-public/iwl105/dist/LICENSE.iwlwifi-105-ucode \
    src/external/intel-fw-public/iwl105/dist/README.iwlwifi-105-ucode \
    src/external/intel-fw-public/iwl105/dist/iwlwifi-105-6.ucode
cvs rdiff -u -r0 -r1.1.2.2 src/external/intel-fw-public/iwl135/Makefile
cvs rdiff -u -r0 -r1.1.2.2 \
    src/external/intel-fw-public/iwl135/dist/LICENSE.iwlwifi-135-ucode \
    src/external/intel-fw-public/iwl135/dist/README.iwlwifi-135-ucode \
    src/external/intel-fw-public/iwl135/dist/iwlwifi-135-6.ucode
cvs rdiff -u -r0 -r1.1.2.2 src/external/intel-fw-public/iwl2000/Makefile
cvs rdiff -u -r0 -r1.1.2.2 \
    src/external/intel-fw-public/iwl2000/dist/LICENSE.iwlwifi-2000-ucode \
    src/external/intel-fw-public/iwl2000/dist/README.iwlwifi-2000-ucode \
    src/external/intel-fw-public/iwl2000/dist/iwlwifi-2000-6.ucode
cvs rdiff -u -r0 -r1.1.2.2 src/external/intel-fw-public/iwl2030/Makefile
cvs rdiff -u -r0 -r1.1.2.2 \
    src/external/intel-fw-public/iwl2030/dist/LICENSE.iwlwifi-2030-ucode \
    src/external/intel-fw-public/iwl2030/dist/README.iwlwifi-2030-ucode \
    src/external/intel-fw-public/iwl2030/dist/iwlwifi-2030-6.ucode
cvs rdiff -u -r1.12 -r1.12.4.1 src/share/man/man4/iwn.4
cvs rdiff -u -r1.71 -r1.71.4.1 src/sys/dev/pci/if_iwn.c
cvs rdiff -u -r1.13 -r1.13.4.1 src/sys/dev/pci/if_iwnreg.h
cvs rdiff -u -r1.15 -r1.15.4.1 src/sys/dev/pci/if_iwnvar.h
cvs rdiff -u -r1.1199.2.2 -r1.1199.2.3 src/sys/dev/pci/pcidevs

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/distrib/sets/lists/base/mi
diff -u src/distrib/sets/lists/base/mi:1.1087.2.2 src/distrib/sets/lists/base/mi:1.1087.2.3
--- src/distrib/sets/lists/base/mi:1.1087.2.2	Mon Jan 12 10:22:22 2015
+++ src/distrib/sets/lists/base/mi	Wed Jan 28 19:00:28 2015
@@ -1,4 +1,4 @@
-# $NetBSD: mi,v 1.1087.2.2 2015/01/12 10:22:22 martin Exp $
+# $NetBSD: mi,v 1.1087.2.3 2015/01/28 19:00:28 martin Exp $
 #
 # Note:	Don't delete entries from here - mark them as "obsolete" instead,
 #	unless otherwise stated below.
@@ -146,7 +146,12 @@
 ./libdata/firmware/if_iwi/ipw2200-ibss.fw	base-firmware-root
 ./libdata/firmware/if_iwi/ipw2200-sniffer.fw	base-firmware-root
 ./libdata/firmware/if_iwn			base-firmware-root
+./libdata/firmware/if_iwn/LICENSE.iwlwifi-100-ucode	base-firmware-root
 ./libdata/firmware/if_iwn/LICENSE.iwlwifi-1000-ucode	base-firmware-root
+./libdata/firmware/if_iwn/LICENSE.iwlwifi-105-ucode	base-firmware-root
+./libdata/firmware/if_iwn/LICENSE.iwlwifi-135-ucode	base-firmware-root
+./libdata/firmware/if_iwn/LICENSE.iwlwifi-2000-ucode	base-firmware-root
+./libdata/firmware/if_iwn/LICENSE.iwlwifi-2030-ucode	base-firmware-root
 ./libdata/firmware/if_iwn/LICENSE.iwlwifi-4965-ucode	base-firmware-root
 ./libdata/firmware/if_iwn/LICENSE.iwlwifi-5000-ucode	base-firmware-root
 ./libdata/firmware/if_iwn/LICENSE.iwlwifi-5150-ucode	base-firmware-root
@@ -154,7 +159,12 @@
 ./libdata/firmware/if_iwn/LICENSE.iwlwifi-6000g2a-ucode	base-firmware-root
 ./libdata/firmware/if_iwn/LICENSE.iwlwifi-6000g2b-ucode	base-firmware-root
 ./libdata/firmware/if_iwn/LICENSE.iwlwifi-6050-ucode	base-firmware-root
+./libdata/firmware/if_iwn/README.iwlwifi-100-ucode	base-firmware-root
 ./libdata/firmware/if_iwn/README.iwlwifi-1000-ucode	base-firmware-root
+./libdata/firmware/if_iwn/README.iwlwifi-105-ucode	base-firmware-root
+./libdata/firmware/if_iwn/README.iwlwifi-135-ucode	base-firmware-root
+./libdata/firmware/if_iwn/README.iwlwifi-2000-ucode	base-firmware-root
+./libdata/firmware/if_iwn/README.iwlwifi-2030-ucode	base-firmware-root
 ./libdata/firmware/if_iwn/README.iwlwifi-4965-ucode	base-firmware-root
 ./libdata/firmware/if_iwn/README.iwlwifi-5000-ucode	base-firmware-root
 ./libdata/firmware/if_iwn/README.iwlwifi-5150-ucode	base-firmware-root
@@ -162,7 +172,12 @@
 ./libdata/firmware/if_iwn/README.iwlwifi-6000g2a-ucode	base-firmware-root
 ./libdata/firmware/if_iwn/README.iwlwifi-6000g2b-ucode	base-firmware-root
 ./libdata/firmware/if_iwn/README.iwlwifi-6050-ucode	base-firmware-root
+./libdata/firmware/if_iwn/iwlwifi-100-5.ucode	base-firmware-root
 ./libdata/firmware/if_iwn/iwlwifi-1000-3.ucode	base-firmware-root
+./libdata/firmware/if_iwn/iwlwifi-105-6.ucode	base-firmware-root
+./libdata/firmware/if_iwn/iwlwifi-135-6.ucode	base-firmware-root
+./libdata/firmware/if_iwn/iwlwifi-2000-6.ucode	base-firmware-root
+./libdata/firmware/if_iwn/iwlwifi-2030-6.ucode	base-firmware-root
 ./libdata/firmware/if_iwn/iwlwifi-4965-1.ucode	base-obsolete		obsolete
 ./libdata/firmware/if_iwn/iwlwifi-4965-2.ucode	base-firmware-root
 ./libdata/firmware/if_iwn/iwlwifi-5000-1.ucode	base-obsolete		obsolete

Index: src/external/intel-fw-public/Makefile
diff -u src/external/intel-fw-public/Makefile:1.7 src/external/intel-fw-public/Makefile:1.7.4.1
--- src/external/intel-fw-public/Makefile:1.7	Sun Jul 28 11:46:24 2013
+++ src/external/intel-fw-public/Makefile	Wed Jan 28 19:00:29 2015
@@ -1,6 +1,6 @@
-# $NetBSD: Makefile,v 1.7 2013/07/28 11:46:24 prlw1 Exp $
+# $NetBSD: Makefile,v 1.7.4.1 2015/01/28 19:00:29 martin Exp $
 
-SUBDIR+=	ipw3945 iwl1000 iwl4965 iwl5000 iwl5150 iwl6000 iwl6005 \
-		iwl6030 iwl6050
+SUBDIR+=	ipw3945 iwl100 iwl105 iwl135 iwl1000 iwl2000 iwl2030 \
+		iwl4965 iwl5000 iwl5150 iwl6000 iwl6005 iwl6030 iwl6050
 
 .include <bsd.subdir.mk>

Index: src/share/man/man4/iwn.4
diff -u src/share/man/man4/iwn.4:1.12 src/share/man/man4/iwn.4:1.12.4.1
--- src/share/man/man4/iwn.4:1.12	Tue Mar 18 18:20:39 2014
+++ src/share/man/man4/iwn.4	Wed Jan 28 19:00:28 2015
@@ -1,4 +1,4 @@
-.\" $NetBSD: iwn.4,v 1.12 2014/03/18 18:20:39 riastradh Exp $
+.\" $NetBSD: iwn.4,v 1.12.4.1 2015/01/28 19:00:28 martin Exp $
 .\"
 .\" Copyright (c) 2007,2008
 .\"	Damien Bergamini <damien.bergam...@free.fr>. All rights reserved.
@@ -15,12 +15,12 @@
 .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
 .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 .\"
-.Dd February 25, 2012
+.Dd October 30, 2014
 .Dt IWN 4
 .Os
 .Sh NAME
 .Nm iwn
-.Nd Intel Wireless 4965AGN and 5100AGN IEEE 802.11 driver
+.Nd Intel WiFi Link and Centrino IEEE 802.11 wireless network driver
 .Sh SYNOPSIS
 .Cd "iwn* at pci? dev ? function ?"
 .Sh DESCRIPTION
@@ -28,7 +28,53 @@ The
 .Nm
 driver provides support for
 .Tn Intel
-Wireless WiFi Link 4965AGN and 5100AGN Mini PCI Express network adapters.
+Wireless WiFi Link 4965/5000/1000 and Centrino Wireless-N 1000/2000/6000
+Series PCIe Mini Card network adapters.
+.Pp
+The Intel Wireless WiFi Link 4965AGN (codenamed Kedron) is a PCIe
+Mini Card network adapter that operates in the 2GHz and 5GHz spectra.
+It has 2 transmit paths and 3 receiver paths (2T3R).
+It is part of the fourth-generation Centrino platform (codenamed Santa Rosa).
+.Pp
+The Intel WiFi Link 5000 series is a family of wireless network adapters
+that operate in the 2GHz and 5GHz spectra.
+They are part of the fifth-generation Centrino platform (codenamed Montevina).
+These adapters are available in both PCIe Mini Card (model code ending by MMW)
+and PCIe Half Mini Card (model code ending by HMW) form factor.
+The
+.Nm
+driver provides support for the 5100 (codenamed Shirley Peak 1x2),
+5150 (codenamed Echo Peak-V), 5300 (codenamed Shirley Peak 3x3) and
+5350 (codenamed Echo Peak-P) adapters.
+The 5100 and 5150 adapters have 1 transmit path and 2 receiver paths (1T2R).
+The 5300 and 5350 adapters have 3 transmit paths and 3 receiver paths (3T3R).
+.Pp
+The Intel WiFi Link 1000 (codenamed Condor Peak) is a single-chip wireless
+network adapter that operates in the 2GHz spectrum.
+It is part of the sixth-generation Centrino platform (codenamed Calpella).
+It is available in both PCIe Mini Card (model code ending by MMW)
+and PCIe Half Mini Card (model code ending by HMW) form factor.
+It has 1 transmit path and 2 receiver paths (1T2R).
+.Pp
+The Intel Centrino Ultimate-N 6300 (codenamed Puma Peak 3x3) is a single-chip
+wireless network adapter that operates in the 2GHz and 5GHz spectra.
+It has 3 transmit paths and 3 receiver paths (3T3R).
+The Intel Centrino Advanced-N 6250 (codenamed Kilmer Peak) is a combo
+WiFi/WiMAX network adapter that operates in the 2GHz and 5GHz spectra.
+It has 2 transmit paths and 2 receiver paths (2T2R).
+The Intel Centrino Advanced-N 6200 (codenamed Puma Peak 2x2) is
+a wireless network adapter that operates in the 2GHz and 5GHz spectra.
+It has 2 transmit paths and 2 receiver paths (2T2R).
+These adapters are part of the sixth-generation Centrino platform
+(codenamed Calpella).
+.Pp
+The Intel Centrino Wireless-N 2230 (codename Jackson Peak) and Intel
+Centrino Wireless-N 2200 (codename Marble Peak) are wireless network
+adapters that operate in the 2GHz spectrum.
+These adapters have 2 transmit paths and 2 receiver paths (2T2R).
+The Intel Centrino Wireless-N 135 and Intel Centrino Wireless-N 105
+(codename Canyon Peak) also operate in the 2GHz spectrum.
+These adapters have 1 transmit path and 1 receiver path (1T1R).
 .Pp
 By default, the
 .Nm
@@ -138,7 +184,7 @@ This is the default mode of operation.
 .El
 .Sh EXAMPLES
 The following
-.\" .Xr hostname.if 5 ,
+.Xr ifconfig.if 5 ,
 example configures iwn0 to join whatever network is available on boot,
 using WEP key
 .Dq 0x1deadbeef1 ,
@@ -199,7 +245,7 @@ The driver will reset the hardware.
 .Xr intro 4 ,
 .Xr netintro 4 ,
 .Xr pci 4 ,
-.\" .Xr hostname.if 5 ,
+.Xr ifconfig.if 5 ,
 .Xr ifconfig 8
 .Sh AUTHORS
 The

Index: src/sys/dev/pci/if_iwn.c
diff -u src/sys/dev/pci/if_iwn.c:1.71 src/sys/dev/pci/if_iwn.c:1.71.4.1
--- src/sys/dev/pci/if_iwn.c:1.71	Sat Mar 29 19:28:24 2014
+++ src/sys/dev/pci/if_iwn.c	Wed Jan 28 19:00:28 2015
@@ -1,5 +1,5 @@
-/*	$NetBSD: if_iwn.c,v 1.71 2014/03/29 19:28:24 christos Exp $	*/
-/*	$OpenBSD: if_iwn.c,v 1.119 2013/05/29 23:16:52 yuo Exp $	*/
+/*	$NetBSD: if_iwn.c,v 1.71.4.1 2015/01/28 19:00:28 martin Exp $	*/
+/*	$OpenBSD: if_iwn.c,v 1.135 2014/09/10 07:22:09 dcoppa Exp $	*/
 
 /*-
  * Copyright (c) 2007-2010 Damien Bergamini <damien.bergam...@free.fr>
@@ -22,7 +22,7 @@
  * adapters.
  */
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: if_iwn.c,v 1.71 2014/03/29 19:28:24 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: if_iwn.c,v 1.71.4.1 2015/01/28 19:00:28 martin Exp $");
 
 #define IWN_USE_RBUF	/* Use local storage for RX */
 #undef IWN_HWCRYPTO	/* XXX does not even compile yet */
@@ -103,6 +103,19 @@ static const pci_product_id_t iwn_device
 	PCI_PRODUCT_INTEL_WIFI_LINK_6230_1,
 	PCI_PRODUCT_INTEL_WIFI_LINK_6230_2,
 	PCI_PRODUCT_INTEL_WIFI_LINK_6235,
+	PCI_PRODUCT_INTEL_WIFI_LINK_6235_2,
+	PCI_PRODUCT_INTEL_WIFI_LINK_100_1,
+	PCI_PRODUCT_INTEL_WIFI_LINK_100_2,
+	PCI_PRODUCT_INTEL_WIFI_LINK_130_1,
+	PCI_PRODUCT_INTEL_WIFI_LINK_130_2,
+	PCI_PRODUCT_INTEL_WIFI_LINK_2230_1,
+	PCI_PRODUCT_INTEL_WIFI_LINK_2230_2,
+	PCI_PRODUCT_INTEL_WIFI_LINK_2200_1,
+	PCI_PRODUCT_INTEL_WIFI_LINK_2200_2,
+	PCI_PRODUCT_INTEL_WIFI_LINK_135_1,
+	PCI_PRODUCT_INTEL_WIFI_LINK_135_2,
+	PCI_PRODUCT_INTEL_WIFI_LINK_105_1,
+	PCI_PRODUCT_INTEL_WIFI_LINK_105_2,
 };
 
 /*
@@ -235,8 +248,13 @@ static int	iwn5000_runtime_calib(struct 
 static int	iwn_config_bt_coex_bluetooth(struct iwn_softc *);
 static int	iwn_config_bt_coex_prio_table(struct iwn_softc *);
 static int	iwn_config_bt_coex_adv1(struct iwn_softc *);
+static int	iwn_config_bt_coex_adv2(struct iwn_softc *);
 
 static int	iwn_config(struct iwn_softc *);
+static uint16_t	iwn_get_active_dwell_time(struct iwn_softc *, uint16_t,
+		    uint8_t);
+static uint16_t	iwn_limit_dwell(struct iwn_softc *, uint16_t);
+static uint16_t	iwn_get_passive_dwell_time(struct iwn_softc *, uint16_t);
 static int	iwn_scan(struct iwn_softc *, uint16_t);
 static int	iwn_auth(struct iwn_softc *);
 static int	iwn_run(struct iwn_softc *);
@@ -268,6 +286,8 @@ static void	iwn5000_ampdu_tx_stop(struct
 static int	iwn5000_query_calibration(struct iwn_softc *);
 static int	iwn5000_send_calibration(struct iwn_softc *);
 static int	iwn5000_send_wimax_coex(struct iwn_softc *);
+static int	iwn6000_temp_offset_calib(struct iwn_softc *);
+static int	iwn2000_temp_offset_calib(struct iwn_softc *);
 static int	iwn4965_post_alive(struct iwn_softc *);
 static int	iwn5000_post_alive(struct iwn_softc *);
 static int	iwn4965_load_bootcode(struct iwn_softc *, const uint8_t *,
@@ -710,7 +730,11 @@ iwn5000_attach(struct iwn_softc *sc, pci
 		break;
 	case IWN_HW_REV_TYPE_1000:
 		sc->limits = &iwn1000_sensitivity_limits;
-		sc->fwname = "iwlwifi-1000-3.ucode";
+		if (pid == PCI_PRODUCT_INTEL_WIFI_LINK_100_1 ||
+		    pid == PCI_PRODUCT_INTEL_WIFI_LINK_100_2)
+			sc->fwname = "iwlwifi-100-5.ucode";
+		else
+			sc->fwname = "iwlwifi-1000-3.ucode";
 		break;
 	case IWN_HW_REV_TYPE_6000:
 		sc->limits = &iwn6000_sensitivity_limits;
@@ -734,13 +758,32 @@ iwn5000_attach(struct iwn_softc *sc, pci
 		    pid == PCI_PRODUCT_INTEL_WIFI_LINK_1030_2 ||
 		    pid == PCI_PRODUCT_INTEL_WIFI_LINK_6230_1 ||
 		    pid == PCI_PRODUCT_INTEL_WIFI_LINK_6230_2 ||
-		    pid == PCI_PRODUCT_INTEL_WIFI_LINK_6235) {
+		    pid == PCI_PRODUCT_INTEL_WIFI_LINK_6235   ||
+		    pid == PCI_PRODUCT_INTEL_WIFI_LINK_6235_2) {
 			sc->fwname = "iwlwifi-6000g2b-6.ucode";
 			ops->config_bt_coex = iwn_config_bt_coex_adv1;
 		}
 		else
 			sc->fwname = "iwlwifi-6000g2a-5.ucode";
 		break;
+	case IWN_HW_REV_TYPE_2030:
+		sc->limits = &iwn2000_sensitivity_limits;
+		sc->fwname = "iwlwifi-2030-6.ucode";
+		ops->config_bt_coex = iwn_config_bt_coex_adv2;
+		break;
+	case IWN_HW_REV_TYPE_2000:
+		sc->limits = &iwn2000_sensitivity_limits;
+		sc->fwname = "iwlwifi-2000-6.ucode";
+		break;
+	case IWN_HW_REV_TYPE_135:
+		sc->limits = &iwn2000_sensitivity_limits;
+		sc->fwname = "iwlwifi-135-6.ucode";
+		ops->config_bt_coex = iwn_config_bt_coex_adv2;
+		break;
+	case IWN_HW_REV_TYPE_105:
+		sc->limits = &iwn2000_sensitivity_limits;
+		sc->fwname = "iwlwifi-105-6.ucode";
+		break;
 	default:
 		aprint_normal(": adapter type %d not supported\n", sc->hw_type);
 		return ENOTSUP;
@@ -1615,6 +1658,17 @@ iwn5000_read_eeprom(struct iwn_softc *sc
 	    hdr.version, hdr.pa_type, le16toh(hdr.volt)));
 	sc->calib_ver = hdr.version;
 
+	if (sc->hw_type == IWN_HW_REV_TYPE_2030 ||
+	    sc->hw_type == IWN_HW_REV_TYPE_2000 ||
+	    sc->hw_type == IWN_HW_REV_TYPE_135  ||
+	    sc->hw_type == IWN_HW_REV_TYPE_105) {
+		sc->eeprom_voltage = le16toh(hdr.volt);
+		iwn_read_prom_data(sc, base + IWN5000_EEPROM_TEMP, &val, 2);
+		sc->eeprom_temp = le16toh(val);
+		iwn_read_prom_data(sc, base + IWN2000_EEPROM_RAWTEMP, &val, 2);
+		sc->eeprom_rawtemp = le16toh(val);
+	}
+
 	if (sc->hw_type == IWN_HW_REV_TYPE_5150) {
 		/* Compute temperature offset. */
 		iwn_read_prom_data(sc, base + IWN5000_EEPROM_TEMP, &val, 2);
@@ -2111,7 +2165,11 @@ iwn5000_rx_calib_results(struct iwn_soft
 
 	switch (calib->code) {
 	case IWN5000_PHY_CALIB_DC:
-		if (sc->hw_type == IWN_HW_REV_TYPE_5150)
+		if (sc->hw_type == IWN_HW_REV_TYPE_5150 ||
+		    sc->hw_type == IWN_HW_REV_TYPE_2030 ||
+		    sc->hw_type == IWN_HW_REV_TYPE_2000 ||
+		    sc->hw_type == IWN_HW_REV_TYPE_135  ||
+		    sc->hw_type == IWN_HW_REV_TYPE_105)
 			idx = 0;
 		break;
 	case IWN5000_PHY_CALIB_LO:
@@ -3810,7 +3868,7 @@ iwn5000_init_gains(struct iwn_softc *sc)
 	struct iwn_phy_calib cmd;
 
 	memset(&cmd, 0, sizeof cmd);
-	cmd.code = IWN5000_PHY_CALIB_RESET_NOISE_GAIN;
+	cmd.code = sc->reset_noise_gain;
 	cmd.ngroups = 1;
 	cmd.isvalid = 1;
 	DPRINTF(("setting initial differential gains\n"));
@@ -3860,7 +3918,7 @@ iwn5000_set_gains(struct iwn_softc *sc)
 	div = (sc->hw_type == IWN_HW_REV_TYPE_6050) ? 20 : 30;
 
 	memset(&cmd, 0, sizeof cmd);
-	cmd.code = IWN5000_PHY_CALIB_NOISE_GAIN;
+	cmd.code = sc->noise_gain;
 	cmd.ngroups = 1;
 	cmd.isvalid = 1;
 	/* Get first available RX antenna as referential. */
@@ -4036,9 +4094,11 @@ static int
 iwn_send_sensitivity(struct iwn_softc *sc)
 {
 	struct iwn_calib_state *calib = &sc->calib;
-	struct iwn_sensitivity_cmd cmd;
+	struct iwn_enhanced_sensitivity_cmd cmd;
+	int len;
 
 	memset(&cmd, 0, sizeof cmd);
+	len = sizeof (struct iwn_sensitivity_cmd);
 	cmd.which = IWN_SENSITIVITY_WORKTBL;
 	/* OFDM modulation. */
 	cmd.corr_ofdm_x1     = htole16(calib->ofdm_x1);
@@ -4054,12 +4114,24 @@ iwn_send_sensitivity(struct iwn_softc *s
 	/* Barker modulation: use default values. */
 	cmd.corr_barker      = htole16(190);
 	cmd.corr_barker_mrc  = htole16(390);
-
+	if (!(sc->sc_flags & IWN_FLAG_ENH_SENS))
+		goto send;
+	/* Enhanced sensitivity settings. */
+	len = sizeof (struct iwn_enhanced_sensitivity_cmd);
+	cmd.ofdm_det_slope_mrc = htole16(668);
+	cmd.ofdm_det_icept_mrc = htole16(4);
+	cmd.ofdm_det_slope     = htole16(486);
+	cmd.ofdm_det_icept     = htole16(37);
+	cmd.cck_det_slope_mrc  = htole16(853);
+	cmd.cck_det_icept_mrc  = htole16(4);
+	cmd.cck_det_slope      = htole16(476);
+	cmd.cck_det_icept      = htole16(99);
+send:
 	DPRINTFN(2, ("setting sensitivity %d/%d/%d/%d/%d/%d/%d\n",
 	    calib->ofdm_x1, calib->ofdm_mrc_x1, calib->ofdm_x4,
 	    calib->ofdm_mrc_x4, calib->cck_x4, calib->cck_mrc_x4,
 	    calib->energy_cck));
-	return iwn_cmd(sc, IWN_CMD_SET_SENSITIVITY, &cmd, sizeof cmd, 1);
+	return iwn_cmd(sc, IWN_CMD_SET_SENSITIVITY, &cmd, len, 1);
 }
 
 /*
@@ -4165,40 +4237,37 @@ iwn_config_bt_coex_prio_table(struct iwn
 }
 
 static int
-iwn_config_bt_coex_adv1(struct iwn_softc *sc)
+iwn_config_bt_coex_adv_config(struct iwn_softc *sc, struct iwn_bt_basic *basic,
+    size_t len)
 {
+	struct iwn_btcoex_prot btprot;
 	int error;
-	struct iwn_bt_adv1 d;
 
-	memset(&d, 0, sizeof d);
-	d.basic.bt.flags = IWN_BT_COEX_ENABLE;
-	d.basic.bt.lead_time = IWN_BT_LEAD_TIME_DEF;
-	d.basic.bt.max_kill = IWN_BT_MAX_KILL_DEF;
-	d.basic.bt.bt3_timer_t7_value = IWN_BT_BT3_T7_DEF;
-	d.basic.bt.kill_ack_mask = IWN_BT_KILL_ACK_MASK_DEF;
-	d.basic.bt.kill_cts_mask = IWN_BT_KILL_CTS_MASK_DEF;
-	d.basic.bt3_prio_sample_time = IWN_BT_BT3_PRIO_SAMPLE_DEF;
-	d.basic.bt3_timer_t2_value = IWN_BT_BT3_T2_DEF;
-	d.basic.bt3_lookup_table[ 0] = htole32(0xaaaaaaaa); /* Normal */
-	d.basic.bt3_lookup_table[ 1] = htole32(0xaaaaaaaa);
-	d.basic.bt3_lookup_table[ 2] = htole32(0xaeaaaaaa);
-	d.basic.bt3_lookup_table[ 3] = htole32(0xaaaaaaaa);
-	d.basic.bt3_lookup_table[ 4] = htole32(0xcc00ff28);
-	d.basic.bt3_lookup_table[ 5] = htole32(0x0000aaaa);
-	d.basic.bt3_lookup_table[ 6] = htole32(0xcc00aaaa);
-	d.basic.bt3_lookup_table[ 7] = htole32(0x0000aaaa);
-	d.basic.bt3_lookup_table[ 8] = htole32(0xc0004000);
-	d.basic.bt3_lookup_table[ 9] = htole32(0x00004000);
-	d.basic.bt3_lookup_table[10] = htole32(0xf0005000);
-	d.basic.bt3_lookup_table[11] = htole32(0xf0005000);
-	d.basic.reduce_txpower = 0; /* as not implemented */
-	d.basic.valid = IWN_BT_ALL_VALID_MASK;
-	d.prio_boost = IWN_BT_PRIO_BOOST_DEF;
-	d.tx_prio_boost = 0;
-	d.rx_prio_boost = 0;
+	basic->bt.flags = IWN_BT_COEX_ENABLE;
+	basic->bt.lead_time = IWN_BT_LEAD_TIME_DEF;
+	basic->bt.max_kill = IWN_BT_MAX_KILL_DEF;
+	basic->bt.bt3_timer_t7_value = IWN_BT_BT3_T7_DEF;
+	basic->bt.kill_ack_mask = IWN_BT_KILL_ACK_MASK_DEF;
+	basic->bt.kill_cts_mask = IWN_BT_KILL_CTS_MASK_DEF;
+	basic->bt3_prio_sample_time = IWN_BT_BT3_PRIO_SAMPLE_DEF;
+	basic->bt3_timer_t2_value = IWN_BT_BT3_T2_DEF;
+	basic->bt3_lookup_table[ 0] = htole32(0xaaaaaaaa); /* Normal */
+	basic->bt3_lookup_table[ 1] = htole32(0xaaaaaaaa);
+	basic->bt3_lookup_table[ 2] = htole32(0xaeaaaaaa);
+	basic->bt3_lookup_table[ 3] = htole32(0xaaaaaaaa);
+	basic->bt3_lookup_table[ 4] = htole32(0xcc00ff28);
+	basic->bt3_lookup_table[ 5] = htole32(0x0000aaaa);
+	basic->bt3_lookup_table[ 6] = htole32(0xcc00aaaa);
+	basic->bt3_lookup_table[ 7] = htole32(0x0000aaaa);
+	basic->bt3_lookup_table[ 8] = htole32(0xc0004000);
+	basic->bt3_lookup_table[ 9] = htole32(0x00004000);
+	basic->bt3_lookup_table[10] = htole32(0xf0005000);
+	basic->bt3_lookup_table[11] = htole32(0xf0005000);
+	basic->reduce_txpower = 0; /* as not implemented */
+	basic->valid = IWN_BT_ALL_VALID_MASK;
 
 	DPRINTF(("configuring advanced bluetooth coexistence v1\n"));
-	error = iwn_cmd(sc, IWN_CMD_BT_COEX, &d, sizeof d, 0);
+	error = iwn_cmd(sc, IWN_CMD_BT_COEX, basic, len, 0);
 	if (error != 0) {
 		aprint_error_dev(sc->sc_dev,
 			"could not configure advanced bluetooth coexistence\n");
@@ -4212,7 +4281,47 @@ iwn_config_bt_coex_adv1(struct iwn_softc
 		return error;
 	}
 
-	return error;
+	/* Force BT state machine change */
+	memset(&btprot, 0, sizeof btprot);
+	btprot.open = 1;
+	btprot.type = 1;
+	error = iwn_cmd(sc, IWN_CMD_BT_COEX_PROT, &btprot, sizeof btprot, 1);
+	if (error != 0) {
+		aprint_error_dev(sc->sc_dev, "could not open BT protcol\n");
+		return error;
+	}
+
+	btprot.open = 0;
+	error = iwn_cmd(sc, IWN_CMD_BT_COEX_PROT, &btprot, sizeof btprot, 1);
+	if (error != 0) {
+		aprint_error_dev(sc->sc_dev, "could not close BT protcol\n");
+		return error;
+	}
+	return 0;
+}
+
+static int
+iwn_config_bt_coex_adv1(struct iwn_softc *sc)
+{
+	struct iwn_bt_adv1 d;
+
+	memset(&d, 0, sizeof d);
+	d.prio_boost = IWN_BT_PRIO_BOOST_DEF;
+	d.tx_prio_boost = 0;
+	d.rx_prio_boost = 0;
+	return iwn_config_bt_coex_adv_config(sc, &d.basic, sizeof d);
+}
+
+static int
+iwn_config_bt_coex_adv2(struct iwn_softc *sc)
+{
+	struct iwn_bt_adv2 d;
+
+	memset(&d, 0, sizeof d);
+	d.prio_boost = IWN_BT_PRIO_BOOST_DEF;
+	d.tx_prio_boost = 0;
+	d.rx_prio_boost = 0;
+	return iwn_config_bt_coex_adv_config(sc, &d.basic, sizeof d);
 }
 
 static int
@@ -4232,6 +4341,28 @@ iwn_config(struct iwn_softc *sc)
 		return error;
 	}
 
+	/* Set radio temperature sensor offset. */
+	if (sc->hw_type == IWN_HW_REV_TYPE_6005) {
+		error = iwn6000_temp_offset_calib(sc);
+		if (error != 0) {
+			aprint_error_dev(sc->sc_dev,
+			    "could not set temperature offset\n");
+			return error;
+		}
+	}
+
+	if (sc->hw_type == IWN_HW_REV_TYPE_2030 ||
+	    sc->hw_type == IWN_HW_REV_TYPE_2000 ||
+	    sc->hw_type == IWN_HW_REV_TYPE_135  ||
+	    sc->hw_type == IWN_HW_REV_TYPE_105) {
+		error = iwn2000_temp_offset_calib(sc);
+		if (error != 0) {
+			aprint_error_dev(sc->sc_dev,
+			    "could not set temperature offset\n");
+			return error;
+		}
+	}
+
 	if (sc->hw_type == IWN_HW_REV_TYPE_6050 ||
 	    sc->hw_type == IWN_HW_REV_TYPE_6005) {
 		/* Configure runtime DC calibration. */
@@ -4325,6 +4456,63 @@ iwn_config(struct iwn_softc *sc)
 	return 0;
 }
 
+static uint16_t
+iwn_get_active_dwell_time(struct iwn_softc *sc, uint16_t flags,
+    uint8_t n_probes)
+{
+	/* No channel? Default to 2GHz settings */
+	if (flags & IEEE80211_CHAN_2GHZ)
+		return IWN_ACTIVE_DWELL_TIME_2GHZ +
+		    IWN_ACTIVE_DWELL_FACTOR_2GHZ * (n_probes + 1);
+
+	/* 5GHz dwell time */
+	return IWN_ACTIVE_DWELL_TIME_5GHZ +
+	    IWN_ACTIVE_DWELL_FACTOR_5GHZ * (n_probes + 1);
+}
+
+/*
+ * Limit the total dwell time to 85% of the beacon interval.
+ *
+ * Returns the dwell time in milliseconds.
+ */
+static uint16_t
+iwn_limit_dwell(struct iwn_softc *sc, uint16_t dwell_time)
+{
+	struct ieee80211com *ic = &sc->sc_ic;
+	struct ieee80211_node *ni = ic->ic_bss;
+	int bintval = 0;
+
+	/* bintval is in TU (1.024mS) */
+	if (ni != NULL)
+		bintval = ni->ni_intval;
+
+	/*
+	 * If it's non-zero, we should calculate the minimum of
+	 * it and the DWELL_BASE.
+	 *
+	 * XXX Yes, the math should take into account that bintval
+	 * is 1.024mS, not 1mS..
+	 */
+	if (bintval > 0)
+		return MIN(IWN_PASSIVE_DWELL_BASE, ((bintval * 85) / 100));
+
+	/* No association context? Default */
+	return IWN_PASSIVE_DWELL_BASE;
+}
+
+static uint16_t
+iwn_get_passive_dwell_time(struct iwn_softc *sc, uint16_t flags)
+{
+	uint16_t passive;
+	if (flags & IEEE80211_CHAN_2GHZ)
+		passive = IWN_PASSIVE_DWELL_BASE + IWN_PASSIVE_DWELL_TIME_2GHZ;
+	else
+		passive = IWN_PASSIVE_DWELL_BASE + IWN_PASSIVE_DWELL_TIME_5GHZ;
+
+	/* Clamp to the beacon interval if we're associated */
+	return iwn_limit_dwell(sc, passive);
+}
+
 static int
 iwn_scan(struct iwn_softc *sc, uint16_t flags)
 {
@@ -4337,9 +4525,9 @@ iwn_scan(struct iwn_softc *sc, uint16_t 
 	struct ieee80211_rateset *rs;
 	struct ieee80211_channel *c;
 	uint8_t *buf, *frm;
-	uint16_t rxchain;
+	uint16_t rxchain, dwell_active, dwell_passive;
 	uint8_t txant;
-	int buflen, error;
+	int buflen, error, is_active;
 
 	buf = malloc(IWN_SCAN_MAXSZ, M_DEVBUF, M_NOWAIT | M_ZERO);
 	if (buf == NULL) {
@@ -4390,11 +4578,19 @@ iwn_scan(struct iwn_softc *sc, uint16_t 
 	txant = IWN_LSB(sc->txchainmask);
 	tx->rflags |= IWN_RFLAG_ANT(txant);
 
+	/*
+	 * Only do active scanning if we're announcing a probe request
+	 * for a given SSID (or more, if we ever add it to the driver.)
+	 */
+	is_active = 0;
+
 	essid = (struct iwn_scan_essid *)(tx + 1);
 	if (ic->ic_des_esslen != 0) {
 		essid[0].id = IEEE80211_ELEMID_SSID;
 		essid[0].len = ic->ic_des_esslen;
 		memcpy(essid[0].data, ic->ic_des_essid, ic->ic_des_esslen);
+
+		is_active = 1;
 	}
 	/*
 	 * Build a probe request frame.  Most of the following code is a
@@ -4423,6 +4619,42 @@ iwn_scan(struct iwn_softc *sc, uint16_t 
 	/* Set length of probe request. */
 	tx->len = htole16(frm - (uint8_t *)wh);
 
+
+	/*
+	 * If active scanning is requested but a certain channel is
+	 * marked passive, we can do active scanning if we detect
+	 * transmissions.
+	 *
+	 * There is an issue with some firmware versions that triggers
+	 * a sysassert on a "good CRC threshold" of zero (== disabled),
+	 * on a radar channel even though this means that we should NOT
+	 * send probes.
+	 *
+	 * The "good CRC threshold" is the number of frames that we
+	 * need to receive during our dwell time on a channel before
+	 * sending out probes -- setting this to a huge value will
+	 * mean we never reach it, but at the same time work around
+	 * the aforementioned issue. Thus use IWN_GOOD_CRC_TH_NEVER
+	 * here instead of IWN_GOOD_CRC_TH_DISABLED.
+	 *
+	 * This was fixed in later versions along with some other
+	 * scan changes, and the threshold behaves as a flag in those
+	 * versions.
+	 */
+
+	/*
+	 * If we're doing active scanning, set the crc_threshold
+	 * to a suitable value.  This is different to active veruss
+	 * passive scanning depending upon the channel flags; the
+	 * firmware will obey that particular check for us.
+	 */
+	if (sc->tlv_feature_flags & IWN_UCODE_TLV_FLAGS_NEWSCAN)
+		hdr->crc_threshold = is_active ?
+		    IWN_GOOD_CRC_TH_DEFAULT : IWN_GOOD_CRC_TH_DISABLED;
+	else
+		hdr->crc_threshold = is_active ?
+		    IWN_GOOD_CRC_TH_DEFAULT : IWN_GOOD_CRC_TH_NEVER;
+
 	chan = (struct iwn_scan_chan *)frm;
 	for (c  = &ic->ic_channels[1];
 	     c <= &ic->ic_channels[IEEE80211_CHAN_MAX]; c++) {
@@ -4436,15 +4668,26 @@ iwn_scan(struct iwn_softc *sc, uint16_t 
 			chan->flags |= htole32(IWN_CHAN_ACTIVE);
 		if (ic->ic_des_esslen != 0)
 			chan->flags |= htole32(IWN_CHAN_NPBREQS(1));
+
+		/*
+		 * Calculate the active/passive dwell times.
+		 */
+
+		dwell_active = iwn_get_active_dwell_time(sc, flags, is_active);
+		dwell_passive = iwn_get_passive_dwell_time(sc, flags);
+
+		/* Make sure they're valid */
+		if (dwell_passive <= dwell_active)
+			dwell_passive = dwell_active + 1;
+
+		chan->active = htole16(dwell_active);
+		chan->passive = htole16(dwell_passive);
+
 		chan->dsp_gain = 0x6e;
 		if (IEEE80211_IS_CHAN_5GHZ(c)) {
 			chan->rf_gain = 0x3b;
-			chan->active  = htole16(24);
-			chan->passive = htole16(110);
 		} else {
 			chan->rf_gain = 0x28;
-			chan->active  = htole16(36);
-			chan->passive = htole16(120);
 		}
 		hdr->nchan++;
 		chan++;
@@ -4992,6 +5235,46 @@ iwn5000_send_wimax_coex(struct iwn_softc
 	return iwn_cmd(sc, IWN5000_CMD_WIMAX_COEX, &wimax, sizeof wimax, 0);
 }
 
+static int
+iwn6000_temp_offset_calib(struct iwn_softc *sc)
+{
+	struct iwn6000_phy_calib_temp_offset cmd;
+
+	memset(&cmd, 0, sizeof cmd);
+	cmd.code = IWN6000_PHY_CALIB_TEMP_OFFSET;
+	cmd.ngroups = 1;
+	cmd.isvalid = 1;
+	if (sc->eeprom_temp != 0)
+		cmd.offset = htole16(sc->eeprom_temp);
+	else
+		cmd.offset = htole16(IWN_DEFAULT_TEMP_OFFSET);
+	DPRINTF(("setting radio sensor offset to %d\n", le16toh(cmd.offset)));
+	return iwn_cmd(sc, IWN_CMD_PHY_CALIB, &cmd, sizeof cmd, 0);
+}
+
+static int
+iwn2000_temp_offset_calib(struct iwn_softc *sc)
+{
+	struct iwn2000_phy_calib_temp_offset cmd;
+
+	memset(&cmd, 0, sizeof cmd);
+	cmd.code = IWN2000_PHY_CALIB_TEMP_OFFSET;
+	cmd.ngroups = 1;
+	cmd.isvalid = 1;
+	if (sc->eeprom_rawtemp != 0) {
+		cmd.offset_low = htole16(sc->eeprom_rawtemp);
+		cmd.offset_high = htole16(sc->eeprom_temp);
+	} else {
+		cmd.offset_low = htole16(IWN_DEFAULT_TEMP_OFFSET);
+		cmd.offset_high = htole16(IWN_DEFAULT_TEMP_OFFSET);
+	}
+	cmd.burnt_voltage_ref = htole16(sc->eeprom_voltage);
+	DPRINTF(("setting radio sensor offset to %d:%d, voltage to %d\n",
+	    le16toh(cmd.offset_low), le16toh(cmd.offset_high),
+	    le16toh(cmd.burnt_voltage_ref)));
+	return iwn_cmd(sc, IWN_CMD_PHY_CALIB, &cmd, sizeof cmd, 0);
+}
+
 /*
  * This function is called after the runtime firmware notifies us of its
  * readiness (called in a process context).
@@ -5455,6 +5738,35 @@ iwn_read_firmware_tlv(struct iwn_softc *
 			fw->boot.text = ptr;
 			fw->boot.textsz = len;
 			break;
+		case IWN_FW_TLV_ENH_SENS:
+			if (len != 0) {
+				aprint_error_dev(sc->sc_dev,
+				    "TLV type %d has invalid size %u\n",
+				    le16toh(tlv->type), len);
+				goto next;
+			}
+			sc->sc_flags |= IWN_FLAG_ENH_SENS;
+			break;
+		case IWN_FW_TLV_PHY_CALIB:
+			if (len != sizeof(uint32_t)) {
+				aprint_error_dev(sc->sc_dev,
+				    "TLV type %d has invalid size %u\n",
+				    le16toh(tlv->type), len);
+				goto next;
+			}
+			if (le32toh(*ptr) <= IWN5000_PHY_CALIB_MAX) {
+				sc->reset_noise_gain = le32toh(*ptr);
+				sc->noise_gain = le32toh(*ptr) + 1;
+			}
+			break;
+		case IWN_FW_TLV_FLAGS:
+			if (len < sizeof(uint32_t))
+				break;
+			if (len % sizeof(uint32_t))
+				break;
+			sc->tlv_feature_flags = le32toh(*ptr);
+			DPRINTF(("feature: 0x%08x\n", sc->tlv_feature_flags));
+			break;
 		default:
 			DPRINTF(("TLV type %d not handled\n",
 			    le16toh(tlv->type)));
@@ -5473,6 +5785,14 @@ iwn_read_firmware(struct iwn_softc *sc)
 	firmware_handle_t fwh;
 	int error;
 
+	/*
+	 * Some PHY calibration commands are firmware-dependent; these
+	 * are the default values that will be overridden if
+	 * necessary.
+	 */
+	sc->reset_noise_gain = IWN5000_PHY_CALIB_RESET_NOISE_GAIN;
+	sc->noise_gain = IWN5000_PHY_CALIB_NOISE_GAIN;
+
 	/* Initialize for error returns */
 	fw->data = NULL;
 	fw->size = 0;
@@ -5702,6 +6022,11 @@ iwn5000_nic_config(struct iwn_softc *sc)
 	}
 	if (sc->hw_type == IWN_HW_REV_TYPE_6005)
 		IWN_SETBITS(sc, IWN_GP_DRIVER, IWN_GP_DRIVER_6050_1X2);
+	if (sc->hw_type == IWN_HW_REV_TYPE_2030 ||
+	    sc->hw_type == IWN_HW_REV_TYPE_2000 ||
+	    sc->hw_type == IWN_HW_REV_TYPE_135  ||
+	    sc->hw_type == IWN_HW_REV_TYPE_105)
+		IWN_SETBITS(sc, IWN_GP_DRIVER, IWN_GP_DRIVER_RADIO_IQ_INVERT);
 	return 0;
 }
 

Index: src/sys/dev/pci/if_iwnreg.h
diff -u src/sys/dev/pci/if_iwnreg.h:1.13 src/sys/dev/pci/if_iwnreg.h:1.13.4.1
--- src/sys/dev/pci/if_iwnreg.h:1.13	Sun Jul 28 11:46:24 2013
+++ src/sys/dev/pci/if_iwnreg.h	Wed Jan 28 19:00:28 2015
@@ -1,5 +1,5 @@
-/*	$NetBSD: if_iwnreg.h,v 1.13 2013/07/28 11:46:24 prlw1 Exp $	*/
-/*	$OpenBSD: if_iwnreg.h,v 1.43 2011/09/01 18:49:56 kettenis Exp $	*/
+/*	$NetBSD: if_iwnreg.h,v 1.13.4.1 2015/01/28 19:00:28 martin Exp $	*/
+/*	$OpenBSD: if_iwnreg.h,v 1.49 2014/09/09 18:56:24 sthen Exp $	*/
 
 /*-
  * Copyright (c) 2007, 2008
@@ -185,11 +185,11 @@
 #define IWN_FW_DATA_BASE	0x00800000
 
 /* Possible flags for register IWN_RESET. */
-#define IWN_RESET_NEVO			(1 << 0)
-#define IWN_RESET_SW			(1 << 7)
-#define IWN_RESET_MASTER_DISABLED	(1 << 8)
-#define IWN_RESET_STOP_MASTER		(1 << 9)
-#define IWN_RESET_LINK_PWR_MGMT_DIS	(1 << 31)
+#define IWN_RESET_NEVO			(1U << 0)
+#define IWN_RESET_SW			(1U << 7)
+#define IWN_RESET_MASTER_DISABLED	(1U << 8)
+#define IWN_RESET_STOP_MASTER		(1U << 9)
+#define IWN_RESET_LINK_PWR_MGMT_DIS	(1U << 31)
 
 /* Possible flags for register IWN_GP_CNTRL. */
 #define IWN_GP_CNTRL_MAC_ACCESS_ENA	(1 << 0)
@@ -212,6 +212,10 @@
 #define IWN_HW_REV_TYPE_6050	8
 #define IWN_HW_REV_TYPE_6005	11
 /* Types 6030 and 6035 also return 11 */
+#define IWN_HW_REV_TYPE_2030	12
+#define IWN_HW_REV_TYPE_2000	16
+#define IWN_HW_REV_TYPE_105	17
+#define IWN_HW_REV_TYPE_135	18
 
 /* Possible flags for register IWN_GIO_CHICKEN. */
 #define IWN_GIO_CHICKEN_L1A_NO_L0S_RX	(1 << 23)
@@ -226,6 +230,7 @@
 #define IWN_GP_DRIVER_RADIO_2X2_IPA	(2 << 0)
 #define IWN_GP_DRIVER_CALIB_VER6	(1 << 2)
 #define IWN_GP_DRIVER_6050_1X2		(1 << 3)
+#define IWN_GP_DRIVER_RADIO_IQ_INVERT	(1 << 7)
 
 /* Possible flags for register IWN_UCODE_GP1_CLR. */
 #define IWN_UCODE_GP1_RFKILL		(1 << 1)
@@ -282,8 +287,8 @@
 
 /* Possible flags/values for register IWN_FH_TX_CONFIG. */
 #define IWN_FH_TX_CONFIG_DMA_PAUSE		0
-#define IWN_FH_TX_CONFIG_DMA_ENA		(1 << 31)
-#define IWN_FH_TX_CONFIG_CIRQ_HOST_ENDTFD	(1 << 20)
+#define IWN_FH_TX_CONFIG_DMA_ENA		(1U << 31)
+#define IWN_FH_TX_CONFIG_CIRQ_HOST_ENDTFD	(1U << 20)
 
 /* Possible flags/values for register IWN_FH_TXBUF_STATUS. */
 #define IWN_FH_TXBUF_STATUS_TBNUM(x)	((x) << 20)
@@ -297,17 +302,17 @@
 #define IWN_FH_TX_STATUS_IDLE(chnl)	(1 << ((chnl) + 16))
 
 /* Possible flags for register IWN_FH_RX_CONFIG. */
-#define IWN_FH_RX_CONFIG_ENA		(1 << 31)
+#define IWN_FH_RX_CONFIG_ENA		(1U << 31)
 #define IWN_FH_RX_CONFIG_NRBD(x)	((x) << 20)
-#define IWN_FH_RX_CONFIG_RB_SIZE_8K	(1 << 16)
-#define IWN_FH_RX_CONFIG_SINGLE_FRAME	(1 << 15)
-#define IWN_FH_RX_CONFIG_IRQ_DST_HOST	(1 << 12)
+#define IWN_FH_RX_CONFIG_RB_SIZE_8K	(1U << 16)
+#define IWN_FH_RX_CONFIG_SINGLE_FRAME	(1U << 15)
+#define IWN_FH_RX_CONFIG_IRQ_DST_HOST	(1U << 12)
 #define IWN_FH_RX_CONFIG_RB_TIMEOUT(x)	((x) << 4)
-#define IWN_FH_RX_CONFIG_IGN_RXF_EMPTY	(1 <<  2)
+#define IWN_FH_RX_CONFIG_IGN_RXF_EMPTY	(1U <<  2)
 
 /* Possible flags for register IWN_FH_TX_CONFIG. */
-#define IWN_FH_TX_CONFIG_DMA_ENA	(1 << 31)
-#define IWN_FH_TX_CONFIG_DMA_CREDIT_ENA	(1 <<  3)
+#define IWN_FH_TX_CONFIG_DMA_ENA	(1U << 31)
+#define IWN_FH_TX_CONFIG_DMA_CREDIT_ENA	(1U <<  3)
 
 /* Possible flags for register IWN_EEPROM. */
 #define IWN_EEPROM_READ_VALID	(1 << 0)
@@ -354,7 +359,7 @@
 #define IWN_APMG_PCI_STT_L1A_DIS	(1 << 11)
 
 /* Possible flags for register IWN_BSM_DRAM_TEXT_SIZE. */
-#define IWN_FW_UPDATED	(1 << 31)
+#define IWN_FW_UPDATED	(1U << 31)
 
 #define IWN_SCHED_WINSZ		64
 #define IWN_SCHED_LIMIT		64
@@ -441,6 +446,7 @@ struct iwn_tx_cmd {
 #define IWN_CMD_SET_SENSITIVITY		168
 #define IWN_CMD_PHY_CALIB		176
 #define IWN_CMD_BT_COEX_PRIO_TABLE	204
+#define IWN_CMD_BT_COEX_PROT		205
 
 	uint8_t	flags;
 	uint8_t	idx;
@@ -811,6 +817,51 @@ struct iwn_scan_chan {
 /* Maximum size of a scan command. */
 #define IWN_SCAN_MAXSZ	(MCLBYTES - 4)
 
+/*
+ * For active scan, listen ACTIVE_DWELL_TIME (msec) on each channel after
+ * sending probe req.  This should be set long enough to hear probe responses
+ * from more than one AP.
+ */
+#define IWN_ACTIVE_DWELL_TIME_2GHZ	(30)	/* all times in msec */
+#define IWN_ACTIVE_DWELL_TIME_5GHZ	(20)
+#define IWN_ACTIVE_DWELL_FACTOR_2GHZ	(3)
+#define IWN_ACTIVE_DWELL_FACTOR_5GHZ	(2)
+
+/*
+ * For passive scan, listen PASSIVE_DWELL_TIME (msec) on each channel.
+ * Must be set longer than active dwell time.
+ * For the most reliable scan, set > AP beacon interval (typically 100msec).
+ */
+#define IWN_PASSIVE_DWELL_TIME_2GHZ	(20)	/* all times in msec */
+#define IWN_PASSIVE_DWELL_TIME_5GHZ	(10)
+#define IWN_PASSIVE_DWELL_BASE		(100)
+#define IWN_CHANNEL_TUNE_TIME		(5)
+
+/*
+ * If active scanning is requested but a certain channel is
+ * marked passive, we can do active scanning if we detect
+ * transmissions.
+ *
+ * There is an issue with some firmware versions that triggers
+ * a sysassert on a "good CRC threshold" of zero (== disabled),
+ * on a radar channel even though this means that we should NOT
+ * send probes.
+ *
+ * The "good CRC threshold" is the number of frames that we
+ * need to receive during our dwell time on a channel before
+ * sending out probes -- setting this to a huge value will
+ * mean we never reach it, but at the same time work around
+ * the aforementioned issue. Thus use IWN_GOOD_CRC_TH_NEVER
+ * here instead of IWN_GOOD_CRC_TH_DISABLED.
+ *
+ * This was fixed in later versions along with some other
+ * scan changes, and the threshold behaves as a flag in those
+ * versions.
+ */
+#define IWN_GOOD_CRC_TH_DISABLED	0
+#define IWN_GOOD_CRC_TH_DEFAULT		htole16(1)
+#define IWN_GOOD_CRC_TH_NEVER		htole16(0xffff)
+
 /* Structure for command IWN_CMD_TXPOWER (4965AGN only.) */
 #define IWN_RIDX_MAX	32
 struct iwn4965_cmd_txpower {
@@ -843,7 +894,7 @@ struct iwn_bluetooth {
 #define IWN_BT_COEX_CHAN_ANN	(1 << 0)
 #define IWN_BT_COEX_BT_PRIO	(1 << 1)
 #define IWN_BT_COEX_2_WIRE	(1 << 2)
-#define IWN_BT_COEX_ENABLE	IWN_BT_COEX_CHAN_ANN | IWN_BT_COEX_BT_PRIO
+#define IWN_BT_COEX_ENABLE	(IWN_BT_COEX_CHAN_ANN | IWN_BT_COEX_BT_PRIO)
 	uint8_t		lead_time;
 #define IWN_BT_LEAD_TIME_DEF	30
 	uint8_t		max_kill;
@@ -858,14 +909,28 @@ struct iwn_bluetooth {
 
 struct iwn_bt_basic {
 	struct iwn_bluetooth bt;
+#define IWN_BT_BASIC_CHAN_INHIBITION	1
+#define IWN_BT_BASIC_MODE_MASK	((1 << 3) | (1 << 4) | (1 << 5))
+#define IWN_BT_BASIC_MODE_SHIFT	3
+#define IWN_BT_BASIC_MODE_DISABLED	0
+#define IWN_BT_BASIC_MODE_LEGACY_2W	1
+#define IWN_BT_BASIC_MODE_3W		2
+#define IWN_BT_BASIC_MODE_4W		3
+#define IWN_BT_UCODE_DEFAULT		(1 << 6)
+#define IWN_BT_SYNC_2_BT_DISABLE	(1 << 7)
 	uint8_t		bt3_prio_sample_time;
 #define IWN_BT_BT3_PRIO_SAMPLE_DEF	2
 	uint8_t		bt3_timer_t2_value;
 #define IWN_BT_BT3_T2_DEF	12
 	uint16_t	bt4_reaction_time; /* unused */
 	uint32_t	bt3_lookup_table[12];
-	uint8_t		reduce_txpower; /* bit 0 */
-	uint8_t		reserved;
+	union {
+		struct {
+			uint8_t		reduce_txpower; /* bit 0 */
+			uint8_t		reserved;
+		};
+		uint16_t bt4_decision;
+	};
 	uint16_t	valid;
 #define IWN_BT_VALID_ENABLE_FLAGS	htole16(1 << 0)
 #define IWN_BT_VALID_BOOST		htole16(1 << 1)
@@ -904,6 +969,27 @@ struct iwn_bt_adv2 {
 	uint16_t	rx_prio_boost;
 } __packed;
 
+/* Structure for command IWN_CMD_BT_COEX_PRIOTABLE */
+struct iwn_btcoex_priotable {
+	uint8_t		calib_init1;
+	uint8_t		calib_init2;
+	uint8_t		calib_periodic_low1;
+	uint8_t		calib_periodic_low2;
+	uint8_t		calib_periodic_high1;
+	uint8_t		calib_periodic_high2;
+	uint8_t		dtim;
+	uint8_t		scan52;
+	uint8_t		scan24;
+	uint8_t		reserved[7];
+} __packed;
+
+/* Structure for command IWN_CMD_BT_COEX_PROT */
+struct iwn_btcoex_prot {
+	uint8_t		open;
+	uint8_t		type;
+	uint8_t		reserved[2];
+} __packed;
+
 /* Structure for command IWN_CMD_SET_CRITICAL_TEMP. */
 struct iwn_critical_temp {
 	uint32_t	reserved;
@@ -972,11 +1058,14 @@ struct iwn_phy_calib {
 #define IWN5000_PHY_CALIB_CRYSTAL		15
 #define IWN5000_PHY_CALIB_BASE_BAND		16
 #define IWN5000_PHY_CALIB_TX_IQ_PERIODIC	17
-#define IWN5000_PHY_CALIB_TEMP_OFFSET		18
-
 #define IWN5000_PHY_CALIB_RESET_NOISE_GAIN	18
 #define IWN5000_PHY_CALIB_NOISE_GAIN		19
 
+#define IWN6000_PHY_CALIB_TEMP_OFFSET		18
+#define IWN2000_PHY_CALIB_TEMP_OFFSET		18
+
+#define IWN5000_PHY_CALIB_MAX			253
+
 	uint8_t	group;
 	uint8_t	ngroups;
 	uint8_t	isvalid;
@@ -992,7 +1081,7 @@ struct iwn5000_phy_calib_crystal {
 	uint8_t	reserved[2];
 } __packed;
 
-struct iwn5000_phy_calib_temp_offset {
+struct iwn6000_phy_calib_temp_offset {
 	uint8_t		code;
 	uint8_t		group;
 	uint8_t		ngroups;
@@ -1003,6 +1092,17 @@ struct iwn5000_phy_calib_temp_offset {
 	uint16_t	reserved;
 } __packed;
 
+struct iwn2000_phy_calib_temp_offset {
+	uint8_t		code;
+	uint8_t		group;
+	uint8_t		ngroups;
+	uint8_t		isvalid;
+	int16_t		offset_high;
+	int16_t		offset_low;
+	int16_t		burnt_voltage_ref;
+	int16_t		reserved;
+} __packed;
+
 struct iwn_phy_calib_gain {
 	uint8_t	code;
 	uint8_t	group;
@@ -1371,6 +1471,9 @@ struct iwn_fw_tlv {
 #define IWN_FW_TLV_INIT_DATA		4
 #define IWN_FW_TLV_BOOT_TEXT		5
 #define IWN_FW_TLV_PBREQ_MAXLEN		6
+#define IWN_FW_TLV_ENH_SENS		14
+#define IWN_FW_TLV_PHY_CALIB		15
+#define IWN_FW_TLV_FLAGS		18
 
 	uint16_t	alt;
 	uint32_t	len;
@@ -1384,6 +1487,56 @@ struct iwn_fw_tlv {
 #define IWN4965_FWSZ		(IWN4965_FW_TEXT_MAXSZ + IWN4965_FW_DATA_MAXSZ)
 #define IWN5000_FWSZ		IWN5000_FW_TEXT_MAXSZ
 
+/**
+ * enum iwn_ucode_tlv_flag - ucode API flags
+ * @IWN_UCODE_TLV_FLAGS_PAN: This is PAN capable microcode; this previously
+ *      was a separate TLV but moved here to save space.
+ * @IWN_UCODE_TLV_FLAGS_NEWSCAN: new uCode scan behaviour on hidden SSID,
+ *      treats good CRC threshold as a boolean
+ * @IWN_UCODE_TLV_FLAGS_MFP: This uCode image supports MFP (802.11w).
+ * @IWN_UCODE_TLV_FLAGS_P2P: This uCode image supports P2P.
+ * @IWN_UCODE_TLV_FLAGS_DW_BC_TABLE: The SCD byte count table is in DWORDS
+ * @IWN_UCODE_TLV_FLAGS_UAPSD: This uCode image supports uAPSD
+ * @IWN_UCODE_TLV_FLAGS_SHORT_BL: 16 entries of black list instead of 64 in scan
+ *      offload profile config command.
+ * @IWN_UCODE_TLV_FLAGS_RX_ENERGY_API: supports rx signal strength api
+ * @IWN_UCODE_TLV_FLAGS_TIME_EVENT_API_V2: using the new time event API.
+ * @IWN_UCODE_TLV_FLAGS_D3_6_IPV6_ADDRS: D3 image supports up to six
+ *      (rather than two) IPv6 addresses
+ * @IWN_UCODE_TLV_FLAGS_BF_UPDATED: new beacon filtering API
+ * @IWN_UCODE_TLV_FLAGS_NO_BASIC_SSID: not sending a probe with the SSID element
+ *      from the probe request template.
+ * @IWN_UCODE_TLV_FLAGS_D3_CONTINUITY_API: modified D3 API to allow keeping
+ *      connection when going back to D0
+ * @IWN_UCODE_TLV_FLAGS_NEW_NSOFFL_SMALL: new NS offload (small version)
+ * @IWN_UCODE_TLV_FLAGS_NEW_NSOFFL_LARGE: new NS offload (large version)
+ * @IWN_UCODE_TLV_FLAGS_SCHED_SCAN: this uCode image supports scheduled scan.
+ * @IWN_UCODE_TLV_FLAGS_STA_KEY_CMD: new ADD_STA and ADD_STA_KEY command API
+ * @IWN_UCODE_TLV_FLAGS_DEVICE_PS_CMD: support device wide power command
+ *      containing CAM (Continuous Active Mode) indication.
+ */
+enum iwn_ucode_tlv_flag {
+	IWN_UCODE_TLV_FLAGS_PAN			= (1 << 0),
+	IWN_UCODE_TLV_FLAGS_NEWSCAN		= (1 << 1),
+	IWN_UCODE_TLV_FLAGS_MFP			= (1 << 2),
+	IWN_UCODE_TLV_FLAGS_P2P			= (1 << 3),
+	IWN_UCODE_TLV_FLAGS_DW_BC_TABLE		= (1 << 4),
+	IWN_UCODE_TLV_FLAGS_NEWBT_COEX		= (1 << 5),
+	IWN_UCODE_TLV_FLAGS_UAPSD		= (1 << 6),
+	IWN_UCODE_TLV_FLAGS_SHORT_BL		= (1 << 7),
+	IWN_UCODE_TLV_FLAGS_RX_ENERGY_API	= (1 << 8),
+	IWN_UCODE_TLV_FLAGS_TIME_EVENT_API_V2	= (1 << 9),
+	IWN_UCODE_TLV_FLAGS_D3_6_IPV6_ADDRS	= (1 << 10),
+	IWN_UCODE_TLV_FLAGS_BF_UPDATED		= (1 << 11),
+	IWN_UCODE_TLV_FLAGS_NO_BASIC_SSID	= (1 << 12),
+	IWN_UCODE_TLV_FLAGS_D3_CONTINUITY_API	= (1 << 14),
+	IWN_UCODE_TLV_FLAGS_NEW_NSOFFL_SMALL	= (1 << 15),
+	IWN_UCODE_TLV_FLAGS_NEW_NSOFFL_LARGE	= (1 << 16),
+	IWN_UCODE_TLV_FLAGS_SCHED_SCAN		= (1 << 17),
+	IWN_UCODE_TLV_FLAGS_STA_KEY_CMD		= (1 << 19),
+	IWN_UCODE_TLV_FLAGS_DEVICE_PS_CMD	= (1 << 20),
+};
+
 /*
  * Offsets into EEPROM.
  */
@@ -1416,6 +1569,7 @@ struct iwn_fw_tlv {
 #define IWN5000_EEPROM_CRYSTAL	0x128
 #define IWN5000_EEPROM_TEMP	0x12a
 #define IWN5000_EEPROM_VOLT	0x12b
+#define IWN2000_EEPROM_RAWTEMP	0x12b
 
 /* Possible flags for IWN_EEPROM_SKU_CAP. */
 #define IWN_EEPROM_SKU_CAP_11N	(1 << 6)
@@ -1724,6 +1878,18 @@ static const struct iwn_sensitivity_limi
 	100
 };
 
+static const struct iwn_sensitivity_limits iwn2000_sensitivity_limits = {
+	105, 110,
+	192, 232,
+	 80, 145,
+	128, 232,
+	125, 175,
+	160, 310,
+	 97,
+	 97,
+	100
+};
+
 /* Map TID to TX scheduler's FIFO. */
 static const uint8_t iwn_tid2fifo[] = {
 	1, 0, 0, 1, 2, 2, 3, 3, 7, 7, 7, 7, 7, 7, 7, 7, 3

Index: src/sys/dev/pci/if_iwnvar.h
diff -u src/sys/dev/pci/if_iwnvar.h:1.15 src/sys/dev/pci/if_iwnvar.h:1.15.4.1
--- src/sys/dev/pci/if_iwnvar.h:1.15	Sun Jul 28 11:46:24 2013
+++ src/sys/dev/pci/if_iwnvar.h	Wed Jan 28 19:00:28 2015
@@ -1,5 +1,5 @@
-/*	$NetBSD: if_iwnvar.h,v 1.15 2013/07/28 11:46:24 prlw1 Exp $	*/
-/*	$OpenBSD: if_iwnvar.h,v 1.24 2012/11/17 14:02:51 kettenis Exp $	*/
+/*	$NetBSD: if_iwnvar.h,v 1.15.4.1 2015/01/28 19:00:28 martin Exp $	*/
+/*	$OpenBSD: if_iwnvar.h,v 1.28 2014/09/09 18:55:08 sthen Exp $	*/
 
 /*-
  * Copyright (c) 2007, 2008
@@ -295,11 +295,17 @@ struct iwn_softc {
 	uint32_t		eeprom_crystal;
 	int16_t			eeprom_temp;
 	int16_t			eeprom_voltage;
+	int16_t			eeprom_rawtemp;
 	int8_t			maxpwr2GHz;
 	int8_t			maxpwr5GHz;
 	int8_t			maxpwr[IEEE80211_CHAN_MAX];
 	int8_t			enh_maxpwr[35];
 
+	uint8_t			reset_noise_gain;
+	uint8_t			noise_gain;
+
+	uint32_t		tlv_feature_flags;
+
 	int32_t			temp_off;
 	uint32_t		int_mask;
 	uint8_t			ntxchains;

Index: src/sys/dev/pci/pcidevs
diff -u src/sys/dev/pci/pcidevs:1.1199.2.2 src/sys/dev/pci/pcidevs:1.1199.2.3
--- src/sys/dev/pci/pcidevs:1.1199.2.2	Sat Jan 17 21:48:05 2015
+++ src/sys/dev/pci/pcidevs	Wed Jan 28 19:00:28 2015
@@ -1,4 +1,4 @@
-$NetBSD: pcidevs,v 1.1199.2.2 2015/01/17 21:48:05 martin Exp $
+$NetBSD: pcidevs,v 1.1199.2.3 2015/01/28 19:00:28 martin Exp $
 
 /*
  * Copyright (c) 1995, 1996 Christopher G. Demetriou
@@ -2596,10 +2596,27 @@ product INTEL 82426EX		0x0486	82426EX PC
 product INTEL PCMC		0x04a3	82434LX/NX PCI, Cache and Memory Controller (PCMC)
 product INTEL GDT_RAID1		0x0600	GDT RAID
 product INTEL GDT_RAID2		0x061f	GDT RAID
+product INTEL WIFI_LINK_6150_1	0x0885	Centrino Wireless-N 6150
+product INTEL WIFI_LINK_6150_2	0x0886	Centrino Wireless-N 6150
 product INTEL WIFI_LINK_2230_1	0x0887	Centrino Wireless-N 2230
 product INTEL WIFI_LINK_2230_2	0x0888	Centrino Wireless-N 2230
 product INTEL WIFI_LINK_6235	0x088e	Centrino Advanced-N 6235
+product INTEL WIFI_LINK_6235_2	0x088f	Centrino Advanced-N 6235
+product INTEL WIFI_LINK_2200_1	0x0890	Centrino Wireless-N 2200
+product INTEL WIFI_LINK_2200_2	0x0891	Centrino Wireless-N 2200
+product INTEL WIFI_LINK_135_1	0x0892	Centrino Wireless-N 135
+product INTEL WIFI_LINK_135_2	0x0893	Centrino Wireless-N 135
+product INTEL WIFI_LINK_105_1	0x0894	Centrino Wireless-N 105
+product INTEL WIFI_LINK_105_2	0x0895	Centrino Wireless-N 105
+product INTEL WIFI_LINK_130_1	0x0896	Centrino Wireless-N 130
+product INTEL WIFI_LINK_130_2	0x0897	Centrino Wireless-N 130
 product INTEL X1000_SDIO_EMMC	0x08a7	Quark X1000 SDIO/eMMC
+product INTEL WIFI_LINK_100_1	0x08ae	Centrino Wireless-N 100
+product INTEL WIFI_LINK_100_2	0x08af	Centrino Wireless-N 100
+product INTEL WIFI_LINK_7260_1	0x08b1	Dual Band Wireless AC 7260
+product INTEL WIFI_LINK_7260_2	0x08b2	Dual Band Wireless AC 7260
+product INTEL WIFI_LINK_3160_1	0x08b3	Dual Band Wireless AC 3160
+product INTEL WIFI_LINK_3160_2	0x08b4	Dual Band Wirelsss AC 3160
 product INTEL X1000_I2C_GPIO	0x0934	Quark X1000 I2C and GPIO
 product INTEL X1000_SPI		0x0935	Quark X1000 SPI
 product INTEL X1000_HS_UART	0x0936	Quark X1000 HS-UART
@@ -2607,6 +2624,8 @@ product INTEL X1000_MAC		0x0937	Quark X1
 product INTEL X1000_EHCI	0x0939	Quark X1000 EHCI
 product INTEL X1000_OHCI	0x093a	Quark X1000 OHCI
 product INTEL X1000_HB		0x0958	Quark X1000 Host Bridge
+product INTEL WIFI_LINK_7265_1	0x095a	Dual Band Wireless AC 7265
+product INTEL WIFI_LINK_7265_2	0x095b	Dual Band Wireless AC 7265
 product INTEL X1000_LB		0x095e	Quark X1000 Legacy Bridge
 product INTEL 80960RM		0x0962	i960 RM PCI-PCI
 product INTEL 80960RN		0x0964	i960 RN PCI-PCI

Added files:

Index: src/external/intel-fw-public/iwl100/Makefile
diff -u /dev/null src/external/intel-fw-public/iwl100/Makefile:1.1.2.2
--- /dev/null	Wed Jan 28 19:00:29 2015
+++ src/external/intel-fw-public/iwl100/Makefile	Wed Jan 28 19:00:28 2015
@@ -0,0 +1,10 @@
+# $NetBSD: Makefile,v 1.1.2.2 2015/01/28 19:00:28 martin Exp $
+
+NOMAN=	# define
+
+FILES=	dist/LICENSE.iwlwifi-100-ucode dist/README.iwlwifi-100-ucode \
+	dist/iwlwifi-100-5.ucode
+
+FILESDIR=	/libdata/firmware/if_iwn
+
+.include <bsd.files.mk>

Index: src/external/intel-fw-public/iwl100/dist/LICENSE.iwlwifi-100-ucode
diff -u /dev/null src/external/intel-fw-public/iwl100/dist/LICENSE.iwlwifi-100-ucode:1.1.2.2
--- /dev/null	Wed Jan 28 19:00:29 2015
+++ src/external/intel-fw-public/iwl100/dist/LICENSE.iwlwifi-100-ucode	Wed Jan 28 19:00:29 2015
@@ -0,0 +1,39 @@
+Copyright (c) 2006-2010, Intel Corporation.
+All rights reserved.
+
+Redistribution.  Redistribution and use in binary form, without
+modification, are permitted provided that the following conditions are
+met:
+
+* Redistributions must reproduce the above copyright notice and the
+  following disclaimer in the documentation and/or other materials
+  provided with the distribution.
+* Neither the name of Intel Corporation nor the names of its suppliers
+  may be used to endorse or promote products derived from this software
+  without specific prior written permission.
+* No reverse engineering, decompilation, or disassembly of this software
+  is permitted.
+
+Limited patent license.  Intel Corporation grants a world-wide,
+royalty-free, non-exclusive license under patents it now or hereafter
+owns or controls to make, have made, use, import, offer to sell and
+sell ("Utilize") this software, but solely to the extent that any
+such patent is necessary to Utilize the software alone, or in
+combination with an operating system licensed under an approved Open
+Source license as listed by the Open Source Initiative at
+http://opensource.org/licenses.  The patent license shall not apply to
+any other combinations which include this software.  No hardware per
+se is licensed hereunder.
+
+DISCLAIMER.  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
+TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
+USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGE.
Index: src/external/intel-fw-public/iwl100/dist/README.iwlwifi-100-ucode
diff -u /dev/null src/external/intel-fw-public/iwl100/dist/README.iwlwifi-100-ucode:1.1.2.2
--- /dev/null	Wed Jan 28 19:00:29 2015
+++ src/external/intel-fw-public/iwl100/dist/README.iwlwifi-100-ucode	Wed Jan 28 19:00:29 2015
@@ -0,0 +1,113 @@
+Intel Wireless WiFi Link 100AGN Adapter
+Copyright (C) 2006-2010 Intel Corporation.  All rights reserved.
+
+Microcode Package README.iwlwifi-100-ucode
+
+INDEX
+
+1. OVERVIEW
+2. INSTALLATION
+3. LICENSE
+
+
+1. OVERVIEW
+
+The file iwlwifi-100-5.ucode provided in this package must be
+present on your system in order for the Intel Wireless WiFi Link
+AGN driver for Linux (iwlagn) to operate on your system.
+
+The "-5" in the filename reflects an interface/architecture version number.
+It will change only when changes in new uCode releases make the new uCode
+incompatible with earlier drivers.
+
+On adapter initialization, and at varying times during the uptime of
+the adapter, the microcode is loaded into the memory on the network
+adapter.  The microcode provides the low level MAC features including
+radio control and high precision timing events (backoff, transmit,
+etc.) while also providing varying levels of packet filtering which can
+be used to keep the host from having to handle packets that are not of
+interest given the current operating mode of the device.
+
+2. INSTALLATION
+
+The iwlagn driver will look for the file iwlwifi-100-5.ucode using the
+kernel's firmware_class infrastructure. More information can be found under
+Documentation/firmware_class in kernel source. In order to function
+correctly, you need to have this support enabled in your kernel.  When
+you configure the kernel, you can find this option in the following
+location:
+
+        Device Drivers ->
+                Generic Driver Options ->
+                        Userspace firmware loading support
+
+
+You can determine if your kernel currently has firmware loader support
+by looking for the CONFIG_FW_LOADER definition on your kernel's
+.config.
+
+In addition to having the firmware_class support in your kernel, you
+must also have a working udev and uevent infrastructure configured.
+The steps for installing and configuring udev are very
+distribution specific.
+
+Once you have the firmware loader in place (or if you aren't sure and
+you just want to try things to see if it works), you need to install
+the microcode file into the appropriate location.
+
+Where that appropriate location is depends (again) on your system
+distribution.  You can typically find this location by looking in the
+udev scripts of your distro, the default is /lib/firmware.
+
+Installation of the firmware is simply:
+
+        % cp iwlwifi-100-5.ucode /lib/firmware
+
+You can now load the driver (see the INSTALL and README.iwlwifi provided with
+the iwlwifi package for information on building and using that driver.)
+
+3. LICENSE
+
+The microcode in this package (iwlwifi-100-5.ucode) is provided under the
+terms of the following license (available in the file
+LICENSE.iwlwifi-100-ucode):
+
+Copyright (c) 2006-2010, Intel Corporation.
+All rights reserved.
+
+Redistribution.  Redistribution and use in binary form, without
+modification, are permitted provided that the following conditions are
+met:
+
+* Redistributions must reproduce the above copyright notice and the
+  following disclaimer in the documentation and/or other materials
+  provided with the distribution.
+* Neither the name of Intel Corporation nor the names of its suppliers
+  may be used to endorse or promote products derived from this software
+  without specific prior written permission.
+* No reverse engineering, decompilation, or disassembly of this software
+  is permitted.
+
+Limited patent license.  Intel Corporation grants a world-wide,
+royalty-free, non-exclusive license under patents it now or hereafter
+owns or controls to make, have made, use, import, offer to sell and
+sell ("Utilize") this software, but solely to the extent that any
+such patent is necessary to Utilize the software alone, or in
+combination with an operating system licensed under an approved Open
+Source license as listed by the Open Source Initiative at
+http://opensource.org/licenses.  The patent license shall not apply to
+any other combinations which include this software.  No hardware per
+se is licensed hereunder.
+
+DISCLAIMER.  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
+TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
+USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGE.
Index: src/external/intel-fw-public/iwl100/dist/iwlwifi-100-5.ucode
Binary files are different

Index: src/external/intel-fw-public/iwl105/Makefile
diff -u /dev/null src/external/intel-fw-public/iwl105/Makefile:1.1.2.2
--- /dev/null	Wed Jan 28 19:00:29 2015
+++ src/external/intel-fw-public/iwl105/Makefile	Wed Jan 28 19:00:29 2015
@@ -0,0 +1,10 @@
+# $NetBSD: Makefile,v 1.1.2.2 2015/01/28 19:00:29 martin Exp $
+
+NOMAN=	# define
+
+FILES=	dist/LICENSE.iwlwifi-105-ucode dist/README.iwlwifi-105-ucode \
+	dist/iwlwifi-105-6.ucode
+
+FILESDIR=	/libdata/firmware/if_iwn
+
+.include <bsd.files.mk>

Index: src/external/intel-fw-public/iwl105/dist/LICENSE.iwlwifi-105-ucode
diff -u /dev/null src/external/intel-fw-public/iwl105/dist/LICENSE.iwlwifi-105-ucode:1.1.2.2
--- /dev/null	Wed Jan 28 19:00:29 2015
+++ src/external/intel-fw-public/iwl105/dist/LICENSE.iwlwifi-105-ucode	Wed Jan 28 19:00:29 2015
@@ -0,0 +1,39 @@
+Copyright (c) 2006-2012, Intel Corporation.
+All rights reserved.
+
+Redistribution.  Redistribution and use in binary form, without
+modification, are permitted provided that the following conditions are
+met:
+
+* Redistributions must reproduce the above copyright notice and the
+  following disclaimer in the documentation and/or other materials
+  provided with the distribution.
+* Neither the name of Intel Corporation nor the names of its suppliers
+  may be used to endorse or promote products derived from this software
+  without specific prior written permission.
+* No reverse engineering, decompilation, or disassembly of this software
+  is permitted.
+
+Limited patent license.  Intel Corporation grants a world-wide,
+royalty-free, non-exclusive license under patents it now or hereafter
+owns or controls to make, have made, use, import, offer to sell and
+sell ("Utilize") this software, but solely to the extent that any
+such patent is necessary to Utilize the software alone, or in
+combination with an operating system licensed under an approved Open
+Source license as listed by the Open Source Initiative at
+http://opensource.org/licenses.  The patent license shall not apply to
+any other combinations which include this software.  No hardware per
+se is licensed hereunder.
+
+DISCLAIMER.  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
+TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
+USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGE.
Index: src/external/intel-fw-public/iwl105/dist/README.iwlwifi-105-ucode
diff -u /dev/null src/external/intel-fw-public/iwl105/dist/README.iwlwifi-105-ucode:1.1.2.2
--- /dev/null	Wed Jan 28 19:00:29 2015
+++ src/external/intel-fw-public/iwl105/dist/README.iwlwifi-105-ucode	Wed Jan 28 19:00:29 2015
@@ -0,0 +1,113 @@
+Intel Wireless WiFi Link 105 BGN Adapter
+Copyright (C) 2006-2012 Intel Corporation.  All rights reserved.
+
+Microcode Package README.iwlwifi-105-ucode
+
+INDEX
+
+1. OVERVIEW
+2. INSTALLATION
+3. LICENSE
+
+
+1. OVERVIEW
+
+The file iwlwifi-105-6.ucode provided in this package must be
+present on your system in order for the Intel Wireless WiFi Link
+AGN driver for Linux (iwlagn) to operate on your system.
+
+The "-6" in the filename reflects an interface/architecture version number.
+It will change only when changes in new uCode releases make the new uCode
+incompatible with earlier drivers.
+
+On adapter initialization, and at varying times during the uptime of
+the adapter, the microcode is loaded into the memory on the network
+adapter.  The microcode provides the low level MAC features including
+radio control and high precision timing events (backoff, transmit,
+etc.) while also providing varying levels of packet filtering which can
+be used to keep the host from having to handle packets that are not of
+interest given the current operating mode of the device.
+
+2. INSTALLATION
+
+The iwlagn driver will look for the file iwlwifi-105-6.ucode using the
+kernel's firmware_class infrastructure. More information can be found under
+Documentation/firmware_class in kernel source. In order to function
+correctly, you need to have this support enabled in your kernel.  When
+you configure the kernel, you can find this option in the following
+location:
+
+        Device Drivers ->
+                Generic Driver Options ->
+                        Userspace firmware loading support
+
+
+You can determine if your kernel currently has firmware loader support
+by looking for the CONFIG_FW_LOADER definition on your kernel's
+.config.
+
+In addition to having the firmware_class support in your kernel, you
+must also have a working udev and uevent infrastructure configured.
+The steps for installing and configuring udev are very
+distribution specific.
+
+Once you have the firmware loader in place (or if you aren't sure and
+you just want to try things to see if it works), you need to install
+the microcode file into the appropriate location.
+
+Where that appropriate location is depends (again) on your system
+distribution.  You can typically find this location by looking in the
+udev scripts of your distro, the default is /lib/firmware.
+
+Installation of the firmware is simply:
+
+        % cp iwlwifi-105-6.ucode /lib/firmware
+
+You can now load the driver (see the INSTALL and README.iwlwifi provided with
+the iwlwifi package for information on building and using that driver.)
+
+3. LICENSE
+
+The microcode in this package (iwlwifi-105-6.ucode) is provided under the
+terms of the following license (available in the file
+LICENSE.iwlwifi-105-ucode):
+
+Copyright (c) 2006-2012, Intel Corporation.
+All rights reserved.
+
+Redistribution.  Redistribution and use in binary form, without
+modification, are permitted provided that the following conditions are
+met:
+
+* Redistributions must reproduce the above copyright notice and the
+  following disclaimer in the documentation and/or other materials
+  provided with the distribution.
+* Neither the name of Intel Corporation nor the names of its suppliers
+  may be used to endorse or promote products derived from this software
+  without specific prior written permission.
+* No reverse engineering, decompilation, or disassembly of this software
+  is permitted.
+
+Limited patent license.  Intel Corporation grants a world-wide,
+royalty-free, non-exclusive license under patents it now or hereafter
+owns or controls to make, have made, use, import, offer to sell and
+sell ("Utilize") this software, but solely to the extent that any
+such patent is necessary to Utilize the software alone, or in
+combination with an operating system licensed under an approved Open
+Source license as listed by the Open Source Initiative at
+http://opensource.org/licenses.  The patent license shall not apply to
+any other combinations which include this software.  No hardware per
+se is licensed hereunder.
+
+DISCLAIMER.  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
+TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
+USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGE.
Index: src/external/intel-fw-public/iwl105/dist/iwlwifi-105-6.ucode
Binary files are different

Index: src/external/intel-fw-public/iwl135/Makefile
diff -u /dev/null src/external/intel-fw-public/iwl135/Makefile:1.1.2.2
--- /dev/null	Wed Jan 28 19:00:29 2015
+++ src/external/intel-fw-public/iwl135/Makefile	Wed Jan 28 19:00:28 2015
@@ -0,0 +1,10 @@
+# $NetBSD: Makefile,v 1.1.2.2 2015/01/28 19:00:28 martin Exp $
+
+NOMAN=	# define
+
+FILES=	dist/LICENSE.iwlwifi-135-ucode dist/README.iwlwifi-135-ucode \
+	dist/iwlwifi-135-6.ucode
+
+FILESDIR=	/libdata/firmware/if_iwn
+
+.include <bsd.files.mk>

Index: src/external/intel-fw-public/iwl135/dist/LICENSE.iwlwifi-135-ucode
diff -u /dev/null src/external/intel-fw-public/iwl135/dist/LICENSE.iwlwifi-135-ucode:1.1.2.2
--- /dev/null	Wed Jan 28 19:00:29 2015
+++ src/external/intel-fw-public/iwl135/dist/LICENSE.iwlwifi-135-ucode	Wed Jan 28 19:00:29 2015
@@ -0,0 +1,39 @@
+Copyright (c) 2006-2012, Intel Corporation.
+All rights reserved.
+
+Redistribution.  Redistribution and use in binary form, without
+modification, are permitted provided that the following conditions are
+met:
+
+* Redistributions must reproduce the above copyright notice and the
+  following disclaimer in the documentation and/or other materials
+  provided with the distribution.
+* Neither the name of Intel Corporation nor the names of its suppliers
+  may be used to endorse or promote products derived from this software
+  without specific prior written permission.
+* No reverse engineering, decompilation, or disassembly of this software
+  is permitted.
+
+Limited patent license.  Intel Corporation grants a world-wide,
+royalty-free, non-exclusive license under patents it now or hereafter
+owns or controls to make, have made, use, import, offer to sell and
+sell ("Utilize") this software, but solely to the extent that any
+such patent is necessary to Utilize the software alone, or in
+combination with an operating system licensed under an approved Open
+Source license as listed by the Open Source Initiative at
+http://opensource.org/licenses.  The patent license shall not apply to
+any other combinations which include this software.  No hardware per
+se is licensed hereunder.
+
+DISCLAIMER.  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
+TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
+USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGE.
Index: src/external/intel-fw-public/iwl135/dist/README.iwlwifi-135-ucode
diff -u /dev/null src/external/intel-fw-public/iwl135/dist/README.iwlwifi-135-ucode:1.1.2.2
--- /dev/null	Wed Jan 28 19:00:29 2015
+++ src/external/intel-fw-public/iwl135/dist/README.iwlwifi-135-ucode	Wed Jan 28 19:00:29 2015
@@ -0,0 +1,113 @@
+Intel Wireless WiFi Link 135 BGN Adapter
+Copyright (C) 2006-2012 Intel Corporation.  All rights reserved.
+
+Microcode Package README.iwlwifi-135-ucode
+
+INDEX
+
+1. OVERVIEW
+2. INSTALLATION
+3. LICENSE
+
+
+1. OVERVIEW
+
+The file iwlwifi-135-6.ucode provided in this package must be
+present on your system in order for the Intel Wireless WiFi Link
+AGN driver for Linux (iwlagn) to operate on your system.
+
+The "-6" in the filename reflects an interface/architecture version number.
+It will change only when changes in new uCode releases make the new uCode
+incompatible with earlier drivers.
+
+On adapter initialization, and at varying times during the uptime of
+the adapter, the microcode is loaded into the memory on the network
+adapter.  The microcode provides the low level MAC features including
+radio control and high precision timing events (backoff, transmit,
+etc.) while also providing varying levels of packet filtering which can
+be used to keep the host from having to handle packets that are not of
+interest given the current operating mode of the device.
+
+2. INSTALLATION
+
+The iwlagn driver will look for the file iwlwifi-135-6.ucode using the
+kernel's firmware_class infrastructure. More information can be found under
+Documentation/firmware_class in kernel source. In order to function
+correctly, you need to have this support enabled in your kernel.  When
+you configure the kernel, you can find this option in the following
+location:
+
+        Device Drivers ->
+                Generic Driver Options ->
+                        Userspace firmware loading support
+
+
+You can determine if your kernel currently has firmware loader support
+by looking for the CONFIG_FW_LOADER definition on your kernel's
+.config.
+
+In addition to having the firmware_class support in your kernel, you
+must also have a working udev and uevent infrastructure configured.
+The steps for installing and configuring udev are very
+distribution specific.
+
+Once you have the firmware loader in place (or if you aren't sure and
+you just want to try things to see if it works), you need to install
+the microcode file into the appropriate location.
+
+Where that appropriate location is depends (again) on your system
+distribution.  You can typically find this location by looking in the
+udev scripts of your distro, the default is /lib/firmware.
+
+Installation of the firmware is simply:
+
+        % cp iwlwifi-135-6.ucode /lib/firmware
+
+You can now load the driver (see the INSTALL and README.iwlwifi provided with
+the iwlwifi package for information on building and using that driver.)
+
+3. LICENSE
+
+The microcode in this package (iwlwifi-135-6.ucode) is provided under the
+terms of the following license (available in the file
+LICENSE.iwlwifi-135-ucode):
+
+Copyright (c) 2006-2012, Intel Corporation.
+All rights reserved.
+
+Redistribution.  Redistribution and use in binary form, without
+modification, are permitted provided that the following conditions are
+met:
+
+* Redistributions must reproduce the above copyright notice and the
+  following disclaimer in the documentation and/or other materials
+  provided with the distribution.
+* Neither the name of Intel Corporation nor the names of its suppliers
+  may be used to endorse or promote products derived from this software
+  without specific prior written permission.
+* No reverse engineering, decompilation, or disassembly of this software
+  is permitted.
+
+Limited patent license.  Intel Corporation grants a world-wide,
+royalty-free, non-exclusive license under patents it now or hereafter
+owns or controls to make, have made, use, import, offer to sell and
+sell ("Utilize") this software, but solely to the extent that any
+such patent is necessary to Utilize the software alone, or in
+combination with an operating system licensed under an approved Open
+Source license as listed by the Open Source Initiative at
+http://opensource.org/licenses.  The patent license shall not apply to
+any other combinations which include this software.  No hardware per
+se is licensed hereunder.
+
+DISCLAIMER.  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
+TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
+USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGE.
Index: src/external/intel-fw-public/iwl135/dist/iwlwifi-135-6.ucode
Binary files are different

Index: src/external/intel-fw-public/iwl2000/Makefile
diff -u /dev/null src/external/intel-fw-public/iwl2000/Makefile:1.1.2.2
--- /dev/null	Wed Jan 28 19:00:29 2015
+++ src/external/intel-fw-public/iwl2000/Makefile	Wed Jan 28 19:00:29 2015
@@ -0,0 +1,10 @@
+# $NetBSD: Makefile,v 1.1.2.2 2015/01/28 19:00:29 martin Exp $
+
+NOMAN=	# define
+
+FILES=	dist/LICENSE.iwlwifi-2000-ucode dist/README.iwlwifi-2000-ucode \
+	dist/iwlwifi-2000-6.ucode
+
+FILESDIR=	/libdata/firmware/if_iwn
+
+.include <bsd.files.mk>

Index: src/external/intel-fw-public/iwl2000/dist/LICENSE.iwlwifi-2000-ucode
diff -u /dev/null src/external/intel-fw-public/iwl2000/dist/LICENSE.iwlwifi-2000-ucode:1.1.2.2
--- /dev/null	Wed Jan 28 19:00:29 2015
+++ src/external/intel-fw-public/iwl2000/dist/LICENSE.iwlwifi-2000-ucode	Wed Jan 28 19:00:29 2015
@@ -0,0 +1,39 @@
+Copyright (c) 2006-2012, Intel Corporation.
+All rights reserved.
+
+Redistribution.  Redistribution and use in binary form, without
+modification, are permitted provided that the following conditions are
+met:
+
+* Redistributions must reproduce the above copyright notice and the
+  following disclaimer in the documentation and/or other materials
+  provided with the distribution.
+* Neither the name of Intel Corporation nor the names of its suppliers
+  may be used to endorse or promote products derived from this software
+  without specific prior written permission.
+* No reverse engineering, decompilation, or disassembly of this software
+  is permitted.
+
+Limited patent license.  Intel Corporation grants a world-wide,
+royalty-free, non-exclusive license under patents it now or hereafter
+owns or controls to make, have made, use, import, offer to sell and
+sell ("Utilize") this software, but solely to the extent that any
+such patent is necessary to Utilize the software alone, or in
+combination with an operating system licensed under an approved Open
+Source license as listed by the Open Source Initiative at
+http://opensource.org/licenses.  The patent license shall not apply to
+any other combinations which include this software.  No hardware per
+se is licensed hereunder.
+
+DISCLAIMER.  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
+TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
+USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGE.
Index: src/external/intel-fw-public/iwl2000/dist/README.iwlwifi-2000-ucode
diff -u /dev/null src/external/intel-fw-public/iwl2000/dist/README.iwlwifi-2000-ucode:1.1.2.2
--- /dev/null	Wed Jan 28 19:00:29 2015
+++ src/external/intel-fw-public/iwl2000/dist/README.iwlwifi-2000-ucode	Wed Jan 28 19:00:29 2015
@@ -0,0 +1,113 @@
+Intel Wireless WiFi Link 2200 BGN Adapter
+Copyright (C) 2006-2012 Intel Corporation.  All rights reserved.
+
+Microcode Package README.iwlwifi-2000-ucode
+
+INDEX
+
+1. OVERVIEW
+2. INSTALLATION
+3. LICENSE
+
+
+1. OVERVIEW
+
+The file iwlwifi-2000-6.ucode provided in this package must be
+present on your system in order for the Intel Wireless WiFi Link
+AGN driver for Linux (iwlagn) to operate on your system.
+
+The "-6" in the filename reflects an interface/architecture version number.
+It will change only when changes in new uCode releases make the new uCode
+incompatible with earlier drivers.
+
+On adapter initialization, and at varying times during the uptime of
+the adapter, the microcode is loaded into the memory on the network
+adapter.  The microcode provides the low level MAC features including
+radio control and high precision timing events (backoff, transmit,
+etc.) while also providing varying levels of packet filtering which can
+be used to keep the host from having to handle packets that are not of
+interest given the current operating mode of the device.
+
+2. INSTALLATION
+
+The iwlagn driver will look for the file iwlwifi-2000-6.ucode using the
+kernel's firmware_class infrastructure. More information can be found under
+Documentation/firmware_class in kernel source. In order to function
+correctly, you need to have this support enabled in your kernel.  When
+you configure the kernel, you can find this option in the following
+location:
+
+        Device Drivers ->
+                Generic Driver Options ->
+                        Userspace firmware loading support
+
+
+You can determine if your kernel currently has firmware loader support
+by looking for the CONFIG_FW_LOADER definition on your kernel's
+.config.
+
+In addition to having the firmware_class support in your kernel, you
+must also have a working udev and uevent infrastructure configured.
+The steps for installing and configuring udev are very
+distribution specific.
+
+Once you have the firmware loader in place (or if you aren't sure and
+you just want to try things to see if it works), you need to install
+the microcode file into the appropriate location.
+
+Where that appropriate location is depends (again) on your system
+distribution.  You can typically find this location by looking in the
+udev scripts of your distro, the default is /lib/firmware.
+
+Installation of the firmware is simply:
+
+        % cp iwlwifi-2000-6.ucode /lib/firmware
+
+You can now load the driver (see the INSTALL and README.iwlwifi provided with
+the iwlwifi package for information on building and using that driver.)
+
+3. LICENSE
+
+The microcode in this package (iwlwifi-2000-6.ucode) is provided under the
+terms of the following license (available in the file
+LICENSE.iwlwifi-2000-ucode):
+
+Copyright (c) 2006-2012, Intel Corporation.
+All rights reserved.
+
+Redistribution.  Redistribution and use in binary form, without
+modification, are permitted provided that the following conditions are
+met:
+
+* Redistributions must reproduce the above copyright notice and the
+  following disclaimer in the documentation and/or other materials
+  provided with the distribution.
+* Neither the name of Intel Corporation nor the names of its suppliers
+  may be used to endorse or promote products derived from this software
+  without specific prior written permission.
+* No reverse engineering, decompilation, or disassembly of this software
+  is permitted.
+
+Limited patent license.  Intel Corporation grants a world-wide,
+royalty-free, non-exclusive license under patents it now or hereafter
+owns or controls to make, have made, use, import, offer to sell and
+sell ("Utilize") this software, but solely to the extent that any
+such patent is necessary to Utilize the software alone, or in
+combination with an operating system licensed under an approved Open
+Source license as listed by the Open Source Initiative at
+http://opensource.org/licenses.  The patent license shall not apply to
+any other combinations which include this software.  No hardware per
+se is licensed hereunder.
+
+DISCLAIMER.  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
+TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
+USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGE.
Index: src/external/intel-fw-public/iwl2000/dist/iwlwifi-2000-6.ucode
Binary files are different

Index: src/external/intel-fw-public/iwl2030/Makefile
diff -u /dev/null src/external/intel-fw-public/iwl2030/Makefile:1.1.2.2
--- /dev/null	Wed Jan 28 19:00:29 2015
+++ src/external/intel-fw-public/iwl2030/Makefile	Wed Jan 28 19:00:28 2015
@@ -0,0 +1,10 @@
+# $NetBSD: Makefile,v 1.1.2.2 2015/01/28 19:00:28 martin Exp $
+
+NOMAN=	# define
+
+FILES=	dist/LICENSE.iwlwifi-2030-ucode dist/README.iwlwifi-2030-ucode \
+	dist/iwlwifi-2030-6.ucode
+
+FILESDIR=	/libdata/firmware/if_iwn
+
+.include <bsd.files.mk>

Index: src/external/intel-fw-public/iwl2030/dist/LICENSE.iwlwifi-2030-ucode
diff -u /dev/null src/external/intel-fw-public/iwl2030/dist/LICENSE.iwlwifi-2030-ucode:1.1.2.2
--- /dev/null	Wed Jan 28 19:00:29 2015
+++ src/external/intel-fw-public/iwl2030/dist/LICENSE.iwlwifi-2030-ucode	Wed Jan 28 19:00:28 2015
@@ -0,0 +1,39 @@
+Copyright (c) 2006-2012, Intel Corporation.
+All rights reserved.
+
+Redistribution.  Redistribution and use in binary form, without
+modification, are permitted provided that the following conditions are
+met:
+
+* Redistributions must reproduce the above copyright notice and the
+  following disclaimer in the documentation and/or other materials
+  provided with the distribution.
+* Neither the name of Intel Corporation nor the names of its suppliers
+  may be used to endorse or promote products derived from this software
+  without specific prior written permission.
+* No reverse engineering, decompilation, or disassembly of this software
+  is permitted.
+
+Limited patent license.  Intel Corporation grants a world-wide,
+royalty-free, non-exclusive license under patents it now or hereafter
+owns or controls to make, have made, use, import, offer to sell and
+sell ("Utilize") this software, but solely to the extent that any
+such patent is necessary to Utilize the software alone, or in
+combination with an operating system licensed under an approved Open
+Source license as listed by the Open Source Initiative at
+http://opensource.org/licenses.  The patent license shall not apply to
+any other combinations which include this software.  No hardware per
+se is licensed hereunder.
+
+DISCLAIMER.  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
+TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
+USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGE.
Index: src/external/intel-fw-public/iwl2030/dist/README.iwlwifi-2030-ucode
diff -u /dev/null src/external/intel-fw-public/iwl2030/dist/README.iwlwifi-2030-ucode:1.1.2.2
--- /dev/null	Wed Jan 28 19:00:29 2015
+++ src/external/intel-fw-public/iwl2030/dist/README.iwlwifi-2030-ucode	Wed Jan 28 19:00:28 2015
@@ -0,0 +1,113 @@
+Intel Wireless WiFi Link 2230 BGN Adapter
+Copyright (C) 2006-2012 Intel Corporation.  All rights reserved.
+
+Microcode Package README.iwlwifi-2030-ucode
+
+INDEX
+
+1. OVERVIEW
+2. INSTALLATION
+3. LICENSE
+
+
+1. OVERVIEW
+
+The file iwlwifi-2030-6.ucode provided in this package must be
+present on your system in order for the Intel Wireless WiFi Link
+AGN driver for Linux (iwlagn) to operate on your system.
+
+The "-6" in the filename reflects an interface/architecture version number.
+It will change only when changes in new uCode releases make the new uCode
+incompatible with earlier drivers.
+
+On adapter initialization, and at varying times during the uptime of
+the adapter, the microcode is loaded into the memory on the network
+adapter.  The microcode provides the low level MAC features including
+radio control and high precision timing events (backoff, transmit,
+etc.) while also providing varying levels of packet filtering which can
+be used to keep the host from having to handle packets that are not of
+interest given the current operating mode of the device.
+
+2. INSTALLATION
+
+The iwlagn driver will look for the file iwlwifi-2030-6.ucode using the
+kernel's firmware_class infrastructure. More information can be found under
+Documentation/firmware_class in kernel source. In order to function
+correctly, you need to have this support enabled in your kernel.  When
+you configure the kernel, you can find this option in the following
+location:
+
+        Device Drivers ->
+                Generic Driver Options ->
+                        Userspace firmware loading support
+
+
+You can determine if your kernel currently has firmware loader support
+by looking for the CONFIG_FW_LOADER definition on your kernel's
+.config.
+
+In addition to having the firmware_class support in your kernel, you
+must also have a working udev and uevent infrastructure configured.
+The steps for installing and configuring udev are very
+distribution specific.
+
+Once you have the firmware loader in place (or if you aren't sure and
+you just want to try things to see if it works), you need to install
+the microcode file into the appropriate location.
+
+Where that appropriate location is depends (again) on your system
+distribution.  You can typically find this location by looking in the
+udev scripts of your distro, the default is /lib/firmware.
+
+Installation of the firmware is simply:
+
+        % cp iwlwifi-2030-6.ucode /lib/firmware
+
+You can now load the driver (see the INSTALL and README.iwlwifi provided with
+the iwlwifi package for information on building and using that driver.)
+
+3. LICENSE
+
+The microcode in this package (iwlwifi-2030-6.ucode) is provided under the
+terms of the following license (available in the file
+LICENSE.iwlwifi-2030-ucode):
+
+Copyright (c) 2006-2012, Intel Corporation.
+All rights reserved.
+
+Redistribution.  Redistribution and use in binary form, without
+modification, are permitted provided that the following conditions are
+met:
+
+* Redistributions must reproduce the above copyright notice and the
+  following disclaimer in the documentation and/or other materials
+  provided with the distribution.
+* Neither the name of Intel Corporation nor the names of its suppliers
+  may be used to endorse or promote products derived from this software
+  without specific prior written permission.
+* No reverse engineering, decompilation, or disassembly of this software
+  is permitted.
+
+Limited patent license.  Intel Corporation grants a world-wide,
+royalty-free, non-exclusive license under patents it now or hereafter
+owns or controls to make, have made, use, import, offer to sell and
+sell ("Utilize") this software, but solely to the extent that any
+such patent is necessary to Utilize the software alone, or in
+combination with an operating system licensed under an approved Open
+Source license as listed by the Open Source Initiative at
+http://opensource.org/licenses.  The patent license shall not apply to
+any other combinations which include this software.  No hardware per
+se is licensed hereunder.
+
+DISCLAIMER.  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
+TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
+USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGE.
Index: src/external/intel-fw-public/iwl2030/dist/iwlwifi-2030-6.ucode
Binary files are different

Reply via email to