mpt_send_handshake_request(9)
π mpt_send_handshake_request(9) π
okay so this page is straight out of the Kernel API Manual, and the function is literally called mpt_send_handshake_request β yes bestie, we're sending MPT requests the old-school doorbell way. buckle up π
β¨ NAME β¨
mpt_send_handshake_request β send an MPT request via the doorbell handshake method. that's the whole vibe. π
πΈ SYNOPSIS πΈ
int mpt_send_handshake_request (u8 cb_idx , MPT_ADAPTER *ioc , int
reqBytes , u32 *req , int sleepFlag );
π¦ ARGUMENTS π¦
cb_idxβ the handle of a registered MPT protocol driver. like, which driver is this coming from, bestie? π«Άiocβ pointer to theMPT_ADAPTERstructure. the adapter in question, main character energy πreqBytesβ size of the request, in bytes. count 'em π’reqβ pointer to the MPT request frame. the actual payload, slay β¨sleepFlagβ usescheduleifCAN_SLEEP, otherwise useudelay. pick your waiting game π΄
π DESCRIPTION π
so this routine is used exclusively to send MptScsiTaskMgmt requests β because those ones are required to be sent via the doorbell handshake. no substitutions, no shortcuts, this is the only lane they get to use πͺπ literally the VIP entrance.
π₯ NOTE π₯
bestie it is the caller's responsibility to byte-swap fields in the request that are greater than 1 byte in size. like, that's on you, not on this function. don't come for this routine when your endianness is a mess π
returns 0 for success, non-zero for failure π (as always, zero is the good one here).
π SEE ALSO π
kernel file ./drivers/message/fusion/mptbase.c β and honestly the whole extended friend group:
mpt_get_cb_idx(9),mpt_is_discovery_complete(9),mpt_remove_dead_ioc_func(9),mpt_fault_reset_work(9)mpt_interrupt(9),mptbase_reply(9),mpt_register(9),mpt_deregister(9)mpt_event_register(9),mpt_event_deregister(9),mpt_reset_register(9),mpt_reset_deregister(9)mpt_device_driver_register(9),mpt_device_driver_deregister(9),mpt_get_msg_frame(9),mpt_put_msg_frame(9)mpt_put_msg_frame_hi_pri(9),mpt_free_msg_frame(9),mpt_add_sge(9),mpt_add_sge_64bit(9)mpt_add_sge_64bit_1078(9),mpt_add_chain(9),mpt_add_chain_64bit(9),mpt_host_page_access_control(9)mpt_host_page_alloc(9),mpt_verify_adapter(9),mpt_get_product_name(9),mpt_mapresources(9)mpt_attach(9),mpt_detach(9),mpt_suspend(9),mpt_resume(9)mpt_do_ioc_recovery(9),mpt_detect_bound_ports(9),mpt_adapter_disable(9),mpt_adapter_dispose(9)MptDisplayIocCapabilities(9),MakeIocReady(9),mpt_GetIocState(9),GetIocFacts(9)GetPortFacts(9),SendIocInit(9),SendPortEnable(9),mpt_alloc_fw_memory(9)mpt_free_fw_memory(9),mpt_do_upload(9),mpt_downloadboot(9),KickStart(9)mpt_diag_reset(9),SendIocReset(9),initChainBuffers(9),PrimeIocFifos(9)mpt_handshake_req_reply_wait(9),WaitForDoorbellAck(9),WaitForDoorbellInt(9),WaitForDoorbellReply(9)GetLanConfigPages(9),mptbase_sas_persist_operation(9),GetIoUnitPage2(9),mpt_GetScsiPortSettings(9)mpt_readScsiDevicePageHeaders(9),mpt_inactive_raid_list_free(9),mpt_inactive_raid_volumes(9),mpt_raid_phys_disk_pg0(9)mpt_raid_phys_disk_get_num_paths(9),mpt_raid_phys_disk_pg1(9),mpt_findImVolumes(9),SendEventNotification(9)SendEventAck(9),mpt_config(9),mpt_ioc_reset(9),procmpt_create(9)procmpt_destroy(9),mpt_print_ioc_summary(9),mpt_set_taskmgmt_in_progress_flag(9),mpt_clear_taskmgmt_in_progress_flag(9)mpt_halt_firmware(9),mpt_SoftResetHandler(9),mpt_Soft_Hard_ResetHandler(9),mpt_HardResetHandler(9)ProcessEventNotification(9),mpt_fc_log_info(9),mpt_spi_log_info(9),mpt_sas_log_info(9)mpt_iocstatus_info_config(9),mpt_iocstatus_info(9),fusion_init(9),fusion_exit(9)
π sign-off time π
this lil masterpiece lives in ./drivers/message/fusion, and the page is dated October 2026 β future-proofed and fabulous, no cap πβ¨ π
okay that's the whole page, go byte-swap responsibly, 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