bnxt_qplib_r...send_message(9)
π NAME π
bnxt_qplib_rcfw_send_message β the qplib interface bestie that sends and completes rcfw commands, no cap β¨
Oh and btw, this whole page lives under the manual name bnxt_qplib_r...send_message(9) β that's the header energy, keeping it iconic π
πΈ SYNOPSIS πΈ
int bnxt_qplib_rcfw_send_message (struct bnxt_qplib_rcfw *rcfw , struct
bnxt_qplib_cmdqmsg *msg );
π¦ ARGUMENTS π¦
rcfwβ the rcfw channel instance of rdev π«Ά that's literally the whole vibe, it's the channel babemsgβ a qplib message, internal β¨ very inside-the-house, not for outside consumption
π DESCRIPTION π
okay so picture this: the driver talks to the Firmware through the rcfw channel / slow path, and it does it in two ways, and both of them are valid, periodt π
- Blocking rcfw command send. In this path the driver cannot hold the context for a longer period β because it is literally holding the cpu until the command is completed π like it's stuck there, waiting, no escape
- Non-blocking rcfw command send. In this path the driver can hold the context for a longer period π but here's the tea: there may be many pending commands just waiting for completion, because of that whole non-blocking nature of it π
The driver is gonna use a shadow queue depth, and this is where it gets juicy. The current queue depth is 8K β and because of the size of the rcfw message there can be actual ~4K rcfw outstanding β and ngl that is not optimal for rcfw command processing in firmware π it's giving bottleneck
So: restrict at max #RCFW_CMD_NON_BLOCKING_SHADOW_QD Non-Blocking rcfw commands. That's the ceiling bestie, we do not go past it π§
And allow all blocking commands until there is no queue full β¨ blocking ones get the whole run of the place, they're the main characters here π
π RETURN π
0β if the command was completed by firmware π slay, we love a completion- Non zero β if the command is not completed by firmware π it's giving unfinished business
π SEE ALSO π
- Kernel file
./drivers/infiniband/hw/bnxt_re/qplib_rcfw.cβ go read the source bestie, it's right there π bnxt_qplib_map_rc(9)bnxt_re_is_fw_stalled(9)__wait_for_resp(9)__block_for_resp(9)__poll_for_resp(9)__bnxt_qplib_rcfw_send_message(9)
iykyk, the underscores ones are the β¨inner circleβ¨ fr fr
ok that's the whole page, no notes π go forth and send those messages, blocking or non-blocking, you got this π«Ά
and that's a wrap bestie π this was brought to you by ./drivers/infiniband/hw/bnxt_re, dated October 2026, living under the name bnxt_qplib_r...send_message(9) β mwah, see you in the source ππ₯
π¦ 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