STRUCT ISCI_PORT(9)
π struct isci_port(9) β the isci direct attached sas port object, bestie
okay so this is a page straight out of the Kernel API Manual (that's the manual name, iykyk) and it's all about struct isci_port β the isci direct attached SAS port object. it's giving "low-level driver internals" and honestly? iconic. let's get into it π
β¨ SYNOPSIS β¨
here's the whole struct, character for character, no cap:
struct isci_port {
struct isci_host *isci_host;
struct list_head remote_dev_list;
#define IPORT_RESET_PENDING 0;
unsigned long state;
enum sci_status hard_reset_status;
struct sci_base_state_machine sm;
bool ready_exit;
u8 logical_port_index;
u8 physical_port_index;
u8 active_phy_mask;
u8 enabled_phy_mask;
u8 last_active_phy;
u16 reserved_rni;
u16 reserved_tag;
u32 started_request_count;
u32 assigned_device_count;
u32 hang_detect_users;
u32 not_ready_reason;
struct isci_phy *phy_table[SCI_MAX_PHYS];
struct isci_host *owning_controller;
struct sci_timer timer;
struct scu_port_task_scheduler_registers __iomem
*port_task_scheduler_registers;
u32 __iomem *port_pe_configuration_register;
struct scu_viit_entry __iomem *viit_registers;
};
like, look at her. she's got everything. π«Ά
π the little #define sneaking around in there
#define IPORT_RESET_PENDING 0;β yeah it's literally chillin' inside the struct body, that's just how it is, don't @ me
π Members π
okay so here's the member-by-member tea, and I'm keeping every single drop:
ready_exitβ several states constitute 'ready'. when we're exiting ready we need to take extra port-teardown actions that get skipped when you're exiting to another 'ready' state. so basically not all exits are equal, bestie πΈlogical_port_indexβ the software port indexphysical_port_indexβ the hardware port indexactive_phy_maskβ identifies phy membersenabled_phy_maskβ the phy mask for the port that are already part of the portreserved_rniβ reserver for port task scheduler workaround (yes, "reserver" β that's the original spelling, I'm not touching it π)reserved_tagβ no description given, she's mysterious, she's main character energy, we respect her privacy πstarted_request_countβ reference count for outstanding commandsnot_ready_reasonβ set during state transitions and notifiedtimerβ timeout start/stop operations β°
π¦ SEE ALSO π¦
- Kernel file
./drivers/scsi/isci/port.hβ go read it, it's right there, iykyk π
ngl if you're poking at this struct you're already deep in the isci driver, so like... hydrate, take a break, and remember the phy masks are masks, not vibes. π§
and that's the whole page, periodt. this came from ./drivers/scsi/isci and it's dated October 2026 β so yeah, future-dated kernel docs, we love to see it. slay πβ¨
π¦ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms