cregit-Linux how code gets into the kernel

Release 4.7 drivers/scsi/lpfc/lpfc_debugfs.h

/*******************************************************************
 * This file is part of the Emulex Linux Device Driver for         *
 * Fibre Channel Host Bus Adapters.                                *
 * Copyright (C) 2007-2011 Emulex.  All rights reserved.           *
 * EMULEX and SLI are trademarks of Emulex.                        *
 * www.emulex.com                                                  *
 *                                                                 *
 * This program is free software; you can redistribute it and/or   *
 * modify it under the terms of version 2 of the GNU General       *
 * Public License as published by the Free Software Foundation.    *
 * This program is distributed in the hope that it will be useful. *
 * ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND          *
 * WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY,  *
 * FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT, ARE      *
 * DISCLAIMED, EXCEPT TO THE EXTENT THAT SUCH DISCLAIMERS ARE HELD *
 * TO BE LEGALLY INVALID.  See the GNU General Public License for  *
 * more details, a copy of which can be found in the file COPYING  *
 * included with this package.                                     *
 *******************************************************************/

#ifndef _H_LPFC_DEBUG_FS

#define _H_LPFC_DEBUG_FS

#ifdef CONFIG_SCSI_LPFC_DEBUG_FS

/* size of output line, for discovery_trace and slow_ring_trace */

#define LPFC_DEBUG_TRC_ENTRY_SIZE 100

/* nodelist output buffer size */

#define LPFC_NODELIST_SIZE 8192

#define LPFC_NODELIST_ENTRY_SIZE 120

/* dumpHBASlim output buffer size */

#define LPFC_DUMPHBASLIM_SIZE 4096

/* dumpHostSlim output buffer size */

#define LPFC_DUMPHOSTSLIM_SIZE 4096

/* dumpSLIqinfo output buffer size */

#define	LPFC_DUMPSLIQINFO_SIZE 4096

/* hbqinfo output buffer size */

#define LPFC_HBQINFO_SIZE 8192

/*
 * For SLI4 iDiag debugfs diagnostics tool
 */

/* pciConf */

#define LPFC_PCI_CFG_BROWSE 0xffff

#define LPFC_PCI_CFG_RD_CMD_ARG 2

#define LPFC_PCI_CFG_WR_CMD_ARG 3

#define LPFC_PCI_CFG_SIZE 4096

#define LPFC_PCI_CFG_RD_SIZE (LPFC_PCI_CFG_SIZE/4)


#define IDIAG_PCICFG_WHERE_INDX 0

#define IDIAG_PCICFG_COUNT_INDX 1

#define IDIAG_PCICFG_VALUE_INDX 2

/* barAcc */

#define LPFC_PCI_BAR_BROWSE 0xffff

#define LPFC_PCI_BAR_RD_CMD_ARG 3

#define LPFC_PCI_BAR_WR_CMD_ARG 3


#define LPFC_PCI_IF0_BAR0_SIZE (1024 *  16)

#define LPFC_PCI_IF0_BAR1_SIZE (1024 * 128)

#define LPFC_PCI_IF0_BAR2_SIZE (1024 * 128)

#define LPFC_PCI_IF2_BAR0_SIZE (1024 *  32)


#define LPFC_PCI_BAR_RD_BUF_SIZE 4096

#define LPFC_PCI_BAR_RD_SIZE (LPFC_PCI_BAR_RD_BUF_SIZE/4)


#define LPFC_PCI_IF0_BAR0_RD_SIZE (LPFC_PCI_IF0_BAR0_SIZE/4)

#define LPFC_PCI_IF0_BAR1_RD_SIZE (LPFC_PCI_IF0_BAR1_SIZE/4)

#define LPFC_PCI_IF0_BAR2_RD_SIZE (LPFC_PCI_IF0_BAR2_SIZE/4)

#define LPFC_PCI_IF2_BAR0_RD_SIZE (LPFC_PCI_IF2_BAR0_SIZE/4)


#define IDIAG_BARACC_BAR_NUM_INDX 0

#define IDIAG_BARACC_OFF_SET_INDX 1

#define IDIAG_BARACC_ACC_MOD_INDX 2

#define IDIAG_BARACC_REG_VAL_INDX 2

#define IDIAG_BARACC_BAR_SZE_INDX 3


#define IDIAG_BARACC_BAR_0 0

#define IDIAG_BARACC_BAR_1 1

#define IDIAG_BARACC_BAR_2 2


#define SINGLE_WORD 1

/* queue info */

#define LPFC_QUE_INFO_GET_BUF_SIZE 4096

/* queue acc */

#define LPFC_QUE_ACC_BROWSE 0xffff

#define LPFC_QUE_ACC_RD_CMD_ARG 4

#define LPFC_QUE_ACC_WR_CMD_ARG 6

#define LPFC_QUE_ACC_BUF_SIZE 4096

#define LPFC_QUE_ACC_SIZE (LPFC_QUE_ACC_BUF_SIZE/2)


#define LPFC_IDIAG_EQ 1

#define LPFC_IDIAG_CQ 2

#define LPFC_IDIAG_MQ 3

#define LPFC_IDIAG_WQ 4

#define LPFC_IDIAG_RQ 5


#define IDIAG_QUEACC_QUETP_INDX 0

#define IDIAG_QUEACC_QUEID_INDX 1

#define IDIAG_QUEACC_INDEX_INDX 2

#define IDIAG_QUEACC_COUNT_INDX 3

#define IDIAG_QUEACC_OFFST_INDX 4

#define IDIAG_QUEACC_VALUE_INDX 5

/* doorbell register acc */

#define LPFC_DRB_ACC_ALL 0xffff

#define LPFC_DRB_ACC_RD_CMD_ARG 1

#define LPFC_DRB_ACC_WR_CMD_ARG 2

#define LPFC_DRB_ACC_BUF_SIZE 256


#define LPFC_DRB_EQCQ 1

#define LPFC_DRB_MQ   2

#define LPFC_DRB_WQ   3

#define LPFC_DRB_RQ   4


#define LPFC_DRB_MAX  4


#define IDIAG_DRBACC_REGID_INDX 0

#define IDIAG_DRBACC_VALUE_INDX 1

/* control register acc */

#define LPFC_CTL_ACC_ALL 0xffff

#define LPFC_CTL_ACC_RD_CMD_ARG 1

#define LPFC_CTL_ACC_WR_CMD_ARG 2

#define LPFC_CTL_ACC_BUF_SIZE 256


#define LPFC_CTL_PORT_SEM  1

#define LPFC_CTL_PORT_STA  2

#define LPFC_CTL_PORT_CTL  3

#define LPFC_CTL_PORT_ER1  4

#define LPFC_CTL_PORT_ER2  5

#define LPFC_CTL_PDEV_CTL  6


#define LPFC_CTL_MAX  6


#define IDIAG_CTLACC_REGID_INDX 0

#define IDIAG_CTLACC_VALUE_INDX 1

/* mailbox access */

#define LPFC_MBX_DMP_ARG 4


#define LPFC_MBX_ACC_BUF_SIZE 512

#define LPFC_MBX_ACC_LBUF_SZ 128


#define LPFC_MBX_DMP_MBX_WORD 0x00000001

#define LPFC_MBX_DMP_MBX_BYTE 0x00000002

#define LPFC_MBX_DMP_MBX_ALL (LPFC_MBX_DMP_MBX_WORD | LPFC_MBX_DMP_MBX_BYTE)


#define LPFC_BSG_DMP_MBX_RD_MBX 0x00000001

#define LPFC_BSG_DMP_MBX_RD_BUF 0x00000002

#define LPFC_BSG_DMP_MBX_WR_MBX 0x00000004

#define LPFC_BSG_DMP_MBX_WR_BUF 0x00000008

#define LPFC_BSG_DMP_MBX_ALL (LPFC_BSG_DMP_MBX_RD_MBX | \
                              LPFC_BSG_DMP_MBX_RD_BUF | \
                              LPFC_BSG_DMP_MBX_WR_MBX | \
                              LPFC_BSG_DMP_MBX_WR_BUF)


#define LPFC_MBX_DMP_ALL 0xffff

#define LPFC_MBX_ALL_CMD 0xff


#define IDIAG_MBXACC_MBCMD_INDX 0

#define IDIAG_MBXACC_DPMAP_INDX 1

#define IDIAG_MBXACC_DPCNT_INDX 2

#define IDIAG_MBXACC_WDCNT_INDX 3

/* extents access */

