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