mpi3mr_get_s...cal_linkrate(9)
π mpi3mr_get_sas_negotiated_logical_linkrate(9) π
okay so this is a page straight out of the Kernel API Manual and bestie, it's a little one but she's important. it's mpi3mr_get_sas_negotiated_logical_linkrate(9) β say that five times fast, i dare you π
β¨ NAME β¨
mpi3mr_get_sas_negotiated_logical_linkrate β get linkrate. that's it. that's the whole vibe. she gets the linkrate π
πΈ SYNOPSIS πΈ
u8 mpi3mr_get_sas_negotiated_logical_linkrate (struct mpi3mr_ioc *mrioc
, struct mpi3mr_tgt_dev *tgtdev );
like, two args, one u8 coming back at you. slay β¨
π¦ ARGUMENTS π¦
mriocβ the Adapter instance reference. your whole controller, your main character πtgtdevβ the Target device. the one we're asking about π―
π DESCRIPTION π
okay so here's the tea, and i need you to follow along because the way this function works is genuinely so smart π«Ά
first, it tries to use the link rate from DevicePage0 β and btw that page is populated by firmware during device discovery, so it's the pre-cached, already-sitting-there version. convenient, right? β¨
but if the cached value is not available, or it's invalid (rude π), it falls back to reading from sas phy page0 or expander phy page1. so there's a whole backup plan. she does not give up. she pivots. periodt π
π₯ RETURN π₯
the logical link rate. that's the u8. go off π
π SEE ALSO π
- Kernel file
./drivers/scsi/mpi3mr/mpi3mr_transport.cβ the literal source, iykyk
and then the whole friend group, fr fr:
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_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_expander_phy_control(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)
like, that is a friend group π«Ά π
ngl the whole thing lives in ./drivers/scsi/mpi3mr β go say hi to the source sometime, she's nice π
and that's the page!! mwah π this baby shipped in October 2026, source ./drivers/scsi/mpi3mr, and honestly? iconic from start to finish. bye bestie π¦β¨π
π¦ 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