#define LPFC_EXT_ACC_CMD_ARG 1

#define LPFC_EXT_ACC_BUF_SIZE 4096


#define LPFC_EXT_ACC_AVAIL 0x1

#define LPFC_EXT_ACC_ALLOC 0x2

#define LPFC_EXT_ACC_DRIVR 0x4

#define LPFC_EXT_ACC_ALL   (LPFC_EXT_ACC_DRIVR | \
                            LPFC_EXT_ACC_AVAIL | \
                            LPFC_EXT_ACC_ALLOC)


#define IDIAG_EXTACC_EXMAP_INDX 0


#define SIZE_U8  sizeof(uint8_t)

#define SIZE_U16 sizeof(uint16_t)

#define SIZE_U32 sizeof(uint32_t)


struct lpfc_debug {
	
char *i_private;
	
char op;

#define LPFC_IDIAG_OP_RD 1

#define LPFC_IDIAG_OP_WR 2
	
char *buffer;
	
int  len;
};


struct lpfc_debugfs_trc {
	
char *fmt;
	
uint32_t data1;
	
uint32_t data2;
	
uint32_t data3;
	
uint32_t seq_cnt;
	
unsigned long jif;
};


struct lpfc_idiag_offset {
	
uint32_t last_rd;
};


#define LPFC_IDIAG_CMD_DATA_SIZE 8

struct lpfc_idiag_cmd {
	
uint32_t opcode;

#define LPFC_IDIAG_CMD_PCICFG_RD 0x00000001

#define LPFC_IDIAG_CMD_PCICFG_WR 0x00000002

#define LPFC_IDIAG_CMD_PCICFG_ST 0x00000003

#define LPFC_IDIAG_CMD_PCICFG_CL 0x00000004


#define LPFC_IDIAG_CMD_BARACC_RD 0x00000008

#define LPFC_IDIAG_CMD_BARACC_WR 0x00000009

#define LPFC_IDIAG_CMD_BARACC_ST 0x0000000a

#define LPFC_IDIAG_CMD_BARACC_CL 0x0000000b


#define LPFC_IDIAG_CMD_QUEACC_RD 0x00000011

#define LPFC_IDIAG_CMD_QUEACC_WR 0x00000012

#define LPFC_IDIAG_CMD_QUEACC_ST 0x00000013

#define LPFC_IDIAG_CMD_QUEACC_CL 0x00000014


#define LPFC_IDIAG_CMD_DRBACC_RD 0x00000021

#define LPFC_IDIAG_CMD_DRBACC_WR 0x00000022

#define LPFC_IDIAG_CMD_DRBACC_ST 0x00000023

#define LPFC_IDIAG_CMD_DRBACC_CL 0x00000024


#define LPFC_IDIAG_CMD_CTLACC_RD 0x00000031

#define LPFC_IDIAG_CMD_CTLACC_WR 0x00000032

#define LPFC_IDIAG_CMD_CTLACC_ST 0x00000033

#define LPFC_IDIAG_CMD_CTLACC_CL 0x00000034


#define LPFC_IDIAG_CMD_MBXACC_DP 0x00000041

#define LPFC_IDIAG_BSG_MBXACC_DP 0x00000042


#define LPFC_IDIAG_CMD_EXTACC_RD 0x00000051

	
uint32_t data[LPFC_IDIAG_CMD_DATA_SIZE];
};


struct lpfc_idiag {
	
uint32_t active;
	
struct lpfc_idiag_cmd cmd;
	
struct lpfc_idiag_offset offset;
	
void *ptr_private;
};
#endif

/* Mask for discovery_trace */

#define LPFC_DISC_TRC_ELS_CMD		0x1	
/* Trace ELS commands */

#define LPFC_DISC_TRC_ELS_RSP		0x2	
/* Trace ELS response */

#define LPFC_DISC_TRC_ELS_UNSOL		0x4	
/* Trace ELS rcv'ed   */

#define LPFC_DISC_TRC_ELS_ALL		0x7	
/* Trace ELS */

#define LPFC_DISC_TRC_MBOX_VPORT	0x8	
/* Trace vport MBOXs */

#define LPFC_DISC_TRC_MBOX		0x10	
/* Trace other MBOXs */

#define LPFC_DISC_TRC_MBOX_ALL		0x18	
/* Trace all MBOXs */

