Module Name:    src
Committed By:   nonaka
Date:           Fri Feb 13 18:57:47 UTC 2015

Modified Files:
        src/distrib/sets/lists/base: mi
        src/etc/mtree: NetBSD.dist.base
        src/external/intel-fw-public: Makefile
        src/sys/arch/amd64/conf: ALL GENERIC
        src/sys/arch/i386/conf: ALL GENERIC
        src/sys/dev/pci: if_iwm.c if_iwmvar.h
Added Files:
        src/external/intel-fw-public/iwl3160: Makefile
        src/external/intel-fw-public/iwl3160/dist: LICENSE.iwlwifi-3160-ucode
            README.iwlwifi-3160-ucode iwlwifi-3160-9.ucode
        src/external/intel-fw-public/iwl7260: Makefile
        src/external/intel-fw-public/iwl7260/dist: LICENSE.iwlwifi-7260-ucode
            README.iwlwifi-7260-ucode iwlwifi-7260-9.ucode
        src/external/intel-fw-public/iwl7265: Makefile
        src/external/intel-fw-public/iwl7265/dist: LICENSE.iwlwifi-7265-ucode
            README.iwlwifi-7265-ucode iwlwifi-7265-9.ucode

Log Message:
iwm(4) works now, but 2.4GHz only.

> iwm0 at pci2 dev 0 function 0: Intel Dual Band Wireless AC 3160 (rev. 0x83)
> iwm0: interrupting at ioapic0 pin 18
> iwm0: hw rev: 0x160, fw ver 25.228 (API ver 9), address XX:XX:XX:XX:XX:XX
> iwm0: 11b rates: 1Mbps 2Mbps 5.5Mbps 11Mbps
> iwm0: 11g rates: 1Mbps 2Mbps 5.5Mbps 11Mbps 6Mbps 9Mbps 12Mbps 18Mbps 24Mbps 
> 36Mbps 48Mbps 54Mbps


To generate a diff of this commit:
cvs rdiff -u -r1.1095 -r1.1096 src/distrib/sets/lists/base/mi
cvs rdiff -u -r1.142 -r1.143 src/etc/mtree/NetBSD.dist.base
cvs rdiff -u -r1.8 -r1.9 src/external/intel-fw-public/Makefile
cvs rdiff -u -r0 -r1.1 src/external/intel-fw-public/iwl3160/Makefile
cvs rdiff -u -r0 -r1.1 \
    src/external/intel-fw-public/iwl3160/dist/LICENSE.iwlwifi-3160-ucode \
    src/external/intel-fw-public/iwl3160/dist/README.iwlwifi-3160-ucode \
    src/external/intel-fw-public/iwl3160/dist/iwlwifi-3160-9.ucode
cvs rdiff -u -r0 -r1.1 src/external/intel-fw-public/iwl7260/Makefile
cvs rdiff -u -r0 -r1.1 \
    src/external/intel-fw-public/iwl7260/dist/LICENSE.iwlwifi-7260-ucode \
    src/external/intel-fw-public/iwl7260/dist/README.iwlwifi-7260-ucode \
    src/external/intel-fw-public/iwl7260/dist/iwlwifi-7260-9.ucode
cvs rdiff -u -r0 -r1.1 src/external/intel-fw-public/iwl7265/Makefile
cvs rdiff -u -r0 -r1.1 \
    src/external/intel-fw-public/iwl7265/dist/LICENSE.iwlwifi-7265-ucode \
    src/external/intel-fw-public/iwl7265/dist/README.iwlwifi-7265-ucode \
    src/external/intel-fw-public/iwl7265/dist/iwlwifi-7265-9.ucode
cvs rdiff -u -r1.24 -r1.25 src/sys/arch/amd64/conf/ALL
cvs rdiff -u -r1.407 -r1.408 src/sys/arch/amd64/conf/GENERIC
cvs rdiff -u -r1.390 -r1.391 src/sys/arch/i386/conf/ALL
cvs rdiff -u -r1.1118 -r1.1119 src/sys/arch/i386/conf/GENERIC
cvs rdiff -u -r1.4 -r1.5 src/sys/dev/pci/if_iwm.c
cvs rdiff -u -r1.2 -r1.3 src/sys/dev/pci/if_iwmvar.h

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.1095 src/distrib/sets/lists/base/mi:1.1096
--- src/distrib/sets/lists/base/mi:1.1095	Mon Jan 26 00:20:19 2015
+++ src/distrib/sets/lists/base/mi	Fri Feb 13 18:57:46 2015
@@ -1,4 +1,4 @@
-# $NetBSD: mi,v 1.1095 2015/01/26 00:20:19 christos Exp $
+# $NetBSD: mi,v 1.1096 2015/02/13 18:57:46 nonaka Exp $
 #
 # Note:	Don't delete entries from here - mark them as "obsolete" instead,
 #	unless otherwise stated below.
@@ -145,6 +145,16 @@
 ./libdata/firmware/if_iwi/ipw2200-bss.fw	base-firmware-root
 ./libdata/firmware/if_iwi/ipw2200-ibss.fw	base-firmware-root
 ./libdata/firmware/if_iwi/ipw2200-sniffer.fw	base-firmware-root
+./libdata/firmware/if_iwm			base-firmware-root
+./libdata/firmware/if_iwm/LICENSE.iwlwifi-3160-ucode	base-firmware-root
+./libdata/firmware/if_iwm/LICENSE.iwlwifi-7260-ucode	base-firmware-root
+./libdata/firmware/if_iwm/LICENSE.iwlwifi-7265-ucode	base-firmware-root
+./libdata/firmware/if_iwm/README.iwlwifi-3160-ucode	base-firmware-root
+./libdata/firmware/if_iwm/README.iwlwifi-7260-ucode	base-firmware-root
+./libdata/firmware/if_iwm/README.iwlwifi-7265-ucode	base-firmware-root
+./libdata/firmware/if_iwm/iwlwifi-3160-9.ucode	base-firmware-root
+./libdata/firmware/if_iwm/iwlwifi-7260-9.ucode	base-firmware-root
+./libdata/firmware/if_iwm/iwlwifi-7265-9.ucode	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

