phylink_mii_ioctl(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

🌸 NAME 🌸

okay so welcome to the Kernel API Manual, section 9, bestie: this page is phylink_mii_ioctl(9), and it’s literally the generic mii ioctl interface. no cap, that’s the name and the whole vibe. 🫢

✨ SYNOPSIS ✨

exact signature time, do not freestyle it:

int phylink_mii_ioctl (struct phylink *pl , struct ifreq *ifr , int cmd
);

πŸŽ€ ARGUMENTS πŸŽ€

  • pl β€” a pointer to a struct phylink returned from phylink_create. this is the phylink instance you’re working with, bestie.
  • ifr β€” a pointer to a struct ifreq for socket ioctls. yes, that struct ifreq, for socket ioctls.
  • cmd β€” the ioctl cmd to execute. the actual command you’re sending through.

πŸ¦‹ DESCRIPTION πŸ¦‹

so it performs the specified MII ioctl on the PHY attached to the phylink instance specified by pl. if no PHY is attached, it emulates the presence of the PHY. like, it fakes the PHY being there. iconic behavior, honestly.

the cmd squad is:

  • SIOCGMIIPHY β€” read register from the current PHY.
  • SIOCGMIIREG β€” read register from the specified PHY.
  • SIOCSMIIREG β€” set a register on the specified PHY.

πŸ’– RETURN πŸ’–

zero on success or negative error code. that’s the whole return story. zero? slay. negative error code? go debug, bestie. 😭

🌈 SEE ALSO 🌈

Kernel file ./drivers/net/phy/phylink.c, plus the full squad: struct phylink(9), phylink_set_port_modes(9), phylink_interface_max_speed(9), phylink_caps_to_link_caps(9), phylink_caps_to_linkmodes(9), phylink_limit_mac_speed(9), phylink_cap_from_speed_duplex(9), phylink_get_capabilities(9), phylink_validate_mask_caps(9), phylink_pcs_neg_mode(9), phylink_set_fixed_link(9), phylink_create(9), phylink_destroy(9), phylink_expects_phy(9), phylink_connect_phy(9), phylink_of_phy_connect(9), phylink_fwnode_phy_connect(9), phylink_disconnect_phy(9), phylink_mac_change(9), phylink_pcs_change(9), phylink_start(9), phylink_stop(9), phylink_rx_clk_stop_block(9), phylink_rx_clk_stop_unblock(9), phylink_suspend(9), phylink_prepare_resume(9), phylink_resume(9), phylink_ethtool_get_wol(9), phylink_ethtool_set_wol(9), phylink_ethtool_ksettings_get(9), phylink_ethtool_ksettings_set(9), phylink_ethtool_nway_reset(9), phylink_ethtool_get_pauseparam(9), phylink_ethtool_set_pauseparam(9), phylink_get_eee_err(9), phylink_ethtool_get_eee(9), phylink_ethtool_set_eee(9), phylink_speed_down(9), phylink_speed_up(9), phylink_decode_usxgmii_word(9), phylink_decode_usgmii_word(9), phylink_mii_c22_pcs_decode_state(9), phylink_mii_c22_pcs_get_state(9), phylink_mii_c22_pcs_encode_advertisement(9), phylink_mii_c22_pcs_config(9), phylink_mii_c22_pcs_an_restart(9), phylink_replay_link_begin(9), phylink_replay_link_end(9).


mwah πŸ’– this cutie’s source is ./drivers/net/phy, dated October 2026, and the manual page is phylink_mii_ioctl(9). bye bestie, go slay those ioctls! πŸŽ€

πŸ“¦ where this page comes from