1/****************************************************************************
2 ****************************************************************************
3 ***
4 ***   This header was automatically generated from a Linux kernel header
5 ***   of the same name, to make information necessary for userspace to
6 ***   call into the kernel available to libc.  It contains only constants,
7 ***   structures, and macros generated from the original header, and thus,
8 ***   contains no copyrightable information.
9 ***
10 ***   To edit the content of this header, modify the corresponding
11 ***   source file (e.g. under external/kernel-headers/original/) then
12 ***   run bionic/libc/kernel/tools/update_all.py
13 ***
14 ***   Any manual change here will be lost the next time this script will
15 ***   be run. You've been warned!
16 ***
17 ****************************************************************************
18 ****************************************************************************/
19#ifndef __LINUX_DCBNL_H__
20#define __LINUX_DCBNL_H__
21#include <linux/types.h>
22#define IEEE_8021QAZ_MAX_TCS 8
23#define IEEE_8021QAZ_TSA_STRICT 0
24#define IEEE_8021QAZ_TSA_CB_SHAPER 1
25#define IEEE_8021QAZ_TSA_ETS 2
26#define IEEE_8021QAZ_TSA_VENDOR 255
27struct ieee_ets {
28  __u8 willing;
29  __u8 ets_cap;
30  __u8 cbs;
31  __u8 tc_tx_bw[IEEE_8021QAZ_MAX_TCS];
32  __u8 tc_rx_bw[IEEE_8021QAZ_MAX_TCS];
33  __u8 tc_tsa[IEEE_8021QAZ_MAX_TCS];
34  __u8 prio_tc[IEEE_8021QAZ_MAX_TCS];
35  __u8 tc_reco_bw[IEEE_8021QAZ_MAX_TCS];
36  __u8 tc_reco_tsa[IEEE_8021QAZ_MAX_TCS];
37  __u8 reco_prio_tc[IEEE_8021QAZ_MAX_TCS];
38};
39struct ieee_maxrate {
40  __u64 tc_maxrate[IEEE_8021QAZ_MAX_TCS];
41};
42enum dcbnl_cndd_states {
43  DCB_CNDD_RESET = 0,
44  DCB_CNDD_EDGE,
45  DCB_CNDD_INTERIOR,
46  DCB_CNDD_INTERIOR_READY,
47};
48struct ieee_qcn {
49  __u8 rpg_enable[IEEE_8021QAZ_MAX_TCS];
50  __u32 rppp_max_rps[IEEE_8021QAZ_MAX_TCS];
51  __u32 rpg_time_reset[IEEE_8021QAZ_MAX_TCS];
52  __u32 rpg_byte_reset[IEEE_8021QAZ_MAX_TCS];
53  __u32 rpg_threshold[IEEE_8021QAZ_MAX_TCS];
54  __u32 rpg_max_rate[IEEE_8021QAZ_MAX_TCS];
55  __u32 rpg_ai_rate[IEEE_8021QAZ_MAX_TCS];
56  __u32 rpg_hai_rate[IEEE_8021QAZ_MAX_TCS];
57  __u32 rpg_gd[IEEE_8021QAZ_MAX_TCS];
58  __u32 rpg_min_dec_fac[IEEE_8021QAZ_MAX_TCS];
59  __u32 rpg_min_rate[IEEE_8021QAZ_MAX_TCS];
60  __u32 cndd_state_machine[IEEE_8021QAZ_MAX_TCS];
61};
62struct ieee_qcn_stats {
63  __u64 rppp_rp_centiseconds[IEEE_8021QAZ_MAX_TCS];
64  __u32 rppp_created_rps[IEEE_8021QAZ_MAX_TCS];
65};
66struct ieee_pfc {
67  __u8 pfc_cap;
68  __u8 pfc_en;
69  __u8 mbc;
70  __u16 delay;
71  __u64 requests[IEEE_8021QAZ_MAX_TCS];
72  __u64 indications[IEEE_8021QAZ_MAX_TCS];
73};
74#define CEE_DCBX_MAX_PGS 8
75#define CEE_DCBX_MAX_PRIO 8
76struct cee_pg {
77  __u8 willing;
78  __u8 error;
79  __u8 pg_en;
80  __u8 tcs_supported;
81  __u8 pg_bw[CEE_DCBX_MAX_PGS];
82  __u8 prio_pg[CEE_DCBX_MAX_PGS];
83};
84struct cee_pfc {
85  __u8 willing;
86  __u8 error;
87  __u8 pfc_en;
88  __u8 tcs_supported;
89};
90#define IEEE_8021QAZ_APP_SEL_ETHERTYPE 1
91#define IEEE_8021QAZ_APP_SEL_STREAM 2
92#define IEEE_8021QAZ_APP_SEL_DGRAM 3
93#define IEEE_8021QAZ_APP_SEL_ANY 4
94#define IEEE_8021QAZ_APP_SEL_DSCP 5
95struct dcb_app {
96  __u8 selector;
97  __u8 priority;
98  __u16 protocol;
99};
100struct dcb_peer_app_info {
101  __u8 willing;
102  __u8 error;
103};
104struct dcbmsg {
105  __u8 dcb_family;
106  __u8 cmd;
107  __u16 dcb_pad;
108};
109enum dcbnl_commands {
110  DCB_CMD_UNDEFINED,
111  DCB_CMD_GSTATE,
112  DCB_CMD_SSTATE,
113  DCB_CMD_PGTX_GCFG,
114  DCB_CMD_PGTX_SCFG,
115  DCB_CMD_PGRX_GCFG,
116  DCB_CMD_PGRX_SCFG,
117  DCB_CMD_PFC_GCFG,
118  DCB_CMD_PFC_SCFG,
119  DCB_CMD_SET_ALL,
120  DCB_CMD_GPERM_HWADDR,
121  DCB_CMD_GCAP,
122  DCB_CMD_GNUMTCS,
123  DCB_CMD_SNUMTCS,
124  DCB_CMD_PFC_GSTATE,
125  DCB_CMD_PFC_SSTATE,
126  DCB_CMD_BCN_GCFG,
127  DCB_CMD_BCN_SCFG,
128  DCB_CMD_GAPP,
129  DCB_CMD_SAPP,
130  DCB_CMD_IEEE_SET,
131  DCB_CMD_IEEE_GET,
132  DCB_CMD_GDCBX,
133  DCB_CMD_SDCBX,
134  DCB_CMD_GFEATCFG,
135  DCB_CMD_SFEATCFG,
136  DCB_CMD_CEE_GET,
137  DCB_CMD_IEEE_DEL,
138  __DCB_CMD_ENUM_MAX,
139  DCB_CMD_MAX = __DCB_CMD_ENUM_MAX - 1,
140};
141enum dcbnl_attrs {
142  DCB_ATTR_UNDEFINED,
143  DCB_ATTR_IFNAME,
144  DCB_ATTR_STATE,
145  DCB_ATTR_PFC_STATE,
146  DCB_ATTR_PFC_CFG,
147  DCB_ATTR_NUM_TC,
148  DCB_ATTR_PG_CFG,
149  DCB_ATTR_SET_ALL,
150  DCB_ATTR_PERM_HWADDR,
151  DCB_ATTR_CAP,
152  DCB_ATTR_NUMTCS,
153  DCB_ATTR_BCN,
154  DCB_ATTR_APP,
155  DCB_ATTR_IEEE,
156  DCB_ATTR_DCBX,
157  DCB_ATTR_FEATCFG,
158  DCB_ATTR_CEE,
159  __DCB_ATTR_ENUM_MAX,
160  DCB_ATTR_MAX = __DCB_ATTR_ENUM_MAX - 1,
161};
162enum ieee_attrs {
163  DCB_ATTR_IEEE_UNSPEC,
164  DCB_ATTR_IEEE_ETS,
165  DCB_ATTR_IEEE_PFC,
166  DCB_ATTR_IEEE_APP_TABLE,
167  DCB_ATTR_IEEE_PEER_ETS,
168  DCB_ATTR_IEEE_PEER_PFC,
169  DCB_ATTR_IEEE_PEER_APP,
170  DCB_ATTR_IEEE_MAXRATE,
171  DCB_ATTR_IEEE_QCN,
172  DCB_ATTR_IEEE_QCN_STATS,
173  __DCB_ATTR_IEEE_MAX
174};
175#define DCB_ATTR_IEEE_MAX (__DCB_ATTR_IEEE_MAX - 1)
176enum ieee_attrs_app {
177  DCB_ATTR_IEEE_APP_UNSPEC,
178  DCB_ATTR_IEEE_APP,
179  __DCB_ATTR_IEEE_APP_MAX
180};
181#define DCB_ATTR_IEEE_APP_MAX (__DCB_ATTR_IEEE_APP_MAX - 1)
182enum cee_attrs {
183  DCB_ATTR_CEE_UNSPEC,
184  DCB_ATTR_CEE_PEER_PG,
185  DCB_ATTR_CEE_PEER_PFC,
186  DCB_ATTR_CEE_PEER_APP_TABLE,
187  DCB_ATTR_CEE_TX_PG,
188  DCB_ATTR_CEE_RX_PG,
189  DCB_ATTR_CEE_PFC,
190  DCB_ATTR_CEE_APP_TABLE,
191  DCB_ATTR_CEE_FEAT,
192  __DCB_ATTR_CEE_MAX
193};
194#define DCB_ATTR_CEE_MAX (__DCB_ATTR_CEE_MAX - 1)
195enum peer_app_attr {
196  DCB_ATTR_CEE_PEER_APP_UNSPEC,
197  DCB_ATTR_CEE_PEER_APP_INFO,
198  DCB_ATTR_CEE_PEER_APP,
199  __DCB_ATTR_CEE_PEER_APP_MAX
200};
201#define DCB_ATTR_CEE_PEER_APP_MAX (__DCB_ATTR_CEE_PEER_APP_MAX - 1)
202enum cee_attrs_app {
203  DCB_ATTR_CEE_APP_UNSPEC,
204  DCB_ATTR_CEE_APP,
205  __DCB_ATTR_CEE_APP_MAX
206};
207#define DCB_ATTR_CEE_APP_MAX (__DCB_ATTR_CEE_APP_MAX - 1)
208enum dcbnl_pfc_up_attrs {
209  DCB_PFC_UP_ATTR_UNDEFINED,
210  DCB_PFC_UP_ATTR_0,
211  DCB_PFC_UP_ATTR_1,
212  DCB_PFC_UP_ATTR_2,
213  DCB_PFC_UP_ATTR_3,
214  DCB_PFC_UP_ATTR_4,
215  DCB_PFC_UP_ATTR_5,
216  DCB_PFC_UP_ATTR_6,
217  DCB_PFC_UP_ATTR_7,
218  DCB_PFC_UP_ATTR_ALL,
219  __DCB_PFC_UP_ATTR_ENUM_MAX,
220  DCB_PFC_UP_ATTR_MAX = __DCB_PFC_UP_ATTR_ENUM_MAX - 1,
221};
222enum dcbnl_pg_attrs {
223  DCB_PG_ATTR_UNDEFINED,
224  DCB_PG_ATTR_TC_0,
225  DCB_PG_ATTR_TC_1,
226  DCB_PG_ATTR_TC_2,
227  DCB_PG_ATTR_TC_3,
228  DCB_PG_ATTR_TC_4,
229  DCB_PG_ATTR_TC_5,
230  DCB_PG_ATTR_TC_6,
231  DCB_PG_ATTR_TC_7,
232  DCB_PG_ATTR_TC_MAX,
233  DCB_PG_ATTR_TC_ALL,
234  DCB_PG_ATTR_BW_ID_0,
235  DCB_PG_ATTR_BW_ID_1,
236  DCB_PG_ATTR_BW_ID_2,
237  DCB_PG_ATTR_BW_ID_3,
238  DCB_PG_ATTR_BW_ID_4,
239  DCB_PG_ATTR_BW_ID_5,
240  DCB_PG_ATTR_BW_ID_6,
241  DCB_PG_ATTR_BW_ID_7,
242  DCB_PG_ATTR_BW_ID_MAX,
243  DCB_PG_ATTR_BW_ID_ALL,
244  __DCB_PG_ATTR_ENUM_MAX,
245  DCB_PG_ATTR_MAX = __DCB_PG_ATTR_ENUM_MAX - 1,
246};
247enum dcbnl_tc_attrs {
248  DCB_TC_ATTR_PARAM_UNDEFINED,
249  DCB_TC_ATTR_PARAM_PGID,
250  DCB_TC_ATTR_PARAM_UP_MAPPING,
251  DCB_TC_ATTR_PARAM_STRICT_PRIO,
252  DCB_TC_ATTR_PARAM_BW_PCT,
253  DCB_TC_ATTR_PARAM_ALL,
254  __DCB_TC_ATTR_PARAM_ENUM_MAX,
255  DCB_TC_ATTR_PARAM_MAX = __DCB_TC_ATTR_PARAM_ENUM_MAX - 1,
256};
257enum dcbnl_cap_attrs {
258  DCB_CAP_ATTR_UNDEFINED,
259  DCB_CAP_ATTR_ALL,
260  DCB_CAP_ATTR_PG,
261  DCB_CAP_ATTR_PFC,
262  DCB_CAP_ATTR_UP2TC,
263  DCB_CAP_ATTR_PG_TCS,
264  DCB_CAP_ATTR_PFC_TCS,
265  DCB_CAP_ATTR_GSP,
266  DCB_CAP_ATTR_BCN,
267  DCB_CAP_ATTR_DCBX,
268  __DCB_CAP_ATTR_ENUM_MAX,
269  DCB_CAP_ATTR_MAX = __DCB_CAP_ATTR_ENUM_MAX - 1,
270};
271#define DCB_CAP_DCBX_HOST 0x01
272#define DCB_CAP_DCBX_LLD_MANAGED 0x02
273#define DCB_CAP_DCBX_VER_CEE 0x04
274#define DCB_CAP_DCBX_VER_IEEE 0x08
275#define DCB_CAP_DCBX_STATIC 0x10
276enum dcbnl_numtcs_attrs {
277  DCB_NUMTCS_ATTR_UNDEFINED,
278  DCB_NUMTCS_ATTR_ALL,
279  DCB_NUMTCS_ATTR_PG,
280  DCB_NUMTCS_ATTR_PFC,
281  __DCB_NUMTCS_ATTR_ENUM_MAX,
282  DCB_NUMTCS_ATTR_MAX = __DCB_NUMTCS_ATTR_ENUM_MAX - 1,
283};
284enum dcbnl_bcn_attrs {
285  DCB_BCN_ATTR_UNDEFINED = 0,
286  DCB_BCN_ATTR_RP_0,
287  DCB_BCN_ATTR_RP_1,
288  DCB_BCN_ATTR_RP_2,
289  DCB_BCN_ATTR_RP_3,
290  DCB_BCN_ATTR_RP_4,
291  DCB_BCN_ATTR_RP_5,
292  DCB_BCN_ATTR_RP_6,
293  DCB_BCN_ATTR_RP_7,
294  DCB_BCN_ATTR_RP_ALL,
295  DCB_BCN_ATTR_BCNA_0,
296  DCB_BCN_ATTR_BCNA_1,
297  DCB_BCN_ATTR_ALPHA,
298  DCB_BCN_ATTR_BETA,
299  DCB_BCN_ATTR_GD,
300  DCB_BCN_ATTR_GI,
301  DCB_BCN_ATTR_TMAX,
302  DCB_BCN_ATTR_TD,
303  DCB_BCN_ATTR_RMIN,
304  DCB_BCN_ATTR_W,
305  DCB_BCN_ATTR_RD,
306  DCB_BCN_ATTR_RU,
307  DCB_BCN_ATTR_WRTT,
308  DCB_BCN_ATTR_RI,
309  DCB_BCN_ATTR_C,
310  DCB_BCN_ATTR_ALL,
311  __DCB_BCN_ATTR_ENUM_MAX,
312  DCB_BCN_ATTR_MAX = __DCB_BCN_ATTR_ENUM_MAX - 1,
313};
314enum dcb_general_attr_values {
315  DCB_ATTR_VALUE_UNDEFINED = 0xff
316};
317#define DCB_APP_IDTYPE_ETHTYPE 0x00
318#define DCB_APP_IDTYPE_PORTNUM 0x01
319enum dcbnl_app_attrs {
320  DCB_APP_ATTR_UNDEFINED,
321  DCB_APP_ATTR_IDTYPE,
322  DCB_APP_ATTR_ID,
323  DCB_APP_ATTR_PRIORITY,
324  __DCB_APP_ATTR_ENUM_MAX,
325  DCB_APP_ATTR_MAX = __DCB_APP_ATTR_ENUM_MAX - 1,
326};
327#define DCB_FEATCFG_ERROR 0x01
328#define DCB_FEATCFG_ENABLE 0x02
329#define DCB_FEATCFG_WILLING 0x04
330#define DCB_FEATCFG_ADVERTISE 0x08
331enum dcbnl_featcfg_attrs {
332  DCB_FEATCFG_ATTR_UNDEFINED,
333  DCB_FEATCFG_ATTR_ALL,
334  DCB_FEATCFG_ATTR_PG,
335  DCB_FEATCFG_ATTR_PFC,
336  DCB_FEATCFG_ATTR_APP,
337  __DCB_FEATCFG_ATTR_ENUM_MAX,
338  DCB_FEATCFG_ATTR_MAX = __DCB_FEATCFG_ATTR_ENUM_MAX - 1,
339};
340#endif
341