92 struct __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 115 struct __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) 131 struct __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 196 struct __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" 240 struct __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 268 struct __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) 311 struct __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 348 struct __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 369 struct __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) 386 struct __ie_tdr_cmd {
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 405 struct __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) 418 struct __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)