idpf_addr_sync(9)
π idpf_addr_sync β Kernel API Manual realness
okay so bestie, welcome to idpf_addr_sync(9) β part of the Kernel API Manual and honestly kind of a whole vibe. this one's a callback, and yes it's doing the most, but it's also lowkey iconic once you get it. let's go π«Ά
β¨ NAME β¨
idpf_addr_sync β the callback for dev_(mc|uc)_sync that adds an address. that's it, that's the job π
π¦ SYNOPSIS π¦
int idpf_addr_sync (struct net_device *netdev , const u8 *addr );
π ARGUMENTS π
netdevβ the netdevice, our main character πaddrβ the address to add. the one we're syncing. slay β¨
πΈ DESCRIPTION πΈ
okay so here's the tea. this gets called by __dev_(mc|uc)_sync whenever an address needs to be added, bestie. and inside all of that, we call __dev_(uc|mc)_sync from .set_rx_mode. iykyk.
but here's the thing β the kernel takes the addr_list_lock spinlock, meaning we literally cannot sleep in this context π. not me being trapped in atomic context. so because of that, we have to add the filter and send the virtchnl message asynchronously, without waiting for the response from the other side. we're sending it and moving on, no cap.
which meansβ¦ we won't know whether the operation actually succeeded or not until we get the message back π. fr fr, that's just how it is.
it returns 0 on success, and negative on failure. periodt π
π₯ SEE ALSO π₯
Kernel file ./drivers/net/ethernet/intel/idpf/idpf_lib.c
and now the whole friend group, no one left out π:
idpf_init_vector_stack(9)idpf_deinit_vector_stack(9)idpf_mb_intr_rel_irq(9)idpf_intr_rel(9)idpf_mb_intr_clean(9)idpf_mb_irq_enable(9)idpf_mb_intr_req_irq(9)idpf_mb_intr_init(9)idpf_vector_lifo_push(9)idpf_vector_lifo_pop(9)idpf_vector_stash(9)idpf_req_rel_vector_indexes(9)idpf_intr_req(9)idpf_del_all_flow_steer_filters(9)idpf_find_mac_filter(9)__idpf_del_mac_filter(9)idpf_del_mac_filter(9)__idpf_add_mac_filter(9)idpf_add_mac_filter(9)idpf_del_all_mac_filters(9)idpf_restore_mac_filters(9)idpf_remove_mac_filters(9)idpf_deinit_mac_addr(9)idpf_init_mac_addr(9)idpf_cfg_netdev(9)idpf_get_free_slot(9)idpf_remove_features(9)idpf_vport_stop(9)idpf_stop(9)idpf_decfg_netdev(9)idpf_vport_rel(9)idpf_vport_dealloc(9)idpf_is_hsplit_supported(9)idpf_vport_get_hsplit(9)idpf_vport_set_hsplit(9)idpf_vport_alloc(9)idpf_get_stats64(9)idpf_statistics_task(9)idpf_mbx_task(9)idpf_service_task(9)idpf_restore_features(9)idpf_set_real_num_queues(9)idpf_up_complete(9)idpf_rx_init_buf_tail(9)idpf_vport_open(9)idpf_init_task(9)idpf_sriov_ena(9)idpf_sriov_configure(9)idpf_deinit_task(9)idpf_check_reset_complete(9)idpf_init_hard_reset(9)idpf_vc_event_task(9)idpf_initiate_soft_reset(9)idpf_addr_unsync(9)idpf_set_rx_mode(9)idpf_set_features(9)idpf_open(9)idpf_change_mtu(9)idpf_chk_tso_segment(9)idpf_features_check(9)idpf_set_mac(9)
bestie reminder: addr_list_lock is held, you cannot sleep here, and the async message means you find out if it worked later. that's not me being dramatic, that's the manual π
and that's the whole page! mwah π this one lives at ./drivers/net/ethernet/intel/idpf, comes to you from October 2026, and it's signed off as idpf_addr_sync(9) β catch you in the next man page, love u, bye π§ββοΈπ
π¦ 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