NetBSD Problem Report #41418

From khorben@syn.defora.rom  Tue May 12 22:26:24 2009
Return-Path: <khorben@syn.defora.rom>
Received: from mail.netbsd.org (mail.netbsd.org [204.152.190.11])
	by www.NetBSD.org (Postfix) with ESMTP id 833F563B8DF
	for <gnats-bugs@gnats.NetBSD.org>; Tue, 12 May 2009 22:26:24 +0000 (UTC)
Message-Id: <20090512211213.69B7A549F@syn.defora.rom>
Date: Tue, 12 May 2009 23:12:13 +0200 (CEST)
From: Pierre Pronchery <khorben@defora.org>
Reply-To:
To: gnats-bugs@gnats.NetBSD.org
Subject: NetBSD does not support newer Ralink-based wireless devices
X-Send-Pr-Version: 3.95

>Number:         41418
>Notify-List:    gson@gson.org
>Category:       kern
>Synopsis:       NetBSD does not support newer Ralink-based wireless devices
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    kern-bug-people
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Tue May 12 22:30:00 +0000 2009
>Last-Modified:  Sat Jan 17 14:29:34 +0000 2015
>Originator:     Pierre Pronchery <khorben@defora.org>
>Release:        NetBSD 5.0_STABLE
>Organization:
khorben
>Environment:
System: NetBSD syn.defora.rom 5.0_STABLE NetBSD 5.0_STABLE (GENERIC) #6: Sun May 10 04:45:35 CEST 2009 khorben@syn.defora.rom:/usr/obj/sys/arch/amd64/compile/GENERIC amd64
Architecture: x86_64
Machine: amd64
>Description:
NetBSD does not support the Ralink RT2760, RT2790, RT2860 and RT2890 wireless devices.

A driver exists in OpenBSD and I have completed most of the "get-it-to-compile" porting phase. However, I no longer have access to the relevant hardware. I am therefore submitting my effort uncomplete.

>How-To-Repeat:
Boot NetBSD 5.0 or above on hardware including a wireless device listed above.
>Fix:
Apply and complete attached patch (to be included in subsequent e-mails).

>Release-Note:

>Audit-Trail:
From: Quentin Garnier <cube@cubidou.net>
To: gnats-bugs@NetBSD.org
Cc: khorben@defora.org
Subject: Re: kern/41418: NetBSD does not support newer Ralink-based
	wireless devices
