linux/drivers/scsi/bfa/bfa_plog.h
Thomas Gleixner 52fa7bf9ea treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 292
Based on 1 normalized pattern(s):

  this program is free software you can redistribute it and or modify
  it under the terms of the gnu general public license gpl version 2
  as published by the free software foundation this program is
  distributed in the hope that it will be useful but without any
  warranty without even the implied warranty of merchantability or
  fitness for a particular purpose see the gnu general public license
  for more details

extracted by the scancode license scanner the SPDX license identifier

  GPL-2.0-only

has been chosen to replace the boilerplate/reference in 66 file(s).

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Reviewed-by: Allison Randal <allison@lohutok.net>
Reviewed-by: Alexios Zavras <alexios.zavras@intel.com>
Cc: linux-spdx@vger.kernel.org
Link: https://lkml.kernel.org/r/20190529141901.606369721@linutronix.de
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2019-06-05 17:36:38 +02:00

149 lines
4.1 KiB
C

/* SPDX-License-Identifier: GPL-2.0-only */
/*
* Copyright (c) 2005-2014 Brocade Communications Systems, Inc.
* Copyright (c) 2014- QLogic Corporation.
* All rights reserved
* www.qlogic.com
*
* Linux driver for QLogic BR-series Fibre Channel Host Bus Adapter.
*/
#ifndef __BFA_PORTLOG_H__
#define __BFA_PORTLOG_H__
#include "bfa_fc.h"
#include "bfa_defs.h"
#define BFA_PL_NLOG_ENTS 256
#define BFA_PL_LOG_REC_INCR(_x) ((_x)++, (_x) %= BFA_PL_NLOG_ENTS)
#define BFA_PL_STRING_LOG_SZ 32 /* number of chars in string log */
#define BFA_PL_INT_LOG_SZ 8 /* number of integers in the integer log */
enum bfa_plog_log_type {
BFA_PL_LOG_TYPE_INVALID = 0,
BFA_PL_LOG_TYPE_INT = 1,
BFA_PL_LOG_TYPE_STRING = 2,
};
/*
* the (fixed size) record format for each entry in the portlog
*/
struct bfa_plog_rec_s {
u64 tv; /* timestamp */
u8 port; /* Source port that logged this entry */
u8 mid; /* module id */
u8 eid; /* indicates Rx, Tx, IOCTL, etc. bfa_plog_eid */
u8 log_type; /* string/integer log, bfa_plog_log_type_t */
u8 log_num_ints;
/*
* interpreted only if log_type is INT_LOG. indicates number of
* integers in the int_log[] (0-PL_INT_LOG_SZ).
*/
u8 rsvd;
u16 misc; /* can be used to indicate fc frame length */
union {
char string_log[BFA_PL_STRING_LOG_SZ];
u32 int_log[BFA_PL_INT_LOG_SZ];
} log_entry;
};
/*
* the following #defines will be used by the logging entities to indicate
* their module id. BFAL will convert the integer value to string format
*
* process to be used while changing the following #defines:
* - Always add new entries at the end
* - define corresponding string in BFAL
* - Do not remove any entry or rearrange the order.
*/
enum bfa_plog_mid {
BFA_PL_MID_INVALID = 0,
BFA_PL_MID_DEBUG = 1,
BFA_PL_MID_DRVR = 2,
BFA_PL_MID_HAL = 3,
BFA_PL_MID_HAL_FCXP = 4,
BFA_PL_MID_HAL_UF = 5,
BFA_PL_MID_FCS = 6,
BFA_PL_MID_LPS = 7,
BFA_PL_MID_MAX = 8
};
#define BFA_PL_MID_STRLEN 8
struct bfa_plog_mid_strings_s {
char m_str[BFA_PL_MID_STRLEN];
};
/*
* the following #defines will be used by the logging entities to indicate
* their event type. BFAL will convert the integer value to string format
*
* process to be used while changing the following #defines:
* - Always add new entries at the end
* - define corresponding string in BFAL
* - Do not remove any entry or rearrange the order.
*/
enum bfa_plog_eid {
BFA_PL_EID_INVALID = 0,
BFA_PL_EID_IOC_DISABLE = 1,
BFA_PL_EID_IOC_ENABLE = 2,
BFA_PL_EID_PORT_DISABLE = 3,
BFA_PL_EID_PORT_ENABLE = 4,
BFA_PL_EID_PORT_ST_CHANGE = 5,
BFA_PL_EID_TX = 6,
BFA_PL_EID_TX_ACK1 = 7,
BFA_PL_EID_TX_RJT = 8,
BFA_PL_EID_TX_BSY = 9,
BFA_PL_EID_RX = 10,
BFA_PL_EID_RX_ACK1 = 11,
BFA_PL_EID_RX_RJT = 12,
BFA_PL_EID_RX_BSY = 13,
BFA_PL_EID_CT_IN = 14,
BFA_PL_EID_CT_OUT = 15,
BFA_PL_EID_DRIVER_START = 16,
BFA_PL_EID_RSCN = 17,
BFA_PL_EID_DEBUG = 18,
BFA_PL_EID_MISC = 19,
BFA_PL_EID_FIP_FCF_DISC = 20,
BFA_PL_EID_FIP_FCF_CVL = 21,
BFA_PL_EID_LOGIN = 22,
BFA_PL_EID_LOGO = 23,
BFA_PL_EID_TRUNK_SCN = 24,
BFA_PL_EID_MAX
};
#define BFA_PL_ENAME_STRLEN 8
struct bfa_plog_eid_strings_s {
char e_str[BFA_PL_ENAME_STRLEN];
};
#define BFA_PL_SIG_LEN 8
#define BFA_PL_SIG_STR "12pl123"
/*
* per port circular log buffer
*/
struct bfa_plog_s {
char plog_sig[BFA_PL_SIG_LEN]; /* Start signature */
u8 plog_enabled;
u8 rsvd[7];
u32 ticks;
u16 head;
u16 tail;
struct bfa_plog_rec_s plog_recs[BFA_PL_NLOG_ENTS];
};
void bfa_plog_init(struct bfa_plog_s *plog);
void bfa_plog_str(struct bfa_plog_s *plog, enum bfa_plog_mid mid,
enum bfa_plog_eid event, u16 misc, char *log_str);
void bfa_plog_intarr(struct bfa_plog_s *plog, enum bfa_plog_mid mid,
enum bfa_plog_eid event, u16 misc,
u32 *intarr, u32 num_ints);
void bfa_plog_fchdr(struct bfa_plog_s *plog, enum bfa_plog_mid mid,
enum bfa_plog_eid event, u16 misc, struct fchs_s *fchdr);
void bfa_plog_fchdr_and_pl(struct bfa_plog_s *plog, enum bfa_plog_mid mid,
enum bfa_plog_eid event, u16 misc,
struct fchs_s *fchdr, u32 pld_w0);
#endif /* __BFA_PORTLOG_H__ */