1 /* $FreeBSD: stable/10/sys/i386/include/if_wl_wavelan.h 139790 2005-01-06 22:18:23Z imp $ */ 2 /*- 3 * Redistribution and use in source and binary forms, with or without 4 * modification, are permitted provided that the following conditions 5 * are met: 6 * 1. Redistributions of source code must retain all copyright 7 * notices, this list of conditions and the following disclaimer. 8 * 2. The names of the authors may not be used to endorse or promote products 9 * derived from this software without specific prior written permission 10 * 11 * THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR 12 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 13 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 14 * IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY DIRECT, INDIRECT, 15 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 16 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 17 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 18 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 19 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 20 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 21 * 22 */ 23 #ifndef _CHIPS_WAVELAN_H 24 #define _CHIPS_WAVELAN_H 25 26 /* This file contains definitions that are common for all versions of 27 * the NCR WaveLAN 28 */ 29 30 #define WAVELAN_ADDR_SIZE 6 /* Size of a MAC address */ 31 #define WAVELAN_MTU 1500 /* Maximum size of Wavelan packet */ 32 33 /* Modem Management Controler write commands */ 34 #define MMC_ENCR_KEY 0x00 /* to 0x07 */ 35 #define MMC_ENCR_ENABLE 0x08 36 #define MMC_DES_IO_INVERT 0x0a 37 #define MMC_LOOPT_SEL 0x10 38 #define MMC_JABBER_ENABLE 0x11 39 #define MMC_FREEZE 0x12 40 #define MMC_ANTEN_SEL 0x13 41 #define MMC_IFS 0x14 42 #define MMC_MOD_DELAY 0x15 43 #define MMC_JAM_TIME 0x16 44 #define MMC_THR_PRE_SET 0x18 45 #define MMC_DECAY_PRM 0x19 46 #define MMC_DECAY_UPDAT_PRM 0x1a 47 #define MMC_QUALITY_THR 0x1b 48 #define MMC_NETW_ID_L 0x1c 49 #define MMC_NETW_ID_H 0x1d 50 #define MMC_MODE_SEL 0x1e 51 #define MMC_EECTRL 0x20 /* 2.4 Gz */ 52 #define MMC_EEADDR 0x21 /* 2.4 Gz */ 53 #define MMC_EEDATAL 0x22 /* 2.4 Gz */ 54 #define MMC_EEDATAH 0x23 /* 2.4 Gz */ 55 #define MMC_ANALCTRL 0x24 /* 2.4 Gz */ 56 57 /* fields in MMC registers that relate to EEPROM in WaveMODEM daughtercard */ 58 #define MMC_EECTRL_EEPRE 0x10 /* 2.4 Gz EEPROM Protect Reg Enable */ 59 #define MMC_EECTRL_DWLD 0x08 /* 2.4 Gz EEPROM Download Synths */ 60 #define MMC_EECTRL_EEOP 0x07 /* 2.4 Gz EEPROM Opcode mask */ 61 #define MMC_EECTRL_EEOP_READ 0x06 /* 2.4 Gz EEPROM Read Opcode */ 62 #define MMC_EEADDR_CHAN 0xf0 /* 2.4 Gz EEPROM Channel # mask */ 63 #define MMC_EEADDR_WDCNT 0x0f /* 2.4 Gz EEPROM DNLD WordCount-1 */ 64 #define MMC_ANALCTRL_ANTPOL 0x02 /* 2.4 Gz Antenna Polarity mask */ 65 #define MMC_ANALCTRL_EXTANT 0x01 /* 2.4 Gz External Antenna mask */ 66 67 /* MMC read register names */ 68 #define MMC_DCE_STATUS 0x10 69 #define MMC_CORRECT_NWID_L 0x14 70 #define MMC_CORRECT_NWID_H 0x15 71 #define MMC_WRONG_NWID_L 0x16 72 #define MMC_WRONG_NWID_H 0x17 73 #define MMC_THR_PRE_SET 0x18 74 #define MMC_SIGNAL_LVL 0x19 75 #define MMC_SILENCE_LVL 0x1a 76 #define MMC_SIGN_QUAL 0x1b 77 #define MMC_DES_AVAIL 0x09 78 #define MMC_EECTRLstat 0x20 /* 2.4 Gz EEPROM r/w/dwld status */ 79 #define MMC_EEDATALrv 0x22 /* 2.4 Gz EEPROM read value */ 80 #define MMC_EEDATAHrv 0x23 /* 2.4 Gz EEPROM read value */ 81 82 /* fields in MMC registers that relate to EEPROM in WaveMODEM daughtercard */ 83 #define MMC_EECTRLstat_ID24 0xf0 /* 2.4 Gz =A0 rev-A, =B0 rev-B */ 84 #define MMC_EECTRLstat_DWLD 0x08 /* 2.4 Gz Synth/Tx-Pwr DWLD busy */ 85 #define MMC_EECTRLstat_EEBUSY 0x04 /* 2.4 Gz EEPROM busy */ 86 87 /* additional socket ioctl params for wl card 88 * see sys/sockio.h for numbers. The 2nd params here 89 * must be greater than any values in sockio.h 90 */ 91 92 #define SIOCGWLCNWID _IOWR('i', 60, struct ifreq) /* get wlan current nwid */ 93 #define SIOCSWLCNWID _IOWR('i', 61, struct ifreq) /* set wlan current nwid */ 94 #define SIOCGWLPSA _IOWR('i', 62, struct ifreq) /* get wlan PSA (all) */ 95 #define SIOCSWLPSA _IOWR('i', 63, struct ifreq) /* set wlan PSA (all) */ 96 #define SIOCDWLCACHE _IOW('i', 64, struct ifreq) /* clear SNR cache */ 97 #define SIOCSWLTHR _IOW('i', 65, struct ifreq) /* set new quality threshold */ 98 #define SIOCGWLEEPROM _IOWR('i', 66, struct ifreq) /* get modem EEPROM */ 99 #define SIOCGWLCACHE _IOWR('i', 67, struct ifreq) /* get SNR cache */ 100 #define SIOCGWLCITEM _IOWR('i', 68, struct ifreq) /* get cache element count */ 101 102 /* PSA address definitions */ 103 #define WLPSA_ID 0x0 /* ID byte (0 for ISA, 0x14 for MCA) */ 104 #define WLPSA_IO1 0x1 /* I/O address 1 */ 105 #define WLPSA_IO2 0x2 /* I/O address 2 */ 106 #define WLPSA_IO3 0x3 /* I/O address 3 */ 107 #define WLPSA_BR1 0x4 /* Bootrom address 1 */ 108 #define WLPSA_BR2 0x5 /* Bootrom address 2 */ 109 #define WLPSA_BR3 0x6 /* Bootrom address 3 */ 110 #define WLPSA_HWCONF 0x7 /* HW config bits */ 111 #define WLPSA_IRQNO 0x8 /* IRQ value */ 112 #define WLPSA_UNIMAC 0x10 /* Universal MAC address */ 113 #define WLPSA_LOCALMAC 0x16 /* Locally configured MAC address */ 114 #define WLPSA_MACSEL 0x1c /* MAC selector */ 115 #define WLPSA_COMPATNO 0x1d /* compatibility number */ 116 #define WLPSA_THRESH 0x1e /* RF modem threshold preset */ 117 #define WLPSA_FEATSEL 0x1f /* feature select */ 118 #define WLPSA_SUBBAND 0x20 /* subband selector */ 119 #define WLPSA_QUALTHRESH 0x21 /* RF modem quality threshold preset */ 120 #define WLPSA_HWVERSION 0x22 /* hardware version indicator */ 121 #define WLPSA_NWID 0x23 /* network ID */ 122 #define WLPSA_NWIDENABLE 0x24 /* network ID enable */ 123 #define WLPSA_SECURITY 0x25 /* datalink security enable */ 124 #define WLPSA_DESKEY 0x26 /* datalink security DES key */ 125 #define WLPSA_DBWIDTH 0x2f /* databus width select */ 126 #define WLPSA_CALLCODE 0x30 /* call code (japan only) */ 127 #define WLPSA_CONFIGURED 0x3c /* configuration status */ 128 #define WLPSA_CRCLOW 0x3d /* CRC-16 (lowbyte) */ 129 #define WLPSA_CRCHIGH 0x3e /* (highbyte) */ 130 #define WLPSA_CRCOK 0x3f /* CRC OK flag */ 131 132 #define WLPSA_COMPATNO_WL24B 0x04 /* 2.4 Gz WaveMODEM ISA rev-B */ 133 134 /* 135 * signal strength cache 136 * 137 * driver (wlp only at the moment) keeps cache of last 138 * IP (only) packets to arrive including signal strength info. 139 * daemons may read this with kvm. See if_wlp.c for globals 140 * that may be accessed through kvm. 141 * 142 * Each entry in the w_sigcache has a unique macsrc and age. 143 * Each entry is identified by its macsrc field. 144 * Age of the packet is identified by its age field. 145 */ 146 147 #define MAXCACHEITEMS 10 148 #ifndef INT_MAX 149 #define INT_MAX 2147483647 150 #endif 151 #define MAX_AGE (INT_MAX - MAXCACHEITEMS) 152 153 /* signal is 7 bits, 0..63, although it doesn't seem to get to 63. 154 * silence is 7 bits, 0..63 155 * quality is 4 bits, 0..15 156 */ 157 struct w_sigcache { 158 char macsrc[6]; /* unique MAC address for entry */ 159 int ipsrc; /* ip address associated with packet */ 160 int signal; /* signal strength of the packet */ 161 int silence; /* silence of the packet */ 162 int quality; /* quality of the packet */ 163 int snr; /* packet has unique age between 1 to MAX_AGE - 1 */ 164 }; 165 166 #endif /* _CHIPS_WAVELAN_H */ 167 168