Index: src/etc/mtree/NetBSD.dist.base
diff -u src/etc/mtree/NetBSD.dist.base:1.142 src/etc/mtree/NetBSD.dist.base:1.143
--- src/etc/mtree/NetBSD.dist.base:1.142	Sun Jan 25 15:49:39 2015
+++ src/etc/mtree/NetBSD.dist.base	Fri Feb 13 18:57:47 2015
@@ -1,4 +1,4 @@
-#	$NetBSD: NetBSD.dist.base,v 1.142 2015/01/25 15:49:39 christos Exp $
+#	$NetBSD: NetBSD.dist.base,v 1.143 2015/02/13 18:57:47 nonaka Exp $
 #	@(#)4.4BSD.dist	8.1 (Berkeley) 6/13/93
 
 # Do not customize this file as it may be overwritten on upgrades.
@@ -68,6 +68,7 @@
 ./libdata/firmware/if_athn
 ./libdata/firmware/if_ipw
 ./libdata/firmware/if_iwi
+./libdata/firmware/if_iwm
 ./libdata/firmware/if_iwn
 ./libdata/firmware/if_otus
 ./libdata/firmware/if_urtwn

Index: src/external/intel-fw-public/Makefile
diff -u src/external/intel-fw-public/Makefile:1.8 src/external/intel-fw-public/Makefile:1.9
--- src/external/intel-fw-public/Makefile:1.8	Thu Oct 30 13:05:58 2014
+++ src/external/intel-fw-public/Makefile	Fri Feb 13 18:57:47 2015
@@ -1,6 +1,7 @@
-# $NetBSD: Makefile,v 1.8 2014/10/30 13:05:58 nonaka Exp $
+# $NetBSD: Makefile,v 1.9 2015/02/13 18:57:47 nonaka Exp $
 
-SUBDIR+=	ipw3945 iwl100 iwl105 iwl135 iwl1000 iwl2000 iwl2030 \
-		iwl4965 iwl5000 iwl5150 iwl6000 iwl6005 iwl6030 iwl6050
+SUBDIR+=	ipw3945 iwl100 iwl105 iwl135 iwl1000 iwl2000 iwl2030 iwl3160 \
+		iwl4965 iwl5000 iwl5150 iwl6000 iwl6005 iwl6030 iwl6050 \
+		iwl7260 iwl7265
 
 .include <bsd.subdir.mk>

Index: src/sys/arch/amd64/conf/ALL
diff -u src/sys/arch/amd64/conf/ALL:1.24 src/sys/arch/amd64/conf/ALL:1.25
--- src/sys/arch/amd64/conf/ALL:1.24	Fri Dec 19 07:04:52 2014
+++ src/sys/arch/amd64/conf/ALL	Fri Feb 13 18:57:47 2015
@@ -1,4 +1,4 @@
-# $NetBSD: ALL,v 1.24 2014/12/19 07:04:52 ozaki-r Exp $
+# $NetBSD: ALL,v 1.25 2015/02/13 18:57:47 nonaka Exp $
 # From NetBSD: GENERIC,v 1.787 2006/10/01 18:37:54 bouyer Exp
 #
 # ALL machine description file
@@ -17,7 +17,7 @@ include 	"arch/amd64/conf/std.amd64"
 
 options 	INCLUDE_CONFIG_FILE	# embed config file in kernel binary
 
-#ident 		"ALL-$Revision: 1.24 $"
+#ident 		"ALL-$Revision: 1.25 $"
 
 maxusers	64		# estimated number of users
 
@@ -912,6 +912,7 @@ gsip*	at pci? dev ? function ?	# NS83820
 hme*	at pci? dev ? function ?	# Sun Microelectronics STP2002-STQ
 ipw*	at pci? dev ? function ?	# Intel PRO/Wireless 2100
 iwi*	at pci? dev ? function ?	# Intel PRO/Wireless 2200BG
+iwm*	at pci? dev ? function ?	# Intel Wireless WiFi Link 7xxx
 iwn*	at pci? dev ? function ?	# Intel PRO/Wireless 4965AGN
 ixg*	at pci? dev ? function ?	# Intel 8259x 10 gigabit
 jme*	at pci? dev ? function ?	# JMicron JMC2[56]0 Ethernet

Index: src/sys/arch/amd64/conf/GENERIC
diff -u src/sys/arch/amd64/conf/GENERIC:1.407 src/sys/arch/amd64/conf/GENERIC:1.408
--- src/sys/arch/amd64/conf/GENERIC:1.407	Sat Feb  7 13:20:00 2015
+++ src/sys/arch/amd64/conf/GENERIC	Fri Feb 13 18:57:47 2015
@@ -1,4 +1,4 @@
-# $NetBSD: GENERIC,v 1.407 2015/02/07 13:20:00 pooka Exp $
+# $NetBSD: GENERIC,v 1.408 2015/02/13 18:57:47 nonaka Exp $
 #
 # GENERIC machine description file
 #
@@ -22,7 +22,7 @@ include	"arch/amd64/conf/std.amd64"
 
 options 	INCLUDE_CONFIG_FILE	# embed config file in kernel binary
 
-#ident 		"GENERIC-$Revision: 1.407 $"
+#ident 		"GENERIC-$Revision: 1.408 $"
 
 maxusers	64		# estimated number of users
 
@@ -734,7 +734,7 @@ gsip*	at pci? dev ? function ?	# NS83820
 ipw*	at pci? dev ? function ?	# Intel PRO/Wireless 2100
 iwi*	at pci? dev ? function ?	# Intel PRO/Wireless 2200BG
 iwn*	at pci? dev ? function ?	# Intel PRO/Wireless 4965AGN
