STRUCT MXL862XX_XPCS_PCS_CFG(9)
π struct mxl862xx_xpcs_pcs_cfg(9) π
okay so this is a page from the Kernel API Manual, and bestie, it's literally the PCS config struct for the mxl862xx driver. it's giving "small struct, big responsibilities" and honestly? iconic.
πΈ NAME πΈ
struct mxl862xx_xpcs_pcs_cfg β PCS configuration parameters π¦
like, the whole vibe of this struct is "here's everything you need to set up your PCS." no cap.
β¨ SYNOPSIS β¨
struct mxl862xx_xpcs_pcs_cfg {
__le16 mode;
union mxl862xx_xpcs_an_word advertising;
__le16 result;
};
three fields. that's it. that's the whole struct. and yet she's carrying the entire bringup on her back π
π Members π
π mode
packed interface and negotiation parameters all squished into one field β see MXL862XX_XPCS_CFG_* for the deets. here's what's packed in there, lowkey a whole personality:
port_idis the XPCS port index (0-3)interfaceis the PCS interface mode (MXL862XX_XPCS_IF_*)neg_modeis the negotiation mode (MXL862XX_XPCS_NEG_*)permit_pauseallows pause to MACusx_lane_modeis the USXGMII lane mode (MXL862XX_XPCS_USX_*)roleis the protocol role (MXL862XX_XPCS_ROLE_*)usx_subportis the sub-port (0-3) within the XPCS β and despite the name it also identifies the QSGMII sub-port π«Ά it's used by the firmware to set MAC pause per sub-port, and it's ignored for the XPCS-wide bringup, which is idempotent across slots β¨
π¦ advertising
the AN code word the local end transmits. the active union member gets selected by the interface field (and, for the asymmetric protocols, by role). periodt.
β οΈ it's ignored when the local end does not transmit an AN word (role=MACfor SGMII/QSGMII/USXGMII, 10GBASE-R, 5GBASE-R) or whenneg_modeis notINBAND_AN_ON. also β pass all-zero to keep the firmware default advertisement π
π result
firmware result, bestie. read it carefully:
- >0 means the host must follow with an AN restart π₯
- 0 means no host follow-up is needed π
- <0 is an
errnoπ
π§ SEE ALSO π§
kernel file ./drivers/net/dsa/mxl862xx/mxl862xx-api.h β and okay she has a LOT of friends, so buckle up:
struct mdio_relay_data(9)struct mxl862xx_register_mod(9)enum mxl862xx_mac_table_filter(9)struct mxl862xx_mac_table_add(9)struct mxl862xx_mac_table_remove(9)struct mxl862xx_mac_table_read(9)struct mxl862xx_mac_table_query(9)enum mxl862xx_mac_clear_type(9)struct mxl862xx_mac_table_clear(9)enum mxl862xx_age_timer(9)struct mxl862xx_bridge_alloc(9)enum mxl862xx_bridge_config_mask(9)enum mxl862xx_bridge_port_egress_meter(9)struct mxl862xx_qos_meter_cfg(9)enum mxl862xx_bridge_forward_mode(9)struct mxl862xx_bridge_config(9)struct mxl862xx_bridge_port_alloc(9)enum mxl862xx_bridge_port_config_mask(9)enum mxl862xx_color_marking_mode(9)enum mxl862xx_color_remarking_mode(9)enum mxl862xx_pmapper_mapping_mode(9)struct mxl862xx_pmapper(9)struct mxl862xx_bridge_port_config(9)struct mxl862xx_cfg(9)enum mxl862xx_extended_vlan_filter_type(9)enum mxl862xx_extended_vlan_filter_tpid(9)enum mxl862xx_extended_vlan_filter_dei(9)enum mxl862xx_extended_vlan_treatment_remove_tag(9)enum mxl862xx_extended_vlan_treatment_priority(9)enum mxl862xx_extended_vlan_treatment_vid(9)enum mxl862xx_extended_vlan_treatment_tpid(9)enum mxl862xx_extended_vlan_treatment_dei(9)enum mxl862xx_extended_vlan_4_tpid_mode(9)enum mxl862xx_extended_vlan_filter_ethertype(9)struct mxl862xx_extendedvlan_filter_vlan(9)struct mxl862xx_extendedvlan_filter(9)struct mxl862xx_extendedvlan_treatment_vlan(9)struct mxl862xx_extendedvlan_treatment(9)struct mxl862xx_extendedvlan_alloc(9)struct mxl862xx_extendedvlan_config(9)enum mxl862xx_vlan_filter_tci_mask(9)struct mxl862xx_vlanfilter_alloc(9)struct mxl862xx_vlanfilter_config(9)enum mxl862xx_ss_sp_tag_mask(9)enum mxl862xx_ss_sp_tag_rx(9)enum mxl862xx_ss_sp_tag_tx(9)enum mxl862xx_ss_sp_tag_rx_pen(9)struct mxl862xx_ss_sp_tag(9)enum mxl862xx_logical_port_mode(9)struct mxl862xx_ctp_port_assignment(9)enum mxl862xx_stp_port_state(9)struct mxl862xx_stp_port_cfg(9)struct mxl862xx_sys_fw_image_version(9)enum mxl862xx_port_type(9)enum mxl862xx_rmon_port_type(9)struct mxl862xx_rmon_port_cnt(9)union mxl862xx_xpcs_an_word(9)enum mxl862xx_xpcs_loopback_mode(9)struct mxl862xx_xpcs_pcs_state(9)struct mxl862xx_xpcs_pcs_disable(9)struct mxl862xx_xpcs_an_restart(9)struct mxl862xx_xpcs_pcs_link_up(9)
like I said. a LOT of friends π
that's the whole page, bestie β go forth and configure your PCS π
sign-off szn: this lil beauty lives at ./drivers/net/dsa/mxl862xx in the source, dated October 2026, and it's filed under struct mxl86...xpcs_pcs_cfg(9) because the header literally couldn't fit the whole name π anyway 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