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 <[email protected]>. 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 <[email protected]>
@@ -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