#include <linux/types.h>
#include "qlcnic.h"
#define QLC_DCB_NUM_PARAM …
#define QLC_DCB_LOCAL_IDX …
#define QLC_DCB_OPER_IDX …
#define QLC_DCB_PEER_IDX …
#define QLC_DCB_GET_MAP(V) …
#define QLC_DCB_FW_VER …
#define QLC_DCB_MAX_TC …
#define QLC_DCB_MAX_APP …
#define QLC_DCB_MAX_PRIO …
#define QLC_DCB_MAX_PG …
#define QLC_DCB_TSA_SUPPORT(V) …
#define QLC_DCB_ETS_SUPPORT(V) …
#define QLC_DCB_VERSION_SUPPORT(V) …
#define QLC_DCB_MAX_NUM_TC(V) …
#define QLC_DCB_MAX_NUM_ETS_TC(V) …
#define QLC_DCB_MAX_NUM_PFC_TC(V) …
#define QLC_DCB_GET_TC_PRIO(X, P) …
#define QLC_DCB_GET_PGID_PRIO(X, P) …
#define QLC_DCB_GET_BWPER_PG(X, P) …
#define QLC_DCB_GET_TSA_PG(X, P) …
#define QLC_DCB_GET_PFC_PRIO(X, P) …
#define QLC_DCB_GET_PROTO_ID_APP(X) …
#define QLC_DCB_GET_SELECTOR_APP(X) …
#define QLC_DCB_LOCAL_PARAM_FWID …
#define QLC_DCB_OPER_PARAM_FWID …
#define QLC_DCB_PEER_PARAM_FWID …
#define QLC_83XX_DCB_GET_NUMAPP(X) …
#define QLC_83XX_DCB_TSA_VALID(X) …
#define QLC_83XX_DCB_PFC_VALID(X) …
#define QLC_83XX_DCB_GET_PRIOMAP_APP(X) …
#define QLC_82XX_DCB_GET_NUMAPP(X) …
#define QLC_82XX_DCB_TSA_VALID(X) …
#define QLC_82XX_DCB_PFC_VALID(X) …
#define QLC_82XX_DCB_GET_PRIOVAL_APP(X) …
#define QLC_82XX_DCB_GET_PRIOMAP_APP(X) …
#define QLC_82XX_DCB_PRIO_TC_MAP …
static const struct dcbnl_rtnl_ops qlcnic_dcbnl_ops;
static void qlcnic_dcb_aen_work(struct work_struct *);
static void qlcnic_dcb_data_cee_param_map(struct qlcnic_adapter *);
static inline void __qlcnic_init_dcbnl_ops(struct qlcnic_dcb *);
static void __qlcnic_dcb_free(struct qlcnic_dcb *);
static int __qlcnic_dcb_attach(struct qlcnic_dcb *);
static int __qlcnic_dcb_query_hw_capability(struct qlcnic_dcb *, char *);
static void __qlcnic_dcb_get_info(struct qlcnic_dcb *);
static int qlcnic_82xx_dcb_get_hw_capability(struct qlcnic_dcb *);
static int qlcnic_82xx_dcb_query_cee_param(struct qlcnic_dcb *, char *, u8);
static int qlcnic_82xx_dcb_get_cee_cfg(struct qlcnic_dcb *);
static void qlcnic_82xx_dcb_aen_handler(struct qlcnic_dcb *, void *);
static int qlcnic_83xx_dcb_get_hw_capability(struct qlcnic_dcb *);
static int qlcnic_83xx_dcb_query_cee_param(struct qlcnic_dcb *, char *, u8);
static int qlcnic_83xx_dcb_get_cee_cfg(struct qlcnic_dcb *);
static void qlcnic_83xx_dcb_aen_handler(struct qlcnic_dcb *, void *);
struct qlcnic_dcb_capability { … };
struct qlcnic_dcb_param { … };
struct qlcnic_dcb_mbx_params { … };
struct qlcnic_82xx_dcb_param_mbx_le { … };
enum qlcnic_dcb_selector { … };
enum qlcnic_dcb_prio_type { … };
enum qlcnic_dcb_pfc_type { … };
struct qlcnic_dcb_prio_cfg { … };
struct qlcnic_dcb_pg_cfg { … };
struct qlcnic_dcb_tc_cfg { … };
struct qlcnic_dcb_app { … };
struct qlcnic_dcb_cee { … };
struct qlcnic_dcb_cfg { … };
static const struct qlcnic_dcb_ops qlcnic_83xx_dcb_ops = …;
static const struct qlcnic_dcb_ops qlcnic_82xx_dcb_ops = …;
static u8 qlcnic_dcb_get_num_app(struct qlcnic_adapter *adapter, u32 val)
{ … }
static inline u8 qlcnic_dcb_pfc_hdr_valid(struct qlcnic_adapter *adapter,
u32 val)
{ … }
static inline u8 qlcnic_dcb_tsa_hdr_valid(struct qlcnic_adapter *adapter,
u32 val)
{ … }
static inline u8 qlcnic_dcb_get_prio_map_app(struct qlcnic_adapter *adapter,
u32 val)
{ … }
static int qlcnic_dcb_prio_count(u8 up_tc_map)
{ … }
static inline void __qlcnic_init_dcbnl_ops(struct qlcnic_dcb *dcb)
{ … }
static void qlcnic_set_dcb_ops(struct qlcnic_adapter *adapter)
{ … }
int qlcnic_register_dcb(struct qlcnic_adapter *adapter)
{ … }
static void __qlcnic_dcb_free(struct qlcnic_dcb *dcb)
{ … }
static void __qlcnic_dcb_get_info(struct qlcnic_dcb *dcb)
{ … }
static int __qlcnic_dcb_attach(struct qlcnic_dcb *dcb)
{ … }
static int __qlcnic_dcb_query_hw_capability(struct qlcnic_dcb *dcb, char *buf)
{ … }
static int __qlcnic_dcb_get_capability(struct qlcnic_dcb *dcb, u32 *val)
{ … }
static int qlcnic_82xx_dcb_get_hw_capability(struct qlcnic_dcb *dcb)
{ … }
static int qlcnic_82xx_dcb_query_cee_param(struct qlcnic_dcb *dcb,
char *buf, u8 type)
{ … }
static int qlcnic_82xx_dcb_get_cee_cfg(struct qlcnic_dcb *dcb)
{ … }
static void qlcnic_dcb_aen_work(struct work_struct *work)
{ … }
static void qlcnic_82xx_dcb_aen_handler(struct qlcnic_dcb *dcb, void *data)
{ … }
static int qlcnic_83xx_dcb_get_hw_capability(struct qlcnic_dcb *dcb)
{ … }
static int qlcnic_83xx_dcb_query_cee_param(struct qlcnic_dcb *dcb,
char *buf, u8 idx)
{ … }
static int qlcnic_83xx_dcb_get_cee_cfg(struct qlcnic_dcb *dcb)
{ … }
static void qlcnic_83xx_dcb_aen_handler(struct qlcnic_dcb *dcb, void *data)
{ … }
static void qlcnic_dcb_fill_cee_tc_params(struct qlcnic_dcb_mbx_params *mbx,
struct qlcnic_dcb_param *each,
struct qlcnic_dcb_cee *type)
{ … }
static void qlcnic_dcb_fill_cee_pg_params(struct qlcnic_dcb_param *each,
struct qlcnic_dcb_cee *type)
{ … }
static void
qlcnic_dcb_fill_cee_app_params(struct qlcnic_adapter *adapter, u8 idx,
struct qlcnic_dcb_param *each,
struct qlcnic_dcb_cee *type)
{ … }
static void qlcnic_dcb_map_cee_params(struct qlcnic_adapter *adapter, u8 idx)
{ … }
static void qlcnic_dcb_data_cee_param_map(struct qlcnic_adapter *adapter)
{ … }
static u8 qlcnic_dcb_get_state(struct net_device *netdev)
{ … }
static void qlcnic_dcb_get_perm_hw_addr(struct net_device *netdev, u8 *addr)
{ … }
static void
qlcnic_dcb_get_pg_tc_cfg_tx(struct net_device *netdev, int tc, u8 *prio,
u8 *pgid, u8 *bw_per, u8 *up_tc_map)
{ … }
static void qlcnic_dcb_get_pg_bwg_cfg_tx(struct net_device *netdev, int pgid,
u8 *bw_pct)
{ … }
static void qlcnic_dcb_get_pfc_cfg(struct net_device *netdev, int prio,
u8 *setting)
{ … }
static u8 qlcnic_dcb_get_capability(struct net_device *netdev, int capid,
u8 *cap)
{ … }
static int qlcnic_dcb_get_num_tcs(struct net_device *netdev, int attr, u8 *num)
{ … }
static int qlcnic_dcb_get_app(struct net_device *netdev, u8 idtype, u16 id)
{ … }
static u8 qlcnic_dcb_get_pfc_state(struct net_device *netdev)
{ … }
static u8 qlcnic_dcb_get_dcbx(struct net_device *netdev)
{ … }
static u8 qlcnic_dcb_get_feat_cfg(struct net_device *netdev, int fid, u8 *flag)
{ … }
static inline void
qlcnic_dcb_get_pg_tc_cfg_rx(struct net_device *netdev, int prio, u8 *prio_type,
u8 *pgid, u8 *bw_pct, u8 *up_map)
{ … }
static inline void
qlcnic_dcb_get_pg_bwg_cfg_rx(struct net_device *netdev, int pgid, u8 *bw_pct)
{ … }
static int qlcnic_dcb_peer_app_info(struct net_device *netdev,
struct dcb_peer_app_info *info,
u16 *app_count)
{ … }
static int qlcnic_dcb_peer_app_table(struct net_device *netdev,
struct dcb_app *table)
{ … }
static int qlcnic_dcb_cee_peer_get_pg(struct net_device *netdev,
struct cee_pg *pg)
{ … }
static int qlcnic_dcb_cee_peer_get_pfc(struct net_device *netdev,
struct cee_pfc *pfc)
{ … }
static const struct dcbnl_rtnl_ops qlcnic_dcbnl_ops = …;