1
2
3
4
5
6
7 #ifndef __INC_QOS_TYPE_H
8 #define __INC_QOS_TYPE_H
9
10 #define BIT0 0x00000001
11 #define BIT1 0x00000002
12 #define BIT2 0x00000004
13 #define BIT3 0x00000008
14 #define BIT4 0x00000010
15 #define BIT5 0x00000020
16 #define BIT6 0x00000040
17 #define BIT7 0x00000080
18 #define BIT8 0x00000100
19 #define BIT9 0x00000200
20 #define BIT10 0x00000400
21 #define BIT11 0x00000800
22 #define BIT12 0x00001000
23 #define BIT13 0x00002000
24 #define BIT14 0x00004000
25 #define BIT15 0x00008000
26 #define BIT16 0x00010000
27 #define BIT17 0x00020000
28 #define BIT18 0x00040000
29 #define BIT19 0x00080000
30 #define BIT20 0x00100000
31 #define BIT21 0x00200000
32 #define BIT22 0x00400000
33 #define BIT23 0x00800000
34 #define BIT24 0x01000000
35 #define BIT25 0x02000000
36 #define BIT26 0x04000000
37 #define BIT27 0x08000000
38 #define BIT28 0x10000000
39 #define BIT29 0x20000000
40 #define BIT30 0x40000000
41 #define BIT31 0x80000000
42
43 union qos_tsinfo {
44 u8 charData[3];
45 struct {
46 u8 ucTrafficType:1;
47 u8 ucTSID:4;
48 u8 ucDirection:2;
49 u8 ucAccessPolicy:2;
50 u8 ucAggregation:1;
51 u8 ucPSB:1;
52 u8 ucUP:3;
53 u8 ucTSInfoAckPolicy:2;
54 u8 ucSchedule:1;
55 u8 ucReserved:7;
56 } field;
57 };
58
59 union tspec_body {
60 u8 charData[55];
61
62 struct {
63 union qos_tsinfo TSInfo;
64 u16 NominalMSDUsize;
65 u16 MaxMSDUsize;
66 u32 MinServiceItv;
67 u32 MaxServiceItv;
68 u32 InactivityItv;
69 u32 SuspenItv;
70 u32 ServiceStartTime;
71 u32 MinDataRate;
72 u32 MeanDataRate;
73 u32 PeakDataRate;
74 u32 MaxBurstSize;
75 u32 DelayBound;
76 u32 MinPhyRate;
77 u16 SurplusBandwidthAllowance;
78 u16 MediumTime;
79 } f;
80 };
81
82 struct octet_string {
83 u8 *Octet;
84 u16 Length;
85 };
86
87 #define AC0_BE 0
88 #define AC1_BK 1
89 #define AC2_VI 2
90 #define AC3_VO 3
91 #define AC_MAX 4
92
93 enum direction_value {
94 DIR_UP = 0,
95 DIR_DOWN = 1,
96 DIR_DIRECT = 2,
97 DIR_BI_DIR = 3,
98 };
99
100 enum acm_method {
101 eAcmWay0_SwAndHw = 0,
102 eAcmWay1_HW = 1,
103 eAcmWay2_SW = 2,
104 };
105
106
107 struct acm {
108 u64 UsedTime;
109 u64 MediumTime;
110 u8 HwAcmCtl;
111 };
112
113 union qos_tclas {
114
115 struct _TYPE_GENERAL {
116 u8 Priority;
117 u8 ClassifierType;
118 u8 Mask;
119 } TYPE_GENERAL;
120
121 struct _TYPE0_ETH {
122 u8 Priority;
123 u8 ClassifierType;
124 u8 Mask;
125 u8 SrcAddr[ETH_ALEN];
126 u8 DstAddr[ETH_ALEN];
127 u16 Type;
128 } TYPE0_ETH;
129
130 struct _TYPE1_IPV4 {
131 u8 Priority;
132 u8 ClassifierType;
133 u8 Mask;
134 u8 Version;
135 u8 SrcIP[4];
136 u8 DstIP[4];
137 u16 SrcPort;
138 u16 DstPort;
139 u8 DSCP;
140 u8 Protocol;
141 u8 Reserved;
142 } TYPE1_IPV4;
143
144 struct _TYPE1_IPV6 {
145 u8 Priority;
146 u8 ClassifierType;
147 u8 Mask;
148 u8 Version;
149 u8 SrcIP[16];
150 u8 DstIP[16];
151 u16 SrcPort;
152 u16 DstPort;
153 u8 FlowLabel[3];
154 } TYPE1_IPV6;
155
156 struct _TYPE2_8021Q {
157 u8 Priority;
158 u8 ClassifierType;
159 u8 Mask;
160 u16 TagType;
161 } TYPE2_8021Q;
162 };
163
164 union aci_aifsn {
165 u8 charData;
166
167 struct {
168 u8 AIFSN:4;
169 u8 acm:1;
170 u8 ACI:2;
171 u8 Reserved:1;
172 } f;
173 };
174
175 #endif