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