-#iwm*	at pci? dev ? function ?	# Intel Centrino 7260
+iwm*	at pci? dev ? function ?	# Intel Centrino 7260
 ixg*	at pci? dev ? function ?	# Intel 8259x 10 gigabit
 jme*	at pci? dev ? function ?	# JMicron JMC2[56]0 ethernet
 hme*	at pci? dev ? function ?	# Sun Microelectronics STP2002-STQ

Index: src/sys/arch/i386/conf/ALL
diff -u src/sys/arch/i386/conf/ALL:1.390 src/sys/arch/i386/conf/ALL:1.391
--- src/sys/arch/i386/conf/ALL:1.390	Fri Dec 19 07:04:52 2014
+++ src/sys/arch/i386/conf/ALL	Fri Feb 13 18:57:47 2015
@@ -1,4 +1,4 @@
-# $NetBSD: ALL,v 1.390 2014/12/19 07:04:52 ozaki-r Exp $
+# $NetBSD: ALL,v 1.391 2015/02/13 18:57:47 nonaka Exp $
 # From NetBSD: GENERIC,v 1.787 2006/10/01 18:37:54 bouyer Exp
 #
 # ALL machine description file
@@ -17,7 +17,7 @@ include 	"arch/i386/conf/std.i386"
 
 options 	INCLUDE_CONFIG_FILE	# embed config file in kernel binary
 
-#ident 		"ALL-$Revision: 1.390 $"
+#ident 		"ALL-$Revision: 1.391 $"
 
 maxusers	64		# estimated number of users
 
@@ -1034,6 +1034,7 @@ gsip*	at pci? dev ? function ?	# NS83820
 hme*	at pci? dev ? function ?	# Sun Microelectronics STP2002-STQ
 ipw*	at pci? dev ? function ?	# Intel PRO/Wireless 2100
 iwi*	at pci? dev ? function ?	# Intel PRO/Wireless 2200BG
+iwm*	at pci? dev ? function ?	# Intel Wireless WiFi Link 7xxx
 iwn*	at pci? dev ? function ?	# Intel PRO/Wireless 4965AGN
 ixg*	at pci? dev ? function ?	# Intel 8259x 10 gigabit
 jme*	at pci? dev ? function ?	# JMicron JMC2[56]0 Ethernet

Index: src/sys/arch/i386/conf/GENERIC
diff -u src/sys/arch/i386/conf/GENERIC:1.1118 src/sys/arch/i386/conf/GENERIC:1.1119
--- src/sys/arch/i386/conf/GENERIC:1.1118	Sun Nov 16 16:01:41 2014
+++ src/sys/arch/i386/conf/GENERIC	Fri Feb 13 18:57:47 2015
@@ -1,4 +1,4 @@
-# $NetBSD: GENERIC,v 1.1118 2014/11/16 16:01:41 manu Exp $
+# $NetBSD: GENERIC,v 1.1119 2015/02/13 18:57:47 nonaka Exp $
 #
 # GENERIC machine description file
 #
@@ -22,7 +22,7 @@ include 	"arch/i386/conf/std.i386"
 
 options 	INCLUDE_CONFIG_FILE	# embed config file in kernel binary
 
-#ident 		"GENERIC-$Revision: 1.1118 $"
+#ident 		"GENERIC-$Revision: 1.1119 $"
 
 maxusers	64		# estimated number of users
 
@@ -975,6 +975,7 @@ gsip*	at pci? dev ? function ?	# NS83820
 hme*	at pci? dev ? function ?	# Sun Microelectronics STP2002-STQ
 ipw*	at pci? dev ? function ?	# Intel PRO/Wireless 2100
 iwi*	at pci? dev ? function ?	# Intel PRO/Wireless 2200BG
+iwm*	at pci? dev ? function ?	# Intel Wireless WiFi Link 7xxx
 iwn*	at pci? dev ? function ?	# Intel PRO/Wireless 4965AGN
 ixg*	at pci? dev ? function ?	# Intel 8259x 10 gigabit
 jme*	at pci? dev ? function ?	# JMicron JMC2[56]0 Ethernet

