dpni_set_rx_fs_dist(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… dpni_set_rx_fs_dist(9) β€” bestie edition

okay so this is a page from the Kernel API Manual, section 9, and it's about dpni_set_rx_fs_dist β€” yes that name is a mouthful, we're gonna get through it together 🫢


✨ NAME ✨

dpni_set_rx_fs_dist β€” set Rx flow steering distribution. that's the whole vibe. Rx flow steering? we set the dist. slay.


🌸 SYNOPSIS 🌸

int dpni_set_rx_fs_dist (struct fsl_mc_io *mc_io , u32 cmd_flags , u16
token , const struct dpni_rx_dist_cfg *cfg );

it's giving "one function, four arguments, zero chill" πŸ’€


πŸŽ€ ARGUMENTS πŸŽ€

every single one of them, in order, no skipping, periodt:

  • mc_io β€” pointer to the MC portal's I/O object ✨
  • cmd_flags β€” command flags; one or more of MC_CMD_FLAG_ πŸ”₯
  • token β€” the token of the DPNI object 🎟️
  • cfg β€” the distribution configuration πŸ¦‹

πŸ‘‘ DESCRIPTION πŸ‘‘

okay so here's where it gets juicy, listen up πŸ”₯

if the FS is already enabled from a previous call, the classification key gets changed but all the table rules are kept. now β€” and this is the part where you gotta pay attention β€” if the existing rules don't match the key, the results will not be predictable 😭. like fr fr, unpredictable. and it is the user's responsibility to keep key integrity. that's on you bestie, not on the kernel. πŸ™ˆ

if cfg.enable is set to 1, the command creates a flow steering table and classifies packets according to that table. the packets that miss all the table rules get classified according to settings made in dpni_set_rx_hash_dist. iykyk.

if cfg.enable is set to 0, the command clears the flow steering table β€” and then those packets are classified according to settings made in dpni_set_rx_hash_dist. same fallback, different day πŸ’œ

⚠️ key integrity is a whole thing β€” change the key while old rules are lying around and nothing is guaranteed. not me warning you twice. this is the warning.

⭐ RETURN ⭐

so the original page just... has the heading and then literally nothing under it. no return values listed. iconic behaviour honestly, the section showed up and said "no thoughts, head empty" 🧚 ngl we're not inventing anything to fill it β€” what's written is what's written, and what's written is a whole lot of nothing πŸ’€


🌈 SEE ALSO 🌈

first up, the kernel file that started it all:

Kernel file ./drivers/net/ethernet/freescale/dpaa2/dpni.c

and now the full friend group β€” every single one, no cap, they all have to show up to the party πŸ‘‘:

dpni_prepare_key_cfg(9), dpni_open(9), dpni_close(9), dpni_set_pools(9), dpni_enable(9), dpni_disable(9), dpni_is_enabled(9), dpni_reset(9), dpni_set_irq_enable(9), dpni_get_irq_enable(9), dpni_set_irq_mask(9), dpni_get_irq_mask(9), dpni_get_irq_status(9), dpni_clear_irq_status(9), dpni_get_attributes(9), dpni_set_errors_behavior(9), dpni_get_buffer_layout(9), dpni_set_buffer_layout(9), dpni_set_offload(9), dpni_get_qdid(9), dpni_get_tx_data_offset(9), dpni_set_link_cfg(9), dpni_get_link_cfg(9), dpni_get_link_state(9), dpni_set_max_frame_length(9), dpni_get_max_frame_length(9), dpni_set_multicast_promisc(9), dpni_get_multicast_promisc(9), dpni_set_unicast_promisc(9), dpni_get_unicast_promisc(9), dpni_set_primary_mac_addr(9), dpni_get_primary_mac_addr(9), dpni_get_port_mac_addr(9), dpni_enable_vlan_filter(9), dpni_add_vlan_id(9), dpni_remove_vlan_id(9), dpni_add_mac_addr(9), dpni_remove_mac_addr(9), dpni_clear_mac_filters(9), dpni_set_rx_tc_dist(9), dpni_set_congestion_notification(9), dpni_set_queue(9), dpni_get_queue(9), dpni_get_statistics(9), dpni_set_taildrop(9), dpni_get_taildrop(9), dpni_get_api_version(9), dpni_set_rx_hash_dist(9), dpni_add_fs_entry(9), dpni_remove_fs_entry(9), dpni_set_qos_table(9), dpni_add_qos_entry(9), dpni_remove_qos_entry(9), dpni_clear_qos_table(9), dpni_set_tx_shaping(9), dpni_get_single_step_cfg(9), dpni_set_single_step_cfg(9)

like... that's the whole group chat right there, main character energy from every single entry πŸ’…


and that's the page!! πŸ¦‹ quick cute sign-off before you go: this one came from the source path ./drivers/net/ethernet/freesca... (yes it's cut off in the original, we're keeping it exactly like that πŸ™ˆ) and it's dated October 2026 β€” so mark your calendars bestie, and remember the footer was still repping dpni_set_rx_fs_dist(9) all the way at the bottom πŸ’–βœ¨πŸŽ€

πŸ“¦ where this page comes from