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

Reply via email to