Module Name: src Committed By: prlw1 Date: Sun Jul 28 11:46:24 UTC 2013
Modified Files: src/doc: CHANGES src/external/intel-fw-public: Makefile Makefile.inc src/sys/dev/pci: if_iwn.c if_iwnreg.h if_iwnvar.h Added Files: src/external/intel-fw-public/iwl6030: Makefile src/external/intel-fw-public/iwl6030/dist: LICENSE.iwlwifi-6000g2b-ucode README.iwlwifi-6000g2b-ucode iwlwifi-6000g2b-6.ucode Log Message: Add support for Centrino Wireless-N 1030 and Centrino Advanced-N 6230 http://mail-index.netbsd.org/tech-net/2013/01/04/msg003802.html To generate a diff of this commit: cvs rdiff -u -r1.1836 -r1.1837 src/doc/CHANGES cvs rdiff -u -r1.6 -r1.7 src/external/intel-fw-public/Makefile cvs rdiff -u -r1.1 -r1.2 src/external/intel-fw-public/Makefile.inc cvs rdiff -u -r0 -r1.1 src/external/intel-fw-public/iwl6030/Makefile cvs rdiff -u -r0 -r1.1 \ src/external/intel-fw-public/iwl6030/dist/LICENSE.iwlwifi-6000g2b-ucode \ src/external/intel-fw-public/iwl6030/dist/README.iwlwifi-6000g2b-ucode \ src/external/intel-fw-public/iwl6030/dist/iwlwifi-6000g2b-6.ucode cvs rdiff -u -r1.66 -r1.67 src/sys/dev/pci/if_iwn.c cvs rdiff -u -r1.12 -r1.13 src/sys/dev/pci/if_iwnreg.h cvs rdiff -u -r1.14 -r1.15 src/sys/dev/pci/if_iwnvar.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/doc/CHANGES diff -u src/doc/CHANGES:1.1836 src/doc/CHANGES:1.1837 --- src/doc/CHANGES:1.1836 Sat Jul 27 19:25:23 2013 +++ src/doc/CHANGES Sun Jul 28 11:46:24 2013 @@ -1,4 +1,4 @@ -# LIST OF CHANGES FROM LAST RELEASE: <$Revision: 1.1836 $> +# LIST OF CHANGES FROM LAST RELEASE: <$Revision: 1.1837 $> # # # [Note: This file does not mention every change made to the NetBSD source tree. @@ -262,3 +262,5 @@ Changes from NetBSD 6.0 to NetBSD 7.0: addressing modes). [matt 20130719] bind: update to 9.9.3-P2 to fix CVE-2013-4854 remote query can cause named to terminate + iwn(4): Add support for Centrino Wireless-N 1030 and Centrino + Advanced-N 6230 [prlw1 20130728] Index: src/external/intel-fw-public/Makefile diff -u src/external/intel-fw-public/Makefile:1.6 src/external/intel-fw-public/Makefile:1.7 --- src/external/intel-fw-public/Makefile:1.6 Fri May 20 01:59:14 2011 +++ src/external/intel-fw-public/Makefile Sun Jul 28 11:46:24 2013 @@ -1,6 +1,6 @@ -# $NetBSD: Makefile,v 1.6 2011/05/20 01:59:14 msaitoh Exp $ +# $NetBSD: Makefile,v 1.7 2013/07/28 11:46:24 prlw1 Exp $ SUBDIR+= ipw3945 iwl1000 iwl4965 iwl5000 iwl5150 iwl6000 iwl6005 \ - iwl6050 + iwl6030 iwl6050 .include <bsd.subdir.mk> Index: src/external/intel-fw-public/Makefile.inc diff -u src/external/intel-fw-public/Makefile.inc:1.1 src/external/intel-fw-public/Makefile.inc:1.2 --- src/external/intel-fw-public/Makefile.inc:1.1 Thu Oct 30 00:27:32 2008 +++ src/external/intel-fw-public/Makefile.inc Sun Jul 28 11:46:24 2013 @@ -1,4 +1,4 @@ -# $NetBSD +# $NetBSD: Makefile.inc,v 1.2 2013/07/28 11:46:24 prlw1 Exp $ FILESOWN= ${FIRMWAREOWN} FILESGRP= ${FIRMWAREGRP} Index: src/sys/dev/pci/if_iwn.c diff -u src/sys/dev/pci/if_iwn.c:1.66 src/sys/dev/pci/if_iwn.c:1.67 --- src/sys/dev/pci/if_iwn.c:1.66 Sat Jun 15 13:05:35 2013 +++ src/sys/dev/pci/if_iwn.c Sun Jul 28 11:46:24 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: if_iwn.c,v 1.66 2013/06/15 13:05:35 christos Exp $ */ +/* $NetBSD: if_iwn.c,v 1.67 2013/07/28 11:46:24 prlw1 Exp $ */ /* $OpenBSD: if_iwn.c,v 1.119 2013/05/29 23:16:52 yuo Exp $ */ /*- @@ -22,7 +22,7 @@ * adapters. */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: if_iwn.c,v 1.66 2013/06/15 13:05:35 christos Exp $"); +__KERNEL_RCSID(0, "$NetBSD: if_iwn.c,v 1.67 2013/07/28 11:46:24 prlw1 Exp $"); #define IWN_USE_RBUF /* Use local storage for RX */ #undef IWN_HWCRYPTO /* XXX does not even compile yet */ @@ -35,6 +35,9 @@ __KERNEL_RCSID(0, "$NetBSD: if_iwn.c,v 1 #include <sys/socket.h> #include <sys/systm.h> #include <sys/malloc.h> +#ifdef notyetMODULE +#include <sys/module.h> +#endif #include <sys/mutex.h> #include <sys/conf.h> #include <sys/kauth.h> @@ -227,6 +230,11 @@ static void iwn_tune_sensitivity(struct static int iwn_send_sensitivity(struct iwn_softc *); static int iwn_set_pslevel(struct iwn_softc *, int, int, int); static int iwn5000_runtime_calib(struct iwn_softc *); + +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(struct iwn_softc *); static int iwn_scan(struct iwn_softc *, uint16_t); static int iwn_auth(struct iwn_softc *); @@ -618,6 +626,7 @@ iwn4965_attach(struct iwn_softc *sc, pci ops->read_eeprom = iwn4965_read_eeprom; ops->post_alive = iwn4965_post_alive; ops->nic_config = iwn4965_nic_config; + ops->config_bt_coex = iwn_config_bt_coex_bluetooth; ops->update_sched = iwn4965_update_sched; ops->get_temperature = iwn4965_get_temperature; ops->get_rssi = iwn4965_get_rssi; @@ -657,6 +666,7 @@ iwn5000_attach(struct iwn_softc *sc, pci ops->read_eeprom = iwn5000_read_eeprom; ops->post_alive = iwn5000_post_alive; ops->nic_config = iwn5000_nic_config; + ops->config_bt_coex = iwn_config_bt_coex_bluetooth; ops->update_sched = iwn5000_update_sched; ops->get_temperature = iwn5000_get_temperature; ops->get_rssi = iwn5000_get_rssi; @@ -717,7 +727,16 @@ iwn5000_attach(struct iwn_softc *sc, pci break; case IWN_HW_REV_TYPE_6005: sc->limits = &iwn6000_sensitivity_limits; - sc->fwname = "iwlwifi-6000g2a-5.ucode"; + /* Type 6030 cards return IWN_HW_REV_TYPE_6005 */ + if (pid == PCI_PRODUCT_INTEL_WIFI_LINK_1030_1 || + pid == PCI_PRODUCT_INTEL_WIFI_LINK_1030_2 || + pid == PCI_PRODUCT_INTEL_WIFI_LINK_6230_1 || + pid == PCI_PRODUCT_INTEL_WIFI_LINK_6230_2) { + sc->fwname = "iwlwifi-6000g2b-6.ucode"; + ops->config_bt_coex = iwn_config_bt_coex_adv1; + } + else + sc->fwname = "iwlwifi-6000g2a-5.ucode"; break; default: aprint_normal(": adapter type %d not supported\n", sc->hw_type); @@ -4107,16 +4126,108 @@ iwn5000_runtime_calib(struct iwn_softc * } static int +iwn_config_bt_coex_bluetooth(struct iwn_softc *sc) +{ + struct iwn_bluetooth bluetooth; + + memset(&bluetooth, 0, sizeof bluetooth); + bluetooth.flags = IWN_BT_COEX_ENABLE; + bluetooth.lead_time = IWN_BT_LEAD_TIME_DEF; + bluetooth.max_kill = IWN_BT_MAX_KILL_DEF; + + DPRINTF(("configuring bluetooth coexistence\n")); + return iwn_cmd(sc, IWN_CMD_BT_COEX, &bluetooth, sizeof bluetooth, 0); +} + +static int +iwn_config_bt_coex_prio_table(struct iwn_softc *sc) +{ + uint8_t prio_table[16]; + + memset(&prio_table, 0, sizeof prio_table); + prio_table[ 0] = 6; /* init calibration 1 */ + prio_table[ 1] = 7; /* init calibration 2 */ + prio_table[ 2] = 2; /* periodic calib low 1 */ + prio_table[ 3] = 3; /* periodic calib low 2 */ + prio_table[ 4] = 4; /* periodic calib high 1 */ + prio_table[ 5] = 5; /* periodic calib high 2 */ + prio_table[ 6] = 6; /* dtim */ + prio_table[ 7] = 8; /* scan52 */ + prio_table[ 8] = 10; /* scan24 */ + + DPRINTF(("sending priority lookup table\n")); + return iwn_cmd(sc, IWN_CMD_BT_COEX_PRIO_TABLE, + &prio_table, sizeof prio_table, 0); +} + +static int +iwn_config_bt_coex_adv1(struct iwn_softc *sc) +{ + 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; + + DPRINTF(("configuring advanced bluetooth coexistence v1\n")); + error = iwn_cmd(sc, IWN_CMD_BT_COEX, &d, sizeof d, 0); + if (error != 0) { + aprint_error_dev(sc->sc_dev, + "could not configure advanced bluetooth coexistence\n"); + return error; + } + + error = iwn_config_bt_coex_prio_table(sc); + if (error != 0) { + aprint_error_dev(sc->sc_dev, + "could not configure send BT priority table\n"); + return error; + } + + return error; +} + +static int iwn_config(struct iwn_softc *sc) { struct iwn_ops *ops = &sc->ops; struct ieee80211com *ic = &sc->sc_ic; struct ifnet *ifp = ic->ic_ifp; - struct iwn_bluetooth bluetooth; uint32_t txmask; uint16_t rxchain; int error; + error = ops->config_bt_coex(sc); + if (error != 0) { + aprint_error_dev(sc->sc_dev, + "could not configure bluetooth coexistence\n"); + return error; + } + if (sc->hw_type == IWN_HW_REV_TYPE_6050 || sc->hw_type == IWN_HW_REV_TYPE_6005) { /* Configure runtime DC calibration. */ @@ -4141,19 +4252,6 @@ iwn_config(struct iwn_softc *sc) } } - /* Configure bluetooth coexistence. */ - memset(&bluetooth, 0, sizeof bluetooth); - bluetooth.flags = IWN_BT_COEX_CHAN_ANN | IWN_BT_COEX_BT_PRIO; - bluetooth.lead_time = IWN_BT_LEAD_TIME_DEF; - bluetooth.max_kill = IWN_BT_MAX_KILL_DEF; - DPRINTF(("configuring bluetooth coexistence\n")); - error = iwn_cmd(sc, IWN_CMD_BT_COEX, &bluetooth, sizeof bluetooth, 0); - if (error != 0) { - aprint_error_dev(sc->sc_dev, - "could not configure bluetooth coexistence\n"); - return error; - } - /* Set mode, channel, RX filter and enable RX. */ memset(&sc->rxon, 0, sizeof (struct iwn_rxon)); IEEE80211_ADDR_COPY(ic->ic_myaddr, CLLADDR(ifp->if_sadl)); @@ -6110,3 +6208,39 @@ iwn_fix_channel(struct ieee80211com *ic, } } +#ifdef notyetMODULE + +MODULE(MODULE_CLASS_DRIVER, if_iwn, "pci"); + +#ifdef _MODULE +#include "ioconf.c" +#endif + +static int +if_iwn_modcmd(modcmd_t cmd, void *data) +{ + int error = 0; + + switch (cmd) { + case MODULE_CMD_INIT: +#ifdef _MODULE + error = config_init_component(cfdriver_ioconf_if_iwn, + cfattach_ioconf_if_iwn, cfdata_ioconf_if_iwn); +#endif + return error; + case MODULE_CMD_FINI: +#ifdef _MODULE + error = config_fini_component(cfdriver_ioconf_if_iwn, + cfattach_ioconf_if_iwn, cfdata_ioconf_if_iwn); +#endif + return error; + case MODULE_CMD_AUTOUNLOAD: +#ifdef _MODULE + /* XXX This is not optional! */ +#endif + return error; + default: + return ENOTTY; + } +} +#endif Index: src/sys/dev/pci/if_iwnreg.h diff -u src/sys/dev/pci/if_iwnreg.h:1.12 src/sys/dev/pci/if_iwnreg.h:1.13 --- src/sys/dev/pci/if_iwnreg.h:1.12 Sat Jun 15 13:05:35 2013 +++ src/sys/dev/pci/if_iwnreg.h Sun Jul 28 11:46:24 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: if_iwnreg.h,v 1.12 2013/06/15 13:05:35 christos Exp $ */ +/* $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 $ */ /*- @@ -18,6 +18,8 @@ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ +#include <sys/endian.h> + /* XXX Added for NetBSD */ #define IEEE80211_TKIP_MICLEN 8 @@ -209,6 +211,7 @@ #define IWN_HW_REV_TYPE_6000 7 #define IWN_HW_REV_TYPE_6050 8 #define IWN_HW_REV_TYPE_6005 11 +/* Types 6030 and 6035 also return 11 */ /* Possible flags for register IWN_GIO_CHICKEN. */ #define IWN_GIO_CHICKEN_L1A_NO_L0S_RX (1 << 23) @@ -423,8 +426,8 @@ struct iwn_tx_cmd { #define IWN_CMD_TIMING 20 #define IWN_CMD_ADD_NODE 24 #define IWN_CMD_TX_DATA 28 -#define IWN_CMD_LINK_QUALITY 78 #define IWN_CMD_SET_LED 72 +#define IWN_CMD_LINK_QUALITY 78 #define IWN5000_CMD_WIMAX_COEX 90 #define IWN5000_CMD_CALIB_CONFIG 101 #define IWN_CMD_SET_POWER_MODE 119 @@ -437,6 +440,7 @@ struct iwn_tx_cmd { #define IWN_CMD_SET_CRITICAL_TEMP 164 #define IWN_CMD_SET_SENSITIVITY 168 #define IWN_CMD_PHY_CALIB 176 +#define IWN_CMD_BT_COEX_PRIO_TABLE 204 uint8_t flags; uint8_t idx; @@ -833,22 +837,71 @@ struct iwn5000_cmd_txpower { uint8_t reserved; } __packed; -/* Structure for command IWN_CMD_BLUETOOTH. */ +/* Structure for command IWN_CMD_BT_COEX. */ struct iwn_bluetooth { uint8_t flags; #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 uint8_t lead_time; #define IWN_BT_LEAD_TIME_DEF 30 - uint8_t max_kill; #define IWN_BT_MAX_KILL_DEF 5 - + uint8_t bt3_timer_t7_value; +#define IWN_BT_BT3_T7_DEF 1 + uint32_t kill_ack_mask; +#define IWN_BT_KILL_ACK_MASK_DEF htole32(0xffff0000) + uint32_t kill_cts_mask; +#define IWN_BT_KILL_CTS_MASK_DEF htole32(0xffff0000) +} __packed; + +struct iwn_bt_basic { + struct iwn_bluetooth bt; + 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; + uint16_t valid; +#define IWN_BT_VALID_ENABLE_FLAGS htole16(1 << 0) +#define IWN_BT_VALID_BOOST htole16(1 << 1) +#define IWN_BT_VALID_MAX_KILL htole16(1 << 2) +#define IWN_BT_VALID_3W_TIMERS htole16(1 << 3) +#define IWN_BT_VALID_KILL_ACK_MASK htole16(1 << 4) +#define IWN_BT_VALID_KILL_CTS_MASK htole16(1 << 5) +#define IWN_BT_VALID_REDUCED_TX_PWR htole16(1 << 6) +#define IWN_BT_VALID_3W_LUT htole16(1 << 7) +#define IWN_BT_ALL_VALID_MASK (IWN_BT_VALID_ENABLE_FLAGS | \ + IWN_BT_VALID_BOOST | \ + IWN_BT_VALID_MAX_KILL | \ + IWN_BT_VALID_3W_TIMERS | \ + IWN_BT_VALID_KILL_ACK_MASK | \ + IWN_BT_VALID_KILL_CTS_MASK | \ + IWN_BT_VALID_REDUCED_TX_PWR | \ + IWN_BT_VALID_3W_LUT) +} __packed; + +struct iwn_bt_adv1 { + struct iwn_bt_basic basic; + uint8_t prio_boost; +#define IWN_BT_PRIO_BOOST_DEF 0xf0 + /* set IWLAGN_BT_VALID_BOOST to "1" in "valid" bitmask for */ + uint8_t tx_prio_boost; + uint16_t rx_prio_boost; +} __packed; + +struct iwn_bt_adv2 { + struct iwn_bt_basic basic; + uint32_t prio_boost; +#define IWN_BT_PRIO_BOOST_DEF32 0xf0f0f0 uint8_t reserved; - uint32_t kill_ack; - uint32_t kill_cts; + /* set IWLAGN_BT_VALID_BOOST to "1" in "valid" bitmask for */ + uint8_t tx_prio_boost; + uint16_t rx_prio_boost; } __packed; /* Structure for command IWN_CMD_SET_CRITICAL_TEMP. */ Index: src/sys/dev/pci/if_iwnvar.h diff -u src/sys/dev/pci/if_iwnvar.h:1.14 src/sys/dev/pci/if_iwnvar.h:1.15 --- src/sys/dev/pci/if_iwnvar.h:1.14 Sat Jun 15 13:05:35 2013 +++ src/sys/dev/pci/if_iwnvar.h Sun Jul 28 11:46:24 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: if_iwnvar.h,v 1.14 2013/06/15 13:05:35 christos Exp $ */ +/* $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 $ */ /*- @@ -179,6 +179,7 @@ struct iwn_ops { void (*read_eeprom)(struct iwn_softc *); int (*post_alive)(struct iwn_softc *); int (*nic_config)(struct iwn_softc *); + int (*config_bt_coex)(struct iwn_softc *); void (*update_sched)(struct iwn_softc *, int, int, uint8_t, uint16_t); int (*get_temperature)(struct iwn_softc *); Added files: Index: src/external/intel-fw-public/iwl6030/Makefile diff -u /dev/null src/external/intel-fw-public/iwl6030/Makefile:1.1 --- /dev/null Sun Jul 28 11:46:24 2013 +++ src/external/intel-fw-public/iwl6030/Makefile Sun Jul 28 11:46:24 2013 @@ -0,0 +1,10 @@ +# $NetBSD: Makefile,v 1.1 2013/07/28 11:46:24 prlw1 Exp $ + +NOMAN= # define + +FILES= dist/LICENSE.iwlwifi-6000g2b-ucode dist/README.iwlwifi-6000g2b-ucode \ + dist/iwlwifi-6000g2b-6.ucode + +FILESDIR= /libdata/firmware/if_iwn + +.include <bsd.files.mk> Index: src/external/intel-fw-public/iwl6030/dist/LICENSE.iwlwifi-6000g2b-ucode diff -u /dev/null src/external/intel-fw-public/iwl6030/dist/LICENSE.iwlwifi-6000g2b-ucode:1.1 --- /dev/null Sun Jul 28 11:46:24 2013 +++ src/external/intel-fw-public/iwl6030/dist/LICENSE.iwlwifi-6000g2b-ucode Sun Jul 28 11:46:24 2013 @@ -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/iwl6030/dist/README.iwlwifi-6000g2b-ucode diff -u /dev/null src/external/intel-fw-public/iwl6030/dist/README.iwlwifi-6000g2b-ucode:1.1 --- /dev/null Sun Jul 28 11:46:24 2013 +++ src/external/intel-fw-public/iwl6030/dist/README.iwlwifi-6000g2b-ucode Sun Jul 28 11:46:24 2013 @@ -0,0 +1,113 @@ +Intel Wireless WiFi Link 6005 AGN Adapter +Copyright (C) 2006-2012 Intel Corporation. All rights reserved. + +Microcode Package README.iwlwifi-6000g2b-ucode + +INDEX + +1. OVERVIEW +2. INSTALLATION +3. LICENSE + + +1. OVERVIEW + +The file iwlwifi-6000g2b-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-6000g2b-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-6000g2b-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-6000g2b-6.ucode) is provided under the +terms of the following license (available in the file +LICENSE.iwlwifi-6000g2b-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/iwl6030/dist/iwlwifi-6000g2b-6.ucode Binary files are different