drivers/scsi/elx/efct/efct_scsi.h
Source file repositories/reference/linux-study-clean/drivers/scsi/elx/efct/efct_scsi.h
File Facts
- System
- Linux kernel
- Corpus path
drivers/scsi/elx/efct/efct_scsi.h- Extension
.h- Size
- 6302 bytes
- Lines
- 204
- 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.
- 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.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
scsi/scsi_host.hscsi/scsi_transport_fc.h
Detected Declarations
struct efct_scsi_cmd_respstruct efct_vportstruct efct_nodestruct efct_iostruct efc_nodestruct efc_nportstruct efct_scsi_sglenum efct_scsi_io_statusenum efct_scsi_tmf_cmdenum efct_scsi_tmf_respenum efct_scsi_io_roleenum efct_scsi_del_initiator_reason
Annotated Snippet
struct efct_scsi_cmd_resp {
u8 scsi_status;
u16 scsi_status_qualifier;
u8 *response_data;
u32 response_data_length;
u8 *sense_data;
u32 sense_data_length;
int residual;
u32 response_wire_length;
};
struct efct_vport {
struct efct *efct;
bool is_vport;
struct fc_host_statistics fc_host_stats;
struct Scsi_Host *shost;
struct fc_vport *fc_vport;
u64 npiv_wwpn;
u64 npiv_wwnn;
};
/* Status values returned by IO callbacks */
enum efct_scsi_io_status {
EFCT_SCSI_STATUS_GOOD = 0,
EFCT_SCSI_STATUS_ABORTED,
EFCT_SCSI_STATUS_ERROR,
EFCT_SCSI_STATUS_DIF_GUARD_ERR,
EFCT_SCSI_STATUS_DIF_REF_TAG_ERROR,
EFCT_SCSI_STATUS_DIF_APP_TAG_ERROR,
EFCT_SCSI_STATUS_DIF_UNKNOWN_ERROR,
EFCT_SCSI_STATUS_PROTOCOL_CRC_ERROR,
EFCT_SCSI_STATUS_NO_IO,
EFCT_SCSI_STATUS_ABORT_IN_PROGRESS,
EFCT_SCSI_STATUS_CHECK_RESPONSE,
EFCT_SCSI_STATUS_COMMAND_TIMEOUT,
EFCT_SCSI_STATUS_TIMEDOUT_AND_ABORTED,
EFCT_SCSI_STATUS_SHUTDOWN,
EFCT_SCSI_STATUS_NEXUS_LOST,
};
struct efct_node;
struct efct_io;
struct efc_node;
struct efc_nport;
/* Callback used by send_rd_data(), recv_wr_data(), send_resp() */
typedef int (*efct_scsi_io_cb_t)(struct efct_io *io,
enum efct_scsi_io_status status,
u32 flags, void *arg);
/* Callback used by send_rd_io(), send_wr_io() */
typedef int (*efct_scsi_rsp_io_cb_t)(struct efct_io *io,
enum efct_scsi_io_status status,
struct efct_scsi_cmd_resp *rsp,
u32 flags, void *arg);
/* efct_scsi_cb_t flags */
#define EFCT_SCSI_IO_CMPL (1 << 0)
/* IO completed, response sent */
#define EFCT_SCSI_IO_CMPL_RSP_SENT (1 << 1)
#define EFCT_SCSI_IO_ABORTED (1 << 2)
/* efct_scsi_recv_tmf() request values */
enum efct_scsi_tmf_cmd {
EFCT_SCSI_TMF_ABORT_TASK = 1,
EFCT_SCSI_TMF_QUERY_TASK_SET,
EFCT_SCSI_TMF_ABORT_TASK_SET,
EFCT_SCSI_TMF_CLEAR_TASK_SET,
EFCT_SCSI_TMF_QUERY_ASYNCHRONOUS_EVENT,
EFCT_SCSI_TMF_LOGICAL_UNIT_RESET,
EFCT_SCSI_TMF_CLEAR_ACA,
EFCT_SCSI_TMF_TARGET_RESET,
};
/* efct_scsi_send_tmf_resp() response values */
enum efct_scsi_tmf_resp {
EFCT_SCSI_TMF_FUNCTION_COMPLETE = 1,
EFCT_SCSI_TMF_FUNCTION_SUCCEEDED,
EFCT_SCSI_TMF_FUNCTION_IO_NOT_FOUND,
EFCT_SCSI_TMF_FUNCTION_REJECTED,
EFCT_SCSI_TMF_INCORRECT_LOGICAL_UNIT_NUMBER,
EFCT_SCSI_TMF_SERVICE_DELIVERY,
};
struct efct_scsi_sgl {
uintptr_t addr;
uintptr_t dif_addr;
size_t len;
};
Annotation
- Immediate include surface: `scsi/scsi_host.h`, `scsi/scsi_transport_fc.h`.
- Detected declarations: `struct efct_scsi_cmd_resp`, `struct efct_vport`, `struct efct_node`, `struct efct_io`, `struct efc_node`, `struct efc_nport`, `struct efct_scsi_sgl`, `enum efct_scsi_io_status`, `enum efct_scsi_tmf_cmd`, `enum efct_scsi_tmf_resp`.
- Atlas domain: Driver Families / drivers/scsi.
- Implementation status: source implementation candidate.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.