Index: src/sys/dev/pci/if_iwm.c
diff -u src/sys/dev/pci/if_iwm.c:1.4 src/sys/dev/pci/if_iwm.c:1.5
--- src/sys/dev/pci/if_iwm.c:1.4	Fri Feb 13 18:02:32 2015
+++ src/sys/dev/pci/if_iwm.c	Fri Feb 13 18:57:47 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: if_iwm.c,v 1.4 2015/02/13 18:02:32 nonaka Exp $	*/
+/*	$NetBSD: if_iwm.c,v 1.5 2015/02/13 18:57:47 nonaka Exp $	*/
 /*	OpenBSD: if_iwm.c,v 1.18 2015/02/11 01:12:42 brad Exp	*/
 
 /*
@@ -105,7 +105,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: if_iwm.c,v 1.4 2015/02/13 18:02:32 nonaka Exp $");
+__KERNEL_RCSID(0, "$NetBSD: if_iwm.c,v 1.5 2015/02/13 18:57:47 nonaka Exp $");
 
 #include <sys/param.h>
 #include <sys/conf.h>
@@ -201,7 +201,6 @@ static const struct iwm_rate {
 
 struct iwm_newstate_state {
 	struct work ns_wk;
-	struct ieee80211com *ns_ic;
 	enum ieee80211_state ns_nstate;
 	int ns_arg;
 	int ns_generation;
@@ -415,9 +414,9 @@ static int	iwm_release(struct iwm_softc 
 static void	iwm_calib_timeout(void *);
 static void	iwm_setrates(struct iwm_node *);
 static int	iwm_media_change(struct ifnet *);
-static void	iwm_newstate_cb(void *);
+static void	iwm_newstate_cb(struct work *, void *);
 static int	iwm_newstate(struct ieee80211com *, enum ieee80211_state, int);
-static void	iwm_endscan_cb(void *);
+static void	iwm_endscan_cb(struct work *, void *);
 static int	iwm_init_hw(struct iwm_softc *);
 static int	iwm_init(struct ifnet *);
 static void	iwm_start(struct ifnet *);
@@ -860,7 +859,7 @@ iwm_read_mem(struct iwm_softc *sc, uint3
 static int
 iwm_write_mem(struct iwm_softc *sc, uint32_t addr, const void *buf, int dwords)
 {
-	int offs;	
+	int offs;
 	const uint32_t *vals = buf;
 
 	if (iwm_nic_lock(sc)) {
@@ -1217,8 +1216,9 @@ iwm_alloc_tx_ring(struct iwm_softc *sc, 
 		    + offsetof(struct iwm_tx_cmd, scratch);
 		paddr += sizeof(struct iwm_device_cmd);
 
-		error = bus_dmamap_create(sc->sc_dmat, MCLBYTES,
-		    IWM_NUM_OF_TBS, MCLBYTES, 0, BUS_DMA_NOWAIT, &data->map);
+		error = bus_dmamap_create(sc->sc_dmat, IWM_RBUF_SIZE,
+		    IWM_NUM_OF_TBS, IWM_RBUF_SIZE, 0, BUS_DMA_NOWAIT,
+		    &data->map);
 		if (error != 0) {
 			aprint_error_dev(sc->sc_dev,
 			    "could not create TX buf DMA map\n");
@@ -1868,7 +1868,7 @@ iwm_post_alive(struct iwm_softc *sc)
 		return EBUSY;
 
 	if (sc->sched_base != iwm_read_prph(sc, IWM_SCD_SRAM_BASE_ADDR)) {
-		DPRINTF(("%s: sched addr mismatch", DEVNAME(sc)));
+		DPRINTF(("%s: sched addr mismatch\n", DEVNAME(sc)));
 		error = EINVAL;
 		goto out;
 	}
@@ -1992,10 +1992,9 @@ iwm_phy_db_get_section(struct iwm_softc 
 
 static int
 iwm_phy_db_set_section(struct iwm_softc *sc,
-	struct iwm_calib_res_notif_phy_db *phy_db_notif)
+    struct iwm_calib_res_notif_phy_db *phy_db_notif, uint16_t size)
 {
 	enum iwm_phy_db_section_type type = le16toh(phy_db_notif->type);
-	uint16_t size  = le16toh(phy_db_notif->length);
 	struct iwm_phy_db_entry *entry;
 	uint16_t chg_id = 0;
 
@@ -2008,8 +2007,8 @@ iwm_phy_db_set_section(struct iwm_softc 
 		return EINVAL;
 
 	if (entry->data)
-		kmem_free(entry->data, entry->size);
-	entry->data = kmem_alloc(size, KM_NOSLEEP);
+		kmem_intr_free(entry->data, entry->size);
+	entry->data = kmem_intr_alloc(size, KM_NOSLEEP);
 	if (!entry->data) {
 		entry->size = 0;
 		return ENOMEM;
@@ -2017,7 +2016,7 @@ iwm_phy_db_set_section(struct iwm_softc 
 	memcpy(entry->data, phy_db_notif->data, size);
 	entry->size = size;
 
-	DPRINTFN(10, ("%s(%d): [PHYDB]SET: Type %d , Size: %d, data: %p\n",
+	DPRINTFN(10, ("%s(%d): [PHYDB]SET: Type %d, Size: %d, data: %p\n",
 	    __func__, __LINE__, type, size, entry->data));
 
 	return 0;
@@ -2126,7 +2125,8 @@ iwm_send_phy_db_cmd(struct iwm_softc *sc
 		.flags = IWM_CMD_SYNC,
 	};
 
-	DPRINTFN(10, ("Sending PHY-DB hcmd of type %d, of length %d\n", type, length));
+	DPRINTFN(10, ("Sending PHY-DB hcmd of type %d, of length %d\n",
+	    type, length));
 
 	/* Set phy db cmd variables */
 	phy_db_cmd.type = le16toh(type);
@@ -2629,9 +2629,8 @@ iwm_parse_nvm_data(struct iwm_softc *sc,
 	data->sku_cap_11n_enable = 0;
 
 	if (!data->valid_tx_ant || !data->valid_rx_ant) {
-		DPRINTF(("%s: invalid antennas (0x%x, 0x%x)\n",
-			    DEVNAME(sc), data->valid_tx_ant,
-			    data->valid_rx_ant));
+		DPRINTF(("%s: invalid antennas (0x%x, 0x%x)\n", DEVNAME(sc),
+		    data->valid_tx_ant, data->valid_rx_ant));
 		return EINVAL;
 	}
 
@@ -2797,7 +2796,8 @@ iwm_load_firmware(struct iwm_softc *sc, 
 		    ucode_type, offset, dlen));
 		error = iwm_firmware_load_chunk(sc, offset, data, dlen);
 		if (error) {
-			DPRINTF(("iwm_firmware_load_chunk() chunk %u of %u returned error %02d\n", i, fws->fw_count, error));
+			DPRINTF(("iwm_firmware_load_chunk() chunk %u of %u "
+			    "returned error %02d\n", i, fws->fw_count, error));
 			return error;
 		}
 	}
