linux/drivers/scsi/lpfc/lpfc_sli.h

/*******************************************************************
 * This file is part of the Emulex Linux Device Driver for         *
 * Fibre Channel Host Bus Adapters.                                *
 * Copyright (C) 2017-2024 Broadcom. All Rights Reserved. The term *
 * “Broadcom” refers to Broadcom Inc. and/or its subsidiaries.     *
 * Copyright (C) 2004-2016 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.                                     *
 *******************************************************************/

#if defined(CONFIG_DEBUG_FS) && !defined(CONFIG_SCSI_LPFC_DEBUG_FS)
#define CONFIG_SCSI_LPFC_DEBUG_FS
#endif

/* forward declaration for LPFC_IOCB_t's use */
struct lpfc_hba;
struct lpfc_vport;

/* Define the context types that SLI handles for abort and sums. */
lpfc_ctx_cmd;

/* Enumeration to describe the thread lock context. */
enum lpfc_mbox_ctx {};

lpfc_vmid_tag;

struct lpfc_cq_event {};

/* This structure is used to handle IOCB requests / responses */
struct lpfc_iocbq {};

#define SLI_IOCB_RET_IOCB

#define IOCB_SUCCESS
#define IOCB_BUSY
#define IOCB_ERROR
#define IOCB_TIMEDOUT
#define IOCB_ABORTED
#define IOCB_ABORTING
#define IOCB_NORESOURCE

#define SLI_WQE_RET_WQE

#define WQE_SUCCESS
#define WQE_BUSY
#define WQE_ERROR
#define WQE_TIMEDOUT
#define WQE_ABORTED
#define WQE_ABORTING
#define WQE_NORESOURCE

#define LPFC_MBX_WAKE
#define LPFC_MBX_IMED_UNREG

LPFC_MBOXQ_t;

#define MBX_POLL
#define MBX_NOWAIT

#define LPFC_MAX_RING_MASK
#define LPFC_SLI3_MAX_RING

struct lpfc_sli_ring;

struct lpfc_sli_ring_mask {};


/* Structure used to hold SLI statistical counters and info */
struct lpfc_sli_ring_stat {};

struct lpfc_sli3_ring {};

struct lpfc_sli4_ring {};


/* Structure used to hold SLI ring information */
struct lpfc_sli_ring {};

/* Structure used for configuring rings to a specific profile or rctl / type */
struct lpfc_hbq_init {} ;

/* Structure used to hold SLI statistical counters and info */
struct lpfc_sli_stat {};

/* Structure to store link status values when port stats are reset */
struct lpfc_lnk_stat {};

/* Structure used to hold SLI information */
struct lpfc_sli {};

/* Timeout for normal outstanding mbox command (Seconds) */
#define LPFC_MBOX_TMO
/* Timeout for non-flash-based outstanding sli_config mbox command (Seconds) */
#define LPFC_MBOX_SLI4_CONFIG_TMO
/* Timeout for flash-based outstanding sli_config mbox command (Seconds) */
#define LPFC_MBOX_SLI4_CONFIG_EXTENDED_TMO
/* Timeout for other flash-based outstanding mbox command (Seconds) */
#define LPFC_MBOX_TMO_FLASH_CMD

struct lpfc_io_buf {};