92struct __ie_sys_conf_ptr {
96 u_int32_t ie_iscp_ptr;
100#define IE_SCP_BUS_USE(base) ((base) + 2)
101#define IE_SCP_ISCP(base) ((base) + 8)
107#define IE_SCP_ADDR 0xfffff4
115struct __ie_int_sys_conf_ptr {
118 u_int16_t ie_scb_offset;
123#define IE_ISCP_BUSY(base) ((base) + 0)
124#define IE_ISCP_SCB(base) ((base) + 2)
125#define IE_ISCP_BASE(base) ((base) + 4)
131struct __ie_sys_ctl_block {
133 u_int16_t ie_command;
134 u_int16_t ie_command_list;
135 u_int16_t ie_recv_list;
136 u_int16_t ie_err_crc;
137 u_int16_t ie_err_align;
138 u_int16_t ie_err_resource;
139 u_int16_t ie_err_overrun;
143#define IE_SCB_STATUS(base) ((base) + 0)
144#define IE_SCB_CMD(base) ((base) + 2)
145#define IE_SCB_CMDLST(base) ((base) + 4)
146#define IE_SCB_RCVLST(base) ((base) + 6)
147#define IE_SCB_ERRCRC(base) ((base) + 8)
148#define IE_SCB_ERRALN(base) ((base) + 10)
149#define IE_SCB_ERRRES(base) ((base) + 12)
150#define IE_SCB_ERROVR(base) ((base) + 14)
153#define IE_RUC_MASK 0x0070
155#define IE_RUC_START 0x0010
156#define IE_RUC_RESUME 0x0020
157#define IE_RUC_SUSPEND 0x0030
158#define IE_RUC_ABORT 0x0040
160#define IE_CUC_MASK 0x0700
162#define IE_CUC_START 0x0100
163#define IE_CUC_RESUME 0x0200
164#define IE_CUC_SUSPEND 0x0300
165#define IE_CUC_ABORT 0x0400
167#define IE_ACK_COMMAND 0xf000
168#define IE_ACK_CX 0x8000
169#define IE_ACK_FR 0x4000
170#define IE_ACK_CNA 0x2000
171#define IE_ACK_RNR 0x1000
173#define IE_ACTION_COMMAND(x) (((x) & IE_CUC_MASK) == IE_CUC_START)
177#define IE_ST_WHENCE 0xf000
178#define IE_ST_CX 0x8000
179#define IE_ST_FR 0x4000
180#define IE_ST_CNA 0x2000
181#define IE_ST_RNR 0x1000
183#define IE_CUS_MASK 0x0700
184#define IE_CUS_ACTIVE 0x0200
185#define IE_CUS_SUSPEND 0x0100
187#define IE_RUS_MASK 0x0070
188#define IE_RUS_SUSPEND 0x0010
189#define IE_RUS_NOSPACE 0x0020
190#define IE_RUS_READY 0x0040
196struct __ie_recv_frame_desc {
197 u_int16_t ie_fd_status;
198 u_int16_t ie_fd_last;
199 u_int16_t ie_fd_next;
200 u_int16_t ie_fd_buf_desc;
201 struct __ie_en_addr dest;
202 struct __ie_en_addr src;
207#define IE_RFRAME_SZ 24
208#define IE_RFRAME_ADDR(base,i) ((base) + (i) * IE_RFRAME_SZ)
209#define IE_RFRAME_STATUS(b,i) (IE_RFRAME_ADDR(b,i) + 0)
210#define IE_RFRAME_LAST(b,i) (IE_RFRAME_ADDR(b,i) + 2)
211#define IE_RFRAME_NEXT(b,i) (IE_RFRAME_ADDR(b,i) + 4)
212#define IE_RFRAME_BUFDESC(b,i) (IE_RFRAME_ADDR(b,i) + 6)
213#define IE_RFRAME_EDST(b,i) (IE_RFRAME_ADDR(b,i) + 8)
214#define IE_RFRAME_ESRC(b,i) (IE_RFRAME_ADDR(b,i) + 14)
215#define IE_RFRAME_ELEN(b,i) (IE_RFRAME_ADDR(b,i) + 20)
218#define IE_FD_EOL 0x8000
219#define IE_FD_SUSP 0x4000
222#define IE_FD_COMPLETE 0x8000
223#define IE_FD_BUSY 0x4000
224#define IE_FD_OK 0x2000
225#define IE_FD_CRC 0x0800
226#define IE_FD_ALGN 0x0400
227#define IE_FD_RNR 0x0200
228#define IE_FD_OVR 0x0100
229#define IE_FD_SHORT 0x0080
230#define IE_FD_NOEOF 0x0040
231#define IE_FD_ERRMASK \
232 (IE_FD_CRC|IE_FD_ALGN|IE_FD_RNR|IE_FD_OVR|IE_FD_SHORT|IE_FD_NOEOF)
233#define IE_FD_STATUSBITS \
234 "\20\20COMPLT\17BUSY\16OK\14CRC\13ALGN\12RNR\11OVR\10SHORT\7NOEOF"
240struct __ie_recv_buf_desc {
241 u_int16_t ie_rbd_status;
242 u_int16_t ie_rbd_next;
243 caddr_t ie_rbd_buffer;
244 u_int16_t ie_rbd_length;
249#define IE_RBD_ADDR(base,i) ((base) + (i) * IE_RBD_SZ)
250#define IE_RBD_STATUS(b,i) (IE_RBD_ADDR(b,i) + 0)
251#define IE_RBD_NEXT(b,i) (IE_RBD_ADDR(b,i) + 2)
252#define IE_RBD_BUFADDR(b,i) (IE_RBD_ADDR(b,i) + 4)
253#define IE_RBD_BUFLEN(b,i) (IE_RBD_ADDR(b,i) + 8)
256#define IE_RBD_LAST 0x8000
257#define IE_RBD_USED 0x4000
258#define IE_RBD_CNTMASK 0x3fff
261#define IE_RBD_EOL 0x8000
268struct __ie_cmd_common {
269 u_int16_t ie_cmd_status;
270 u_int16_t ie_cmd_cmd;
271 u_int16_t ie_cmd_link;
274#define IE_CMD_COMMON_SZ 6
275#define IE_CMD_COMMON_STATUS(base) ((base) + 0)
276#define IE_CMD_COMMON_CMD(base) ((base) + 2)
277#define IE_CMD_COMMON_LINK(base) ((base) + 4)
279#define IE_STAT_COMPL 0x8000
280#define IE_STAT_BUSY 0x4000
281#define IE_STAT_OK 0x2000
282#define IE_STAT_ABORT 0x1000
284#define IE_CMD_NOP 0x0000
285#define IE_CMD_IASETUP 0x0001
286#define IE_CMD_CONFIG 0x0002
287#define IE_CMD_MCAST 0x0003
288#define IE_CMD_XMIT 0x0004
289#define IE_CMD_TDR 0x0005
290#define IE_CMD_DUMP 0x0006
291#define IE_CMD_DIAGNOSE 0x0007
293#define IE_CMD_LAST 0x8000
294#define IE_CMD_SUSPEND 0x4000
295#define IE_CMD_INTR 0x2000
300#define IE_CMD_NOP_SZ IE_CMD_COMMON_SZ
301#define IE_CMD_NOP_ADDR(base,i) ((base) + (i) * IE_CMD_NOP_SZ)
302#define IE_CMD_NOP_STATUS(b,i) (IE_CMD_NOP_ADDR(b,i) + 0)
303#define IE_CMD_NOP_CMD(b,i) (IE_CMD_NOP_ADDR(b,i) + 2)
304#define IE_CMD_NOP_LINK(b,i) (IE_CMD_NOP_ADDR(b,i) + 4)
311struct __ie_xmit_cmd {
312 struct __ie_cmd_common com;
313#define __ie_xmit_status com.ie_cmd_status
315 u_int16_t ie_xmit_desc;
316 struct __ie_en_addr ie_xmit_addr;
317 u_int16_t ie_xmit_length;
320#define IE_CMD_XMIT_SZ (IE_CMD_COMMON_SZ + 10)
321#define IE_CMD_XMIT_ADDR(base,i) ((base) + (i) * IE_CMD_XMIT_SZ)
322#define IE_CMD_XMIT_STATUS(b,i) \
323 (IE_CMD_XMIT_ADDR(b,i) + 0)
324#define IE_CMD_XMIT_CMD(b,i) \
325 (IE_CMD_XMIT_ADDR(b,i) + 2)
326#define IE_CMD_XMIT_LINK(b,i) \
327 (IE_CMD_XMIT_ADDR(b,i) + 4)
328#define IE_CMD_XMIT_DESC(b,i) \
329 (IE_CMD_XMIT_ADDR(b,i) + IE_CMD_COMMON_SZ + 0)
330#define IE_CMD_XMIT_EADDR(b,i) \
331 (IE_CMD_XMIT_ADDR(b,i) + IE_CMD_COMMON_SZ + 2)
332#define IE_CMD_XMIT_LEN(b,i) \
333 (IE_CMD_XMIT_ADDR(b,i) + IE_CMD_COMMON_SZ + 8)
335#define IE_XS_MAXCOLL 0x000f
336#define IE_XS_EXCMAX 0x0020
337#define IE_XS_SQE 0x0040
338#define IE_XS_DEFERRED 0x0080
339#define IE_XS_UNDERRUN 0x0100
340#define IE_XS_LOSTCTS 0x0200
341#define IE_XS_NOCARRIER 0x0400
342#define IE_XS_LATECOLL 0x0800
348struct __ie_xmit_buf {
349 u_int16_t ie_xmit_flags;
350 u_int16_t ie_xmit_next;
355#define IE_XBD_ADDR(base,i) ((base) + (i) * IE_XBD_SZ)
356#define IE_XBD_FLAGS(b,i) (IE_XBD_ADDR(b,i) + 0)
357#define IE_XBD_NEXT(b,i) (IE_XBD_ADDR(b,i) + 2)
358#define IE_XBD_BUF(b,i) (IE_XBD_ADDR(b,i) + 4)
360#define IE_TBD_EOL 0x8000
361#define IE_TBD_CNTMASK 0x3fff
369struct __ie_mcast_cmd {
370 struct __ie_cmd_common com;
371#define ie_mcast_status com.ie_cmd_status
374 u_short ie_mcast_bytes;
375 struct __ie_en_addr ie_mcast_addrs[IE_MAXMCAST + 1];
378#define IE_CMD_MCAST_SZ (IE_CMD_COMMON_SZ + 2 )
379#define IE_CMD_MCAST_BYTES(base) ((base) + IE_CMD_COMMON_SZ + 0)
380#define IE_CMD_MCAST_MADDR(base) ((base) + IE_CMD_COMMON_SZ + 2)
387 struct __ie_cmd_common com;
388#define ie_tdr_status com.ie_cmd_status
392#define IE_CMD_TDR_SZ (IE_CMD_COMMON_SZ + 2)
393#define IE_CMD_TDR_TIME(base) ((base) + IE_CMD_COMMON_SZ + 0)
395#define IE_TDR_SUCCESS 0x8000
396#define IE_TDR_XCVR 0x4000
397#define IE_TDR_OPEN 0x2000
398#define IE_TDR_SHORT 0x1000
399#define IE_TDR_TIME 0x07ff
405struct __ie_iasetup_cmd {
406 struct __ie_cmd_common com;
407#define ie_iasetup_status com.ie_cmd_status
408 struct __ie_en_addr ie_address;
411#define IE_CMD_IAS_SZ (IE_CMD_COMMON_SZ + 6)
412#define IE_CMD_IAS_EADDR(base) ((base) + IE_CMD_COMMON_SZ + 0)
418struct __ie_config_cmd {
419 struct __ie_cmd_common com;
420#define ie_config_status com.ie_cmd_status
422 u_int8_t ie_config_count;
424 u_int8_t ie_save_bad;
425 u_int8_t ie_addr_len;
426 u_int8_t ie_priority;
428 u_int8_t ie_slot_low;
429 u_int8_t ie_slot_high;
436#define IE_CMD_CFG_SZ (IE_CMD_COMMON_SZ + 12)
437#define IE_CMD_CFG_CNT(base) ((base) + IE_CMD_COMMON_SZ + 0)
438#define IE_CMD_CFG_FIFO(base) ((base) + IE_CMD_COMMON_SZ + 1)
439#define IE_CMD_CFG_SAVEBAD(base) ((base) + IE_CMD_COMMON_SZ + 2)
440#define IE_CMD_CFG_ADDRLEN(base) ((base) + IE_CMD_COMMON_SZ + 3)
441#define IE_CMD_CFG_PRIORITY(base) ((base) + IE_CMD_COMMON_SZ + 4)
442#define IE_CMD_CFG_IFS(base) ((base) + IE_CMD_COMMON_SZ + 5)
443#define IE_CMD_CFG_SLOT_LOW(base) ((base) + IE_CMD_COMMON_SZ + 6)
444#define IE_CMD_CFG_SLOT_HIGH(base) ((base) + IE_CMD_COMMON_SZ + 7)
445#define IE_CMD_CFG_PROMISC(base) ((base) + IE_CMD_COMMON_SZ + 8)
446#define IE_CMD_CFG_CRSCDT(base) ((base) + IE_CMD_COMMON_SZ + 9)
447#define IE_CMD_CFG_MINLEN(base) ((base) + IE_CMD_COMMON_SZ + 10)
448#define IE_CMD_CFG_JUNK(base) ((base) + IE_CMD_COMMON_SZ + 11)