#define LPFC_DISC_TRC_CT		0x20	
/* Trace disc CT requests */

#define LPFC_DISC_TRC_DSM		0x40    
/* Trace DSM events */

#define LPFC_DISC_TRC_RPORT		0x80    
/* Trace rport events */

#define LPFC_DISC_TRC_NODE		0x100   
/* Trace ndlp state changes */


#define LPFC_DISC_TRC_DISCOVERY		0xef    
/* common mask for general
                                                 * discovery */
#endif /* H_LPFC_DEBUG_FS */


/*
 * Driver debug utility routines outside of debugfs. The debug utility
 * routines implemented here is intended to be used in the instrumented
 * debug driver for debugging host or port issues.
 */

/**
 * lpfc_debug_dump_qe - dump an specific entry from a queue
 * @q: Pointer to the queue descriptor.
 * @idx: Index to the entry on the queue.
 *
 * This function dumps an entry indexed by @idx from a queue specified by the
 * queue descriptor @q.
 **/

static inline void lpfc_debug_dump_qe(struct lpfc_queue *q, uint32_t idx) { char line_buf[LPFC_LBUF_SZ]; int i, esize, qe_word_cnt, len; uint32_t *pword; /* sanity checks */ if (!q) return; if (idx >= q->entry_count) return; esize = q->entry_size; qe_word_cnt = esize / sizeof(uint32_t); pword = q->qe[idx].address; len = 0; len += snprintf(line_buf+len, LPFC_LBUF_SZ-len, "QE[%04d]: ", idx); if (qe_word_cnt > 8) printk(KERN_ERR "%s\n", line_buf); for (i = 0; i < qe_word_cnt; i++) { if (!(i % 8)) { if (i != 0) printk(KERN_ERR "%s\n", line_buf); if (qe_word_cnt > 8) { len = 0; memset(line_buf, 0, LPFC_LBUF_SZ); len += snprintf(line_buf+len, LPFC_LBUF_SZ-len, "%03d: ", i); } } len += snprintf(line_buf+len, LPFC_LBUF_SZ-len, "%08x ", ((uint32_t)*pword) & 0xffffffff); pword++; } if (qe_word_cnt <= 8 || (i - 1) % 8) printk(KERN_ERR "%s\n", line_buf); }

Contributors

PersonTokensPropCommitsCommitProp
james smartjames smart239100.00%1100.00%
Total239100.00%1100.00%

/** * lpfc_debug_dump_q - dump all entries from an specific queue * @q: Pointer to the queue descriptor. * * This function dumps all entries from a queue specified by the queue * descriptor @q. **/
static inline void lpfc_debug_dump_q(struct lpfc_queue *q) { int idx, entry_count; /* sanity check */ if (!q) return; dev_printk(KERN_ERR, &(((q->phba))->pcidev)->dev, "%d: [qid:%d, type:%d, subtype:%d, " "qe_size:%d, qe_count:%d, " "host_index:%d, port_index:%d]\n", (q->phba)->brd_no, q->queue_id, q->type, q->subtype, q->entry_size, q->entry_count, q->host_index, q->hba_index); entry_count = q->entry_count; for (idx = 0; idx < entry_count; idx++) lpfc_debug_dump_qe(q, idx); printk(KERN_ERR "\n"); }

Contributors

PersonTokensPropCommitsCommitProp
james smartjames smart116100.00%1100.00%
Total116100.00%1100.00%

/** * lpfc_debug_dump_fcp_wq - dump all entries from a fcp work queue * @phba: Pointer to HBA context object. * @fcp_wqidx: Index to a FCP work queue. * * This function dumps all entries from a FCP work queue specified by the * @fcp_wqidx. **/
static inline void lpfc_debug_dump_fcp_wq(struct lpfc_hba *phba, int fcp_wqidx) { /* sanity check */ if (fcp_wqidx >= phba->cfg_fcp_io_channel) return; printk(KERN_ERR "FCP WQ: WQ[Idx:%d|Qid:%d]\n", fcp_wqidx, phba->sli4_hba.fcp_wq[fcp_wqidx]->queue_id); lpfc_debug_dump_q(phba->sli4_hba.fcp_wq[fcp_wqidx]); }

Contributors

PersonTokensPropCommitsCommitProp
james smartjames smart56100.00%2100.00%
Total56100.00%2100.00%

