GNU Linux-libre 6.0.15-gnu
[releases.git] / include / net / dcbnl.h
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 /*
3  * Copyright (c) 2008, Intel Corporation.
4  *
5  * Author: Lucy Liu <lucy.liu@intel.com>
6  */
7
8 #ifndef __NET_DCBNL_H__
9 #define __NET_DCBNL_H__
10
11 #include <linux/dcbnl.h>
12
13 struct net_device;
14
15 struct dcb_app_type {
16         int     ifindex;
17         struct dcb_app    app;
18         struct list_head  list;
19         u8      dcbx;
20 };
21
22 int dcb_setapp(struct net_device *, struct dcb_app *);
23 u8 dcb_getapp(struct net_device *, struct dcb_app *);
24 int dcb_ieee_setapp(struct net_device *, struct dcb_app *);
25 int dcb_ieee_delapp(struct net_device *, struct dcb_app *);
26 u8 dcb_ieee_getapp_mask(struct net_device *, struct dcb_app *);
27
28 struct dcb_ieee_app_prio_map {
29         u64 map[IEEE_8021QAZ_MAX_TCS];
30 };
31 void dcb_ieee_getapp_prio_dscp_mask_map(const struct net_device *dev,
32                                         struct dcb_ieee_app_prio_map *p_map);
33
34 struct dcb_ieee_app_dscp_map {
35         u8 map[64];
36 };
37 void dcb_ieee_getapp_dscp_prio_mask_map(const struct net_device *dev,
38                                         struct dcb_ieee_app_dscp_map *p_map);
39 u8 dcb_ieee_getapp_default_prio_mask(const struct net_device *dev);
40
41 int dcbnl_ieee_notify(struct net_device *dev, int event, int cmd,
42                       u32 seq, u32 pid);
43 int dcbnl_cee_notify(struct net_device *dev, int event, int cmd,
44                      u32 seq, u32 pid);
45
46 /*
47  * Ops struct for the netlink callbacks.  Used by DCB-enabled drivers through
48  * the netdevice struct.
49  */
50 struct dcbnl_rtnl_ops {
51         /* IEEE 802.1Qaz std */
52         int (*ieee_getets) (struct net_device *, struct ieee_ets *);
53         int (*ieee_setets) (struct net_device *, struct ieee_ets *);
54         int (*ieee_getmaxrate) (struct net_device *, struct ieee_maxrate *);
55         int (*ieee_setmaxrate) (struct net_device *, struct ieee_maxrate *);
56         int (*ieee_getqcn) (struct net_device *, struct ieee_qcn *);
57         int (*ieee_setqcn) (struct net_device *, struct ieee_qcn *);
58         int (*ieee_getqcnstats) (struct net_device *, struct ieee_qcn_stats *);
59         int (*ieee_getpfc) (struct net_device *, struct ieee_pfc *);
60         int (*ieee_setpfc) (struct net_device *, struct ieee_pfc *);
61         int (*ieee_getapp) (struct net_device *, struct dcb_app *);
62         int (*ieee_setapp) (struct net_device *, struct dcb_app *);
63         int (*ieee_delapp) (struct net_device *, struct dcb_app *);
64         int (*ieee_peer_getets) (struct net_device *, struct ieee_ets *);
65         int (*ieee_peer_getpfc) (struct net_device *, struct ieee_pfc *);
66
67         /* CEE std */
68         u8   (*getstate)(struct net_device *);
69         u8   (*setstate)(struct net_device *, u8);
70         void (*getpermhwaddr)(struct net_device *, u8 *);
71         void (*setpgtccfgtx)(struct net_device *, int, u8, u8, u8, u8);
72         void (*setpgbwgcfgtx)(struct net_device *, int, u8);
73         void (*setpgtccfgrx)(struct net_device *, int, u8, u8, u8, u8);
74         void (*setpgbwgcfgrx)(struct net_device *, int, u8);
75         void (*getpgtccfgtx)(struct net_device *, int, u8 *, u8 *, u8 *, u8 *);
76         void (*getpgbwgcfgtx)(struct net_device *, int, u8 *);
77         void (*getpgtccfgrx)(struct net_device *, int, u8 *, u8 *, u8 *, u8 *);
78         void (*getpgbwgcfgrx)(struct net_device *, int, u8 *);
79         void (*setpfccfg)(struct net_device *, int, u8);
80         void (*getpfccfg)(struct net_device *, int, u8 *);
81         u8   (*setall)(struct net_device *);
82         u8   (*getcap)(struct net_device *, int, u8 *);
83         int  (*getnumtcs)(struct net_device *, int, u8 *);
84         int  (*setnumtcs)(struct net_device *, int, u8);
85         u8   (*getpfcstate)(struct net_device *);
86         void (*setpfcstate)(struct net_device *, u8);
87         void (*getbcncfg)(struct net_device *, int, u32 *);
88         void (*setbcncfg)(struct net_device *, int, u32);
89         void (*getbcnrp)(struct net_device *, int, u8 *);
90         void (*setbcnrp)(struct net_device *, int, u8);
91         int  (*setapp)(struct net_device *, u8, u16, u8);
92         int  (*getapp)(struct net_device *, u8, u16);
93         u8   (*getfeatcfg)(struct net_device *, int, u8 *);
94         u8   (*setfeatcfg)(struct net_device *, int, u8);
95
96         /* DCBX configuration */
97         u8   (*getdcbx)(struct net_device *);
98         u8   (*setdcbx)(struct net_device *, u8);
99
100         /* peer apps */
101         int (*peer_getappinfo)(struct net_device *, struct dcb_peer_app_info *,
102                                u16 *);
103         int (*peer_getapptable)(struct net_device *, struct dcb_app *);
104
105         /* CEE peer */
106         int (*cee_peer_getpg) (struct net_device *, struct cee_pg *);
107         int (*cee_peer_getpfc) (struct net_device *, struct cee_pfc *);
108
109         /* buffer settings */
110         int (*dcbnl_getbuffer)(struct net_device *, struct dcbnl_buffer *);
111         int (*dcbnl_setbuffer)(struct net_device *, struct dcbnl_buffer *);
112 };
113
114 #endif /* __NET_DCBNL_H__ */