]> git.lizzy.rs Git - plan9front.git/blob - sys/src/9/port/aoe.h
Import sources from 2011-03-30 iso image - lib
[plan9front.git] / sys / src / 9 / port / aoe.h
1 /*
2  * ATA-over-Ethernet (AoE) protocol
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         Aoesectsz = 512,                        /* standard sector size */
28         Aoever  = 1,
29
30         AFerr   = 1<<2,
31         AFrsp   = 1<<3,
32
33         AAFwrite= 1,
34         AAFext  = 1<<6,
35 };
36
37 typedef struct {
38         uchar   dst[Eaddrlen];
39         uchar   src[Eaddrlen];
40         uchar   type[2];
41         uchar   verflag;
42         uchar   error;
43         uchar   major[2];
44         uchar   minor;
45         uchar   cmd;
46         uchar   tag[4];
47         uchar   payload[];
48 } Aoehdr;
49
50 #define AOEHDRSZ        offsetof(Aoehdr, payload[0])
51
52 typedef struct {
53         Aoehdr;
54         uchar   aflag;
55         uchar   errfeat;
56         uchar   scnt;
57         uchar   cmdstat;
58         uchar   lba[6];
59         uchar   res[2];
60         uchar   payload[];
61 } Aoeata;
62
63 #define AOEATASZ        offsetof(Aoeata, payload[0])
64
65 typedef struct {
66         Aoehdr;
67         uchar   bufcnt[2];
68         uchar   fwver[2];
69         uchar   scnt;
70         uchar   verccmd;
71         uchar   cslen[2];
72         uchar   payload[];
73 } Aoeqc;
74
75 #define AOEQCSZ         offsetof(Aoeqc, payload[0])
76
77 extern char Echange[];
78 extern char Enotup[];