/** * lpfc_debug_dump_fcp_cq - dump all entries from a fcp work queue's cmpl queue * @phba: Pointer to HBA context object. * @fcp_wqidx: Index to a FCP work queue. * * This function dumps all entries from a FCP complete queue which is * associated to the FCP work queue specified by the @fcp_wqidx. **/
static inline void lpfc_debug_dump_fcp_cq(struct lpfc_hba *phba, int fcp_wqidx) { int fcp_cqidx, fcp_cqid; /* sanity check */ if (fcp_wqidx >= phba->cfg_fcp_io_channel) return; fcp_cqid = phba->sli4_hba.fcp_wq[fcp_wqidx]->assoc_qid; for (fcp_cqidx = 0; fcp_cqidx < phba->cfg_fcp_io_channel; fcp_cqidx++) if (phba->sli4_hba.fcp_cq[fcp_cqidx]->queue_id == fcp_cqid) break; if (phba->intr_type == MSIX) { if (fcp_cqidx >= phba->cfg_fcp_io_channel) return; } else { if (fcp_cqidx > 0) return; } printk(KERN_ERR "FCP CQ: WQ[Idx:%d|Qid%d]->CQ[Idx%d|Qid%d]:\n", fcp_wqidx, phba->sli4_hba.fcp_wq[fcp_wqidx]->queue_id, fcp_cqidx, fcp_cqid); lpfc_debug_dump_q(phba->sli4_hba.fcp_cq[fcp_cqidx]); }

Contributors

PersonTokensPropCommitsCommitProp
james smartjames smart138100.00%3100.00%
Total138100.00%3100.00%

/** * lpfc_debug_dump_hba_eq - dump all entries from a fcp work queue's evt queue * @phba: Pointer to HBA context object. * @fcp_wqidx: Index to a FCP work queue. * * This function dumps all entries from a FCP event queue which is * associated to the FCP work queue specified by the @fcp_wqidx. **/
static inline void lpfc_debug_dump_hba_eq(struct lpfc_hba *phba, int fcp_wqidx) { struct lpfc_queue *qdesc; int fcp_eqidx, fcp_eqid; int fcp_cqidx, fcp_cqid; /* sanity check */ if (fcp_wqidx >= phba->cfg_fcp_io_channel) return; fcp_cqid = phba->sli4_hba.fcp_wq[fcp_wqidx]->assoc_qid; for (fcp_cqidx = 0; fcp_cqidx < phba->cfg_fcp_io_channel; fcp_cqidx++) if (phba->sli4_hba.fcp_cq[fcp_cqidx]->queue_id == fcp_cqid) break; if (phba->intr_type == MSIX) { if (fcp_cqidx >= phba->cfg_fcp_io_channel) return; } else { if (fcp_cqidx > 0) return; } fcp_eqidx = fcp_cqidx; fcp_eqid = phba->sli4_hba.hba_eq[fcp_eqidx]->queue_id; qdesc = phba->sli4_hba.hba_eq[fcp_eqidx]; printk(KERN_ERR "FCP EQ: WQ[Idx:%d|Qid:%d]->CQ[Idx:%d|Qid:%d]->" "EQ[Idx:%d|Qid:%d]\n", fcp_wqidx, phba->sli4_hba.fcp_wq[fcp_wqidx]->queue_id, fcp_cqidx, fcp_cqid, fcp_eqidx, fcp_eqid); lpfc_debug_dump_q(qdesc); }

Contributors

PersonTokensPropCommitsCommitProp
james smartjames smart174100.00%3100.00%
Total174100.00%3100.00%

/** * lpfc_debug_dump_els_wq - dump all entries from the els work queue * @phba: Pointer to HBA context object. * * This function dumps all entries from the ELS work queue. **/
static inline void lpfc_debug_dump_els_wq(struct lpfc_hba *phba) { printk(KERN_ERR "ELS WQ: WQ[Qid:%d]:\n", phba->sli4_hba.els_wq->queue_id); lpfc_debug_dump_q(phba->sli4_hba.els_wq); }

Contributors

PersonTokensPropCommitsCommitProp
james smartjames smart35100.00%1100.00%
Total35100.00%1100.00%

