€•·kŒ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”ŒH/translations/zh_CN/networking/device_drivers/ethernet/ti/cpsw_switchdev”Œmodname”NŒ classname”NŒ refexplicit”ˆuŒtagname”hhh ubh)”}”(hhh]”hŒChinese (Traditional)”…””}”hh2sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”ŒH/translations/zh_TW/networking/device_drivers/ethernet/ti/cpsw_switchdev”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒItalian”…””}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”ŒH/translations/it_IT/networking/device_drivers/ethernet/ti/cpsw_switchdev”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒJapanese”…””}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”ŒH/translations/ja_JP/networking/device_drivers/ethernet/ti/cpsw_switchdev”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒKorean”…””}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”ŒH/translations/ko_KR/networking/device_drivers/ethernet/ti/cpsw_switchdev”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒPortuguese (Brazilian)”…””}”hh‚sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”ŒH/translations/pt_BR/networking/device_drivers/ethernet/ti/cpsw_switchdev”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒSpanish”…””}”hh–sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”ŒH/translations/sp_SP/networking/device_drivers/ethernet/ti/cpsw_switchdev”Œ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³Œb/var/lib/git/docbuild/linux/Documentation/networking/device_drivers/ethernet/ti/cpsw_switchdev.rst”h´KubhŒsection”“”)”}”(hhh]”(hŒtitle”“”)”}”(hŒ6Texas Instruments CPSW switchdev based ethernet driver”h]”hŒ6Texas Instruments CPSW switchdev based ethernet driver”…””}”(hhÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhhÊh²hh³hÇh´KubhŒ field_list”“”)”}”(hhh]”hŒfield”“”)”}”(hhh]”(hŒ field_name”“”)”}”(hŒVersion”h]”hŒVersion”…””}”(hhéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhhäh³hÇh´KubhŒ field_body”“”)”}”(hŒ2.0 ”h]”hŒ paragraph”“”)”}”(hŒ2.0”h]”hŒ2.0”…””}”(hhÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³hÇh´Khhùubah}”(h]”h ]”h"]”h$]”h&]”uh1h÷hhäubeh}”(h]”h ]”h"]”h$]”h&]”uh1hâh³hÇh´Khhßh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝhhÊh²hh³hÇh´KubhÉ)”}”(hhh]”(hÎ)”}”(hŒ Port renaming”h]”hŒ Port renaming”…””}”(hj"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjh²hh³hÇh´K ubhþ)”}”(hŒTOn older udev versions renaming of ethX to swXpY will not be automatically supported”h]”hŒTOn older udev versions renaming of ethX to swXpY will not be automatically supported”…””}”(hj0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³hÇh´K hjh²hubhþ)”}”(hŒIn order to rename via udev::”h]”hŒIn order to rename via udev:”…””}”(hj>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³hÇh´Khjh²hubhŒ literal_block”“”)”}”(hŒ±ip -d link show dev sw0p1 | grep switchid SUBSYSTEM=="net", ACTION=="add", ATTR{phys_switch_id}==, \ ATTR{phys_port_name}!="", NAME="sw0$attr{phys_port_name}"”h]”hŒ±ip -d link show dev sw0p1 | grep switchid SUBSYSTEM=="net", ACTION=="add", ATTR{phys_switch_id}==, \ ATTR{phys_port_name}!="", NAME="sw0$attr{phys_port_name}"”…””}”hjNsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jLh³hÇh´Khjh²hubeh}”(h]”Œ port-renaming”ah ]”h"]”Œ port renaming”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´K ubhÉ)”}”(hhh]”(hÎ)”}”(hŒ Dual mac mode”h]”hŒ Dual mac mode”…””}”(hjgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjdh²hh³hÇh´KubhŒ bullet_list”“”)”}”(hhh]”hŒ list_item”“”)”}”(hŒ¦The new (cpsw_new.c) driver is operating in dual-emac mode by default, thus working as 2 individual network interfaces. Main differences from legacy CPSW driver are: ”h]”hþ)”}”(hŒ¥The new (cpsw_new.c) driver is operating in dual-emac mode by default, thus working as 2 individual network interfaces. Main differences from legacy CPSW driver are:”h]”hŒ¥The new (cpsw_new.c) driver is operating in dual-emac mode by default, thus working as 2 individual network interfaces. Main differences from legacy CPSW driver are:”…””}”(hj€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³hÇh´Khj|ubah}”(h]”h ]”h"]”h$]”h&]”uh1jzhjwh²hh³hÇh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œbullet”Œ-”uh1juh³hÇh´Khjdh²hubhŒ block_quote”“”)”}”(hXL- optimized promiscuous mode: The P0_UNI_FLOOD (both ports) is enabled in addition to ALLMULTI (current port) instead of ALE_BYPASS. So, Ports in promiscuous mode will keep possibility of mcast and vlan filtering, which is provides significant benefits when ports are joined to the same bridge, but without enabling "switch" mode, or to different bridges. - learning disabled on ports as it make not too much sense for segregated ports - no forwarding in HW. - enabled basic support for devlink. :: devlink dev show platform/48484000.switch devlink dev param show platform/48484000.switch: name switch_mode type driver-specific values: cmode runtime value false name ale_bypass type driver-specific values: cmode runtime value false ”h]”jv)”}”(hhh]”(j{)”}”(hXaoptimized promiscuous mode: The P0_UNI_FLOOD (both ports) is enabled in addition to ALLMULTI (current port) instead of ALE_BYPASS. So, Ports in promiscuous mode will keep possibility of mcast and vlan filtering, which is provides significant benefits when ports are joined to the same bridge, but without enabling "switch" mode, or to different bridges.”h]”hþ)”}”(hXaoptimized promiscuous mode: The P0_UNI_FLOOD (both ports) is enabled in addition to ALLMULTI (current port) instead of ALE_BYPASS. So, Ports in promiscuous mode will keep possibility of mcast and vlan filtering, which is provides significant benefits when ports are joined to the same bridge, but without enabling "switch" mode, or to different bridges.”h]”hXeoptimized promiscuous mode: The P0_UNI_FLOOD (both ports) is enabled in addition to ALLMULTI (current port) instead of ALE_BYPASS. So, Ports in promiscuous mode will keep possibility of mcast and vlan filtering, which is provides significant benefits when ports are joined to the same bridge, but without enabling “switch†mode, or to different bridges.”…””}”(hj©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³hÇh´Khj¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1jzhj¢ubj{)”}”(hŒdlearning disabled on ports as it make not too much sense for segregated ports - no forwarding in HW.”h]”hþ)”}”(hŒdlearning disabled on ports as it make not too much sense for segregated ports - no forwarding in HW.”h]”hŒdlearning disabled on ports as it make not too much sense for segregated ports - no forwarding in HW.”…””}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³hÇh´K$hj½ubah}”(h]”h ]”h"]”h$]”h&]”uh1jzhj¢ubj{)”}”(hX]enabled basic support for devlink. :: devlink dev show platform/48484000.switch devlink dev param show platform/48484000.switch: name switch_mode type driver-specific values: cmode runtime value false name ale_bypass type driver-specific values: cmode runtime value false ”h]”(hþ)”}”(hŒ"enabled basic support for devlink.”h]”hŒ"enabled basic support for devlink.”…””}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³hÇh´K&hjÕubjM)”}”(hXdevlink dev show platform/48484000.switch devlink dev param show platform/48484000.switch: name switch_mode type driver-specific values: cmode runtime value false name ale_bypass type driver-specific values: cmode runtime value false”h]”hXdevlink dev show platform/48484000.switch devlink dev param show platform/48484000.switch: name switch_mode type driver-specific values: cmode runtime value false name ale_bypass type driver-specific values: cmode runtime value false”…””}”hjçsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jLh³hÇh´K*hjÕubeh}”(h]”h ]”h"]”h$]”h&]”uh1jzhj¢ubeh}”(h]”h ]”h"]”h$]”h&]”jšj›uh1juh³hÇh´Khjžubah}”(h]”h ]”h"]”h$]”h&]”uh1jœh³hÇh´Khjdh²hubeh}”(h]”Œ dual-mac-mode”ah ]”h"]”Œ dual mac mode”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´KubhÉ)”}”(hhh]”(hÎ)”}”(hŒ Devlink configuration parameters”h]”hŒ Devlink configuration parameters”…””}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjh²hh³hÇh´K7ubhþ)”}”(hŒ7See Documentation/networking/devlink/ti-cpsw-switch.rst”h]”hŒ7See Documentation/networking/devlink/ti-cpsw-switch.rst”…””}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³hÇh´K9hjh²hubeh}”(h]”Œ devlink-configuration-parameters”ah ]”h"]”Œ devlink configuration parameters”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´K7ubhÉ)”}”(hhh]”(hÎ)”}”(hŒBridging in dual mac mode”h]”hŒBridging in dual mac mode”…””}”(hj9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj6h²hh³hÇh´Khj6h²hubjM)”}”(hŒÃip link add name br0 type bridge ip link set dev br0 type bridge vlan_filtering 0 echo 0 > /sys/class/net/br0/bridge/default_pvid ip link set dev sw0p1 master br0 ip link set dev sw0p2 master br0”h]”hŒÃip link add name br0 type bridge ip link set dev br0 type bridge vlan_filtering 0 echo 0 > /sys/class/net/br0/bridge/default_pvid ip link set dev sw0p1 master br0 ip link set dev sw0p2 master br0”…””}”hjUsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jLh³hÇh´KBhj6h²hubhþ)”}”(hŒor::”h]”hŒor:”…””}”(hjch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³hÇh´KHhj6h²hubjM)”}”(hŒöip link add name br0 type bridge ip link set dev br0 type bridge vlan_filtering 0 echo 100 > /sys/class/net/br0/bridge/default_pvid ip link set dev br0 type bridge vlan_filtering 1 ip link set dev sw0p1 master br0 ip link set dev sw0p2 master br0”h]”hŒöip link add name br0 type bridge ip link set dev br0 type bridge vlan_filtering 0 echo 100 > /sys/class/net/br0/bridge/default_pvid ip link set dev br0 type bridge vlan_filtering 1 ip link set dev sw0p1 master br0 ip link set dev sw0p2 master br0”…””}”hjqsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jLh³hÇh´KJhj6h²hubeh}”(h]”Œbridging-in-dual-mac-mode”ah ]”h"]”Œbridging in dual mac mode”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´K /dev/null if [ $? -ne 0 ]; then echo "Setting up bridge" ip link add name br0 type bridge ip link set dev br0 type bridge ageing_time 1000 ip link set dev br0 type bridge vlan_filtering 1 ip link set eth1 down ip link set eth1 name sw0p1 ip link set dev sw0p1 up ip link set dev sw0p2 up ip link set dev sw0p2 master br0 ip link set dev sw0p1 master br0 bridge vlan add dev br0 vid 1 pvid untagged self ifconfig sw0p1 0.0.0.0 udhchc -i br0 fi umount /proc”h]”hXn#!/bin/sh mkdir proc mount -t proc none /proc ifconfig br0 > /dev/null if [ $? -ne 0 ]; then echo "Setting up bridge" ip link add name br0 type bridge ip link set dev br0 type bridge ageing_time 1000 ip link set dev br0 type bridge vlan_filtering 1 ip link set eth1 down ip link set eth1 name sw0p1 ip link set dev sw0p1 up ip link set dev sw0p2 up ip link set dev sw0p2 master br0 ip link set dev sw0p1 master br0 bridge vlan add dev br0 vid 1 pvid untagged self ifconfig sw0p1 0.0.0.0 udhchc -i br0 fi umount /proc”…””}”hjsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jLh³hÇh´KÍhjØh²hubhþ)”}”(hŒ run_nfs.sh:::”h]”hŒ run_nfs.sh::”…””}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³hÇh´KãhjØh²hubjM)”}”(hX<#!/bin/sh mkdir /tmp/root/bin -p mkdir /tmp/root/lib -p cp -r /lib/ /tmp/root/ cp -r /bin/ /tmp/root/ cp /sbin/ip /tmp/root/bin cp /sbin/bridge /tmp/root/bin cp /sbin/ifconfig /tmp/root/bin cp /sbin/udhcpc /tmp/root/bin cp /path/to/setup.sh /tmp/root/bin chroot /tmp/root/ busybox sh /bin/setup.sh run ./run_nfs.sh”h]”hX<#!/bin/sh mkdir /tmp/root/bin -p mkdir /tmp/root/lib -p cp -r /lib/ /tmp/root/ cp -r /bin/ /tmp/root/ cp /sbin/ip /tmp/root/bin cp /sbin/bridge /tmp/root/bin cp /sbin/ifconfig /tmp/root/bin cp /sbin/udhcpc /tmp/root/bin cp /path/to/setup.sh /tmp/root/bin chroot /tmp/root/ busybox sh /bin/setup.sh run ./run_nfs.sh”…””}”hj!sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jLh³hÇh´KåhjØh²hubeh}”(h]”Œnfs”ah ]”h"]”Œnfs”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´KÄubeh}”(h]”Œ6texas-instruments-cpsw-switchdev-based-ethernet-driver”ah ]”h"]”Œ6texas instruments cpsw switchdev based ethernet driver”ah$]”h&]”uh1hÈhhh²hh³hÇh´Kubeh}”(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”jbŒ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”}”Œnameids”}”(j<j9jaj^j j j3j0j„jjãjàj jj1j.jfjcjkjhj jjcj`j jjÕjÒj4j1uŒ nametypes”}”(j<‰ja‰j ‰j3‰j„‰jã‰j ‰j1‰jf‰jk‰j ‰jc‰j ‰jÕ‰j4‰uh}”(j9hÊj^jj jdj0jjj6jàj‡jjæj.j jcj4jhjijjàj`j#jjnjÒj£j1jØuŒ 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”]”Œ transformer”NŒ include_log”]”Œ decoration”Nh²hub.