Date: Wed, 13 May 2009 00:33:14 +0200

 --5FetH82qe0Z6y/zI
 Content-Type: text/plain; charset=us-ascii
 Content-Disposition: inline
 Content-Transfer-Encoding: quoted-printable

 On Tue, May 12, 2009 at 10:30:00PM +0000, Pierre Pronchery wrote:
 > >Number:         41418
 > >Category:       kern
 > >Synopsis:       NetBSD does not support newer Ralink-based wireless devi=
 ces
 > >Confidential:   no
 > >Severity:       non-critical
 > >Priority:       medium
 > >Responsible:    kern-bug-people
 > >State:          open
 > >Class:          sw-bug
 > >Submitter-Id:   net
 > >Arrival-Date:   Tue May 12 22:30:00 +0000 2009
 > >Originator:     Pierre Pronchery <khorben@defora.org>
 > >Release:        NetBSD 5.0_STABLE
 > >Organization:
 > khorben
 > >Environment:
 > System: NetBSD syn.defora.rom 5.0_STABLE NetBSD 5.0_STABLE (GENERIC) #6: =
 Sun May 10 04:45:35 CEST 2009 khorben@syn.defora.rom:/usr/obj/sys/arch/amd6=
 4/compile/GENERIC amd64
 > Architecture: x86_64
 > Machine: amd64
 > >Description:
 > NetBSD does not support the Ralink RT2760, RT2790, RT2860 and RT2890 wire=
 less devices.
 >=20
 > A driver exists in OpenBSD and I have completed most of the "get-it-to-co=
 mpile" porting phase. However, I no longer have access to the relevant hard=
 ware. I am therefore submitting my effort uncomplete.

 I have ported it and it works.

 http://vert-toit.net/~cube/ral.diff

 I haven't committed it because it requires a newer net80211, so I'm only
 using a gross hack.

 --=20
 Quentin Garnier - cube@cubidou.net - cube@NetBSD.org
 "See the look on my face from staying too long in one place
 [...] every time the morning breaks I know I'm closer to falling"
 KT Tunstall, Saving My Face, Drastic Fantastic, 2007.

 --5FetH82qe0Z6y/zI
 Content-Type: application/pgp-signature
 Content-Disposition: inline

 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1.4.9 (NetBSD)

 iQEcBAEBAgAGBQJKCfkqAAoJENgoQloHrPnoMl0H/jZWuhO2Bq143ncHeYzcMFzM
 1oP0sNZnu1uz7pJwgAMpfuEDDPUgH0NyvNEl6z/xOgf4ietsN4d/NzrZxeujEEgd
 sxzizMTKz4d4Q0z3XHF+8FX4KANuzwCfUIZ7kJIH2EdpCUIqjXddi9ZaMk/qoLMn
 fB/VOvjqUdeAoH+xdJsgpjl6FJ/394A5AG0H1vwz+gqmn5vi8OToGQJB5BUZ+rCU
 SHY2l4fOCBYQve75bD2fTIj13hRM/fqgc/999FrcTec/vhcXct37bG7bvDTUpz2w
 l+GrTxEodTLjmkdtGvGoCRFWxaiEVR2TGgLHSi/gt7DimCF5wzznsA4lzqUVHrs=
 =72wU
 -----END PGP SIGNATURE-----

 --5FetH82qe0Z6y/zI--

From: Pierre Pronchery <khorben@defora.org>
To: gnats-bugs@NetBSD.org
Cc: 
Subject: Re: kern/41418: NetBSD does not support newer Ralink-based	wireless
 devices
Date: Wed, 13 May 2009 01:01:04 +0200

 			Hey Quentin,

 Quentin Garnier wrote:
 > 
 > I have ported it and it works.
 > 
 > http://vert-toit.net/~cube/ral.diff
 > 
 > I haven't committed it because it requires a newer net80211, so I'm only
 > using a gross hack.

 Good to know, thank you!

 For the record, and in case my previous e-mail doesn't get through
 (attachments), here is my humble, unfinished port:
 http://people.defora.org/~khorben/projects/netbsd/kern/ral/

 Cheers,
 -- 
 khorben

From: Pierre Pronchery <khorben@defora.org>
To: gnats-bugs@NetBSD.org
Cc: 
Subject: Re: kern/41418: NetBSD does not support newer Ralink-based wireless
 devices