/** * lpfc_debug_dump_mbx_wq - dump all entries from the mbox work queue * @phba: Pointer to HBA context object. * * This function dumps all entries from the MBOX work queue. **/
static inline void lpfc_debug_dump_mbx_wq(struct lpfc_hba *phba) { printk(KERN_ERR "MBX WQ: WQ[Qid:%d]\n", phba->sli4_hba.mbx_wq->queue_id); lpfc_debug_dump_q(phba->sli4_hba.mbx_wq); }

Contributors

PersonTokensPropCommitsCommitProp
james smartjames smart35100.00%1100.00%
Total35100.00%1100.00%

/** * lpfc_debug_dump_dat_rq - dump all entries from the receive data queue * @phba: Pointer to HBA context object. * * This function dumps all entries from the receive data queue. **/
static inline void lpfc_debug_dump_dat_rq(struct lpfc_hba *phba) { printk(KERN_ERR "DAT RQ: RQ[Qid:%d]\n", phba->sli4_hba.dat_rq->queue_id); lpfc_debug_dump_q(phba->sli4_hba.dat_rq); }

Contributors

PersonTokensPropCommitsCommitProp
james smartjames smart35100.00%1100.00%
Total35100.00%1100.00%

/** * lpfc_debug_dump_hdr_rq - dump all entries from the receive header queue * @phba: Pointer to HBA context object. * * This function dumps all entries from the receive header queue. **/
static inline void lpfc_debug_dump_hdr_rq(struct lpfc_hba *phba) { printk(KERN_ERR "HDR RQ: RQ[Qid:%d]\n", phba->sli4_hba.hdr_rq->queue_id); lpfc_debug_dump_q(phba->sli4_hba.hdr_rq); }

Contributors

PersonTokensPropCommitsCommitProp
james smartjames smart35100.00%1100.00%
Total35100.00%1100.00%

/** * lpfc_debug_dump_els_cq - dump all entries from the els complete queue * @phba: Pointer to HBA context object. * * This function dumps all entries from the els complete queue. **/
static inline void lpfc_debug_dump_els_cq(struct lpfc_hba *phba) { printk(KERN_ERR "ELS CQ: WQ[Qid:%d]->CQ[Qid:%d]\n", phba->sli4_hba.els_wq->queue_id, phba->sli4_hba.els_cq->queue_id); lpfc_debug_dump_q(phba->sli4_hba.els_cq); }

Contributors

PersonTokensPropCommitsCommitProp
james smartjames smart43100.00%1100.00%
Total43100.00%1100.00%

/** * lpfc_debug_dump_mbx_cq - dump all entries from the mbox complete queue * @phba: Pointer to HBA context object. * * This function dumps all entries from the mbox complete queue. **/
static inline void lpfc_debug_dump_mbx_cq(struct lpfc_hba *phba) { printk(KERN_ERR "MBX CQ: WQ[Qid:%d]->CQ[Qid:%d]\n", phba->sli4_hba.mbx_wq->queue_id, phba->sli4_hba.mbx_cq->queue_id); lpfc_debug_dump_q(phba->sli4_hba.mbx_cq); }

Contributors

PersonTokensPropCommitsCommitProp
james smartjames smart43100.00%1100.00%
Total43100.00%1100.00%

/** * lpfc_debug_dump_wq_by_id - dump all entries from a work queue by queue id * @phba: Pointer to HBA context object. * @qid: Work queue identifier. * * This function dumps all entries from a work queue identified by the queue * identifier. **/
static inline void lpfc_debug_dump_wq_by_id(struct lpfc_hba *phba, int qid) { int wq_idx; for (wq_idx = 0; wq_idx < phba->cfg_fcp_io_channel; wq_idx++) if (phba->sli4_hba.fcp_wq[wq_idx]->queue_id == qid) break; if (wq_idx < phba->cfg_fcp_io_channel) { printk(KERN_ERR "FCP WQ[Idx:%d|Qid:%d]\n", wq_idx, qid); lpfc_debug_dump_q(phba->sli4_hba.fcp_wq[wq_idx]); return; } if (phba->sli4_hba.els_wq->queue_id == qid) { printk(KERN_ERR "ELS WQ[Qid:%d]\n", qid); lpfc_debug_dump_q(phba->sli4_hba.els_wq); } }

Contributors

PersonTokensPropCommitsCommitProp
james smartjames smart113100.00%2100.00%
Total113100.00%2100.00%

