[prev in list] [next in list] [prev in thread] [next in thread]
List: netbsd-users
Subject: Re: iwn 5100AGN for netbsd-5 success
From: Chuck Zmudzinski <brchuckz () netscape ! net>
Date: 2010-12-17 19:08:55
Message-ID: 4D0BB547.5030405 () netscape ! net
[Download RAW message or body]
I finally got my iwn 5100 device working on netbsd-5.
Here is my solution for iwn 5100 AGN devices on netbsd-5
Tested on netbsd release 5.0.2, should work for any netbsd-5 release
After extracting the netbsd-5 kernel sources, change the following
files in /usr/src/sys/dev/pci:
1. Replace the netbsd-5 version of if_iwn.c (revision 1.22.4.3) with
revision 1.33 of the same file
2. Replace the netbsd-5 version of if_iwnreg.h (revision 1.4) with
revision 1.6 of the same file
3. Replace the netbsd-5 version of if_iwnvar.h (revision 1.4) with
revision 1.6 of the same file
4. Add the firmware (iwlwifi-5000-1.ucode) for the 5100 AGN devices to
the /libdata/firmware/if_iwn directory (download it from Intel's
website)
5. Apply the following patch in the /usr/src/sys/dev/pci directory and
then build and install the new kernel:
(This patches if_iwn.c revision 1.33 with two small changes for netbsd-5
compatibility and adds necessary revisions to pcidevs, pcidevs.h,
pcidevs_data.h, and pcireg.h).
--- if_iwn.c 2009-09-10 20:28:20.000000000 -0500
+++ if_iwn.c 2010-12-17 11:31:52.000000000 -0600
@@ -1,6 +1,10 @@
/* $NetBSD: if_iwn.c,v 1.33 2009/09/11 01:28:20 christos Exp $ */
/* $OpenBSD: if_iwn.c,v 1.49 2009/03/29 21:53:52 sthen Exp $ */
-
+/*-
+ * This file is modified for use with netbsd-5 release kernels
+ * The changes in revision 1.25 of iwn.c have been removed
+ * The iwn_ioctl routine was modified to remove case SIOCSIFADDR:
+ */
/*-
* Copyright (c) 2007, 2008
* Damien Bergamini <damien.bergamini@free.fr>
@@ -3194,11 +3198,7 @@
s = splnet();
switch (cmd) {
- case SIOCSIFADDR:
- /* FALLTHROUGH */
case SIOCSIFFLAGS:
- if ((error = ifioctl_common(ifp, cmd, data)) != 0)
- break;
if (ifp->if_flags & IFF_UP) {
/*
* resync the radio state just in case we missed
--- pcidevs.h 2009-03-20 08:02:17.000000000 -0500
+++ pcidevs.h 2010-12-10 07:59:27.000000000 -0600
@@ -1,12 +1,16 @@
-/* $NetBSD: pcidevs.h,v 1.963.4.1 2009/03/20 13:02:17 msaitoh Exp
$ */
+/* $NetBSD$ */
/*
* THIS FILE AUTOMATICALLY GENERATED. DO NOT EDIT.
*
* generated from:
- * NetBSD: pcidevs,v 1.962 2008/10/15 18:30:29 bouyer Exp
+ * NetBSD: pcidevs,v 1.962.4.1 2009/03/20 13:01:35 msaitoh Exp
*/
+/*-
+ * This file is modified for use with netbsd-5 release kernels
+ * The new 5100AGN iwn devices have been added
+ */
/*
* Copyright (c) 1995, 1996 Christopher G. Demetriou
* All rights reserved.
@@ -2595,6 +2599,12 @@
#define PCI_PRODUCT_INTEL_PRO_WL_3945ABG_2 0x4227 /*
PRO/Wireless LAN 3945ABG Mini-PCI Adapter */
#define PCI_PRODUCT_INTEL_PRO_WL_4965AGN_1 0x4229 /*
PRO/Wireless LAN 4965AGN Mini-PCI Adapter */
#define PCI_PRODUCT_INTEL_PRO_WL_4965AGN_2 0x4230 /*
PRO/Wireless LAN 4965AGN Mini-PCI Adapter */
+#define PCI_PRODUCT_INTEL_PRO_WL_5100AGN_1 0x4232 /*
PRO/Wireless LAN 5100AGN Mini-PCI Adapter */
+#define PCI_PRODUCT_INTEL_PRO_WL_5300AGN_1 0x4235 /*
PRO/Wireless LAN 5300AGN Mini-PCI Adapter */
+#define PCI_PRODUCT_INTEL_PRO_WL_5300AGN_2 0x4236 /*
PRO/Wireless LAN 5300AGN Mini-PCI Adapter */
+#define PCI_PRODUCT_INTEL_PRO_WL_5100AGN_2 0x4237 /*
PRO/Wireless LAN 5100AGN Mini-PCI Adapter */
+#define PCI_PRODUCT_INTEL_PRO_WL_5350AGN_1 0x423a /*
PRO/Wireless LAN 5350AGN Mini-PCI Adapter */
+#define PCI_PRODUCT_INTEL_PRO_WL_5350AGN_2 0x423b /*
PRO/Wireless LAN 5350AGN Mini-PCI Adapter */
#define PCI_PRODUCT_INTEL_80312_ATU 0x530d /* 80310 ATU */
#define PCI_PRODUCT_INTEL_82371SB_ISA 0x7000 /* 82371SB
(PIIX3) PCI-ISA Bridge */
#define PCI_PRODUCT_INTEL_82371SB_IDE 0x7010 /* 82371SB
(PIIX3) IDE Interface */
--- pcidevs 2009-03-20 08:01:35.000000000 -0500
+++ pcidevs 2010-12-10 07:59:27.000000000 -0600
@@ -1,5 +1,9 @@
$NetBSD: pcidevs,v 1.962.4.1 2009/03/20 13:01:35 msaitoh Exp $
+/*-
+ * This file is modified for use with netbsd-5 release kernels
+ * The new 5100AGN iwn devices have been added
+ */
/*
* Copyright (c) 1995, 1996 Christopher G. Demetriou
* All rights reserved.
@@ -2588,6 +2592,12 @@
product INTEL PRO_WL_3945ABG_2 0x4227 PRO/Wireless LAN 3945ABG
Mini-PCI Adapter
product INTEL PRO_WL_4965AGN_1 0x4229 PRO/Wireless LAN 4965AGN
Mini-PCI Adapter
product INTEL PRO_WL_4965AGN_2 0x4230 PRO/Wireless LAN 4965AGN
Mini-PCI Adapter
+product INTEL PRO_WL_5100AGN_1 0x4232 PRO/Wireless LAN 5100AGN
Mini-PCI Adapter
+product INTEL PRO_WL_5300AGN_1 0x4235 PRO/Wireless LAN 5300AGN
Mini-PCI Adapter
+product INTEL PRO_WL_5300AGN_2 0x4236 PRO/Wireless LAN 5300AGN
Mini-PCI Adapter
+product INTEL PRO_WL_5100AGN_2 0x4237 PRO/Wireless LAN 5100AGN
Mini-PCI Adapter
+product INTEL PRO_WL_5350AGN_1 0x423a PRO/Wireless LAN 5350AGN
Mini-PCI Adapter
+product INTEL PRO_WL_5350AGN_2 0x423b PRO/Wireless LAN 5350AGN
Mini-PCI Adapter
product INTEL 80312_ATU 0x530d 80310 ATU
product INTEL 82371SB_ISA 0x7000 82371SB (PIIX3) PCI-ISA Bridge
product INTEL 82371SB_IDE 0x7010 82371SB (PIIX3) IDE Interface
--- pcidevs_data.h 2009-03-20 08:02:17.000000000 -0500
+++ pcidevs_data.h 2010-12-10 07:59:27.000000000 -0600
@@ -1,12 +1,16 @@
-/* $NetBSD: pcidevs_data.h,v 1.962.4.1 2009/03/20 13:02:17 msaitoh
Exp $ */
+/* $NetBSD$ */
/*
* THIS FILE AUTOMATICALLY GENERATED. DO NOT EDIT.
*
* generated from:
- * NetBSD: pcidevs,v 1.962 2008/10/15 18:30:29 bouyer Exp
+ * NetBSD: pcidevs,v 1.962.4.1 2009/03/20 13:01:35 msaitoh Exp
*/
+/*-
+ * This file is modified for use with netbsd-5 release kernels
+ * The new 5100AGN iwn devices have been added
+ */
/*
* Copyright (c) 1995, 1996 Christopher G. Demetriou
* All rights reserved.
@@ -9208,6 +9212,30 @@
"PRO/Wireless LAN 4965AGN Mini-PCI Adapter",
},
{
+ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_PRO_WL_5100AGN_1,
+ "PRO/Wireless LAN 5100AGN Mini-PCI Adapter",
+ },
+ {
+ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_PRO_WL_5300AGN_1,
+ "PRO/Wireless LAN 5300AGN Mini-PCI Adapter",
+ },
+ {
+ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_PRO_WL_5300AGN_2,
+ "PRO/Wireless LAN 5300AGN Mini-PCI Adapter",
+ },
+ {
+ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_PRO_WL_5100AGN_2,
+ "PRO/Wireless LAN 5100AGN Mini-PCI Adapter",
+ },
+ {
+ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_PRO_WL_5350AGN_1,
+ "PRO/Wireless LAN 5350AGN Mini-PCI Adapter",
+ },
+ {
+ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_PRO_WL_5350AGN_2,
+ "PRO/Wireless LAN 5350AGN Mini-PCI Adapter",
+ },
+ {
PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_80312_ATU,
"80310 ATU",
},
@@ -14512,4 +14540,4 @@
"Video Controller",
},
};
-const int pci_nproducts = 3027;
+const int pci_nproducts = 3033;
--- pcireg.h 2007-12-25 12:33:42.000000000 -0600
+++ pcireg.h 2010-12-10 07:59:27.000000000 -0600
@@ -1,5 +1,9 @@
-/* $NetBSD: pcireg.h,v 1.57 2007/12/25 18:33:42 perry Exp $ */
-
+/* $NetBSD: pcireg.h,v 1.61 2009/09/11 01:28:20 christos Exp $ */
+/*-
+ * This file is modified for use with netbsd-5 release kernels
+ * The changes in revisions 1.58, 1.59, and 1.60 of pcireg.h
+ * have been removed
+ */
/*
* Copyright (c) 1995, 1996, 1999, 2000
* Christopher G. Demetriou. All rights reserved.
@@ -536,6 +540,42 @@
#define PCI_PCIX_STATUS_MAXRS_128K 0x1c000000
#define PCI_PCIX_STATUS_SCERR 0x20000000
+/*
+ * PCI Express; access via capability pointer.
+ */
+#define PCI_PCIE_XCAP 0x00
+#define PCI_PCIE_XCAP_SI 0x01000000
+#define PCI_PCIE_DCAP 0x04
+#define PCI_PCIE_DCSR 0x08
+#define PCI_PCIE_DCSR_ENA_NO_SNOOP 0x00000800
+#define PCI_PCIE_LCAP 0x0c
+#define PCI_PCIE_LCSR 0x10
+#define PCI_PCIE_LCSR_ASPM_L0S 0x00000001
+#define PCI_PCIE_LCSR_ASPM_L1 0x00000002
+#define PCI_PCIE_SLCAP 0x14
+#define PCI_PCIE_SLCAP_ABP 0x00000001
+#define PCI_PCIE_SLCAP_PCP 0x00000002
+#define PCI_PCIE_SLCAP_MSP 0x00000004
+#define PCI_PCIE_SLCAP_AIP 0x00000008
+#define PCI_PCIE_SLCAP_PIP 0x00000010
+#define PCI_PCIE_SLCAP_HPS 0x00000020
+#define PCI_PCIE_SLCAP_HPC 0x00000040
+#define PCI_PCIE_SLCSR 0x18
+#define PCI_PCIE_SLCSR_ABE 0x00000001
+#define PCI_PCIE_SLCSR_PFE 0x00000002
+#define PCI_PCIE_SLCSR_MSE 0x00000004
+#define PCI_PCIE_SLCSR_PDE 0x00000008
+#define PCI_PCIE_SLCSR_CCE 0x00000010
+#define PCI_PCIE_SLCSR_HPE 0x00000020
+#define PCI_PCIE_SLCSR_ABP 0x00010000
+#define PCI_PCIE_SLCSR_PFD 0x00020000
+#define PCI_PCIE_SLCSR_MSC 0x00040000
+#define PCI_PCIE_SLCSR_PDC 0x00080000
+#define PCI_PCIE_SLCSR_CC 0x00100000
+#define PCI_PCIE_SLCSR_MS 0x00200000
+#define PCI_PCIE_SLCSR_PDS 0x00400000
+#define PCI_PCIE_SLCSR_LACS 0x01000000
+#define PCI_PCIE_RCSR 0x1c
/*
* Interrupt Configuration Register; contains interrupt pin and line.
On 12/10/2010 9:25 PM, Chuck Zmudzinski wrote:
> Well I need to do more work on this...
>
> I got a chance to test netbsd-5 my iwn patch on a real wireless
> network and it was not functional on netbsd-5. I could get a dhcp
> lease, but no functional connection. When I tried to ping the router,
> I got the following message on the console:
>
> arpresolve: can't allocate llinfo on iwn0 for 192.168.6.1
>
> I used a netbsd-current kernel using the same version of if_iwn.c as
> in my patch to netbsd-5 (netbsd-current kernel from late September
> 2009) on the same wireless network and it is functional with full
> internet connectivity on iwn0.
>
>
> -----Original Message-----
> From: Chuck Zmudzinski <brchuckz@netscape.net>
> To: netbsd-users@netbsd.org
> Sent: Fri, Dec 10, 2010 11:55 am
> Subject: iwn 5100AGN for netbsd-5 success
>
>
> I saw in the mailing list archives a few weeks back that iwn(4) for
> 5100/5300 AGN devices was working in netbsd-current but hasn't been
> ported to netbsd-5 yet. I decided to try and get it working in
> netbsd-5 with minimal changes to the netbsd-5 kernel sources and have
> had some success.
>
> Seven files were patched in src/sys/dev/pci: if_iwn.c, if_iwnreg.h
> if_iwnvar.h, pcidevs, pcidevs.h pcidevs_data.h, and pcireg.h.
>
> The details:
>
> 1. Used the first of version of src/sys/dev/if_iwn.c that works with
> the 5100/5300 iwn devices from the current branch (revision 1.33), but
> removed the two lines associated with revision 1.25 of
> src/sys/dev/if_iwn.c. The iwn(4) driver failed in netbsd-5 with that
> revision included - that revision was part of a major commit to the
> netbsd-current kernel networking code.
>
> 2. Used the first version of src/sys/dev/if_iwnreg.h that works with
> the 5100/5300 iwn devices from the current branch (revision 1.6).
>
> 3. Used the first version of src/sys/dev/if_iwnvar.h that works with
> the 5100/5300 iwn devices from the current branch (revision 1.6).)
>
> 4. Edited the src/sys/dev/pcidevs file to add the new iwn devices
> (these changes are derived from additions to pcidevs between revision
> 1.967 and 1.968 of src/sys/dev/pcidevs, but I changed "Pro/Wireless"
> to "PRO/Wireless" for consistency with the other devices):
>
> product INTEL PRO_WL_5100AGN_1 0x4232 PRO/Wireless LAN 5100AGN
> Mini-PCI Adapter
> product INTEL PRO_WL_5300AGN_1 0x4235 PRO/Wireless LAN 5300AGN
> Mini-PCI Adapter
> product INTEL PRO_WL_5300AGN_2 0x4236 PRO/Wireless LAN 5300AGN
> Mini-PCI Adapter
> product INTEL PRO_WL_5100AGN_2 0x4237 PRO/Wireless LAN 5100AGN
> Mini-PCI Adapter
> product INTEL PRO_WL_5350AGN_1 0x423a PRO/Wireless LAN 5350AGN
> Mini-PCI Adapter
> product INTEL PRO_WL_5350AGN_2 0x423b PRO/Wireless LAN 5350AGN
> Mini-PCI Adapter
>
> 5. Regenerated src/sys/dev/pcidevs.h and src/sys/dev/pcidevs_data.h
> using 'make -f Makefile.pcidevs'
>
> 6. Edited the src/sys/dev/pcireg.h file to add the changes that were
> included in the changes to pcireg.h when the support was added for the
> new iwn(4) devices in netbsd-current. It is essentially revision 1.57
> (the netbsd-5 version) of pcireg.h patched with the changes between
> revision 1.60 and 1.61 of pcireg.h.
>
> 7. Added the updated firmware for the 5100 AGN to my filesystem.
>
> The 5100 iwn(4) device in my Toshiba laptop successfully runs
> 'dhclient iwn0' in my patched netbsd-5 kernel (I am using the 5.0.2
> release) where it listened for dhcp offers, but I haven't tested it
> with an actual wireless network in range yet to see if it makes a
> connection - I assume it will work with a network in range; if it
> doesn't when I try it I'll post a followup message.
>
> The actual patchfile against the netbsd-5 kernel is too big to post
> here (about 300K) because the difference in if_iwn.c between the
> netbsd-5 version (revision 1.22.4.3 I think) and revision 1.33 is
> rather large.
>
>
>
>
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic