mpi3mr_pel_wait_complete(9)
π
mpi3mr_pel_wait_complete π
okay bestie, welcome to the Kernel API Manual page for mpi3mr_pel_wait_complete(9) β yes that whole mouthful is the name, and no we're not shortening it, it's iconic in its own chaotic way π
β¨ NAME β¨
mpi3mr_pel_wait_complete β the PELWait Completion callback, bestie. that's the whole vibe. it's a callback. it completes. it's giving "I handle the PELWait request replies" energy π
π¦ SYNOPSIS π¦
void mpi3mr_pel_wait_complete (struct mpi3mr_ioc *mrioc , struct
mpi3mr_drv_cmd *drv_cmd );
like, that's the whole signature. void in, void out, two args in the middle. no cap π«Ά
πΈ ARGUMENTS πΈ
mriocβ your Adapter instance reference, aka the actual controller we're simping over. you gotta hand it over so it knows which adapter we're talking about πdrv_cmdβ the Internal command tracker. it's the little bean that keeps tabs on where the command is at, so bring it along π
π§ DESCRIPTION π§
okay so picture this: this function is the callback handler for the PELWait request β¨ and the firmware is out here completing a PELWait request under exactly two conditions β either it got aborted, or a new PEL entry is available. those are the moments. the main character moments π₯
when that fires, this cutie sends an AEN to the application β yes, sending the notification, doing its job, slaying π
and here's the little conditional twist: if the PELwait completion is NOT due to PELAbort, then it goes ahead and sends a request for a new PEL Sequence number π so like, abort? no new seqnum request. not abort? new seqnum request please and thank you.
lowkey obsessed with how tidy that logic is. aborted = no follow-up needed. new PEL entry = go fetch that new sequence number. periodt π
π RETURN π
Nothing. literally nothing. it returns void, it gives you no value back, and honestly? it doesn't owe you one π it just does its callback thing and leaves.
π SEE ALSO π
the kernel file lives at ./drivers/scsi/mpi3mr/mpi3mr_fw.c β that's the home base, iykyk π¦
and now, the extended friend group (yes, all of them, we're not skipping a single one, that would be disrespectful):
mpi3mr_get_reply_desc(9)mpi3mr_process_op_reply_q(9)mpi3mr_blk_mq_poll(9)mpi3mr_isr_poll(9)mpi3mr_request_irq(9)mpi3mr_setup_isr(9)mpi3mr_reset_rc_name(9)mpi3mr_reset_type_name(9)mpi3mr_is_fault_recoverable(9)mpi3mr_print_fault_info(9)mpi3mr_save_fault_info(9)mpi3mr_get_iocstate(9)mpi3mr_free_ioctl_dma_memory(9)mpi3mr_alloc_ioctl_dma_memory(9)mpi3mr_fault_uevent_emit(9)mpi3mr_clear_reset_history(9)mpi3mr_issue_and_process_mur(9)mpi3mr_revalidate_factsdata(9)mpi3mr_bring_ioc_ready(9)mpi3mr_soft_reset_success(9)mpi3mr_diagfault_success(9)mpi3mr_set_diagsave(9)mpi3mr_issue_reset(9)mpi3mr_admin_request_post(9)mpi3mr_free_op_req_q_segments(9)mpi3mr_free_op_reply_q_segments(9)mpi3mr_delete_op_reply_q(9)mpi3mr_alloc_op_reply_q_segments(9)mpi3mr_alloc_op_req_q_segments(9)mpi3mr_create_op_reply_q(9)mpi3mr_create_op_req_q(9)mpi3mr_create_op_queues(9)mpi3mr_op_request_post(9)mpi3mr_check_rh_fault_ioc(9)mpi3mr_sync_timestamp(9)mpi3mr_print_pkg_ver(9)mpi3mr_watchdog_work(9)mpi3mr_start_watchdog(9)mpi3mr_stop_watchdog(9)mpi3mr_setup_admin_qpair(9)mpi3mr_issue_iocfacts(9)mpi3mr_check_reset_dma_mask(9)mpi3mr_process_factsdata(9)mpi3mr_alloc_reply_sense_bufs(9)mpimr_initialize_reply_sbuf_queues(9)(yes that's how it's spelled, we don't fix it, we respect it π)mpi3mr_issue_iocinit(9)mpi3mr_unmask_events(9)mpi3mr_issue_event_notification(9)mpi3mr_process_event_ack(9)mpi3mr_alloc_chain_bufs(9)mpi3mr_port_enable_complete(9)mpi3mr_issue_port_enable(9)mpi3mr_repost_diag_bufs(9)mpi3mr_read_tsu_interval(9)mpi3mr_print_ioc_info(9)mpi3mr_cleanup_resources(9)mpi3mr_setup_resources(9)mpi3mr_enable_events(9)mpi3mr_init_ioc(9)mpi3mr_reinit_ioc(9)mpi3mr_memset_op_reply_q_buffers(9)mpi3mr_memset_op_req_q_buffers(9)mpi3mr_memset_buffers(9)mpi3mr_free_mem(9)mpi3mr_issue_ioc_shutdown(9)mpi3mr_cleanup_ioc(9)mpi3mr_drv_cmd_comp_reset(9)mpi3mr_flush_drv_cmds(9)mpi3mr_pel_wait_post(9)mpi3mr_pel_get_seqnum_post(9)mpi3mr_pel_get_seqnum_complete(9)mpi3mr_check_op_admin_proc(9)mpi3mr_soft_reset_handler(9)mpi3mr_post_cfg_req(9)mpi3mr_process_cfg_req(9)mpi3mr_cfg_get_dev_pg0(9)mpi3mr_cfg_get_sas_phy_pg0(9)mpi3mr_cfg_get_sas_phy_pg1(9)mpi3mr_cfg_get_sas_exp_pg0(9)mpi3mr_cfg_get_sas_exp_pg1(9)mpi3mr_cfg_get_enclosure_pg0(9)mpi3mr_cfg_get_sas_io_unit_pg0(9)mpi3mr_cfg_get_sas_io_unit_pg1(9)mpi3mr_cfg_set_sas_io_unit_pg1(9)mpi3mr_cfg_get_driver_pg1(9)mpi3mr_cfg_get_driver_pg2(9)
like, that's the whole crew. 86 besties. it's giving family reunion π«Ά
and that's the page, bestie!! brought to you by the source tree at ./drivers/scsi/mpi3mr, dated October 2026, and yes we read the whole SEE ALSO list so you didn't have to. go read some kernel 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