Linux Audio

Check our new training course

Loading...
Note: File does not exist in v3.1.
  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 int qlcnic_dcb_get_hw_capability(struct qlcnic_dcb *dcb)
 45{
 46	if (dcb && dcb->ops->get_hw_capability)
 47		return dcb->ops->get_hw_capability(dcb);
 48
 49	return -EOPNOTSUPP;
 50}
 51
 52static inline void qlcnic_dcb_free(struct qlcnic_dcb *dcb)
 53{
 54	if (dcb && dcb->ops->free)
 55		dcb->ops->free(dcb);
 56}
 57
 58static inline int qlcnic_dcb_attach(struct qlcnic_dcb *dcb)
 59{
 60	if (dcb && dcb->ops->attach)
 61		return dcb->ops->attach(dcb);
 62
 63	return -EOPNOTSUPP;
 64}
 65
 66static inline int
 67qlcnic_dcb_query_hw_capability(struct qlcnic_dcb *dcb, char *buf)
 68{
 69	if (dcb && dcb->ops->query_hw_capability)
 70		return dcb->ops->query_hw_capability(dcb, buf);
 71
 72	return -EOPNOTSUPP;
 73}
 74
 75static inline void qlcnic_dcb_get_info(struct qlcnic_dcb *dcb)
 76{
 77	if (dcb && dcb->ops->get_info)
 78		dcb->ops->get_info(dcb);
 79}
 80
 81static inline int
 82qlcnic_dcb_query_cee_param(struct qlcnic_dcb *dcb, char *buf, u8 type)
 83{
 84	if (dcb && dcb->ops->query_cee_param)
 85		return dcb->ops->query_cee_param(dcb, buf, type);
 86
 87	return -EOPNOTSUPP;
 88}
 89
 90static inline int qlcnic_dcb_get_cee_cfg(struct qlcnic_dcb *dcb)
 91{
 92	if (dcb && dcb->ops->get_cee_cfg)
 93		return dcb->ops->get_cee_cfg(dcb);
 94
 95	return -EOPNOTSUPP;
 96}
 97
 98static inline void qlcnic_dcb_aen_handler(struct qlcnic_dcb *dcb, void *msg)
 99{
100	if (dcb && dcb->ops->aen_handler)
101		dcb->ops->aen_handler(dcb, msg);
102}
103
104static inline void qlcnic_dcb_init_dcbnl_ops(struct qlcnic_dcb *dcb)
105{
106	if (dcb && dcb->ops->init_dcbnl_ops)
107		dcb->ops->init_dcbnl_ops(dcb);
108}
109
110static inline int qlcnic_dcb_enable(struct qlcnic_dcb *dcb)
111{
112	return dcb ? qlcnic_dcb_attach(dcb) : 0;
113}
114#endif