xref: /inferno-os/os/boot/pc/aoe.h (revision 8a8c2d742b51525f66c2210e3c8a251de10022ff)
1 /*
2  * ATA-over-Ethernet
3  */
4 enum {
5 	ACata,
6 	ACconfig,
7 };
8 
9 enum {
10 	AQCread,
11 	AQCtest,
12 	AQCprefix,
13 	AQCset,
14 	AQCfset,
15 };
16 
17 enum {
18 	AEcmd	= 1,
19 	AEarg,
20 	AEdev,
21 	AEcfg,
22 	AEver,
23 };
24 
25 enum {
26 	Aoetype	= 0x88a2,
27 	Aoever	= 1,
28 
29 	AFerr	= 1<<2,
30 	AFrsp	= 1<<3,
31 
32 	AAFwrite= 1,
33 	AAFext	= 1<<6,
34 };
35 
36 enum {
37 	Crd	= 0x20,
38 	Crdext	= 0x24,
39 	Cwr	= 0x30,
40 	Cwrext	= 0x34,
41 	Cid	= 0xec,
42 };
43 
44 typedef struct {
45 	uchar	dst[Eaddrlen];
46 	uchar	src[Eaddrlen];
47 	uchar	type[2];
48 	uchar	verflag;
49 	uchar	error;
50 	uchar	major[2];
51 	uchar	minor;
52 	uchar	cmd;
53 	uchar	tag[4];
54 } Aoehdr;
55 
56 typedef struct {
57 	Aoehdr;
58 	uchar	aflag;
59 	uchar	errfeat;
60 	uchar	scnt;
61 	uchar	cmdstat;
62 	uchar	lba[6];
63 	uchar	res[2];
64 } Aoeata;
65 
66 typedef struct {
67 	Aoehdr;
68 	uchar	bufcnt[2];
69 	uchar	fwver[2];
70 	uchar	scnt;
71 	uchar	verccmd;
72 	uchar	cslen[2];
73 } Aoeqc;
74 
75 extern char Echange[];
76 extern char Enotup[];
77