bnx2i_unsol_pdu_adjust_rq(9)
π bnx2i_unsol_pdu_adjust_rq β it's from the Kernel API Manual bestie β¨
okay so real talk, this is a page about one very specific little function in the bnx2i driver, and honestly? it's giving "unsung hero of the receive queue." let me put you on π«Ά
β¨ NAME β¨
bnx2i_unsol_pdu_adjust_rq β makes adjustments to RQ after unsol pdu is recvd π
like, that's literally the whole job. RQ = receive queue, unsol pdu = unsolicited PDU, and this function does the lil cleanup dance afterwards. no cap.
β¨ SYNOPSIS β¨
void bnx2i_unsol_pdu_adjust_rq (struct bnx2i_conn *bnx2i_conn );
it returns void (so like, nothing comes back, it just does things, main character energy honestly) and it takes exactly one pointer. periodt.
β¨ ARGUMENTS β¨
bnx2i_connβ the iscsi connection π¦ that's it. that's the argument. one (1) connection, and the function goes to work on it.
β¨ DESCRIPTION β¨
okay so this is the tea β β the firmware advances the RQ producer index for every unsolicited PDU, even when the payload data length is '0'. like, zero bytes. nothing. and it still bumps the index. iconic of it, honestly, but also kind of a problem π
so what this function does is make the corresponding adjustments on the driver side so that the driver matches this firmware behavior. that's the whole vibe β keeping the f/w side and the driver side in sync so nothing gets confused about where the producer index is at. it's giving teamwork, it's giving alignment, it's giving "we move together." π
no behavior guessing here bestie β the page says exactly this and nothing more: f/w bumps the index for every unsolicited PDU even at '0' payload length, and this function adjusts the driver side to match. that's the assignment. π
β¨ SEE ALSO β¨
this is the part where the page just... goes off. like there are SO many siblings π«Ά all chillin' in the kernel file ./drivers/scsi/bnx2i/bnx2i_hwi.c:
bnx2i_get_cid_num(9)bnx2i_adjust_qp_size(9)bnx2i_get_link_state(9)bnx2i_iscsi_license_error(9)bnx2i_arm_cq_event_coalescing(9)bnx2i_get_rq_buf(9)bnx2i_put_rq_buf(9)bnx2i_ring_sq_dbell(9)bnx2i_ring_dbell_update_sq_params(9)bnx2i_send_iscsi_login(9)bnx2i_send_iscsi_tmf(9)bnx2i_send_iscsi_text(9)bnx2i_send_iscsi_scsicmd(9)bnx2i_send_iscsi_nopout(9)bnx2i_send_iscsi_logout(9)bnx2i_update_iscsi_conn(9)bnx2i_ep_ofld_timer(9)bnx2i_send_cmd_cleanup_req(9)bnx2i_send_conn_destroy(9)bnx2i_570x_send_conn_ofld_req(9)bnx2i_5771x_send_conn_ofld_req(9)bnx2i_send_conn_ofld_req(9)setup_qp_page_tables(9)bnx2i_alloc_qp_resc(9)bnx2i_free_qp_resc(9)bnx2i_send_fw_iscsi_init_msg(9)bnx2i_process_scsi_cmd_resp(9)bnx2i_process_login_resp(9)bnx2i_process_text_resp(9)bnx2i_process_tmf_resp(9)bnx2i_process_logout_resp(9)bnx2i_process_nopin_local_cmpl(9)bnx2i_process_nopin_mesg(9)bnx2i_process_async_mesg(9)bnx2i_process_reject_mesg(9)bnx2i_process_cmd_cleanup_resp(9)bnx2i_percpu_io_thread(9)bnx2i_queue_scsi_cmd_resp(9)bnx2i_process_new_cqes(9)bnx2i_fastpath_notification(9)bnx2i_process_update_conn_cmpl(9)bnx2i_recovery_que_add_conn(9)bnx2i_process_tcp_error(9)bnx2i_process_iscsi_error(9)bnx2i_process_conn_destroy_cmpl(9)bnx2i_process_ofld_cmpl(9)bnx2i_indicate_kcqe(9)bnx2i_indicate_netevent(9)bnx2i_cm_connect_cmpl(9)bnx2i_cm_close_cmpl(9)bnx2i_cm_abort_cmpl(9)bnx2i_cm_remote_close(9)bnx2i_cm_remote_abort(9)bnx2i_map_ep_dbell_regs(9)
and yeah β the page also points you at the kernel file ./drivers/scsi/bnx2i/bnx2i_hwi.c itself, so go read the source if you wanna see it in the wild π
lowkey a whole friend group of functions and this one's just the one that keeps the RQ index honest. iykyk. π
and that's the page!! π written in the ./drivers/scsi/bnx2i corner of the kernel, dated October 2026 β mwah, stan the kernel API docs, 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