]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/blob - drivers/staging/rtl8192e/rtl819x_Qos.h
Merge branch 'tpm' into docs-next
[mirror_ubuntu-bionic-kernel.git] / drivers / staging / rtl8192e / rtl819x_Qos.h
1 /******************************************************************************
2 * Copyright(c) 2008 - 2010 Realtek Corporation. All rights reserved.
3 *
4 * This program is distributed in the hope that it will be useful, but WITHOUT
5 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
6 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
7 * more details.
8 *
9 * The full GNU General Public License is included in this distribution in the
10 * file called LICENSE.
11 *
12 * Contact Information:
13 * wlanfae <wlanfae@realtek.com>
14 ******************************************************************************/
15 #ifndef __INC_QOS_TYPE_H
16 #define __INC_QOS_TYPE_H
17
18 #define BIT0 0x00000001
19 #define BIT1 0x00000002
20 #define BIT2 0x00000004
21 #define BIT3 0x00000008
22 #define BIT4 0x00000010
23 #define BIT5 0x00000020
24 #define BIT6 0x00000040
25 #define BIT7 0x00000080
26 #define BIT8 0x00000100
27 #define BIT9 0x00000200
28 #define BIT10 0x00000400
29 #define BIT11 0x00000800
30 #define BIT12 0x00001000
31 #define BIT13 0x00002000
32 #define BIT14 0x00004000
33 #define BIT15 0x00008000
34 #define BIT16 0x00010000
35 #define BIT17 0x00020000
36 #define BIT18 0x00040000
37 #define BIT19 0x00080000
38 #define BIT20 0x00100000
39 #define BIT21 0x00200000
40 #define BIT22 0x00400000
41 #define BIT23 0x00800000
42 #define BIT24 0x01000000
43 #define BIT25 0x02000000
44 #define BIT26 0x04000000
45 #define BIT27 0x08000000
46 #define BIT28 0x10000000
47 #define BIT29 0x20000000
48 #define BIT30 0x40000000
49 #define BIT31 0x80000000
50
51 union qos_tsinfo {
52 u8 charData[3];
53 struct {
54 u8 ucTrafficType:1;
55 u8 ucTSID:4;
56 u8 ucDirection:2;
57 u8 ucAccessPolicy:2;
58 u8 ucAggregation:1;
59 u8 ucPSB:1;
60 u8 ucUP:3;
61 u8 ucTSInfoAckPolicy:2;
62 u8 ucSchedule:1;
63 u8 ucReserved:7;
64 } field;
65 };
66
67 union tspec_body {
68 u8 charData[55];
69
70 struct {
71 union qos_tsinfo TSInfo;
72 u16 NominalMSDUsize;
73 u16 MaxMSDUsize;
74 u32 MinServiceItv;
75 u32 MaxServiceItv;
76 u32 InactivityItv;
77 u32 SuspenItv;
78 u32 ServiceStartTime;
79 u32 MinDataRate;
80 u32 MeanDataRate;
81 u32 PeakDataRate;
82 u32 MaxBurstSize;
83 u32 DelayBound;
84 u32 MinPhyRate;
85 u16 SurplusBandwidthAllowance;
86 u16 MediumTime;
87 } f;
88 };
89
90 struct octet_string {
91 u8 *Octet;
92 u16 Length;
93 };
94
95 #define AC0_BE 0
96 #define AC1_BK 1
97 #define AC2_VI 2
98 #define AC3_VO 3
99 #define AC_MAX 4
100
101 enum direction_value {
102 DIR_UP = 0,
103 DIR_DOWN = 1,
104 DIR_DIRECT = 2,
105 DIR_BI_DIR = 3,
106 };
107
108 enum acm_method {
109 eAcmWay0_SwAndHw = 0,
110 eAcmWay1_HW = 1,
111 eAcmWay2_SW = 2,
112 };
113
114
115 struct acm {
116 u64 UsedTime;
117 u64 MediumTime;
118 u8 HwAcmCtl;
119 };
120
121 union qos_tclas {
122
123 struct _TYPE_GENERAL {
124 u8 Priority;
125 u8 ClassifierType;
126 u8 Mask;
127 } TYPE_GENERAL;
128
129 struct _TYPE0_ETH {
130 u8 Priority;
131 u8 ClassifierType;
132 u8 Mask;
133 u8 SrcAddr[ETH_ALEN];
134 u8 DstAddr[ETH_ALEN];
135 u16 Type;
136 } TYPE0_ETH;
137
138 struct _TYPE1_IPV4 {
139 u8 Priority;
140 u8 ClassifierType;
141 u8 Mask;
142 u8 Version;
143 u8 SrcIP[4];
144 u8 DstIP[4];
145 u16 SrcPort;
146 u16 DstPort;
147 u8 DSCP;
148 u8 Protocol;
149 u8 Reserved;
150 } TYPE1_IPV4;
151
152 struct _TYPE1_IPV6 {
153 u8 Priority;
154 u8 ClassifierType;
155 u8 Mask;
156 u8 Version;
157 u8 SrcIP[16];
158 u8 DstIP[16];
159 u16 SrcPort;
160 u16 DstPort;
161 u8 FlowLabel[3];
162 } TYPE1_IPV6;
163
164 struct _TYPE2_8021Q {
165 u8 Priority;
166 u8 ClassifierType;
167 u8 Mask;
168 u16 TagType;
169 } TYPE2_8021Q;
170 };
171
172 union aci_aifsn {
173 u8 charData;
174
175 struct {
176 u8 AIFSN:4;
177 u8 acm:1;
178 u8 ACI:2;
179 u8 Reserved:1;
180 } f;
181 };
182
183 #endif