提交 3db8cc10 编写于 作者: J Joe Perches 提交者: James Bottomley

[SCSI] bnx2fc: Reduce object size by consolidating formats

Deduplication of formats and consolidating tests
makes the object much smaller.

Add bnx2fc_debug.c, add functions for a few logging
functions (BNX2FC_IO_DBG, BNX2FC_TGT_DBG, BNX2FC_HBA_DBG).
Use printf extension %pV.
Add and use pr_fmt and pr_<level>.
Move the debug #include below structure definitions.

$ size drivers/scsi/bnx2fc/built-in.o*
   text	   data	    bss	    dec	    hex	filename
 101563	   1165	  24976	 127704	  1f2d8	drivers/scsi/bnx2fc/built-in.o.new
 138473	   1109	  33400	 172982	  2a3b6	drivers/scsi/bnx2fc/built-in.o.old
Signed-off-by: NJoe Perches <joe@perches.com>
Signed-off-by: NBhanu Prakash Gollapudi <bprakash@broadcom.com>
Signed-off-by: NJames Bottomley <JBottomley@Parallels.com>
上级 69614270
obj-$(CONFIG_SCSI_BNX2X_FCOE) += bnx2fc.o
bnx2fc-y := bnx2fc_els.o bnx2fc_fcoe.o bnx2fc_hwi.o bnx2fc_io.o bnx2fc_tgt.o
bnx2fc-y := bnx2fc_els.o bnx2fc_fcoe.o bnx2fc_hwi.o bnx2fc_io.o bnx2fc_tgt.o \
bnx2fc_debug.o
......@@ -11,6 +11,8 @@
* Written by: Bhanu Prakash Gollapudi (bprakash@broadcom.com)
*/
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
#include <linux/module.h>
#include <linux/moduleparam.h>
#include <linux/kernel.h>
......@@ -57,7 +59,6 @@
#include <scsi/fc/fc_fcp.h>
#include "57xx_hsi_bnx2fc.h"
#include "bnx2fc_debug.h"
#include "../../net/ethernet/broadcom/cnic_if.h"
#include "bnx2fc_constants.h"
......@@ -554,4 +555,7 @@ void bnx2fc_process_seq_cleanup_compl(struct bnx2fc_cmd *seq_clnup_req,
int bnx2fc_initiate_seq_cleanup(struct bnx2fc_cmd *orig_io_req, u32 offset,
enum fc_rctl r_ctl);
#include "bnx2fc_debug.h"
#endif
#include "bnx2fc.h"
void BNX2FC_IO_DBG(const struct bnx2fc_cmd *io_req, const char *fmt, ...)
{
struct va_format vaf;
va_list args;
if (likely(!(bnx2fc_debug_level & LOG_IO)))
return;
va_start(args, fmt);
vaf.fmt = fmt;
vaf.va = &args;
if (io_req && io_req->port && io_req->port->lport &&
io_req->port->lport->host)
shost_printk(KERN_INFO, io_req->port->lport->host,
PFX "xid:0x%x %pV",
io_req->xid, &vaf);
else
pr_info("NULL %pV", &vaf);
va_end(args);
}
void BNX2FC_TGT_DBG(const struct bnx2fc_rport *tgt, const char *fmt, ...)
{
struct va_format vaf;
va_list args;
if (likely(!(bnx2fc_debug_level & LOG_TGT)))
return;
va_start(args, fmt);
vaf.fmt = fmt;
vaf.va = &args;
if (tgt && tgt->port && tgt->port->lport && tgt->port->lport->host &&
tgt->rport)
shost_printk(KERN_INFO, tgt->port->lport->host,
PFX "port:%x %pV",
tgt->rport->port_id, &vaf);
else
pr_info("NULL %pV", &vaf);
va_end(args);
}
void BNX2FC_HBA_DBG(const struct fc_lport *lport, const char *fmt, ...)
{
struct va_format vaf;
va_list args;
if (likely(!(bnx2fc_debug_level & LOG_HBA)))
return;
va_start(args, fmt);
vaf.fmt = fmt;
vaf.va = &args;
if (lport && lport->host)
shost_printk(KERN_INFO, lport->host, PFX "%pV", &vaf);
else
pr_info("NULL %pV", &vaf);
va_end(args);
}
......@@ -11,60 +11,23 @@
extern unsigned int bnx2fc_debug_level;
#define BNX2FC_CHK_LOGGING(LEVEL, CMD) \
do { \
if (unlikely(bnx2fc_debug_level & LEVEL)) \
do { \
CMD; \
} while (0); \
} while (0)
#define BNX2FC_ELS_DBG(fmt, arg...) \
BNX2FC_CHK_LOGGING(LOG_ELS, \
printk(KERN_INFO PFX fmt, ##arg))
#define BNX2FC_MISC_DBG(fmt, arg...) \
BNX2FC_CHK_LOGGING(LOG_MISC, \
printk(KERN_INFO PFX fmt, ##arg))
#define BNX2FC_IO_DBG(io_req, fmt, arg...) \
do { \
if (!io_req || !io_req->port || !io_req->port->lport || \
!io_req->port->lport->host) \
BNX2FC_CHK_LOGGING(LOG_IO, \
printk(KERN_INFO PFX "NULL " fmt, ##arg)); \
else \
BNX2FC_CHK_LOGGING(LOG_IO, \
shost_printk(KERN_INFO, \
(io_req)->port->lport->host, \
PFX "xid:0x%x " fmt, \
(io_req)->xid, ##arg)); \
} while (0)
#define BNX2FC_TGT_DBG(tgt, fmt, arg...) \
do { \
if (!tgt || !tgt->port || !tgt->port->lport || \
!tgt->port->lport->host || !tgt->rport) \
BNX2FC_CHK_LOGGING(LOG_TGT, \
printk(KERN_INFO PFX "NULL " fmt, ##arg)); \
else \
BNX2FC_CHK_LOGGING(LOG_TGT, \
shost_printk(KERN_INFO, \
(tgt)->port->lport->host, \
PFX "port:%x " fmt, \
(tgt)->rport->port_id, ##arg)); \
} while (0)
#define BNX2FC_HBA_DBG(lport, fmt, arg...) \
do { \
if (!lport || !lport->host) \
BNX2FC_CHK_LOGGING(LOG_HBA, \
printk(KERN_INFO PFX "NULL " fmt, ##arg)); \
else \
BNX2FC_CHK_LOGGING(LOG_HBA, \
shost_printk(KERN_INFO, lport->host, \
PFX fmt, ##arg)); \
} while (0)
#define BNX2FC_ELS_DBG(fmt, ...) \
do { \
if (unlikely(bnx2fc_debug_level & LOG_ELS)) \
pr_info(fmt, ##__VA_ARGS__); \
} while (0)
#define BNX2FC_MISC_DBG(fmt, ...) \
do { \
if (unlikely(bnx2fc_debug_level & LOG_MISC)) \
pr_info(fmt, ##__VA_ARGS__); \
} while (0)
__printf(2, 3)
void BNX2FC_IO_DBG(const struct bnx2fc_cmd *io_req, const char *fmt, ...);
__printf(2, 3)
void BNX2FC_TGT_DBG(const struct bnx2fc_rport *tgt, const char *fmt, ...);
__printf(2, 3)
void BNX2FC_HBA_DBG(const struct fc_lport *lport, const char *fmt, ...);
#endif
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册