root/drivers/scsi/bfa/bfa_plog.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


   1 /* SPDX-License-Identifier: GPL-2.0-only */
   2 /*
   3  * Copyright (c) 2005-2014 Brocade Communications Systems, Inc.
   4  * Copyright (c) 2014- QLogic Corporation.
   5  * All rights reserved
   6  * www.qlogic.com
   7  *
   8  * Linux driver for QLogic BR-series Fibre Channel Host Bus Adapter.
   9  */
  10 #ifndef __BFA_PORTLOG_H__
  11 #define __BFA_PORTLOG_H__
  12 
  13 #include "bfa_fc.h"
  14 #include "bfa_defs.h"
  15 
  16 #define BFA_PL_NLOG_ENTS 256
  17 #define BFA_PL_LOG_REC_INCR(_x) ((_x)++, (_x) %= BFA_PL_NLOG_ENTS)
  18 
  19 #define BFA_PL_STRING_LOG_SZ   32   /* number of chars in string log */
  20 #define BFA_PL_INT_LOG_SZ      8    /* number of integers in the integer log */
  21 
  22 enum bfa_plog_log_type {
  23         BFA_PL_LOG_TYPE_INVALID = 0,
  24         BFA_PL_LOG_TYPE_INT     = 1,
  25         BFA_PL_LOG_TYPE_STRING  = 2,
  26 };
  27 
  28 /*
  29  * the (fixed size) record format for each entry in the portlog
  30  */
  31 struct bfa_plog_rec_s {
  32         u64     tv;     /* timestamp */
  33         u8       port;  /* Source port that logged this entry */
  34         u8       mid;   /* module id */
  35         u8       eid;   /* indicates Rx, Tx, IOCTL, etc.  bfa_plog_eid */
  36         u8       log_type; /* string/integer log, bfa_plog_log_type_t */
  37         u8       log_num_ints;
  38         /*
  39          * interpreted only if log_type is INT_LOG. indicates number of
  40          * integers in the int_log[] (0-PL_INT_LOG_SZ).
  41          */
  42         u8       rsvd;
  43         u16     misc;   /* can be used to indicate fc frame length */
  44         union {
  45                 char        string_log[BFA_PL_STRING_LOG_SZ];
  46                 u32     int_log[BFA_PL_INT_LOG_SZ];
  47         } log_entry;
  48 
  49 };
  50 
  51 /*
  52  * the following #defines will be used by the logging entities to indicate
  53  * their module id. BFAL will convert the integer value to string format
  54  *
  55 * process to be used while changing the following #defines:
  56  *  - Always add new entries at the end
  57  *  - define corresponding string in BFAL
  58  *  - Do not remove any entry or rearrange the order.
  59  */
  60 enum bfa_plog_mid {
  61         BFA_PL_MID_INVALID      = 0,
  62         BFA_PL_MID_DEBUG        = 1,
  63         BFA_PL_MID_DRVR         = 2,
  64         BFA_PL_MID_HAL          = 3,
  65         BFA_PL_MID_HAL_FCXP     = 4,
  66         BFA_PL_MID_HAL_UF       = 5,
  67         BFA_PL_MID_FCS          = 6,
  68         BFA_PL_MID_LPS          = 7,
  69         BFA_PL_MID_MAX          = 8
  70 };
  71 
  72 #define BFA_PL_MID_STRLEN    8
  73 struct bfa_plog_mid_strings_s {
  74         char        m_str[BFA_PL_MID_STRLEN];
  75 };
  76 
  77 /*
  78  * the following #defines will be used by the logging entities to indicate
  79  * their event type. BFAL will convert the integer value to string format
  80  *
  81 * process to be used while changing the following #defines:
  82  *  - Always add new entries at the end
  83  *  - define corresponding string in BFAL
  84  *  - Do not remove any entry or rearrange the order.
  85  */
  86 enum bfa_plog_eid {
  87         BFA_PL_EID_INVALID              = 0,
  88         BFA_PL_EID_IOC_DISABLE          = 1,
  89         BFA_PL_EID_IOC_ENABLE           = 2,
  90         BFA_PL_EID_PORT_DISABLE         = 3,
  91         BFA_PL_EID_PORT_ENABLE          = 4,
  92         BFA_PL_EID_PORT_ST_CHANGE       = 5,
  93         BFA_PL_EID_TX                   = 6,
  94         BFA_PL_EID_TX_ACK1              = 7,
  95         BFA_PL_EID_TX_RJT               = 8,
  96         BFA_PL_EID_TX_BSY               = 9,
  97         BFA_PL_EID_RX                   = 10,
  98         BFA_PL_EID_RX_ACK1              = 11,
  99         BFA_PL_EID_RX_RJT               = 12,
 100         BFA_PL_EID_RX_BSY               = 13,
 101         BFA_PL_EID_CT_IN                = 14,
 102         BFA_PL_EID_CT_OUT               = 15,
 103         BFA_PL_EID_DRIVER_START         = 16,
 104         BFA_PL_EID_RSCN                 = 17,
 105         BFA_PL_EID_DEBUG                = 18,
 106         BFA_PL_EID_MISC                 = 19,
 107         BFA_PL_EID_FIP_FCF_DISC         = 20,
 108         BFA_PL_EID_FIP_FCF_CVL          = 21,
 109         BFA_PL_EID_LOGIN                = 22,
 110         BFA_PL_EID_LOGO                 = 23,
 111         BFA_PL_EID_TRUNK_SCN            = 24,
 112         BFA_PL_EID_MAX
 113 };
 114 
 115 #define BFA_PL_ENAME_STRLEN     8
 116 struct bfa_plog_eid_strings_s {
 117         char        e_str[BFA_PL_ENAME_STRLEN];
 118 };
 119 
 120 #define BFA_PL_SIG_LEN  8
 121 #define BFA_PL_SIG_STR  "12pl123"
 122 
 123 /*
 124  * per port circular log buffer
 125  */
 126 struct bfa_plog_s {
 127         char        plog_sig[BFA_PL_SIG_LEN];   /* Start signature */
 128         u8       plog_enabled;
 129         u8       rsvd[7];
 130         u32     ticks;
 131         u16     head;
 132         u16     tail;
 133         struct bfa_plog_rec_s  plog_recs[BFA_PL_NLOG_ENTS];
 134 };
 135 
 136 void bfa_plog_init(struct bfa_plog_s *plog);
 137 void bfa_plog_str(struct bfa_plog_s *plog, enum bfa_plog_mid mid,
 138                         enum bfa_plog_eid event, u16 misc, char *log_str);
 139 void bfa_plog_intarr(struct bfa_plog_s *plog, enum bfa_plog_mid mid,
 140                         enum bfa_plog_eid event, u16 misc,
 141                         u32 *intarr, u32 num_ints);
 142 void bfa_plog_fchdr(struct bfa_plog_s *plog, enum bfa_plog_mid mid,
 143                 enum bfa_plog_eid event, u16 misc, struct fchs_s *fchdr);
 144 void bfa_plog_fchdr_and_pl(struct bfa_plog_s *plog, enum bfa_plog_mid mid,
 145                         enum bfa_plog_eid event, u16 misc,
 146                         struct fchs_s *fchdr, u32 pld_w0);
 147 
 148 #endif /* __BFA_PORTLOG_H__ */

/* [<][>][^][v][top][bottom][index][help] */