ice_rx_flow_steer(9)
π ice_rx_flow_steer β the kernel API manual, section 9, bestie
okay so like, welcome to ice_rx_flow_steer(9), straight out of the Kernel API Manual β¨ this is the lil function that steers your Rx flow to wherever your app is actually running, and honestly? it's giving main character energy π
β¨ NAME β¨
ice_rx_flow_steer β steer the Rx flow to where application is being run π¦
literally that's the whole vibe. the packets go where the app lives. slay.
πΈ SYNOPSIS πΈ
int ice_rx_flow_steer (struct net_device *netdev , const struct sk_buff
*skb , u16 rxq_idx , u32 flow_id );
no cap, that's the exact signature, don't @ me π
π ARGUMENTS π
netdevβ ptr to the netdev being adjusted. yes bestie, we're touching the netdev πskbβ buffer with required header information. it's carrying the receipts we need π¨rxq_idxβ queue to which the flow needs to move. the new address, the new home, the upgrade πflow_idβ flow identifier provided by the netdev. its little name tag π·οΈ
π DESCRIPTION π
ok so here's the tea β based on the skb, rxq_idx, and flow_id you pass in, we add/update an entry in the aRFS hash table. that's the whole job. iconic.
then we iterate over one of the hlists in the aRFS hash table, and check the vibes π:
- if the
flow_idalready exists in the hash table but therxq_idxhas changed β mark the entry asICE_ARFS_INACTIVEso it can get updated in HW π₯ (it's not being deleted, it's just in its quiet era) - else if the entry is marked as
ICE_ARFS_TODELβ delete it from the aRFS hash table π bye bestie - if neither of the previous conditions are true β add a brand new entry in the aRFS hash table, which gets set to
ICE_ARFS_INACTIVEby default so it can be added to HW β new entry, new me, default-inactive so the hardware can pick it up π«Ά
that's it, that's the algorithm, no notes π
π SEE ALSO π
the kernel file itself, bestie, go read it:
Kernel file ./drivers/net/ethernet/intel/ice/ice_arfs.c
and the whole friend group π§:
ice_is_arfs_active(9)ice_is_arfs_using_perfect_flow(9)ice_arfs_update_active_fltr_cntrs(9)ice_arfs_del_flow_rules(9)ice_arfs_add_flow_rules(9)ice_arfs_is_flow_expired(9)ice_arfs_update_flow_rules(9)ice_sync_arfs_fltrs(9)ice_arfs_build_entry(9)ice_arfs_is_perfect_flow_set(9)ice_arfs_cmp(9)ice_init_arfs_cntrs(9)ice_init_arfs(9)ice_clear_arfs(9)ice_set_cpu_rx_rmap(9)ice_remove_arfs(9)ice_rebuild_arfs(9)
and that's the page!! this little work of art lives in ./drivers/net/ethernet/intel/ice, dated October 2026 β mwah, sending love, go steer some flows 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