STRUCT PHY_PLCA_CFG(9)
π struct phy_plca_cfg(9) π
okay so bestie, welcome to the Kernel API Manual, and lemme tell you, today's main character is struct phy_plca_cfg. it's the config struct for the PLCA β that's Physical Layer Collision Avoidance β Reconciliation Sublayer. yes the whole name is a mouthful, but it's lowkey iconic. let's get into it π«Ά
β¨ NAME β¨
struct phy_plca_cfg β Configuration of the PLCA (Physical Layer Collision Avoidance) Reconciliation Sublayer. she's giving "I hold all the knobs you turn to make PLCA behave." π
π¦ SYNOPSIS π¦
okay here's the whole vibe, literally every field, no cap:
struct phy_plca_cfg {
int version;
int enabled;
int node_id;
int node_cnt;
int to_tmr;
int burst_cnt;
int burst_tmr;
};
π Members π
versionβ read-only PLCA register map version.-1= not available. Ignored when setting the configuration. the format is the same as what the PLCA IDVER register reports (31.CA00). and yes,-1= not available, we said it twice because it's important fr fr. πenabledβ the PLCA configured mode, enabled or disabled.-1= not available / don't set.0= disabled, anything else = enabled. that's it, that's the whole rule. β¨node_idβ the PLCA local node identifier.-1= not available / don't set. allowed values[0 .. 254].255= node disabled. π¦node_cntβ the PLCA node count, aka the maximum number of nodes having a TO. only meaningful for the coordinator (node_id = 0), so if you're not the coordinator, this is not your moment bestie.-1= not available / don't set. allowed values[1 .. 255]. πΈto_tmrβ the value of the PLCA to_timer in bit-times, which determines the PLCA transmit opportunity window opening. see IEEE802.3 Clause 148 for more details. the to_timer shall be set equal over all nodes (yes, shall, she's serious).-1= not available / don't set. allowed values[0 .. 255]. βburst_cntβ controls how many additional frames a node is allowed to send in a single transmit opportunity (TO). the default value of0means the node is allowed exactly one frame per TO. a value of1allows two frames per TO, and so on.-1= not available / don't set. allowed values[0 .. 255]. π₯burst_tmrβ controls how many bit times to wait for the MAC to send a new frame before interrupting the burst. this value should be set to a value greater than the MAC inter-packet gap (which is typically 96 bits).-1= not available / don't set. allowed values[0 .. 255]. π§
π Description π
so what is this thing? it's a structure containing configuration parameters for setting/getting the PLCA RS configuration. simple as that. π
and here's the nice part: the driver does not need to implement all the parameters, but should report what is actually used. so like, no pressure to do everything, just be honest about what you did. honesty is the vibe check. π
β SEE ALSO β
go read these, they're all in the kernel file ./include/linux/phy.h and honestly they're a whole friend group: enum phy_interface_t(9), phy_modes(9), rgmii_clock(9), struct mdio_bus_stats(9), struct mii_bus(9), mdiobus_alloc(9), enum phy_state(9), struct phy_c45_device_ids(9), struct phy_oatc14_sqi_capability(9), struct phy_device(9), struct phy_tdr_config(9), enum link_inband_signalling(9), struct phy_plca_status(9), struct phy_led(9), struct phy_mse_capability(9), struct phy_mse_snapshot(9), struct phy_driver(9), phy_id_compare(9), phy_id_compare_vendor(9), phy_id_compare_model(9), phydev_id_compare(9), phy_is_started(9), phy_driver_is_genphy(9), phy_disable_eee_mode(9), phy_can_wakeup(9), phy_may_wakeup(9), phy_read(9), __phy_read(9), phy_write(9), __phy_write(9), __phy_modify_changed(9), phy_read_mmd_poll_timeout(9), __phy_set_bits(9), __phy_clear_bits(9), phy_set_bits(9), phy_clear_bits(9), __phy_set_bits_mmd(9), __phy_clear_bits_mmd(9), phy_set_bits_mmd(9), phy_clear_bits_mmd(9), phy_interrupt_is_valid(9), phy_polling_mode(9), phy_has_hwtstamp(9), phy_has_rxtstamp(9), phy_has_tsinfo(9), phy_has_txtstamp(9), phy_is_default_hwtstamp(9), phy_on_sfp(9), phy_interface_mode_is_rgmii(9), phy_interface_mode_is_8023z(9), phy_interface_is_rgmii(9), phy_is_pseudo_fixed_link(9), phy_module_driver(9). that's the whole squad, go say hi π
ngl bestie, if you made it this far you deserve a little treat. go drink some water, then go set your to_tmr correctly. π
and that's the page!! this little number lives over in ./include/linux and it's stamped October 2026, so jot that down in your notes app. mwah, ily, bye π
β¨πΈ
π¦ 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