STRUCT TI_SCI_MSG_RM_UDMAP_FLOW_CFG_REQ(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’– struct ti_sci_msg_rm_udmap_flow_cfg_req(9) πŸ’–

okay so this is straight from the Kernel API Manual, section 9, and it's all about struct ti_sci_msg_rm_udmap_flow_cfg_req β€” aka the struct that configures a Navigator Subsystem UDMAP receive flow. bestie, it's giving very niche kernel energy and honestly I'm obsessed. πŸ¦‹


✨ NAME ✨

struct ti_sci_msg_rm_udmap_flow_cfg_req β€” Configures a Navigator Subsystem UDMAP receive flow. That's the whole vibe. πŸ’…


🌈 SYNOPSIS 🌈

struct ti_sci_msg_rm_udmap_flow_cfg_req {
    struct ti_sci_msg_hdr hdr;
    u32 valid_params;
    u16 nav_id;
    u16 flow_index;
    u8 rx_einfo_present;
    u8 rx_psinfo_present;
    u8 rx_error_handling;
    u8 rx_desc_type;
    u16 rx_sop_offset;
    u16 rx_dest_qnum;
    u8 rx_src_tag_hi;
    u8 rx_src_tag_lo;
    u8 rx_dest_tag_hi;
    u8 rx_dest_tag_lo;
    u8 rx_src_tag_hi_sel;
    u8 rx_src_tag_lo_sel;
    u8 rx_dest_tag_hi_sel;
    u8 rx_dest_tag_lo_sel;
    u16 rx_fdq0_sz0_qnum;
    u16 rx_fdq1_qnum;
    u16 rx_fdq2_qnum;
    u16 rx_fdq3_qnum;
    u8 rx_ps_location;
};

not me staring at all these fields like they're a group chat I need to catch up on 😭 but don't worry, we're gonna go through every single one. no cap. ✨


🫢 Members 🫢

  • hdr β€” Standard TISCI header. That's it, that's the whole field. iconic minimalism. πŸŽ€
  • valid_params β€” Bitfield defining validity of rx flow configuration parameters. The rx flow configuration fields are not valid, and will not be used for flow configuration, if their corresponding valid bit is zero. Vibe check: zero valid bit = that field is not invited to the function. πŸ’€ Valid bit usage:
    • 0 β€” Valid bit for tisci_msg_rm_udmap_flow_cfg_req::rx_einfo_present
    • 1 β€” Valid bit for tisci_msg_rm_udmap_flow_cfg_req::rx_psinfo_present
    • 2 β€” Valid bit for tisci_msg_rm_udmap_flow_cfg_req::rx_error_handling
    • 3 β€” Valid bit for tisci_msg_rm_udmap_flow_cfg_req::rx_desc_type
    • 4 β€” Valid bit for tisci_msg_rm_udmap_flow_cfg_req::rx_sop_offset
    • 5 β€” Valid bit for tisci_msg_rm_udmap_flow_cfg_req::rx_dest_qnum
    • 6 β€” Valid bit for tisci_msg_rm_udmap_flow_cfg_req::rx_src_tag_hi
    • 7 β€” Valid bit for tisci_msg_rm_udmap_flow_cfg_req::rx_src_tag_lo
    • 8 β€” Valid bit for tisci_msg_rm_udmap_flow_cfg_req::rx_dest_tag_hi
    • 9 β€” Valid bit for tisci_msg_rm_udmap_flow_cfg_req::rx_dest_tag_lo
    • 10 β€” Valid bit for tisci_msg_rm_udmap_flow_cfg_req::rx_src_tag_hi_sel
    • 11 β€” Valid bit for tisci_msg_rm_udmap_flow_cfg_req::rx_src_tag_lo_sel
    • 12 β€” Valid bit for tisci_msg_rm_udmap_flow_cfg_req::rx_dest_tag_hi_sel
    • 13 β€” Valid bit for tisci_msg_rm_udmap_flow_cfg_req::rx_dest_tag_lo_sel
    • 14 β€” Valid bit for tisci_msg_rm_udmap_flow_cfg_req::rx_fdq0_sz0_qnum
    • 15 β€” Valid bit for tisci_msg_rm_udmap_flow_cfg_req::rx_fdq1_sz0_qnum
    • 16 β€” Valid bit for tisci_msg_rm_udmap_flow_cfg_req::rx_fdq2_sz0_qnum
    • 17 β€” Valid bit for tisci_msg_rm_udmap_flow_cfg_req::rx_fdq3_sz0_qnum
    • 18 β€” Valid bit for tisci_msg_rm_udmap_flow_cfg_req::rx_ps_location
  • nav_id β€” SoC device ID of Navigator Subsystem from which the receive flow is allocated. Like, which Navigator Subsystem are we even talking to? iykyk. 🌸
  • flow_index β€” UDMAP receive flow index for non-optional configuration. This one's not optional, bestie β€” it's giving mandatory main character energy. πŸ‘‘
  • rx_einfo_present β€” UDMAP receive flow extended packet info present configuration to be programmed into the rx_einfo_present field of the flow's RFLOW_RFA register. slay. ✨
  • rx_psinfo_present β€” UDMAP receive flow PS words present configuration to be programmed into the rx_psinfo_present field of the flow's RFLOW_RFA register. PS words said present, and they meant it. πŸŽ€
  • rx_error_handling β€” UDMAP receive flow error handling configuration to be programmed into the rx_error_handling field of the flow's RFLOW_RFA register. errors are gonna be handled, periodt. πŸ’…
  • rx_desc_type β€” UDMAP receive flow descriptor type configuration to be programmed into the rx_desc_type field field of the flow's RFLOW_RFA register. yes, field field β€” the manual said what it said and we respect it 😭
  • rx_sop_offset β€” UDMAP receive flow start of packet offset configuration to be programmed into the rx_sop_offset field of the RFLOW_RFA register. See the UDMAP section of the TRM for more information on this setting. Valid values for this field are 0-255 bytes. numbers matter, bestie. πŸ“
  • rx_dest_qnum β€” UDMAP receive flow destination queue configuration to be programmed into the rx_dest_qnum field of the flow's RFLOW_RFA register. The specified destination queue must be valid within the Navigator Subsystem and must be owned by the host, or a subordinate of the host, requesting allocation and configuration of the receive flow. ownership check is not optional, fr fr. 🫢
  • rx_src_tag_hi β€” UDMAP receive flow source tag high byte constant configuration to be programmed into the rx_src_tag_hi field of the flow's RFLOW_RFB register. See the UDMAP section of the TRM for more information on this setting. high byte, high standards ✨
  • rx_src_tag_lo β€” UDMAP receive flow source tag low byte constant configuration to be programmed into the rx_src_tag_lo field of the flow's RFLOW_RFB register. See the UDMAP section of the TRM for more information on this setting. low byte but never low energy πŸ’œ
  • rx_dest_tag_hi β€” UDMAP receive flow destination tag high byte constant configuration to be programmed into the rx_dest_tag_hi field of the flow's RFLOW_RFB register. See the UDMAP section of the TRM for more information on this setting. destination tag high byte said hi πŸ‘‹
  • rx_dest_tag_lo β€” UDMAP receive flow destination tag low byte constant configuration to be programmed into the rx_dest_tag_lo field of the flow's RFLOW_RFB register. See the UDMAP section of the TRM for more information on this setting. low byte, still ate πŸ“
  • rx_src_tag_hi_sel β€” UDMAP receive flow source tag high byte selector configuration to be programmed into the rx_src_tag_hi_sel field of the RFLOW_RFC register. See the UDMAP section of the TRM for more information on this setting. selector era πŸ¦‹
  • rx_src_tag_lo_sel β€” UDMAP receive flow source tag low byte selector configuration to be programmed into the rx_src_tag_lo_sel field of the RFLOW_RFC register. See the UDMAP section of the TRM for more information on this setting. low byte selector, highkey important ✨
  • rx_dest_tag_hi_sel β€” UDMAP receive flow destination tag high byte selector configuration to be programmed into the rx_dest_tag_hi_sel field of the RFLOW_RFC register. See the UDMAP section of the TRM for more information on this setting. destination selector said pick me πŸŽ€
  • rx_dest_tag_lo_sel β€” UDMAP receive flow destination tag low byte selector configuration to be programmed into the rx_dest_tag_lo_sel field of the RFLOW_RFC register. See the UDMAP section of the TRM for more information on this setting. another selector, another slay πŸ’…
  • rx_fdq0_sz0_qnum β€” UDMAP receive flow free descriptor queue 0 configuration to be programmed into the rx_fdq0_sz0_qnum field of the flow's RFLOW_RFD register. See the UDMAP section of the TRM for more information on this setting. The specified free queue must be valid within the Navigator Subsystem and must be owned by the host, or a subordinate of the host, requesting allocation and configuration of the receive flow. queue zero has main character energy. πŸ‘‘
  • rx_fdq1_qnum β€” UDMAP receive flow free descriptor queue 1 configuration to be programmed into the rx_fdq1_qnum field of the flow's RFLOW_RFD register. See the UDMAP section of the TRM for more information on this setting. The specified free queue must be valid within the Navigator Subsystem and must be owned by the host, or a subordinate of the host, requesting allocation and configuration of the receive flow. queue one understood the assignment. ✨
  • rx_fdq2_qnum β€” UDMAP receive flow free descriptor queue 2 configuration to be programmed into the rx_fdq2_qnum field of the flow's RFLOW_RFE register. See the UDMAP section of the TRM for more information on this setting. The specified free queue must be valid within the Navigator Subsystem and must be owned by the host, or a subordinate of the host, requesting allocation and configuration of the receive flow. queue two said RFLOW_RFE this time, not RFD β€” keep up. 🌸
  • rx_fdq3_qnum β€” UDMAP receive flow free descriptor queue 3 configuration to be programmed into the rx_fdq3_qnum field of the flow's RFLOW_RFE register. See the UDMAP section of the TRM for more information on this setting. The specified free queue must be valid within the Navigator Subsystem and must be owned by the host, or a subordinate of the host, requesting allocation and configuration of the receive flow. queue three also ate, no notes. πŸ“
  • rx_ps_location β€” UDMAP receive flow PS words location configuration to be programmed into the rx_ps_location field of the flow's RFLOW_RFA register. location, location, location πŸ’…

πŸ’… Description πŸ’…

Configures a Navigator Subsystem UDMAP receive flow's registers. okay so it's literally doing register configuration for the receive flow. ✨

Configuration does not include the flow registers which handle size-based free descriptor queue routing. important boundary, bestie β€” this struct is not touching those. πŸ™ˆ

The flow index must be assigned to the host defined in the TISCI header via the RM board configuration resource assignment range list. No cap, that assignment rule is the main character here. πŸ‘‘

πŸ‘€ SEE ALSO

Okay bestie, before you close this tab β€” these are the other pages in the same friend group. Same kernel file, same energy, go read them when you need backup:

  • ./drivers/firmware/ti_sci.h β€” the Kernel file itself, the source of truth, the mothership πŸ’–
  • struct ti_sci_msg_hdr(9)
  • struct ti_sci_msg_resp_version(9)
  • struct ti_sci_msg_req_reboot(9)
  • struct ti_sci_msg_resp_query_fw_caps(9)
  • struct ti_sci_msg_req_set_device_state(9)
  • struct ti_sci_msg_req_get_device_state(9)
  • struct ti_sci_msg_resp_get_device_state(9)
  • struct ti_sci_msg_req_set_device_resets(9)
  • struct ti_sci_msg_req_set_clock_state(9)
  • struct ti_sci_msg_req_get_clock_state(9)
  • struct ti_sci_msg_resp_get_clock_state(9)
  • struct ti_sci_msg_req_set_clock_parent(9)
  • struct ti_sci_msg_req_get_clock_parent(9)
  • struct ti_sci_msg_resp_get_clock_parent(9)
  • struct ti_sci_msg_req_get_clock_num_parents(9)
  • struct ti_sci_msg_resp_get_clock_num_parents(9)
  • struct ti_sci_msg_req_query_clock_freq(9)
  • struct ti_sci_msg_resp_query_clock_freq(9)
  • struct ti_sci_msg_req_set_clock_freq(9)
  • struct ti_sci_msg_req_get_clock_freq(9)
  • struct ti_sci_msg_resp_get_clock_freq(9)
  • struct ti_sci_msg_req_prepare_sleep(9)
  • struct ti_sci_msg_req_set_io_isolation(9)
  • struct ti_sci_msg_resp_lpm_wake_reason(9)
  • struct ti_sci_msg_req_lpm_set_device_constraint(9)
  • struct ti_sci_msg_req_lpm_set_latency_constraint(9)
  • struct ti_sci_msg_req_get_resource_range(9)
  • struct ti_sci_msg_resp_get_resource_range(9)
  • struct ti_sci_msg_req_manage_irq(9)
  • struct ti_sci_msg_rm_ring_cfg_req(9)
  • struct ti_sci_msg_psil_pair(9)
  • struct ti_sci_msg_psil_unpair(9)
  • struct ti_sci_msg_udmap_rx_flow_cfg(9)
  • struct rm_ti_sci_msg_udmap_rx_flow_opt_cfg(9)
  • struct ti_sci_msg_rm_udmap_tx_ch_cfg_req(9)
  • struct ti_sci_msg_rm_udmap_rx_ch_cfg_req(9)
  • struct ti_sci_msg_req_proc_request(9)
  • struct ti_sci_msg_req_proc_release(9)
  • struct ti_sci_msg_req_proc_handover(9)
  • struct ti_sci_msg_req_set_config(9)
  • struct ti_sci_msg_req_set_ctrl(9)
  • struct ti_sci_msg_req_get_status(9)
  • struct ti_sci_msg_resp_get_status(9)

Yeah, it's a whole squad β€” forty-three structs and a kernel file, and yes I made you read every single one's name because that's what "every detail" means, bestie 🫢 none of them are getting left on read.

That's the whole page, fr fr β€” nothing skipped, nothing summarised, you're officially caught up on struct ti_sci_msg_rm_udmap_flow_cfg_req(9) πŸ’…βœ¨

This little beauty lives in ./drivers/firmware, it's stamped October 2026, and the running title at the top of every page is struct ti_s...flow_cfg_req(9) (yes, the man page tooling really did truncate it like that, and honestly? relatable 😭). Go forth and configure your flows, icon πŸ‘‘πŸŒΈ

πŸ“¦ where this page comes from