#define CTRON_ETHERCMD2(OP, SUB) {OP, SUB}
#define CTRON_ETHER_SEND CTRON_ETHERCMD2(0xc, 0x1)
#define CTRON_ETHER_RECV 0xe1
#define CTRON_ETHER_GET_ADDR CTRON_ETHERCMD2(0xc, 0x4)
#define CTRON_ETHER_ADD_PROTO CTRON_ETHERCMD2(0xd, 0x1)
#define CTRON_ETHER_REM_PROTO CTRON_ETHERCMD2(0xd, 0x2)
#define CTRON_ETHER_SET_MODE CTRON_ETHERCMD2(0xd, 0x3)
#define CTRON_ETHER_SET_MULTI CTRON_ETHERCMD2(0xd, 0x4)
#define CTRON_ETHER_REMOVE_MULTI CTRON_ETHERCMD2(0xd, 0x5)
#define CTRON_ETHER_GET_STATS CTRON_ETHERCMD2(0xd, 0x6)
#define CTRON_ETHER_SET_MEDIA CTRON_ETHERCMD2(0xd, 0x07)
#define CTRON_ETHER_GET_MEDIA CTRON_ETHERCMD2(0xd, 0x08)
#define CTRON_ETHER_SET_ADDR CTRON_ETHERCMD2(0xd, 0xA)
#define CTRON_ETHER_LOAD_IMAGE CTRON_ETHERCMD2(0xd, 0x09)
#define IS_RECV(generic) ((generic)->opcode == 0xe1)
#define IS_SEND(generic) ((generic)->opcode == 0xc && (generic)->bytes[0] == 0x1)
struct scsi_ctron_ether_recv {
u_int8_t opcode;
};
struct scsi_ctron_ether_generic {
u_int8_t opcode[2];
u_int8_t byte3;
u_int8_t length[2];
u_int8_t byte6;
};
struct scsi_ctron_ether_set_mode {
u_int8_t opcode[2];
u_int8_t mode;
u_int8_t length[2];
u_int8_t byte6;
};
struct ctron_stats {
u_int32_t frames_xmit;
u_int32_t bytes_xmit;
u_int32_t ucast_xmit;
u_int32_t mcast_xmit;
u_int32_t bcast_xmit;
u_int32_t defer_xmit;
u_int32_t sgl_coll;
u_int32_t multi_coll;
u_int32_t tot_xmit_err;
u_int32_t late_coll;
u_int32_t excess_coll;
u_int32_t int_err_xmit;
u_int32_t carr_err;
u_int32_t media_abort;
u_int32_t frames_rec;
u_int32_t bytes_rec;
u_int32_t ucast_rec;
u_int32_t mcast_rec;
u_int32_t bcast_rec;
u_int32_t tot_rec_err;
u_int32_t too_long;
u_int32_t too_short;
u_int32_t align_err;
u_int32_t crc_err;
u_int32_t len_err;
u_int32_t int_err_rec;
u_int32_t sqe_err;
};
struct scsi_ctron_ether_inquiry_data {
u_int8_t device;
u_int8_t dev_qual2;
u_int8_t version;
u_int8_t response_format;
u_int8_t additional_len;
u_int8_t unused[2];
u_int8_t flags;
char vendor[8];
char product[16];
char revision[4];
char extra[8];
u_int8_t hwaddr[6];
u_int8_t swaddr[6];
char date[22];
u_int8_t mtype;
u_int8_t hwport;
};
enum scsi_ctron_ether_media {
CMEDIA_PRIMARY=0,
CMEDIA_SECONDARY=1,
CMEDIA_AUTOSENSE=2
};