cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

qlcnic_dcb.h (2792B)


      1/* SPDX-License-Identifier: GPL-2.0-only */
      2/*
      3 * QLogic qlcnic NIC Driver
      4 * Copyright (c)  2009-2013 QLogic Corporation
      5 */
      6
      7#ifndef __QLCNIC_DCBX_H
      8#define __QLCNIC_DCBX_H
      9
     10#define QLCNIC_DCB_STATE	0
     11#define QLCNIC_DCB_AEN_MODE	1
     12
     13#ifdef CONFIG_QLCNIC_DCB
     14int qlcnic_register_dcb(struct qlcnic_adapter *);
     15#else
     16static inline int qlcnic_register_dcb(struct qlcnic_adapter *adapter)
     17{ return 0; }
     18#endif
     19
     20struct qlcnic_dcb;
     21
     22struct qlcnic_dcb_ops {
     23	int (*query_hw_capability) (struct qlcnic_dcb *, char *);
     24	int (*get_hw_capability) (struct qlcnic_dcb *);
     25	int (*query_cee_param) (struct qlcnic_dcb *, char *, u8);
     26	void (*init_dcbnl_ops) (struct qlcnic_dcb *);
     27	void (*aen_handler) (struct qlcnic_dcb *, void *);
     28	int (*get_cee_cfg) (struct qlcnic_dcb *);
     29	void (*get_info) (struct qlcnic_dcb *);
     30	int (*attach) (struct qlcnic_dcb *);
     31	void (*free) (struct qlcnic_dcb *);
     32};
     33
     34struct qlcnic_dcb {
     35	struct qlcnic_dcb_mbx_params	*param;
     36	struct qlcnic_adapter		*adapter;
     37	struct delayed_work		aen_work;
     38	struct workqueue_struct		*wq;
     39	const struct qlcnic_dcb_ops	*ops;
     40	struct qlcnic_dcb_cfg		*cfg;
     41	unsigned long			state;
     42};
     43
     44static inline void qlcnic_clear_dcb_ops(struct qlcnic_dcb *dcb)
     45{
     46	kfree(dcb);
     47}
     48
     49static inline int qlcnic_dcb_get_hw_capability(struct qlcnic_dcb *dcb)
     50{
     51	if (dcb && dcb->ops->get_hw_capability)
     52		return dcb->ops->get_hw_capability(dcb);
     53
     54	return -EOPNOTSUPP;
     55}
     56
     57static inline void qlcnic_dcb_free(struct qlcnic_dcb *dcb)
     58{
     59	if (dcb && dcb->ops->free)
     60		dcb->ops->free(dcb);
     61}
     62
     63static inline int qlcnic_dcb_attach(struct qlcnic_dcb *dcb)
     64{
     65	if (dcb && dcb->ops->attach)
     66		return dcb->ops->attach(dcb);
     67
     68	return -EOPNOTSUPP;
     69}
     70
     71static inline int
     72qlcnic_dcb_query_hw_capability(struct qlcnic_dcb *dcb, char *buf)
     73{
     74	if (dcb && dcb->ops->query_hw_capability)
     75		return dcb->ops->query_hw_capability(dcb, buf);
     76
     77	return -EOPNOTSUPP;
     78}
     79
     80static inline void qlcnic_dcb_get_info(struct qlcnic_dcb *dcb)
     81{
     82	if (dcb && dcb->ops->get_info)
     83		dcb->ops->get_info(dcb);
     84}
     85
     86static inline int
     87qlcnic_dcb_query_cee_param(struct qlcnic_dcb *dcb, char *buf, u8 type)
     88{
     89	if (dcb && dcb->ops->query_cee_param)
     90		return dcb->ops->query_cee_param(dcb, buf, type);
     91
     92	return -EOPNOTSUPP;
     93}
     94
     95static inline int qlcnic_dcb_get_cee_cfg(struct qlcnic_dcb *dcb)
     96{
     97	if (dcb && dcb->ops->get_cee_cfg)
     98		return dcb->ops->get_cee_cfg(dcb);
     99
    100	return -EOPNOTSUPP;
    101}
    102
    103static inline void qlcnic_dcb_aen_handler(struct qlcnic_dcb *dcb, void *msg)
    104{
    105	if (dcb && dcb->ops->aen_handler)
    106		dcb->ops->aen_handler(dcb, msg);
    107}
    108
    109static inline void qlcnic_dcb_init_dcbnl_ops(struct qlcnic_dcb *dcb)
    110{
    111	if (dcb && dcb->ops->init_dcbnl_ops)
    112		dcb->ops->init_dcbnl_ops(dcb);
    113}
    114
    115static inline void qlcnic_dcb_enable(struct qlcnic_dcb *dcb)
    116{
    117	if (dcb && qlcnic_dcb_attach(dcb))
    118		qlcnic_clear_dcb_ops(dcb);
    119}
    120#endif