asd_update_port_links(9)
π asd_update_port_links β like, the Kernel API Manual, bestie (section 9) β¨
okay so picture this: you're deep in the asd_update_port_links(9) manpage from the Kernel API Manual, and honestly? it's giving "small function, big responsibilities" and we're gonna get into it π«Ά
πΈ NAME πΈ
asd_update_port_links β update port_map_by_links and phy_is_up β¨
like yes, that's the whole pitch, but the lore is so much juicier, keep reading π
π¦ SYNOPSIS π¦
void asd_update_port_links (struct asd_ha_struct *asd_ha , struct
asd_phy *phy );
it returns nothing (void, periodt) and it takes exactly two things. no more, no less, no cap π
π ARGUMENTS π
asd_haβ a pointer to the host adapter structure, aka the main character of this whole operation πphyβ a pointer to the phy that's been added to a port, the little guy we're doing all this for π₯Ί
π DESCRIPTION π
so there are like, two whole situations where this function gets called, and both of them are iconic in their own way:
- when a link reset has completed and we got BYTES DMAED with a valid frame, we call this function for that phy, to say "hey bestie, this phy is up" β meaning we update the
phy_is_upin DDB 0 β¨ and here's the tea: the sequencer checksphy_is_upwhen pending SCBs are to be sent, and also when an open address frame has been received. so yeah, it matters. a lot. π₯ - when we know of ports, we call this function to update the map of phys participating in that port β so we update the
port_map_by_linksin DDB 0 π and when a HARD_RESET primitive has been received, the sequencer disables all phys in that port π so like, respect the map, fr fr. alsoport_map_by_linksis used as theconn_maskbyte in the initiator/target port DDB. multitasking icon behavior, honestly π
no fr, both of these are just "update the DDB 0 fields" but the why is doing so much heavy lifting here and we love that for us π
π SEE ALSO π
you're gonna want to peek at the kernel file ./drivers/scsi/aic94xx/aic94xx_seq.c (the source of truth, the mothership, the vibe) and then honestly just binge the whole friend group:
asd_pause_cseq(9)asd_unpause_cseq(9)asd_seq_pause_lseq(9)asd_pause_lseq(9)asd_seq_unpause_lseq(9)asd_verify_lseq(9)asd_verify_seq(9)asd_seq_download_seqs(9)asd_init_cseq_mip(9)asd_init_cseq_mdp(9)asd_init_cseq_scratch(9)asd_init_lseq_mip(9)asd_init_lseq_mdp(9)asd_init_lseq_scratch(9)asd_init_scb_sites(9)asd_init_cseq_cio(9)asd_init_lseq_cio(9)asd_post_init_cseq(9)asd_init_ddb_0(9)asd_seq_setup_seqs(9)asd_seq_start_cseq(9)asd_seq_start_lseq(9)
like that's the whole friend group, iykyk πΈ
and that's the page!! this little beauty lives in ./drivers/scsi/aic94xx and the version on deck is dated October 2026 β go off, you absolute icon π§ββοΈβ mwah π
π¦ 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