mirror of
https://github.com/torvalds/linux.git
synced 2026-03-08 01:24:47 +01:00
Support logging encryption events in both point-to-point and fabric topologies. A new LOG_ENCRYPTION flag is defined for reporting encryption related events for HBAs that support the FEDIF feature. Encryption information is stored in each NDLP object, which is determined during the discovery stage after PLOGI completes. For reporting encryption information to upper layers, the .get_fc_rport_enc_info routine is implemented in lpfc_get_enc_info(). This allows encryption status to be reported through fc_remote_ports sysfs. Debugfs is also updated to report encryption information for all NDLP objects. Signed-off-by: Sarah Catania <sarah.catania@broadcom.com> Signed-off-by: Justin Tee <justin.tee@broadcom.com> Link: https://patch.msgid.link/20251211001659.138635-3-justintee8345@gmail.com Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
100 lines
4.8 KiB
C
100 lines
4.8 KiB
C
/*******************************************************************
|
|
* This file is part of the Emulex Linux Device Driver for *
|
|
* Fibre Channel Host Bus Adapters. *
|
|
* Copyright (C) 2017-2025 Broadcom. All Rights Reserved. The term *
|
|
* “Broadcom” refers to Broadcom Inc. and/or its subsidiaries. *
|
|
* Copyright (C) 2004-2009 Emulex. All rights reserved. *
|
|
* EMULEX and SLI are trademarks of Emulex. *
|
|
* www.broadcom.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. *
|
|
*******************************************************************/
|
|
|
|
#define LOG_ELS 0x00000001 /* ELS events */
|
|
#define LOG_DISCOVERY 0x00000002 /* Link discovery events */
|
|
#define LOG_MBOX 0x00000004 /* Mailbox events */
|
|
#define LOG_INIT 0x00000008 /* Initialization events */
|
|
#define LOG_LINK_EVENT 0x00000010 /* Link events */
|
|
#define LOG_NODE_VERBOSE 0x00000020 /* Node verbose events */
|
|
#define LOG_FCP 0x00000040 /* FCP traffic history */
|
|
#define LOG_NODE 0x00000080 /* Node table events */
|
|
#define LOG_TEMP 0x00000100 /* Temperature sensor events */
|
|
#define LOG_BG 0x00000200 /* BlockGuard events */
|
|
#define LOG_MISC 0x00000400 /* Miscellaneous events */
|
|
#define LOG_SLI 0x00000800 /* SLI events */
|
|
#define LOG_FCP_ERROR 0x00001000 /* log errors, not underruns */
|
|
#define LOG_LIBDFC 0x00002000 /* Libdfc events */
|
|
#define LOG_VPORT 0x00004000 /* NPIV events */
|
|
#define LOG_LDS_EVENT 0x00008000 /* Link Degrade Signaling events */
|
|
#define LOG_EVENT 0x00010000 /* CT,TEMP,DUMP, logging */
|
|
#define LOG_FIP 0x00020000 /* FIP events */
|
|
#define LOG_FCP_UNDER 0x00040000 /* FCP underruns errors */
|
|
#define LOG_SCSI_CMD 0x00080000 /* ALL SCSI commands */
|
|
#define LOG_NVME 0x00100000 /* NVME general events. */
|
|
#define LOG_NVME_DISC 0x00200000 /* NVME Discovery/Connect events. */
|
|
#define LOG_NVME_ABTS 0x00400000 /* NVME ABTS events. */
|
|
#define LOG_NVME_IOERR 0x00800000 /* NVME IO Error events. */
|
|
#define LOG_RSVD1 0x01000000 /* Reserved */
|
|
#define LOG_RSVD2 0x02000000 /* Reserved */
|
|
#define LOG_CGN_MGMT 0x04000000 /* Congestion Mgmt events */
|
|
#define LOG_ENCRYPTION 0x40000000 /* EDIF Encryption events. */
|
|
#define LOG_TRACE_EVENT 0x80000000 /* Dmp the DBG log on this err */
|
|
#define LOG_ALL_MSG 0x7fffffff /* LOG all messages */
|
|
|
|
void lpfc_dmp_dbg(struct lpfc_hba *phba);
|
|
void lpfc_dbg_print(struct lpfc_hba *phba, const char *fmt, ...);
|
|
|
|
/* generate message by verbose log setting or severity */
|
|
#define lpfc_vlog_msg(vport, level, mask, fmt, arg...) \
|
|
{ if (((mask) & (vport)->cfg_log_verbose) || (level[1] <= '5')) \
|
|
dev_printk(level, &((vport)->phba->pcidev)->dev, "%d:(%d):" \
|
|
fmt, (vport)->phba->brd_no, vport->vpi, ##arg); }
|
|
|
|
#define lpfc_log_msg(phba, level, mask, fmt, arg...) \
|
|
do { \
|
|
{ uint32_t log_verbose = (phba)->pport ? \
|
|
(phba)->pport->cfg_log_verbose : \
|
|
(phba)->cfg_log_verbose; \
|
|
if (((mask) & log_verbose) || (level[1] <= '5')) \
|
|
dev_printk(level, &((phba)->pcidev)->dev, "%d:" \
|
|
fmt, phba->brd_no, ##arg); \
|
|
} \
|
|
} while (0)
|
|
|
|
#define lpfc_printf_vlog(vport, level, mask, fmt, arg...) \
|
|
do { \
|
|
{ if (((mask) & (vport)->cfg_log_verbose) || (level[1] <= '3')) { \
|
|
if ((mask) & LOG_TRACE_EVENT && !(vport)->cfg_log_verbose) \
|
|
lpfc_dmp_dbg((vport)->phba); \
|
|
dev_printk(level, &((vport)->phba->pcidev)->dev, "%d:(%d):" \
|
|
fmt, (vport)->phba->brd_no, vport->vpi, ##arg); \
|
|
} else if (!(vport)->cfg_log_verbose) \
|
|
lpfc_dbg_print((vport)->phba, "%d:(%d):" fmt, \
|
|
(vport)->phba->brd_no, (vport)->vpi, ##arg); \
|
|
} \
|
|
} while (0)
|
|
|
|
#define lpfc_printf_log(phba, level, mask, fmt, arg...) \
|
|
do { \
|
|
{ uint32_t log_verbose = (phba)->pport ? \
|
|
(phba)->pport->cfg_log_verbose : \
|
|
(phba)->cfg_log_verbose; \
|
|
if (((mask) & log_verbose) || (level[1] <= '3')) { \
|
|
if ((mask) & LOG_TRACE_EVENT && !log_verbose) \
|
|
lpfc_dmp_dbg(phba); \
|
|
dev_printk(level, &((phba)->pcidev)->dev, "%d:" \
|
|
fmt, phba->brd_no, ##arg); \
|
|
} else if (!log_verbose)\
|
|
lpfc_dbg_print(phba, "%d:" fmt, phba->brd_no, ##arg); \
|
|
} \
|
|
} while (0)
|