Date: Wed, 13 May 2009 00:27:39 +0200

 This is a multi-part message in MIME format.
 --------------060504010807000702050009
 Content-Type: text/plain; charset=ISO-8859-1
 Content-Transfer-Encoding: 7bit

 The patches as promised.

 HTH,
 -- 
 khorben

 --------------060504010807000702050009
 Content-Type: text/plain;
  name="rt2860.diff"
 Content-Transfer-Encoding: 7bit
 Content-Disposition: inline;
  filename="rt2860.diff"

 Index: sys/conf/files
 ===================================================================
 RCS file: /cvsroot/src/sys/conf/files,v
 retrieving revision 1.924.4.1
 diff -p -u -r1.924.4.1 files
 --- sys/conf/files	15 Mar 2009 19:43:48 -0000	1.924.4.1
 +++ sys/conf/files	12 May 2009 21:07:57 -0000
 @@ -608,6 +608,7 @@ file	dev/ic/rtwphyio.c		rtw
  device	ral: arp, ether, ifnet, wlan, firmload
  file	dev/ic/rt2560.c			ral
  file	dev/ic/rt2661.c			ral
 +file	dev/ic/rt2860.c			ral

  # 3Com Etherlink-III Ethernet controller
  #
 Index: sys/dev/pci/if_ral_pci.c
 ===================================================================
 RCS file: /cvsroot/src/sys/dev/pci/if_ral_pci.c,v
 retrieving revision 1.9
 diff -p -u -r1.9 if_ral_pci.c
 --- sys/dev/pci/if_ral_pci.c	29 Apr 2008 22:21:45 -0000	1.9
 +++ sys/dev/pci/if_ral_pci.c	12 May 2009 21:07:57 -0000
 @@ -52,6 +52,7 @@ __KERNEL_RCSID(0, "$NetBSD: if_ral_pci.c

  #include <dev/ic/rt2560var.h>
  #include <dev/ic/rt2661var.h>
 +#include <dev/ic/rt2860var.h>

  #include <dev/pci/pcireg.h>
  #include <dev/pci/pcivar.h>
 @@ -71,12 +72,18 @@ static struct ral_opns {
  	rt2661_attach,
  	rt2661_detach,
  	rt2661_intr
 +
 +}, ral_rt2860_opns = {
 +	rt2860_attach,
 +	rt2860_detach,
 +	rt2860_intr
  };

  struct ral_pci_softc {
  	union {
  		struct rt2560_softc	sc_rt2560;
  		struct rt2661_softc	sc_rt2661;
 +		struct rt2860_softc	sc_rt2860;
  	} u;
  #define sc_sc	u.sc_rt2560

 @@ -109,11 +116,17 @@ ral_pci_match(struct device *parent, str
  			case PCI_PRODUCT_RALINK_RT2561:
  			case PCI_PRODUCT_RALINK_RT2561S:
  			case PCI_PRODUCT_RALINK_RT2661:
 +			case PCI_PRODUCT_RALINK_RT2760:
 +			case PCI_PRODUCT_RALINK_RT2790:
 +			case PCI_PRODUCT_RALINK_RT2860:
 +			case PCI_PRODUCT_RALINK_RT2890:
  				return 1;
  			default:
  				return 0;
  		}
 -	}
 +	} else if (PCI_VENDOR(pa->pa_id) == PCI_VENDOR_AWT
 +			&& PCI_PRODUCT(pa->pa_id) == PCI_PRODUCT_AWT_RT2890)
 +		return 1;

  	return 0;
  }
 @@ -135,8 +148,24 @@ ral_pci_attach(struct device *parent, st
  	revision = PCI_REVISION(pa->pa_class);
  	aprint_normal(": %s (rev. 0x%02x)\n", devinfo, revision);

 -	psc->sc_opns = (PCI_PRODUCT(pa->pa_id) == PCI_PRODUCT_RALINK_RT2560) ?
 -	    &ral_rt2560_opns : &ral_rt2661_opns;
 +	switch(PCI_PRODUCT(pa->pa_id))
 +	{
 +		case PCI_PRODUCT_RALINK_RT2560:
 +			psc->sc_opns = &ral_rt2560_opns;
 +			break;
 +		case PCI_PRODUCT_RALINK_RT2561:
 +		case PCI_PRODUCT_RALINK_RT2561S:
 +		case PCI_PRODUCT_RALINK_RT2661:
 +			psc->sc_opns = &ral_rt2661_opns;
 +			break;
 +		case PCI_PRODUCT_RALINK_RT2760:
 +		case PCI_PRODUCT_RALINK_RT2790:
 +		case PCI_PRODUCT_RALINK_RT2860:
 +		case PCI_PRODUCT_RALINK_RT2890:
 +		case PCI_PRODUCT_AWT_RT2890:
 +			psc->sc_opns = &ral_rt2860_opns;
 +			break;
 +	}

  	sc->sc_dmat = pa->pa_dmat;
  	psc->sc_pc = pa->pa_pc;
 Index: sys/dev/pci/pcidevs
 ===================================================================
 RCS file: /cvsroot/src/sys/dev/pci/pcidevs,v
 retrieving revision 1.962.4.3
 diff -p -u -r1.962.4.3 pcidevs
 --- sys/dev/pci/pcidevs	5 May 2009 18:17:57 -0000	1.962.4.3
 +++ sys/dev/pci/pcidevs	12 May 2009 21:08:01 -0000
 @@ -603,6 +603,7 @@ vendor LINKSYS2		0x17fe	Linksys
  vendor RALINK		0x1814	Ralink Technologies
  vendor BBELEC		0x1896	B & B Electronics
  vendor ATTANSIC		0x1969	Attansic Technologies
 +vendor AWT		0x1a3b	AWT
  vendor EVE		0x1adb	EVE
  vendor SYMPHONY2	0x1c1c	Symphony Labs (2nd PCI Vendor ID)
  vendor TEKRAM2		0x1de1	Tekram Technology (2nd PCI Vendor ID)
 @@ -1374,6 +1375,9 @@ product AVM FRITZ_PCI_V2_ISDN	0x0e00	Fri
  product AVM B1			0x0700	Basic Rate B1 ISDN Interface
  product AVM T1			0x1200	Primary Rate T1 ISDN Interface

 +/* AWT products */
 +product AWT RT2890		0x1059	RT2890
 +
  /* B & B Electronics Products */
  product BBELEC NON_ISOLATED_1_PORT	0x4201	single-channel RS-485 PCI UART
  product BBELEC NON_ISOLATED_2_PORT	0x4202	dual-channel RS-485 PCI UART
 @@ -3427,6 +3431,10 @@ product	RALINK	RT2560		0x0201	RT2560 802
  product	RALINK	RT2561S		0x0301	RT2561S 802.11b/g
  product	RALINK	RT2561		0x0302	RT2561 802.11b/g
  product	RALINK	RT2661		0x0401	RT2661 802.11b/g/n
 +product	RALINK	RT2760		0x0701	RT2760 802.11b/g/n
 +product	RALINK	RT2790		0x0781	RT2790 802.11b/g/n
 +product	RALINK	RT2860		0x0601	RT2860 802.11b/g/n
 +product	RALINK	RT2890		0x0681	RT2890 802.11b/g/n

  /* RATOC Systems products */
  product RATOC	REXPCI31	0x0853	REX PCI-31/33 SCSI
 Index: sys/dev/pci/pcidevs.h
 ===================================================================
 RCS file: /cvsroot/src/sys/dev/pci/pcidevs.h,v
 retrieving revision 1.963.4.3
 diff -p -u -r1.963.4.3 pcidevs.h
 --- sys/dev/pci/pcidevs.h	5 May 2009 18:21:41 -0000	1.963.4.3
 +++ sys/dev/pci/pcidevs.h	12 May 2009 21:08:07 -0000
 @@ -1,4 +1,4 @@
 -/*	$NetBSD: pcidevs.h,v 1.963.4.3 2009/05/05 18:21:41 bouyer Exp $	*/
 +/*	$NetBSD$	*/

  /*
   * THIS FILE AUTOMATICALLY GENERATED.  DO NOT EDIT.
 @@ -610,6 +610,7 @@
  #define	PCI_VENDOR_RALINK	0x1814		/* Ralink Technologies */
  #define	PCI_VENDOR_BBELEC	0x1896		/* B & B Electronics */
  #define	PCI_VENDOR_ATTANSIC	0x1969		/* Attansic Technologies */
 +#define	PCI_VENDOR_AWT	0x1a3b		/* AWT */
  #define	PCI_VENDOR_EVE	0x1adb		/* EVE */
  #define	PCI_VENDOR_SYMPHONY2	0x1c1c		/* Symphony Labs (2nd PCI Vendor ID) */
  #define	PCI_VENDOR_TEKRAM2	0x1de1		/* Tekram Technology (2nd PCI Vendor ID) */
 @@ -1381,6 +1382,9 @@
  #define	PCI_PRODUCT_AVM_B1	0x0700		/* Basic Rate B1 ISDN Interface */
  #define	PCI_PRODUCT_AVM_T1	0x1200		/* Primary Rate T1 ISDN Interface */

 +/* AWT products */
 +#define	PCI_PRODUCT_AWT_RT2890	0x1059		/* RT2890 */
 +
  /* B & B Electronics Products */
  #define	PCI_PRODUCT_BBELEC_NON_ISOLATED_1_PORT	0x4201		/* single-channel RS-485 PCI UART */
  #define	PCI_PRODUCT_BBELEC_NON_ISOLATED_2_PORT	0x4202		/* dual-channel RS-485 PCI UART */
 @@ -3434,6 +3438,10 @@
  #define	PCI_PRODUCT_RALINK_RT2561S	0x0301		/* RT2561S 802.11b/g */
  #define	PCI_PRODUCT_RALINK_RT2561	0x0302		/* RT2561 802.11b/g */
  #define	PCI_PRODUCT_RALINK_RT2661	0x0401		/* RT2661 802.11b/g/n */
 +#define	PCI_PRODUCT_RALINK_RT2760	0x0701		/* RT2760 802.11b/g/n */
 +#define	PCI_PRODUCT_RALINK_RT2790	0x0781		/* RT2790 802.11b/g/n */
 +#define	PCI_PRODUCT_RALINK_RT2860	0x0601		/* RT2860 802.11b/g/n */
 +#define	PCI_PRODUCT_RALINK_RT2890	0x0681		/* RT2890 802.11b/g/n */

  /* RATOC Systems products */
  #define	PCI_PRODUCT_RATOC_REXPCI31	0x0853		/* REX PCI-31/33 SCSI */
 Index: sys/dev/pci/pcidevs_data.h
 ===================================================================
 RCS file: /cvsroot/src/sys/dev/pci/pcidevs_data.h,v
 retrieving revision 1.962.4.3
 diff -p -u -r1.962.4.3 pcidevs_data.h
 --- sys/dev/pci/pcidevs_data.h	5 May 2009 18:21:41 -0000	1.962.4.3
 +++ sys/dev/pci/pcidevs_data.h	12 May 2009 21:08:13 -0000
 @@ -1,4 +1,4 @@
 -/*	$NetBSD: pcidevs_data.h,v 1.962.4.3 2009/05/05 18:21:41 bouyer Exp $	*/
 +/*	$NetBSD$	*/

  /*
   * THIS FILE AUTOMATICALLY GENERATED.  DO NOT EDIT.
 @@ -2252,6 +2252,10 @@ static const struct pci_vendor pci_vendo
  	    "Attansic Technologies",
  	},
  	{
 +	    PCI_VENDOR_AWT,
 +	    "AWT",
 +	},
 +	{
  	    PCI_VENDOR_EVE,
  	    "EVE",
  	},
 @@ -2400,7 +2404,7 @@ static const struct pci_vendor pci_vendo
  	    "INVALID VENDOR ID",
  	},
  };
 -const int pci_nvendors = 590;
 +const int pci_nvendors = 591;

  static const struct pci_product pci_products[] = {
  	{
 @@ -5000,6 +5004,10 @@ static const struct pci_product pci_prod
  	    "Primary Rate T1 ISDN Interface",
  	},
  	{
 +	    PCI_VENDOR_AWT, PCI_PRODUCT_AWT_RT2890,
 +	    "RT2890",
 +	},
 +	{
  	    PCI_VENDOR_BBELEC, PCI_PRODUCT_BBELEC_NON_ISOLATED_1_PORT,
  	    "single-channel RS-485 PCI UART",
  	},
 @@ -12012,6 +12020,22 @@ static const struct pci_product pci_prod
  	    "RT2661 802.11b/g/n",
  	},
  	{
 +	    PCI_VENDOR_RALINK, PCI_PRODUCT_RALINK_RT2760,
 +	    "RT2760 802.11b/g/n",
 +	},
 +	{
 +	    PCI_VENDOR_RALINK, PCI_PRODUCT_RALINK_RT2790,
 +	    "RT2790 802.11b/g/n",
 +	},
 +	{
 +	    PCI_VENDOR_RALINK, PCI_PRODUCT_RALINK_RT2860,
 +	    "RT2860 802.11b/g/n",
 +	},
 +	{
 +	    PCI_VENDOR_RALINK, PCI_PRODUCT_RALINK_RT2890,
 +	    "RT2890 802.11b/g/n",
 +	},
 +	{
  	    PCI_VENDOR_RATOC, PCI_PRODUCT_RATOC_REXPCI31,
  	    "REX PCI-31/33 SCSI",
  	},
 @@ -14580,4 +14604,4 @@ static const struct pci_product pci_prod
  	    "Video Controller",
  	},
  };
 -const int pci_nproducts = 3044;
 +const int pci_nproducts = 3049;

 --------------060504010807000702050009
 Content-Type: application/octet-stream;
  name="rt2860.tgz"
 Content-Transfer-Encoding: base64
 Content-Disposition: attachment;
  filename="rt2860.tgz"

 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
 /+ef/wM739L+AAgCAA==
 --------------060504010807000702050009--

From: Pierre Pronchery <khorben@defora.org>
To: gnats-bugs@NetBSD.org
Cc: 
Subject: Re: kern/41418: NetBSD does not support newer Ralink-based	wireless devices
Date: Sat, 7 Aug 2010 22:42:03 +0200

 			Hi there,

 long time... But some good news.

 On Wed, May 13, 2009 at 01:01:04AM +0200, Pierre Pronchery wrote:
 > 
 > Quentin Garnier wrote:
 > > 
 > > I have ported it and it works.
 > > 
 > > http://vert-toit.net/~cube/ral.diff
 > > 
 > > I haven't committed it because it requires a newer net80211, so I'm only
 > > using a gross hack.

 Similarly, if I am correct FUKAUMI Naoki has ported a number of drivers
 from OpenBSD over to NetBSD, as published here:
 http://www.naobsd.org/wifi/

 I am currently testing run(4), as seen here:
 /netbsd: run0 at uhub4 port 2
 /netbsd: run0: Ralink 802.11 g WLAN, rev 2.00/1.01, addr 2
 /netbsd: run0: MAC/BBP RT3070 (rev 0x0201), RF RT2020 (MIMO 1T1R), address 00:0c:f6:60:8a:49
 /netbsd: run0: 11b rates: 1Mbps 2Mbps 5.5Mbps 11Mbps
 /netbsd: run0: 11g rates: 1Mbps 2Mbps 5.5Mbps 11Mbps 6Mbps 9Mbps 12Mbps 18Mbps 24Mbps 36Mbps 48Mbps 54Mbps

 I am experiencing a few issues:
 - occasional reboots
 - unable to get traffic going after being associated to some networks
   (channel issue?)

 But otherwise I have been able to scan some networks using kismet
 (probably couldn't catch all the ones available though), and then
 associate with a few and actually use them.

 I haven't tested WPA or WEP-based networks yet.

 HTH,
 -- 
 khorben

>Unformatted:

NetBSD Home
NetBSD PR Database Search

(Contact us) $NetBSD: query-full-pr,v 1.39 2013/11/01 18:47:49 spz Exp $
$NetBSD: gnats_config.sh,v 1.8 2006/05/07 09:23:38 tsutsui Exp $
Copyright © 1994-2007 The NetBSD Foundation, Inc. ALL RIGHTS RESERVED.