hw_r_phy(9)
π NAME π
Welcome to hw_r_phy(9) from the Kernel API Manual, bestie π This is the routine whose whole job is to read data from a PHY register. Thatβs the name, thatβs the mission, no cap.
β¨ SYNOPSIS β¨
void hw_r_phy (struct ksz_hw *hw , int port , u16 reg , u16 *val );
π ARGUMENTS π
hwβ the hardware instance. Your main-character hardware struct π«Άportβ the port to read. Gotta know which port weβre looking at.regβ the PHY register to read. This is the specific register in question, bestie.valβ the buffer to store the read data. The read data goes here, iconic behavior π
π¦ DESCRIPTION π¦
Okay so picture this: this routine reads data from the PHY register. Thatβs the whole plot. Itβs void, so thereβs no return value to catch β the read data goes into the val buffer you passed in. Simple, clean, lowkey essential β¨
π SEE ALSO π
The kernel file this lives in is ./drivers/net/ethernet/micrel/ksz884x.c, and the whole friend group is tagged in below β yes, every single one, because we do not leave anyone on read π
- 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_cnt(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_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)
okay thatβs the page, bestie β source/version ./drivers/net/ethernet/micrel, dated October 2026. stay iconic π
β¨
π¦ 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