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