Added OpenBSD's zyd(4) driver.

Supports ZyDAS ZD1211/ZD1211B USB IEEE 802.11b/g wireless network device.
This commit is contained in:
kiyohara 2007-06-09 11:20:54 +00:00
parent 6a47d5a6c8
commit bbec0bb7bf
15 changed files with 5490 additions and 7 deletions

View File

@ -1,4 +1,4 @@
# $NetBSD: mi,v 1.705 2007/06/02 06:09:08 tnozaki Exp $
# $NetBSD: mi,v 1.706 2007/06/09 11:20:56 kiyohara Exp $
. base-sys-root
./altroot base-sys-root
./bin base-sys-root
@ -114,6 +114,10 @@
./libdata/firmware/rum base-sys-root
./libdata/firmware/rum/rum-license base-sys-root
./libdata/firmware/rum/rum-rt2573 base-sys-root
./libdata/firmware/zyd base-sys-root
./libdata/firmware/zyd/zd1211-license base-sys-root
./libdata/firmware/zyd/zyd-zd1211 base-sys-root
./libdata/firmware/zyd/zyd-zd1211b base-sys-root
./libexec base-sys-root
./libexec/lfs_cleanerd base-sysutil-bin
./mnt base-sys-root

View File

@ -1,4 +1,4 @@
# $NetBSD: mi,v 1.1005 2007/06/01 14:19:20 blymn Exp $
# $NetBSD: mi,v 1.1006 2007/06/09 11:20:57 kiyohara Exp $
./etc/mtree/set.man man-sys-root
./usr/share/info/am-utils.info man-amd-info info
./usr/share/info/as.info man-computil-info bfd,info
@ -1569,6 +1569,7 @@
./usr/share/man/cat4/zs.0 man-sys-catman .cat
./usr/share/man/cat4/zsc.0 man-sys-catman .cat
./usr/share/man/cat4/zstty.0 man-sys-catman .cat
./usr/share/man/cat4/zyd.0 man-sys-catman .cat
./usr/share/man/cat5/a.out.0 man-sys-catman .cat
./usr/share/man/cat5/access.0 man-postfix-catman postfix,.cat
./usr/share/man/cat5/acct.0 man-sys-catman .cat
@ -4034,6 +4035,7 @@
./usr/share/man/man4/zs.4 man-sys-man .man
./usr/share/man/man4/zsc.4 man-sys-man .man
./usr/share/man/man4/zstty.4 man-sys-man .man
./usr/share/man/man4/zyd.4 man-sys-man .man
./usr/share/man/man5/a.out.5 man-sys-man .man
./usr/share/man/man5/access.5 man-postfix-man postfix,.man
./usr/share/man/man5/acct.5 man-sys-man .man

View File

