include/scsi/scsi_transport_sas.h
Source file repositories/reference/linux-study-clean/include/scsi/scsi_transport_sas.h
File Facts
- System
- Linux kernel
- Corpus path
include/scsi/scsi_transport_sas.h- Extension
.h- Size
- 7041 bytes
- Lines
- 248
- Domain
- Repository Root And Misc
- Bucket
- include
- Inferred role
- Repository Root And Misc: implementation source
- Status
- source implementation candidate
Why This File Exists
Top-level or miscellaneous repository surface. Use this as map coverage unless a later manual pass promotes the file into a deeper subsystem dossier.
- Top-level or miscellaneous repository surface. Use this as map coverage unless a later manual pass promotes the file into a deeper subsystem dossier.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
linux/transport_class.hlinux/types.hlinux/mutex.hscsi/sas.hlinux/bsg-lib.h
Detected Declarations
struct scsi_transport_templatestruct sas_rphystruct requeststruct sas_identifystruct sas_phystruct request_queuestruct sas_rphystruct sas_end_devicestruct sas_expander_devicestruct sas_portstruct sas_phy_linkratesstruct sas_function_templateenum sas_linkratefunction scsi_is_sas_rphyfunction sas_protocol_atafunction sas_port_put_phyfunction scsi_is_sas_expander_device
Annotated Snippet
struct sas_identify {
enum sas_device_type device_type;
enum sas_protocol initiator_port_protocols;
enum sas_protocol target_port_protocols;
u64 sas_address;
u8 phy_identifier;
};
struct sas_phy {
struct device dev;
int number;
int enabled;
/* phy identification */
struct sas_identify identify;
/* phy attributes */
enum sas_linkrate negotiated_linkrate;
enum sas_linkrate minimum_linkrate_hw;
enum sas_linkrate minimum_linkrate;
enum sas_linkrate maximum_linkrate_hw;
enum sas_linkrate maximum_linkrate;
/* link error statistics */
u32 invalid_dword_count;
u32 running_disparity_error_count;
u32 loss_of_dword_sync_count;
u32 phy_reset_problem_count;
/* for the list of phys belonging to a port */
struct list_head port_siblings;
/* available to the lldd */
void *hostdata;
};
#define dev_to_phy(d) \
container_of((d), struct sas_phy, dev)
#define transport_class_to_phy(dev) \
dev_to_phy((dev)->parent)
#define phy_to_shost(phy) \
dev_to_shost((phy)->dev.parent)
struct request_queue;
struct sas_rphy {
struct device dev;
struct sas_identify identify;
struct list_head list;
struct request_queue *q;
u32 scsi_target_id;
};
#define dev_to_rphy(d) \
container_of((d), struct sas_rphy, dev)
#define transport_class_to_rphy(dev) \
dev_to_rphy((dev)->parent)
#define rphy_to_shost(rphy) \
dev_to_shost((rphy)->dev.parent)
#define target_to_rphy(targ) \
dev_to_rphy((targ)->dev.parent)
struct sas_end_device {
struct sas_rphy rphy;
/* flags */
unsigned ready_led_meaning:1;
unsigned tlr_supported:1;
unsigned tlr_enabled:1;
/* parameters */
u16 I_T_nexus_loss_timeout;
u16 initiator_response_timeout;
};
#define rphy_to_end_device(r) \
container_of((r), struct sas_end_device, rphy)
struct sas_expander_device {
int level;
int next_port_id;
#define SAS_EXPANDER_VENDOR_ID_LEN 8
char vendor_id[SAS_EXPANDER_VENDOR_ID_LEN+1];
#define SAS_EXPANDER_PRODUCT_ID_LEN 16
char product_id[SAS_EXPANDER_PRODUCT_ID_LEN+1];
#define SAS_EXPANDER_PRODUCT_REV_LEN 4
char product_rev[SAS_EXPANDER_PRODUCT_REV_LEN+1];
#define SAS_EXPANDER_COMPONENT_VENDOR_ID_LEN 8
char component_vendor_id[SAS_EXPANDER_COMPONENT_VENDOR_ID_LEN+1];
u16 component_id;
u8 component_revision_id;
struct sas_rphy rphy;
Annotation
- Immediate include surface: `linux/transport_class.h`, `linux/types.h`, `linux/mutex.h`, `scsi/sas.h`, `linux/bsg-lib.h`.
- Detected declarations: `struct scsi_transport_template`, `struct sas_rphy`, `struct request`, `struct sas_identify`, `struct sas_phy`, `struct request_queue`, `struct sas_rphy`, `struct sas_end_device`, `struct sas_expander_device`, `struct sas_port`.
- Atlas domain: Repository Root And Misc / include.
- 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.