[ofa-general] Re: [PATCH 11/13] QLogic VNIC: Driver utility file - implements various utility macros
Stephen Hemminger
shemminger at vyatta.com
Thu May 1 07:58:16 PDT 2008
On Wed, 30 Apr 2008 22:51:26 +0530
Ramachandra K <ramachandra.kuchimanchi at qlogic.com> wrote:
> From: Poornima Kamath <poornima.kamath at qlogic.com>
>
> This patch adds the driver utility file which mainly contains utility
> macros for debugging of QLogic VNIC driver.
>
> Signed-off-by: Ramachandra K <ramachandra.kuchimanchi at qlogic.com>
> Signed-off-by: Amar Mudrankit <amar.mudrankit at qlogic.com>
> ---
>
> drivers/infiniband/ulp/qlgc_vnic/vnic_util.h | 251 ++++++++++++++++++++++++++
> 1 files changed, 251 insertions(+), 0 deletions(-)
> create mode 100644 drivers/infiniband/ulp/qlgc_vnic/vnic_util.h
>
> diff --git a/drivers/infiniband/ulp/qlgc_vnic/vnic_util.h b/drivers/infiniband/ulp/qlgc_vnic/vnic_util.h
> new file mode 100644
> index 0000000..4d7d540
> --- /dev/null
> +++ b/drivers/infiniband/ulp/qlgc_vnic/vnic_util.h
> @@ -0,0 +1,251 @@
> +/*
> + * Copyright (c) 2006 QLogic, Inc. All rights reserved.
> + *
> + * This software is available to you under a choice of one of two
> + * licenses. You may choose to be licensed under the terms of the GNU
> + * General Public License (GPL) Version 2, available from the file
> + * COPYING in the main directory of this source tree, or the
> + * OpenIB.org BSD license below:
> + *
> + * Redistribution and use in source and binary forms, with or
> + * without modification, are permitted provided that the following
> + * conditions are met:
> + *
> + * - Redistributions of source code must retain the above
> + * copyright notice, this list of conditions and the following
> + * disclaimer.
> + *
> + * - Redistributions in binary form must reproduce the above
> + * copyright notice, this list of conditions and the following
> + * disclaimer in the documentation and/or other materials
> + * provided with the distribution.
> + *
> + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
> + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
> + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
> + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
> + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
> + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
> + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
> + * SOFTWARE.
> + */
> +
> +#ifndef VNIC_UTIL_H_INCLUDED
> +#define VNIC_UTIL_H_INCLUDED
> +
> +#define MODULE_NAME "QLGC_VNIC"
> +
> +#define VNIC_MAJORVERSION 1
> +#define VNIC_MINORVERSION 1
> +
> +#define is_power_of2(value) (((value) & ((value - 1))) == 0)
> +#define ALIGN_DOWN(x, a) ((x)&(~((a)-1)))
In kernel.h already
> +extern u32 vnic_debug;
Use msg level macros instead?
> +
> +enum {
> + DEBUG_IB_INFO = 0x00000001,
> + DEBUG_IB_FUNCTION = 0x00000002,
> + DEBUG_IB_FSTATUS = 0x00000004,
> + DEBUG_IB_ASSERTS = 0x00000008,
> + DEBUG_CONTROL_INFO = 0x00000010,
> + DEBUG_CONTROL_FUNCTION = 0x00000020,
> + DEBUG_CONTROL_PACKET = 0x00000040,
> + DEBUG_CONFIG_INFO = 0x00000100,
> + DEBUG_DATA_INFO = 0x00001000,
> + DEBUG_DATA_FUNCTION = 0x00002000,
> + DEBUG_NETPATH_INFO = 0x00010000,
> + DEBUG_VIPORT_INFO = 0x00100000,
> + DEBUG_VIPORT_FUNCTION = 0x00200000,
> + DEBUG_LINK_STATE = 0x00400000,
> + DEBUG_VNIC_INFO = 0x01000000,
> + DEBUG_VNIC_FUNCTION = 0x02000000,
> + DEBUG_MCAST_INFO = 0x04000000,
> + DEBUG_MCAST_FUNCTION = 0x08000000,
> + DEBUG_SYS_INFO = 0x10000000,
> + DEBUG_SYS_VERBOSE = 0x40000000
> +};
> +
> +#ifdef CONFIG_INFINIBAND_QLGC_VNIC_DEBUG
> +#define PRINT(level, x, fmt, arg...) \
> + printk(level "%s: %s: %s, line %d: " fmt, \
> + MODULE_NAME, x, __FILE__, __LINE__, ##arg)
> +
> +#define PRINT_CONDITIONAL(level, x, condition, fmt, arg...) \
> + do { \
> + if (condition) \
> + printk(level "%s: %s: %s, line %d: " fmt, \
> + MODULE_NAME, x, __FILE__, __LINE__, \
> + ##arg); \
> + } while (0)
> +#else
> +#define PRINT(level, x, fmt, arg...) \
> + printk(level "%s: " fmt, MODULE_NAME, ##arg)
> +
> +#define PRINT_CONDITIONAL(level, x, condition, fmt, arg...) \
> + do { \
> + if (condition) \
> + printk(level "%s: %s: " fmt, \
> + MODULE_NAME, x, ##arg); \
> + } while (0)
> +#endif /*CONFIG_INFINIBAND_QLGC_VNIC_DEBUG*/
> +
> +#define IB_PRINT(fmt, arg...) \
> + PRINT(KERN_INFO, "IB", fmt, ##arg)
> +#define IB_ERROR(fmt, arg...) \
> + PRINT(KERN_ERR, "IB", fmt, ##arg)
> +
> +#define IB_FUNCTION(fmt, arg...) \
> + PRINT_CONDITIONAL(KERN_INFO, \
> + "IB", \
> + (vnic_debug & DEBUG_IB_FUNCTION), \
> + fmt, ##arg)
> +
> +#define IB_INFO(fmt, arg...) \
> + PRINT_CONDITIONAL(KERN_INFO, \
> + "IB", \
> + (vnic_debug & DEBUG_IB_INFO), \
> + fmt, ##arg)
> +
> +#define IB_ASSERT(x) \
> + do { \
> + if ((vnic_debug & DEBUG_IB_ASSERTS) && !(x)) \
> + panic("%s assertion failed, file: %s," \
> + " line %d: ", \
> + MODULE_NAME, __FILE__, __LINE__) \
> + } while (0)
> +
> +#define CONTROL_PRINT(fmt, arg...) \
> + PRINT(KERN_INFO, "CONTROL", fmt, ##arg)
> +#define CONTROL_ERROR(fmt, arg...) \
> + PRINT(KERN_ERR, "CONTROL", fmt, ##arg)
> +
> +#define CONTROL_INFO(fmt, arg...) \
> + PRINT_CONDITIONAL(KERN_INFO, \
> + "CONTROL", \
> + (vnic_debug & DEBUG_CONTROL_INFO), \
> + fmt, ##arg)
> +
> +#define CONTROL_FUNCTION(fmt, arg...) \
> + PRINT_CONDITIONAL(KERN_INFO, \
> + "CONTROL", \
> + (vnic_debug & DEBUG_CONTROL_FUNCTION), \
> + fmt, ##arg)
> +
> +#define CONTROL_PACKET(pkt) \
> + do { \
> + if (vnic_debug & DEBUG_CONTROL_PACKET) \
> + control_log_control_packet(pkt); \
> + } while (0)
> +
> +#define CONFIG_PRINT(fmt, arg...) \
> + PRINT(KERN_INFO, "CONFIG", fmt, ##arg)
> +#define CONFIG_ERROR(fmt, arg...) \
> + PRINT(KERN_ERR, "CONFIG", fmt, ##arg)
> +
> +#define CONFIG_INFO(fmt, arg...) \
> + PRINT_CONDITIONAL(KERN_INFO, \
> + "CONFIG", \
> + (vnic_debug & DEBUG_CONFIG_INFO), \
> + fmt, ##arg)
> +
> +#define DATA_PRINT(fmt, arg...) \
> + PRINT(KERN_INFO, "DATA", fmt, ##arg)
> +#define DATA_ERROR(fmt, arg...) \
> + PRINT(KERN_ERR, "DATA", fmt, ##arg)
> +
> +#define DATA_INFO(fmt, arg...) \
> + PRINT_CONDITIONAL(KERN_INFO, \
> + "DATA", \
> + (vnic_debug & DEBUG_DATA_INFO), \
> + fmt, ##arg)
> +
> +#define DATA_FUNCTION(fmt, arg...) \
> + PRINT_CONDITIONAL(KERN_INFO, \
> + "DATA", \
> + (vnic_debug & DEBUG_DATA_FUNCTION), \
> + fmt, ##arg)
> +
> +
> +#define MCAST_PRINT(fmt, arg...) \
> + PRINT(KERN_INFO, "MCAST", fmt, ##arg)
> +#define MCAST_ERROR(fmt, arg...) \
> + PRINT(KERN_ERR, "MCAST", fmt, ##arg)
> +
> +#define MCAST_INFO(fmt, arg...) \
> + PRINT_CONDITIONAL(KERN_INFO, \
> + "MCAST", \
> + (vnic_debug & DEBUG_MCAST_INFO), \
> + fmt, ##arg)
> +
> +#define MCAST_FUNCTION(fmt, arg...) \
> + PRINT_CONDITIONAL(KERN_INFO, \
> + "MCAST", \
> + (vnic_debug & DEBUG_MCAST_FUNCTION), \
> + fmt, ##arg)
> +
> +#define NETPATH_PRINT(fmt, arg...) \
> + PRINT(KERN_INFO, "NETPATH", fmt, ##arg)
> +#define NETPATH_ERROR(fmt, arg...) \
> + PRINT(KERN_ERR, "NETPATH", fmt, ##arg)
> +
> +#define NETPATH_INFO(fmt, arg...) \
> + PRINT_CONDITIONAL(KERN_INFO, \
> + "NETPATH", \
> + (vnic_debug & DEBUG_NETPATH_INFO), \
> + fmt, ##arg)
> +
> +#define VIPORT_PRINT(fmt, arg...) \
> + PRINT(KERN_INFO, "VIPORT", fmt, ##arg)
> +#define VIPORT_ERROR(fmt, arg...) \
> + PRINT(KERN_ERR, "VIPORT", fmt, ##arg)
> +
> +#define VIPORT_INFO(fmt, arg...) \
> + PRINT_CONDITIONAL(KERN_INFO, \
> + "VIPORT", \
> + (vnic_debug & DEBUG_VIPORT_INFO), \
> + fmt, ##arg)
> +
> +#define VIPORT_FUNCTION(fmt, arg...) \
> + PRINT_CONDITIONAL(KERN_INFO, \
> + "VIPORT", \
> + (vnic_debug & DEBUG_VIPORT_FUNCTION), \
> + fmt, ##arg)
> +
> +#define LINK_STATE(fmt, arg...) \
> + PRINT_CONDITIONAL(KERN_INFO, \
> + "LINK", \
> + (vnic_debug & DEBUG_LINK_STATE), \
> + fmt, ##arg)
> +
> +#define VNIC_PRINT(fmt, arg...) \
> + PRINT(KERN_INFO, "NIC", fmt, ##arg)
> +#define VNIC_ERROR(fmt, arg...) \
> + PRINT(KERN_ERR, "NIC", fmt, ##arg)
> +#define VNIC_INIT(fmt, arg...) \
> + PRINT(KERN_INFO, "NIC", fmt, ##arg)
> +
> +#define VNIC_INFO(fmt, arg...) \
> + PRINT_CONDITIONAL(KERN_INFO, \
> + "NIC", \
> + (vnic_debug & DEBUG_VNIC_INFO), \
> + fmt, ##arg)
> +
> +#define VNIC_FUNCTION(fmt, arg...) \
> + PRINT_CONDITIONAL(KERN_INFO, \
> + "NIC", \
> + (vnic_debug & DEBUG_VNIC_FUNCTION), \
> + fmt, ##arg)
> +
> +#define SYS_PRINT(fmt, arg...) \
> + PRINT(KERN_INFO, "SYS", fmt, ##arg)
> +#define SYS_ERROR(fmt, arg...) \
> + PRINT(KERN_ERR, "SYS", fmt, ##arg)
> +
> +#define SYS_INFO(fmt, arg...) \
> + PRINT_CONDITIONAL(KERN_INFO, \
> + "SYS", \
> + (vnic_debug & DEBUG_SYS_INFO), \
> + fmt, ##arg)
> +
> +#endif /* VNIC_UTIL_H_INCLUDED */
Many of these are already in standard macros pr_info, pr_err etc.
More information about the general
mailing list