i40e_check_fw_empr(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’– NAME πŸ’–

i40e_check_fw_empr β€” the lil function that checks whether the firmware pulled an unexpected EMP Reset on you πŸ‘€ (this is page i40e_check_fw_empr(9) from the Kernel API Manual, section 9, bestie, keep up πŸ’…)


✨ SYNOPSIS ✨

bool i40e_check_fw_empr (struct i40e_pf *pf );

🫢 ARGUMENTS 🫢

  • pf β€” the board private structure. that's it. that's the whole argument list. she's low maintenance πŸ’–

🌸 DESCRIPTION 🌸

okay so here's the tea 🍡 β€” this function goes and peeks at the FW registers to figure out whether the FW issued an unexpected EMP Reset. nosy? maybe. necessary? absolutely.

and here's the part that matters, bestie: every single time an unexpected EMP Reset happens, the FW bumps a counter of unexpected EMP Resets. so it's literally keeping receipts πŸ“. and when that counter hits 10, the FW should dip into Recovery mode. ten strikes and you're in recovery, no cap. πŸ’€

returns true if the FW issued an unexpected EMP Reset. that's the whole vibe check ✨


πŸ¦‹ SEE ALSO πŸ¦‹

first up, the source of truth, the main-character file itself β€” Kernel file ./drivers/net/ethernet/intel/i40e/i40e_main.c πŸ’…

and ngl, the friend group here is huge, so buckle up πŸŽ€:

i40e_hw_to_dev(9), i40e_allocate_dma_mem(9), i40e_free_dma_mem(9), i40e_allocate_virt_mem(9), i40e_free_virt_mem(9), i40e_get_lump(9), i40e_put_lump(9), i40e_find_vsi_from_id(9), i40e_service_event_schedule(9), i40e_tx_timeout(9), i40e_get_vsi_stats_struct(9), i40e_get_netdev_stats_struct_tx(9), i40e_get_netdev_stats_struct(9), i40e_vsi_reset_stats(9), i40e_pf_reset_stats(9), i40e_compute_pci_to_hw_id(9), i40e_stat_update64(9), i40e_stat_update48(9), i40e_stat_update32(9), i40e_stat_update_and_clear32(9), i40e_stats_update_rx_discards(9), i40e_update_eth_stats(9), i40e_update_veb_stats(9), i40e_update_vsi_stats(9), i40e_update_pf_stats(9), i40e_update_stats(9)

the filter girlies πŸ’…: i40e_count_all_filters(9), i40e_count_active_filters(9), i40e_find_filter(9), i40e_find_mac(9), i40e_is_vsi_in_vlan(9), i40e_correct_mac_vlan_filters(9), i40e_get_vf_new_vlan(9), i40e_correct_vf_mac_vlan_filters(9), i40e_rm_default_mac_filter(9), i40e_add_filter(9), __i40e_del_filter(9), i40e_add_mac_filter(9), i40e_del_mac_filter(9), i40e_set_mac(9), i40e_config_rss_aq(9), i40e_vsi_config_rss(9), i40e_vsi_setup_queue_map_mqprio(9), i40e_vsi_setup_queue_map(9), i40e_addr_sync(9), i40e_addr_unsync(9), i40e_set_rx_mode(9), i40e_undo_del_filter_entries(9), i40e_undo_add_filter_entries(9), i40e_next_filter(9), i40e_update_filter_state(9), i40e_aqc_del_filters(9), i40e_aqc_add_filters(9), i40e_aqc_broadcast_filter(9), i40e_set_promiscuous(9), i40e_sync_vsi_filters(9), i40e_sync_filters_subtask(9), i40e_calculate_vsi_rx_buf_len(9), i40e_max_vsi_frame_size(9), i40e_change_mtu(9)

vlan era πŸŽ€: i40e_vlan_stripping_enable(9), i40e_vlan_stripping_disable(9), i40e_add_vlan_all_mac(9), i40e_vsi_add_vlan(9), i40e_rm_vlan_all_mac(9), i40e_vsi_kill_vlan(9), i40e_vlan_rx_add_vid(9), i40e_vlan_rx_add_vid_up(9), i40e_vlan_rx_kill_vid(9), i40e_restore_vlan(9), i40e_vsi_add_pvid(9), i40e_vsi_remove_pvid(9), i40e_vsi_setup_tx_resources(9), i40e_vsi_free_tx_resources(9), i40e_vsi_setup_rx_resources(9), i40e_vsi_free_rx_resources(9), i40e_config_xps_tx_ring(9), i40e_xsk_pool(9), i40e_configure_tx_ring(9), i40e_rx_offset(9), i40e_configure_rx_ring(9), i40e_vsi_configure_tx(9), i40e_vsi_configure_rx(9), i40e_vsi_config_dcb_rings(9), i40e_set_vsi_rx_mode(9), i40e_reset_fdir_filter_cnt(9), i40e_fdir_filter_restore(9), i40e_vsi_configure(9), i40e_vsi_configure_msix(9), i40e_enable_misc_int_causes(9), i40e_configure_msi_and_legacy(9)

irq/vector clan ⚑: i40e_irq_dynamic_disable_icr0(9), i40e_irq_dynamic_enable_icr0(9), i40e_msix_clean_rings(9), i40e_irq_affinity_notify(9), i40e_irq_affinity_release(9), i40e_vsi_request_irq_msix(9), i40e_vsi_disable_irq(9), i40e_vsi_enable_irq(9), i40e_free_misc_vector(9), i40e_intr(9), i40e_clean_fdir_tx_irq(9), i40e_fdir_clean_ring(9), i40e_map_vector_to_qp(9), i40e_vsi_map_rings_to_vectors(9), i40e_vsi_request_irq(9), i40e_netpoll(9), i40e_pf_txq_wait(9), i40e_control_tx_q(9), i40e_control_wait_tx_q(9), i40e_vsi_enable_tx(9), i40e_pf_rxq_wait(9), i40e_control_rx_q(9), i40e_control_wait_rx_q(9), i40e_vsi_enable_rx(9), i40e_vsi_start_rings(9), i40e_vsi_stop_rings(9), i40e_vsi_stop_rings_no_wait(9), i40e_vsi_free_irq(9), i40e_free_q_vector(9), i40e_vsi_free_q_vectors(9), i40e_reset_interrupt_capability(9), i40e_clear_interrupt_scheme(9), i40e_napi_enable_all(9), i40e_napi_disable_all(9), i40e_vsi_close(9), i40e_quiesce_vsi(9), i40e_unquiesce_vsi(9), i40e_pf_quiesce_all_vsi(9), i40e_pf_unquiesce_all_vsi(9), i40e_vsi_wait_queues_disabled(9), i40e_pf_wait_queues_disabled(9)

dcb / tc / bandwidth squad πŸ‘‘: i40e_get_iscsi_tc_map(9), i40e_dcb_get_num_tc(9), i40e_dcb_get_enabled_tc(9), i40e_mqprio_get_enabled_tc(9), i40e_pf_get_num_tc(9), i40e_pf_get_tc_map(9), i40e_vsi_get_bw_info(9), i40e_vsi_configure_bw_alloc(9), i40e_vsi_config_netdev_tc(9), i40e_vsi_update_queue_map(9), i40e_update_adq_vsi_queues(9), i40e_vsi_config_tc(9), i40e_vsi_reconfig_tc(9), i40e_get_link_speed(9), i40e_bw_bytes_to_mbits(9), i40e_set_bw_limit(9), i40e_remove_queue_channels(9), i40e_get_max_queues_for_channel(9), i40e_validate_num_queues(9), i40e_vsi_reconfig_rss(9), i40e_channel_setup_queue_map(9), i40e_add_channel(9), i40e_channel_config_tx_ring(9), i40e_setup_hw_channel(9), i40e_setup_channel(9), i40e_validate_and_set_switch_mode(9), i40e_create_queue_channel(9), i40e_configure_queue_channels(9), i40e_veb_config_tc(9), i40e_dcb_reconfigure(9), i40e_resume_port_tx(9), i40e_suspend_port_tx(9), i40e_hw_set_dcb_config(9), i40e_hw_dcb_config(9), i40e_dcb_sw_default_config(9), i40e_init_pf_dcb(9), i40e_print_link_message(9), i40e_up_complete(9), i40e_vsi_reinit_locked(9), i40e_force_link_state(9), i40e_up(9), i40e_down(9), i40e_validate_mqprio_qopt(9), i40e_vsi_set_default_tc_config(9)

macvlan, cloud filters & tc flower besties πŸ¦‹: i40e_del_macvlan_filter(9), i40e_add_macvlan_filter(9), i40e_reset_ch_rings(9), i40e_free_macvlan_channels(9), i40e_fwd_ring_up(9), i40e_setup_macvlans(9), i40e_fwd_add(9), i40e_del_all_macvlans(9), i40e_fwd_del(9), i40e_setup_tc(9), i40e_set_cld_element(9), i40e_add_del_cloud_filter(9), i40e_add_del_cloud_filter_big_buf(9), i40e_parse_cls_flower(9), i40e_handle_tclass(9), i40e_configure_clsflower(9), i40e_find_cloud_filter(9), i40e_delete_clsflower(9), i40e_setup_tc_cls_flower(9), i40e_open(9), i40e_netif_set_realnum_tx_rx_queues(9), i40e_vsi_open(9), i40e_fdir_filter_exit(9), i40e_cloud_filter_exit(9), i40e_close(9), i40e_do_reset(9), i40e_dcb_need_reconfig(9), i40e_handle_lldp_event(9), i40e_do_reset_safe(9), i40e_handle_lan_overflow_event(9), i40e_get_current_fd_count(9), i40e_get_global_fd_count(9), i40e_reenable_fdir_sb(9), i40e_reenable_fdir_atr(9), i40e_delete_invalid_filter(9), i40e_fdir_check_and_reenable(9), i40e_fdir_flush_and_replay(9), i40e_get_current_atr_cnt(9), i40e_fdir_reinit_subtask(9), i40e_vsi_link_event(9), i40e_veb_link_event(9), i40e_link_event(9), i40e_watchdog_subtask(9), i40e_reset_subtask(9), i40e_handle_link_event(9), i40e_clean_adminq_subtask(9), i40e_verify_eeprom(9), i40e_enable_pf_switch_lb(9), i40e_disable_pf_switch_lb(9), i40e_config_bridge_mode(9), i40e_reconstitute_veb(9), i40e_get_capabilities(9), i40e_fdir_sb_setup(9), i40e_fdir_teardown(9), i40e_rebuild_cloud_filters(9), i40e_rebuild_channels(9), i40e_clean_xps_state(9), i40e_prep_for_reset(9), i40e_send_version(9), i40e_get_oem_version(9), i40e_reset(9), i40e_rebuild(9), i40e_reset_and_rebuild(9), i40e_handle_reset_warning(9), i40e_print_vf_mdd_event(9), i40e_print_vfs_mdd_events(9), i40e_handle_mdd_event(9), i40e_service_task(9), i40e_service_timer(9)

rings, vectors & rss crew πŸŒ€: i40e_set_num_rings_in_vsi(9), i40e_vsi_alloc_arrays(9), i40e_vsi_mem_alloc(9), i40e_vsi_free_arrays(9), i40e_clear_rss_config_user(9), i40e_vsi_clear(9), i40e_vsi_clear_rings(9), i40e_alloc_rings(9), i40e_reserve_msix_vectors(9), i40e_init_msix(9), i40e_vsi_alloc_q_vector(9), i40e_vsi_alloc_q_vectors(9), i40e_init_interrupt_scheme(9), i40e_restore_interrupt_scheme(9), i40e_setup_misc_vector_for_recovery_mode(9), i40e_setup_misc_vector(9), i40e_get_rss_aq(9), i40e_config_rss_reg(9), i40e_get_rss_reg(9), i40e_config_rss(9), i40e_get_rss(9), i40e_fill_rss_lut(9), i40e_pf_config_rss(9), i40e_reconfig_rss_queues(9), i40e_get_partition_bw_setting(9), i40e_set_partition_bw_setting(9), i40e_is_total_port_shutdown_enabled(9), i40e_sw_init(9), i40e_set_ntuple(9), i40e_clear_rss_lut(9), i40e_set_loopback(9), i40e_set_features(9), i40e_ndo_fdb_add(9), i40e_ndo_bridge_setlink(9), i40e_ndo_bridge_getlink(9), i40e_features_check(9), i40e_xdp_setup(9), i40e_enter_busy_conf(9), i40e_exit_busy_conf(9)

queue pairs, vsi & veb girlies πŸ’œ: i40e_queue_pair_reset_stats(9), i40e_queue_pair_clean_rings(9), i40e_queue_pair_toggle_napi(9), i40e_queue_pair_toggle_rings(9), i40e_queue_pair_enable_irq(9), i40e_queue_pair_disable_irq(9), i40e_queue_pair_disable(9), i40e_queue_pair_enable(9), i40e_xdp(9), i40e_config_netdev(9), i40e_vsi_delete(9), i40e_is_vsi_uplink_mode_veb(9), i40e_add_vsi(9), i40e_vsi_release(9), i40e_vsi_setup_vectors(9), i40e_vsi_reinit_setup(9), i40e_vsi_setup(9), i40e_veb_get_bw_info(9), i40e_veb_mem_alloc(9), i40e_switch_branch_release(9), i40e_veb_clear(9), i40e_veb_release(9), i40e_add_veb(9), i40e_veb_setup(9), i40e_setup_pf_switch_element(9), i40e_fetch_switch_configuration(9), i40e_setup_pf_switch(9), i40e_determine_queue_usage(9), i40e_setup_pf_filter_control(9), i40e_get_platform_mac_addr(9), i40e_set_fec_in_flags(9), i40e_check_recovery_mode(9), i40e_pf_loop_reset(9), i40e_handle_resets(9), i40e_init_recovery_mode(9), i40e_set_subsystem_device_id(9), i40e_probe(9), i40e_remove(9), i40e_enable_mc_magic_wake(9), i40e_io_suspend(9), i40e_io_resume(9), i40e_pci_error_detected(9), i40e_pci_error_slot_reset(9), i40e_pci_error_reset_prepare(9), i40e_pci_error_reset_done(9), i40e_pci_error_resume(9), i40e_shutdown(9), i40e_suspend(9), i40e_resume(9), i40e_init_module(9), i40e_exit_module(9)

okay that's literally everyone, go say hi πŸ‘‹βœ¨


ngl reading all of those is a whole cardio session, but that's the full guest list β€” nobody got left off the invite πŸ’Œ

and that's the page, bestie!! πŸŽ€ this lil gem lives in ./drivers/net/ethernet/intel/i40e, dated October 2026, and it's i40e_check_fw_empr(9) β€” go check that FW counter, slay, and remember: ten unexpected EMP Resets and it's recovery mode time πŸ’…πŸ’–

πŸ“¦ where this page comes from