@ -1,4 +1,4 @@
LIST OF CHANGES FROM LAST RELEASE: <$Revision: 1.868 $>
LIST OF CHANGES FROM LAST RELEASE: <$Revision: 1.869 $>
[Note: This file does not mention every change made to the NetBSD source tree.
@ -126,3 +126,5 @@ Changes from NetBSD 4.0 to NetBSD 5.0:
amd64: The Enhanced Speedstep driver is now able to work on EM64T
CPUs running in 64bit mode. [xtraeme 20070603]
file(1): update to 4.21. [pooka 20070607]
zyd(4): Added OpenBSD's driver. Supports ZyDAS ZD1211/ZD1211B
USB IEEE 802.11b/g wireless network device. [kiyohara 20070609]

View File

@ -1,4 +1,4 @@
# $NetBSD: NetBSD.dist,v 1.339 2007/04/08 09:35:26 scw Exp $
# $NetBSD: NetBSD.dist,v 1.340 2007/06/09 11:20:56 kiyohara Exp $
# @(#)4.4BSD.dist 8.1 (Berkeley) 6/13/93
# Do not customize this file as it may be overwritten on upgrades.
@ -56,6 +56,7 @@
./libdata/firmware
./libdata/firmware/ral
./libdata/firmware/rum
./libdata/firmware/zyd
./libexec
./mnt
./rescue

306
share/man/man4/zyd.4 Normal file
View File

@ -0,0 +1,306 @@
.\" $OpenBSD: zyd.4,v 1.22 2007/05/24 02:49:57 cnst Exp $
.\" $NetBSD: zyd.4,v 1.1 2007/06/09 11:20:55 kiyohara Exp $
.\"
.\" Copyright (c) 1997, 1998, 1999
.\" Bill Paul <wpaul@ctr.columbia.edu>. All rights reserved.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\" notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\" notice, this list of conditions and the following disclaimer in the
.\" documentation and/or other materials provided with the distribution.
.\" 3. All advertising materials mentioning features or use of this software
.\" must display the following acknowledgement:
.\" This product includes software developed by Bill Paul.
.\" 4. Neither the name of the author nor the names of any co-contributors
.\" may be used to endorse or promote products derived from this software
.\" without specific prior written permission.
.\"
.\" THIS SOFTWARE IS PROVIDED BY Bill Paul 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 Bill Paul OR THE VOICES IN HIS HEAD
.\" 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.
.\"
.Dd May 28, 2007
.Dt ZYD 4
.Os
.Sh NAME
.Nm zyd
.Nd ZyDAS ZD1211/ZD1211B USB IEEE 802.11b/g wireless network device
.Sh SYNOPSIS
.Cd "zyd* at uhub? port ?"
.Sh DESCRIPTION
The
.Nm
driver provides support for wireless network adapters based around
the ZyDAS ZD1211 and ZD1211B USB chips.
.Pp
These are the modes the
.Nm
driver can operate in:
.Bl -tag -width "IBSS-masterXX"
.It BSS mode
Also known as
.Em infrastructure
mode, this is used when associating with an access point, through
which all traffic passes.
This mode is the default.
.It monitor mode
In this mode the driver is able to receive packets without
associating with an access point.
This disables the internal receive filter and enables the card to
capture packets from networks which it wouldn't normally have access to,
or to scan for access points.
.El
.Pp
.Nm
supports software WEP.
Wired Equivalent Privacy (WEP) is the de facto encryption standard
for wireless networks.
It can be typically configured in one of three modes:
no encryption; 40-bit encryption; or 104-bit encryption.
Unfortunately, due to serious weaknesses in WEP protocol
it is strongly recommended that it not be used as the
sole mechanism to secure wireless communication.
WEP is not enabled by default.
.Sh CONFIGURATION
The
.Nm
driver can be configured at runtime with
.Xr ifconfig 8
or on boot with
.Xr ifconfig.if 5
using the following parameters:
.Bl -tag -width Ds
.It Cm bssid Ar bssid
Set the desired BSSID.
.It Fl bssid
Unset the desired BSSID.
The interface will automatically select a BSSID in this mode, which is
the default.
.It Cm chan Ar n
Set the channel (radio frequency) to be used by the driver based on
the given channel ID
.Ar n .
.It Fl chan
Unset the desired channel to be used by the driver.
The driver will automatically select a channel in this mode, which is
the default.
.It Cm media Ar media
The
.Nm
driver supports the following
.Ar media
types:
.Pp
.Bl -tag -width autoselect -compact
.It Cm autoselect
Enable autoselection of the media type and options.
.It Cm DS1
Set 802.11b DS 1Mbps operation.
.It Cm DS2
Set 802.11b DS 2Mbps operation.
.It Cm DS5
Set 802.11b DS 5.5Mbps operation.
.It Cm DS11
Set 802.11b DS 11Mbps operation.
.El
.It Cm mediaopt Ar opts
The
.Nm
driver supports the following media options:
.Bl -tag -width ibss
.It Cm ibss
Select Independent Basic Service Set (IBSS) operation.
.El
.It Fl mediaopt Ar opts
Disable the specified media options on the driver and return it to the
default mode of operation (BSS).
.It Cm nwid Ar id
Set the network ID.
The
.Ar id
can either be any text string up to 32 characters in length,
or a series of hexadecimal digits up to 64 digits.
An empty
.Ar id
string allows the interface to connect to any available access points.
By default the
.Nm
driver uses an empty string.
Note that network ID is synonymous with Extended Service Set ID (ESSID).
.It Fl nwid
Set the network ID to the empty string to allow the interface to connect
to any available access point.
.It Cm nwkey Ar key
Enable WEP encryption using the specified
.Ar key .
The
.Ar key
can either be a string, a series of hexadecimal digits (preceded by
.Sq 0x ) ,
or a set of keys of the form
.Dq n:k1,k2,k3,k4 ,
where
.Sq n
specifies which of the keys will be used for transmitted packets,
and the four keys,
.Dq k1
through
.Dq k4 ,
are configured as WEP keys.
If a set of keys is specified, a comma
.Pq Sq \&,
within the key must be escaped with a backslash.
Note that if multiple keys are used, their order must be the same within
the network.
.Nm
is capable of using both 40-bit (5 characters or 10 hexadecimal digits)
or 104-bit (13 characters or 26 hexadecimal digits) keys.
.It Fl nwkey
Disable WEP encryption.
This is the default mode of operation.
.El
.Sh HARDWARE
The following devices are known to be supported by the
.Nm
driver:
.Pp
.Bl -tag -width Ds -offset indent -compact
.It 3COM 3CRUSB10075
.It Acer WLAN-G-US1
.It Airlink+ AWLL3025
.It Airlink 101 AWLL3026
.It AOpen 802.11g WL54
.It Asus A9T integrated wirless
.It Asus WL-159g
.It Belkin F5D7050 v.4000
.It Billion BiPAC 3011G
.It Buffalo WLI-U2-KG54L
.It CC&C WL-2203B
.It DrayTek Vigor 550
.It Edimax EW-7317UG
.It Edimax EW-7317LDG
.It Fiberline Networks WL-43OU
.It iNexQ UR055g
.It Linksys WUSBF54G
.It Longshine LCS-8131G3
.It MSI US54SE
.It Philips SNU5600
.It Planet WL-U356
.It Planex GW-US54GZ
.It Planex GW-US54GZL
.It Planex GW-US54Mini
.It Safecom SWMULZ-5400
.It Sagem XG 760A
.It Sagem XG 76NA
.It Sandberg Wireless G54 USB
.It Sitecom WL-113
.It SMC SMCWUSB-G
.It Sweex wireless USB 54 Mbps
.It Tekram/Siemens USB adapter
.It Telegent TG54USB
.It Trendnet TEW-424UB
.It Trendnet TEW-429UB
.It TwinMOS G240
.It US Robotics 5423
.It X-Micro XWL-11GUZX
.It Yakumo QuickWLAN USB
.It Zonet ZEW2501
.It ZyXEL ZyAIR G-220
.El
.Sh FILES
The adapter needs some firmware files, which are loaded on demand by the
driver when a device is attached:
.Pp
.Bl -tag -width Ds -offset indent -compact
.It Pa /libdata/firmware/zyd/zyd-zd1211
.It Pa /libdata/firmware/zyd/zyd-zd1211b
.El
See
.Xr firmload 9
for how to change this.
.Sh EXAMPLES
The following
.Xr ifconfig.if 5
example configures zyd0 to join whatever network is available on boot,
using WEP key
.Dq 0x1deadbeef1 ,
channel 11:
.Bd -literal -offset indent
inet 192.168.1.1 netmask 255.255.255.0 nwkey 0x1deadbeef1 chan 11
.Ed
.Pp
Configure zyd0 for WEP, using hex key
.Dq 0x1deadbeef1 :
.Bd -literal -offset indent
# ifconfig zyd0 nwkey 0x1deadbeef1
.Ed
.Pp
Return zyd0 to its default settings:
.Bd -literal -offset indent
# ifconfig zyd0 -bssid -chan media autoselect \e
nwid "" -nwkey
.Ed
.Pp
Join an existing BSS network,
.Dq my_net :
.Bd -literal -offset indent
# ifconfig zyd0 192.168.0.2 netmask 0xffffff00 nwid my_net
.Ed
.Sh DIAGNOSTICS
.Bl -diag
.It "zyd%d: could not read firmware file %s (error=%d)"
For some reason, the driver was unable to read the firmware file from the
filesystem.
The file might be missing or corrupted.
.It "zyd%d: could not load firmware (error=%d)"
An error occurred while attempting to upload the firmware to the onboard
microcontroller unit.
.It "zyd%d: could not send command (error=%s)"
An attempt to send a command to the firmware failed.
.It "zyd%d: sorry, radio %s is not supported yet"
Support for the specified radio chip is not yet implemented in the driver.
The device will not attach.
.It "zyd%d: device version mismatch: 0x%x (only >= 43.30 supported)"
Early revisions of the ZD1211 chipset are not supported by this driver.
The device will not attach.
.It "zyd%d: device timeout"
A frame dispatched to the hardware for transmission did not complete in time.
The driver will reset the hardware.
This should not happen.
.El
.Sh SEE ALSO
.Xr arp 4 ,
.Xr ifmedia 4 ,
.Xr intro 4 ,
.Xr netintro 4 ,
.Xr usb 4 ,
.Xr ifconfig.if 5 ,
.Xr ifconfig 8,
.Xr firmload 9
.Sh AUTHORS
.An -nosplit
The
.Nm
driver was written by
.An Florian Stoehr Aq ich@florian-stoehr.de ,
.An Damien Bergamini Aq damien@openbsd.org ,
and
.An Jonathan Gray Aq jsg@openbsd.org .
.Sh CAVEATS
The
.Nm
driver does not support a lot of the functionality available in the hardware.
More work is required to properly support the IBSS and power management
features.

View File

@ -1,5 +1,5 @@
# $NetBSD: Makefile,v 1.6 2006/10/31 22:21:17 joerg Exp $
# $NetBSD: Makefile,v 1.7 2007/06/09 11:20:56 kiyohara Exp $
SUBDIR+= ral rum
SUBDIR+= ral rum zyd
.include <bsd.subdir.mk>

View File

@ -0,0 +1,14 @@
# $NetBSD: Makefile,v 1.1 2007/06/09 11:20:54 kiyohara Exp $
NOMAN= # defined
FILES= zyd-zd1211 zyd-zd1211b zd1211-licence
# XXX
includes:
clean:
cleandir:
.include <bsd.files.mk>

View File

@ -0,0 +1,57 @@
/* $OpenBSD: build.c,v 1.2 2006/11/13 02:52:46 jsg Exp $ */
/*-
* Copyright (c) 2006
* Damien Bergamini <damien.bergamini@free.fr>
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
#include <sys/types.h>
#include <err.h>
#include <fcntl.h>
#include <stdio.h>
#include <unistd.h>
#include "microcode.h"
static void
output(const char *name, const uint8_t *ucode, int size)
{
ssize_t rlen;
int fd;
printf("creating %s length %d\n", name, size);
fd = open(name, O_WRONLY | O_CREAT | O_TRUNC, 0644);
if (fd == -1)
err(1, "%s", name);
rlen = write(fd, ucode, size);
if (rlen == -1)
err(1, "%s", name);
if (rlen != size)
errx(1, "%s: short write", name);
close(fd);
}
int
main(void)
{
output("zyd-zd1211", zd1211_firmware, sizeof zd1211_firmware);
output("zyd-zd1211b", zd1211b_firmware, sizeof zd1211b_firmware);
return 0;
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,26 @@
* Copyright (C) 2001, 2002, 2003,2004 ZyDAS Technology Corporation.
* All rights reserved.
*
* Redistribution and use in source and binary forms are permitted provided
* that the following conditions are met:
* 1. Redistribution of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistribution in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. The name of the author may not be used to endorse or promote products
* derived from this software without specific prior written permission
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
The following files are under the above license:
zd1211 zd1211b

Binary file not shown.

Binary file not shown.

View File

@ -1,4 +1,4 @@
# $NetBSD: files.usb,v 1.77 2007/05/20 05:08:17 dogcow Exp $
# $NetBSD: files.usb,v 1.78 2007/06/09 11:20:55 kiyohara Exp $
#
# Config file and device description for machine-independent USB code.
# Included by ports that need it. Ports that use it must provide
@ -283,3 +283,13 @@ file dev/usb/utoppy.c utoppy
device xboxcontroller: wsmousedev
attach xboxcontroller at usbdevif
file dev/usb/xboxcontroller.c xboxcontroller
# Zydas ZD1211
device zyd: ether, ifnet, arp, wlan, firmload
attach zyd at usbdevif
file dev/usb/if_zyd.c zyd
# Atheros AR5005UG/AR5005UX
device uath: ether, ifnet, arp, wlan, firmload
attach uath at usbdevif
file dev/usb/if_uath.c uath

2646
sys/dev/usb/if_zyd.c Normal file

File diff suppressed because it is too large Load Diff

1232
sys/dev/usb/if_zydreg.h Normal file

File diff suppressed because it is too large Load Diff