idpf_addr_unsync(9)
π idpf_addr_unsync β Kernel API Manual, bestie edition π
okay so welcome to the idpf_addr_unsync page, straight outta the Kernel API Manual β¨ grab a straw, sip your iced matcha, and let's get into it π
πΈ NAME πΈ
idpf_addr_unsync β the callback for dev_(mc|uc)_sync that removes an address π«Ά
(yes, unsync = remove, keep that in your notes bestie, because the DESCRIPTION is gonna say "add" and we're just gonna sit with that together π)
β¨ SYNOPSIS β¨
int idpf_addr_unsync (struct net_device *netdev , const u8 *addr );
int return type, netdev pointer, addr pointer, that's the whole vibe π
π¦ ARGUMENTS π¦
netdevβ the netdevice π that's the whole thing right thereaddrβ the address to add π (yes, the original says "add" on the unsync page β we're reporting, not editorializing, iykyk)
π₯ DESCRIPTION π₯
So __dev_(mc|uc)_sync calls this whenever an address needs to be added. We call __dev_(uc|mc)_sync from .set_rx_mode β that's the entry point, no cap β
Here's the tea though π΅ the kernel takes the addr_list_lock spinlock, which literally means we cannot sleep in this context π so because of that, we have to delete the filter and send the virtchnl message asynchronously, without waiting for the return from the other side. No blocking, no waiting, no main character energy from us π
Which meansβ¦ we won't know whether or not the operation actually succeeded until we get the message back π« fr fr. It's giving "sent the text, now we wait" energy.
Returns 0 on success, negative on failure π
lowkey important: spinlock held β can't sleep β async message β result is a mystery until it comes back. That's the whole plot π
π SEE ALSO π
Kernel file ./drivers/net/ethernet/intel/idpf/idpf_lib.c π
and the whole friend group π«Ά:
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_sync(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)
like the whole idpf directory said "we're all coming to the function page" π§π
mwah π this little page lives at ./drivers/net/ethernet/intel/idpf, dated October 2026, and it's idpf_addr_unsync(9) β that's the source, the version vibe, and the date all rolled into one cute lil sign-off πβ¨ bye bestie, go delete some filters (async, obviously) π
π¦ 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