1 /* $NetBSD: scsi_ctron_ether.h,v 1.4 1997/08/27 11:26:38 bouyer Exp $ */ 2 3 /* 4 * SCSI interface description 5 */ 6 7 8 /* 9 * SCSI command format 10 */ 11 12 #ifndef _SCSI_CTRON_ETHER_H 13 #define _SCSI_CTRON_ETHER_H 1 14 15 #define CTRON_ETHERCMD2(OP, SUB) {OP, SUB} 16 #define CTRON_ETHER_SEND CTRON_ETHERCMD2(0xc, 0x1) 17 #define CTRON_ETHER_RECV 0xe1 18 #define CTRON_ETHER_GET_ADDR CTRON_ETHERCMD2(0xc, 0x4) 19 #define CTRON_ETHER_ADD_PROTO CTRON_ETHERCMD2(0xd, 0x1) 20 #define CTRON_ETHER_REM_PROTO CTRON_ETHERCMD2(0xd, 0x2) 21 #define CTRON_ETHER_SET_MODE CTRON_ETHERCMD2(0xd, 0x3) 22 #define CTRON_ETHER_SET_MULTI CTRON_ETHERCMD2(0xd, 0x4) 23 #define CTRON_ETHER_REMOVE_MULTI CTRON_ETHERCMD2(0xd, 0x5) 24 #define CTRON_ETHER_GET_STATS CTRON_ETHERCMD2(0xd, 0x6) 25 #define CTRON_ETHER_SET_MEDIA CTRON_ETHERCMD2(0xd, 0x07) 26 #define CTRON_ETHER_GET_MEDIA CTRON_ETHERCMD2(0xd, 0x08) 27 #define CTRON_ETHER_SET_ADDR CTRON_ETHERCMD2(0xd, 0xA) 28 #define CTRON_ETHER_LOAD_IMAGE CTRON_ETHERCMD2(0xd, 0x09) 29 #define IS_RECV(generic) ((generic)->opcode == 0xe1) 30 #define IS_SEND(generic) ((generic)->opcode == 0xc && (generic)->bytes[0] == 0x1) 31 32 struct scsi_ctron_ether_recv { 33 u_int8_t opcode; /* This really *is* all */ 34 }; 35 36 struct scsi_ctron_ether_generic { 37 u_int8_t opcode[2]; 38 u_int8_t byte3; 39 u_int8_t length[2]; 40 u_int8_t byte6; 41 }; 42 43 struct scsi_ctron_ether_set_mode { 44 u_int8_t opcode[2]; 45 u_int8_t mode; 46 u_int8_t length[2]; 47 u_int8_t byte6; 48 }; 49 50 51 struct ctron_stats { 52 u_int32_t frames_xmit; 53 u_int32_t bytes_xmit; 54 u_int32_t ucast_xmit; /* never incremented? */ 55 u_int32_t mcast_xmit; /* gets ucasts and mcasts?? */ 56 u_int32_t bcast_xmit; 57 u_int32_t defer_xmit; 58 u_int32_t sgl_coll; 59 u_int32_t multi_coll; 60 u_int32_t tot_xmit_err; 61 u_int32_t late_coll; 62 u_int32_t excess_coll; 63 u_int32_t int_err_xmit; 64 u_int32_t carr_err; 65 u_int32_t media_abort; 66 u_int32_t frames_rec; 67 u_int32_t bytes_rec; 68 u_int32_t ucast_rec; /* never incremented? */ 69 u_int32_t mcast_rec; /* gets ucasts and mcasts?? */ 70 u_int32_t bcast_rec; 71 u_int32_t tot_rec_err; 72 u_int32_t too_long; 73 u_int32_t too_short; 74 u_int32_t align_err; 75 u_int32_t crc_err; 76 u_int32_t len_err; 77 u_int32_t int_err_rec; 78 u_int32_t sqe_err; 79 }; 80 81 struct scsi_ctron_ether_inquiry_data { 82 /* standard; */ 83 u_int8_t device; /* 3 (T_CPU) */ 84 u_int8_t dev_qual2; /* 0 (fixed) */ 85 u_int8_t version; /* 0 */ 86 u_int8_t response_format; /* 0 */ 87 u_int8_t additional_len; /* 75!! */ 88 u_int8_t unused[2]; /* 0, 0 */ 89 u_int8_t flags; /* 0x18 (sync+linked!?) */ 90 char vendor[8]; /* ie; "Cabletrn" or "CABLETRN" */ 91 char product[16]; /* ie; "EA412/...." */ 92 char revision[4]; /* ie; "0100" or "1.00" */ 93 char extra[8]; /* ie; "00.00.19" or "01.00.00" */ 94 /* non-standard; */ 95 u_int8_t hwaddr[6]; /* PROM ethernet addr */ 96 u_int8_t swaddr[6]; /* curr ethernet addr */ 97 char date[22]; /* firmware date string (asciz) */ 98 u_int8_t mtype; /* media type?? */ 99 u_int8_t hwport; /* value of h/w read port?? */ 100 }; 101 102 enum scsi_ctron_ether_media { 103 CMEDIA_PRIMARY=0, /* twisted pair */ 104 CMEDIA_SECONDARY=1, /* coax */ 105 CMEDIA_AUTOSENSE=2 /* set_media command only */ 106 }; 107 108 #endif /* _SCSI_CTRON_ETHER_H */ 109