/** * lpfc_debug_dump_mq_by_id - dump all entries from a mbox queue by queue id * @phba: Pointer to HBA context object. * @qid: Mbox work queue identifier. * * This function dumps all entries from a mbox work queue identified by the * queue identifier. **/
static inline void lpfc_debug_dump_mq_by_id(struct lpfc_hba *phba, int qid) { if (phba->sli4_hba.mbx_wq->queue_id == qid) { printk(KERN_ERR "MBX WQ[Qid:%d]\n", qid); lpfc_debug_dump_q(phba->sli4_hba.mbx_wq); } }

Contributors

PersonTokensPropCommitsCommitProp
james smartjames smart46100.00%1100.00%
Total46100.00%1100.00%

/** * lpfc_debug_dump_rq_by_id - dump all entries from a receive queue by queue id * @phba: Pointer to HBA context object. * @qid: Receive queue identifier. * * This function dumps all entries from a receive queue identified by the * queue identifier. **/
static inline void lpfc_debug_dump_rq_by_id(struct lpfc_hba *phba, int qid) { if (phba->sli4_hba.hdr_rq->queue_id == qid) { printk(KERN_ERR "HDR RQ[Qid:%d]\n", qid); lpfc_debug_dump_q(phba->sli4_hba.hdr_rq); return; } if (phba->sli4_hba.dat_rq->queue_id == qid) { printk(KERN_ERR "DAT RQ[Qid:%d]\n", qid); lpfc_debug_dump_q(phba->sli4_hba.dat_rq); } }

Contributors

PersonTokensPropCommitsCommitProp
james smartjames smart78100.00%1100.00%
Total78100.00%1100.00%

/** * lpfc_debug_dump_cq_by_id - dump all entries from a cmpl queue by queue id * @phba: Pointer to HBA context object. * @qid: Complete queue identifier. * * This function dumps all entries from a complete queue identified by the * queue identifier. **/
static inline void lpfc_debug_dump_cq_by_id(struct lpfc_hba *phba, int qid) { int cq_idx = 0; do { if (phba->sli4_hba.fcp_cq[cq_idx]->queue_id == qid) break; } while (++cq_idx < phba->cfg_fcp_io_channel); if (cq_idx < phba->cfg_fcp_io_channel) { printk(KERN_ERR "FCP CQ[Idx:%d|Qid:%d]\n", cq_idx, qid); lpfc_debug_dump_q(phba->sli4_hba.fcp_cq[cq_idx]); return; } if (phba->sli4_hba.els_cq->queue_id == qid) { printk(KERN_ERR "ELS CQ[Qid:%d]\n", qid); lpfc_debug_dump_q(phba->sli4_hba.els_cq); return; } if (phba->sli4_hba.mbx_cq->queue_id == qid) { printk(KERN_ERR "MBX CQ[Qid:%d]\n", qid); lpfc_debug_dump_q(phba->sli4_hba.mbx_cq); } }

Contributors

PersonTokensPropCommitsCommitProp
james smartjames smart145100.00%2100.00%
Total145100.00%2100.00%

/** * lpfc_debug_dump_eq_by_id - dump all entries from an event queue by queue id * @phba: Pointer to HBA context object. * @qid: Complete queue identifier. * * This function dumps all entries from an event queue identified by the * queue identifier. **/
static inline void lpfc_debug_dump_eq_by_id(struct lpfc_hba *phba, int qid) { int eq_idx; for (eq_idx = 0; eq_idx < phba->cfg_fcp_io_channel; eq_idx++) { if (phba->sli4_hba.hba_eq[eq_idx]->queue_id == qid) break; } if (eq_idx < phba->cfg_fcp_io_channel) { printk(KERN_ERR "FCP EQ[Idx:%d|Qid:%d]\n", eq_idx, qid); lpfc_debug_dump_q(phba->sli4_hba.hba_eq[eq_idx]); return; } }

Contributors

PersonTokensPropCommitsCommitProp
james smartjames smart84100.00%2100.00%
Total84100.00%2100.00%

void lpfc_debug_dump_all_queues(struct lpfc_hba *);

Overall Contributors

PersonTokensPropCommitsCommitProp
james smartjames smart2141100.00%10100.00%
Total2141100.00%10100.00%
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.
{% endraw %}