€•DŒsphinx.addnodes”Œdocument”“”)”}”(Œ rawsource”Œ”Œchildren”]”(Œ translations”Œ LanguagesNode”“”)”}”(hhh]”(hŒ pending_xref”“”)”}”(hhh]”Œdocutils.nodes”ŒText”“”ŒChinese (Simplified)”…””}”Œparent”hsbaŒ attributes”}”(Œids”]”Œclasses”]”Œnames”]”Œdupnames”]”Œbackrefs”]”Œ refdomain”Œstd”Œreftype”Œdoc”Œ reftarget”Œ'/translations/zh_CN/networking/phy-port”Œmodname”NŒ classname”NŒ refexplicit”ˆuŒtagname”hhh ubh)”}”(hhh]”hŒChinese (Traditional)”…””}”hh2sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ'/translations/zh_TW/networking/phy-port”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒItalian”…””}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ'/translations/it_IT/networking/phy-port”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒJapanese”…””}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ'/translations/ja_JP/networking/phy-port”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒKorean”…””}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ'/translations/ko_KR/networking/phy-port”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒSpanish”…””}”hh‚sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ'/translations/sp_SP/networking/phy-port”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubeh}”(h]”h ]”h"]”h$]”h&]”Œcurrent_language”ŒEnglish”uh1h hhŒ _document”hŒsource”NŒline”NubhŒcomment”“”)”}”(hŒ SPDX-License-Identifier: GPL-2.0”h]”hŒ SPDX-License-Identifier: GPL-2.0”…””}”hh£sbah}”(h]”h ]”h"]”h$]”h&]”Œ xml:space”Œpreserve”uh1h¡hhhžhhŸŒA/var/lib/git/docbuild/linux/Documentation/networking/phy-port.rst”h KubhŒtarget”“”)”}”(hŒ .. _phy_port:”h]”h}”(h]”h ]”h"]”h$]”h&]”Œrefid”Œphy-port”uh1h´h KhhhžhhŸh³ubhŒsection”“”)”}”(hhh]”(hŒtitle”“”)”}”(hŒEthernet ports”h]”hŒEthernet ports”…””}”(hhÉhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÇhhÄhžhhŸh³h KubhŒ paragraph”“”)”}”(hŒ…This document is a basic description of the phy_port infrastructure, introduced to represent physical interfaces of Ethernet devices.”h]”hŒ…This document is a basic description of the phy_port infrastructure, introduced to represent physical interfaces of Ethernet devices.”…””}”(hhÙhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h×hŸh³h KhhÄhžhubhØ)”}”(hŒìWithout phy_port, we already have quite a lot of information about what the media-facing interface of a NIC can do and looks like, through the :c:type:`struct ethtool_link_ksettings ` attributes, which includes :”h]”(hŒWithout phy_port, we already have quite a lot of information about what the media-facing interface of a NIC can do and looks like, through the ”…””}”(hhçhžhhŸNh Nubh)”}”(hŒ@:c:type:`struct ethtool_link_ksettings `”h]”hŒliteral”“”)”}”(hhñh]”hŒstruct ethtool_link_ksettings”…””}”(hhõhžhhŸNh Nubah}”(h]”h ]”(Œxref”Œc”Œc-type”eh"]”h$]”h&]”uh1hóhhïubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”Œnetworking/phy-port”Œ refdomain”jŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰Œ reftarget”Œethtool_link_ksettings”uh1hhŸh³h K hhçubhŒ attributes, which includes :”…””}”(hhçhžhhŸNh Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1h×hŸh³h K hhÄhžhubhŒ block_quote”“”)”}”(hŒÇ- What the NIC can do through the :c:member:`supported` field - What the Link Partner advertises through :c:member:`lp_advertising` - Which features we're advertising through :c:member:`advertising` ”h]”hŒ bullet_list”“”)”}”(hhh]”(hŒ list_item”“”)”}”(hŒ;What the NIC can do through the :c:member:`supported` field”h]”hØ)”}”(hj-h]”(hŒ What the NIC can do through the ”…””}”(hj/hžhhŸNh Nubh)”}”(hŒ:c:member:`supported`”h]”hô)”}”(hj8h]”hŒ supported”…””}”(hj:hžhhŸNh Nubah}”(h]”h ]”(hÿjŒc-member”eh"]”h$]”h&]”uh1hóhj6ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j Œ refdomain”jŒreftype”Œmember”Œ refexplicit”‰Œrefwarn”‰jŒ supported”uh1hhŸh³h Khj/ubhŒ field”…””}”(hj/hžhhŸNh Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1h×hŸh³h Khj+ubah}”(h]”h ]”h"]”h$]”h&]”uh1j)hj&ubj*)”}”(hŒCWhat the Link Partner advertises through :c:member:`lp_advertising`”h]”hØ)”}”(hjgh]”(hŒ)What the Link Partner advertises through ”…””}”(hjihžhhŸNh Nubh)”}”(hŒ:c:member:`lp_advertising`”h]”hô)”}”(hjrh]”hŒlp_advertising”…””}”(hjthžhhŸNh Nubah}”(h]”h ]”(hÿjŒc-member”eh"]”h$]”h&]”uh1hóhjpubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j Œ refdomain”jŒreftype”Œmember”Œ refexplicit”‰Œrefwarn”‰jŒlp_advertising”uh1hhŸh³h Khjiubeh}”(h]”h ]”h"]”h$]”h&]”uh1h×hŸh³h Khjeubah}”(h]”h ]”h"]”h$]”h&]”uh1j)hj&ubj*)”}”(hŒAWhich features we're advertising through :c:member:`advertising` ”h]”hØ)”}”(hŒ@Which features we're advertising through :c:member:`advertising`”h]”(hŒ+Which features we’re advertising through ”…””}”(hjŸhžhhŸNh Nubh)”}”(hŒ:c:member:`advertising`”h]”hô)”}”(hj©h]”hŒ advertising”…””}”(hj«hžhhŸNh Nubah}”(h]”h ]”(hÿjŒc-member”eh"]”h$]”h&]”uh1hóhj§ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j Œ refdomain”jŒreftype”Œmember”Œ refexplicit”‰Œrefwarn”‰jŒ advertising”uh1hhŸh³h KhjŸubeh}”(h]”h ]”h"]”h$]”h&]”uh1h×hŸh³h Khj›ubah}”(h]”h ]”h"]”h$]”h&]”uh1j)hj&ubeh}”(h]”h ]”h"]”h$]”h&]”Œbullet”Œ-”uh1j$hŸh³h Khj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhŸh³h KhhÄhžhubhØ)”}”(hŒ¶We also have info about the number of pairs and the PORT type. These settings are built by aggregating together information reported by various devices that are sitting on the link :”h]”hŒ¶We also have info about the number of pairs and the PORT type. These settings are built by aggregating together information reported by various devices that are sitting on the link :”…””}”(hjàhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h×hŸh³h KhhÄhžhubj)”}”(hX- The NIC itself, through the :c:member:`get_link_ksettings` callback - Precise information from the MAC and PCS by using phylink in the MAC driver - Information reported by the PHY device - Information reported by an SFP module (which can itself include a PHY) ”h]”j%)”}”(hhh]”(j*)”}”(hŒCThe NIC itself, through the :c:member:`get_link_ksettings` callback”h]”hØ)”}”(hj÷h]”(hŒThe NIC itself, through the ”…””}”(hjùhžhhŸNh Nubh)”}”(hŒ:c:member:`get_link_ksettings`”h]”hô)”}”(hjh]”hŒget_link_ksettings”…””}”(hjhžhhŸNh Nubah}”(h]”h ]”(hÿjŒc-member”eh"]”h$]”h&]”uh1hóhjubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j Œ refdomain”jŒreftype”Œmember”Œ refexplicit”‰Œrefwarn”‰jŒget_link_ksettings”uh1hhŸh³h KhjùubhŒ callback”…””}”(hjùhžhhŸNh Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1h×hŸh³h Khjõubah}”(h]”h ]”h"]”h$]”h&]”uh1j)hjòubj*)”}”(hŒKPrecise information from the MAC and PCS by using phylink in the MAC driver”h]”hØ)”}”(hj1h]”hŒKPrecise information from the MAC and PCS by using phylink in the MAC driver”…””}”(hj3hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h×hŸh³h Khj/ubah}”(h]”h ]”h"]”h$]”h&]”uh1j)hjòubj*)”}”(hŒ&Information reported by the PHY device”h]”hØ)”}”(hjHh]”hŒ&Information reported by the PHY device”…””}”(hjJhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h×hŸh³h KhjFubah}”(h]”h ]”h"]”h$]”h&]”uh1j)hjòubj*)”}”(hŒGInformation reported by an SFP module (which can itself include a PHY) ”h]”hØ)”}”(hŒFInformation reported by an SFP module (which can itself include a PHY)”h]”hŒFInformation reported by an SFP module (which can itself include a PHY)”…””}”(hjahžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h×hŸh³h Khj]ubah}”(h]”h ]”h"]”h$]”h&]”uh1j)hjòubeh}”(h]”h ]”h"]”h$]”h&]”jØjÙuh1j$hŸh³h Khjîubah}”(h]”h ]”h"]”h$]”h&]”uh1jhŸh³h KhhÄhžhubhØ)”}”(hXgThis model however starts showing its limitations when we consider devices that have more than one media interface. In such a case, only information about the actively used interface is reported, and it's not possible to know what the other interfaces can do. In fact, we have very little information about whether or not there are any other media interfaces.”h]”hXiThis model however starts showing its limitations when we consider devices that have more than one media interface. In such a case, only information about the actively used interface is reported, and it’s not possible to know what the other interfaces can do. In fact, we have very little information about whether or not there are any other media interfaces.”…””}”(hjhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h×hŸh³h KhhÄhžhubhØ)”}”(hŒÅThe goal of the phy_port representation is to provide a way of representing a physical interface of a NIC, regardless of what is driving the port (NIC through a firmware, SFP module, Ethernet PHY).”h]”hŒÅThe goal of the phy_port representation is to provide a way of representing a physical interface of a NIC, regardless of what is driving the port (NIC through a firmware, SFP module, Ethernet PHY).”…””}”(hjhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h×hŸh³h K#hhÄhžhubhÃ)”}”(hhh]”(hÈ)”}”(hŒMulti-port interfaces examples”h]”hŒMulti-port interfaces examples”…””}”(hj hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÇhjhžhhŸh³h K(ubhØ)”}”(hŒASeveral cases of multi-interface NICs have been observed so far :”h]”hŒASeveral cases of multi-interface NICs have been observed so far :”…””}”(hj®hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h×hŸh³h K*hjhžhubhØ)”}”(hŒInternal MII Mux::”h]”hŒInternal MII Mux:”…””}”(hj¼hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h×hŸh³h K,hjhžhubhŒ literal_block”“”)”}”(hŒñ+------------------+ | SoC | | +-----+ | +-----+ | +-----+ | |-------------| PHY | | | MAC |--| Mux | | +-----+ +-----+ | +-----+ | |-----| SFP | | +-----+ | +-----+ +------------------+”h]”hŒñ+------------------+ | SoC | | +-----+ | +-----+ | +-----+ | |-------------| PHY | | | MAC |--| Mux | | +-----+ +-----+ | +-----+ | |-----| SFP | | +-----+ | +-----+ +------------------+”…””}”hjÌsbah}”(h]”h ]”h"]”h$]”h&]”h±h²uh1jÊhŸh³h K.hjhžhubhØ)”}”(hŒ Internal Mux with internal PHY::”h]”hŒInternal Mux with internal PHY:”…””}”(hjÚhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h×hŸh³h K7hjhžhubjË)”}”(hŒõ+------------------------+ | SoC | | +-----+ +-----+ | +-----+ | |-| PHY | | | MAC |--| Mux | +-----+ +-----+ | +-----+ | |-----------| SFP | | +-----+ | +-----+ +------------------------+”h]”hŒõ+------------------------+ | SoC | | +-----+ +-----+ | +-----+ | |-| PHY | | | MAC |--| Mux | +-----+ +-----+ | +-----+ | |-----------| SFP | | +-----+ | +-----+ +------------------------+”…””}”hjèsbah}”(h]”h ]”h"]”h$]”h&]”h±h²uh1jÊhŸh³h K9hjhžhubhØ)”}”(hŒExternal Mux::”h]”hŒ External Mux:”…””}”(hjöhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h×hŸh³h KBhjhžhubjË)”}”(hŒï+---------+ | SoC | +-----+ +-----+ | | | |--| PHY | | +-----+ | | | +-----+ | | MAC |----| Mux | +-----+ | +-----+ | | |--| PHY | | | +-----+ +-----+ | | | | GPIO-------+ +---------+”h]”hŒï+---------+ | SoC | +-----+ +-----+ | | | |--| PHY | | +-----+ | | | +-----+ | | MAC |----| Mux | +-----+ | +-----+ | | |--| PHY | | | +-----+ +-----+ | | | | GPIO-------+ +---------+”…””}”hjsbah}”(h]”h ]”h"]”h$]”h&]”h±h²uh1jÊhŸh³h KDhjhžhubhØ)”}”(hŒDouble-port PHY::”h]”hŒDouble-port PHY:”…””}”(hjhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h×hŸh³h KOhjhžhubjË)”}”(hŒ©+---------+ | SoC | +-----+ | | | |--- RJ45 | +-----+ | | | | | MAC |---| PHY | +-----+ | +-----+ | | |---| SFP | +---------+ +-----+ +-----+”h]”hŒ©+---------+ | SoC | +-----+ | | | |--- RJ45 | +-----+ | | | | | MAC |---| PHY | +-----+ | +-----+ | | |---| SFP | +---------+ +-----+ +-----+”…””}”hj sbah}”(h]”h ]”h"]”h$]”h&]”h±h²uh1jÊhŸh³h KQhjhžhubhØ)”}”(hXphy_port aims at providing a path to support all the above topologies, by representing the media interfaces in a way that's agnostic to what's driving the interface. the struct phy_port object has its own set of callback ops, and will eventually be able to report its own ksettings::”h]”hXphy_port aims at providing a path to support all the above topologies, by representing the media interfaces in a way that’s agnostic to what’s driving the interface. the struct phy_port object has its own set of callback ops, and will eventually be able to report its own ksettings:”…””}”(hj.hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h×hŸh³h KYhjhžhubjË)”}”(hŒÔ _____ +------+ ( )-----| Port | +-----+ ( ) +------+ | MAC |--( ??? ) +-----+ ( ) +------+ (_____)-----| Port | +------+”h]”hŒÔ _____ +------+ ( )-----| Port | +-----+ ( ) +------+ | MAC |--( ??? ) +-----+ ( ) +------+ (_____)-----| Port | +------+”…””}”hj<sbah}”(h]”h ]”h"]”h$]”h&]”h±h²uh1jÊhŸh³h K^hjhžhubeh}”(h]”Œmulti-port-interfaces-examples”ah ]”h"]”Œmulti-port interfaces examples”ah$]”h&]”uh1hÂhhÄhžhhŸh³h K(ubhÃ)”}”(hhh]”(hÈ)”}”(hŒ Next steps”h]”hŒ Next steps”…””}”(hjUhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÇhjRhžhhŸh³h KgubhØ)”}”(hXAs of writing this documentation, only ports controlled by PHY devices are supported. The next steps will be to add the Netlink API to expose these to userspace and add support for raw ports (controlled by some firmware, and directly managed by the NIC driver).”h]”hXAs of writing this documentation, only ports controlled by PHY devices are supported. The next steps will be to add the Netlink API to expose these to userspace and add support for raw ports (controlled by some firmware, and directly managed by the NIC driver).”…””}”(hjchžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h×hŸh³h KihjRhžhubhØ)”}”(hŒ}Another parallel task is the introduction of a MII muxing framework to allow the control of non-PHY driver multi-port setups.”h]”hŒ}Another parallel task is the introduction of a MII muxing framework to allow the control of non-PHY driver multi-port setups.”…””}”(hjqhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h×hŸh³h KnhjRhžhubeh}”(h]”Œ next-steps”ah ]”h"]”Œ next steps”ah$]”h&]”uh1hÂhhÄhžhhŸh³h Kgubeh}”(h]”(Œethernet-ports”hÁeh ]”h"]”(Œethernet ports”Œphy_port”eh$]”h&]”uh1hÂhhhžhhŸh³h KŒexpect_referenced_by_name”}”jh¶sŒexpect_referenced_by_id”}”hÁh¶subeh}”(h]”h ]”h"]”h$]”h&]”Œsource”h³uh1hŒcurrent_source”NŒ current_line”NŒsettings”Œdocutils.frontend”ŒValues”“”)”}”(hÇNŒ generator”NŒ datestamp”NŒ source_link”NŒ source_url”NŒ toc_backlinks”Œentry”Œfootnote_backlinks”KŒ sectnum_xform”KŒstrip_comments”NŒstrip_elements_with_classes”NŒ strip_classes”NŒ report_level”KŒ halt_level”KŒexit_status_level”KŒdebug”NŒwarning_stream”NŒ traceback”ˆŒinput_encoding”Œ utf-8-sig”Œinput_encoding_error_handler”Œstrict”Œoutput_encoding”Œutf-8”Œoutput_encoding_error_handler”j·Œerror_encoding”Œutf-8”Œerror_encoding_error_handler”Œbackslashreplace”Œ language_code”Œen”Œrecord_dependencies”NŒconfig”NŒ id_prefix”hŒauto_id_prefix”Œid”Œ dump_settings”NŒdump_internals”NŒdump_transforms”NŒdump_pseudo_xml”NŒexpose_internals”NŒstrict_visitor”NŒ_disable_config”NŒ_source”h³Œ _destination”NŒ _config_files”]”Œ7/var/lib/git/docbuild/linux/Documentation/docutils.conf”aŒfile_insertion_enabled”ˆŒ raw_enabled”KŒline_length_limit”M'Œpep_references”NŒ pep_base_url”Œhttps://peps.python.org/”Œpep_file_url_template”Œpep-%04d”Œrfc_references”NŒ rfc_base_url”Œ&https://datatracker.ietf.org/doc/html/”Œ tab_width”KŒtrim_footnote_reference_space”‰Œsyntax_highlight”Œlong”Œ smart_quotes”ˆŒsmartquotes_locales”]”Œcharacter_level_inline_markup”‰Œdoctitle_xform”‰Œ docinfo_xform”KŒsectsubtitle_xform”‰Œ image_loading”Œlink”Œembed_stylesheet”‰Œcloak_email_addresses”ˆŒsection_self_link”‰Œenv”NubŒreporter”NŒindirect_targets”]”Œsubstitution_defs”}”Œsubstitution_names”}”Œrefnames”}”Œrefids”}”hÁ]”h¶asŒnameids”}”(jhÁjŒj‰jOjLj„juŒ nametypes”}”(jˆjŒ‰jO‰j„‰uh}”(hÁhÄj‰hÄjLjjjRuŒ footnote_refs”}”Œ citation_refs”}”Œ autofootnotes”]”Œautofootnote_refs”]”Œsymbol_footnotes”]”Œsymbol_footnote_refs”]”Œ footnotes”]”Œ citations”]”Œautofootnote_start”KŒsymbol_footnote_start”KŒ id_counter”Œ collections”ŒCounter”“”}”…”R”Œparse_messages”]”Œtransform_messages”]”hŒsystem_message”“”)”}”(hhh]”hØ)”}”(hhh]”hŒ.Hyperlink target "phy-port" is not referenced.”…””}”hj!sbah}”(h]”h ]”h"]”h$]”h&]”uh1h×hjubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”ŒINFO”Œsource”h³Œline”Kuh1jubaŒ transformer”NŒ include_log”]”Œ decoration”Nhžhub.