home *** CD-ROM | disk | FTP | other *** search
/ ftp.ee.pdx.edu / 2014.02.ftp.ee.pdx.edu.tar / ftp.ee.pdx.edu / pub / mobile / tmp / wavelan.h < prev   
C/C++ Source or Header  |  1999-08-02  |  7KB  |  262 lines

  1. /* 
  2.  * HISTORY
  3.  * $Log: wavelan.h,v $
  4.  * Revision 1.2  1999/02/18 19:21:03  toshi
  5.  * merge FreeBSD 3.1-RELEASE + PAO patch
  6.  * Reviewed by:    MIHIRA Sanpei Yoshiro <sanpei@sanpei.org>
  7.  *         Toshihiko ARAI <toshi@jp.freebsd.org>
  8.  * Submitted by:    Motokazu Ozawa <ozawa@hal.rcast.u-tokyo.ac.jp>
  9.  * Obtained from:    http://www.hal.rcast.u-tokyo.ac.jp/~ozawa/PAO/PAO31.990218.diff.gz
  10.  *
  11.  * Revision 1.1.2.1  1999/02/18 11:29:09  ozawa
  12.  * merge PAO3
  13.  *
  14.  * Revision 1.1  1998/11/06 06:33:28  itojun
  15.  * sync with http://www.asahi-net.or.jp/~IE9T-SBGK/PAO300_testsnap_981106.diff.
  16.  *
  17.  * special handling:
  18.  * - sys/i386/conf/PAO: not imported (must be generated by Makefile.kit)
  19.  * - sys/i386/conf/BOOTFLP_PAO: not imported (must be generated by Makefile.kit)
  20.  * - sys/i386/conf/TECRA: not imported (local to sibagaki)
  21.  * - sys/i386/pccard/i82365reg.h: rename/fix from i82365reg.h
  22.  * - sys/i386/pccard/pcicvar.h: rename/fix from i82365reg.h
  23.  *
  24.  * Yon can now get latest PAO3 kernel by:
  25.  * % cvs -d jaz.jp.freebsd.org:/home/cvs co -P PAO3/sys
  26.  * (note that we now use HEAD (default) branch for PAO development)
  27.  *
  28.  * Revision 1.1.6.1  1998/08/04 03:04:56  kim
  29.  * pao227 release added files
  30.  * PR:
  31.  * Reviewed by:
  32.  * Submitted by:
  33.  * Obtained from:
  34.  *
  35.  * Revision 1.1.4.1  1998/04/04 23:23:41  itojun
  36.  * PAO for FreeBSD 2.2.6-RELEASE.
  37.  * I dunno if it compiles or not...
  38.  *
  39.  * Submitted by:    thasegawa@mta.biglobe.ne.jp
  40.  *
  41.  * Revision 1.1.2.1  1997/12/11 13:59:42  itojun
  42.  * PAO-971210 import. hope this works well...
  43.  *
  44.  * Obtained from:    hosokawa
  45.  *
  46.  * Revision 1.1  1994/06/02  20:31:11  klemets
  47.  * Initial revision
  48.  *
  49.  */
  50. #ifndef    _CHIPS_WAVELAN_H
  51. #define _CHIPS_WAVELAN_H
  52.  
  53. /* This file contains definitions that are common for all versions of
  54.  * the NCR WaveLAN
  55.  */
  56.  
  57. #define WAVELAN_ADDR_SIZE    6    /* Size of a MAC address */
  58. #define WAVELAN_MTU        1500    /* Maximum size of Wavelan packet */
  59.  
  60. struct wl_cntrs {
  61.     struct {
  62.         u_int xmt, xmti;
  63.         u_int defer;
  64.         u_int busy;
  65.         u_int sleaze, intrinsic, intrinsic_count;
  66.         u_int chain;
  67.         u_int heart;
  68.         u_int coll;
  69.         u_int ncoll;
  70.         u_int nodcd;
  71.         u_int nocts;
  72.         u_int dma;
  73.     } xmt; 
  74.     struct {
  75.         u_int rcv;
  76.         u_int ovw;
  77.         u_int crc;
  78.         u_int frame;
  79.         u_int rscerrs, ovrnerrs;
  80.         u_int partial;
  81.         u_int snr[5];
  82.     } rcv;
  83.     struct {
  84.         u_short status;
  85.         u_short nwids;
  86.         u_short badnwids;
  87.         u_short thrpreset;
  88.         u_short siglvl;
  89.         u_short sillvl;
  90.         u_short sigqual;
  91.         u_short netwidl;
  92.         u_short des;
  93.     } mmc;
  94.     u_int watch;
  95. };
  96. typedef    struct wl_cntrs *wl_cntrs_t;
  97.  
  98. #define    CNTR_NAME    "_wl_cntrs"
  99.  
  100. /* command unit for wlsetstat */
  101. struct wl_ucmd {
  102.   int cmd;
  103.   int param;
  104. };
  105. typedef struct wl_ucmd *wl_ucmd_t;
  106.  
  107. #ifdef    IF_CNTRS
  108. /* interface driver specific counters */
  109. struct wl_ifcntrs {
  110.   int pkt_arp;
  111.   int pkt_ein[32];
  112.   int pkt_lin[128/8];
  113.   int pkt_eout[32]; 
  114.   int pkt_lout[128/8]; 
  115. };
  116. typedef struct wl_ifcntrs *wl_ifcntrs_t;
  117. #define    NET_WL_IFCNTRS        (('w'<<16) + 3)
  118. #define NET_WL_IFCNTRS_CNT    (sizeof (struct wl_ifcntrs)/sizeof(int))
  119. #endif    IF_CNTRS
  120.  
  121. /* local flavor value for wlsetstat and wlgetstat */
  122. #define    NET_WL_CNTRS        (('w'<<16) + 1)
  123. #define    NET_WL_CMD        (('w'<<16) + 2)
  124. #define    NET_WL_PSA        (('w'<<24) + ('l'<<16))
  125. #define NET_WL_CNTRS_CNT    (sizeof (struct wl_cntrs)/sizeof(int))
  126. #define NET_WL_CMD_CNT        (sizeof (struct wl_ucmd)/sizeof(int))
  127. #define    NET_WL_PSA_CNT    1
  128.  
  129. #ifdef    IF_LINKSTATUS
  130. #define NET_LINKSTATE        (('w'<<16) + 4)
  131. #define NET_LADDR_ADD        (('w'<<16) + 5)
  132. #define NET_LADDR_DEL        (('w'<<16) + 6)
  133. #define NET_LADDR_ADD_CNT    ((WAVELAN_ADDR_SIZE + sizeof(int) - 1)/sizeof(int))
  134. #define NET_LADDR_DEL_CNT    ((WAVELAN_ADDR_SIZE + sizeof(int) - 1)/sizeof(int))
  135. #define    MAX_LINKADDR        64
  136. #endif    IF_LINKSTATUS
  137.  
  138.  
  139. /* local commands */
  140. #define    WLCMD_CLEAR        1
  141. #define WLCMD_SENDCMD        2
  142. #define WLCMD_SETNWID        3
  143. #define WLCMD_SETIRQ        4
  144. #define WLCMD_PARAM        5
  145. #define WLCMD_POWER_DOWN    6
  146. #define WLCMD_POWER_UP        7
  147.  
  148. #define    DEFAULT_PSA_OFFSET    0xe00
  149.  
  150. /* Allocations in general purpose software block */
  151.  
  152. #define NETW_ADDR        0x10    /* Factory network address */
  153. #define NETW_ADDR_LOCAL        0x16    /* Local network address */
  154. #define PSA_MAC_SELECT        0x1c    /* 0=factory, 1=local address */
  155. #define PSA_COMP_NUMBER        0x1d    /* 0=PC-AT 915 MHz, 1=PC-MC 915 MHz
  156.                        2=PC-AT 2.4 GHz, 3=PC-MC 2.4 GHz
  157.                        4=PCMCIA 915 MHz */
  158. #define PSA_THR_PRE_SET        0x1e
  159. #define PSA_FEATURE_SELECT    0x1f
  160. #define PSA_SUBBAND        0x20    /* 1=2425 MHz, 2=2460 MHz, 3=2484 MHz
  161.                        4=2430.5 MHz */
  162. #define    PSA_QUALITY_THR        0x21
  163. #define NETW_ID            0x23    /* Network ID */
  164. #define    PSA_NETW_ID_SELECT    0x25
  165. #define PSA_SECURITY_SELECT    0x26
  166. #define PSA_ENCRYPTION_KEY    0x27
  167. #define PSA_DATABUS_WIDTH    0x2f
  168. #define PSA_CALL_CODE        0x30
  169. #define PSA_NWID_PREFIX        0x38
  170. #define PSA_CONF_STATUS        0x3c
  171. #define PSA_CRC            0x3d
  172. #define PSA_CRC_STATUS        0x3f
  173.  
  174. /* Modem Management Controler write commands */
  175.  
  176. #define MMC_LOOPT_SEL        0x10
  177. #define MMC_JABBER_ENABLE    0x11
  178. #define MMC_FREEZE        0x12
  179. #define MMC_ANTEN_SEL        0x13
  180. #define MMC_IFS            0x14
  181. #define MMC_MOD_DELAY        0x15
  182. #define MMC_JAM_TIME        0x16
  183. #define MMC_THR_PRE_SET        0x18
  184. #define MMC_DECAY_PRM        0x19
  185. #define MMC_DECAY_UPDAT_PRM    0x1a
  186. #define MMC_QUALITY_THR        0x1b
  187. #define MMC_NETW_ID_L        0x1c
  188. #define MMC_NETW_ID_H        0x1d
  189. #define MMC_MODE_SEL        0x1e
  190. #define MMC_ENCR_KEY        0x00    /* to 0x07 */
  191. #define MMC_ENCR_ENABLE        0x08
  192. #define MMC_DES_IO_INVERT    0x0a
  193.  
  194. /* MMC read register names */
  195.  
  196. #define MMC_DCE_STATUS        0x10
  197. #define MMC_CORRECT_NWID_L    0x14
  198. #define MMC_CORRECT_NWID_H    0x15
  199. #define MMC_WRONG_NWID_L    0x16
  200. #define MMC_WRONG_NWID_H    0x17
  201. #define MMC_THR_PRE_SET        0x18
  202. #define MMC_SIGNAL_LVL        0x19
  203. #define MMC_SILENCE_LVL        0x1a
  204. #define MMC_SIGN_QUAL        0x1b
  205. #define MMC_DES_AVAIL        0x09
  206.  
  207. struct wavelan_conf {
  208.     u_char    wc_confstat;
  209.     u_char    wc_nwid[2];
  210.     u_char    wc_macaddr[6];
  211.     u_char    wc_comp_number;
  212.     u_char    wc_subband;
  213.     u_char    wc_netw_id_sel;
  214.     u_char    wc_thr_pre_set;
  215.     u_char    wc_quality_thr;
  216. };
  217.  
  218.  
  219. /* additional socket ioctl params for wl card   
  220.  * see sys/sockio.h for numbers.  The 2nd params here
  221.  * must be greater than any values in sockio.h
  222.  */
  223.  
  224. #define SIOCGWLNWID   _IOWR('i', 60, struct ifreq)    /* get wlan nwid */
  225. #define SIOCSWLNWID   _IOWR('i', 61, struct ifreq)    /* set wlan nwid */
  226.  
  227. /* 
  228.  * signal strength cache
  229.  *
  230.  * driver (wlp only at the moment) keeps cache of last
  231.  * IP (only) packets to arrive including signal strength info.
  232.  * daemons may read this with kvm.  See if_wlp.c for globals
  233.  * that may be accessed through kvm.
  234.  *
  235.  * Each entry in the w_sigcache has a unique macsrc and age.
  236.  * Each entry is identified by its macsrc field.
  237.  * Age of the packet is identified by its age field.
  238.  */
  239.  
  240. #define    MAXCACHEITEMS    10
  241. #ifndef    INT_MAX
  242. #define    INT_MAX        2147483647
  243. #endif
  244. #define    MAX_AGE        (INT_MAX - MAXCACHEITEMS)
  245.  
  246. /* signal is 7 bits, 0..63, although it doesn't seem to get to 63.
  247.  * silence is 7 bits, 0..63
  248.  * quality is 4 bits, 0..15
  249.  */
  250. struct w_sigcache {
  251.     char    macsrc[6];    /* unique MAC address for entry */
  252.     int    ipsrc;        /* ip address associated with packet */
  253.     int    signal;        /* signal strength of the packet */
  254.     int    silence;    /* silence of the packet */
  255.     int    quality;    /* quality of the packet */
  256.     int    snr;        /* snr is calculated */
  257. };
  258.  
  259.  
  260. #endif    _CHIPS_WAVELAN_H
  261.  
  262.