netdev_lowe...next_private(9)
π netdev_lower_get_next_private(9) π
okay so this is a page from the Kernel API Manual, section 9, and it's all about walking a device's lower-neighbour list one ->private at a time. bestie, it's shorter than you'd think but lowkey important, so let's go π«Ά
β¨ NAME β¨
netdev_lower_get_next_private β grab the next ->private out of the lower neighbour list π₯
πΈ SYNOPSIS πΈ
void * netdev_lower_get_next_private (struct net_device *dev , struct list_head **iter );
likeβ¦ that's the whole signature, no notes π
π ARGUMENTS π
devβ the device. yes, that device π¦iterβ alist_head **that points at your current position in the list. it's a pointer to a pointer, she's fancy like that β¨
π DESCRIPTION π
okay so picture this: dev has a lower neighbour list, right? this function gets you the next netdev_adjacent->private from that list, starting from wherever iter is currently sitting. it's giving iterator energy, it's giving "walk the list" realness πΆββοΈπ¨
β οΈ but here's the part where you gotta pay attention, bestie: the caller must either hold the RTNL lock, or hold its own locking that guarantees the neighbour lower list is gonna stay unchanged. no cap, if you skip this the list can shift under you and it's giving undefined chaos π
π SEE ALSO π
kernel file ./net/core/dev.c β and the friend group is huge, so strap in π
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_rx_queues(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_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, we ate that β¨ this cutie lives under ./net/core, the Kernel API Manual edition, dated October 2026 β mwah, go hold that lock ππ
π¦ 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