STRUCT PHYLINK_CONFIG(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

okay so this is a page from the Kernel API Manual, and it's literally the whole personality of struct phylink_config. it's the little struct that tells PHYLINK how your MAC wants to be handled πŸ’… no cap, every field matters, so let's go through them one by one.


✨ SYNOPSIS ✨

here's the whole struct, exactly as it lives β€” don't touch, just vibe:

struct phylink_config {
    struct device *dev;
    enum phylink_op_type type;
    bool poll_fixed_state;
    bool mac_managed_pm;
    bool mac_requires_rxc;
    bool default_an_inband;
    bool eee_rx_clk_stop_enable;
    void (*get_fixed_state)(struct phylink_config *config, struct
phylink_link_state *state);
    unsigned long supported_interfaces[BITS_TO_LONGS(
PHY_INTERFACE_MODE_MAX)];
    unsigned long lpi_interfaces[BITS_TO_LONGS(
PHY_INTERFACE_MODE_MAX)];
    unsigned long mac_capabilities;
    unsigned long lpi_capabilities;
    u32 lpi_timer_default;
    bool eee_enabled_default;
    bool wol_phy_legacy;
    bool wol_phy_speed_ctrl;
    u32 wol_mac_support;
 };

πŸŽ€ Members πŸŽ€

these are the members, bestie, all of them, in order. no skipping, that's the rule 🫢

  • dev β€” a pointer to a struct device that's associated with the MAC.
  • type β€” the operation type of the PHYLINK instance.
  • poll_fixed_state β€” if true, it starts link_poll, but only if the MAC link is at MLO_AN_FIXED mode.
  • mac_managed_pm β€” if true, this is you telling everyone the MAC driver is the one responsible for PHY PM. main character energy, honestly πŸ‘‘
  • mac_requires_rxc β€” if true, the MAC always requires a receive clock from the PHY. so the PHY driver should start that clock signal as soon as possible and avoid stopping it during suspend events. literally do not touch it πŸ™ˆ
  • default_an_inband β€” if true, it defaults to MLO_AN_INBAND rather than MLO_AN_PHY. and heads up: a fixed-link specification will override this.
  • eee_rx_clk_stop_enable β€” if true, the PHY can stop the receive clock during LPI.
  • get_fixed_state β€” callback to execute to determine the fixed link state, if the MAC link is at MLO_AN_FIXED mode.
  • supported_interfaces β€” bitmap describing which PHY_INTERFACE_MODE_xxx are supported by the MAC/PCS.
  • lpi_interfaces β€” bitmap describing which PHY interface modes can support LPI signalling.
  • mac_capabilities β€” the MAC pause/speed/duplex capabilities.
  • lpi_capabilities β€” the MAC speeds which can support LPI signalling.
  • lpi_timer_default β€” the default EEE LPI timer setting.
  • eee_enabled_default β€” if set, EEE will be enabled by phylink at creation time.
  • wol_phy_legacy β€” use Wake-on-Lan with the PHY even if phy_can_wakeup is false.
  • wol_phy_speed_ctrl β€” use phy speed control on suspend/resume.
  • wol_mac_support β€” bitmask of MAC supported WAKE_* options.

🌈 SEE ALSO 🌈

so much lore, iykyk. this all lives in the kernel file ./include/linux/phylink.h:


that's the whole page, periodt πŸ’– this one's from the path ./include/linux, and it's dated October 2026 β€” so yeah, it's giving future-kernel-girlie ✨ go forth and configure your PHYLINK, bestie, you've got this πŸŽ€πŸ¦‹

πŸ“¦ where this page comes from