€•ÁjŒ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Œ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”…””}”(hjhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¹hj hž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”…””}”(hjhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1héhŸh³h K hj hž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 Khj hž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}"”…””}”hj:sbah}”(h]”h ]”h"]”h$]”h&]”h±h²uh1j8hŸh³h Khj hž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”…””}”(hjShžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¹hjPhž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:”…””}”(hjlhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1héhŸh³h Khjhubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjchžhhŸh³h Nubah}”(h]”h ]”h"]”h$]”h&]”Œbullet”Œ-”uh1jahŸh³h KhjPhž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]”jb)”}”(hhh]”(jg)”}”(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&]”uh1jfhjŽubjg)”}”(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&]”uh1jfhjŽubjg)”}”(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Áubj9)”}”(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²uh1j8hŸh³h K*hjÁubeh}”(h]”h ]”h"]”h$]”h&]”uh1jfhjŽubeh}”(h]”h ]”h"]”h$]”h&]”j†j‡uh1jahŸh³h KhjŠubah}”(h]”h ]”h"]”h$]”h&]”uh1jˆhŸh³h KhjPhž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”…””}”(hjþhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¹hjûhž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 K9hjûhž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”…””}”(hj%hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¹hj"hžhhŸh³h Khj"hžhubj9)”}”(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”…””}”hjAsbah}”(h]”h ]”h"]”h$]”h&]”h±h²uh1j8hŸh³h KBhj"hžhubhê)”}”(hŒor::”h]”hŒor:”…””}”(hjOhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1héhŸh³h KHhj"hžhubj9)”}”(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”…””}”hj]sbah}”(h]”h ]”h"]”h$]”h&]”h±h²uh1j8hŸh³h KJhj"hž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”…””}”hjñsbah}”(h]”h ]”h"]”h$]”h&]”h±h²uh1j8hŸh³h KÍhjÄhžhubhê)”}”(hŒ run_nfs.sh:::”h]”hŒ run_nfs.sh::”…””}”(hjÿhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1héhŸh³h KãhjÄhžhubj9)”}”(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²uh1j8hŸ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”jNŒ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(j%jMjJjøjõjjjpjmjÏjÌjöjójjjRjOjWjTj j jOjLjŒj‰jÁj¾j juŒ nametypes”}”(j(‰jM‰jø‰j‰jp‰jωjö‰j‰jR‰jW‰j ‰jO‰jŒ‰jÁ‰j ‰uh}”(j%h¶jJj jõjPjjûjmj"jÌjsjójÒjjùjOj jTjUj jÌjLjj‰jZj¾jjjÄ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.