Linux-libre 5.3.12-gnu
[librecmc/linux-libre.git] / drivers / staging / rtl8192e / rtl819x_Qos.h
1 /* SPDX-License-Identifier: GPL-2.0 */
2 /*
3  * Copyright(c) 2008 - 2010 Realtek Corporation. All rights reserved.
4  *
5  * Contact Information: wlanfae <wlanfae@realtek.com>
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