All files in this driver directory contain the following notice:
See LICENSE.qlcnic for copyright and licensing details.
LICENSE.qlacnic can be found in
Documentation/networking/device_drivers/qlogic/. The file contains:
- A copyright notice
This copyright notice is redundant as all files contain the same
copyright notice already
- A license notice
You may modify and redistribute the device driver code under the
GNU General Public License (a copy of which is attached hereto as
Exhibit A) published by the Free Software Foundation (version 2).
This can be replaced with the corresponding SPDX license identifier
(GPL-2.0-only) in the source files which reference this license
file.
- The full GPLv2 license text
A redundant copy of LICENSES/preferred/GPL-2.0
Remove the notices and add the SPDX license identifier GPL-2.0-only to the
source files.
Finally remove the now redundant LICENSE.qlcnic file.
Reviewed-by: Richard Fontana <rfontana@redhat.com>
Reviewed-by: Jilayne Lovejoy <opensource@jilayne.com>
Reviewed-by: Alexios Zavras <alexios.zavras@intel.com>
Acked-by: Igor Russkikh <irusskikh@marvell.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Lukas Bulwahn <lukas.bulwahn@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
121 lines
2.7 KiB
C
121 lines
2.7 KiB
C
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
/*
|
|
* QLogic qlcnic NIC Driver
|
|
* Copyright (c) 2009-2013 QLogic Corporation
|
|
*/
|
|
|
|
#ifndef __QLCNIC_DCBX_H
|
|
#define __QLCNIC_DCBX_H
|
|
|
|
#define QLCNIC_DCB_STATE 0
|
|
#define QLCNIC_DCB_AEN_MODE 1
|
|
|
|
#ifdef CONFIG_QLCNIC_DCB
|
|
int qlcnic_register_dcb(struct qlcnic_adapter *);
|
|
#else
|
|
static inline int qlcnic_register_dcb(struct qlcnic_adapter *adapter)
|
|
{ return 0; }
|
|
#endif
|
|
|
|
struct qlcnic_dcb;
|
|
|
|
struct qlcnic_dcb_ops {
|
|
int (*query_hw_capability) (struct qlcnic_dcb *, char *);
|
|
int (*get_hw_capability) (struct qlcnic_dcb *);
|
|
int (*query_cee_param) (struct qlcnic_dcb *, char *, u8);
|
|
void (*init_dcbnl_ops) (struct qlcnic_dcb *);
|
|
void (*aen_handler) (struct qlcnic_dcb *, void *);
|
|
int (*get_cee_cfg) (struct qlcnic_dcb *);
|
|
void (*get_info) (struct qlcnic_dcb *);
|
|
int (*attach) (struct qlcnic_dcb *);
|
|
void (*free) (struct qlcnic_dcb *);
|
|
};
|
|
|
|
struct qlcnic_dcb {
|
|
struct qlcnic_dcb_mbx_params *param;
|
|
struct qlcnic_adapter *adapter;
|
|
struct delayed_work aen_work;
|
|
struct workqueue_struct *wq;
|
|
const struct qlcnic_dcb_ops *ops;
|
|
struct qlcnic_dcb_cfg *cfg;
|
|
unsigned long state;
|
|
};
|
|
|
|
static inline void qlcnic_clear_dcb_ops(struct qlcnic_dcb *dcb)
|
|
{
|
|
kfree(dcb);
|
|
}
|
|
|
|
static inline int qlcnic_dcb_get_hw_capability(struct qlcnic_dcb *dcb)
|
|
{
|
|
if (dcb && dcb->ops->get_hw_capability)
|
|
return dcb->ops->get_hw_capability(dcb);
|
|
|
|
return 0;
|
|
}
|
|
|
|
static inline void qlcnic_dcb_free(struct qlcnic_dcb *dcb)
|
|
{
|
|
if (dcb && dcb->ops->free)
|
|
dcb->ops->free(dcb);
|
|
}
|
|
|
|
static inline int qlcnic_dcb_attach(struct qlcnic_dcb *dcb)
|
|
{
|
|
if (dcb && dcb->ops->attach)
|
|
return dcb->ops->attach(dcb);
|
|
|
|
return 0;
|
|
}
|
|
|
|
static inline int
|
|
qlcnic_dcb_query_hw_capability(struct qlcnic_dcb *dcb, char *buf)
|
|
{
|
|
if (dcb && dcb->ops->query_hw_capability)
|
|
return dcb->ops->query_hw_capability(dcb, buf);
|
|
|
|
return 0;
|
|
}
|
|
|
|
static inline void qlcnic_dcb_get_info(struct qlcnic_dcb *dcb)
|
|
{
|
|
if (dcb && dcb->ops->get_info)
|
|
dcb->ops->get_info(dcb);
|
|
}
|
|
|
|
static inline int
|
|
qlcnic_dcb_query_cee_param(struct qlcnic_dcb *dcb, char *buf, u8 type)
|
|
{
|
|
if (dcb && dcb->ops->query_cee_param)
|
|
return dcb->ops->query_cee_param(dcb, buf, type);
|
|
|
|
return 0;
|
|
}
|
|
|
|
static inline int qlcnic_dcb_get_cee_cfg(struct qlcnic_dcb *dcb)
|
|
{
|
|
if (dcb && dcb->ops->get_cee_cfg)
|
|
return dcb->ops->get_cee_cfg(dcb);
|
|
|
|
return 0;
|
|
}
|
|
|
|
static inline void qlcnic_dcb_aen_handler(struct qlcnic_dcb *dcb, void *msg)
|
|
{
|
|
if (dcb && dcb->ops->aen_handler)
|
|
dcb->ops->aen_handler(dcb, msg);
|
|
}
|
|
|
|
static inline void qlcnic_dcb_init_dcbnl_ops(struct qlcnic_dcb *dcb)
|
|
{
|
|
if (dcb && dcb->ops->init_dcbnl_ops)
|
|
dcb->ops->init_dcbnl_ops(dcb);
|
|
}
|
|
|
|
static inline void qlcnic_dcb_enable(struct qlcnic_dcb *dcb)
|
|
{
|
|
if (dcb && qlcnic_dcb_attach(dcb))
|
|
qlcnic_clear_dcb_ops(dcb);
|
|
}
|
|
#endif
|