1 #define DEBUG if(1){}else print
5 // Lucent's Length-Type-Value records to talk to the wavelan.
6 // most operational parameters are read/set using this.
14 WTyp_WantName = 0xfc02,
16 WTyp_NetName = 0xfc04,
21 WTyp_NodeName = 0xfc0e,
24 WTyp_CreateIBSS = 0xfc81,
25 WTyp_RtsThres = 0xfc83,
33 WTyp_StationID = 0xfd20,
34 WTyp_CurName = 0xfd41,
35 WTyp_BaseID = 0xfd42, // ID of the currently connected-to base station
36 WTyp_CurTxRate = 0xfd44, // Current TX rate
37 WTyp_HasCrypt = 0xfd4f,
44 WDfltIRQ = 3, // default irq
45 WDfltIOB = 0x180, // default IO base
47 WIOLen = 0x40, // Hermes IO length
49 WTmOut = 65536, // Cmd time out
54 WDfltPType = WPTypeManaged,
57 WDfltRtsThres = 2347, // == disabled
58 WDfltTxRate = WTxAuto, // 2Mbps
68 // Wavelan hermes registers
105 WEvs = WRXEv|WTXEv|WAllocEv|WInfoEv|WIDropEv,
126 WSnap0 = (WSnapK1|(WSnapK1<<8)),
127 WSnap1 = (WSnapK2|(WSnapCtlr<<8)),
130 WF_802_11_Off = 0x44,
135 typedef struct Ctlr Ctlr;
136 typedef struct Wltv Wltv;
137 typedef struct WFrame WFrame;
138 typedef struct Stats Stats;
139 typedef struct WStats WStats;
140 typedef struct WScan WScan;
141 typedef struct WKey WKey;
145 ulong ntxuframes; // unicast frames
146 ulong ntxmframes; // multicast frames
147 ulong ntxfrags; // fragments
148 ulong ntxubytes; // unicast bytes
149 ulong ntxmbytes; // multicast bytes
150 ulong ntxdeferred; // deferred transmits
151 ulong ntxsretries; // single retries
152 ulong ntxmultiretries; // multiple retries
155 ulong nrxuframes; // unicast frames
156 ulong nrxmframes; // multicast frames
157 ulong nrxfrags; // fragments
158 ulong nrxubytes; // unicast bytes
159 ulong nrxmbytes; // multicast bytes
163 ulong nrxcantdecrypt;
171 ushort chan; /* dss channel */
172 ushort noise; /* average noise in the air */
173 ushort signal; /* signal strength */
174 uchar bssid[Eaddrlen]; /* MAC address of the ap */
175 ushort interval; /* beacon transmit interval */
176 ushort capinfo; /* capability bits (0-ess, 1-ibss, 4-privacy [wep]) */
177 ushort ssid_len; /* ssid length */
178 char ssid[WNameLen]; /* ssid (ap name) */
192 uchar addr1[Eaddrlen];
193 uchar addr2[Eaddrlen];
194 uchar addr3[Eaddrlen];
196 uchar addr4[Eaddrlen];
198 uchar dstaddr[Eaddrlen];
199 uchar srcaddr[Eaddrlen];
237 // What the driver thinks. Not what the card thinks.
247 ulong nalloc; // allocation (reclaim) events
250 ulong nwatchdogs; // transmit time outs, actually
266 int state; // Attached | Power
286 char netname[WNameLen];
287 char wantname[WNameLen];
288 char nodename[WNameLen];
292 int hascrypt; // card has encryption
293 int crypt; // encryption off/on
294 int txkey; // transmit key
295 Wltv keys; // default keys
296 int xclear; // exclude clear packets off/on
301 /* for PCI-based devices */
310 extern char* wavenames[];
312 void csr_outs(Ctlr*, int, ushort);
313 ushort csr_ins(Ctlr*, int);
314 void w_intdis(Ctlr*);
315 int w_cmd(Ctlr *, ushort, ushort);
316 void ltv_outs(Ctlr*, int, ushort);
317 int ltv_ins(Ctlr*, int);
318 int w_option(Ctlr*, char*, long);
319 int w_inltv(Ctlr*, Wltv*);
320 void w_attach(Ether*);
321 void w_interrupt(Ureg*,void*);
322 void w_transmit(Ether*);
323 long w_ifstat(Ether*, void*, long, ulong);
324 long w_ctl(Ether*, void*, long);
325 void w_promiscuous(void*, int);
326 void w_multicast(void*, uchar*, int);
327 int wavelanreset(Ether*, Ctlr*);