port_r_mib_cnt(9)
πΈ port_r_mib_cnt πΈ
okay so this is a page from the Kernel API Manual, and it's literally about one tiny lil function that reads a MIB counter for a port π yes bestie, it's a kernel function, we're in driver land now, buckle up π
β¨ NAME β¨
port_r_mib_cnt β read MIB counter
likeβ¦ that's it. that's the whole name. it reads a MIB counter. iconic, concise, no notes π«Ά
π SYNOPSIS π
void port_r_mib_cnt (struct ksz_hw *hw , int port , u16 addr , u64 *cnt
);
ok so it returns void, meaning it hands you nothing back, the whole point is the cnt pointer it fills in for you. main character energy is the buffer, honestly π
π¦ ARGUMENTS π¦
hwβ the hardware instance. this is your switch/hardware thing, the big one β¨portβ the port index. which port we're talking about, fr fr.addrβ the address of the counter. where the counter lives.cntβ buffer to store the counter. this is the output spot, it's where the answer ends up πΈ
π DESCRIPTION π
so this routine reads a MIB counter of the port β¨ that's the vibe. it goes and grabs the counter value for you.
but here's the important part, bestie β hardware interrupts are disabled while this happens, and that's on purpose: it's to minimize corruption of read data π like, no cap, you do not want your counter read getting messed up mid-read, so interrupts get blocked for a sec. lowkey a big deal, highkey necessary π«Ά
β οΈ heads up: interrupts are disabled during the read. this is intentional β it minimizes corruption of read data. don't come for it, it's doing its job π
π SEE ALSO π
Kernel file ./drivers/net/ethernet/micrel/ksz884x.c struct ksz_hw_desc(9), struct ksz_sw_desc(9), struct ksz_dma_buf(9), struct ksz_desc(9), struct ksz_desc_info(9), struct ksz_mac_table(9), struct ksz_vlan_table(9), struct ksz_port_mib(9), struct ksz_port_cfg(9), struct ksz_switch(9), struct ksz_port_info(9), struct ksz_hw(9), struct ksz_port(9), struct ksz_timer_info(9), struct ksz_shared_mem(9), struct ksz_counter_info(9), struct dev_info(9), struct dev_priv(9), hw_turn_on_intr(9), hw_block_intr(9), sw_r_table(9), sw_w_table_64(9), sw_w_sta_mac_table(9), sw_r_vlan_table(9), port_r_mib_pkt(9), port_r_cnt(9), port_init_cnt(9), port_cfg(9), port_r8(9), port_r16(9), port_w16(9), sw_chk(9), sw_cfg(9), sw_cfg_broad_storm(9), sw_get_broad_storm(9), sw_dis_broad_storm(9), sw_ena_broad_storm(9), sw_init_broad_storm(9), hw_cfg_broad_storm(9), sw_dis_prio_rate(9), sw_init_prio_rate(9), sw_dis_diffserv(9), sw_dis_802_1p(9), sw_cfg_replace_null_vid(9), sw_cfg_replace_vid(9), sw_cfg_port_based(9), sw_dis_multi_queue(9), sw_init_prio(9), port_get_def_vid(9), sw_init_vlan(9), sw_cfg_port_base_vlan(9), sw_set_addr(9), sw_set_global_ctrl(9), port_set_stp_state(9), sw_clr_sta_mac_table(9), sw_init_stp(9), sw_block_addr(9), hw_r_phy(9), hw_w_phy(9), eeprom_read(9), eeprom_write(9), port_get_link_speed(9), port_set_link_speed(9), port_force_link_speed(9), hw_chk_wol_pme_status(9), hw_clr_wol_pme_status(9), hw_cfg_wol_pme(9), hw_cfg_wol(9), hw_set_wol_frame(9), hw_add_wol_arp(9), hw_add_wol_bcast(9), hw_add_wol_mcast(9), hw_add_wol_ucast(9), hw_enable_wol(9), hw_init(9), hw_reset(9), hw_setup(9), hw_setup_intr(9), hw_set_desc_base(9), hw_start_rx(9), hw_stop_rx(9), hw_start_tx(9), hw_stop_tx(9), hw_disable(9), hw_enable(9), hw_alloc_pkt(9), hw_send_pkt(9), hw_set_addr(9), hw_read_addr(9), hw_clr_multicast(9), hw_set_grp_addr(9), hw_set_multicast(9), hw_set_promiscuous(9), sw_enable(9), sw_setup(9), ksz_start_timer(9), ksz_stop_timer(9), ksz_alloc_soft_desc(9), ksz_alloc_desc(9), free_dma_buf(9), ksz_init_rx_buffers(9), ksz_alloc_mem(9), ksz_free_desc(9), ksz_free_buffers(9), ksz_free_mem(9), send_packet(9), transmit_cleanup(9), tx_done(9), netdev_tx(9), netdev_tx_timeout(9), netdev_intr(9), netdev_close(9), netdev_open(9), netdev_query_statistics(9), netdev_set_mac_address(9), netdev_set_rx_mode(9), netdev_ioctl(9), mdio_read(9), mdio_write(9), netdev_get_link_ksettings(9), netdev_set_link_ksettings(9), netdev_nway_reset(9), netdev_get_link(9), netdev_get_drvinfo(9), netdev_get_regs_len(9), netdev_get_regs(9), netdev_get_wol(9), netdev_set_wol(9), netdev_get_msglevel(9), netdev_set_msglevel(9), netdev_get_eeprom_len(9), netdev_get_eeprom(9), netdev_set_eeprom(9), netdev_get_pauseparam(9), netdev_set_pauseparam(9), netdev_get_ringparam(9), netdev_get_strings(9), netdev_get_sset_count(9), netdev_get_ethtool_stats(9), netdev_set_features(9), dev_monitor(9), netdev_init(9)
likeβ¦ that's a lot of friends, bestie, but every single one of them is listed and we're not skipping a single one πβ¨ iykyk
ok that's the whole page, mwah π this lil guy lives in ./drivers/net/ethernet/micrel, and this edition is dated October 2026 ποΈπ go read your counters, bestie, and remember: interrupts stay off during the read. periodt. π
π¦ 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