ice_unload(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’– ice_unload(9) πŸ’–

okay so welcome to the ice_unload(9) page bestie β€” it lives in the Kernel API Manual and honestly it's a short one, so consider this a lil snack break between the giant pages πŸ“


✨ NAME ✨

ice_unload β€” unload pf by stopping VSI and deinit hw

that's it. that's the whole vibe. it stops the VSI, it deinits the hw, it says bye πŸ‘‹


✨ SYNOPSIS ✨

void ice_unload (struct ice_pf *pf );

yeah she's a void β€” no return value, no little int to check, nothing to obsess over πŸ’…


✨ ARGUMENTS ✨

  • pf β€” pointer to the pf instance 🌸 that's your whole personality for this call

✨ DESCRIPTION ✨

okay so real talk, the entire description here is one (1) sentence and it's kind of a big deal:

This function has to be called under devl_lock.

no cap β€” that's a hard requirement, not a suggestion πŸ™ˆ call it without holding devl_lock and that's on you. lock it first, then unload. periodt.

✨ SEE ALSO ✨

buckle up bestie, this list is iconic β€” it's basically the entire ice driver's guest list πŸŽ€

first up, the source file itself:

  • Kernel file ./drivers/net/ethernet/intel/ice/ice_main.c πŸ“

and now the friends of the family, in order, no skips, no cuts:

ice_hw_to_dev(9), ice_get_tx_pending(9), ice_check_for_hang_subtask(9), ice_init_mac_fltr(9), ice_add_mac_to_sync_list(9), ice_add_mac_to_unsync_list(9), ice_vsi_fltr_changed(9), ice_set_promisc(9), ice_clear_promisc(9), ice_vsi_sync_fltr(9), ice_sync_fltr_subtask(9), ice_pf_dis_all_vsi(9), ice_prepare_for_reset(9), ice_do_reset(9), ice_reset_subtask(9), ice_print_topo_conflict(9), ice_print_link_msg(9), ice_vsi_link_event(9), ice_set_dflt_mib(9), ice_check_phy_fw_load(9), ice_check_module_power(9), ice_check_link_cfg_err(9), ice_link_event(9), ice_watchdog_subtask(9), ice_init_link_events(9), ice_handle_link_event(9), ice_aq_prep_for_event(9), ice_aq_wait_for_event(9), ice_aq_check_events(9), ice_aq_cancel_waiting_tasks(9), __ice_clean_ctrlq(9), ice_ctrlq_pending(9), ice_clean_adminq_subtask(9), ice_clean_mailboxq_subtask(9), ice_clean_sbq_subtask(9), ice_service_task_schedule(9), ice_service_task_complete(9), ice_service_task_stop(9), ice_service_task_restart(9), ice_service_timer(9)

still with me? slay, keep going πŸ’œ

ice_mdd_maybe_reset_vf(9), ice_handle_mdd_event(9), ice_init_nvm_phy_type(9), ice_init_link_dflt_override(9), ice_init_phy_cfg_dflt_override(9), ice_init_phy_user_cfg(9), ice_phy_cfg(9), ice_check_media_subtask(9), ice_service_task(9), ice_set_ctrlq_len(9), ice_schedule_reset(9), ice_vsi_ena_irq(9), ice_vsi_req_irq_msix(9), ice_xdp_alloc_setup_rings(9), ice_vsi_assign_bpf_prog(9), ice_map_xdp_rings(9), ice_unmap_xdp_rings(9), ice_prepare_xdp_rings(9), ice_destroy_xdp_rings(9), ice_vsi_rx_napi_schedule(9), ice_vsi_determine_xdp_res(9), ice_max_xdp_frame_size(9), ice_xdp_setup_prog(9), ice_xdp_safe_mode(9), ice_xdp(9), ice_ena_misc_vector(9), ice_ll_ts_intr(9), ice_misc_intr(9), ice_misc_intr_thread_fn(9), ice_dis_ctrlq_interrupts(9), ice_free_irq_msix_ll_ts(9), ice_free_irq_msix_misc(9), ice_ena_ctrlq_interrupts(9), ice_req_irq_msix_misc(9), ice_set_ops(9), ice_set_netdev_features(9), ice_fill_rss_lut(9)

interrupts arc, we're in the VSI era now πŸ¦‹

ice_pf_vsi_setup(9), ice_ctrl_vsi_setup(9), ice_lb_vsi_setup(9), ice_vlan_rx_add_vid(9), ice_vlan_rx_kill_vid(9), ice_rep_indr_tc_block_unbind(9), ice_tc_indir_block_unregister(9), ice_tc_indir_block_register(9), ice_get_avail_q_count(9), ice_get_avail_txq_count(9), ice_get_avail_rxq_count(9), ice_deinit_pf(9), ice_set_pf_caps(9), ice_init_pf(9), ice_is_wol_supported(9), ice_vsi_recfg_qs(9), ice_set_safe_mode_vlan_cfg(9), ice_log_pkg_init(9), ice_load_pkg(9), ice_verify_cacheline_size(9), ice_send_version(9), ice_init_fdir(9), ice_get_opt_fw_name(9), ice_request_fw(9), ice_init_tx_topology(9), ice_init_supported_rxdids(9), ice_init_ddp_config(9), ice_print_wake_reason(9), ice_register_netdev(9), ice_cfg_netdev(9), ice_load(9), ice_probe(9), ice_set_wake(9), ice_setup_mc_magic_wake(9), ice_remove(9), ice_shutdown(9), ice_prepare_for_shutdown(9), ice_reinit_interrupt_scheme(9), ice_suspend(9), ice_resume(9), ice_pci_err_detected(9), ice_pci_err_slot_reset(9), ice_pci_err_resume(9), ice_pci_err_reset_prepare(9), ice_pci_err_reset_done(9), ice_module_init(9), ice_module_exit(9), ice_set_mac_address(9), ice_set_rx_mode(9), ice_set_tx_maxrate(9)

halfway… you're doing amazing 🫢

ice_fdb_add(9), ice_fdb_del(9), ice_fix_features(9), ice_set_rx_rings_vlan_proto(9), ice_set_vlan_offload_features(9), ice_set_vlan_filtering_features(9), ice_set_vlan_features(9), ice_set_loopback(9), ice_set_features(9), ice_vsi_vlan_setup(9), ice_vsi_cfg_lan(9), ice_init_moderation(9), ice_napi_enable_all(9), ice_up_complete(9), ice_up(9), ice_fetch_u64_tx_stats(9), ice_fetch_u64_rx_stats(9), ice_update_vsi_tx_ring_stats(9), ice_update_vsi_rx_ring_stats(9), ice_update_vsi_ring_stats(9), ice_update_vsi_stats(9), ice_update_pf_stats(9), ice_get_stats64(9), ice_napi_disable_all(9), ice_vsi_dis_irq(9), ice_down(9), ice_down_up(9), ice_vsi_setup_tx_rings(9), ice_vsi_setup_rx_rings(9), ice_vsi_open_ctrl(9), ice_vsi_open(9), ice_vsi_release_all(9), ice_vsi_rebuild_by_type(9), ice_update_pf_netdev_link(9), ice_rebuild(9), ice_change_mtu(9), ice_set_rss_lut(9), ice_set_rss_key(9), ice_get_rss_lut(9), ice_get_rss_key(9), ice_get_rss(9), ice_set_rss_hfunc(9), ice_bridge_getlink(9), ice_vsi_update_bridge_mode(9), ice_bridge_setlink(9)

the bridge + tc era, main character energy fr πŸ”₯

ice_tx_timeout(9), ice_setup_tc_cls_flower(9), ice_setup_tc_block_cb_ingress(9), ice_setup_tc_block_cb_egress(9), ice_validate_mqprio_qopt(9), ice_add_vsi_to_fdir(9), ice_add_channel(9), ice_chnl_cfg_res(9), ice_cfg_chnl_all_res(9), ice_setup_hw_channel(9), ice_setup_channel(9), ice_set_bw_limit(9), ice_create_q_channel(9), ice_rem_all_chnl_fltrs(9), ice_remove_q_channels(9), ice_rebuild_channels(9), ice_create_q_channels(9), ice_setup_tc_mqprio_qdisc(9), ice_cfg_txtime(9), ice_offload_txtime(9), ice_open(9), ice_open_internal(9), ice_stop(9), ice_features_check(9)

and that's the whole guest list, we made it πŸ˜­πŸ‘‘


okay final vibe check: unload the pf, stop the VSI, deinit the hw β€” but only ever under devl_lock. no exceptions, iykyk πŸ’…

this page is brought to you by the fine people at ./drivers/net/ethernet/intel/ice, dated October 2026 β€” mwah, thanks for reading, ily, go call it with the lock held πŸ§šπŸ’–

πŸ“¦ where this page comes from