mpi3mr_expander_phy_control(9)
πΈ mpi3mr_expander_phy_control β expander phy control πΈ
okay so bestie, welcome to the kernel API manual page for mpi3mr_expander_phy_control, straight out of the mpi3mr crew π
this one's a lil function that pokes at an expander's phy, and honestly? iconic behavior. let's get into it π«Ά
β¨ SYNOPSIS β¨
int mpi3mr_expander_phy_control (struct mpi3mr_ioc *mrioc , struct
sas_phy *phy , u8 phy_operation );
yep, that's the whole signature, no cap β three args in, an int out π₯
π ARGUMENTS π
mriocβ the adapter instance reference, like your main character's ID badge π³phyβ the SAS transport layer phy object, the actual phy baddie we're doing stuff to π¦phy_operationβ the phy operation to be executed, i.e. what exactly we're asking that phy to do, ngl this is the important one π
π DESCRIPTION π
so here's the vibe: this function issues an SMP passthru phy control request to execute a specific phy operation for a given expander device β¨ that's it, that's the whole thing β it's basically the messenger that walks your phy operation request over to the expander so it can actually happen. lowkey essential, highkey underappreciated π
β RETURN β
0for success π- non-zero for failure π (yes, that's all it says β go forth and check your return values, bestie)
π SEE ALSO π
the whole friend group, fr fr β go say hi to all of these π«Ά
- Kernel file
./drivers/scsi/mpi3mr/mpi3mr_transport.c mpi3mr_post_transport_req(9)mpi3mr_report_manufacture(9)__mpi3mr_expander_find_by_handle(9)mpi3mr_is_expander_device(9)mpi3mr_get_sas_address(9)__mpi3mr_get_tgtdev_by_addr(9)mpi3mr_get_tgtdev_by_addr(9)mpi3mr_remove_device_by_sas_address(9)__mpi3mr_get_tgtdev_by_addr_and_rphy(9)mpi3mr_expander_find_by_sas_address(9)__mpi3mr_sas_node_find_by_sas_address(9)mpi3mr_parent_present(9)mpi3mr_convert_phy_link_rate(9)mpi3mr_delete_sas_phy(9)mpi3mr_add_sas_phy(9)mpi3mr_add_phy_to_an_existing_port(9)mpi3mr_delete_sas_port(9)mpi3mr_del_phy_from_an_existing_port(9)mpi3mr_sas_port_sanity_check(9)mpi3mr_set_identify(9)mpi3mr_add_host_phy(9)mpi3mr_add_expander_phy(9)mpi3mr_alloc_hba_port(9)mpi3mr_get_hba_port_by_id(9)mpi3mr_update_links(9)mpi3mr_sas_host_refresh(9)mpi3mr_sas_host_add(9)mpi3mr_sas_port_add(9)mpi3mr_sas_port_remove(9)struct host_port(9)mpi3mr_update_mr_sas_port(9)mpi3mr_refresh_sas_ports(9)mpi3mr_refresh_expanders(9)mpi3mr_expander_node_add(9)mpi3mr_expander_add(9)mpi3mr_expander_node_remove(9)mpi3mr_expander_remove(9)mpi3mr_get_sas_negotiated_logical_linkrate(9)mpi3mr_report_tgtdev_to_sas_transport(9)mpi3mr_remove_tgtdev_from_sas_transport(9)mpi3mr_get_port_id_by_sas_phy(9)mpi3mr_get_port_id_by_rphy(9)mpi3mr_get_expander_phy_error_log(9)mpi3mr_transport_get_linkerrors(9)mpi3mr_transport_get_enclosure_identifier(9)mpi3mr_transport_get_bay_identifier(9)mpi3mr_transport_phy_reset(9)mpi3mr_transport_phy_enable(9)mpi3mr_transport_phy_speed(9)mpi3mr_map_smp_buffer(9)mpi3mr_unmap_smp_buffer(9)mpi3mr_transport_smp_handler(9)
and that's the page, periodt π this lil slice of kernel lore lives in ./drivers/scsi/mpi3mr, dated October 2026 β mwah, go read the source, ily, bye πβ¨
π¦ 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