i40e_stat_update48(9)
π i40e_stat_update48(9) β the manual page, bestie edition π
okay so this is i40e_stat_update48(9) from the Kernel API Manual, and honestly? it's a little 48-bit legend. she reads a chip stat, she keeps it honest, she slays. let's get into it β¨
πΈ NAME πΈ
i40e_stat_update48 β read and update a 48 bit stat from the chip. that's it, that's her whole job π
β¨ SYNOPSIS β¨
void i40e_stat_update48 (struct i40e_hw *hw , u32 hireg , u32 loreg ,
bool offset_loaded , u64 *offset , u64 *stat );
like, that's the whole vibe check right there π
π«Ά ARGUMENTS π«Ά
hwβ ptr to the hardware info. the main character struct, we love her πhiregβ the high 32 bit reg to read. the upper half, highkey important π₯loregβ the low 32 bit reg to read. the lower half, equally iconic β¨offset_loadedβ has the initial offset been loaded yet. yes/no,boolstyle, no cap πoffsetβ ptr to current offset value. the little subtraction number we keep around πstatβ ptr to the stat. this is where the answer ends up, periodt π
π¦ DESCRIPTION π¦
here's the tea, bestie: the device stats are not reset at PFReset, so they likely will not be zeroed when the driver starts. like, they just be carrying old numbers around with no shame π
so what do we do? we save the first values we read and use them as offsets to be subtracted from the raw values, in order to report stats that count from zero. iconique behaviour, truly π§
and in the process, we also manage the potential roll-over. not me handling overflow AND being cute πβ¨
π SEE ALSO π
first up, the source file herself:
- Kernel file
./drivers/net/ethernet/intel/i40e/i40e_main.c
and now the extended friend group (the whole i40e family tree, fr fr β every single one, no skips π):
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_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)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)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),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)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),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),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)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_check_fw_empr(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)
and that's the whole page, bestie π«Άβ¨
this little legend comes from ./drivers/net/ethernet/intel/i40e β October 2026 era, and honestly she ate π
π ngl, go read your stats, subtract your offsets, and manage that roll-over like the main character you are πΈπ
π¦ 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