xref: /netbsd-src/sys/dev/scsipi/scsi_ctron_ether.h (revision 4d7e773266e3c3f48566c86c0ad52d51c6454fd1)
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