@@ -3058,7 +3058,8 @@ iwm_mvm_calc_rssi(struct iwm_softc *sc, 
  * values by -256dBm: practically 0 power and a non-feasible 8 bit value.
  */
 static int
-iwm_mvm_get_signal_strength(struct iwm_softc *sc, struct iwm_rx_phy_info *phy_info)
+iwm_mvm_get_signal_strength(struct iwm_softc *sc,
+    struct iwm_rx_phy_info *phy_info)
 {
 	int energy_a, energy_b, energy_c, max_energy;
 	uint32_t val;
@@ -3076,7 +3077,7 @@ iwm_mvm_get_signal_strength(struct iwm_s
 	max_energy = MAX(energy_a, energy_b);
 	max_energy = MAX(max_energy, energy_c);
 
-	DPRINTFN(12, ("energy In A %d B %d C %d , and max %d\n",
+	DPRINTFN(12, ("energy In A %d B %d C %d, and max %d\n",
 	    energy_a, energy_b, energy_c, max_energy));
 
 	return max_energy;
@@ -3549,7 +3550,7 @@ iwm_send_cmd(struct iwm_softc *sc, struc
 		}
 		cmd = mtod(m, struct iwm_device_cmd *);
 		error = bus_dmamap_load(sc->sc_dmat, data->map, cmd,
-		    hcmd->len[0], NULL, BUS_DMA_NOWAIT | BUS_DMA_WRITE);
+		    IWM_RBUF_SIZE, NULL, BUS_DMA_NOWAIT | BUS_DMA_WRITE);
 		if (error != 0) {
 			m_freem(m);
 			goto out;
@@ -3582,16 +3583,15 @@ iwm_send_cmd(struct iwm_softc *sc, struc
 	desc->num_tbs = 1;
 
 	DPRINTFN(8, ("iwm_send_cmd 0x%x size=%lu %s\n",
-	    code, hcmd->len[0] + hcmd->len[1] + sizeof(cmd->hdr),
-	    async ? " (async)" : ""));
+	    code, sizeof(cmd->hdr) + paylen, async ? " (async)" : ""));
 
-	if (hcmd->len[0] > sizeof(cmd->data)) {
-		bus_dmamap_sync(sc->sc_dmat, data->map, 0, hcmd->len[0],
-		    BUS_DMASYNC_PREWRITE);
+	if (paylen > sizeof(cmd->data)) {
+		bus_dmamap_sync(sc->sc_dmat, data->map, 0,
+		    sizeof(cmd->hdr) + paylen, BUS_DMASYNC_PREWRITE);
 	} else {
 		bus_dmamap_sync(sc->sc_dmat, ring->cmd_dma.map,
 		    (char *)(void *)cmd - (char *)(void *)ring->cmd_dma.vaddr,
-		    hcmd->len[0] + 4, BUS_DMASYNC_PREWRITE);
+		    sizeof(cmd->hdr) + paylen, BUS_DMASYNC_PREWRITE);
 	}
 	bus_dmamap_sync(sc->sc_dmat, ring->desc_dma.map,
 	    (char *)(void *)desc - (char *)(void *)ring->desc_dma.vaddr,
@@ -5284,8 +5284,7 @@ iwm_release(struct iwm_softc *sc, struct
 static struct ieee80211_node *
 iwm_node_alloc(struct ieee80211_node_table *nt)
 {
-
-	return kmem_zalloc(sizeof (struct iwm_node), KM_NOSLEEP | M_ZERO);
+	return malloc(sizeof(struct iwm_node), M_80211_NODE, M_NOWAIT | M_ZERO);
 }
 
 static void
@@ -5417,16 +5416,15 @@ iwm_media_change(struct ifnet *ifp)
 }
 
 static void
-iwm_newstate_cb(void *wk)
+iwm_newstate_cb(struct work *wk, void *v)
 {
+	struct iwm_softc *sc = v;
+	struct ieee80211com *ic = &sc->sc_ic;
 	struct iwm_newstate_state *iwmns = (void *)wk;
-	struct ieee80211com *ic = iwmns->ns_ic;
 	enum ieee80211_state nstate = iwmns->ns_nstate;
 	int generation = iwmns->ns_generation;
 	struct iwm_node *in;
 	int arg = iwmns->ns_arg;
-	struct ifnet *ifp = IC2IFP(ic);
-	struct iwm_softc *sc = ifp->if_softc;
 	int error;
 
 	kmem_free(iwmns, sizeof(*iwmns));
@@ -5530,6 +5528,7 @@ iwm_newstate_cb(void *wk)
 		break; }
 
 	default:
+		DPRINTF(("%s: unsupported state %d\n", DEVNAME(sc), nstate));
 		break;
 	}
 
@@ -5545,13 +5544,12 @@ iwm_newstate(struct ieee80211com *ic, en
 
 	callout_stop(&sc->sc_calib_to);
 
-	iwmns = kmem_alloc(sizeof(*iwmns), KM_NOSLEEP);
+	iwmns = kmem_intr_alloc(sizeof(*iwmns), KM_NOSLEEP);
 	if (!iwmns) {
 		DPRINTF(("%s: allocating state cb mem failed\n", DEVNAME(sc)));
 		return ENOMEM;
 	}
 
-	iwmns->ns_ic = ic;
 	iwmns->ns_nstate = nstate;
 	iwmns->ns_arg = arg;
 	iwmns->ns_generation = sc->sc_generation;
@@ -5562,7 +5560,7 @@ iwm_newstate(struct ieee80211com *ic, en
 }
 
 static void
-iwm_endscan_cb(void *arg)
+iwm_endscan_cb(struct work *work __unused, void *arg)
 {
 	struct iwm_softc *sc = arg;
 	struct ieee80211com *ic = &sc->sc_ic;
@@ -5822,7 +5820,7 @@ iwm_watchdog(struct ifnet *ifp)
 	ifp->if_timer = 0;
 	if (sc->sc_tx_timer > 0) {
 		if (--sc->sc_tx_timer == 0) {
-                        aprint_error_dev(sc->sc_dev, "device timeout\n");
+			aprint_error_dev(sc->sc_dev, "device timeout\n");
 #ifdef IWM_DEBUG
 			iwm_nic_error(sc);
 #endif
@@ -6102,7 +6100,7 @@ iwm_notif_intr(struct iwm_softc *sc)
 	hw = le16toh(sc->rxq.stat->closed_rb_num) & 0xfff;
 	while (sc->rxq.cur != hw) {
 		struct iwm_rx_data *data = &sc->rxq.data[sc->rxq.cur];
-		struct iwm_rx_packet *pkt;
+		struct iwm_rx_packet *pkt, tmppkt;
 		struct iwm_cmd_response *cresp;
 		int qid, idx;
 
@@ -6133,7 +6131,9 @@ iwm_notif_intr(struct iwm_softc *sc)
 			break;
 
 		case IWM_REPLY_RX_MPDU_CMD:
+			tmppkt = *pkt; // XXX m is freed by ieee80211_input()
 			iwm_mvm_rx_rx_mpdu(sc, pkt, data);
+			pkt = &tmppkt;
 			break;
 
 		case IWM_TX_CMD:
@@ -6163,7 +6163,11 @@ iwm_notif_intr(struct iwm_softc *sc)
 			struct iwm_calib_res_notif_phy_db *phy_db_notif;
 			SYNC_RESP_STRUCT(phy_db_notif, pkt);
 
-			iwm_phy_db_set_section(sc, phy_db_notif);
+			uint16_t size = le16toh(phy_db_notif->length);
+			bus_dmamap_sync(sc->sc_dmat, data->map,
+			    sizeof(*pkt) + sizeof(*phy_db_notif),
+			    size, BUS_DMASYNC_POSTREAD);
+			iwm_phy_db_set_section(sc, phy_db_notif, size);
 
 			break; }
 
@@ -6437,23 +6441,23 @@ iwm_intr(void *arg)
  */
 
 static const pci_product_id_t iwm_devices[] = {
-	0x08b1,
-#if 0
-	PCI_PRODUCT_INTEL_WL_7260_1,
-	PCI_PRODUCT_INTEL_WL_7260_2,
-#endif
+	PCI_PRODUCT_INTEL_WIFI_LINK_7260_1,
+	PCI_PRODUCT_INTEL_WIFI_LINK_7260_2,
+	PCI_PRODUCT_INTEL_WIFI_LINK_3160_1,
+	PCI_PRODUCT_INTEL_WIFI_LINK_3160_2,
+	PCI_PRODUCT_INTEL_WIFI_LINK_7265_1,
+	PCI_PRODUCT_INTEL_WIFI_LINK_7265_2,
 };
 
 static int
 iwm_match(device_t parent, cfdata_t match __unused, void *aux)
 {
 	struct pci_attach_args *pa = aux;
-	size_t i;
 
 	if (PCI_VENDOR(pa->pa_id) != PCI_VENDOR_INTEL)
 		return 0;
 
-	for (i = 0; i < __arraycount(iwm_devices); i++)
+	for (size_t i = 0; i < __arraycount(iwm_devices); i++)
 		if (PCI_PRODUCT(pa->pa_id) == iwm_devices[i])
 			return 1;
 
@@ -6492,14 +6496,11 @@ iwm_attach_hook(device_t dev)
 
 	KASSERT(!cold);
 
-	sc->sc_wantresp = -1;
-
 	if (iwm_preinit(sc) != 0)
 		return;
 
 	sc->sc_flags |= IWM_FLAG_ATTACHED;
 
-	ic->ic_ifp = ifp;
 	aprint_normal_dev(sc->sc_dev,
 	    "hw rev: 0x%x, fw ver %d.%d (API ver %d), address %s\n",
 	    sc->sc_hw_rev & IWM_CSR_HW_REV_TYPE_MSK,
@@ -6508,6 +6509,7 @@ iwm_attach_hook(device_t dev)
 	    IWM_UCODE_API(sc->sc_fwver),
 	    ether_sprintf(sc->sc_nvm.hw_addr));
 	
+	ic->ic_ifp = ifp;
 	ic->ic_phytype = IEEE80211_T_OFDM;	/* not only, but not used */
 	ic->ic_opmode = IEEE80211_M_STA;	/* default to BSS mode */
 	ic->ic_state = IEEE80211_S_INIT;
@@ -6550,9 +6552,9 @@ iwm_attach_hook(device_t dev)
 	IFQ_SET_READY(&ifp->if_snd);
 	memcpy(ifp->if_xname, DEVNAME(sc), IFNAMSIZ);
 
-	if_attach(ifp);
-	ic->ic_debug = 0;
+	if_initialize(ifp);
 	ieee80211_ifattach(ic);
+	if_register(ifp);
 
 	ic->ic_node_alloc = iwm_node_alloc;
 
@@ -6565,7 +6567,6 @@ iwm_attach_hook(device_t dev)
 	iwm_radiotap_attach(sc);
 	callout_init(&sc->sc_calib_to, 0);
 	callout_setfunc(&sc->sc_calib_to, iwm_calib_timeout, sc);
-	iwm_radiotap_attach(sc);
 
 	//task_set(&sc->init_task, iwm_init_task, sc);
 }
@@ -6585,6 +6586,7 @@ iwm_attach(device_t parent, device_t sel
 	sc->sc_pct = pa->pa_pc;
 	sc->sc_pcitag = pa->pa_tag;
 	sc->sc_dmat = pa->pa_dmat;
+	sc->sc_pciid = pa->pa_id;
 
 	pci_aprint_devinfo(pa, NULL);
 
@@ -6639,8 +6641,27 @@ iwm_attach(device_t parent, device_t sel
 	}
 	aprint_normal_dev(self, "interrupting at %s\n", intrstr);
 
-	/* only one firmware possibility for now */
-	sc->sc_fwname = IWM_FWNAME;
+	sc->sc_wantresp = -1;
+
+	switch (PCI_PRODUCT(sc->sc_pciid)) {
+	case PCI_PRODUCT_INTEL_WIFI_LINK_7260_1:
+	case PCI_PRODUCT_INTEL_WIFI_LINK_7260_2:
+		sc->sc_fwname = "iwlwifi-7260-9.ucode";
+		break;
+	case PCI_PRODUCT_INTEL_WIFI_LINK_3160_1:
+	case PCI_PRODUCT_INTEL_WIFI_LINK_3160_2:
+		sc->sc_fwname = "iwlwifi-3160-9.ucode";
+		break;
+	case PCI_PRODUCT_INTEL_WIFI_LINK_7265_1:
+	case PCI_PRODUCT_INTEL_WIFI_LINK_7265_2:
+		sc->sc_fwname = "iwlwifi-7265-9.ucode";
+		break;
+	default:
+		aprint_error_dev(self, "unknown product %#x",
+		    PCI_PRODUCT(sc->sc_pciid));
+		return;
+	}
+	DPRINTF(("%s: firmware=%s\n", DEVNAME(sc), sc->sc_fwname));
 	sc->sc_fwdmasegsz = IWM_FWDMASEGSZ;
 
 	/*
@@ -6697,9 +6718,9 @@ iwm_attach(device_t parent, device_t sel
 	}
 
 	workqueue_create(&sc->sc_eswq, "iwmes",
-	    (void *)iwm_endscan_cb, sc, PRI_NONE, IPL_NET, 0);
+	    iwm_endscan_cb, sc, PRI_NONE, IPL_NET, 0);
 	workqueue_create(&sc->sc_nswq, "iwmns",
-	    (void *)iwm_newstate_cb, sc, PRI_NONE, IPL_NET, 0);
+	    iwm_newstate_cb, sc, PRI_NONE, IPL_NET, 0);
 
 	/* Clear pending interrupts. */
 	IWM_WRITE(sc, IWM_CSR_INT, 0xffffffff);

Index: src/sys/dev/pci/if_iwmvar.h
diff -u src/sys/dev/pci/if_iwmvar.h:1.2 src/sys/dev/pci/if_iwmvar.h:1.3
--- src/sys/dev/pci/if_iwmvar.h:1.2	Fri Feb 13 17:14:06 2015
+++ src/sys/dev/pci/if_iwmvar.h	Fri Feb 13 18:57:47 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: if_iwmvar.h,v 1.2 2015/02/13 17:14:06 nonaka Exp $	*/
+/*	$NetBSD: if_iwmvar.h,v 1.3 2015/02/13 18:57:47 nonaka Exp $	*/
 /*	OpenBSD: if_iwmvar.h,v 1.3 2015/02/07 07:10:44 phessler Exp 	*/
 
 /*
@@ -138,7 +138,6 @@ struct iwm_tx_radiotap_header {
 	 (1 << IEEE80211_RADIOTAP_CHANNEL))
 
 #define IWM_UCODE_SECT_MAX 6
-#define IWM_FWNAME "iwm-7260-9"
 #define IWM_FWDMASEGSZ (192*1024)
 /* sanity check value */
 #define IWM_FWMAXSIZE (2*1024*1024)
@@ -365,7 +364,7 @@ struct iwm_bf_data {
 };
 
 struct iwm_softc {
-	struct device *sc_dev;
+	device_t sc_dev;
 	struct ethercom sc_ec;
 	struct ieee80211com sc_ic;
 
@@ -382,6 +381,7 @@ struct iwm_softc {
 	bus_dma_tag_t sc_dmat;
 	pci_chipset_tag_t sc_pct;
 	pcitag_t sc_pcitag;
+	pcireg_t sc_pciid;
 	const void *sc_ih;
 
 	/* TX scheduler rings. */

Added files:

Index: src/external/intel-fw-public/iwl3160/Makefile
diff -u /dev/null src/external/intel-fw-public/iwl3160/Makefile:1.1
--- /dev/null	Fri Feb 13 18:57:48 2015
+++ src/external/intel-fw-public/iwl3160/Makefile	Fri Feb 13 18:57:47 2015
@@ -0,0 +1,10 @@
+# $NetBSD: Makefile,v 1.1 2015/02/13 18:57:47 nonaka Exp $
+
+NOMAN=	# define
+
+FILES=	dist/LICENSE.iwlwifi-3160-ucode dist/README.iwlwifi-3160-ucode \
+	dist/iwlwifi-3160-9.ucode
+
+FILESDIR=	/libdata/firmware/if_iwm
+
+.include <bsd.files.mk>

Index: src/external/intel-fw-public/iwl3160/dist/LICENSE.iwlwifi-3160-ucode
diff -u /dev/null src/external/intel-fw-public/iwl3160/dist/LICENSE.iwlwifi-3160-ucode:1.1
--- /dev/null	Fri Feb 13 18:57:48 2015
+++ src/external/intel-fw-public/iwl3160/dist/LICENSE.iwlwifi-3160-ucode	Fri Feb 13 18:57:47 2015
@@ -0,0 +1,39 @@
+Copyright (c) 2014, 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/iwl3160/dist/README.iwlwifi-3160-ucode
diff -u /dev/null src/external/intel-fw-public/iwl3160/dist/README.iwlwifi-3160-ucode:1.1
--- /dev/null	Fri Feb 13 18:57:48 2015
+++ src/external/intel-fw-public/iwl3160/dist/README.iwlwifi-3160-ucode	Fri Feb 13 18:57:47 2015
@@ -0,0 +1,113 @@
+Intel Wireless WiFi Link 3160 AC Adapter
+Copyright (C) 2014 Intel Corporation.  All rights reserved.
+
+Microcode Package README.iwlwifi-3160-ucode
+
+INDEX
+
+1. OVERVIEW
+2. INSTALLATION
+3. LICENSE
+
+
+1. OVERVIEW
+
+The file iwlwifi-3160-9.ucode provided in this package must be
+present on your system in order for the Intel Wireless WiFi Link
+AGN driver for Linux (iwlwifi) to operate on your system.
+
+The "-9" 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 iwlwifi driver will look for the file iwlwifi-3160-9.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-3160-9.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-3160-9.ucode) is provided under the
+terms of the following license (available in the file
+LICENSE.iwlwifi-3160-ucode):
+
+Copyright (c) 2014, 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/iwl3160/dist/iwlwifi-3160-9.ucode
Binary files are different

Index: src/external/intel-fw-public/iwl7260/Makefile
diff -u /dev/null src/external/intel-fw-public/iwl7260/Makefile:1.1
--- /dev/null	Fri Feb 13 18:57:48 2015
+++ src/external/intel-fw-public/iwl7260/Makefile	Fri Feb 13 18:57:47 2015
@@ -0,0 +1,10 @@
+# $NetBSD: Makefile,v 1.1 2015/02/13 18:57:47 nonaka Exp $
+
+NOMAN=	# define
+
+FILES=	dist/LICENSE.iwlwifi-7260-ucode dist/README.iwlwifi-7260-ucode \
+	dist/iwlwifi-7260-9.ucode
+
+FILESDIR=	/libdata/firmware/if_iwm
+
+.include <bsd.files.mk>

Index: src/external/intel-fw-public/iwl7260/dist/LICENSE.iwlwifi-7260-ucode
diff -u /dev/null src/external/intel-fw-public/iwl7260/dist/LICENSE.iwlwifi-7260-ucode:1.1
--- /dev/null	Fri Feb 13 18:57:48 2015
+++ src/external/intel-fw-public/iwl7260/dist/LICENSE.iwlwifi-7260-ucode	Fri Feb 13 18:57:47 2015
@@ -0,0 +1,39 @@
+Copyright (c) 2014, 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/iwl7260/dist/README.iwlwifi-7260-ucode
diff -u /dev/null src/external/intel-fw-public/iwl7260/dist/README.iwlwifi-7260-ucode:1.1
--- /dev/null	Fri Feb 13 18:57:48 2015
+++ src/external/intel-fw-public/iwl7260/dist/README.iwlwifi-7260-ucode	Fri Feb 13 18:57:47 2015
@@ -0,0 +1,113 @@
+Intel Wireless WiFi Link 7260 AC Adapter
+Copyright (C) 2014 Intel Corporation.  All rights reserved.
+
+Microcode Package README.iwlwifi-7260-ucode
+
+INDEX
+
+1. OVERVIEW
+2. INSTALLATION
+3. LICENSE
+
+
+1. OVERVIEW
+
+The file iwlwifi-7260-9.ucode provided in this package must be
+present on your system in order for the Intel Wireless WiFi Link
+AGN driver for Linux (iwlwifi) to operate on your system.
+
+The "-9" 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 iwlwifi driver will look for the file iwlwifi-7260-9.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-7260-9.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-7260-9.ucode) is provided under the
+terms of the following license (available in the file
+LICENSE.iwlwifi-7260-ucode):
+
+Copyright (c) 2014, 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/iwl7260/dist/iwlwifi-7260-9.ucode
Binary files are different

Index: src/external/intel-fw-public/iwl7265/Makefile
diff -u /dev/null src/external/intel-fw-public/iwl7265/Makefile:1.1
--- /dev/null	Fri Feb 13 18:57:48 2015
+++ src/external/intel-fw-public/iwl7265/Makefile	Fri Feb 13 18:57:47 2015
@@ -0,0 +1,10 @@
+# $NetBSD: Makefile,v 1.1 2015/02/13 18:57:47 nonaka Exp $
+
+NOMAN=	# define
+
+FILES=	dist/LICENSE.iwlwifi-7265-ucode dist/README.iwlwifi-7265-ucode \
+	dist/iwlwifi-7265-9.ucode
+
+FILESDIR=	/libdata/firmware/if_iwm
+
+.include <bsd.files.mk>

Index: src/external/intel-fw-public/iwl7265/dist/LICENSE.iwlwifi-7265-ucode
diff -u /dev/null src/external/intel-fw-public/iwl7265/dist/LICENSE.iwlwifi-7265-ucode:1.1
--- /dev/null	Fri Feb 13 18:57:48 2015
+++ src/external/intel-fw-public/iwl7265/dist/LICENSE.iwlwifi-7265-ucode	Fri Feb 13 18:57:47 2015
@@ -0,0 +1,39 @@
+Copyright (c) 2014, 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/iwl7265/dist/README.iwlwifi-7265-ucode
diff -u /dev/null src/external/intel-fw-public/iwl7265/dist/README.iwlwifi-7265-ucode:1.1
--- /dev/null	Fri Feb 13 18:57:48 2015
+++ src/external/intel-fw-public/iwl7265/dist/README.iwlwifi-7265-ucode	Fri Feb 13 18:57:47 2015
@@ -0,0 +1,113 @@
+Intel Wireless WiFi Link 7265 AC Adapter
+Copyright (C) 2014 Intel Corporation.  All rights reserved.
+
+Microcode Package README.iwlwifi-7265-ucode
+
+INDEX
+
+1. OVERVIEW
+2. INSTALLATION
+3. LICENSE
+
+
+1. OVERVIEW
+
+The file iwlwifi-7265-9.ucode provided in this package must be
+present on your system in order for the Intel Wireless WiFi Link
+AGN driver for Linux (iwlwifi) to operate on your system.
+
+The "-9" 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 iwlwifi driver will look for the file iwlwifi-7265-9.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-7265-9.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-7265-9.ucode) is provided under the
+terms of the following license (available in the file
+LICENSE.iwlwifi-7265-ucode):
+
+Copyright (c) 2014, 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/iwl7265/dist/iwlwifi-7265-9.ucode
Binary files are different

Reply via email to