drivers/scsi/qla2xxx/qla_def.h

Source file repositories/reference/linux-study-clean/drivers/scsi/qla2xxx/qla_def.h

File Facts

System
Linux kernel
Corpus path
drivers/scsi/qla2xxx/qla_def.h
Extension
.h
Size
148143 bytes
Lines
5601
Domain
Driver Families
Bucket
drivers/scsi
Inferred role
Driver Families: implementation source
Status
source implementation candidate

Why This File Exists

Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.

Dependency Surface

Detected Declarations

Annotated Snippet

struct name_list_extended {
	struct get_name_list_extended *l;
	dma_addr_t		ldma;
	struct list_head	fcports;
	u32			size;
	u8			sent;
};

struct qla_nvme_fc_rjt {
	struct fcnvme_ls_rjt *c;
	dma_addr_t  cdma;
	u16 size;
};

struct els_reject {
	struct fc_els_ls_rjt *c;
	dma_addr_t  cdma;
	u16 size;
};

/*
 * Timeout timer counts in seconds
 */
#define PORT_RETRY_TIME			1
#define LOOP_DOWN_TIMEOUT		60
#define LOOP_DOWN_TIME			255	/* 240 */
#define	LOOP_DOWN_RESET			(LOOP_DOWN_TIME - 30)

#define DEFAULT_OUTSTANDING_COMMANDS	4096
#define MIN_OUTSTANDING_COMMANDS	128

/* ISP request and response entry counts (37-65535) */
#define REQUEST_ENTRY_CNT_2100		128	/* Number of request entries. */
#define REQUEST_ENTRY_CNT_2200		2048	/* Number of request entries. */
#define REQUEST_ENTRY_CNT_24XX		2048	/* Number of request entries. */
#define REQUEST_ENTRY_CNT_83XX		8192	/* Number of request entries. */
#define RESPONSE_ENTRY_CNT_83XX		4096	/* Number of response entries.*/
#define RESPONSE_ENTRY_CNT_2100		64	/* Number of response entries.*/
#define RESPONSE_ENTRY_CNT_2300		512	/* Number of response entries.*/
#define RESPONSE_ENTRY_CNT_MQ		128	/* Number of response entries.*/
#define ATIO_ENTRY_CNT_24XX		4096	/* Number of ATIO entries. */
#define RESPONSE_ENTRY_CNT_FX00		256     /* Number of response entries.*/
#define FW_DEF_EXCHANGES_CNT 2048
#define FW_MAX_EXCHANGES_CNT (32 * 1024)
#define REDUCE_EXCHANGES_CNT  (8 * 1024)

#define SET_DID_STATUS(stat_var, status) (stat_var = status << 16)

struct req_que;
struct qla_tgt_sess;

struct qla_buf_dsc {
	u16 tag;
#define TAG_FREED 0xffff
	void *buf;
	dma_addr_t buf_dma;
};

/*
 * SCSI Request Block
 */
struct srb_cmd {
	struct scsi_cmnd *cmd;		/* Linux SCSI command pkt */
	uint32_t request_sense_length;
	uint32_t fw_sense_length;
	uint8_t *request_sense_ptr;
	struct crc_context *crc_ctx;
	struct ct6_dsd ct6_ctx;
	struct qla_buf_dsc buf_dsc;
};

/*
 * SRB flag definitions
 */
#define SRB_DMA_VALID			BIT_0	/* Command sent to ISP */
#define SRB_GOT_BUF			BIT_1
#define SRB_FCP_CMND_DMA_VALID		BIT_12	/* DIF: DSD List valid */
#define SRB_CRC_CTX_DMA_VALID		BIT_2	/* DIF: context DMA valid */
#define SRB_CRC_PROT_DMA_VALID		BIT_4	/* DIF: prot DMA valid */
#define SRB_CRC_CTX_DSD_VALID		BIT_5	/* DIF: dsd_list valid */
#define SRB_WAKEUP_ON_COMP		BIT_6
#define SRB_DIF_BUNDL_DMA_VALID		BIT_7   /* DIF: DMA list valid */
#define SRB_EDIF_CLEANUP_DELETE		BIT_9

/* To identify if a srb is of T10-CRC type. @sp => srb_t pointer */
#define IS_PROT_IO(sp)	(sp->flags & SRB_CRC_CTX_DSD_VALID)
#define ISP_REG16_DISCONNECT 0xFFFF

static inline le_id_t be_id_to_le(be_id_t id)
{

Annotation

Implementation Notes