Add Conexant/Intersil PrismGT SoftMAC wireless USB driver - upgt(4).
This driver supports GW3887 based chipsets and works on x86/powerpc/sparc64. You need upgtfw kernel module before loading upgt(4). Please see the manpage. Obtained from: OpenBSD
This commit is contained in:
parent
a823cbc6f7
commit
b3be9d15b4
211
share/man/man4/upgt.4
Normal file
211
share/man/man4/upgt.4
Normal file
@ -0,0 +1,211 @@
|
||||
.\" $OpenBSD: upgt.4,v 1.6 2008/04/17 14:01:22 jmc Exp $
|
||||
.\" $FreeBSD$
|
||||
.\"
|
||||
.\" Copyright (c) 2007 Marcus Glocker <mglocker@openbsd.org>
|
||||
.\" Copyright (c) 2005-2007
|
||||
.\" 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.
|
||||
.\"
|
||||
.\"
|
||||
.\"
|
||||
.\" Copyright (c) 2006 Theo de Raadt.
|
||||
.\" Copyright (c) 2006 The DragonFly Project. 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. Neither the name of The DragonFly Project nor the names of its
|
||||
.\" contributors may be used to endorse or promote products derived
|
||||
.\" from this software without specific, prior written permission.
|
||||
.\"
|
||||
.\" 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 HOLDERS 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.
|
||||
.\"
|
||||
.Dd $Mdocdate: April 17 2008 $
|
||||
.Os
|
||||
.Dt UPGT 4
|
||||
.Sh NAME
|
||||
.Nm upgt
|
||||
.Nd Conexant/Intersil PrismGT SoftMAC USB IEEE 802.11b/g wireless network
|
||||
device
|
||||
.Sh SYNOPSIS
|
||||
To compile this driver into the kernel,
|
||||
place the following lines in your
|
||||
kernel configuration file:
|
||||
.Bd -ragged -offset indent
|
||||
.Cd "device ehci"
|
||||
.Cd "device uhci"
|
||||
.Cd "device ohci"
|
||||
.Cd "device usb"
|
||||
.Cd "device upgt"
|
||||
.Cd "device wlan"
|
||||
.Ed
|
||||
.Pp
|
||||
Alternatively, to load the driver as a
|
||||
module at boot time, place the following line in
|
||||
.Xr loader.conf 5 :
|
||||
.Bd -literal -offset indent
|
||||
if_upgt_load="YES"
|
||||
.Ed
|
||||
.Sh DESCRIPTION
|
||||
The
|
||||
.Nm
|
||||
driver supports the USB 2.0 Conexant/Intersil PrismGT series wireless
|
||||
adapters based on the GW3887 chipset.
|
||||
.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 IBSS mode
|
||||
.\" Also known as
|
||||
.\" .Em IEEE ad-hoc
|
||||
.\" mode or
|
||||
.\" .Em peer-to-peer
|
||||
.\" mode.
|
||||
.\" This is the standardized method of operating without an access point.
|
||||
.\" Stations associate with a service set.
|
||||
.\" However, actual connections between stations are peer-to-peer.
|
||||
.\" .It Host AP
|
||||
.\" In this mode the driver acts as an access point (base station)
|
||||
.\" for other cards.
|
||||
.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.
|
||||
.\".Pp
|
||||
.\"The transmit speed is user-selectable or can be adapted automatically by the
|
||||
.\"driver depending on the received signal strength and on the number of hardware
|
||||
.\"transmission retries.
|
||||
.Pp
|
||||
The
|
||||
.Nm
|
||||
driver can be configured at runtime with
|
||||
.Xr ifconfig 8 .
|
||||
.Sh FILES
|
||||
.\".Pp
|
||||
.\"These firmware files are not free because Conexant/Intersil refuses
|
||||
.\"to grant distribution rights.
|
||||
.\"As a result, even though
|
||||
.\".Ox
|
||||
.\"includes the driver, the firmware files cannot be included and
|
||||
.\"users have to download these files on their own.
|
||||
This driver requires the
|
||||
.Nm upgtfw
|
||||
be installed before it will work.
|
||||
The firmware files are not publicly available.
|
||||
A package of the firmware which can be installed via
|
||||
.Xr pkg_add 1
|
||||
with:
|
||||
.Bd -literal -offset indent
|
||||
http://weongyo.org/project/upgt/upgt-firmware-2.13.1.0.tar.gz
|
||||
.Ed
|
||||
.Sh HARDWARE
|
||||
The following adapters should work:
|
||||
.Pp
|
||||
.Bl -tag -width Ds -offset indent -compact
|
||||
.It Belkin F5D7050 (version 1000)
|
||||
.It Cohiba Proto Board
|
||||
.It D-Link DWL-G120 Cohiba
|
||||
.It FSC Connect2Air E-5400 USB D1700
|
||||
.It Gigaset USB Adapter 54
|
||||
.It Inventel UR045G
|
||||
.It Netgear WG111v2
|
||||
.It SMC EZ ConnectG SMC2862W-G
|
||||
.It Sagem XG703A
|
||||
.It Spinnaker DUT
|
||||
.It Spinnaker Proto Board
|
||||
.El
|
||||
.Sh EXAMPLES
|
||||
Join an existing BSS network (i.e., connect to an access point):
|
||||
.Pp
|
||||
.Bd -literal -offset indent
|
||||
ifconfig wlan create wlandev upgt0 inet 192.168.0.20 \e
|
||||
netmask 0xffffff00
|
||||
.Ed
|
||||
.Pp
|
||||
Join a specific BSS network with network name
|
||||
.Dq Li my_net :
|
||||
.Pp
|
||||
.Dl "ifconfig wlan create wlandev upgt0 ssid my_net up"
|
||||
.Pp
|
||||
Join a specific BSS network with 64-bit WEP encryption:
|
||||
.Bd -literal -offset indent
|
||||
ifconfig wlan create wlandev upgt0 ssid my_net \e
|
||||
wepmode on wepkey 0x1234567890 weptxkey 1 up
|
||||
.Ed
|
||||
.Sh SEE ALSO
|
||||
.Xr arp 4 ,
|
||||
.Xr netintro 4 ,
|
||||
.Xr usb 4 ,
|
||||
.Xr wlan 4 ,
|
||||
.Xr ifconfig 8
|
||||
.Sh HISTORY
|
||||
The
|
||||
.Nm
|
||||
driver first appeared in
|
||||
.Ox 4.3 .
|
||||
.Sh AUTHORS
|
||||
.An -nosplit
|
||||
The
|
||||
.Nm
|
||||
driver was written by
|
||||
.An Marcus Glocker Aq mglocker@openbsd.org .
|
||||
.Pp
|
||||
The hardware specification was reverse engineered by the people at
|
||||
.Pa http://www.prism54.org .
|
||||
.Sh CAVEATS
|
||||
The
|
||||
.Nm
|
||||
driver just supports the USB 2.0 devices (GW3887 chipset) but not the
|
||||
USB 1.0 devices containing the NET2280, ISL3880, and ISL3886 chipsets.
|
||||
Some further efforts would be necessary to add USB 1.0 support to the
|
||||
driver.
|
2376
sys/dev/usb/if_upgt.c
Normal file
2376
sys/dev/usb/if_upgt.c
Normal file
File diff suppressed because it is too large
Load Diff
462
sys/dev/usb/if_upgtvar.h
Normal file
462
sys/dev/usb/if_upgtvar.h
Normal file
@ -0,0 +1,462 @@
|
||||
/* $OpenBSD: if_upgtvar.h,v 1.14 2008/02/02 13:48:44 mglocker Exp $ */
|
||||
/* $FreeBSD$ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2007 Marcus Glocker <mglocker@openbsd.org>
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
struct upgt_softc;
|
||||
|
||||
/*
|
||||
* General values.
|
||||
*/
|
||||
#define UPGT_IFACE_INDEX 0
|
||||
#define UPGT_CONFIG_NO 1
|
||||
#define UPGT_USB_TIMEOUT 1000
|
||||
#define UPGT_FIRMWARE_TIMEOUT 10
|
||||
|
||||
#define UPGT_MEMADDR_FIRMWARE_START 0x00020000 /* 512 bytes large */
|
||||
#define UPGT_MEMSIZE_FRAME_HEAD 0x0070
|
||||
#define UPGT_MEMSIZE_RX 0x3500
|
||||
|
||||
#define UPGT_TX_COUNT 2
|
||||
|
||||
/* device flags */
|
||||
#define UPGT_DEVICE_ATTACHED (1 << 0)
|
||||
|
||||
/* leds */
|
||||
#define UPGT_LED_OFF 0
|
||||
#define UPGT_LED_ON 1
|
||||
#define UPGT_LED_BLINK 2
|
||||
|
||||
/*
|
||||
* Firmware.
|
||||
*/
|
||||
#define UPGT_FW_BLOCK_SIZE 512
|
||||
|
||||
#define UPGT_BRA_FWTYPE_SIZE 4
|
||||
#define UPGT_BRA_FWTYPE_LM86 "LM86"
|
||||
#define UPGT_BRA_FWTYPE_LM87 "LM87"
|
||||
enum upgt_fw_type {
|
||||
UPGT_FWTYPE_LM86,
|
||||
UPGT_FWTYPE_LM87
|
||||
};
|
||||
|
||||
#define UPGT_BRA_TYPE_FW 0x80000001
|
||||
#define UPGT_BRA_TYPE_VERSION 0x80000002
|
||||
#define UPGT_BRA_TYPE_DEPIF 0x80000003
|
||||
#define UPGT_BRA_TYPE_EXPIF 0x80000004
|
||||
#define UPGT_BRA_TYPE_DESCR 0x80000101
|
||||
#define UPGT_BRA_TYPE_END 0xff0000ff
|
||||
struct upgt_fw_bra_option {
|
||||
uint32_t type;
|
||||
uint32_t len;
|
||||
uint8_t data[];
|
||||
} __packed;
|
||||
|
||||
struct upgt_fw_bra_descr {
|
||||
uint32_t unknown1;
|
||||
uint32_t memaddr_space_start;
|
||||
uint32_t memaddr_space_end;
|
||||
uint32_t unknown2;
|
||||
uint32_t unknown3;
|
||||
uint8_t rates[20];
|
||||
} __packed;
|
||||
|
||||
#define UPGT_X2_SIGNATURE_SIZE 4
|
||||
#define UPGT_X2_SIGNATURE "x2 "
|
||||
struct upgt_fw_x2_header {
|
||||
uint8_t signature[4];
|
||||
uint32_t startaddr;
|
||||
uint32_t len;
|
||||
uint32_t crc;
|
||||
} __packed;
|
||||
|
||||
/*
|
||||
* EEPROM.
|
||||
*/
|
||||
#define UPGT_EEPROM_SIZE 8192
|
||||
#define UPGT_EEPROM_BLOCK_SIZE 1020
|
||||
|
||||
struct upgt_eeprom_header {
|
||||
/* 14 bytes */
|
||||
uint32_t magic;
|
||||
uint16_t pad1;
|
||||
uint16_t preamble_len;
|
||||
uint32_t pad2;
|
||||
/* data */
|
||||
} __packed;
|
||||
|
||||
#define UPGT_EEPROM_TYPE_END 0x0000
|
||||
#define UPGT_EEPROM_TYPE_NAME 0x0001
|
||||
#define UPGT_EEPROM_TYPE_SERIAL 0x0003
|
||||
#define UPGT_EEPROM_TYPE_MAC 0x0101
|
||||
#define UPGT_EEPROM_TYPE_HWRX 0x1001
|
||||
#define UPGT_EEPROM_TYPE_CHIP 0x1002
|
||||
#define UPGT_EEPROM_TYPE_FREQ3 0x1903
|
||||
#define UPGT_EEPROM_TYPE_FREQ4 0x1904
|
||||
#define UPGT_EEPROM_TYPE_FREQ5 0x1905
|
||||
#define UPGT_EEPROM_TYPE_FREQ6 0x1906
|
||||
#define UPGT_EEPROM_TYPE_OFF 0xffff
|
||||
struct upgt_eeprom_option {
|
||||
uint16_t len;
|
||||
uint16_t type;
|
||||
uint8_t data[];
|
||||
/* data */
|
||||
} __packed;
|
||||
|
||||
#define UPGT_EEPROM_RX_CONST 0x88
|
||||
struct upgt_eeprom_option_hwrx {
|
||||
uint32_t pad1;
|
||||
uint8_t rxfilter;
|
||||
uint8_t pad2[15];
|
||||
} __packed;
|
||||
|
||||
struct upgt_eeprom_freq3_header {
|
||||
uint8_t flags;
|
||||
uint8_t elements;
|
||||
} __packed;
|
||||
|
||||
struct upgt_eeprom_freq4_header {
|
||||
uint8_t flags;
|
||||
uint8_t elements;
|
||||
uint8_t settings;
|
||||
uint8_t type;
|
||||
} __packed;
|
||||
|
||||
struct upgt_eeprom_freq4_1 {
|
||||
uint16_t freq;
|
||||
uint8_t data[50];
|
||||
} __packed;
|
||||
|
||||
struct upgt_eeprom_freq4_2 {
|
||||
uint16_t head;
|
||||
uint8_t subtails[4];
|
||||
uint8_t tail;
|
||||
} __packed;
|
||||
|
||||
/*
|
||||
* LMAC protocol.
|
||||
*/
|
||||
struct upgt_lmac_mem {
|
||||
uint32_t addr;
|
||||
uint32_t chksum;
|
||||
} __packed;
|
||||
|
||||
#define UPGT_H1_FLAGS_TX_MGMT 0x00 /* for TX: mgmt frame */
|
||||
#define UPGT_H1_FLAGS_TX_NO_CALLBACK 0x01 /* for TX: no USB callback */
|
||||
#define UPGT_H1_FLAGS_TX_DATA 0x10 /* for TX: data frame */
|
||||
#define UPGT_H1_TYPE_RX_DATA 0x00 /* 802.11 RX data frame */
|
||||
#define UPGT_H1_TYPE_RX_DATA_MGMT 0x04 /* 802.11 RX mgmt frame */
|
||||
#define UPGT_H1_TYPE_TX_DATA 0x40 /* 802.11 TX data frame */
|
||||
#define UPGT_H1_TYPE_CTRL 0x80 /* control frame */
|
||||
struct upgt_lmac_h1 {
|
||||
/* 4 bytes */
|
||||
uint8_t flags;
|
||||
uint8_t type;
|
||||
uint16_t len;
|
||||
} __packed;
|
||||
|
||||
#define UPGT_H2_TYPE_TX_ACK_NO 0x0000
|
||||
#define UPGT_H2_TYPE_TX_ACK_YES 0x0001
|
||||
#define UPGT_H2_TYPE_MACFILTER 0x0000
|
||||
#define UPGT_H2_TYPE_CHANNEL 0x0001
|
||||
#define UPGT_H2_TYPE_TX_DONE 0x0008
|
||||
#define UPGT_H2_TYPE_STATS 0x000a
|
||||
#define UPGT_H2_TYPE_EEPROM 0x000c
|
||||
#define UPGT_H2_TYPE_LED 0x000d
|
||||
#define UPGT_H2_FLAGS_TX_ACK_NO 0x0101
|
||||
#define UPGT_H2_FLAGS_TX_ACK_YES 0x0707
|
||||
struct upgt_lmac_h2 {
|
||||
/* 8 bytes */
|
||||
uint32_t reqid;
|
||||
uint16_t type;
|
||||
uint16_t flags;
|
||||
} __packed;
|
||||
|
||||
struct upgt_lmac_header {
|
||||
/* 12 bytes */
|
||||
struct upgt_lmac_h1 header1;
|
||||
struct upgt_lmac_h2 header2;
|
||||
} __packed;
|
||||
|
||||
struct upgt_lmac_eeprom {
|
||||
/* 16 bytes */
|
||||
struct upgt_lmac_h1 header1;
|
||||
struct upgt_lmac_h2 header2;
|
||||
uint16_t offset;
|
||||
uint16_t len;
|
||||
/* data */
|
||||
} __packed;
|
||||
|
||||
#define UPGT_FILTER_TYPE_NONE 0x0000
|
||||
#define UPGT_FILTER_TYPE_STA 0x0001
|
||||
#define UPGT_FILTER_TYPE_IBSS 0x0002
|
||||
#define UPGT_FILTER_TYPE_HOSTAP 0x0004
|
||||
#define UPGT_FILTER_TYPE_MONITOR 0x0010
|
||||
#define UPGT_FILTER_TYPE_RESET 0x0020
|
||||
#define UPGT_FILTER_UNKNOWN1 0x0002
|
||||
#define UPGT_FILTER_UNKNOWN2 0x0ca8
|
||||
#define UPGT_FILTER_UNKNOWN3 0xffff
|
||||
#define UPGT_FILTER_MONITOR_UNKNOWN1 0x0000
|
||||
#define UPGT_FILTER_MONITOR_UNKNOWN2 0x0000
|
||||
#define UPGT_FILTER_MONITOR_UNKNOWN3 0x0000
|
||||
struct upgt_lmac_filter {
|
||||
struct upgt_lmac_h1 header1;
|
||||
struct upgt_lmac_h2 header2;
|
||||
/* 32 bytes */
|
||||
uint16_t type;
|
||||
uint8_t dst[IEEE80211_ADDR_LEN];
|
||||
uint8_t src[IEEE80211_ADDR_LEN];
|
||||
uint16_t unknown1;
|
||||
uint32_t rxaddr;
|
||||
uint16_t unknown2;
|
||||
uint32_t rxhw;
|
||||
uint16_t unknown3;
|
||||
uint32_t unknown4;
|
||||
} __packed;
|
||||
|
||||
/* frequence 3 data */
|
||||
struct upgt_lmac_freq3 {
|
||||
uint16_t freq;
|
||||
uint8_t data[6];
|
||||
} __packed;
|
||||
|
||||
/* frequence 4 data */
|
||||
struct upgt_lmac_freq4 {
|
||||
struct upgt_eeprom_freq4_2 cmd;
|
||||
uint8_t pad;
|
||||
};
|
||||
|
||||
/* frequence 6 data */
|
||||
struct upgt_lmac_freq6 {
|
||||
uint16_t freq;
|
||||
uint8_t data[8];
|
||||
} __packed;
|
||||
|
||||
#define UPGT_CHANNEL_UNKNOWN1 0x0001
|
||||
#define UPGT_CHANNEL_UNKNOWN2 0x0000
|
||||
#define UPGT_CHANNEL_UNKNOWN3 0x48
|
||||
struct upgt_lmac_channel {
|
||||
struct upgt_lmac_h1 header1;
|
||||
struct upgt_lmac_h2 header2;
|
||||
/* 112 bytes */
|
||||
uint16_t unknown1;
|
||||
uint16_t unknown2;
|
||||
uint8_t pad1[20];
|
||||
struct upgt_lmac_freq6 freq6;
|
||||
uint8_t settings;
|
||||
uint8_t unknown3;
|
||||
uint8_t freq3_1[4];
|
||||
struct upgt_lmac_freq4 freq4[8];
|
||||
uint8_t freq3_2[4];
|
||||
uint32_t pad2;
|
||||
} __packed;
|
||||
|
||||
#define UPGT_LED_MODE_SET 0x0003
|
||||
#define UPGT_LED_ACTION_OFF 0x0002
|
||||
#define UPGT_LED_ACTION_ON 0x0003
|
||||
#define UPGT_LED_ACTION_TMP_DUR 100 /* ms */
|
||||
struct upgt_lmac_led {
|
||||
struct upgt_lmac_h1 header1;
|
||||
struct upgt_lmac_h2 header2;
|
||||
uint16_t mode;
|
||||
uint16_t action_fix;
|
||||
uint16_t action_tmp;
|
||||
uint16_t action_tmp_dur;
|
||||
} __packed;
|
||||
|
||||
struct upgt_lmac_stats {
|
||||
struct upgt_lmac_h1 header1;
|
||||
struct upgt_lmac_h2 header2;
|
||||
uint8_t data[76];
|
||||
} __packed;
|
||||
|
||||
struct upgt_lmac_rx_desc {
|
||||
struct upgt_lmac_h1 header1;
|
||||
/* 16 bytes */
|
||||
uint16_t freq;
|
||||
uint8_t unknown1;
|
||||
uint8_t rate;
|
||||
uint8_t rssi;
|
||||
uint8_t pad;
|
||||
uint16_t unknown2;
|
||||
uint32_t timestamp;
|
||||
uint32_t unknown3;
|
||||
uint8_t data[];
|
||||
} __packed;
|
||||
|
||||
#define UPGT_TX_DESC_KEY_EXISTS 0x01
|
||||
struct upgt_lmac_tx_desc_wep {
|
||||
uint8_t key_exists;
|
||||
uint8_t key_len;
|
||||
uint8_t key_val[16];
|
||||
} __packed;
|
||||
|
||||
#define UPGT_TX_DESC_TYPE_BEACON 0x00000000
|
||||
#define UPGT_TX_DESC_TYPE_PROBE 0x00000001
|
||||
#define UPGT_TX_DESC_TYPE_MGMT 0x00000002
|
||||
#define UPGT_TX_DESC_TYPE_DATA 0x00000004
|
||||
#define UPGT_TX_DESC_PAD3_SIZE 2
|
||||
struct upgt_lmac_tx_desc {
|
||||
struct upgt_lmac_h1 header1;
|
||||
struct upgt_lmac_h2 header2;
|
||||
uint8_t rates[8];
|
||||
uint16_t pad1;
|
||||
struct upgt_lmac_tx_desc_wep wep_key;
|
||||
uint32_t type;
|
||||
uint32_t pad2;
|
||||
uint32_t unknown1;
|
||||
uint32_t unknown2;
|
||||
uint8_t pad3[2];
|
||||
/* 802.11 frame data */
|
||||
} __packed;
|
||||
|
||||
#define UPGT_TX_DONE_DESC_STATUS_OK 0x0001
|
||||
struct upgt_lmac_tx_done_desc {
|
||||
struct upgt_lmac_h1 header1;
|
||||
struct upgt_lmac_h2 header2;
|
||||
uint16_t status;
|
||||
uint16_t rssi;
|
||||
uint16_t seq;
|
||||
uint16_t unknown;
|
||||
} __packed;
|
||||
|
||||
/*
|
||||
* USB xfers.
|
||||
*/
|
||||
struct upgt_data {
|
||||
struct upgt_softc *sc;
|
||||
usbd_xfer_handle xfer;
|
||||
uint8_t *buf;
|
||||
struct ieee80211_node *ni;
|
||||
struct mbuf *m;
|
||||
uint32_t addr;
|
||||
uint8_t use;
|
||||
};
|
||||
|
||||
/*
|
||||
* Prism memory.
|
||||
*/
|
||||
struct upgt_memory_page {
|
||||
uint8_t used;
|
||||
uint32_t addr;
|
||||
} __packed;
|
||||
|
||||
#define UPGT_MEMORY_MAX_PAGES 8
|
||||
struct upgt_memory {
|
||||
uint8_t pages;
|
||||
struct upgt_memory_page page[UPGT_MEMORY_MAX_PAGES];
|
||||
} __packed;
|
||||
|
||||
/*
|
||||
* BPF
|
||||
*/
|
||||
struct upgt_rx_radiotap_header {
|
||||
struct ieee80211_radiotap_header wr_ihdr;
|
||||
uint8_t wr_flags;
|
||||
uint8_t wr_rate;
|
||||
uint16_t wr_chan_freq;
|
||||
uint16_t wr_chan_flags;
|
||||
int8_t wr_antsignal;
|
||||
} __packed;
|
||||
|
||||
#define UPGT_RX_RADIOTAP_PRESENT \
|
||||
((1 << IEEE80211_RADIOTAP_FLAGS) | \
|
||||
(1 << IEEE80211_RADIOTAP_RATE) | \
|
||||
(1 << IEEE80211_RADIOTAP_CHANNEL) | \
|
||||
(1 << IEEE80211_RADIOTAP_DB_ANTSIGNAL))
|
||||
|
||||
struct upgt_tx_radiotap_header {
|
||||
struct ieee80211_radiotap_header wt_ihdr;
|
||||
uint8_t wt_flags;
|
||||
uint8_t wt_rate;
|
||||
uint16_t wt_chan_freq;
|
||||
uint16_t wt_chan_flags;
|
||||
} __packed;
|
||||
|
||||
#define UPGT_TX_RADIOTAP_PRESENT \
|
||||
((1 << IEEE80211_RADIOTAP_FLAGS) | \
|
||||
(1 << IEEE80211_RADIOTAP_RATE) | \
|
||||
(1 << IEEE80211_RADIOTAP_CHANNEL))
|
||||
|
||||
struct upgt_vap {
|
||||
struct ieee80211vap vap;
|
||||
int (*newstate)(struct ieee80211vap *,
|
||||
enum ieee80211_state, int);
|
||||
};
|
||||
#define UPGT_VAP(vap) ((struct upgt_vap *)(vap))
|
||||
|
||||
struct upgt_softc {
|
||||
device_t sc_dev;
|
||||
struct ifnet *sc_ifp;
|
||||
usbd_device_handle sc_udev;
|
||||
usbd_interface_handle sc_iface;
|
||||
struct mtx sc_mtx;
|
||||
int sc_if_flags;
|
||||
int sc_debug;
|
||||
|
||||
struct usb_task sc_mcasttask;
|
||||
struct usb_task sc_task;
|
||||
struct usb_task sc_scantask;
|
||||
#define UPGT_SET_CHANNEL 2
|
||||
int sc_scan_action;
|
||||
enum ieee80211_state sc_state;
|
||||
int sc_arg;
|
||||
int sc_led_blink;
|
||||
struct callout sc_led_ch;
|
||||
uint8_t sc_cur_rateset[8];
|
||||
|
||||
/* watchdog */
|
||||
int sc_tx_timer;
|
||||
struct callout sc_watchdog_ch;
|
||||
|
||||
/* Firmware. */
|
||||
int sc_fw_type;
|
||||
/* memory addresses on device */
|
||||
uint32_t sc_memaddr_frame_start;
|
||||
uint32_t sc_memaddr_frame_end;
|
||||
uint32_t sc_memaddr_rx_start;
|
||||
struct upgt_memory sc_memory;
|
||||
|
||||
/* data which we found in the EEPROM */
|
||||
uint8_t sc_eeprom[UPGT_EEPROM_SIZE];
|
||||
uint16_t sc_eeprom_hwrx;
|
||||
struct upgt_lmac_freq3 sc_eeprom_freq3[IEEE80211_CHAN_MAX];
|
||||
struct upgt_lmac_freq4 sc_eeprom_freq4[IEEE80211_CHAN_MAX][8];
|
||||
struct upgt_lmac_freq6 sc_eeprom_freq6[IEEE80211_CHAN_MAX];
|
||||
uint8_t sc_eeprom_freq6_settings;
|
||||
|
||||
/* RX/TX */
|
||||
int sc_rx_no;
|
||||
int sc_tx_no;
|
||||
usbd_pipe_handle sc_rx_pipeh;
|
||||
usbd_pipe_handle sc_tx_pipeh;
|
||||
struct upgt_data tx_data[UPGT_TX_COUNT];
|
||||
struct upgt_data rx_data;
|
||||
struct upgt_data cmd_data;
|
||||
int tx_queued;
|
||||
struct usb_task sc_task_tx;
|
||||
|
||||
/* BPF */
|
||||
struct upgt_rx_radiotap_header sc_rxtap;
|
||||
int sc_rxtap_len;
|
||||
|
||||
struct upgt_tx_radiotap_header sc_txtap;
|
||||
int sc_txtap_len;
|
||||
};
|
||||
|
||||
#define UPGT_LOCK(sc) mtx_lock(&(sc)->sc_mtx)
|
||||
#define UPGT_UNLOCK(sc) mtx_unlock(&(sc)->sc_mtx)
|
@ -435,6 +435,7 @@ vendor AUDIOTECHNICA 0x0909 Audio-Technica
|
||||
vendor TRUMPION 0x090a Trumpion Microelectronics
|
||||
vendor FEIYA 0x090c Feiya
|
||||
vendor ALATION 0x0910 Alation Systems
|
||||
vendor GLOBESPAN 0x0915 Globespan
|
||||
vendor CONCORDCAMERA 0x0919 Concord Camera
|
||||
vendor GARMIN 0x091e Garmin International
|
||||
vendor GOHUBS 0x0921 GoHubs
|
||||
@ -497,6 +498,7 @@ vendor AMBIT 0x0bb2 Ambit Microsystems
|
||||
vendor HTC 0x0bb4 HTC
|
||||
vendor REALTEK 0x0bda Realtek
|
||||
vendor ADDONICS2 0x0bf6 Addonics Technology
|
||||
vendor FSC 0x0bf8 Fujitsu Siemens Computers
|
||||
vendor AGATE 0x0c08 Agate Technologies
|
||||
vendor DMI 0x0c0b DMI
|
||||
vendor MICRODIA 0x0c45 Chicony
|
||||
@ -700,6 +702,7 @@ product ACCTON USB320_EC 0x1046 USB320-EC Ethernet Adapter
|
||||
product ACCTON 2664W 0x3501 2664W
|
||||
product ACCTON 111 0x3503 T-Sinus 111 Wireless Adapter
|
||||
product ACCTON SMCWUSBG 0x4505 SMCWUSB-G
|
||||
product ACCTON PRISM_GT 0x4521 PrismGT USB 2.0 WLAN
|
||||
product ACCTON SS1001 0x5046 SpeedStream Ethernet Adapter
|
||||
product ACCTON ZD1211B 0xe501 ZD1211B
|
||||
|
||||
@ -1030,6 +1033,7 @@ product COMPAQ IPAQLINUX 0x505a iPAQ Linux
|
||||
product COMPOSITE USBPS2 0x0001 USB to PS2 Adaptor
|
||||
|
||||
/* Conceptronic products */
|
||||
product CONCEPTRONIC PRISM_GT 0x3762 PrismGT USB 2.0 WLAN
|
||||
product CONCEPTRONIC C11U 0x7100 C11U
|
||||
product CONCEPTRONIC WL210 0x7110 WL-210
|
||||
product CONCEPTRONIC AR5523_1 0x7801 AR5523
|
||||
@ -1096,7 +1100,9 @@ product DALLAS J6502 0x4201 J-6502 speakers
|
||||
product DELL PORT 0x0058 Port Replicator
|
||||
product DELL AIO926 0x5115 Photo AIO Printer 926
|
||||
product DELL BC02 0x8000 BC02 Bluetooth USB Adapter
|
||||
product DELL PRISM_GT_1 0x8102 PrismGT USB 2.0 WLAN
|
||||
product DELL TM350 0x8103 TrueMobile 350 Bluetooth USB Adapter
|
||||
product DELL PRISM_GT_2 0x8104 PrismGT USB 2.0 WLAN
|
||||
product DELL U740 0x8135 Dell U740 CDMA
|
||||
|
||||
/* Delorme Paublishing products */
|
||||
@ -1247,6 +1253,9 @@ product FOSSIL WRISTPDA 0x0002 Wrist PDA
|
||||
/* Freecom products */
|
||||
product FREECOM DVD 0xfc01 DVD drive
|
||||
|
||||
/* Fujitsu Siemens Computers products */
|
||||
product FSC E5400 0x1009 PrismGT USB 2.0 WLAN
|
||||
|
||||
/* Future Technology Devices products */
|
||||
product FTDI SERIAL_8U100AX 0x8372 8U100AX Serial
|
||||
product FTDI SERIAL_8U232AM 0x6001 8U232AM Serial
|
||||
@ -1314,6 +1323,10 @@ product GLOBALSUN AR5523_1_NF 0x7802 AR5523 (no firmware)
|
||||
product GLOBALSUN AR5523_2 0x7811 AR5523
|
||||
product GLOBALSUN AR5523_2_NF 0x7812 AR5523 (no firmware)
|
||||
|
||||
/* Globespan products */
|
||||
product GLOBESPAN PRISM_GT_1 0x2000 PrismGT USB 2.0 WLAN
|
||||
product GLOBESPAN PRISM_GT_2 0x2002 PrismGT USB 2.0 WLAN
|
||||
|
||||
/* G.Mate, Inc products */
|
||||
product GMATE YP3X00 0x1001 YP3X00 PDA
|
||||
|
||||
@ -1440,6 +1453,7 @@ product INTEL EASYPC_CAMERA 0x0110 Easy PC Camera
|
||||
product INTEL TESTBOARD 0x9890 82930 test board
|
||||
|
||||
/* Intersil products */
|
||||
product INTERSIL PRISM_GT 0x1000 PrismGT USB 2.0 WLAN
|
||||
product INTERSIL PRISM_2X 0x3642 Prism2.x or Atmel WLAN
|
||||
|
||||
/* Interpid Control Systems products */
|
||||
@ -1781,6 +1795,7 @@ product NETGEAR EA101 0x1001 Ethernet
|
||||
product NETGEAR EA101X 0x1002 Ethernet
|
||||
product NETGEAR FA101 0x1020 Ethernet 10/100, USB1.1
|
||||
product NETGEAR FA120 0x1040 USB 2.0 Ethernet
|
||||
product NETGEAR WG111V2_2 0x4240 PrismGT USB 2.0 WLAN
|
||||
product NETGEAR WG111U 0x4300 WG111U
|
||||
product NETGEAR WG111U_NF 0x4301 WG111U (no firmware)
|
||||
product NETGEAR2 MA101 0x4100 MA101
|
||||
@ -2359,6 +2374,7 @@ product WINBOND UH104 0x5518 4-port USB Hub
|
||||
product WINMAXGROUP FLASH64MC 0x6660 USB Flash Disk 64M-C
|
||||
|
||||
/* Wistron NeWeb products */
|
||||
product WISTRONNEWEB UR045G 0x0427 PrismGT USB 2.0 WLAN
|
||||
product WISTRONNEWEB UR055G 0x0711 UR055G
|
||||
product WISTRONNEWEB AR5523_1 0x0826 AR5523
|
||||
product WISTRONNEWEB AR5523_1_NF 0x0827 AR5523 (no firmware)
|
||||
@ -2371,6 +2387,10 @@ product XEROX WCM15 0xffef WorkCenter M15
|
||||
/* Xirlink products */
|
||||
product XIRLINK PCCAM 0x8080 IBM PC Camera
|
||||
|
||||
/* Xyratex products */
|
||||
product XYRATEX PRISM_GT_1 0x2000 PrismGT USB 2.0 WLAN
|
||||
product XYRATEX PRISM_GT_2 0x2002 PrismGT USB 2.0 WLAN
|
||||
|
||||
/* Y-E Data products */
|
||||
product YEDATA FLASHBUSTERU 0x0000 Flashbuster-U
|
||||
|
||||
@ -2390,6 +2410,7 @@ product YANO FW800HD 0x05fc METALWEAR-HDD
|
||||
product ZCOM M4Y750 0x0001 M4Y-750
|
||||
product ZCOM XI725 0x0002 XI-725/726
|
||||
product ZCOM XI735 0x0005 XI-735
|
||||
product ZCOM XG703A 0x0008 PrismGT USB 2.0 WLAN
|
||||
product ZCOM ZD1211 0x0011 ZD1211
|
||||
product ZCOM AR5523 0x0012 AR5523
|
||||
product ZCOM AR5523_NF 0x0013 AR5523 driver (no firmware)
|
||||
|
10
sys/modules/upgt/Makefile
Normal file
10
sys/modules/upgt/Makefile
Normal file
@ -0,0 +1,10 @@
|
||||
# Conexant/Intersil PrismGT SoftMAC(GW3887) USB devices
|
||||
#
|
||||
# $FreeBSD$
|
||||
|
||||
.PATH: ${.CURDIR}/../../dev/usb
|
||||
|
||||
KMOD = if_upgt
|
||||
SRCS = if_upgt.c opt_usb.h device_if.h bus_if.h usbdevs.h
|
||||
|
||||
.include <bsd.kmod.mk>
|
Loading…
Reference in New Issue
Block a user