netif_set_re...um_rx_queues(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

✨ netif_set_real_num_rx_queues(9) ✨

okay so real talk bestie, this is a page straight out of the Kernel API Manual and it's giving "small function, big responsibilities" energy πŸ‘‘ like yes it's one function but it's the function that tells the kernel how many RX queues your network device is actually running with. slay.


🌸 NAME 🌸

netif_set_real_num_rx_queues β€” set the actual number of RX queues in use πŸ’–


πŸ¦‹ SYNOPSIS πŸ¦‹

int netif_set_real_num_rx_queues (struct net_device *dev , unsigned int
rxq );

πŸŽ€ ARGUMENTS πŸŽ€

  • dev β€” your network device, the main character of this whole situation 🫢
  • rxq β€” the actual number of RX queues (like, the real ones, not the wishlist ones) ✨

πŸ’… DESCRIPTION πŸ’…

okay so here's the vibe check: you must call this either with the rtnl_lock held, or before the net device gets registered. those are the two valid moments, no cap. πŸ™ˆ

It returns 0 on success, or a negative error code if things went sideways 😭.

And here's the cute little detail β€” if you call it before registration, it always succeeds. literally always. iconic behavior tbh πŸ’€βœ¨

no cap: the lock-or-before-registration rule is not a suggestion, bestie. respect it. 🚨

🌈 SEE ALSO 🌈

all the friends in the kernel file ./net/core/dev.c β€” go say hi, they're all linked, fr fr 🧚:

dev_add_pack(9), __dev_remove_pack(9), dev_remove_pack(9), dev_get_iflink(9), dev_fill_metadata_dst(9), netdev_napi_by_id_lock(9), __dev_get_by_name(9), dev_get_by_name_rcu(9), netdev_get_by_name(9), __dev_get_by_index(9), dev_get_by_index_rcu(9), netdev_get_by_index(9), dev_get_by_napi_id(9), netdev_get_by_index_lock(9), netdev_get_name(9), dev_getbyhwaddr_rcu(9), dev_getbyhwaddr(9), netdev_get_by_flags_rcu(9), dev_valid_name(9), __dev_alloc_name(9), dev_alloc_name(9), dev_get_alias(9), netdev_features_change(9), __netdev_notify_peers(9), netdev_notify_peers(9), dev_disable_gro_hw(9), register_netdevice_notifier(9), unregister_netdevice_notifier(9), register_netdevice_notifier_net(9), unregister_netdevice_notifier_net(9), call_netdevice_notifiers_info(9), call_netdevice_notifiers_info_robust(9), call_netdevice_notifiers(9), call_netdevice_notifiers_mtu(9), dev_forward_skb(9), dev_nit_active_rcu(9), netif_setup_tc(9), netif_set_real_num_queues(9), netif_set_tso_max_size(9), netif_set_tso_max_segs(9), netif_inherit_tso_max(9), netif_get_num_default_rss_queues(9), netif_device_detach(9), netif_device_attach(9), dev_loopback_xmit(9), __dev_queue_xmit(9), rps_flow_is_active(9), rps_may_expire_flow(9), __netif_rx(9), netif_rx(9), netdev_is_rx_handler_busy(9), netdev_rx_handler_register(9), netdev_rx_handler_unregister(9), netif_receive_skb_core(9), netif_receive_skb(9), netif_receive_skb_list(9), __napi_schedule(9), napi_schedule_prep(9), __napi_schedule_irqoff(9), netif_threaded_enable(9), netif_queue_set_napi(9), napi_disable(9), napi_enable(9), netdev_has_upper_dev(9), netdev_has_upper_dev_all_rcu(9), netdev_has_any_upper_dev(9), netdev_master_upper_dev_get(9), netdev_has_any_lower_dev(9), netdev_upper_get_next_dev_rcu(9), netdev_lower_get_next_private(9), netdev_lower_get_next_private_rcu(9), netdev_lower_get_next(9), netdev_lower_get_first_private_rcu(9), netdev_master_upper_dev_get_rcu(9), netdev_upper_dev_link(9), netdev_master_upper_dev_link(9), netdev_upper_dev_unlink(9), netdev_bonding_info_change(9), netdev_get_xmit_slave(9), netdev_sk_get_lowest_dev(9), netdev_lower_state_changed(9), netif_get_flags(9), netif_set_mtu_ext(9), netif_pre_changeaddr_notify(9), dev_get_phys_port_id(9), dev_get_phys_port_name(9), netif_get_port_parent_id(9), netdev_port_same_parent_id(9), netdev_change_proto_down_reason_locked(9), dev_change_xdp_fd(9), dev_index_reserve(9), netdev_update_features(9), netdev_change_features(9), netif_stacked_transfer_operstate(9), register_netdevice(9), register_netdev(9), netdev_wait_allrefs_any(9), dev_get_stats(9), dev_fetch_sw_netstats(9), dev_get_tstats64(9), netdev_sw_irq_coalesce_default_on(9), alloc_netdev_mqs(9), free_netdev(9), alloc_netdev_dummy(9), synchronize_net(9), unregister_netdevice_queue(9), unregister_netdevice_many(9), unregister_netdev(9), netdev_increment_features(9), netdev_compute_master_upper_features(9), netdev_drivername(9)


and that's the whole page bestie, 10/10 no notes πŸ’œ

okay so the sign-off: this lil beauty lives under ./net/core and it's dated October 2026 β€” screenshot it, frame it, put it on the fridge πŸŽ€πŸ¦‹ iykyk ✨

πŸ“¦ where this page comes from