€cdocutils.nodes document q)�q}q(U nametypesq}q(X-hsr/prp driver source code and kconfig optionqNXframe duplication from the hostqNXperformance test and logsqNX mib-supportq ˆXhsr/prp memory mapq NX"plsdk_hsr_prp_id_if_number_mappingq ˆXoverviewq NXtcpq ˆX dual emacqNXuseful-commandsqˆX"pru ethernet driver (emac/hsr/prp)qNXprpqˆXsample-commandsqˆX node tableqNXsupervision frameqNX icss firmwareqNXshared-ram-memory-mapqˆXplsdk_prp_emac_mode-labelqˆXnetwork storm preventionqNXnet-snmpqNX&plsdk_hsr_prp_testing_firmware_offloadqˆXsoftware architectureqNXlinux softwareqNX testing hsr/prp firmware offloadqNX prp testingqNX%queue usage and vlan pcp to queue mapqNXfeatures supportedq NX!hsr_prp_firmware_memory_map_labelq!ˆXplsdk_ptp_testingq"ˆXvlan filteringq#NXgetting startedq$NX prp emac modeq%NXudpq&ˆXfaqq'NXvlanq(ˆX!lre statistics (firmware offload)q)NXfirmware features supportedq*NX!changing protocol at pru ethernetq+NXhsrq,ˆX hsr testingq-NXport to port duplicate tableq.NXvlan tag in supervision frameq/NXprotocol overviewq0NXtest procedureq1NXcut-through for hsrq2NXredundancy test and logsq3NXmulticast filteringq4NXpru-icss subsystem driverq5NXvlan over pru ethernetq6NXhsr_prpq7NXlinux hsr/prp driverq8NXduplicate algorithm and tableq9NXreceive interrupt pacingq:NXnode tables (firmware offload)q;NXiproute2qˆXplsdk_hsr_testingq?ˆXuseful commandsq@NuUsubstitution_defsqA}qBUparse_messagesqC]qD(cdocutils.nodes system_message qE)�qF}qG(U rawsourceqHUUparentqIcdocutils.nodes section qJ)�qK}qL(hHUhIhJ)�qM}qN(hHUhIhUsourceqOX\/home/gtbldadm/nightlybuilds/processor-sdk-doc/source/linux/Industrial_Protocols_HSR_PRP.rstqPUtagnameqQUsectionqRU attributesqS}qT(UdupnamesqU]UclassesqV]UbackrefsqW]UidsqX]qYUhsr-prpqZaUnamesq[]q\h7auUlineq]KUdocumentq^hUchildrenq_]q`(cdocutils.nodes title qa)�qb}qc(hHXHSR_PRPqdhIhMhOhPhQUtitleqehS}qf(hU]hV]hW]hX]h[]uh]Kh^hh_]qgcdocutils.nodes Text qhXHSR_PRPqi…�qj}qk(hHhdhIhbubaubhJ)�ql}qm(hHUhIhMhOhPhQhRhS}qn(hU]hV]hW]hX]qoUprotocol-overviewqpah[]qqh0auh]Kh^hh_]qr(ha)�qs}qt(hHXProtocol OverviewquhIhlhOhPhQhehS}qv(hU]hV]hW]hX]h[]uh]Kh^hh_]qwhhXProtocol Overviewqx…�qy}qz(hHhuhIhsubaubcdocutils.nodes paragraph q{)�q|}q}(hHX|HSR (High-availability Seamless Redundancy) and PRP (Parellel Redundancy Protocol) are protocols supporting redundant network connections defined by IEC 62439-3. Both operate by using two ethernet ports together, and duplicating every frame to be sent over both ports, so if one connection fails, the transmission succeeds. Frames are tagged with a sequence number, so the receiving node can identify and discard duplicates. HSR/PRP provides an advantage over other protocols that handle link failure (e.g. STP/RSTP) because there is no downtime or packet loss on link failure. This is required in some industrial networking situations.q~hIhlhOcdocutils.nodes reprunicode qXDsource/common/Industrial_Protocols/HSR_PRP/Protocol_Overview.rst.incq€…�q�}q‚bhQU paragraphqƒhS}q„(hU]hV]hW]hX]h[]uh]Kh^hh_]q…hhX|HSR (High-availability Seamless Redundancy) and PRP (Parellel Redundancy Protocol) are protocols supporting redundant network connections defined by IEC 62439-3. Both operate by using two ethernet ports together, and duplicating every frame to be sent over both ports, so if one connection fails, the transmission succeeds. Frames are tagged with a sequence number, so the receiving node can identify and discard duplicates. HSR/PRP provides an advantage over other protocols that handle link failure (e.g. STP/RSTP) because there is no downtime or packet loss on link failure. This is required in some industrial networking situations.q†…�q‡}qˆ(hHh~hIh|ubaubh{)�q‰}qŠ(hHXŽThe major difference between HSR and PRP is that HSR networks are configured as a ring, then frames are sent both directions around the ring by all nodes. PRP networks can take any configuration, and all connections are simply physically duplicated. Additionally, PRP nodes can interoperate with standard ethernet networks, while HSR cannot. (See more details below and full details in IEC 62439-3)q‹hIhlhOh�hQhƒhS}qŒ(hU]hV]hW]hX]h[]uh]K h^hh_]q�hhXŽThe major difference between HSR and PRP is that HSR networks are configured as a ring, then frames are sent both directions around the ring by all nodes. PRP networks can take any configuration, and all connections are simply physically duplicated. Additionally, PRP nodes can interoperate with standard ethernet networks, while HSR cannot. (See more details below and full details in IEC 62439-3)qŽ…�q�}q�(hHh‹hIh‰ubaubh{)�q‘}q’(hHX¤The HSR/PRP protocols can be run by the Linux kernel, and function over standard ethernet ports, but the advantage of using the PRU-ICSS supported industrial ethernet ports is that the PRU-ICSS HSR/PRP firmware offloads much of the protocol functionality to firmware, allowing more processing bandwidth for an application, and in the case of HSR, providing faster cut-through switching as frames pass through ring nodes.q“hIhlhOh�hQhƒhS}q”(hU]hV]hW]hX]h[]uh]Kh^hh_]q•hhX¤The HSR/PRP protocols can be run by the Linux kernel, and function over standard ethernet ports, but the advantage of using the PRU-ICSS supported industrial ethernet ports is that the PRU-ICSS HSR/PRP firmware offloads much of the protocol functionality to firmware, allowing more processing bandwidth for an application, and in the case of HSR, providing faster cut-through switching as frames pass through ring nodes.q–…�q—}q˜(hHh“hIh‘ubaubeubhKhJ)�q™}qš(hHUhIhMhOhPhQhRhS}q›(hU]hV]hW]hX]qœU icss-firmwareq�ah[]qžhauh]K/h^hh_]qŸ(ha)�q }q¡(hHX ICSS Firmwareq¢hIh™hOhPhQhehS}q£(hU]hV]hW]hX]h[]uh]K/h^hh_]q¤hhX ICSS Firmwareq¥…�q¦}q§(hHh¢hIh ubaubcdocutils.nodes comment q¨)�q©}qª(hHXFirmware featureshIh™hOhPhQUcommentq«hS}q¬(U xml:spaceq­Upreserveq®hX]hW]hU]hV]h[]uh]K0h^hh_]q¯hhXFirmware featuresq°…�q±}q²(hHUhIh©ubaubh¨)�q³}q´(hHXFhttp://processors.wiki.ti.com/index.php/PRU_ICSS_HSR_PRP_Release_NoteshIh™hOhXDsource/common/Industrial_Protocols/HSR_PRP/Firmware_Features.rst.incqµ…�q¶}q·bhQh«hS}q¸(h­h®hX]hW]hU]hV]h[]uh]Kh^hh_]q¹hhXFhttp://processors.wiki.ti.com/index.php/PRU_ICSS_HSR_PRP_Release_Notesqº…�q»}q¼(hHUhIh³ubaubh{)�q½}q¾(hHX{A common firmware is used across TI RTOS and Linux implementations of HSR/PRP. This section describes the firmware details.q¿hIh™hOh¶hQhƒhS}qÀ(hU]hV]hW]hX]h[]uh]Kh^hh_]qÁhhX{A common firmware is used across TI RTOS and Linux implementations of HSR/PRP. This section describes the firmware details.qÂ…�qÃ}qÄ(hHh¿hIh½ubaubhJ)�qÅ}qÆ(hHUhIh™hOh¶hQhRhS}qÇ(hU]hV]hW]hX]qÈUfirmware-features-supportedqÉah[]qÊh*auh]Kh^hh_]qË(ha)�qÌ}qÍ(hHXFirmware Features SupportedqÎhIhÅhOh¶hQhehS}qÏ(hU]hV]hW]hX]h[]uh]Kh^hh_]qÐhhXFirmware Features SupportedqÑ…�qÒ}qÓ(hHhÎhIhÌubaubcdocutils.nodes bullet_list qÔ)�qÕ}qÖ(hHUhIhÅhOh¶hQU bullet_listq×hS}qØ(UbulletqÙX-hX]hW]hU]hV]h[]uh]K h^hh_]qÚ(cdocutils.nodes list_item qÛ)�qÜ}qÝ(hHXj**HSR/PRP** - The implementation is as per IEC 62439-3 Ed 2.0 - Operates as a DAN (Dual Attached Node) hIhÕhONhQU list_itemqÞhS}qß(hU]hV]hW]hX]h[]uh]Nh^hh_]qà(h{)�qá}qâ(hHX **HSR/PRP**qãhIhÜhOh¶hQhƒhS}qä(hU]hV]hW]hX]h[]uh]K h_]qåcdocutils.nodes strong qæ)�qç}qè(hHhãhS}qé(hU]hV]hW]hX]h[]uhIháh_]qêhhXHSR/PRPqë…�qì}qí(hHUhIhçubahQUstrongqîubaubhÔ)�qï}qð(hHUhS}qñ(hÙX-hX]hW]hU]hV]h[]uhIhÜh_]qò(hÛ)�qó}qô(hHX/The implementation is as per IEC 62439-3 Ed 2.0qõhS}qö(hU]hV]hW]hX]h[]uhIhïh_]q÷h{)�qø}qù(hHhõhIhóhOh¶hQhƒhS}qú(hU]hV]hW]hX]h[]uh]K h_]qûhhX/The implementation is as per IEC 62439-3 Ed 2.0qü…�qý}qþ(hHhõhIhøubaubahQhÞubhÛ)�qÿ}r(hHX'Operates as a DAN (Dual Attached Node) hS}r(hU]hV]hW]hX]h[]uhIhïh_]rh{)�r}r(hHX&Operates as a DAN (Dual Attached Node)rhIhÿhOh¶hQhƒhS}r(hU]hV]hW]hX]h[]uh]K h_]rhhX&Operates as a DAN (Dual Attached Node)r…�r }r (hHjhIjubaubahQhÞubehQh×ubeubhÛ)�r }r (hHX�**HSR** - Operates as a DANH - As per clause 5 of the standard - Support for modes – H, T, U and N as per standard - Modes can be changed at run time hIhÕhONhQhÞhS}r (hU]hV]hW]hX]h[]uh]Nh^hh_]r(h{)�r}r(hHX**HSR**rhIj hOh¶hQhƒhS}r(hU]hV]hW]hX]h[]uh]Kh_]rhæ)�r}r(hHjhS}r(hU]hV]hW]hX]h[]uhIjh_]rhhXHSRr…�r}r(hHUhIjubahQhîubaubhÔ)�r}r(hHUhS}r(hÙX-hX]hW]hU]hV]h[]uhIj h_]r(hÛ)�r}r (hHXOperates as a DANHr!hS}r"(hU]hV]hW]hX]h[]uhIjh_]r#h{)�r$}r%(hHj!hIjhOh¶hQhƒhS}r&(hU]hV]hW]hX]h[]uh]Kh_]r'hhXOperates as a DANHr(…�r)}r*(hHj!hIj$ubaubahQhÞubhÛ)�r+}r,(hHXAs per clause 5 of the standardr-hS}r.(hU]hV]hW]hX]h[]uhIjh_]r/h{)�r0}r1(hHj-hIj+hOh¶hQhƒhS}r2(hU]hV]hW]hX]h[]uh]Kh_]r3hhXAs per clause 5 of the standardr4…�r5}r6(hHj-hIj0ubaubahQhÞubhÛ)�r7}r8(hHX3Support for modes – H, T, U and N as per standardr9hS}r:(hU]hV]hW]hX]h[]uhIjh_]r;h{)�r<}r=(hHj9hIj7hOh¶hQhƒhS}r>(hU]hV]hW]hX]h[]uh]Kh_]r?hhX3Support for modes – H, T, U and N as per standardr@…�rA}rB(hHj9hIj<ubaubahQhÞubhÛ)�rC}rD(hHX!Modes can be changed at run time hS}rE(hU]hV]hW]hX]h[]uhIjh_]rFh{)�rG}rH(hHX Modes can be changed at run timerIhIjChOh¶hQhƒhS}rJ(hU]hV]hW]hX]h[]uh]Kh_]rKhhX Modes can be changed at run timerL…�rM}rN(hHjIhIjGubaubahQhÞubehQh×ubeubhÛ)�rO}rP(hHXr**PRP** - Operates as a DANP - As per clause 6 of the standard - Two ports as per standard, Port A and Port B hIhÕhONhQhÞhS}rQ(hU]hV]hW]hX]h[]uh]Nh^hh_]rR(h{)�rS}rT(hHX**PRP**rUhIjOhOh¶hQhƒhS}rV(hU]hV]hW]hX]h[]uh]Kh_]rWhæ)�rX}rY(hHjUhS}rZ(hU]hV]hW]hX]h[]uhIjSh_]r[hhXPRPr\…�r]}r^(hHUhIjXubahQhîubaubhÔ)�r_}r`(hHUhS}ra(hÙX-hX]hW]hU]hV]h[]uhIjOh_]rb(hÛ)�rc}rd(hHXOperates as a DANPrehS}rf(hU]hV]hW]hX]h[]uhIj_h_]rgh{)�rh}ri(hHjehIjchOh¶hQhƒhS}rj(hU]hV]hW]hX]h[]uh]Kh_]rkhhXOperates as a DANPrl…�rm}rn(hHjehIjhubaubahQhÞubhÛ)�ro}rp(hHXAs per clause 6 of the standardrqhS}rr(hU]hV]hW]hX]h[]uhIj_h_]rsh{)�rt}ru(hHjqhIjohOh¶hQhƒhS}rv(hU]hV]hW]hX]h[]uh]Kh_]rwhhXAs per clause 6 of the standardrx…�ry}rz(hHjqhIjtubaubahQhÞubhÛ)�r{}r|(hHX-Two ports as per standard, Port A and Port B hS}r}(hU]hV]hW]hX]h[]uhIj_h_]r~h{)�r}r€(hHX,Two ports as per standard, Port A and Port Br�hIj{hOh¶hQhƒhS}r‚(hU]hV]hW]hX]h[]uh]Kh_]rƒhhX,Two ports as per standard, Port A and Port Br„…�r…}r†(hHj�hIjubaubahQhÞubehQh×ubeubhÛ)�r‡}rˆ(hHX»**Support for Node Table** - Total 128 entries on AMICx, AM335x, AM437x - Total 256 entries on AM57xx & K2G - Hash Table for faster lookup - O(1) complexity - Node Table statistics hIhÕhONhQhÞhS}r‰(hU]hV]hW]hX]h[]uh]Nh^hh_]rŠ(h{)�r‹}rŒ(hHX**Support for Node Table**r�hIj‡hOh¶hQhƒhS}rŽ(hU]hV]hW]hX]h[]uh]Kh_]r�hæ)�r�}r‘(hHj�hS}r’(hU]hV]hW]hX]h[]uhIj‹h_]r“hhXSupport for Node Tabler”…�r•}r–(hHUhIj�ubahQhîubaubhÔ)�r—}r˜(hHUhS}r™(hÙX-hX]hW]hU]hV]h[]uhIj‡h_]rš(hÛ)�r›}rœ(hHX*Total 128 entries on AMICx, AM335x, AM437xr�hS}rž(hU]hV]hW]hX]h[]uhIj—h_]rŸh{)�r }r¡(hHj�hIj›hOh¶hQhƒhS}r¢(hU]hV]hW]hX]h[]uh]Kh_]r£hhX*Total 128 entries on AMICx, AM335x, AM437xr¤…�r¥}r¦(hHj�hIj ubaubahQhÞubhÛ)�r§}r¨(hHX!Total 256 entries on AM57xx & K2Gr©hS}rª(hU]hV]hW]hX]h[]uhIj—h_]r«h{)�r¬}r­(hHj©hIj§hOh¶hQhƒhS}r®(hU]hV]hW]hX]h[]uh]Kh_]r¯hhX!Total 256 entries on AM57xx & K2Gr°…�r±}r²(hHj©hIj¬ubaubahQhÞubhÛ)�r³}r´(hHXHash Table for faster lookuprµhS}r¶(hU]hV]hW]hX]h[]uhIj—h_]r·h{)�r¸}r¹(hHjµhIj³hOh¶hQhƒhS}rº(hU]hV]hW]hX]h[]uh]Kh_]r»hhXHash Table for faster lookupr¼…�r½}r¾(hHjµhIj¸ubaubahQhÞubhÛ)�r¿}rÀ(hHXO(1) complexityrÁhS}rÂ(hU]hV]hW]hX]h[]uhIj—h_]rÃh{)�rÄ}rÅ(hHjÁhIj¿hOh¶hQhƒhS}rÆ(hU]hV]hW]hX]h[]uh]K h_]rÇhhXO(1) complexityrÈ…�rÉ}rÊ(hHjÁhIjÄubaubahQhÞubhÛ)�rË}rÌ(hHXNode Table statistics hS}rÍ(hU]hV]hW]hX]h[]uhIj—h_]rÎh{)�rÏ}rÐ(hHXNode Table statisticsrÑhIjËhOh¶hQhƒhS}rÒ(hU]hV]hW]hX]h[]uh]K!h_]rÓhhXNode Table statisticsrÔ…�rÕ}rÖ(hHjÑhIjÏubaubahQhÞubehQh×ubeubhÛ)�r×}rØ(hHXq**Support for Multicast Filtering** - Supported on all SoCs - Hash Table for faster lookup - O(1) complexity hIhÕhONhQhÞhS}rÙ(hU]hV]hW]hX]h[]uh]Nh^hh_]rÚ(h{)�rÛ}rÜ(hHX#**Support for Multicast Filtering**rÝhIj×hOh¶hQhƒhS}rÞ(hU]hV]hW]hX]h[]uh]K#h_]rßhæ)�rà}rá(hHjÝhS}râ(hU]hV]hW]hX]h[]uhIjÛh_]rãhhXSupport for Multicast Filteringrä…�rå}ræ(hHUhIjàubahQhîubaubhÔ)�rç}rè(hHUhS}ré(hÙX-hX]hW]hU]hV]h[]uhIj×h_]rê(hÛ)�rë}rì(hHXSupported on all SoCsríhS}rî(hU]hV]hW]hX]h[]uhIjçh_]rïh{)�rð}rñ(hHjíhIjëhOh¶hQhƒhS}rò(hU]hV]hW]hX]h[]uh]K%h_]róhhXSupported on all SoCsrô…�rõ}rö(hHjíhIjðubaubahQhÞubhÛ)�r÷}rø(hHXHash Table for faster lookuprùhS}rú(hU]hV]hW]hX]h[]uhIjçh_]rûh{)�rü}rý(hHjùhIj÷hOh¶hQhƒhS}rþ(hU]hV]hW]hX]h[]uh]K&h_]rÿhhXHash Table for faster lookupr…�r}r(hHjùhIjüubaubahQhÞubhÛ)�r}r(hHXO(1) complexity hS}r(hU]hV]hW]hX]h[]uhIjçh_]rh{)�r}r(hHXO(1) complexityr hIjhOh¶hQhƒhS}r (hU]hV]hW]hX]h[]uh]K'h_]r hhXO(1) complexityr …�r }r(hHj hIjubaubahQhÞubehQh×ubeubhÛ)�r}r(hHXâ**Duplicate Discard Table** - Duplicate discard on Port to Host path (HSR and PRP) - Duplicate discard table on Port to Port path (HSR) - Data integrity (CRC) check during port to port forwarding, except cut through (HSR) hIhÕhONhQhÞhS}r(hU]hV]hW]hX]h[]uh]Nh^hh_]r(h{)�r}r(hHX**Duplicate Discard Table**rhIjhOh¶hQhƒhS}r(hU]hV]hW]hX]h[]uh]K)h_]rhæ)�r}r(hHjhS}r(hU]hV]hW]hX]h[]uhIjh_]rhhXDuplicate Discard Tabler…�r}r(hHUhIjubahQhîubaubhÔ)�r}r (hHUhS}r!(hÙX-hX]hW]hU]hV]h[]uhIjh_]r"(hÛ)�r#}r$(hHX4Duplicate discard on Port to Host path (HSR and PRP)r%hS}r&(hU]hV]hW]hX]h[]uhIjh_]r'h{)�r(}r)(hHj%hIj#hOh¶hQhƒhS}r*(hU]hV]hW]hX]h[]uh]K+h_]r+hhX4Duplicate discard on Port to Host path (HSR and PRP)r,…�r-}r.(hHj%hIj(ubaubahQhÞubhÛ)�r/}r0(hHX2Duplicate discard table on Port to Port path (HSR)r1hS}r2(hU]hV]hW]hX]h[]uhIjh_]r3h{)�r4}r5(hHj1hIj/hOh¶hQhƒhS}r6(hU]hV]hW]hX]h[]uh]K,h_]r7hhX2Duplicate discard table on Port to Port path (HSR)r8…�r9}r:(hHj1hIj4ubaubahQhÞubhÛ)�r;}r<(hHXTData integrity (CRC) check during port to port forwarding, except cut through (HSR) hS}r=(hU]hV]hW]hX]h[]uhIjh_]r>h{)�r?}r@(hHXSData integrity (CRC) check during port to port forwarding, except cut through (HSR)rAhIj;hOh¶hQhƒhS}rB(hU]hV]hW]hX]h[]uh]K-h_]rChhXSData integrity (CRC) check during port to port forwarding, except cut through (HSR)rD…�rE}rF(hHjAhIj?ubaubahQhÞubehQh×ubeubhÛ)�rG}rH(hHXå**QoS scheme** : 3-bit VLAN PCP - No of levels supported : 8 - Number of host queues : 2 \| 4 QoS levels per host queue - Number of port queues : 4 \| 2 QoS levels per port queue - Number of host queues are configurable hIhÕhONhQhÞhS}rI(hU]hV]hW]hX]h[]uh]Nh^hh_]rJ(h{)�rK}rL(hHX **QoS scheme** : 3-bit VLAN PCPhIjGhOh¶hQhƒhS}rM(hU]hV]hW]hX]h[]uh]K/h_]rN(hæ)�rO}rP(hHX**QoS scheme**hS}rQ(hU]hV]hW]hX]h[]uhIjKh_]rRhhX QoS schemerS…�rT}rU(hHUhIjOubahQhîubhhX : 3-bit VLAN PCPrV…�rW}rX(hHX : 3-bit VLAN PCPhIjKubeubhÔ)�rY}rZ(hHUhS}r[(hÙX-hX]hW]hU]hV]h[]uhIjGh_]r\(hÛ)�r]}r^(hHXNo of levels supported : 8r_hS}r`(hU]hV]hW]hX]h[]uhIjYh_]rah{)�rb}rc(hHj_hIj]hOh¶hQhƒhS}rd(hU]hV]hW]hX]h[]uh]K1h_]rehhXNo of levels supported : 8rf…�rg}rh(hHj_hIjbubaubahQhÞubhÛ)�ri}rj(hHX9Number of host queues : 2 \| 4 QoS levels per host queuerkhS}rl(hU]hV]hW]hX]h[]uhIjYh_]rmh{)�rn}ro(hHjkhIjihOh¶hQhƒhS}rp(hU]hV]hW]hX]h[]uh]K2h_]rqhhX8Number of host queues : 2 | 4 QoS levels per host queuerr…�rs}rt(hHX9Number of host queues : 2 \| 4 QoS levels per host queuehIjnubaubahQhÞubhÛ)�ru}rv(hHX9Number of port queues : 4 \| 2 QoS levels per port queuerwhS}rx(hU]hV]hW]hX]h[]uhIjYh_]ryh{)�rz}r{(hHjwhIjuhOh¶hQhƒhS}r|(hU]hV]hW]hX]h[]uh]K3h_]r}hhX8Number of port queues : 4 | 2 QoS levels per port queuer~…�r}r€(hHX9Number of port queues : 4 \| 2 QoS levels per port queuehIjzubaubahQhÞubhÛ)�r�}r‚(hHX'Number of host queues are configurable hS}rƒ(hU]hV]hW]hX]h[]uhIjYh_]r„h{)�r…}r†(hHX&Number of host queues are configurabler‡hIj�hOh¶hQhƒhS}rˆ(hU]hV]hW]hX]h[]uh]K4h_]r‰hhX&Number of host queues are configurablerŠ…�r‹}rŒ(hHj‡hIj…ubaubahQhÞubehQh×ubeubhÛ)�r�}rŽ(hHXf**Statistics** - Supports all MIB statistics as per standard - Node Table statistics for debugging hIhÕhONhQhÞhS}r�(hU]hV]hW]hX]h[]uh]Nh^hh_]r�(h{)�r‘}r’(hHX**Statistics**r“hIj�hOh¶hQhƒhS}r”(hU]hV]hW]hX]h[]uh]K6h_]r•hæ)�r–}r—(hHj“hS}r˜(hU]hV]hW]hX]h[]uhIj‘h_]r™hhX Statisticsrš…�r›}rœ(hHUhIj–ubahQhîubaubhÔ)�r�}rž(hHUhS}rŸ(hÙX-hX]hW]hU]hV]h[]uhIj�h_]r (hÛ)�r¡}r¢(hHX+Supports all MIB statistics as per standardr£hS}r¤(hU]hV]hW]hX]h[]uhIj�h_]r¥h{)�r¦}r§(hHj£hIj¡hOh¶hQhƒhS}r¨(hU]hV]hW]hX]h[]uh]K8h_]r©hhX+Supports all MIB statistics as per standardrª…�r«}r¬(hHj£hIj¦ubaubahQhÞubhÛ)�r­}r®(hHX$Node Table statistics for debugging hS}r¯(hU]hV]hW]hX]h[]uhIj�h_]r°h{)�r±}r²(hHX#Node Table statistics for debuggingr³hIj­hOh¶hQhƒhS}r´(hU]hV]hW]hX]h[]uh]K9h_]rµhhX#Node Table statistics for debuggingr¶…�r·}r¸(hHj³hIj±ubaubahQhÞubehQh×ubeubhÛ)�r¹}rº(hHXò**PTP/1588** - PTP Slave and Master mode - Supports P2P clock. - PTP over 802.3 (Annex F) - Transparent Clock supported - Ordinary Clock supported - Single and Two step clock supported - Peer delay Response is always sent as two-step hIhÕhONhQhÞhS}r»(hU]hV]hW]hX]h[]uh]Nh^hh_]r¼(h{)�r½}r¾(hHX **PTP/1588**r¿hIj¹hOh¶hQhƒhS}rÀ(hU]hV]hW]hX]h[]uh]K;h_]rÁhæ)�rÂ}rÃ(hHj¿hS}rÄ(hU]hV]hW]hX]h[]uhIj½h_]rÅhhXPTP/1588rÆ…�rÇ}rÈ(hHUhIjÂubahQhîubaubhÔ)�rÉ}rÊ(hHUhS}rË(hÙX-hX]hW]hU]hV]h[]uhIj¹h_]rÌ(hÛ)�rÍ}rÎ(hHXPTP Slave and Master moderÏhS}rÐ(hU]hV]hW]hX]h[]uhIjÉh_]rÑh{)�rÒ}rÓ(hHjÏhIjÍhOh¶hQhƒhS}rÔ(hU]hV]hW]hX]h[]uh]K=h_]rÕhhXPTP Slave and Master moderÖ…�r×}rØ(hHjÏhIjÒubaubahQhÞubhÛ)�rÙ}rÚ(hHXSupports P2P clock.rÛhS}rÜ(hU]hV]hW]hX]h[]uhIjÉh_]rÝh{)�rÞ}rß(hHjÛhIjÙhOh¶hQhƒhS}rà(hU]hV]hW]hX]h[]uh]K>h_]ráhhXSupports P2P clock.râ…�rã}rä(hHjÛhIjÞubaubahQhÞubhÛ)�rå}ræ(hHXPTP over 802.3 (Annex F)rçhS}rè(hU]hV]hW]hX]h[]uhIjÉh_]réh{)�rê}rë(hHjçhIjåhOh¶hQhƒhS}rì(hU]hV]hW]hX]h[]uh]K?h_]ríhhXPTP over 802.3 (Annex F)rî…�rï}rð(hHjçhIjêubaubahQhÞubhÛ)�rñ}rò(hHXTransparent Clock supportedróhS}rô(hU]hV]hW]hX]h[]uhIjÉh_]rõh{)�rö}r÷(hHjóhIjñhOh¶hQhƒhS}rø(hU]hV]hW]hX]h[]uh]K@h_]rùhhXTransparent Clock supportedrú…�rû}rü(hHjóhIjöubaubahQhÞubhÛ)�rý}rþ(hHXOrdinary Clock supportedrÿhS}r(hU]hV]hW]hX]h[]uhIjÉh_]rh{)�r}r(hHjÿhIjýhOh¶hQhƒhS}r(hU]hV]hW]hX]h[]uh]KAh_]rhhXOrdinary Clock supportedr…�r}r(hHjÿhIjubaubahQhÞubhÛ)�r }r (hHX#Single and Two step clock supportedr hS}r (hU]hV]hW]hX]h[]uhIjÉh_]r h{)�r}r(hHj hIj hOh¶hQhƒhS}r(hU]hV]hW]hX]h[]uh]KBh_]rhhX#Single and Two step clock supportedr…�r}r(hHj hIjubaubahQhÞubhÛ)�r}r(hHX/Peer delay Response is always sent as two-step hS}r(hU]hV]hW]hX]h[]uhIjÉh_]rh{)�r}r(hHX.Peer delay Response is always sent as two-steprhIjhOh¶hQhƒhS}r(hU]hV]hW]hX]h[]uh]KCh_]rhhX.Peer delay Response is always sent as two-stepr…�r}r (hHjhIjubaubahQhÞubehQh×ubeubhÛ)�r!}r"(hHX3**Storm Prevention** : Yes. Configurable per port hIhÕhOX[internal padding after source/common/Industrial_Protocols/HSR_PRP/Firmware_Features.rst.incr#hQhÞhS}r$(hU]hV]hW]hX]h[]uh]Nh^hh_]r%h{)�r&}r'(hHX2**Storm Prevention** : Yes. Configurable per porthIj!hOh¶hQhƒhS}r((hU]hV]hW]hX]h[]uh]KEh_]r)(hæ)�r*}r+(hHX**Storm Prevention**hS}r,(hU]hV]hW]hX]h[]uhIj&h_]r-hhXStorm Preventionr.…�r/}r0(hHUhIj*ubahQhîubhhX : Yes. Configurable per portr1…�r2}r3(hHX : Yes. Configurable per porthIj&ubeubaubeubh¨)�r4}r5(hHX=http://processors.wiki.ti.com/index.php/Processor_SDK_HSR_PRPhIhÅhOhX;source/common/Industrial_Protocols/HSR_PRP/Firmware.rst.incr6…�r7}r8bhQh«hS}r9(h­h®hX]hW]hU]hV]h[]uh]Kh^hh_]r:hhX=http://processors.wiki.ti.com/index.php/Processor_SDK_HSR_PRPr;…�r<}r=(hHUhIj4ubaubeubhJ)�r>}r?(hHUhIh™hOj7hQhRhS}r@(hU]hV]hW]hX]rAUduplicate-algorithm-and-tablerBah[]rCh9auh]Kh^hh_]rD(ha)�rE}rF(hHXDuplicate algorithm and tablerGhIj>hOj7hQhehS}rH(hU]hV]hW]hX]h[]uh]Kh^hh_]rIhhXDuplicate algorithm and tablerJ…�rK}rL(hHjGhIjEubaubh{)�rM}rN(hHX¢Handling duplicate frames is one of the main tasks in HSR and PRP. The LRE must not provide the duplicate of a frame to its upper layer in order to offload the processor. The algorithm for discarding duplicates is not specified in IEC 62439-3. However, the standard mandates that the algorithm must be designed such that it never rejects a legitimate frame, while occasional acceptance of a duplicate can be tolerated.rOhIj>hOj7hQhƒhS}rP(hU]hV]hW]hX]h[]uh]Kh^hh_]rQhhX¢Handling duplicate frames is one of the main tasks in HSR and PRP. The LRE must not provide the duplicate of a frame to its upper layer in order to offload the processor. The algorithm for discarding duplicates is not specified in IEC 62439-3. However, the standard mandates that the algorithm must be designed such that it never rejects a legitimate frame, while occasional acceptance of a duplicate can be tolerated.rR…�rS}rT(hHjOhIjMubaubh{)�rU}rV(hHXÓIn HSR, additionally to discarding duplicates destined to the host, a discard operation should also be used to prevent frames from looping in the network. A looping frame is a frame that is never discarded in any node of the network and therefore it keeps looping indefinitely. Normally, such a frame should be dropped by its source node. The function handles the case when a defective HSR device does not filter correctly according to source/destination address. This operation is less critical than the host duplicate discard. It is also specified that any duplicate discard method shall be able to forget an entry identified by the source MAC address and the sequence number after a time EntryForgetTime (default 400ms).rWhIj>hOj7hQhƒhS}rX(hU]hV]hW]hX]h[]uh]K h^hh_]rYhhXÓIn HSR, additionally to discarding duplicates destined to the host, a discard operation should also be used to prevent frames from looping in the network. A looping frame is a frame that is never discarded in any node of the network and therefore it keeps looping indefinitely. Normally, such a frame should be dropped by its source node. The function handles the case when a defective HSR device does not filter correctly according to source/destination address. This operation is less critical than the host duplicate discard. It is also specified that any duplicate discard method shall be able to forget an entry identified by the source MAC address and the sequence number after a time EntryForgetTime (default 400ms).rZ…�r[}r\(hHjWhIjUubaubh{)�r]}r^(hHXRA table holds entries representing frames that have been registered in the LRE, each entry is represented bya frame signature. The signature consists of the source MAC address and the 16 bit sequence number. The sequence number value is incremented by 1 when a frame and its duplicate are sent by a source in an HSR network. This signature allows identifying a frame uniquely. When a frame is received, the list is searched by comparing the frame signature with all entries in the table. If such an entry is found, the frame is a duplicate and shall be discarded. If no entry exists, the frame is the first one received and needs to be forwarded to the application and/or – in case of HSR - to the other port. With a successful forwarding process (frame received with no error), a new entry with the signature of that frame is created in the table.r_hIj>hOj7hQhƒhS}r`(hU]hV]hW]hX]h[]uh]Kh^hh_]rahhXRA table holds entries representing frames that have been registered in the LRE, each entry is represented bya frame signature. The signature consists of the source MAC address and the 16 bit sequence number. The sequence number value is incremented by 1 when a frame and its duplicate are sent by a source in an HSR network. This signature allows identifying a frame uniquely. When a frame is received, the list is searched by comparing the frame signature with all entries in the table. If such an entry is found, the frame is a duplicate and shall be discarded. If no entry exists, the frame is the first one received and needs to be forwarded to the application and/or – in case of HSR - to the other port. With a successful forwarding process (frame received with no error), a new entry with the signature of that frame is created in the table.rb…�rc}rd(hHj_hIj]ubaubh{)�re}rf(hHXiA linear lookup process is too time consuming; thus Hash algorithms are used to decrease the search time.rghIj>hOj7hQhƒhS}rh(hU]hV]hW]hX]h[]uh]K'h^hh_]rihhXiA linear lookup process is too time consuming; thus Hash algorithms are used to decrease the search time.rj…�rk}rl(hHjghIjeubaubeubhJ)�rm}rn(hHUhIh™hOj7hQhRhS}ro(hU]hV]hW]hX]rpUport-to-host-duplicate-tablerqah[]rrh=auh]K+h^hh_]rs(ha)�rt}ru(hHXPort to Host Duplicate TablervhIjmhOj7hQhehS}rw(hU]hV]hW]hX]h[]uh]K+h^hh_]rxhhXPort to Host Duplicate Tablery…�rz}r{(hHjvhIjtubaubh{)�r|}r}(hHX^It is used to prevent sending duplicate frames to the upper layers. This table is common for both PRUs. Resource sharing implies that collision (two PRUs accessing the same data) must be handled. Since the table is common to both PRUs, the host duplicate rejection must be done after the EOF is detected in order to avoid rejecting legitimate frames.r~hIjmhOj7hQhƒhS}r(hU]hV]hW]hX]h[]uh]K-h^hh_]r€hhX^It is used to prevent sending duplicate frames to the upper layers. This table is common for both PRUs. Resource sharing implies that collision (two PRUs accessing the same data) must be handled. Since the table is common to both PRUs, the host duplicate rejection must be done after the EOF is detected in order to avoid rejecting legitimate frames.r�…�r‚}rƒ(hHj~hIj|ubaubeubhJ)�r„}r…(hHUhIh™hOj7hQhRhS}r†(hU]hV]hW]hX]r‡Uport-to-port-duplicate-tablerˆah[]r‰h.auh]K4h^hh_]rŠ(ha)�r‹}rŒ(hHXPort to Port Duplicate Tabler�hIj„hOj7hQhehS}rŽ(hU]hV]hW]hX]h[]uh]K4h^hh_]r�hhXPort to Port Duplicate Tabler�…�r‘}r’(hHj�hIj‹ubaubh{)�r“}r”(hHXâA PRU forwards the frames received from one HSR port to the other HSR port, unless the frame was sent already. Each PRU has its own port duplicate table. A search operation can start before the EOF is detected since the table is not shared between the PRU and is not subject to any modification during the reception of a frame. In order to minimize the load of the PRU after EOF reception, the search operation in the port duplicate table is executed during frame reception. Moreover, this allows to quickly detecting if the frame should be discarded early in the reception process. An insertion in the table is still made only after the EOF is detected, but the operation is much faster since the result of the search operation can used.r•hIj„hOj7hQhƒhS}r–(hU]hV]hW]hX]h[]uh]K6h^hh_]r—hhXâA PRU forwards the frames received from one HSR port to the other HSR port, unless the frame was sent already. Each PRU has its own port duplicate table. A search operation can start before the EOF is detected since the table is not shared between the PRU and is not subject to any modification during the reception of a frame. In order to minimize the load of the PRU after EOF reception, the search operation in the port duplicate table is executed during frame reception. Moreover, this allows to quickly detecting if the frame should be discarded early in the reception process. An insertion in the table is still made only after the EOF is detected, but the operation is much faster since the result of the search operation can used.r˜…�r™}rš(hHj•hIj“ubaubeubhJ)�r›}rœ(hHUU referencedr�KhIh™hOj7hQhRhS}rž(hU]rŸX node tabler ahV]hW]hX]r¡U node-tabler¢ah[]uh]KCh^hh_]r£(ha)�r¤}r¥(hHX Node Tabler¦hIj›hOj7hQhehS}r§(hU]hV]hW]hX]h[]uh]KCh^hh_]r¨hhX Node Tabler©…�rª}r«(hHj¦hIj¤ubaubh{)�r¬}r­(hHXÑThe node table is a central element of the HSR/PRP mechanism although the standard declares node tables optional. This firmware implements node tables for HSR and PRP. Node table handling is implemented in the PRU and comprises of registering incoming supervision and non-supervision-frames as well as ageing and deleting of old entries. The standard requires updating the node table when a supervision frame is received. Accessing the node table is thus not critical since supervision frames are sent only every 2 seconds. For HSR, to maintain statistics for each source node of the network and to facilitate debugging, the implementation updates the node table for each frame received by the host from a source that has previously sent a supervision frame. A further advantage of this approach is having a similar implementation for HSR and PRP. Indeed, the PRP Standard requires updating the node table, if implemented, for all the incoming frames in order to keep track of the traffic contented to each redundant LAN. The node table is accessible by the host for management purposes. Update- and register operations in the table should be done when the frame is completely received in order to avoid registering erroneous frames.r®hIj›hOj7hQhƒhS}r¯(hU]hV]hW]hX]h[]uh]KEh^hh_]r°hhXÑThe node table is a central element of the HSR/PRP mechanism although the standard declares node tables optional. This firmware implements node tables for HSR and PRP. Node table handling is implemented in the PRU and comprises of registering incoming supervision and non-supervision-frames as well as ageing and deleting of old entries. The standard requires updating the node table when a supervision frame is received. Accessing the node table is thus not critical since supervision frames are sent only every 2 seconds. For HSR, to maintain statistics for each source node of the network and to facilitate debugging, the implementation updates the node table for each frame received by the host from a source that has previously sent a supervision frame. A further advantage of this approach is having a similar implementation for HSR and PRP. Indeed, the PRP Standard requires updating the node table, if implemented, for all the incoming frames in order to keep track of the traffic contented to each redundant LAN. The node table is accessible by the host for management purposes. Update- and register operations in the table should be done when the frame is completely received in order to avoid registering erroneous frames.r±…�r²}r³(hHj®hIj¬ubaubh{)�r´}rµ(hHXPThe node table search/update operation is very critical since it is resource/time consuming (maximum NODE\_TABLE\_SIZE is 256 entries). In the worst case scenario (node table full), a linear lookup operation in the receiving task could load the PRU too much and in consequence could cause Rx overflow or TX underflow. Moreover the node table is common to both PRUs and since it is accessed often, the resource-sharing management has additional impact on the latency. Optimized linear tables were considered, but the timing remained too critical in the worst case scenario. Hash tables are not considered because it is not allowed to lose entries due to collisions. The implemented solution is a sorted table with a two layer table structure. This allows to significantly optimize the lookup time especially when the table has lots of valid entries.hIj›hOj7hQhƒhS}r¶(hU]hV]hW]hX]h[]uh]KYh^hh_]r·hhXNThe node table search/update operation is very critical since it is resource/time consuming (maximum NODE_TABLE_SIZE is 256 entries). In the worst case scenario (node table full), a linear lookup operation in the receiving task could load the PRU too much and in consequence could cause Rx overflow or TX underflow. Moreover the node table is common to both PRUs and since it is accessed often, the resource-sharing management has additional impact on the latency. Optimized linear tables were considered, but the timing remained too critical in the worst case scenario. Hash tables are not considered because it is not allowed to lose entries due to collisions. The implemented solution is a sorted table with a two layer table structure. This allows to significantly optimize the lookup time especially when the table has lots of valid entries.r¸…�r¹}rº(hHXPThe node table search/update operation is very critical since it is resource/time consuming (maximum NODE\_TABLE\_SIZE is 256 entries). In the worst case scenario (node table full), a linear lookup operation in the receiving task could load the PRU too much and in consequence could cause Rx overflow or TX underflow. Moreover the node table is common to both PRUs and since it is accessed often, the resource-sharing management has additional impact on the latency. Optimized linear tables were considered, but the timing remained too critical in the worst case scenario. Hash tables are not considered because it is not allowed to lose entries due to collisions. The implemented solution is a sorted table with a two layer table structure. This allows to significantly optimize the lookup time especially when the table has lots of valid entries.hIj´ubaubh{)�r»}r¼(hHX²It is important to notice that in a normal HSR case scenario there are - in average - significantly more successful lookup operations (MAC address found in the table) than insertion and deletion operations. Indeed, insertion operations are only made with a supervision frame. This assumption cannot be made for PRP since all frames can create an entry in the node table. The design is therefore optimized according to this assumption.r½hIj›hOj7hQhƒhS}r¾(hU]hV]hW]hX]h[]uh]Kgh^hh_]r¿hhX²It is important to notice that in a normal HSR case scenario there are - in average - significantly more successful lookup operations (MAC address found in the table) than insertion and deletion operations. Indeed, insertion operations are only made with a supervision frame. This assumption cannot be made for PRP since all frames can create an entry in the node table. The design is therefore optimized according to this assumption.rÀ…�rÁ}rÂ(hHj½hIj»ubaubeubhJ)�rÃ}rÄ(hHUhIh™hOj7hQhRhS}rÅ(hU]hV]hW]hX]rÆUframe-duplication-from-the-hostrÇah[]rÈhauh]Kph^hh_]rÉ(ha)�rÊ}rË(hHXFrame duplication from the hostrÌhIjÃhOj7hQhehS}rÍ(hU]hV]hW]hX]h[]uh]Kph^hh_]rÎhhXFrame duplication from the hostrÏ…�rÐ}rÑ(hHjÌhIjÊubaubh{)�rÒ}rÓ(hHXLFrames sent by the host must be duplicated and should be sent to both ports nearly at the same time for HSR and PRP. In a simple approach, the host stores the frame in the queue of one PRU, the PRU then waits until both ports are available and finally sends the frame at the same time via both ports. However, this solution is not resource efficient and it increases the latency of one PRU when waiting for the PORT to be ready. Therefore, a solution that off-loads the PRU from the duplication task is implemented: the host driver duplicates the frames and puts a copy to each PRU queue.rÔhIjÃhOj7hQhƒhS}rÕ(hU]hV]hW]hX]h[]uh]Krh^hh_]rÖhhXLFrames sent by the host must be duplicated and should be sent to both ports nearly at the same time for HSR and PRP. In a simple approach, the host stores the frame in the queue of one PRU, the PRU then waits until both ports are available and finally sends the frame at the same time via both ports. However, this solution is not resource efficient and it increases the latency of one PRU when waiting for the PORT to be ready. Therefore, a solution that off-loads the PRU from the duplication task is implemented: the host driver duplicates the frames and puts a copy to each PRU queue.r×…�rØ}rÙ(hHjÔhIjÒubaubh{)�rÚ}rÛ(hHX2The implementation is however not straightforward:rÜhIjÃhOj7hQhƒhS}rÝ(hU]hV]hW]hX]h[]uh]K|h^hh_]rÞhhX2The implementation is however not straightforward:rß…�rà}rá(hHjÜhIjÚubaubh{)�râ}rã(hHX«Since the frames are not “linkedâ€� to each other, there is no guarantee that the frames are sent by both PRUs within a short interval. The host could control the queue status and only push the frames in the highest priority queue of both PRU when the queues are free. This would force each PRU to send the frame and its duplicate next. Nevertheless, for HSR this solution removes the prioritization of the frame circulating in the HSR ring as a PRU could buffer a high priority frame from the ring due to a lower priority frame sent by the host. Frames circulating in the ring are to be treated with higher priority than frames sent by the host. There is a compromise to be found.rähIjÃhOj7hQhƒhS}rå(hU]hV]hW]hX]h[]uh]K~h^hh_]ræhhX«Since the frames are not “linkedâ€� to each other, there is no guarantee that the frames are sent by both PRUs within a short interval. The host could control the queue status and only push the frames in the highest priority queue of both PRU when the queues are free. This would force each PRU to send the frame and its duplicate next. Nevertheless, for HSR this solution removes the prioritization of the frame circulating in the HSR ring as a PRU could buffer a high priority frame from the ring due to a lower priority frame sent by the host. Frames circulating in the ring are to be treated with higher priority than frames sent by the host. There is a compromise to be found.rç…�rè}ré(hHjähIjâubaubh{)�rê}rë(hHXÞThe solution is the following: The host driver duplicates the frame and puts the duplicates in the queues of each PRU. The queue is selected based on the priority of the frame. Each PRU handles the frame independently and we only have the assurance that each frame will be sent out within an unknown interval. The drawback of this solution is the lack of control on when each frame will be sent out. The interval can be bigger than one maximum sized Ethernet frame in this case.rìhIjÃhOj7hQhƒhS}rí(hU]hV]hW]hX]h[]uh]K‰h^hh_]rîhhXÞThe solution is the following: The host driver duplicates the frame and puts the duplicates in the queues of each PRU. The queue is selected based on the priority of the frame. Each PRU handles the frame independently and we only have the assurance that each frame will be sent out within an unknown interval. The drawback of this solution is the lack of control on when each frame will be sent out. The interval can be bigger than one maximum sized Ethernet frame in this case.rï…�rð}rñ(hHjìhIjêubaubeubhJ)�rò}ró(hHUhIh™hOj7hQhRhS}rô(hU]hV]hW]hX]rõUsupervision-frameröah[]r÷hauh]K’h^hh_]rø(ha)�rù}rú(hHXSupervision FramerûhIjòhOj7hQhehS}rü(hU]hV]hW]hX]h[]uh]K’h^hh_]rýhhXSupervision Framerþ…�rÿ}r(hHjûhIjùubaubh{)�r}r(hHXIncoming supervision frames are received and processed by the PRU. On reception of a frame, the PRU updates the node table and the statistic counters. For HSR, if the received supervision frame originates from the receiver (i.e. it traversed the whole ring) it is discarded. Otherwise it is sent to the next node in store and forward mode. The reason for using store and forward mode is the following: A supervision frame might trigger the creation of an entry in the node table and this task is time consuming. By sending the frame in store and forward mode, more time is available for this operation while receiving the frame. Each device in an HSR/PRP network sends supervision frames at a constant time interval. Outgoing supervision frames are composed and sent by the host CPU.rhIjòhOj7hQhƒhS}r(hU]hV]hW]hX]h[]uh]K”h^hh_]rhhXIncoming supervision frames are received and processed by the PRU. On reception of a frame, the PRU updates the node table and the statistic counters. For HSR, if the received supervision frame originates from the receiver (i.e. it traversed the whole ring) it is discarded. Otherwise it is sent to the next node in store and forward mode. The reason for using store and forward mode is the following: A supervision frame might trigger the creation of an entry in the node table and this task is time consuming. By sending the frame in store and forward mode, more time is available for this operation while receiving the frame. Each device in an HSR/PRP network sends supervision frames at a constant time interval. Outgoing supervision frames are composed and sent by the host CPU.r…�r}r(hHjhIjubaubeubhJ)�r }r (hHUhIh™hOj7hQhRhS}r (hU]hV]hW]hX]r Ucut-through-for-hsrr ah[]rh2auh]K¡h^hh_]r(ha)�r}r(hHXCut-Through for HSRrhIj hOj7hQhehS}r(hU]hV]hW]hX]h[]uh]K¡h^hh_]rhhXCut-Through for HSRr…�r}r(hHjhIjubaubh{)�r}r(hHX•Cut through happens when switch firmware bypasses the transmit queues and directly copies data from Rx FIFO to Tx FIFO. The concept is explained hererhIj hOj7hQhƒhS}r(hU]hV]hW]hX]h[]uh]K£h^hh_]rhhX•Cut through happens when switch firmware bypasses the transmit queues and directly copies data from Rx FIFO to Tx FIFO. The concept is explained herer…�r}r(hHjhIjubaubh{)�r }r!(hHX(The concept of forwarding frames from HSR port to HSR port when operating in cut-through mode deserves more explanation since the following boundary conditions require a carefully balanced implementation: •Cut-through of a frame shall start as early as possible in order to minimize the propagation delay in each node. The ICSS switch supports starting the cut-through operation after a configurable amount of bytes received. Theoretically, for HSR the minimum number of bytes required is 22 (12 bytes Source-/Destination MAC, 4 bytes VLAN Tag, 6 bytes HSR Tag) in order to have all the necessary data to take the routing decision. The receiving process is optimized to allow cut through as soon as possible depending on the type of the frame ( see start receiving process in 3.2.2 Micro Scheduler). •Duplicates shall not be cut through (i.e. the detection of a duplicate shall be finished before the next node in the ring starts processing the frame) •Detection of duplicates (computing the hash index and scanning a bin in the hash table) is time consumingr"hIj hOj7hQhƒhS}r#(hU]hV]hW]hX]h[]uh]K§h^hh_]r$hhX(The concept of forwarding frames from HSR port to HSR port when operating in cut-through mode deserves more explanation since the following boundary conditions require a carefully balanced implementation: •Cut-through of a frame shall start as early as possible in order to minimize the propagation delay in each node. The ICSS switch supports starting the cut-through operation after a configurable amount of bytes received. Theoretically, for HSR the minimum number of bytes required is 22 (12 bytes Source-/Destination MAC, 4 bytes VLAN Tag, 6 bytes HSR Tag) in order to have all the necessary data to take the routing decision. The receiving process is optimized to allow cut through as soon as possible depending on the type of the frame ( see start receiving process in 3.2.2 Micro Scheduler). •Duplicates shall not be cut through (i.e. the detection of a duplicate shall be finished before the next node in the ring starts processing the frame) •Detection of duplicates (computing the hash index and scanning a bin in the hash table) is time consumingr%…�r&}r'(hHj"hIj ubaubh{)�r(}r)(hHX?Waiting for the duplicate detection before taking the cut through decision would delay the frame too much. Starting to cut-through a frame without port duplicate rejection minimizes the delay and allows starting the receiving process after 14 bytes. Once the cut through of a frame has started, the port duplication rejection process starts. If the frame is identified as duplicate or corrupted, the transmission of the frame is aborted by asserting the TX\_RESET which will reset the transmit FIFO and clear all its contents and therefore corrupt the frame being cut-though.hIj hOj7hQhƒhS}r*(hU]hV]hW]hX]h[]uh]K¸h^hh_]r+hhX>Waiting for the duplicate detection before taking the cut through decision would delay the frame too much. Starting to cut-through a frame without port duplicate rejection minimizes the delay and allows starting the receiving process after 14 bytes. Once the cut through of a frame has started, the port duplication rejection process starts. If the frame is identified as duplicate or corrupted, the transmission of the frame is aborted by asserting the TX_RESET which will reset the transmit FIFO and clear all its contents and therefore corrupt the frame being cut-though.r,…�r-}r.(hHX?Waiting for the duplicate detection before taking the cut through decision would delay the frame too much. Starting to cut-through a frame without port duplicate rejection minimizes the delay and allows starting the receiving process after 14 bytes. Once the cut through of a frame has started, the port duplication rejection process starts. If the frame is identified as duplicate or corrupted, the transmission of the frame is aborted by asserting the TX\_RESET which will reset the transmit FIFO and clear all its contents and therefore corrupt the frame being cut-though.hIj(ubaubcdocutils.nodes target r/)�r0}r1(hHX&.. _HSR_PRP_Firmware_Memory_Map_label:hIj hOj7hQUtargetr2hS}r3(hX]hW]hU]hV]h[]Urefidr4U!hsr-prp-firmware-memory-map-labelr5uh]MYh^hh_]ubeubhJ)�r6}r7(hHUhIh™hOj7Uexpect_referenced_by_namer8}r9h!j0shQhRhS}r:(hU]hV]hW]hX]r;(Uhsr-prp-memory-mapr<j5eh[]r=(h h!euh]KÅh^hUexpect_referenced_by_idr>}r?j5j0sh_]r@(ha)�rA}rB(hHXHSR/PRP Memory MaprChIj6hOj7hQhehS}rD(hU]hV]hW]hX]h[]uh]KÅh^hh_]rEhhXHSR/PRP Memory MaprF…�rG}rH(hHjChIjAubaubcdocutils.nodes rubric rI)�rJ}rK(hHXShared RAM Memory MaprLhIj6hOj7hQUrubricrMhS}rN(hX]rOUshared-ram-memory-maprPahW]hU]hV]h[]rQhauh]Nh^hh_]rRhhXShared RAM Memory MaprS…�rT}rU(hHjLhIjJubaubcdocutils.nodes table rV)�rW}rX(hHUhIj6hOj7hQUtablerYhS}rZ(hU]hV]hW]hX]h[]uh]Nh^hh_]r[cdocutils.nodes tgroup r\)�r]}r^(hHUhS}r_(hX]hW]hU]hV]h[]UcolsKuhIjWh_]r`(cdocutils.nodes colspec ra)�rb}rc(hHUhS}rd(hX]hW]hU]hV]h[]UcolwidthKuhIj]h_]hQUcolspecreubja)�rf}rg(hHUhS}rh(hX]hW]hU]hV]h[]UcolwidthKuhIj]h_]hQjeubja)�ri}rj(hHUhS}rk(hX]hW]hU]hV]h[]UcolwidthKuhIj]h_]hQjeubja)�rl}rm(hHUhS}rn(hX]hW]hU]hV]h[]UcolwidthKuhIj]h_]hQjeubcdocutils.nodes thead ro)�rp}rq(hHUhS}rr(hU]hV]hW]hX]h[]uhIj]h_]rscdocutils.nodes row rt)�ru}rv(hHUhS}rw(hU]hV]hW]hX]h[]uhIjph_]rx(cdocutils.nodes entry ry)�rz}r{(hHUhS}r|(hU]hV]hW]hX]h[]uhIjuh_]r}h{)�r~}r(hHXName of Offsetr€hIjzhOj7hQhƒhS}r�(hU]hV]hW]hX]h[]uh]KËh_]r‚hhXName of Offsetrƒ…�r„}r…(hHj€hIj~ubaubahQUentryr†ubjy)�r‡}rˆ(hHUhS}r‰(hU]hV]hW]hX]h[]uhIjuh_]rŠh{)�r‹}rŒ(hHX,Description Refer to *hsr\_prp\_firmwar e.h*hIj‡hOj7hQhƒhS}r�(hU]hV]hW]hX]h[]uh]KËh_]rŽ(hhXDescription Refer to r�…�r�}r‘(hHXDescription Refer to hIj‹ubcdocutils.nodes emphasis r’)�r“}r”(hHX*hsr\_prp\_firmwar e.h*hS}r•(hU]hV]hW]hX]h[]uhIj‹h_]r–hhXhsr_prp_firmwar e.hr—…�r˜}r™(hHUhIj“ubahQUemphasisršubeubahQj†ubjy)�r›}rœ(hHUhS}r�(hU]hV]hW]hX]h[]uhIjuh_]ržh{)�rŸ}r (hHXOffset in Shared RAMr¡hIj›hOj7hQhƒhS}r¢(hU]hV]hW]hX]h[]uh]KËh_]r£hhXOffset in Shared RAMr¤…�r¥}r¦(hHj¡hIjŸubaubahQj†ubjy)�r§}r¨(hHUhS}r©(hU]hV]hW]hX]h[]uhIjuh_]rªh{)�r«}r¬(hHXSize (in bytes)r­hIj§hOj7hQhƒhS}r®(hU]hV]hW]hX]h[]uh]KËh_]r¯hhXSize (in bytes)r°…�r±}r²(hHj­hIj«ubaubahQj†ubehQUrowr³ubahQUtheadr´ubcdocutils.nodes tbody rµ)�r¶}r·(hHUhS}r¸(hU]hV]hW]hX]h[]uhIj]h_]r¹(jt)�rº}r»(hHUhS}r¼(hU]hV]hW]hX]h[]uhIj¶h_]r½(jy)�r¾}r¿(hHUhS}rÀ(hU]hV]hW]hX]h[]uhIjºh_]rÁh{)�rÂ}rÃ(hHX INDEX\_ARRAYhIj¾hOj7hQhƒhS}rÄ(hU]hV]hW]hX]h[]uh]KÐh_]rÅhhX INDEX_ARRAYrÆ…�rÇ}rÈ(hHX INDEX\_ARRAYhIjÂubaubahQj†ubjy)�rÉ}rÊ(hHUhS}rË(hU]hV]hW]hX]h[]uhIjºh_]rÌh{)�rÍ}rÎ(hHXIndex entry for Node TablerÏhIjÉhOj7hQhƒhS}rÐ(hU]hV]hW]hX]h[]uh]KÐh_]rÑhhXIndex entry for Node TablerÒ…�rÓ}rÔ(hHjÏhIjÍubaubahQj†ubjy)�rÕ}rÖ(hHUhS}r×(hU]hV]hW]hX]h[]uhIjºh_]rØh{)�rÙ}rÚ(hHX*0x1E0*rÛhIjÕhOj7hQhƒhS}rÜ(hU]hV]hW]hX]h[]uh]KÐh_]rÝj’)�rÞ}rß(hHjÛhS}rà(hU]hV]hW]hX]h[]uhIjÙh_]ráhhX0x1E0râ…�rã}rä(hHUhIjÞubahQjšubaubahQj†ubjy)�rå}ræ(hHUhS}rç(hU]hV]hW]hX]h[]uhIjºh_]rèh{)�ré}rê(hHX144rëhIjåhOj7hQhƒhS}rì(hU]hV]hW]hX]h[]uh]KÐh_]ríhhX144rî…�rï}rð(hHjëhIjéubaubahQj†ubehQj³ubjt)�rñ}rò(hHUhS}ró(hU]hV]hW]hX]h[]uhIj¶h_]rô(jy)�rõ}rö(hHUhS}r÷(hU]hV]hW]hX]h[]uhIjñh_]røh{)�rù}rú(hHX NODE\_TABLEhIjõhOj7hQhƒhS}rû(hU]hV]hW]hX]h[]uh]KÓh_]rühhX NODE_TABLErý…�rþ}rÿ(hHX NODE\_TABLEhIjùubaubahQj†ubjy)�r}r(hHUhS}r(hU]hV]hW]hX]h[]uhIjñh_]rh{)�r}r(hHXNode Table for the DANH/DANPrhIjhOj7hQhƒhS}r(hU]hV]hW]hX]h[]uh]KÓh_]rhhXNode Table for the DANH/DANPr …�r }r (hHjhIjubaubahQj†ubjy)�r }r (hHUhS}r(hU]hV]hW]hX]h[]uhIjñh_]rh{)�r}r(hHX*0x1FCO*rhIj hOj7hQhƒhS}r(hU]hV]hW]hX]h[]uh]KÓh_]rj’)�r}r(hHjhS}r(hU]hV]hW]hX]h[]uhIjh_]rhhX0x1FCOr…�r}r(hHUhIjubahQjšubaubahQj†ubjy)�r}r(hHUhS}r(hU]hV]hW]hX]h[]uhIjñh_]rh{)�r }r!(hHX*4132*r"hIjhOj7hQhƒhS}r#(hU]hV]hW]hX]h[]uh]KÓh_]r$j’)�r%}r&(hHj"hS}r'(hU]hV]hW]hX]h[]uhIj h_]r(hhX4132r)…�r*}r+(hHUhIj%ubahQjšubaubahQj†ubehQj³ubehQUtbodyr,ubehQUtgroupr-ubaubh{)�r.}r/(hHX!Table: **Shared RAM Memory Map**r0hIj6hOj7hQhƒhS}r1(hU]hV]hW]hX]h[]uh]K×h^hh_]r2(hhXTable: r3…�r4}r5(hHXTable: hIj.ubhæ)�r6}r7(hHX**Shared RAM Memory Map**hS}r8(hU]hV]hW]hX]h[]uhIj.h_]r9hhXShared RAM Memory Mapr:…�r;}r<(hHUhIj6ubahQhîubeubjV)�r=}r>(hHUhIj6hOj7hQjYhS}r?(hU]hV]hW]hX]h[]uh]Nh^hh_]r@j\)�rA}rB(hHUhS}rC(hX]hW]hU]hV]h[]UcolsKuhIj=h_]rD(ja)�rE}rF(hHUhS}rG(hX]hW]hU]hV]h[]UcolwidthKuhIjAh_]hQjeubja)�rH}rI(hHUhS}rJ(hX]hW]hU]hV]h[]UcolwidthKuhIjAh_]hQjeubja)�rK}rL(hHUhS}rM(hX]hW]hU]hV]h[]UcolwidthKuhIjAh_]hQjeubjo)�rN}rO(hHUhS}rP(hU]hV]hW]hX]h[]uhIjAh_]rQjt)�rR}rS(hHUhS}rT(hU]hV]hW]hX]h[]uhIjNh_]rU(jy)�rV}rW(hHUhS}rX(hU]hV]hW]hX]h[]uhIjRh_]rYh{)�rZ}r[(hHXName of Offsetr\hIjVhOj7hQhƒhS}r](hU]hV]hW]hX]h[]uh]KÚh_]r^hhXName of Offsetr_…�r`}ra(hHj\hIjZubaubahQj†ubjy)�rb}rc(hHUhS}rd(hU]hV]hW]hX]h[]uhIjRh_]reh{)�rf}rg(hHX+Description Refer to *hsr\_prp\_firmware.h*hIjbhOj7hQhƒhS}rh(hU]hV]hW]hX]h[]uh]KÚh_]ri(hhXDescription Refer to rj…�rk}rl(hHXDescription Refer to hIjfubj’)�rm}rn(hHX*hsr\_prp\_firmware.h*hS}ro(hU]hV]hW]hX]h[]uhIjfh_]rphhXhsr_prp_firmware.hrq…�rr}rs(hHUhIjmubahQjšubeubahQj†ubjy)�rt}ru(hHUhS}rv(hU]hV]hW]hX]h[]uhIjRh_]rwh{)�rx}ry(hHX$Offset in Shared RAM (base : 0x140)rzhIjthOj7hQhƒhS}r{(hU]hV]hW]hX]h[]uh]KÚh_]r|hhX$Offset in Shared RAM (base : 0x140)r}…�r~}r(hHjzhIjxubaubahQj†ubehQj³ubahQj´ubjµ)�r€}r�(hHUhS}r‚(hU]hV]hW]hX]h[]uhIjAh_]rƒ(jt)�r„}r…(hHUhS}r†(hU]hV]hW]hX]h[]uhIj€h_]r‡(jy)�rˆ}r‰(hHUhS}rŠ(hU]hV]hW]hX]h[]uhIj„h_]r‹h{)�rŒ}r�(hHXLRE\_CNT\_TX\_AhIjˆhOj7hQhƒhS}rŽ(hU]hV]hW]hX]h[]uh]KÞh_]r�hhX LRE_CNT_TX_Ar�…�r‘}r’(hHXLRE\_CNT\_TX\_AhIjŒubaubahQj†ubjy)�r“}r”(hHUhS}r•(hU]hV]hW]hX]h[]uhIj„h_]r–h{)�r—}r˜(hHXFNumber of frames successfully sent over port A that are HSR/PRP taggedr™hIj“hOj7hQhƒhS}rš(hU]hV]hW]hX]h[]uh]KÞh_]r›hhXFNumber of frames successfully sent over port A that are HSR/PRP taggedrœ…�r�}rž(hHj™hIj—ubaubahQj†ubjy)�rŸ}r (hHUhS}r¡(hU]hV]hW]hX]h[]uhIj„h_]r¢h{)�r£}r¤(hHX*4*r¥hIjŸhOj7hQhƒhS}r¦(hU]hV]hW]hX]h[]uh]KÞh_]r§j’)�r¨}r©(hHj¥hS}rª(hU]hV]hW]hX]h[]uhIj£h_]r«hhX4…�r¬}r­(hHUhIj¨ubahQjšubaubahQj†ubehQj³ubjt)�r®}r¯(hHUhS}r°(hU]hV]hW]hX]h[]uhIj€h_]r±(jy)�r²}r³(hHUhS}r´(hU]hV]hW]hX]h[]uhIj®h_]rµh{)�r¶}r·(hHXLRE\_CNT\_TX\_BhIj²hOj7hQhƒhS}r¸(hU]hV]hW]hX]h[]uh]Kãh_]r¹hhX LRE_CNT_TX_Brº…�r»}r¼(hHXLRE\_CNT\_TX\_BhIj¶ubaubahQj†ubjy)�r½}r¾(hHUhS}r¿(hU]hV]hW]hX]h[]uhIj®h_]rÀh{)�rÁ}rÂ(hHXSame for Port BrÃhIj½hOj7hQhƒhS}rÄ(hU]hV]hW]hX]h[]uh]Kãh_]rÅhhXSame for Port BrÆ…�rÇ}rÈ(hHjÃhIjÁubaubahQj†ubjy)�rÉ}rÊ(hHUhS}rË(hU]hV]hW]hX]h[]uhIj®h_]rÌh{)�rÍ}rÎ(hHX*8*rÏhIjÉhOj7hQhƒhS}rÐ(hU]hV]hW]hX]h[]uh]Kãh_]rÑj’)�rÒ}rÓ(hHjÏhS}rÔ(hU]hV]hW]hX]h[]uhIjÍh_]rÕhhX8…�rÖ}r×(hHUhIjÒubahQjšubaubahQj†ubehQj³ubjt)�rØ}rÙ(hHUhS}rÚ(hU]hV]hW]hX]h[]uhIj€h_]rÛ(jy)�rÜ}rÝ(hHUhS}rÞ(hU]hV]hW]hX]h[]uhIjØh_]rßh{)�rà}rá(hHXLRE\_CNT\_TX\_ChIjÜhOj7hQhƒhS}râ(hU]hV]hW]hX]h[]uh]Kåh_]rãhhX LRE_CNT_TX_Crä…�rå}ræ(hHXLRE\_CNT\_TX\_ChIjàubaubahQj†ubjy)�rç}rè(hHUhS}ré(hU]hV]hW]hX]h[]uhIjØh_]rêh{)�rë}rì(hHXBNumber of frames successfully sent to Host that are HSR/PRP taggedríhIjçhOj7hQhƒhS}rî(hU]hV]hW]hX]h[]uh]Kåh_]rïhhXBNumber of frames successfully sent to Host that are HSR/PRP taggedrð…�rñ}rò(hHjíhIjëubaubahQj†ubjy)�ró}rô(hHUhS}rõ(hU]hV]hW]hX]h[]uhIjØh_]röh{)�r÷}rø(hHX*12*rùhIjóhOj7hQhƒhS}rú(hU]hV]hW]hX]h[]uh]Kåh_]rûj’)�rü}rý(hHjùhS}rþ(hU]hV]hW]hX]h[]uhIj÷h_]rÿhhX12r…�r}r(hHUhIjüubahQjšubaubahQj†ubehQj³ubjt)�r}r(hHUhS}r(hU]hV]hW]hX]h[]uhIj€h_]r(jy)�r}r(hHUhS}r (hU]hV]hW]hX]h[]uhIjh_]r h{)�r }r (hHXLRE\_CNT\_ERRWRONGLAN\_AhIjhOj7hQhƒhS}r (hU]hV]hW]hX]h[]uh]Kêh_]rhhXLRE_CNT_ERRWRONGLAN_Ar…�r}r(hHXLRE\_CNT\_ERRWRONGLAN\_AhIj ubaubahQj†ubjy)�r}r(hHUhS}r(hU]hV]hW]hX]h[]uhIjh_]rh{)�r}r(hHXEnumber of frames with the wrong LAN identifier received on LRE port ArhIjhOj7hQhƒhS}r(hU]hV]hW]hX]h[]uh]Kêh_]rhhXEnumber of frames with the wrong LAN identifier received on LRE port Ar…�r}r(hHjhIjubaubahQj†ubjy)�r}r(hHUhS}r (hU]hV]hW]hX]h[]uhIjh_]r!h{)�r"}r#(hHX*16*r$hIjhOj7hQhƒhS}r%(hU]hV]hW]hX]h[]uh]Kêh_]r&j’)�r'}r((hHj$hS}r)(hU]hV]hW]hX]h[]uhIj"h_]r*hhX16r+…�r,}r-(hHUhIj'ubahQjšubaubahQj†ubehQj³ubjt)�r.}r/(hHUhS}r0(hU]hV]hW]hX]h[]uhIj€h_]r1(jy)�r2}r3(hHUhS}r4(hU]hV]hW]hX]h[]uhIj.h_]r5h{)�r6}r7(hHXLRE\_CNT\_ERRWRONGLAN\_BhIj2hOj7hQhƒhS}r8(hU]hV]hW]hX]h[]uh]Kïh_]r9hhXLRE_CNT_ERRWRONGLAN_Br:…�r;}r<(hHXLRE\_CNT\_ERRWRONGLAN\_BhIj6ubaubahQj†ubjy)�r=}r>(hHUhS}r?(hU]hV]hW]hX]h[]uhIj.h_]r@h{)�rA}rB(hHXSame for Port BrChIj=hOj7hQhƒhS}rD(hU]hV]hW]hX]h[]uh]Kïh_]rEhhXSame for Port BrF…�rG}rH(hHjChIjAubaubahQj†ubjy)�rI}rJ(hHUhS}rK(hU]hV]hW]hX]h[]uhIj.h_]rLh{)�rM}rN(hHX*20*rOhIjIhOj7hQhƒhS}rP(hU]hV]hW]hX]h[]uh]Kïh_]rQj’)�rR}rS(hHjOhS}rT(hU]hV]hW]hX]h[]uhIjMh_]rUhhX20rV…�rW}rX(hHUhIjRubahQjšubaubahQj†ubehQj³ubjt)�rY}rZ(hHUhS}r[(hU]hV]hW]hX]h[]uhIj€h_]r\(jy)�r]}r^(hHUhS}r_(hU]hV]hW]hX]h[]uhIjYh_]r`h{)�ra}rb(hHXLRE\_CNT\_ERRWRONGLAN\_ChIj]hOj7hQhƒhS}rc(hU]hV]hW]hX]h[]uh]Kñh_]rdhhXLRE_CNT_ERRWRONGLAN_Cre…�rf}rg(hHXLRE\_CNT\_ERRWRONGLAN\_ChIjaubaubahQj†ubjy)�rh}ri(hHUhS}rj(hU]hV]hW]hX]h[]uhIjYh_]rkh{)�rl}rm(hHX Same for HostrnhIjhhOj7hQhƒhS}ro(hU]hV]hW]hX]h[]uh]Kñh_]rphhX Same for Hostrq…�rr}rs(hHjnhIjlubaubahQj†ubjy)�rt}ru(hHUhS}rv(hU]hV]hW]hX]h[]uhIjYh_]rwh{)�rx}ry(hHX*24*rzhIjthOj7hQhƒhS}r{(hU]hV]hW]hX]h[]uh]Kñh_]r|j’)�r}}r~(hHjzhS}r(hU]hV]hW]hX]h[]uhIjxh_]r€hhX24r�…�r‚}rƒ(hHUhIj}ubahQjšubaubahQj†ubehQj³ubjt)�r„}r…(hHUhS}r†(hU]hV]hW]hX]h[]uhIj€h_]r‡(jy)�rˆ}r‰(hHUhS}rŠ(hU]hV]hW]hX]h[]uhIj„h_]r‹h{)�rŒ}r�(hHXLRE\_CNT\_RX\_AhIjˆhOj7hQhƒhS}rŽ(hU]hV]hW]hX]h[]uh]Kóh_]r�hhX LRE_CNT_RX_Ar�…�r‘}r’(hHXLRE\_CNT\_RX\_AhIjŒubaubahQj†ubjy)�r“}r”(hHUhS}r•(hU]hV]hW]hX]h[]uhIj„h_]r–h{)�r—}r˜(hHXJnumber of frames received successfully with HSR or PRP TAG on a LRE port Ar™hIj“hOj7hQhƒhS}rš(hU]hV]hW]hX]h[]uh]Kóh_]r›hhXJnumber of frames received successfully with HSR or PRP TAG on a LRE port Arœ…�r�}rž(hHj™hIj—ubaubahQj†ubjy)�rŸ}r (hHUhS}r¡(hU]hV]hW]hX]h[]uhIj„h_]r¢h{)�r£}r¤(hHX*28*r¥hIjŸhOj7hQhƒhS}r¦(hU]hV]hW]hX]h[]uh]Kóh_]r§j’)�r¨}r©(hHj¥hS}rª(hU]hV]hW]hX]h[]uhIj£h_]r«hhX28r¬…�r­}r®(hHUhIj¨ubahQjšubaubahQj†ubehQj³ubjt)�r¯}r°(hHUhS}r±(hU]hV]hW]hX]h[]uhIj€h_]r²(jy)�r³}r´(hHUhS}rµ(hU]hV]hW]hX]h[]uhIj¯h_]r¶h{)�r·}r¸(hHXLRE\_CNT\_RX\_BhIj³hOj7hQhƒhS}r¹(hU]hV]hW]hX]h[]uh]Køh_]rºhhX LRE_CNT_RX_Br»…�r¼}r½(hHXLRE\_CNT\_RX\_BhIj·ubaubahQj†ubjy)�r¾}r¿(hHUhS}rÀ(hU]hV]hW]hX]h[]uhIj¯h_]rÁh{)�rÂ}rÃ(hHXSame for Port BrÄhIj¾hOj7hQhƒhS}rÅ(hU]hV]hW]hX]h[]uh]Køh_]rÆhhXSame for Port BrÇ…�rÈ}rÉ(hHjÄhIjÂubaubahQj†ubjy)�rÊ}rË(hHUhS}rÌ(hU]hV]hW]hX]h[]uhIj¯h_]rÍh{)�rÎ}rÏ(hHX*32*rÐhIjÊhOj7hQhƒhS}rÑ(hU]hV]hW]hX]h[]uh]Køh_]rÒj’)�rÓ}rÔ(hHjÐhS}rÕ(hU]hV]hW]hX]h[]uhIjÎh_]rÖhhX32r×…�rØ}rÙ(hHUhIjÓubahQjšubaubahQj†ubehQj³ubjt)�rÚ}rÛ(hHUhS}rÜ(hU]hV]hW]hX]h[]uhIj€h_]rÝ(jy)�rÞ}rß(hHUhS}rà(hU]hV]hW]hX]h[]uhIjÚh_]ráh{)�râ}rã(hHXLRE\_CNT\_RX\_ChIjÞhOj7hQhƒhS}rä(hU]hV]hW]hX]h[]uh]Kúh_]råhhX LRE_CNT_RX_Cræ…�rç}rè(hHXLRE\_CNT\_RX\_ChIjâubaubahQj†ubjy)�ré}rê(hHUhS}rë(hU]hV]hW]hX]h[]uhIjÚh_]rìh{)�rí}rî(hHX Same for HostrïhIjéhOj7hQhƒhS}rð(hU]hV]hW]hX]h[]uh]Kúh_]rñhhX Same for Hostrò…�ró}rô(hHjïhIjíubaubahQj†ubjy)�rõ}rö(hHUhS}r÷(hU]hV]hW]hX]h[]uhIjÚh_]røh{)�rù}rú(hHX*36*rûhIjõhOj7hQhƒhS}rü(hU]hV]hW]hX]h[]uh]Kúh_]rýj’)�rþ}rÿ(hHjûhS}r(hU]hV]hW]hX]h[]uhIjùh_]rhhX36r…�r}r(hHUhIjþubahQjšubaubahQj†ubehQj³ubjt)�r}r(hHUhS}r(hU]hV]hW]hX]h[]uhIj€h_]r(jy)�r }r (hHUhS}r (hU]hV]hW]hX]h[]uhIjh_]r h{)�r }r(hHXLRE\_CNT\_ERRORS\_AhIj hOj7hQhƒhS}r(hU]hV]hW]hX]h[]uh]Küh_]rhhXLRE_CNT_ERRORS_Ar…�r}r(hHXLRE\_CNT\_ERRORS\_AhIj ubaubahQj†ubjy)�r}r(hHUhS}r(hU]hV]hW]hX]h[]uhIjh_]rh{)�r}r(hHX8number of frames with errors received on this LRE port ArhIjhOj7hQhƒhS}r(hU]hV]hW]hX]h[]uh]Küh_]rhhX8number of frames with errors received on this LRE port Ar…�r}r(hHjhIjubaubahQj†ubjy)�r }r!(hHUhS}r"(hU]hV]hW]hX]h[]uhIjh_]r#h{)�r$}r%(hHX*40*r&hIj hOj7hQhƒhS}r'(hU]hV]hW]hX]h[]uh]Küh_]r(j’)�r)}r*(hHj&hS}r+(hU]hV]hW]hX]h[]uhIj$h_]r,hhX40r-…�r.}r/(hHUhIj)ubahQjšubaubahQj†ubehQj³ubjt)�r0}r1(hHUhS}r2(hU]hV]hW]hX]h[]uhIj€h_]r3(jy)�r4}r5(hHUhS}r6(hU]hV]hW]hX]h[]uhIj0h_]r7h{)�r8}r9(hHXLRE\_CNT\_ERRORS\_BhIj4hOj7hQhƒhS}r:(hU]hV]hW]hX]h[]uh]Mh_]r;hhXLRE_CNT_ERRORS_Br<…�r=}r>(hHXLRE\_CNT\_ERRORS\_BhIj8ubaubahQj†ubjy)�r?}r@(hHUhS}rA(hU]hV]hW]hX]h[]uhIj0h_]rBh{)�rC}rD(hHXSame for Port BrEhIj?hOj7hQhƒhS}rF(hU]hV]hW]hX]h[]uh]Mh_]rGhhXSame for Port BrH…�rI}rJ(hHjEhIjCubaubahQj†ubjy)�rK}rL(hHUhS}rM(hU]hV]hW]hX]h[]uhIj0h_]rNh{)�rO}rP(hHX*44*rQhIjKhOj7hQhƒhS}rR(hU]hV]hW]hX]h[]uh]Mh_]rSj’)�rT}rU(hHjQhS}rV(hU]hV]hW]hX]h[]uhIjOh_]rWhhX44rX…�rY}rZ(hHUhIjTubahQjšubaubahQj†ubehQj³ubjt)�r[}r\(hHUhS}r](hU]hV]hW]hX]h[]uhIj€h_]r^(jy)�r_}r`(hHUhS}ra(hU]hV]hW]hX]h[]uhIj[h_]rbh{)�rc}rd(hHXLRE\_CNT\_ERRORS\_ChIj_hOj7hQhƒhS}re(hU]hV]hW]hX]h[]uh]Mh_]rfhhXLRE_CNT_ERRORS_Crg…�rh}ri(hHXLRE\_CNT\_ERRORS\_ChIjcubaubahQj†ubjy)�rj}rk(hHUhS}rl(hU]hV]hW]hX]h[]uhIj[h_]rmh{)�rn}ro(hHX Same for HostrphIjjhOj7hQhƒhS}rq(hU]hV]hW]hX]h[]uh]Mh_]rrhhX Same for Hostrs…�rt}ru(hHjphIjnubaubahQj†ubjy)�rv}rw(hHUhS}rx(hU]hV]hW]hX]h[]uhIj[h_]ryh{)�rz}r{(hHX*48*r|hIjvhOj7hQhƒhS}r}(hU]hV]hW]hX]h[]uh]Mh_]r~j’)�r}r€(hHj|hS}r�(hU]hV]hW]hX]h[]uhIjzh_]r‚hhX48rƒ…�r„}r…(hHUhIjubahQjšubaubahQj†ubehQj³ubjt)�r†}r‡(hHUhS}rˆ(hU]hV]hW]hX]h[]uhIj€h_]r‰(jy)�rŠ}r‹(hHUhS}rŒ(hU]hV]hW]hX]h[]uhIj†h_]r�h{)�rŽ}r�(hHXLRE\_CNT\_NODEShIjŠhOj7hQhƒhS}r�(hU]hV]hW]hX]h[]uh]Mh_]r‘hhX LRE_CNT_NODESr’…�r“}r”(hHXLRE\_CNT\_NODEShIjŽubaubahQj†ubjy)�r•}r–(hHUhS}r—(hU]hV]hW]hX]h[]uhIj†h_]r˜h{)�r™}rš(hHX(Number of active nodes in the node tabler›hIj•hOj7hQhƒhS}rœ(hU]hV]hW]hX]h[]uh]Mh_]r�hhX(Number of active nodes in the node tablerž…�rŸ}r (hHj›hIj™ubaubahQj†ubjy)�r¡}r¢(hHUhS}r£(hU]hV]hW]hX]h[]uhIj†h_]r¤h{)�r¥}r¦(hHX*52*r§hIj¡hOj7hQhƒhS}r¨(hU]hV]hW]hX]h[]uh]Mh_]r©j’)�rª}r«(hHj§hS}r¬(hU]hV]hW]hX]h[]uhIj¥h_]r­hhX52r®…�r¯}r°(hHUhIjªubahQjšubaubahQj†ubehQj³ubjt)�r±}r²(hHUhS}r³(hU]hV]hW]hX]h[]uhIj€h_]r´(jy)�rµ}r¶(hHUhS}r·(hU]hV]hW]hX]h[]uhIj±h_]r¸h{)�r¹}rº(hHXLRE\_CNT\_PROXY\_NODEShIjµhOj7hQhƒhS}r»(hU]hV]hW]hX]h[]uh]Mh_]r¼hhXLRE_CNT_PROXY_NODESr½…�r¾}r¿(hHXLRE\_CNT\_PROXY\_NODEShIj¹ubaubahQj†ubjy)�rÀ}rÁ(hHUhS}rÂ(hU]hV]hW]hX]h[]uhIj±h_]rÃh{)�rÄ}rÅ(hHX.Number of active proxy nodes in the node tablerÆhIjÀhOj7hQhƒhS}rÇ(hU]hV]hW]hX]h[]uh]Mh_]rÈhhX.Number of active proxy nodes in the node tablerÉ…�rÊ}rË(hHjÆhIjÄubaubahQj†ubjy)�rÌ}rÍ(hHUhS}rÎ(hU]hV]hW]hX]h[]uhIj±h_]rÏh{)�rÐ}rÑ(hHX*56*rÒhIjÌhOj7hQhƒhS}rÓ(hU]hV]hW]hX]h[]uh]Mh_]rÔj’)�rÕ}rÖ(hHjÒhS}r×(hU]hV]hW]hX]h[]uhIjÐh_]rØhhX56rÙ…�rÚ}rÛ(hHUhIjÕubahQjšubaubahQj†ubehQj³ubjt)�rÜ}rÝ(hHUhS}rÞ(hU]hV]hW]hX]h[]uhIj€h_]rß(jy)�rà}rá(hHUhS}râ(hU]hV]hW]hX]h[]uhIjÜh_]rãh{)�rä}rå(hHXLRE\_CNT\_UNIQUE\_RX\_AhIjàhOj7hQhƒhS}ræ(hU]hV]hW]hX]h[]uh]M h_]rçhhXLRE_CNT_UNIQUE_RX_Arè…�ré}rê(hHXLRE\_CNT\_UNIQUE\_RX\_AhIjäubaubahQj†ubjy)�rë}rì(hHUhS}rí(hU]hV]hW]hX]h[]uhIjÜh_]rîh{)�rï}rð(hHXdNumber of entries in the duplicate detection mechanism on port A for which no duplicate was receivedrñhIjëhOj7hQhƒhS}rò(hU]hV]hW]hX]h[]uh]M h_]róhhXdNumber of entries in the duplicate detection mechanism on port A for which no duplicate was receivedrô…�rõ}rö(hHjñhIjïubaubahQj†ubjy)�r÷}rø(hHUhS}rù(hU]hV]hW]hX]h[]uhIjÜh_]rúh{)�rû}rü(hHX*60*rýhIj÷hOj7hQhƒhS}rþ(hU]hV]hW]hX]h[]uh]M h_]rÿj’)�r}r(hHjýhS}r(hU]hV]hW]hX]h[]uhIjûh_]rhhX60r…�r}r(hHUhIjubahQjšubaubahQj†ubehQj³ubjt)�r}r(hHUhS}r (hU]hV]hW]hX]h[]uhIj€h_]r (jy)�r }r (hHUhS}r (hU]hV]hW]hX]h[]uhIjh_]rh{)�r}r(hHXLRE\_CNT\_UNIQUE\_RX\_BhIj hOj7hQhƒhS}r(hU]hV]hW]hX]h[]uh]Mh_]rhhXLRE_CNT_UNIQUE_RX_Br…�r}r(hHXLRE\_CNT\_UNIQUE\_RX\_BhIjubaubahQj†ubjy)�r}r(hHUhS}r(hU]hV]hW]hX]h[]uhIjh_]rh{)�r}r(hHXSame for Port BrhIjhOj7hQhƒhS}r(hU]hV]hW]hX]h[]uh]Mh_]rhhXSame for Port Br…�r }r!(hHjhIjubaubahQj†ubjy)�r"}r#(hHUhS}r$(hU]hV]hW]hX]h[]uhIjh_]r%h{)�r&}r'(hHX*64*r(hIj"hOj7hQhƒhS}r)(hU]hV]hW]hX]h[]uh]Mh_]r*j’)�r+}r,(hHj(hS}r-(hU]hV]hW]hX]h[]uhIj&h_]r.hhX64r/…�r0}r1(hHUhIj+ubahQjšubaubahQj†ubehQj³ubjt)�r2}r3(hHUhS}r4(hU]hV]hW]hX]h[]uhIj€h_]r5(jy)�r6}r7(hHUhS}r8(hU]hV]hW]hX]h[]uhIj2h_]r9h{)�r:}r;(hHXLRE\_CNT\_UNIQUE\_RX\_ChIj6hOj7hQhƒhS}r<(hU]hV]hW]hX]h[]uh]Mh_]r=hhXLRE_CNT_UNIQUE_RX_Cr>…�r?}r@(hHXLRE\_CNT\_UNIQUE\_RX\_ChIj:ubaubahQj†ubjy)�rA}rB(hHUhS}rC(hU]hV]hW]hX]h[]uhIj2h_]rDh{)�rE}rF(hHX Same for HostrGhIjAhOj7hQhƒhS}rH(hU]hV]hW]hX]h[]uh]Mh_]rIhhX Same for HostrJ…�rK}rL(hHjGhIjEubaubahQj†ubjy)�rM}rN(hHUhS}rO(hU]hV]hW]hX]h[]uhIj2h_]rPh{)�rQ}rR(hHX*68*rShIjMhOj7hQhƒhS}rT(hU]hV]hW]hX]h[]uh]Mh_]rUj’)�rV}rW(hHjShS}rX(hU]hV]hW]hX]h[]uhIjQh_]rYhhX68rZ…�r[}r\(hHUhIjVubahQjšubaubahQj†ubehQj³ubjt)�r]}r^(hHUhS}r_(hU]hV]hW]hX]h[]uhIj€h_]r`(jy)�ra}rb(hHUhS}rc(hU]hV]hW]hX]h[]uhIj]h_]rdh{)�re}rf(hHXLRE\_CNT\_DUPLICATE\_RX\ _AhIjahOj7hQhƒhS}rg(hU]hV]hW]hX]h[]uh]Mh_]rhhhXLRE_CNT_DUPLICATE_RX_Ari…�rj}rk(hHXLRE\_CNT\_DUPLICATE\_RX\ _AhIjeubaubahQj†ubjy)�rl}rm(hHUhS}rn(hU]hV]hW]hX]h[]uhIj]h_]roh{)�rp}rq(hHXlNumber of entries in the duplicate detection mechanism on port A for which one single duplicate was receivedrrhIjlhOj7hQhƒhS}rs(hU]hV]hW]hX]h[]uh]Mh_]rthhXlNumber of entries in the duplicate detection mechanism on port A for which one single duplicate was receivedru…�rv}rw(hHjrhIjpubaubahQj†ubjy)�rx}ry(hHUhS}rz(hU]hV]hW]hX]h[]uhIj]h_]r{h{)�r|}r}(hHX*72*r~hIjxhOj7hQhƒhS}r(hU]hV]hW]hX]h[]uh]Mh_]r€j’)�r�}r‚(hHj~hS}rƒ(hU]hV]hW]hX]h[]uhIj|h_]r„hhX72r……�r†}r‡(hHUhIj�ubahQjšubaubahQj†ubehQj³ubjt)�rˆ}r‰(hHUhS}rŠ(hU]hV]hW]hX]h[]uhIj€h_]r‹(jy)�rŒ}r�(hHUhS}rŽ(hU]hV]hW]hX]h[]uhIjˆh_]r�h{)�r�}r‘(hHXLRE\_CNT\_DUPLICATE\_RX\ _BhIjŒhOj7hQhƒhS}r’(hU]hV]hW]hX]h[]uh]Mh_]r“hhXLRE_CNT_DUPLICATE_RX_Br”…�r•}r–(hHXLRE\_CNT\_DUPLICATE\_RX\ _BhIj�ubaubahQj†ubjy)�r—}r˜(hHUhS}r™(hU]hV]hW]hX]h[]uhIjˆh_]ršh{)�r›}rœ(hHXSame for Port Br�hIj—hOj7hQhƒhS}rž(hU]hV]hW]hX]h[]uh]Mh_]rŸhhXSame for Port Br …�r¡}r¢(hHj�hIj›ubaubahQj†ubjy)�r£}r¤(hHUhS}r¥(hU]hV]hW]hX]h[]uhIjˆh_]r¦h{)�r§}r¨(hHX*76*r©hIj£hOj7hQhƒhS}rª(hU]hV]hW]hX]h[]uh]Mh_]r«j’)�r¬}r­(hHj©hS}r®(hU]hV]hW]hX]h[]uhIj§h_]r¯hhX76r°…�r±}r²(hHUhIj¬ubahQjšubaubahQj†ubehQj³ubjt)�r³}r´(hHUhS}rµ(hU]hV]hW]hX]h[]uhIj€h_]r¶(jy)�r·}r¸(hHUhS}r¹(hU]hV]hW]hX]h[]uhIj³h_]rºh{)�r»}r¼(hHXLRE\_CNT\_DUPLICATE\_RX\ _ChIj·hOj7hQhƒhS}r½(hU]hV]hW]hX]h[]uh]Mh_]r¾hhXLRE_CNT_DUPLICATE_RX_Cr¿…�rÀ}rÁ(hHXLRE\_CNT\_DUPLICATE\_RX\ _ChIj»ubaubahQj†ubjy)�rÂ}rÃ(hHUhS}rÄ(hU]hV]hW]hX]h[]uhIj³h_]rÅh{)�rÆ}rÇ(hHX Same for HostrÈhIjÂhOj7hQhƒhS}rÉ(hU]hV]hW]hX]h[]uh]Mh_]rÊhhX Same for HostrË…�rÌ}rÍ(hHjÈhIjÆubaubahQj†ubjy)�rÎ}rÏ(hHUhS}rÐ(hU]hV]hW]hX]h[]uhIj³h_]rÑh{)�rÒ}rÓ(hHX*80*rÔhIjÎhOj7hQhƒhS}rÕ(hU]hV]hW]hX]h[]uh]Mh_]rÖj’)�r×}rØ(hHjÔhS}rÙ(hU]hV]hW]hX]h[]uhIjÒh_]rÚhhX80rÛ…�rÜ}rÝ(hHUhIj×ubahQjšubaubahQj†ubehQj³ubjt)�rÞ}rß(hHUhS}rà(hU]hV]hW]hX]h[]uhIj€h_]rá(jy)�râ}rã(hHUhS}rä(hU]hV]hW]hX]h[]uhIjÞh_]råh{)�ræ}rç(hHXLRE\_CNT\_MULTIPLE\_RX\_ AhIjâhOj7hQhƒhS}rè(hU]hV]hW]hX]h[]uh]M!h_]réhhXLRE_CNT_MULTIPLE_RX_ Arê…�rë}rì(hHXLRE\_CNT\_MULTIPLE\_RX\_ AhIjæubaubahQj†ubjy)�rí}rî(hHUhS}rï(hU]hV]hW]hX]h[]uhIjÞh_]rðh{)�rñ}rò(hHXoNumber of entries in the duplicate detection mechanism on port A for which more than one duplicate was receivedróhIjíhOj7hQhƒhS}rô(hU]hV]hW]hX]h[]uh]M!h_]rõhhXoNumber of entries in the duplicate detection mechanism on port A for which more than one duplicate was receivedrö…�r÷}rø(hHjóhIjñubaubahQj†ubjy)�rù}rú(hHUhS}rû(hU]hV]hW]hX]h[]uhIjÞh_]rüh{)�rý}rþ(hHX*84*rÿhIjùhOj7hQhƒhS}r (hU]hV]hW]hX]h[]uh]M!h_]r j’)�r }r (hHjÿhS}r (hU]hV]hW]hX]h[]uhIjýh_]r hhX84r …�r }r (hHUhIj ubahQjšubaubahQj†ubehQj³ubjt)�r }r (hHUhS}r (hU]hV]hW]hX]h[]uhIj€h_]r (jy)�r }r (hHUhS}r (hU]hV]hW]hX]h[]uhIj h_]r h{)�r }r (hHXLRE\_CNT\_MULTIPLE\_RX\_ BhIj hOj7hQhƒhS}r (hU]hV]hW]hX]h[]uh]M'h_]r hhXLRE_CNT_MULTIPLE_RX_ Br …�r }r (hHXLRE\_CNT\_MULTIPLE\_RX\_ BhIj ubaubahQj†ubjy)�r }r (hHUhS}r (hU]hV]hW]hX]h[]uhIj h_]r h{)�r }r (hHXSame for Port Br hIj hOj7hQhƒhS}r (hU]hV]hW]hX]h[]uh]M'h_]r hhXSame for Port Br! …�r" }r# (hHj hIj ubaubahQj†ubjy)�r$ }r% (hHUhS}r& (hU]hV]hW]hX]h[]uhIj h_]r' h{)�r( }r) (hHX*88*r* hIj$ hOj7hQhƒhS}r+ (hU]hV]hW]hX]h[]uh]M'h_]r, j’)�r- }r. (hHj* hS}r/ (hU]hV]hW]hX]h[]uhIj( h_]r0 hhX88r1 …�r2 }r3 (hHUhIj- ubahQjšubaubahQj†ubehQj³ubjt)�r4 }r5 (hHUhS}r6 (hU]hV]hW]hX]h[]uhIj€h_]r7 (jy)�r8 }r9 (hHUhS}r: (hU]hV]hW]hX]h[]uhIj4 h_]r; h{)�r< }r= (hHXLRE\_CNT\_MULTIPLE\_RX\_ ChIj8 hOj7hQhƒhS}r> (hU]hV]hW]hX]h[]uh]M*h_]r? hhXLRE_CNT_MULTIPLE_RX_ Cr@ …�rA }rB (hHXLRE\_CNT\_MULTIPLE\_RX\_ ChIj< ubaubahQj†ubjy)�rC }rD (hHUhS}rE (hU]hV]hW]hX]h[]uhIj4 h_]rF h{)�rG }rH (hHXSame for Port CrI hIjC hOj7hQhƒhS}rJ (hU]hV]hW]hX]h[]uh]M*h_]rK hhXSame for Port CrL …�rM }rN (hHjI hIjG ubaubahQj†ubjy)�rO }rP (hHUhS}rQ (hU]hV]hW]hX]h[]uhIj4 h_]rR h{)�rS }rT (hHX*92*rU hIjO hOj7hQhƒhS}rV (hU]hV]hW]hX]h[]uh]M*h_]rW j’)�rX }rY (hHjU hS}rZ (hU]hV]hW]hX]h[]uhIjS h_]r[ hhX92r\ …�r] }r^ (hHUhIjX ubahQjšubaubahQj†ubehQj³ubjt)�r_ }r` (hHUhS}ra (hU]hV]hW]hX]h[]uhIj€h_]rb (jy)�rc }rd (hHUhS}re (hU]hV]hW]hX]h[]uhIj_ h_]rf h{)�rg }rh (hHXLRE\_CNT\_OWN\_RX\_AhIjc hOj7hQhƒhS}ri (hU]hV]hW]hX]h[]uh]M-h_]rj hhXLRE_CNT_OWN_RX_Ark …�rl }rm (hHXLRE\_CNT\_OWN\_RX\_AhIjg ubaubahQj†ubjy)�rn }ro (hHUhS}rp (hU]hV]hW]hX]h[]uhIj_ h_]rq h{)�rr }rs (hHX7Number of entries on port A received from device itselfrt hIjn hOj7hQhƒhS}ru (hU]hV]hW]hX]h[]uh]M-h_]rv hhX7Number of entries on port A received from device itselfrw …�rx }ry (hHjt hIjr ubaubahQj†ubjy)�rz }r{ (hHUhS}r| (hU]hV]hW]hX]h[]uhIj_ h_]r} h{)�r~ }r (hHX*96*r€ hIjz hOj7hQhƒhS}r� (hU]hV]hW]hX]h[]uh]M-h_]r‚ j’)�rƒ }r„ (hHj€ hS}r… (hU]hV]hW]hX]h[]uhIj~ h_]r† hhX96r‡ …�rˆ }r‰ (hHUhIjƒ ubahQjšubaubahQj†ubehQj³ubjt)�rŠ }r‹ (hHUhS}rŒ (hU]hV]hW]hX]h[]uhIj€h_]r� (jy)�rŽ }r� (hHUhS}r� (hU]hV]hW]hX]h[]uhIjŠ h_]r‘ h{)�r’ }r“ (hHXLRE\_CNT\_OWN\_RX\_BhIjŽ hOj7hQhƒhS}r” (hU]hV]hW]hX]h[]uh]M1h_]r• hhXLRE_CNT_OWN_RX_Br– …�r— }r˜ (hHXLRE\_CNT\_OWN\_RX\_BhIj’ ubaubahQj†ubjy)�r™ }rš (hHUhS}r› (hU]hV]hW]hX]h[]uhIjŠ h_]rœ h{)�r� }rž (hHXSame for Port BrŸ hIj™ hOj7hQhƒhS}r  (hU]hV]hW]hX]h[]uh]M1h_]r¡ hhXSame for Port Br¢ …�r£ }r¤ (hHjŸ hIj� ubaubahQj†ubjy)�r¥ }r¦ (hHUhS}r§ (hU]hV]hW]hX]h[]uhIjŠ h_]r¨ h{)�r© }rª (hHX*100*r« hIj¥ hOj7hQhƒhS}r¬ (hU]hV]hW]hX]h[]uh]M1h_]r­ j’)�r® }r¯ (hHj« hS}r° (hU]hV]hW]hX]h[]uhIj© h_]r± hhX100r² …�r³ }r´ (hHUhIj® ubahQjšubaubahQj†ubehQj³ubjt)�rµ }r¶ (hHUhS}r· (hU]hV]hW]hX]h[]uhIj€h_]r¸ (jy)�r¹ }rº (hHUhS}r» (hU]hV]hW]hX]h[]uhIjµ h_]r¼ h{)�r½ }r¾ (hHXLRE\_DUPLICATE\_DISCARDhIj¹ hOj7hQhƒhS}r¿ (hU]hV]hW]hX]h[]uh]M3h_]rÀ hhXLRE_DUPLICATE_DISCARDrÁ …�r }rà (hHXLRE\_DUPLICATE\_DISCARDhIj½ ubaubahQj†ubjy)�rÄ }rÅ (hHUhS}rÆ (hU]hV]hW]hX]h[]uhIjµ h_]rÇ h{)�rÈ }rÉ (hHX$Number of frame retreive by the hostrÊ hIjÄ hOj7hQhƒhS}rË (hU]hV]hW]hX]h[]uh]M3h_]rÌ hhX$Number of frame retreive by the hostrÍ …�rÎ }rÏ (hHjÊ hIjÈ ubaubahQj†ubjy)�rÐ }rÑ (hHUhS}rÒ (hU]hV]hW]hX]h[]uhIjµ h_]rÓ h{)�rÔ }rÕ (hHX*104*rÖ hIjÐ hOj7hQhƒhS}r× (hU]hV]hW]hX]h[]uh]M3h_]rØ j’)�rÙ }rÚ (hHjÖ hS}rÛ (hU]hV]hW]hX]h[]uhIjÔ h_]rÜ hhX104rÝ …�rÞ }rß (hHUhIjÙ ubahQjšubaubahQj†ubehQj³ubjt)�rà }rá (hHUhS}râ (hU]hV]hW]hX]h[]uhIj€h_]rã (jy)�rä }rå (hHUhS}ræ (hU]hV]hW]hX]h[]uhIjà h_]rç h{)�rè }ré (hHXLRE\_TRANSPARENT\_RECEPT IONhIjä hOj7hQhƒhS}rê (hU]hV]hW]hX]h[]uh]M6h_]rë hhXLRE_TRANSPARENT_RECEPT IONrì …�rí }rî (hHXLRE\_TRANSPARENT\_RECEPT IONhIjè ubaubahQj†ubjy)�rï }rð (hHUhS}rñ (hU]hV]hW]hX]h[]uhIjà h_]rò h{)�ró }rô (hHX(Number of frame received without PRP RCTrõ hIjï hOj7hQhƒhS}rö (hU]hV]hW]hX]h[]uh]M6h_]r÷ hhX(Number of frame received without PRP RCTrø …�rù }rú (hHjõ hIjó ubaubahQj†ubjy)�rû }rü (hHUhS}rý (hU]hV]hW]hX]h[]uhIjà h_]rþ h{)�rÿ }r (hHX*108*r hIjû hOj7hQhƒhS}r (hU]hV]hW]hX]h[]uh]M6h_]r j’)�r }r (hHj hS}r (hU]hV]hW]hX]h[]uhIjÿ h_]r hhX108r …�r }r (hHUhIj ubahQjšubaubahQj†ubehQj³ubjt)�r }r (hHUhS}r (hU]hV]hW]hX]h[]uhIj€h_]r (jy)�r }r (hHUhS}r (hU]hV]hW]hX]h[]uhIj h_]r h{)�r }r (hHX#LRE\_NODE\_TABLE\_LOOKUP \_ERROR\_AhIj hOj7hQhƒhS}r (hU]hV]hW]hX]h[]uh]M9h_]r hhXLRE_NODE_TABLE_LOOKUP _ERROR_Ar …�r }r (hHX#LRE\_NODE\_TABLE\_LOOKUP \_ERROR\_AhIj ubaubahQj†ubjy)�r }r (hHUhS}r (hU]hV]hW]hX]h[]uhIj h_]r h{)�r }r (hHX>Number of instances where node table look up failed for Port Ar hIj hOj7hQhƒhS}r! (hU]hV]hW]hX]h[]uh]M9h_]r" hhX>Number of instances where node table look up failed for Port Ar# …�r$ }r% (hHj hIj ubaubahQj†ubjy)�r& }r' (hHUhS}r( (hU]hV]hW]hX]h[]uhIj h_]r) h{)�r* }r+ (hHX*112*r, hIj& hOj7hQhƒhS}r- (hU]hV]hW]hX]h[]uh]M9h_]r. j’)�r/ }r0 (hHj, hS}r1 (hU]hV]hW]hX]h[]uhIj* h_]r2 hhX112r3 …�r4 }r5 (hHUhIj/ ubahQjšubaubahQj†ubehQj³ubjt)�r6 }r7 (hHUhS}r8 (hU]hV]hW]hX]h[]uhIj€h_]r9 (jy)�r: }r; (hHUhS}r< (hU]hV]hW]hX]h[]uhIj6 h_]r= h{)�r> }r? (hHX#LRE\_NODE\_TABLE\_LOOKUP \_ERROR\_BhIj: hOj7hQhƒhS}r@ (hU]hV]hW]hX]h[]uh]M=h_]rA hhXLRE_NODE_TABLE_LOOKUP _ERROR_BrB …�rC }rD (hHX#LRE\_NODE\_TABLE\_LOOKUP \_ERROR\_BhIj> ubaubahQj†ubjy)�rE }rF (hHUhS}rG (hU]hV]hW]hX]h[]uhIj6 h_]rH h{)�rI }rJ (hHXSame for Port BrK hIjE hOj7hQhƒhS}rL (hU]hV]hW]hX]h[]uh]M=h_]rM hhXSame for Port BrN …�rO }rP (hHjK hIjI ubaubahQj†ubjy)�rQ }rR (hHUhS}rS (hU]hV]hW]hX]h[]uhIj6 h_]rT h{)�rU }rV (hHX*116*rW hIjQ hOj7hQhƒhS}rX (hU]hV]hW]hX]h[]uh]M=h_]rY j’)�rZ }r[ (hHjW hS}r\ (hU]hV]hW]hX]h[]uhIjU h_]r] hhX116r^ …�r_ }r` (hHUhIjZ ubahQjšubaubahQj†ubehQj³ubjt)�ra }rb (hHUhS}rc (hU]hV]hW]hX]h[]uhIj€h_]rd (jy)�re }rf (hHUhS}rg (hU]hV]hW]hX]h[]uhIja h_]rh h{)�ri }rj (hHXLRE\_NODE\_TABLE\_FULLhIje hOj7hQhƒhS}rk (hU]hV]hW]hX]h[]uh]M@h_]rl hhXLRE_NODE_TABLE_FULLrm …�rn }ro (hHXLRE\_NODE\_TABLE\_FULLhIji ubaubahQj†ubjy)�rp }rq (hHUhS}rr (hU]hV]hW]hX]h[]uhIja h_]rs h{)�rt }ru (hHX0If Node Table is full, this value is incrementedrv hIjp hOj7hQhƒhS}rw (hU]hV]hW]hX]h[]uh]M@h_]rx hhX0If Node Table is full, this value is incrementedry …�rz }r{ (hHjv hIjt ubaubahQj†ubjy)�r| }r} (hHUhS}r~ (hU]hV]hW]hX]h[]uhIja h_]r h{)�r€ }r� (hHX*120*r‚ hIj| hOj7hQhƒhS}rƒ (hU]hV]hW]hX]h[]uh]M@h_]r„ j’)�r… }r† (hHj‚ hS}r‡ (hU]hV]hW]hX]h[]uhIj€ h_]rˆ hhX120r‰ …�rŠ }r‹ (hHUhIj… ubahQjšubaubahQj†ubehQj³ubjt)�rŒ }r� (hHUhS}rŽ (hU]hV]hW]hX]h[]uhIj€h_]r� (jy)�r� }r‘ (hHUhS}r’ (hU]hV]hW]hX]h[]uhIjŒ h_]r“ h{)�r” }r• (hHXLRE\_MULTICAST\_DROPPEDhIj� hOj7hQhƒhS}r– (hU]hV]hW]hX]h[]uh]MDh_]r— hhXLRE_MULTICAST_DROPPEDr˜ …�r™ }rš (hHXLRE\_MULTICAST\_DROPPEDhIj” ubaubahQj†ubjy)�r› }rœ (hHUhS}r� (hU]hV]hW]hX]h[]uhIjŒ h_]rž h{)�rŸ }r  (hHXtIf the Multicast frame is dropped because of no hash value configured in the filter table, this value is incrementedr¡ hIj› hOj7hQhƒhS}r¢ (hU]hV]hW]hX]h[]uh]MDh_]r£ hhXtIf the Multicast frame is dropped because of no hash value configured in the filter table, this value is incrementedr¤ …�r¥ }r¦ (hHj¡ hIjŸ ubaubahQj†ubjy)�r§ }r¨ (hHUhS}r© (hU]hV]hW]hX]h[]uhIjŒ h_]rª h{)�r« }r¬ (hHX*124*r­ hIj§ hOj7hQhƒhS}r® (hU]hV]hW]hX]h[]uh]MDh_]r¯ j’)�r° }r± (hHj­ hS}r² (hU]hV]hW]hX]h[]uhIj« h_]r³ hhX124r´ …�rµ }r¶ (hHUhIj° ubahQjšubaubahQj†ubehQj³ubjt)�r· }r¸ (hHUhS}r¹ (hU]hV]hW]hX]h[]uhIj€h_]rº (jy)�r» }r¼ (hHUhS}r½ (hU]hV]hW]hX]h[]uhIj· h_]r¾ h{)�r¿ }rÀ (hHXLRE\_VLAN\_DROPPEDhIj» hOj7hQhƒhS}rÁ (hU]hV]hW]hX]h[]uh]MJh_]r hhXLRE_VLAN_DROPPEDrà …�rÄ }rÅ (hHXLRE\_VLAN\_DROPPEDhIj¿ ubaubahQj†ubjy)�rÆ }rÇ (hHUhS}rÈ (hU]hV]hW]hX]h[]uhIj· h_]rÉ h{)�rÊ }rË (hHXxIf the frame is dropped because of no entry for the VID of the frame in the VLAN filter table, this value is incrementedrÌ hIjÆ hOj7hQhƒhS}rÍ (hU]hV]hW]hX]h[]uh]MJh_]rÎ hhXxIf the frame is dropped because of no entry for the VID of the frame in the VLAN filter table, this value is incrementedrÏ …�rÐ }rÑ (hHjÌ hIjÊ ubaubahQj†ubjy)�rÒ }rÓ (hHUhS}rÔ (hU]hV]hW]hX]h[]uhIj· h_]rÕ h{)�rÖ }r× (hHX*128*rØ hIjÒ hOj7hQhƒhS}rÙ (hU]hV]hW]hX]h[]uh]MJh_]rÚ j’)�rÛ }rÜ (hHjØ hS}rÝ (hU]hV]hW]hX]h[]uhIjÖ h_]rÞ hhX128rß …�rà }rá (hHUhIjÛ ubahQjšubaubahQj†ubehQj³ubehQj,ubehQj-ubaubh{)�râ }rã (hHXTable: **LRE Interface Stats**rä hIj6hOj7hQhƒhS}rå (hU]hV]hW]hX]h[]uh]MQh^hh_]ræ (hhXTable: rç …�rè }ré (hHXTable: hIjâ ubhæ)�rê }rë (hHX**LRE Interface Stats**hS}rì (hU]hV]hW]hX]h[]uhIjâ h_]rí hhXLRE Interface Statsrî …�rï }rð (hHUhIjê ubahQhîubeubjV)�rñ }rò (hHUhIj6hOj7hQjYhS}ró (hU]hV]hW]hX]h[]uh]Nh^hh_]rô j\)�rõ }rö (hHUhS}r÷ (hX]hW]hU]hV]h[]UcolsKuhIjñ h_]rø (ja)�rù }rú (hHUhS}rû (hX]hW]hU]hV]h[]UcolwidthKuhIjõ h_]hQjeubja)�rü }rý (hHUhS}rþ (hX]hW]hU]hV]h[]UcolwidthKuhIjõ h_]hQjeubja)�rÿ }r (hHUhS}r (hX]hW]hU]hV]h[]UcolwidthKuhIjõ h_]hQjeubja)�r }r (hHUhS}r (hX]hW]hU]hV]h[]UcolwidthKuhIjõ h_]hQjeubjo)�r }r (hHUhS}r (hU]hV]hW]hX]h[]uhIjõ h_]r jt)�r }r (hHUhS}r (hU]hV]hW]hX]h[]uhIj h_]r (jy)�r }r (hHUhS}r (hU]hV]hW]hX]h[]uhIj h_]r h{)�r }r (hHXName of Offsetr hIj hOj7hQhƒhS}r (hU]hV]hW]hX]h[]uh]MTh_]r hhXName of Offsetr …�r }r (hHj hIj ubaubahQj†ubjy)�r }r (hHUhS}r (hU]hV]hW]hX]h[]uhIj h_]r h{)�r }r (hHX,Description Refer to *hsr\_prp\_firmwar e.h*hIj hOj7hQhƒhS}r (hU]hV]hW]hX]h[]uh]MTh_]r (hhXDescription Refer to r! …�r" }r# (hHXDescription Refer to hIj ubj’)�r$ }r% (hHX*hsr\_prp\_firmwar e.h*hS}r& (hU]hV]hW]hX]h[]uhIj h_]r' hhXhsr_prp_firmwar e.hr( …�r) }r* (hHUhIj$ ubahQjšubeubahQj†ubjy)�r+ }r, (hHUhS}r- (hU]hV]hW]hX]h[]uhIj h_]r. h{)�r/ }r0 (hHXOffset in PRU0 DRAMr1 hIj+ hOj7hQhƒhS}r2 (hU]hV]hW]hX]h[]uh]MTh_]r3 hhXOffset in PRU0 DRAMr4 …�r5 }r6 (hHj1 hIj/ ubaubahQj†ubjy)�r7 }r8 (hHUhS}r9 (hU]hV]hW]hX]h[]uhIj h_]r: h{)�r; }r< (hHXSize (in bytes)r= hIj7 hOj7hQhƒhS}r> (hU]hV]hW]hX]h[]uh]MTh_]r? hhXSize (in bytes)r@ …�rA }rB (hHj= hIj; ubaubahQj†ubehQj³ubahQj´ubjµ)�rC }rD (hHUhS}rE (hU]hV]hW]hX]h[]uhIjõ h_]rF (jt)�rG }rH (hHUhS}rI (hU]hV]hW]hX]h[]uhIjC h_]rJ (jy)�rK }rL (hHUhS}rM (hU]hV]hW]hX]h[]uhIjG h_]rN h{)�rO }rP (hHXDUPLICATE\_HOST\_T ABLEhIjK hOj7hQhƒhS}rQ (hU]hV]hW]hX]h[]uh]MYh_]rR hhXDUPLICATE_HOST_T ABLErS …�rT }rU (hHXDUPLICATE\_HOST\_T ABLEhIjO ubaubahQj†ubjy)�rV }rW (hHUhS}rX (hU]hV]hW]hX]h[]uhIjG h_]rY h{)�rZ }r[ (hHX"Duplicate detection table for Hostr\ hIjV hOj7hQhƒhS}r] (hU]hV]hW]hX]h[]uh]MYh_]r^ hhX"Duplicate detection table for Hostr_ …�r` }ra (hHj\ hIjZ ubaubahQj†ubjy)�rb }rc (hHUhS}rd (hU]hV]hW]hX]h[]uhIjG h_]re h{)�rf }rg (hHX*0x200*rh hIjb hOj7hQhƒhS}ri (hU]hV]hW]hX]h[]uh]MYh_]rj j’)�rk }rl (hHjh hS}rm (hU]hV]hW]hX]h[]uhIjf h_]rn hhX0x200ro …�rp }rq (hHUhIjk ubahQjšubaubahQj†ubjy)�rr }rs (hHUhS}rt (hU]hV]hW]hX]h[]uhIjG h_]ru h{)�rv }rw (hHX*6136*rx hIjr hOj7hQhƒhS}ry (hU]hV]hW]hX]h[]uh]MYh_]rz j’)�r{ }r| (hHjx hS}r} (hU]hV]hW]hX]h[]uhIjv h_]r~ hhX6136r …�r€ }r� (hHUhIj{ ubahQjšubaubahQj†ubehQj³ubjt)�r‚ }rƒ (hHUhS}r„ (hU]hV]hW]hX]h[]uhIjC h_]r… (jy)�r† }r‡ (hHUhS}rˆ (hU]hV]hW]hX]h[]uhIj‚ h_]r‰ h{)�rŠ }r‹ (hHXNEXT\_FREE\_ADDRES S\_NT\_QUEUEhIj† hOj7hQhƒhS}rŒ (hU]hV]hW]hX]h[]uh]M]h_]r� hhXNEXT_FREE_ADDRES S_NT_QUEUErŽ …�r� }r� (hHXNEXT\_FREE\_ADDRES S\_NT\_QUEUEhIjŠ ubaubahQj†ubjy)�r‘ }r’ (hHUhS}r“ (hU]hV]hW]hX]h[]uhIj‚ h_]r” h{)�r• }r– (hHX:Offset of the queue of the free address for the node tabler— hIj‘ hOj7hQhƒhS}r˜ (hU]hV]hW]hX]h[]uh]M]h_]r™ hhX:Offset of the queue of the free address for the node tablerš …�r› }rœ (hHj— hIj• ubaubahQj†ubjy)�r� }rž (hHUhS}rŸ (hU]hV]hW]hX]h[]uhIj‚ h_]r  h{)�r¡ }r¢ (hHX*0x1B00*r£ hIj� hOj7hQhƒhS}r¤ (hU]hV]hW]hX]h[]uh]M]h_]r¥ j’)�r¦ }r§ (hHj£ hS}r¨ (hU]hV]hW]hX]h[]uhIj¡ h_]r© hhX0x1B00rª …�r« }r¬ (hHUhIj¦ ubahQjšubaubahQj†ubjy)�r­ }r® (hHUhS}r¯ (hU]hV]hW]hX]h[]uhIj‚ h_]r° h{)�r± }r² (hHX*132*r³ hIj­ hOj7hQhƒhS}r´ (hU]hV]hW]hX]h[]uh]M]h_]rµ j’)�r¶ }r· (hHj³ hS}r¸ (hU]hV]hW]hX]h[]uhIj± h_]r¹ hhX132rº …�r» }r¼ (hHUhIj¶ ubahQjšubaubahQj†ubehQj³ubjt)�r½ }r¾ (hHUhS}r¿ (hU]hV]hW]hX]h[]uhIjC h_]rÀ (jy)�rÁ }r (hHUhS}rà (hU]hV]hW]hX]h[]uhIj½ h_]rÄ h{)�rÅ }rÆ (hHX POINTERS\_FREE\_AD DR\_NODETABLEhIjÁ hOj7hQhƒhS}rÇ (hU]hV]hW]hX]h[]uh]Mbh_]rÈ hhXPOINTERS_FREE_AD DR_NODETABLErÉ …�rÊ }rË (hHX POINTERS\_FREE\_AD DR\_NODETABLEhIjÅ ubaubahQj†ubjy)�rÌ }rÍ (hHUhS}rÎ (hU]hV]hW]hX]h[]uhIj½ h_]rÏ h{)�rÐ }rÑ (hHX]Offset of the read and write pointer of the free address of the node table(read.w0,writ e.w2)rÒ hIjÌ hOj7hQhƒhS}rÓ (hU]hV]hW]hX]h[]uh]Mbh_]rÔ hhX]Offset of the read and write pointer of the free address of the node table(read.w0,writ e.w2)rÕ …�rÖ }r× (hHjÒ hIjÐ ubaubahQj†ubjy)�rØ }rÙ (hHUhS}rÚ (hU]hV]hW]hX]h[]uhIj½ h_]rÛ h{)�rÜ }rÝ (hHX*0x1B84*rÞ hIjØ hOj7hQhƒhS}rß (hU]hV]hW]hX]h[]uh]Mbh_]rà j’)�rá }râ (hHjÞ hS}rã (hU]hV]hW]hX]h[]uhIjÜ h_]rä hhX0x1B84rå …�ræ }rç (hHUhIjá ubahQjšubaubahQj†ubjy)�rè }ré (hHUhS}rê (hU]hV]hW]hX]h[]uhIj½ h_]rë h{)�rì }rí (hHX*4*rî hIjè hOj7hQhƒhS}rï (hU]hV]hW]hX]h[]uh]Mbh_]rð j’)�rñ }rò (hHjî hS}ró (hU]hV]hW]hX]h[]uhIjì h_]rô hhX4…�rõ }rö (hHUhIjñ ubahQjšubaubahQj†ubehQj³ubehQj,ubehQj-ubaubh{)�r÷ }rø (hHXTable: **PRU0 RAM Memory Map**rù hIj6hOj7hQhƒhS}rú (hU]hV]hW]hX]h[]uh]Mkh^hh_]rû (hhXTable: rü …�rý }rþ (hHXTable: hIj÷ ubhæ)�rÿ }r (hHX**PRU0 RAM Memory Map**hS}r (hU]hV]hW]hX]h[]uhIj÷ h_]r hhXPRU0 RAM Memory Mapr …�r }r (hHUhIjÿ ubahQhîubeubjV)�r }r (hHUhIj6hOj7hQjYhS}r (hU]hV]hW]hX]h[]uh]Nh^hh_]r j\)�r }r (hHUhS}r (hX]hW]hU]hV]h[]UcolsKuhIj h_]r (ja)�r }r (hHUhS}r (hX]hW]hU]hV]h[]UcolwidthKuhIj h_]hQjeubja)�r }r (hHUhS}r (hX]hW]hU]hV]h[]UcolwidthKuhIj h_]hQjeubja)�r }r (hHUhS}r (hX]hW]hU]hV]h[]UcolwidthKuhIj h_]hQjeubja)�r }r (hHUhS}r (hX]hW]hU]hV]h[]UcolwidthKuhIj h_]hQjeubjo)�r }r (hHUhS}r (hU]hV]hW]hX]h[]uhIj h_]r jt)�r }r (hHUhS}r (hU]hV]hW]hX]h[]uhIj h_]r! (jy)�r" }r# (hHUhS}r$ (hU]hV]hW]hX]h[]uhIj h_]r% h{)�r& }r' (hHXName of Offsetr( hIj" hOj7hQhƒhS}r) (hU]hV]hW]hX]h[]uh]Mnh_]r* hhXName of Offsetr+ …�r, }r- (hHj( hIj& ubaubahQj†ubjy)�r. }r/ (hHUhS}r0 (hU]hV]hW]hX]h[]uhIj h_]r1 h{)�r2 }r3 (hHX,Description Refer to *hsr\_prp\_firmwar e.h*hIj. hOj7hQhƒhS}r4 (hU]hV]hW]hX]h[]uh]Mnh_]r5 (hhXDescription Refer to r6 …�r7 }r8 (hHXDescription Refer to hIj2 ubj’)�r9 }r: (hHX*hsr\_prp\_firmwar e.h*hS}r; (hU]hV]hW]hX]h[]uhIj2 h_]r< hhXhsr_prp_firmwar e.hr= …�r> }r? (hHUhIj9 ubahQjšubeubahQj†ubjy)�r@ }rA (hHUhS}rB (hU]hV]hW]hX]h[]uhIj h_]rC h{)�rD }rE (hHXOffset in PRU1 DRAMrF hIj@ hOj7hQhƒhS}rG (hU]hV]hW]hX]h[]uh]Mnh_]rH hhXOffset in PRU1 DRAMrI …�rJ }rK (hHjF hIjD ubaubahQj†ubjy)�rL }rM (hHUhS}rN (hU]hV]hW]hX]h[]uhIj h_]rO h{)�rP }rQ (hHXSize (in bytes)rR hIjL hOj7hQhƒhS}rS (hU]hV]hW]hX]h[]uh]Mnh_]rT hhXSize (in bytes)rU …�rV }rW (hHjR hIjP ubaubahQj†ubehQj³ubahQj´ubjµ)�rX }rY (hHUhS}rZ (hU]hV]hW]hX]h[]uhIj h_]r[ (jt)�r\ }r] (hHUhS}r^ (hU]hV]hW]hX]h[]uhIjX h_]r_ (jy)�r` }ra (hHUhS}rb (hU]hV]hW]hX]h[]uhIj\ h_]rc h{)�rd }re (hHXDUPLICATE\_PORT\_T ABLE\_PRU0hIj` hOj7hQhƒhS}rf (hU]hV]hW]hX]h[]uh]Msh_]rg hhXDUPLICATE_PORT_T ABLE_PRU0rh …�ri }rj (hHXDUPLICATE\_PORT\_T ABLE\_PRU0hIjd ubaubahQj†ubjy)�rk }rl (hHUhS}rm (hU]hV]hW]hX]h[]uhIj\ h_]rn h{)�ro }rp (hHX2Offset of port duplicate table for PRU0 (HSR Only)rq hIjk hOj7hQhƒhS}rr (hU]hV]hW]hX]h[]uh]Msh_]rs hhX2Offset of port duplicate table for PRU0 (HSR Only)rt …�ru }rv (hHjq hIjo ubaubahQj†ubjy)�rw }rx (hHUhS}ry (hU]hV]hW]hX]h[]uhIj\ h_]rz h{)�r{ }r| (hHX*0x200*r} hIjw hOj7hQhƒhS}r~ (hU]hV]hW]hX]h[]uh]Msh_]r j’)�r€ }r� (hHj} hS}r‚ (hU]hV]hW]hX]h[]uhIj{ h_]rƒ hhX0x200r„ …�r… }r† (hHUhIj€ ubahQjšubaubahQj†ubjy)�r‡ }rˆ (hHUhS}r‰ (hU]hV]hW]hX]h[]uhIj\ h_]rŠ h{)�r‹ }rŒ (hHX*3064*r� hIj‡ hOj7hQhƒhS}rŽ (hU]hV]hW]hX]h[]uh]Msh_]r� j’)�r� }r‘ (hHj� hS}r’ (hU]hV]hW]hX]h[]uhIj‹ h_]r“ hhX3064r” …�r• }r– (hHUhIj� ubahQjšubaubahQj†ubehQj³ubjt)�r— }r˜ (hHUhS}r™ (hU]hV]hW]hX]h[]uhIjX h_]rš (jy)�r› }rœ (hHUhS}r� (hU]hV]hW]hX]h[]uhIj— h_]rž h{)�rŸ }r  (hHXDUPLICATE\_PORT\_T ABLE\_PRU1hIj› hOj7hQhƒhS}r¡ (hU]hV]hW]hX]h[]uh]Mxh_]r¢ hhXDUPLICATE_PORT_T ABLE_PRU1r£ …�r¤ }r¥ (hHXDUPLICATE\_PORT\_T ABLE\_PRU1hIjŸ ubaubahQj†ubjy)�r¦ }r§ (hHUhS}r¨ (hU]hV]hW]hX]h[]uhIj— h_]r© h{)�rª }r« (hHX2Offset of port duplicate table for PRU1 (HSR Only)r¬ hIj¦ hOj7hQhƒhS}r­ (hU]hV]hW]hX]h[]uh]Mxh_]r® hhX2Offset of port duplicate table for PRU1 (HSR Only)r¯ …�r° }r± (hHj¬ hIjª ubaubahQj†ubjy)�r² }r³ (hHUhS}r´ (hU]hV]hW]hX]h[]uhIj— h_]rµ h{)�r¶ }r· (hHX*0xE00*r¸ hIj² hOj7hQhƒhS}r¹ (hU]hV]hW]hX]h[]uh]Mxh_]rº j’)�r» }r¼ (hHj¸ hS}r½ (hU]hV]hW]hX]h[]uhIj¶ h_]r¾ hhX0xE00r¿ …�rÀ }rÁ (hHUhIj» ubahQjšubaubahQj†ubjy)�r }rà (hHUhS}rÄ (hU]hV]hW]hX]h[]uhIj— h_]rÅ h{)�rÆ }rÇ (hHX*3064*rÈ hIj hOj7hQhƒhS}rÉ (hU]hV]hW]hX]h[]uh]Mxh_]rÊ j’)�rË }rÌ (hHjÈ hS}rÍ (hU]hV]hW]hX]h[]uhIjÆ h_]rÎ hhX3064rÏ …�rÐ }rÑ (hHUhIjË ubahQjšubaubahQj†ubehQj³ubjt)�rÒ }rÓ (hHUhS}rÔ (hU]hV]hW]hX]h[]uhIjX h_]rÕ (jy)�rÖ }r× (hHUhS}rØ (hU]hV]hW]hX]h[]uhIjÒ h_]rÙ h{)�rÚ }rÛ (hHXNODE\_TABLE\_SIZEhIjÖ hOj7hQhƒhS}rÜ (hU]hV]hW]hX]h[]uh]M}h_]rÝ hhXNODE_TABLE_SIZErÞ …�rß }rà (hHXNODE\_TABLE\_SIZEhIjÚ ubaubahQj†ubjy)�rá }râ (hHUhS}rã (hU]hV]hW]hX]h[]uhIjÒ h_]rä h{)�rå }ræ (hHXSize of the node table [0..128]rç hIjá hOj7hQhƒhS}rè (hU]hV]hW]hX]h[]uh]M}h_]ré hhXSize of the node table [0..128]rê …�rë }rì (hHjç hIjå ubaubahQj†ubjy)�rí }rî (hHUhS}rï (hU]hV]hW]hX]h[]uhIjÒ h_]rð h{)�rñ }rò (hHX*0x1C00*ró hIjí hOj7hQhƒhS}rô (hU]hV]hW]hX]h[]uh]M}h_]rõ j’)�rö }r÷ (hHjó hS}rø (hU]hV]hW]hX]h[]uhIjñ h_]rù hhX0x1C00rú …�rû }rü (hHUhIjö ubahQjšubaubahQj†ubjy)�rý }rþ (hHUhS}rÿ (hU]hV]hW]hX]h[]uhIjÒ h_]r h{)�r }r (hHX*4*r hIjý hOj7hQhƒhS}r (hU]hV]hW]hX]h[]uh]M}h_]r j’)�r }r (hHj hS}r (hU]hV]hW]hX]h[]uhIj h_]r hhX4…�r }r (hHUhIj ubahQjšubaubahQj†ubehQj³ubjt)�r }r (hHUhS}r (hU]hV]hW]hX]h[]uhIjX h_]r (jy)�r }r (hHUhS}r (hU]hV]hW]hX]h[]uhIj h_]r h{)�r }r (hHXNODE\_TABLE\_ARBIT RATIONhIj hOj7hQhƒhS}r (hU]hV]hW]hX]h[]uh]M€h_]r hhXNODE_TABLE_ARBIT RATIONr …�r }r (hHXNODE\_TABLE\_ARBIT RATIONhIj ubaubahQj†ubjy)�r }r (hHUhS}r (hU]hV]hW]hX]h[]uhIj h_]r h{)�r }r (hHXNBusy slave flag and busy master flag for 3 lock used to protect the node tabler! hIj hOj7hQhƒhS}r" (hU]hV]hW]hX]h[]uh]M€h_]r# hhXNBusy slave flag and busy master flag for 3 lock used to protect the node tabler$ …�r% }r& (hHj! hIj ubaubahQj†ubjy)�r' }r( (hHUhS}r) (hU]hV]hW]hX]h[]uhIj h_]r* h{)�r+ }r, (hHX*0x1C04*r- hIj' hOj7hQhƒhS}r. (hU]hV]hW]hX]h[]uh]M€h_]r/ j’)�r0 }r1 (hHj- hS}r2 (hU]hV]hW]hX]h[]uhIj+ h_]r3 hhX0x1C04r4 …�r5 }r6 (hHUhIj0 ubahQjšubaubahQj†ubjy)�r7 }r8 (hHUhS}r9 (hU]hV]hW]hX]h[]uhIj h_]r: h{)�r; }r< (hHX*4*r= hIj7 hOj7hQhƒhS}r> (hU]hV]hW]hX]h[]uh]M€h_]r? j’)�r@ }rA (hHj= hS}rB (hU]hV]hW]hX]h[]uhIj; h_]rC hhX4…�rD }rE (hHUhIj@ ubahQjšubaubahQj†ubehQj³ubjt)�rF }rG (hHUhS}rH (hU]hV]hW]hX]h[]uhIjX h_]rI (jy)�rJ }rK (hHUhS}rL (hU]hV]hW]hX]h[]uhIjF h_]rM h{)�rN }rO (hHXDUPLICATE\_HOST\_T ABLE\_SIZEhIjJ hOj7hQhƒhS}rP (hU]hV]hW]hX]h[]uh]M‡h_]rQ hhXDUPLICATE_HOST_T ABLE_SIZErR …�rS }rT (hHXDUPLICATE\_HOST\_T ABLE\_SIZEhIjN ubaubahQj†ubjy)�rU }rV (hHUhS}rW (hU]hV]hW]hX]h[]uhIjF h_]rX h{)�rY }rZ (hHX0Size and setup (N and M) of duplicate host tabler[ hIjU hOj7hQhƒhS}r\ (hU]hV]hW]hX]h[]uh]M‡h_]r] hhX0Size and setup (N and M) of duplicate host tabler^ …�r_ }r` (hHj[ hIjY ubaubahQj†ubjy)�ra }rb (hHUhS}rc (hU]hV]hW]hX]h[]uhIjF h_]rd h{)�re }rf (hHX*0x1C08*rg hIja hOj7hQhƒhS}rh (hU]hV]hW]hX]h[]uh]M‡h_]ri j’)�rj }rk (hHjg hS}rl (hU]hV]hW]hX]h[]uhIje h_]rm hhX0x1C08rn …�ro }rp (hHUhIjj ubahQjšubaubahQj†ubjy)�rq }rr (hHUhS}rs (hU]hV]hW]hX]h[]uhIjF h_]rt h{)�ru }rv (hHX*4*rw hIjq hOj7hQhƒhS}rx (hU]hV]hW]hX]h[]uh]M‡h_]ry j’)�rz }r{ (hHjw hS}r| (hU]hV]hW]hX]h[]uhIju h_]r} hhX4…�r~ }r (hHUhIjz ubahQjšubaubahQj†ubehQj³ubjt)�r€ }r� (hHUhS}r‚ (hU]hV]hW]hX]h[]uhIjX h_]rƒ (jy)�r„ }r… (hHUhS}r† (hU]hV]hW]hX]h[]uhIj€ h_]r‡ h{)�rˆ }r‰ (hHXDUPLICATE\_PORT\_T ABLE\_SIZEhIj„ hOj7hQhƒhS}rŠ (hU]hV]hW]hX]h[]uh]MŒh_]r‹ hhXDUPLICATE_PORT_T ABLE_SIZErŒ …�r� }rŽ (hHXDUPLICATE\_PORT\_T ABLE\_SIZEhIjˆ ubaubahQj†ubjy)�r� }r� (hHUhS}r‘ (hU]hV]hW]hX]h[]uhIj€ h_]r’ h{)�r“ }r” (hHX0Size and setup (N and M) of duplicate port tabler• hIj� hOj7hQhƒhS}r– (hU]hV]hW]hX]h[]uh]MŒh_]r— hhX0Size and setup (N and M) of duplicate port tabler˜ …�r™ }rš (hHj• hIj“ ubaubahQj†ubjy)�r› }rœ (hHUhS}r� (hU]hV]hW]hX]h[]uhIj€ h_]rž h{)�rŸ }r  (hHX*0x1C1C*r¡ hIj› hOj7hQhƒhS}r¢ (hU]hV]hW]hX]h[]uh]MŒh_]r£ j’)�r¤ }r¥ (hHj¡ hS}r¦ (hU]hV]hW]hX]h[]uhIjŸ h_]r§ hhX0x1C1Cr¨ …�r© }rª (hHUhIj¤ ubahQjšubaubahQj†ubjy)�r« }r¬ (hHUhS}r­ (hU]hV]hW]hX]h[]uhIj€ h_]r® h{)�r¯ }r° (hHX*4*r± hIj« hOj7hQhƒhS}r² (hU]hV]hW]hX]h[]uh]MŒh_]r³ j’)�r´ }rµ (hHj± hS}r¶ (hU]hV]hW]hX]h[]uhIj¯ h_]r· hhX4…�r¸ }r¹ (hHUhIj´ ubahQjšubaubahQj†ubehQj³ubjt)�rº }r» (hHUhS}r¼ (hU]hV]hW]hX]h[]uhIjX h_]r½ (jy)�r¾ }r¿ (hHUhS}rÀ (hU]hV]hW]hX]h[]uhIjº h_]rÁ h{)�r }rà (hHXNODE\_FORGET\_TIMEhIj¾ hOj7hQhƒhS}rÄ (hU]hV]hW]hX]h[]uh]M‘h_]rÅ hhXNODE_FORGET_TIMErÆ …�rÇ }rÈ (hHXNODE\_FORGET\_TIMEhIj ubaubahQj†ubjy)�rÉ }rÊ (hHUhS}rË (hU]hV]hW]hX]h[]uhIjº h_]rÌ h{)�rÍ }rÎ (hHX:Time after which a node entry is cleared (10ms resolution)rÏ hIjÉ hOj7hQhƒhS}rÐ (hU]hV]hW]hX]h[]uh]M‘h_]rÑ hhX:Time after which a node entry is cleared (10ms resolution)rÒ …�rÓ }rÔ (hHjÏ hIjÍ ubaubahQj†ubjy)�rÕ }rÖ (hHUhS}r× (hU]hV]hW]hX]h[]uhIjº h_]rØ h{)�rÙ }rÚ (hHX*0x1C20*rÛ hIjÕ hOj7hQhƒhS}rÜ (hU]hV]hW]hX]h[]uh]M‘h_]rÝ j’)�rÞ }rß (hHjÛ hS}rà (hU]hV]hW]hX]h[]uhIjÙ h_]rá hhX0x1C20râ …�rã }rä (hHUhIjÞ ubahQjšubaubahQj†ubjy)�rå }ræ (hHUhS}rç (hU]hV]hW]hX]h[]uhIjº h_]rè h{)�ré }rê (hHX*4*rë hIjå hOj7hQhƒhS}rì (hU]hV]hW]hX]h[]uh]M‘h_]rí j’)�rî }rï (hHjë hS}rð (hU]hV]hW]hX]h[]uhIjé h_]rñ hhX4…�rò }ró (hHUhIjî ubahQjšubaubahQj†ubehQj³ubjt)�rô }rõ (hHUhS}rö (hU]hV]hW]hX]h[]uhIjX h_]r÷ (jy)�rø }rù (hHUhS}rú (hU]hV]hW]hX]h[]uhIjô h_]rû h{)�rü }rý (hHXDUPLI\_FORGET\_TIM EhIjø hOj7hQhƒhS}rþ (hU]hV]hW]hX]h[]uh]M–h_]rÿ hhXDUPLI_FORGET_TIM Er…�r}r(hHXDUPLI\_FORGET\_TIM EhIjü ubaubahQj†ubjy)�r}r(hHUhS}r(hU]hV]hW]hX]h[]uhIjô h_]rh{)�r}r(hHXOTime after which an entry is removed from the duplicate table (10ms resolution)r hIjhOj7hQhƒhS}r (hU]hV]hW]hX]h[]uh]M–h_]r hhXOTime after which an entry is removed from the duplicate table (10ms resolution)r …�r }r(hHj hIjubaubahQj†ubjy)�r}r(hHUhS}r(hU]hV]hW]hX]h[]uhIjô h_]rh{)�r}r(hHX*0x1C24*rhIjhOj7hQhƒhS}r(hU]hV]hW]hX]h[]uh]M–h_]rj’)�r}r(hHjhS}r(hU]hV]hW]hX]h[]uhIjh_]rhhX0x1C24r…�r}r(hHUhIjubahQjšubaubahQj†ubjy)�r}r (hHUhS}r!(hU]hV]hW]hX]h[]uhIjô h_]r"h{)�r#}r$(hHX*4*r%hIjhOj7hQhƒhS}r&(hU]hV]hW]hX]h[]uh]M–h_]r'j’)�r(}r)(hHj%hS}r*(hU]hV]hW]hX]h[]uhIj#h_]r+hhX4…�r,}r-(hHUhIj(ubahQjšubaubahQj†ubehQj³ubjt)�r.}r/(hHUhS}r0(hU]hV]hW]hX]h[]uhIjX h_]r1(jy)�r2}r3(hHUhS}r4(hU]hV]hW]hX]h[]uhIj.h_]r5h{)�r6}r7(hHXPATH\_BROKEN\_NB\_ FRAM\_DIFFhIj2hOj7hQhƒhS}r8(hU]hV]hW]hX]h[]uh]Mœh_]r9hhXPATH_BROKEN_NB_ FRAM_DIFFr:…�r;}r<(hHXPATH\_BROKEN\_NB\_ FRAM\_DIFFhIj6ubaubahQj†ubjy)�r=}r>(hHUhS}r?(hU]hV]hW]hX]h[]uhIj.h_]r@h{)�rA}rB(hHXDSupervision frame Counter minimum difference to detect a broken pathrChIj=hOj7hQhƒhS}rD(hU]hV]hW]hX]h[]uh]Mœh_]rEhhXDSupervision frame Counter minimum difference to detect a broken pathrF…�rG}rH(hHjChIjAubaubahQj†ubjy)�rI}rJ(hHUhS}rK(hU]hV]hW]hX]h[]uhIj.h_]rLh{)�rM}rN(hHX*0x1C28*rOhIjIhOj7hQhƒhS}rP(hU]hV]hW]hX]h[]uh]Mœh_]rQj’)�rR}rS(hHjOhS}rT(hU]hV]hW]hX]h[]uhIjMh_]rUhhX0x1C28rV…�rW}rX(hHUhIjRubahQjšubaubahQj†ubjy)�rY}rZ(hHUhS}r[(hU]hV]hW]hX]h[]uhIj.h_]r\h{)�r]}r^(hHX*4*r_hIjYhOj7hQhƒhS}r`(hU]hV]hW]hX]h[]uh]Mœh_]raj’)�rb}rc(hHj_hS}rd(hU]hV]hW]hX]h[]uhIj]h_]rehhX4…�rf}rg(hHUhIjbubahQjšubaubahQj†ubehQj³ubjt)�rh}ri(hHUhS}rj(hU]hV]hW]hX]h[]uhIjX h_]rk(jy)�rl}rm(hHUhS}rn(hU]hV]hW]hX]h[]uhIjhh_]roh{)�rp}rq(hHXDUPLI\_PORT\_CHECK \_RESOhIjlhOj7hQhƒhS}rr(hU]hV]hW]hX]h[]uh]M¢h_]rshhXDUPLI_PORT_CHECK _RESOrt…�ru}rv(hHXDUPLI\_PORT\_CHECK \_RESOhIjpubaubahQj†ubjy)�rw}rx(hHUhS}ry(hU]hV]hW]hX]h[]uhIjhh_]rzh{)�r{}r|(hHX/Time interval to check the port duplicate tabler}hIjwhOj7hQhƒhS}r~(hU]hV]hW]hX]h[]uh]M¢h_]rhhX/Time interval to check the port duplicate tabler€…�r�}r‚(hHj}hIj{ubaubahQj†ubjy)�rƒ}r„(hHUhS}r…(hU]hV]hW]hX]h[]uhIjhh_]r†h{)�r‡}rˆ(hHX*0x1C2C*r‰hIjƒhOj7hQhƒhS}rŠ(hU]hV]hW]hX]h[]uh]M¢h_]r‹j’)�rŒ}r�(hHj‰hS}rŽ(hU]hV]hW]hX]h[]uhIj‡h_]r�hhX0x1C2Cr�…�r‘}r’(hHUhIjŒubahQjšubaubahQj†ubjy)�r“}r”(hHUhS}r•(hU]hV]hW]hX]h[]uhIjhh_]r–h{)�r—}r˜(hHX*4*r™hIj“hOj7hQhƒhS}rš(hU]hV]hW]hX]h[]uh]M¢h_]r›j’)�rœ}r�(hHj™hS}rž(hU]hV]hW]hX]h[]uhIj—h_]rŸhhX4…�r }r¡(hHUhIjœubahQjšubaubahQj†ubehQj³ubjt)�r¢}r£(hHUhS}r¤(hU]hV]hW]hX]h[]uhIjX h_]r¥(jy)�r¦}r§(hHUhS}r¨(hU]hV]hW]hX]h[]uhIj¢h_]r©h{)�rª}r«(hHXDUPLI\_HOST\_CHECK \_RESOhIj¦hOj7hQhƒhS}r¬(hU]hV]hW]hX]h[]uh]M¦h_]r­hhXDUPLI_HOST_CHECK _RESOr®…�r¯}r°(hHXDUPLI\_HOST\_CHECK \_RESOhIjªubaubahQj†ubjy)�r±}r²(hHUhS}r³(hU]hV]hW]hX]h[]uhIj¢h_]r´h{)�rµ}r¶(hHX/Time interval to check the host duplicate tabler·hIj±hOj7hQhƒhS}r¸(hU]hV]hW]hX]h[]uh]M¦h_]r¹hhX/Time interval to check the host duplicate tablerº…�r»}r¼(hHj·hIjµubaubahQj†ubjy)�r½}r¾(hHUhS}r¿(hU]hV]hW]hX]h[]uhIj¢h_]rÀh{)�rÁ}rÂ(hHX*0x1C30*rÃhIj½hOj7hQhƒhS}rÄ(hU]hV]hW]hX]h[]uh]M¦h_]rÅj’)�rÆ}rÇ(hHjÃhS}rÈ(hU]hV]hW]hX]h[]uhIjÁh_]rÉhhX0x1C30rÊ…�rË}rÌ(hHUhIjÆubahQjšubaubahQj†ubjy)�rÍ}rÎ(hHUhS}rÏ(hU]hV]hW]hX]h[]uhIj¢h_]rÐh{)�rÑ}rÒ(hHX*4*rÓhIjÍhOj7hQhƒhS}rÔ(hU]hV]hW]hX]h[]uh]M¦h_]rÕj’)�rÖ}r×(hHjÓhS}rØ(hU]hV]hW]hX]h[]uhIjÑh_]rÙhhX4…�rÚ}rÛ(hHUhIjÖubahQjšubaubahQj†ubehQj³ubjt)�rÜ}rÝ(hHUhS}rÞ(hU]hV]hW]hX]h[]uhIjX h_]rß(jy)�rà}rá(hHUhS}râ(hU]hV]hW]hX]h[]uhIjÜh_]rãh{)�rä}rå(hHXNODETABLE\_CHECK\_ RESOhIjàhOj7hQhƒhS}ræ(hU]hV]hW]hX]h[]uh]Mªh_]rçhhXNODETABLE_CHECK_ RESOrè…�ré}rê(hHXNODETABLE\_CHECK\_ RESOhIjäubaubahQj†ubjy)�rë}rì(hHUhS}rí(hU]hV]hW]hX]h[]uhIjÜh_]rîh{)�rï}rð(hHX/Time interval to check the node duplicate tablerñhIjëhOj7hQhƒhS}rò(hU]hV]hW]hX]h[]uh]Mªh_]róhhX/Time interval to check the node duplicate tablerô…�rõ}rö(hHjñhIjïubaubahQj†ubjy)�r÷}rø(hHUhS}rù(hU]hV]hW]hX]h[]uhIjÜh_]rúh{)�rû}rü(hHX*0x1C34*rýhIj÷hOj7hQhƒhS}rþ(hU]hV]hW]hX]h[]uh]Mªh_]rÿj’)�r}r(hHjýhS}r(hU]hV]hW]hX]h[]uhIjûh_]rhhX0x1C34r…�r}r(hHUhIjubahQjšubaubahQj†ubjy)�r}r(hHUhS}r (hU]hV]hW]hX]h[]uhIjÜh_]r h{)�r }r (hHX*4*r hIjhOj7hQhƒhS}r(hU]hV]hW]hX]h[]uh]Mªh_]rj’)�r}r(hHj hS}r(hU]hV]hW]hX]h[]uhIj h_]rhhX4…�r}r(hHUhIjubahQjšubaubahQj†ubehQj³ubjt)�r}r(hHUhS}r(hU]hV]hW]hX]h[]uhIjX h_]r(jy)�r}r(hHUhS}r(hU]hV]hW]hX]h[]uhIjh_]rh{)�r}r(hHXHOST\_TIMER\_CHECK \_FLAGShIjhOj7hQhƒhS}r (hU]hV]hW]hX]h[]uh]M®h_]r!hhXHOST_TIMER_CHECK _FLAGSr"…�r#}r$(hHXHOST\_TIMER\_CHECK \_FLAGShIjubaubahQj†ubjy)�r%}r&(hHUhS}r'(hU]hV]hW]hX]h[]uhIjh_]r(h{)�r)}r*(hHX Host \| PorthIj%hOj7hQhƒhS}r+(hU]hV]hW]hX]h[]uh]M®h_]r,hhX Host | Portr-…�r.}r/(hHX Host \| PorthIj)ubaubahQj†ubjy)�r0}r1(hHUhS}r2(hU]hV]hW]hX]h[]uhIjh_]r3h{)�r4}r5(hHX*0x1C38*r6hIj0hOj7hQhƒhS}r7(hU]hV]hW]hX]h[]uh]M®h_]r8j’)�r9}r:(hHj6hS}r;(hU]hV]hW]hX]h[]uhIj4h_]r<hhX0x1C38r=…�r>}r?(hHUhIj9ubahQjšubaubahQj†ubjy)�r@}rA(hHUhS}rB(hU]hV]hW]hX]h[]uhIjh_]rCh{)�rD}rE(hHX*4*rFhIj@hOj7hQhƒhS}rG(hU]hV]hW]hX]h[]uh]M®h_]rHj’)�rI}rJ(hHjFhS}rK(hU]hV]hW]hX]h[]uhIjDh_]rLhhX4…�rM}rN(hHUhIjIubahQjšubaubahQj†ubehQj³ubjt)�rO}rP(hHUhS}rQ(hU]hV]hW]hX]h[]uhIjX h_]rR(jy)�rS}rT(hHUhS}rU(hU]hV]hW]hX]h[]uhIjOh_]rVh{)�rW}rX(hHXHOST\_DUPLICATE\_A RBITRATIONhIjShOj7hQhƒhS}rY(hU]hV]hW]hX]h[]uh]M±h_]rZhhXHOST_DUPLICATE_A RBITRATIONr[…�r\}r](hHXHOST\_DUPLICATE\_A RBITRATIONhIjWubaubahQj†ubjy)�r^}r_(hHUhS}r`(hU]hV]hW]hX]h[]uhIjOh_]rah{)�rb}rc(hHX,Arbitration flag for the host duplicate taskrdhIj^hOj7hQhƒhS}re(hU]hV]hW]hX]h[]uh]M±h_]rfhhX,Arbitration flag for the host duplicate taskrg…�rh}ri(hHjdhIjbubaubahQj†ubjy)�rj}rk(hHUhS}rl(hU]hV]hW]hX]h[]uhIjOh_]rmh{)�rn}ro(hHX*0x1C3C*rphIjjhOj7hQhƒhS}rq(hU]hV]hW]hX]h[]uh]M±h_]rrj’)�rs}rt(hHjphS}ru(hU]hV]hW]hX]h[]uhIjnh_]rvhhX0x1C3Crw…�rx}ry(hHUhIjsubahQjšubaubahQj†ubjy)�rz}r{(hHUhS}r|(hU]hV]hW]hX]h[]uhIjOh_]r}h{)�r~}r(hHX*4*r€hIjzhOj7hQhƒhS}r�(hU]hV]hW]hX]h[]uh]M±h_]r‚j’)�rƒ}r„(hHj€hS}r…(hU]hV]hW]hX]h[]uhIj~h_]r†hhX4…�r‡}rˆ(hHUhIjƒubahQjšubaubahQj†ubehQj³ubjt)�r‰}rŠ(hHUhS}r‹(hU]hV]hW]hX]h[]uhIjX h_]rŒ(jy)�r�}rŽ(hHUhS}r�(hU]hV]hW]hX]h[]uhIj‰h_]r�h{)�r‘}r’(hHXICSS\_FIRMWARE\_RE LEASEhIj�hOj7hQhƒhS}r“(hU]hV]hW]hX]h[]uh]Mµh_]r”hhXICSS_FIRMWARE_RE LEASEr•…�r–}r—(hHXICSS\_FIRMWARE\_RE LEASEhIj‘ubaubahQj†ubjy)�r˜}r™(hHUhS}rš(hU]hV]hW]hX]h[]uhIj‰h_]r›h{)�rœ}r�(hHX;Time counter to trigger the host duplicate table check taskržhIj˜hOj7hQhƒhS}rŸ(hU]hV]hW]hX]h[]uh]Mµh_]r hhX;Time counter to trigger the host duplicate table check taskr¡…�r¢}r£(hHjžhIjœubaubahQj†ubjy)�r¤}r¥(hHUhS}r¦(hU]hV]hW]hX]h[]uhIj‰h_]r§h{)�r¨}r©(hHX*0x1C40*rªhIj¤hOj7hQhƒhS}r«(hU]hV]hW]hX]h[]uh]Mµh_]r¬j’)�r­}r®(hHjªhS}r¯(hU]hV]hW]hX]h[]uhIj¨h_]r°hhX0x1C40r±…�r²}r³(hHUhIj­ubahQjšubaubahQj†ubjy)�r´}rµ(hHUhS}r¶(hU]hV]hW]hX]h[]uhIj‰h_]r·h{)�r¸}r¹(hHX*4*rºhIj´hOj7hQhƒhS}r»(hU]hV]hW]hX]h[]uh]Mµh_]r¼j’)�r½}r¾(hHjºhS}r¿(hU]hV]hW]hX]h[]uhIj¸h_]rÀhhX4…�rÁ}rÂ(hHUhIj½ubahQjšubaubahQj†ubehQj³ubjt)�rÃ}rÄ(hHUhS}rÅ(hU]hV]hW]hX]h[]uhIjX h_]rÆ(jy)�rÇ}rÈ(hHUhS}rÉ(hU]hV]hW]hX]h[]uhIjÃh_]rÊh{)�rË}rÌ(hHXRED\_FIRMWARE\_REL EASEhIjÇhOj7hQhƒhS}rÍ(hU]hV]hW]hX]h[]uh]Mºh_]rÎhhXRED_FIRMWARE_REL EASErÏ…�rÐ}rÑ(hHXRED\_FIRMWARE\_REL EASEhIjËubaubahQj†ubjy)�rÒ}rÓ(hHUhS}rÔ(hU]hV]hW]hX]h[]uhIjÃh_]rÕh{)�rÖ}r×(hHX=Time counter to trigger the Node Table check task in firmwarerØhIjÒhOj7hQhƒhS}rÙ(hU]hV]hW]hX]h[]uh]Mºh_]rÚhhX=Time counter to trigger the Node Table check task in firmwarerÛ…�rÜ}rÝ(hHjØhIjÖubaubahQj†ubjy)�rÞ}rß(hHUhS}rà(hU]hV]hW]hX]h[]uhIjÃh_]ráh{)�râ}rã(hHX*0x1C44*rähIjÞhOj7hQhƒhS}rå(hU]hV]hW]hX]h[]uh]Mºh_]ræj’)�rç}rè(hHjähS}ré(hU]hV]hW]hX]h[]uhIjâh_]rêhhX0x1C44rë…�rì}rí(hHUhIjçubahQjšubaubahQj†ubjy)�rî}rï(hHUhS}rð(hU]hV]hW]hX]h[]uhIjÃh_]rñh{)�rò}ró(hHX*4*rôhIjîhOj7hQhƒhS}rõ(hU]hV]hW]hX]h[]uh]Mºh_]röj’)�r÷}rø(hHjôhS}rù(hU]hV]hW]hX]h[]uhIjòh_]rúhhX4…�rû}rü(hHUhIj÷ubahQjšubaubahQj†ubehQj³ubjt)�rý}rþ(hHUhS}rÿ(hU]hV]hW]hX]h[]uhIjX h_]r(jy)�r}r(hHUhS}r(hU]hV]hW]hX]h[]uhIjýh_]rh{)�r}r(hHX SUP\_ADDRhIjhOj7hQhƒhS}r(hU]hV]hW]hX]h[]uh]M¿h_]rhhXSUP_ADDRr …�r }r (hHX SUP\_ADDRhIjubaubahQj†ubjy)�r }r (hHUhS}r(hU]hV]hW]hX]h[]uhIjýh_]rh{)�r}r(hHXSupervision address in HSRrhIj hOj7hQhƒhS}r(hU]hV]hW]hX]h[]uh]M¿h_]rhhXSupervision address in HSRr…�r}r(hHjhIjubaubahQj†ubjy)�r}r(hHUhS}r(hU]hV]hW]hX]h[]uhIjýh_]rh{)�r}r(hHX*0x1C48*rhIjhOj7hQhƒhS}r(hU]hV]hW]hX]h[]uh]M¿h_]r j’)�r!}r"(hHjhS}r#(hU]hV]hW]hX]h[]uhIjh_]r$hhX0x1C48r%…�r&}r'(hHUhIj!ubahQjšubaubahQj†ubjy)�r(}r)(hHUhS}r*(hU]hV]hW]hX]h[]uhIjýh_]r+h{)�r,}r-(hHX*4*r.hIj(hOj7hQhƒhS}r/(hU]hV]hW]hX]h[]uh]M¿h_]r0j’)�r1}r2(hHj.hS}r3(hU]hV]hW]hX]h[]uhIj,h_]r4hhX4…�r5}r6(hHUhIj1ubahQjšubaubahQj†ubehQj³ubehQj,ubehQj-ubaubh{)�r7}r8(hHXTable: **PRU1 RAM Memory Map**r9hIj6hOj7hQhƒhS}r:(hU]hV]hW]hX]h[]uh]MÃh^hh_]r;(hhXTable: r<…�r=}r>(hHXTable: hIj7ubhæ)�r?}r@(hHX**PRU1 RAM Memory Map**hS}rA(hU]hV]hW]hX]h[]uhIj7h_]rBhhXPRU1 RAM Memory MaprC…�rD}rE(hHUhIj?ubahQhîubeubeubeubhJ)�rF}rG(hHUhIhMhOhPhQhRhS}rH(hU]hV]hW]hX]rIUlinux-softwarerJah[]rKhauh]K6h^hh_]rL(ha)�rM}rN(hHXLinux SoftwarerOhIjFhOhPhQhehS}rP(hU]hV]hW]hX]h[]uh]K6h^hh_]rQhhXLinux SoftwarerR…�rS}rT(hHjOhIjMubaubhJ)�rU}rV(hHUhIjFhOhXCsource/linux/Industrial_Protocols/HSR_PRP/HSR_PRP_for_Linux.rst.incrW…�rX}rYbhQhRhS}rZ(hU]hV]hW]hX]r[Uoverviewr\ah[]r]h auh]Kh^hh_]r^(ha)�r_}r`(hHXOverviewrahIjUhOjXhQhehS}rb(hU]hV]hW]hX]h[]uh]Kh^hh_]rchhXOverviewrd…�re}rf(hHjahIj_ubaubh{)�rg}rh(hHXBIn both HSR and PRP protocols, the DAN (Dual Attached Node) sends an identical frame to both the interfaces and uses a sequence number in the tag to allow drop duplicates at the Rx node to achieve redundancy. This section describes the different software components of a Linux based HSR/PRP solution to support redundancy.rihIjUhOjXhQhƒhS}rj(hU]hV]hW]hX]h[]uh]Kh^hh_]rkhhXBIn both HSR and PRP protocols, the DAN (Dual Attached Node) sends an identical frame to both the interfaces and uses a sequence number in the tag to allow drop duplicates at the Rx node to achieve redundancy. This section describes the different software components of a Linux based HSR/PRP solution to support redundancy.rl…�rm}rn(hHjihIjgubaubeubhJ)�ro}rp(hHUhIjFhOjXhQhRhS}rq(hU]hV]hW]hX]rrUfeatures-supportedrsah[]rth auh]K h^hh_]ru(ha)�rv}rw(hHXFeatures supportedrxhIjohOjXhQhehS}ry(hU]hV]hW]hX]h[]uh]K h^hh_]rzhhXFeatures supportedr{…�r|}r}(hHjxhIjvubaubhÔ)�r~}r(hHUhIjohOjXhQh×hS}r€(hÙX-hX]hW]hU]hV]h[]uh]K h^hh_]r�(hÛ)�r‚}rƒ(hHX˜**HSR/PRP** - 100 Mbits/s Full Duplex Ethernet Interface - The implementation is as per IEC 62439-3 Ed 2.0 - Operates as a DAN (Dual Attached Node) hIj~hONhQhÞhS}r„(hU]hV]hW]hX]h[]uh]Nh^hh_]r…(h{)�r†}r‡(hHX **HSR/PRP**rˆhIj‚hOjXhQhƒhS}r‰(hU]hV]hW]hX]h[]uh]K h_]rŠhæ)�r‹}rŒ(hHjˆhS}r�(hU]hV]hW]hX]h[]uhIj†h_]rŽhhXHSR/PRPr�…�r�}r‘(hHUhIj‹ubahQhîubaubhÔ)�r’}r“(hHUhS}r”(hÙX-hX]hW]hU]hV]h[]uhIj‚h_]r•(hÛ)�r–}r—(hHX*100 Mbits/s Full Duplex Ethernet Interfacer˜hS}r™(hU]hV]hW]hX]h[]uhIj’h_]ršh{)�r›}rœ(hHj˜hIj–hOjXhQhƒhS}r�(hU]hV]hW]hX]h[]uh]Kh_]ržhhX*100 Mbits/s Full Duplex Ethernet InterfacerŸ…�r }r¡(hHj˜hIj›ubaubahQhÞubhÛ)�r¢}r£(hHX/The implementation is as per IEC 62439-3 Ed 2.0r¤hS}r¥(hU]hV]hW]hX]h[]uhIj’h_]r¦h{)�r§}r¨(hHj¤hIj¢hOjXhQhƒhS}r©(hU]hV]hW]hX]h[]uh]Kh_]rªhhX/The implementation is as per IEC 62439-3 Ed 2.0r«…�r¬}r­(hHj¤hIj§ubaubahQhÞubhÛ)�r®}r¯(hHX'Operates as a DAN (Dual Attached Node) hS}r°(hU]hV]hW]hX]h[]uhIj’h_]r±h{)�r²}r³(hHX&Operates as a DAN (Dual Attached Node)r´hIj®hOjXhQhƒhS}rµ(hU]hV]hW]hX]h[]uh]Kh_]r¶hhX&Operates as a DAN (Dual Attached Node)r·…�r¸}r¹(hHj´hIj²ubaubahQhÞubehQh×ubeubhÛ)�rº}r»(hHX¶**HSR** - Operates as a DANH - As per clause 5 of the standard - Support for modes – H, T, U and N as per standard - Modes can be changed at run time - Cut-through switching hIj~hONhQhÞhS}r¼(hU]hV]hW]hX]h[]uh]Nh^hh_]r½(h{)�r¾}r¿(hHX**HSR**rÀhIjºhOjXhQhƒhS}rÁ(hU]hV]hW]hX]h[]uh]Kh_]rÂhæ)�rÃ}rÄ(hHjÀhS}rÅ(hU]hV]hW]hX]h[]uhIj¾h_]rÆhhXHSRrÇ…�rÈ}rÉ(hHUhIjÃubahQhîubaubhÔ)�rÊ}rË(hHUhS}rÌ(hÙX-hX]hW]hU]hV]h[]uhIjºh_]rÍ(hÛ)�rÎ}rÏ(hHXOperates as a DANHrÐhS}rÑ(hU]hV]hW]hX]h[]uhIjÊh_]rÒh{)�rÓ}rÔ(hHjÐhIjÎhOjXhQhƒhS}rÕ(hU]hV]hW]hX]h[]uh]Kh_]rÖhhXOperates as a DANHr×…�rØ}rÙ(hHjÐhIjÓubaubahQhÞubhÛ)�rÚ}rÛ(hHXAs per clause 5 of the standardrÜhS}rÝ(hU]hV]hW]hX]h[]uhIjÊh_]rÞh{)�rß}rà(hHjÜhIjÚhOjXhQhƒhS}rá(hU]hV]hW]hX]h[]uh]Kh_]râhhXAs per clause 5 of the standardrã…�rä}rå(hHjÜhIjßubaubahQhÞubhÛ)�ræ}rç(hHX3Support for modes – H, T, U and N as per standardrèhS}ré(hU]hV]hW]hX]h[]uhIjÊh_]rêh{)�rë}rì(hHjèhIjæhOjXhQhƒhS}rí(hU]hV]hW]hX]h[]uh]Kh_]rîhhX3Support for modes – H, T, U and N as per standardrï…�rð}rñ(hHjèhIjëubaubahQhÞubhÛ)�rò}ró(hHX Modes can be changed at run timerôhS}rõ(hU]hV]hW]hX]h[]uhIjÊh_]röh{)�r÷}rø(hHjôhIjòhOjXhQhƒhS}rù(hU]hV]hW]hX]h[]uh]Kh_]rúhhX Modes can be changed at run timerû…�rü}rý(hHjôhIj÷ubaubahQhÞubhÛ)�rþ}rÿ(hHXCut-through switching hS}r(hU]hV]hW]hX]h[]uhIjÊh_]rh{)�r}r(hHXCut-through switchingrhIjþhOjXhQhƒhS}r(hU]hV]hW]hX]h[]uh]Kh_]rhhXCut-through switchingr…�r}r (hHjhIjubaubahQhÞubehQh×ubeubhÛ)�r }r (hHXr**PRP** - Operates as a DANP - As per clause 6 of the standard - Two ports as per standard, Port A and Port B hIj~hONhQhÞhS}r (hU]hV]hW]hX]h[]uh]Nh^hh_]r (h{)�r}r(hHX**PRP**rhIj hOjXhQhƒhS}r(hU]hV]hW]hX]h[]uh]Kh_]rhæ)�r}r(hHjhS}r(hU]hV]hW]hX]h[]uhIjh_]rhhXPRPr…�r}r(hHUhIjubahQhîubaubhÔ)�r}r(hHUhS}r(hÙX-hX]hW]hU]hV]h[]uhIj h_]r(hÛ)�r}r(hHXOperates as a DANPr hS}r!(hU]hV]hW]hX]h[]uhIjh_]r"h{)�r#}r$(hHj hIjhOjXhQhƒhS}r%(hU]hV]hW]hX]h[]uh]Kh_]r&hhXOperates as a DANPr'…�r(}r)(hHj hIj#ubaubahQhÞubhÛ)�r*}r+(hHXAs per clause 6 of the standardr,hS}r-(hU]hV]hW]hX]h[]uhIjh_]r.h{)�r/}r0(hHj,hIj*hOjXhQhƒhS}r1(hU]hV]hW]hX]h[]uh]Kh_]r2hhXAs per clause 6 of the standardr3…�r4}r5(hHj,hIj/ubaubahQhÞubhÛ)�r6}r7(hHX-Two ports as per standard, Port A and Port B hS}r8(hU]hV]hW]hX]h[]uhIjh_]r9h{)�r:}r;(hHX,Two ports as per standard, Port A and Port Br<hIj6hOjXhQhƒhS}r=(hU]hV]hW]hX]h[]uh]Kh_]r>hhX,Two ports as per standard, Port A and Port Br?…�r@}rA(hHj<hIj:ubaubahQhÞubehQh×ubeubhÛ)�rB}rC(hHX¨**Support for Node Table** - Total 128 entries on AMICx, AM335x, AM437x - Total 256 entries on AM57xx & K2G - Hash Table for faster lookup - Node Table statistics hIj~hONhQhÞhS}rD(hU]hV]hW]hX]h[]uh]Nh^hh_]rE(h{)�rF}rG(hHX**Support for Node Table**rHhIjBhOjXhQhƒhS}rI(hU]hV]hW]hX]h[]uh]K!h_]rJhæ)�rK}rL(hHjHhS}rM(hU]hV]hW]hX]h[]uhIjFh_]rNhhXSupport for Node TablerO…�rP}rQ(hHUhIjKubahQhîubaubhÔ)�rR}rS(hHUhS}rT(hÙX-hX]hW]hU]hV]h[]uhIjBh_]rU(hÛ)�rV}rW(hHX*Total 128 entries on AMICx, AM335x, AM437xrXhS}rY(hU]hV]hW]hX]h[]uhIjRh_]rZh{)�r[}r\(hHjXhIjVhOjXhQhƒhS}r](hU]hV]hW]hX]h[]uh]K#h_]r^hhX*Total 128 entries on AMICx, AM335x, AM437xr_…�r`}ra(hHjXhIj[ubaubahQhÞubhÛ)�rb}rc(hHX!Total 256 entries on AM57xx & K2GrdhS}re(hU]hV]hW]hX]h[]uhIjRh_]rfh{)�rg}rh(hHjdhIjbhOjXhQhƒhS}ri(hU]hV]hW]hX]h[]uh]K$h_]rjhhX!Total 256 entries on AM57xx & K2Grk…�rl}rm(hHjdhIjgubaubahQhÞubhÛ)�rn}ro(hHXHash Table for faster lookuprphS}rq(hU]hV]hW]hX]h[]uhIjRh_]rrh{)�rs}rt(hHjphIjnhOjXhQhƒhS}ru(hU]hV]hW]hX]h[]uh]K%h_]rvhhXHash Table for faster lookuprw…�rx}ry(hHjphIjsubaubahQhÞubhÛ)�rz}r{(hHXNode Table statistics hS}r|(hU]hV]hW]hX]h[]uhIjRh_]r}h{)�r~}r(hHXNode Table statisticsr€hIjzhOjXhQhƒhS}r�(hU]hV]hW]hX]h[]uh]K&h_]r‚hhXNode Table statisticsrƒ…�r„}r…(hHj€hIj~ubaubahQhÞubehQh×ubeubhÛ)�r†}r‡(hHXµ**Support for Multicast Filtering** - Supported on all SoCs - Hash Table of 256 entries for faster lookup - O(1) complexity - User configurable mask to select bits for hashing hIj~hONhQhÞhS}rˆ(hU]hV]hW]hX]h[]uh]Nh^hh_]r‰(h{)�rŠ}r‹(hHX#**Support for Multicast Filtering**rŒhIj†hOjXhQhƒhS}r�(hU]hV]hW]hX]h[]uh]K(h_]rŽhæ)�r�}r�(hHjŒhS}r‘(hU]hV]hW]hX]h[]uhIjŠh_]r’hhXSupport for Multicast Filteringr“…�r”}r•(hHUhIj�ubahQhîubaubhÔ)�r–}r—(hHUhS}r˜(hÙX-hX]hW]hU]hV]h[]uhIj†h_]r™(hÛ)�rš}r›(hHXSupported on all SoCsrœhS}r�(hU]hV]hW]hX]h[]uhIj–h_]ržh{)�rŸ}r (hHjœhIjšhOjXhQhƒhS}r¡(hU]hV]hW]hX]h[]uh]K*h_]r¢hhXSupported on all SoCsr£…�r¤}r¥(hHjœhIjŸubaubahQhÞubhÛ)�r¦}r§(hHX+Hash Table of 256 entries for faster lookupr¨hS}r©(hU]hV]hW]hX]h[]uhIj–h_]rªh{)�r«}r¬(hHj¨hIj¦hOjXhQhƒhS}r­(hU]hV]hW]hX]h[]uh]K+h_]r®hhX+Hash Table of 256 entries for faster lookupr¯…�r°}r±(hHj¨hIj«ubaubahQhÞubhÛ)�r²}r³(hHXO(1) complexityr´hS}rµ(hU]hV]hW]hX]h[]uhIj–h_]r¶h{)�r·}r¸(hHj´hIj²hOjXhQhƒhS}r¹(hU]hV]hW]hX]h[]uh]K,h_]rºhhXO(1) complexityr»…�r¼}r½(hHj´hIj·ubaubahQhÞubhÛ)�r¾}r¿(hHX2User configurable mask to select bits for hashing hS}rÀ(hU]hV]hW]hX]h[]uhIj–h_]rÁh{)�rÂ}rÃ(hHX1User configurable mask to select bits for hashingrÄhIj¾hOjXhQhƒhS}rÅ(hU]hV]hW]hX]h[]uh]K-h_]rÆhhX1User configurable mask to select bits for hashingrÇ…�rÈ}rÉ(hHjÄhIjÂubaubahQhÞubehQh×ubeubhÛ)�rÊ}rË(hHX,**Support for VLAN over HSR/PRP interface** hIj~hOjXhQhÞhS}rÌ(hU]hV]hW]hX]h[]uh]Nh^hh_]rÍh{)�rÎ}rÏ(hHX+**Support for VLAN over HSR/PRP interface**rÐhIjÊhOjXhQhƒhS}rÑ(hU]hV]hW]hX]h[]uh]K/h_]rÒhæ)�rÓ}rÔ(hHjÐhS}rÕ(hU]hV]hW]hX]h[]uhIjÎh_]rÖhhX'Support for VLAN over HSR/PRP interfacer×…�rØ}rÙ(hHUhIjÓubahQhîubaubaubhÛ)�rÚ}rÛ(hHXj**Support for VLAN Filtering** - VLAN filter table of 4096 entries for perfect match - O(1) complexity hIj~hONhQhÞhS}rÜ(hU]hV]hW]hX]h[]uh]Nh^hh_]rÝ(h{)�rÞ}rß(hHX**Support for VLAN Filtering**ràhIjÚhOjXhQhƒhS}rá(hU]hV]hW]hX]h[]uh]K1h_]râhæ)�rã}rä(hHjàhS}rå(hU]hV]hW]hX]h[]uhIjÞh_]ræhhXSupport for VLAN Filteringrç…�rè}ré(hHUhIjãubahQhîubaubhÔ)�rê}rë(hHUhS}rì(hÙX-hX]hW]hU]hV]h[]uhIjÚh_]rí(hÛ)�rî}rï(hHX3VLAN filter table of 4096 entries for perfect matchrðhS}rñ(hU]hV]hW]hX]h[]uhIjêh_]ròh{)�ró}rô(hHjðhIjîhOjXhQhƒhS}rõ(hU]hV]hW]hX]h[]uh]K3h_]röhhX3VLAN filter table of 4096 entries for perfect matchr÷…�rø}rù(hHjðhIjóubaubahQhÞubhÛ)�rú}rû(hHXO(1) complexity hS}rü(hU]hV]hW]hX]h[]uhIjêh_]rýh{)�rþ}rÿ(hHXO(1) complexityrhIjúhOjXhQhƒhS}r(hU]hV]hW]hX]h[]uh]K4h_]rhhXO(1) complexityr…�r}r(hHjhIjþubaubahQhÞubehQh×ubeubhÛ)�r}r(hHXâ**Duplicate Discard Table** - Duplicate discard on Port to Host path (HSR and PRP) - Duplicate discard table on Port to Port path (HSR) - Data integrity (CRC) check during port to port forwarding, except cut through (HSR) hIj~hONhQhÞhS}r(hU]hV]hW]hX]h[]uh]Nh^hh_]r (h{)�r }r (hHX**Duplicate Discard Table**r hIjhOjXhQhƒhS}r (hU]hV]hW]hX]h[]uh]K6h_]rhæ)�r}r(hHj hS}r(hU]hV]hW]hX]h[]uhIj h_]rhhXDuplicate Discard Tabler…�r}r(hHUhIjubahQhîubaubhÔ)�r}r(hHUhS}r(hÙX-hX]hW]hU]hV]h[]uhIjh_]r(hÛ)�r}r(hHX4Duplicate discard on Port to Host path (HSR and PRP)rhS}r(hU]hV]hW]hX]h[]uhIjh_]rh{)�r}r (hHjhIjhOjXhQhƒhS}r!(hU]hV]hW]hX]h[]uh]K8h_]r"hhX4Duplicate discard on Port to Host path (HSR and PRP)r#…�r$}r%(hHjhIjubaubahQhÞubhÛ)�r&}r'(hHX2Duplicate discard table on Port to Port path (HSR)r(hS}r)(hU]hV]hW]hX]h[]uhIjh_]r*h{)�r+}r,(hHj(hIj&hOjXhQhƒhS}r-(hU]hV]hW]hX]h[]uh]K9h_]r.hhX2Duplicate discard table on Port to Port path (HSR)r/…�r0}r1(hHj(hIj+ubaubahQhÞubhÛ)�r2}r3(hHXTData integrity (CRC) check during port to port forwarding, except cut through (HSR) hS}r4(hU]hV]hW]hX]h[]uhIjh_]r5h{)�r6}r7(hHXSData integrity (CRC) check during port to port forwarding, except cut through (HSR)r8hIj2hOjXhQhƒhS}r9(hU]hV]hW]hX]h[]uh]K:h_]r:hhXSData integrity (CRC) check during port to port forwarding, except cut through (HSR)r;…�r<}r=(hHj8hIj6ubaubahQhÞubehQh×ubeubhÛ)�r>}r?(hHX»**QoS scheme** : 3-bit VLAN PCP - No of levels supported : 2 - Number of host queues : 2 \| 2 QoS levels per host queue - Number of port queues : 2 \| 2 QoS levels per port queue hIj~hONhQhÞhS}r@(hU]hV]hW]hX]h[]uh]Nh^hh_]rA(h{)�rB}rC(hHX **QoS scheme** : 3-bit VLAN PCPhIj>hOjXhQhƒhS}rD(hU]hV]hW]hX]h[]uh]Kh_]rS(hÛ)�rT}rU(hHXNo of levels supported : 2rVhS}rW(hU]hV]hW]hX]h[]uhIjPh_]rXh{)�rY}rZ(hHjVhIjThOjXhQhƒhS}r[(hU]hV]hW]hX]h[]uh]K>h_]r\hhXNo of levels supported : 2r]…�r^}r_(hHjVhIjYubaubahQhÞubhÛ)�r`}ra(hHX9Number of host queues : 2 \| 2 QoS levels per host queuerbhS}rc(hU]hV]hW]hX]h[]uhIjPh_]rdh{)�re}rf(hHjbhIj`hOjXhQhƒhS}rg(hU]hV]hW]hX]h[]uh]K?h_]rhhhX8Number of host queues : 2 | 2 QoS levels per host queueri…�rj}rk(hHX9Number of host queues : 2 \| 2 QoS levels per host queuehIjeubaubahQhÞubhÛ)�rl}rm(hHX:Number of port queues : 2 \| 2 QoS levels per port queue hS}rn(hU]hV]hW]hX]h[]uhIjPh_]roh{)�rp}rq(hHX9Number of port queues : 2 \| 2 QoS levels per port queuehIjlhOjXhQhƒhS}rr(hU]hV]hW]hX]h[]uh]K@h_]rshhX8Number of port queues : 2 | 2 QoS levels per port queuert…�ru}rv(hHX9Number of port queues : 2 \| 2 QoS levels per port queuehIjpubaubahQhÞubehQh×ubeubhÛ)�rw}rx(hHXf**Statistics** - Supports all MIB statistics as per standard - Node Table statistics for debugging hIj~hONhQhÞhS}ry(hU]hV]hW]hX]h[]uh]Nh^hh_]rz(h{)�r{}r|(hHX**Statistics**r}hIjwhOjXhQhƒhS}r~(hU]hV]hW]hX]h[]uh]KBh_]rhæ)�r€}r�(hHj}hS}r‚(hU]hV]hW]hX]h[]uhIj{h_]rƒhhX Statisticsr„…�r…}r†(hHUhIj€ubahQhîubaubhÔ)�r‡}rˆ(hHUhS}r‰(hÙX-hX]hW]hU]hV]h[]uhIjwh_]rŠ(hÛ)�r‹}rŒ(hHX+Supports all MIB statistics as per standardr�hS}rŽ(hU]hV]hW]hX]h[]uhIj‡h_]r�h{)�r�}r‘(hHj�hIj‹hOjXhQhƒhS}r’(hU]hV]hW]hX]h[]uh]KDh_]r“hhX+Supports all MIB statistics as per standardr”…�r•}r–(hHj�hIj�ubaubahQhÞubhÛ)�r—}r˜(hHX$Node Table statistics for debugging hS}r™(hU]hV]hW]hX]h[]uhIj‡h_]ršh{)�r›}rœ(hHX#Node Table statistics for debuggingr�hIj—hOjXhQhƒhS}rž(hU]hV]hW]hX]h[]uh]KEh_]rŸhhX#Node Table statistics for debuggingr …�r¡}r¢(hHj�hIj›ubaubahQhÞubehQh×ubeubhÛ)�r£}r¤(hHX3**Storm Prevention** : Yes. Configurable per port hIj~hOjXhQhÞhS}r¥(hU]hV]hW]hX]h[]uh]Nh^hh_]r¦h{)�r§}r¨(hHX2**Storm Prevention** : Yes. Configurable per porthIj£hOjXhQhƒhS}r©(hU]hV]hW]hX]h[]uh]KGh_]rª(hæ)�r«}r¬(hHX**Storm Prevention**hS}r­(hU]hV]hW]hX]h[]uhIj§h_]r®hhXStorm Preventionr¯…�r°}r±(hHUhIj«ubahQhîubhhX : Yes. Configurable per portr²…�r³}r´(hHX : Yes. Configurable per porthIj§ubeubaubhÛ)�rµ}r¶(hHX:**Dual instance of HSR/PRP using two PRU-ICSS on AM571x** hIj~hOjXhQhÞhS}r·(hU]hV]hW]hX]h[]uh]Nh^hh_]r¸h{)�r¹}rº(hHX9**Dual instance of HSR/PRP using two PRU-ICSS on AM571x**r»hIjµhOjXhQhƒhS}r¼(hU]hV]hW]hX]h[]uh]KIh_]r½hæ)�r¾}r¿(hHj»hS}rÀ(hU]hV]hW]hX]h[]uhIj¹h_]rÁhhX5Dual instance of HSR/PRP using two PRU-ICSS on AM571xrÂ…�rÃ}rÄ(hHUhIj¾ubahQhîubaubaubhÛ)�rÅ}rÆ(hHX+**VLAN tag support in Supervision frames** hIj~hOjXhQhÞhS}rÇ(hU]hV]hW]hX]h[]uh]Nh^hh_]rÈh{)�rÉ}rÊ(hHX***VLAN tag support in Supervision frames**rËhIjÅhOjXhQhƒhS}rÌ(hU]hV]hW]hX]h[]uh]KKh_]rÍhæ)�rÎ}rÏ(hHjËhS}rÐ(hU]hV]hW]hX]h[]uhIjÉh_]rÑhhX&VLAN tag support in Supervision framesrÒ…�rÓ}rÔ(hHUhIjÎubahQhîubaubaubhÛ)�rÕ}rÖ(hHX;**Run time change of Protocol at PRU-ICSS without reboot** hIj~hOjXhQhÞhS}r×(hU]hV]hW]hX]h[]uh]Nh^hh_]rØh{)�rÙ}rÚ(hHX:**Run time change of Protocol at PRU-ICSS without reboot**rÛhIjÕhOjXhQhƒhS}rÜ(hU]hV]hW]hX]h[]uh]KMh_]rÝhæ)�rÞ}rß(hHjÛhS}rà(hU]hV]hW]hX]h[]uhIjÙh_]ráhhX6Run time change of Protocol at PRU-ICSS without rebootrâ…�rã}rä(hHUhIjÞubahQhîubaubaubeubeubhJ)�rå}ræ(hHUhIjFhOjXhQhRhS}rç(hU]hV]hW]hX]rèUsoftware-architectureréah[]rêhauh]KPh^hh_]rë(ha)�rì}rí(hHXSoftware ArchitecturerîhIjåhOjXhQhehS}rï(hU]hV]hW]hX]h[]uh]KPh^hh_]rðhhXSoftware Architecturerñ…�rò}ró(hHjîhIjìubaubh{)�rô}rõ(hHXãThe diagram below highlights the software components that are modified or developed specifically for HSR/PRP. These along with other standard Linux OS components are used to implement the Linux HSR/PRP DAN (Dual Attached Node).röhIjåhOjXhQhƒhS}r÷(hU]hV]hW]hX]h[]uh]KRh^hh_]røhhXãThe diagram below highlights the software components that are modified or developed specifically for HSR/PRP. These along with other standard Linux OS components are used to implement the Linux HSR/PRP DAN (Dual Attached Node).rù…�rú}rû(hHjöhIjôubaubhÔ)�rü}rý(hHUhIjåhOjXhQh×hS}rþ(hÙX-hX]hW]hU]hV]h[]uh]KWh^hh_]rÿ(hÛ)�r}r(hHX;Linux Kernel drivers - HSR/PRP driver - Ethernet driver hIjühONhQhÞhS}r(hU]hV]hW]hX]h[]uh]Nh^hh_]r(h{)�r}r(hHXLinux Kernel driversrhIjhOjXhQhƒhS}r(hU]hV]hW]hX]h[]uh]KWh_]rhhXLinux Kernel driversr …�r }r (hHjhIjubaubhÔ)�r }r (hHUhS}r(hÙX-hX]hW]hU]hV]h[]uhIjh_]r(hÛ)�r}r(hHXHSR/PRP driverrhS}r(hU]hV]hW]hX]h[]uhIj h_]rh{)�r}r(hHjhIjhOjXhQhƒhS}r(hU]hV]hW]hX]h[]uh]KYh_]rhhXHSR/PRP driverr…�r}r(hHjhIjubaubahQhÞubhÛ)�r}r(hHXEthernet driver hS}r(hU]hV]hW]hX]h[]uhIj h_]rh{)�r }r!(hHXEthernet driverr"hIjhOjXhQhƒhS}r#(hU]hV]hW]hX]h[]uh]KZh_]r$hhXEthernet driverr%…�r&}r'(hHj"hIj ubaubahQhÞubehQh×ubeubhÛ)�r(}r)(hHX$User space - Net-SNMP - iproute2 hIjühONhQhÞhS}r*(hU]hV]hW]hX]h[]uh]Nh^hh_]r+(h{)�r,}r-(hHX User spacer.hIj(hOjXhQhƒhS}r/(hU]hV]hW]hX]h[]uh]K\h_]r0hhX User spacer1…�r2}r3(hHj.hIj,ubaubhÔ)�r4}r5(hHUhS}r6(hÙX-hX]hW]hU]hV]h[]uhIj(h_]r7(hÛ)�r8}r9(hHXNet-SNMPr:hS}r;(hU]hV]hW]hX]h[]uhIj4h_]r<h{)�r=}r>(hHj:hIj8hOjXhQhƒhS}r?(hU]hV]hW]hX]h[]uh]K^h_]r@hhXNet-SNMPrA…�rB}rC(hHj:hIj=ubaubahQhÞubhÛ)�rD}rE(hHX iproute2 hS}rF(hU]hV]hW]hX]h[]uhIj4h_]rGh{)�rH}rI(hHXiproute2rJhIjDhOjXhQhƒhS}rK(hU]hV]hW]hX]h[]uh]K_h_]rLhhXiproute2rM…�rN}rO(hHjJhIjHubaubahQhÞubehQh×ubeubeubcdocutils.nodes image rP)�rQ}rR(hHX0.. Image:: ../images/Linux-hsr-architecture.png hIjåhOjXhQUimagerShS}rT(UuriX*linux/../images/Linux-hsr-architecture.pngrUhX]hW]hU]hV]U candidatesrV}rWU*jUsh[]uh]Kbh^hh_]ubhJ)�rX}rY(hHUhIjåhOjXhQhRhS}rZ(hU]hV]hW]hX]r[U-hsr-prp-driver-source-code-and-kconfig-optionr\ah[]r]hauh]Kdh^hh_]r^(ha)�r_}r`(hHX-HSR/PRP Driver source code and Kconfig optionrahIjXhOjXhQhehS}rb(hU]hV]hW]hX]h[]uh]Kdh^hh_]rchhX-HSR/PRP Driver source code and Kconfig optionrd…�re}rf(hHjahIj_ubaubh{)�rg}rh(hHXÉThe driver source code is located under net/hsr-prp folder of the Linux source tree. To build kernel with this driver, set Kconfig option CONFIG\_HSR\_PRP=y in the dotconfig or enable it from the menu.hIjXhOjXhQhƒhS}ri(hU]hV]hW]hX]h[]uh]Kfh^hh_]rjhhXÇThe driver source code is located under net/hsr-prp folder of the Linux source tree. To build kernel with this driver, set Kconfig option CONFIG_HSR_PRP=y in the dotconfig or enable it from the menu.rk…�rl}rm(hHXÉThe driver source code is located under net/hsr-prp folder of the Linux source tree. To build kernel with this driver, set Kconfig option CONFIG\_HSR\_PRP=y in the dotconfig or enable it from the menu.hIjgubaubeubhJ)�rn}ro(hHUhIjåhOjXhQhRhS}rp(hU]hV]hW]hX]rqUlinux-hsr-prp-driverrrah[]rsh8auh]Kkh^hh_]rt(ha)�ru}rv(hHXLinux HSR/PRP DriverrwhIjnhOjXhQhehS}rx(hU]hV]hW]hX]h[]uh]Kkh^hh_]ryhhXLinux HSR/PRP Driverrz…�r{}r|(hHjwhIjuubaubh{)�r}}r~(hHX¥The Linux networking subsystem in upstream kernel has added support for HSR driver starting in v3.12 (HSRv0 - IEC 62439-3:2010) and enhanced the same to support HSRv1 (IEC 62439-3:2012) in v4.6. This driver allows user to create an HSR network device with a pair of slave network interfaces (A and B) that are standard Ethernet interfaces. For example on TI's AM572x IDK EVM, there are two Ethernet interfaces (10/100) per each PRU ICSS. The PRU Emac driver available for ICSS PRU Ethernet h/w supports two Ethernet ports. Using ip link command, user will be able to setup a HSR interface on this EVM that pair the two PRU Ethernet interfaces to create a HSR node or **DAN-H**.hIjnhOjXhQhƒhS}r(hU]hV]hW]hX]h[]uh]Kmh^hh_]r€(hhX›The Linux networking subsystem in upstream kernel has added support for HSR driver starting in v3.12 (HSRv0 - IEC 62439-3:2010) and enhanced the same to support HSRv1 (IEC 62439-3:2012) in v4.6. This driver allows user to create an HSR network device with a pair of slave network interfaces (A and B) that are standard Ethernet interfaces. For example on TI's AM572x IDK EVM, there are two Ethernet interfaces (10/100) per each PRU ICSS. The PRU Emac driver available for ICSS PRU Ethernet h/w supports two Ethernet ports. Using ip link command, user will be able to setup a HSR interface on this EVM that pair the two PRU Ethernet interfaces to create a HSR node or r�…�r‚}rƒ(hHX›The Linux networking subsystem in upstream kernel has added support for HSR driver starting in v3.12 (HSRv0 - IEC 62439-3:2010) and enhanced the same to support HSRv1 (IEC 62439-3:2012) in v4.6. This driver allows user to create an HSR network device with a pair of slave network interfaces (A and B) that are standard Ethernet interfaces. For example on TI's AM572x IDK EVM, there are two Ethernet interfaces (10/100) per each PRU ICSS. The PRU Emac driver available for ICSS PRU Ethernet h/w supports two Ethernet ports. Using ip link command, user will be able to setup a HSR interface on this EVM that pair the two PRU Ethernet interfaces to create a HSR node or hIj}ubhæ)�r„}r…(hHX **DAN-H**hS}r†(hU]hV]hW]hX]h[]uhIj}h_]r‡hhXDAN-Hrˆ…�r‰}rŠ(hHUhIj„ubahQhîubhhX.…�r‹}rŒ(hHX.hIj}ubeubh{)�r�}rŽ(hHXžTI has enhanced the Linux HSR driver and ip link command in iproute2 package to support PRP defined in IEC 62439-3 clause 4. With this change, user will be able to create a Doubly Attached Node with PRP (**DAN-P**) using standard Ethernet interfaces. As in the case of HSR, using ip link command, user will be able to setup a prp interface using two Ethernet interfaces such as the one provided by PRU EMAC driver.hIjnhOjXhQhƒhS}r�(hU]hV]hW]hX]h[]uh]Kxh^hh_]r�(hhXÌTI has enhanced the Linux HSR driver and ip link command in iproute2 package to support PRP defined in IEC 62439-3 clause 4. With this change, user will be able to create a Doubly Attached Node with PRP (r‘…�r’}r“(hHXÌTI has enhanced the Linux HSR driver and ip link command in iproute2 package to support PRP defined in IEC 62439-3 clause 4. With this change, user will be able to create a Doubly Attached Node with PRP (hIj�ubhæ)�r”}r•(hHX **DAN-P**hS}r–(hU]hV]hW]hX]h[]uhIj�h_]r—hhXDAN-Pr˜…�r™}rš(hHUhIj”ubahQhîubhhXÉ) using standard Ethernet interfaces. As in the case of HSR, using ip link command, user will be able to setup a prp interface using two Ethernet interfaces such as the one provided by PRU EMAC driver.r›…�rœ}r�(hHXÉ) using standard Ethernet interfaces. As in the case of HSR, using ip link command, user will be able to setup a prp interface using two Ethernet interfaces such as the one provided by PRU EMAC driver.hIj�ubeubh{)�rž}rŸ(hHXLinux HSR/PRP driver provides a standard Ethernet interface to application layer and hide the details of the redundancy protocol under the driver layer. Linux HSR/PRP driver implements the Link Redundancy Entity (LRE) that is central to implementing redundancy using respective protocol.r hIjnhOjXhQhƒhS}r¡(hU]hV]hW]hX]h[]uh]Kh^hh_]r¢hhXLinux HSR/PRP driver provides a standard Ethernet interface to application layer and hide the details of the redundancy protocol under the driver layer. Linux HSR/PRP driver implements the Link Redundancy Entity (LRE) that is central to implementing redundancy using respective protocol.r£…�r¤}r¥(hHj hIjžubaubh{)�r¦}r§(hHX†HSR LRE functions and L2 routing can be offloaded to the firmware running on the PRU cores of ICSS. The diagram below shows the architecture of an Offloaded HSR/PRP driver. The upper layer driver is existing Linux HSR/PRP driver described in the previous section. The PRU Ethernet driver exports HSR/PRP capabilities in the NetDev feature flags. The green blocks in the Redundancy layer shows the software blocks that gets offloaded to PRUs in ICSS which is shown green as well. The upper layer HSR/PRP driver uses the feature flags exported by the PRU Ethernet driver to disable corresponding functions in its layer. The firmware is a re-use from the TI RTOS implementation that is discussed above. Re-use means the data structures and API should be re-used across both TI RTOS and Linux driver implementations. A common PRU Ethernet driver is developed to support existing EMAC device as well HSR/PRPr¨hIjnhOjXhQhƒhS}r©(hU]hV]hW]hX]h[]uh]K…h^hh_]rªhhX†HSR LRE functions and L2 routing can be offloaded to the firmware running on the PRU cores of ICSS. The diagram below shows the architecture of an Offloaded HSR/PRP driver. The upper layer driver is existing Linux HSR/PRP driver described in the previous section. The PRU Ethernet driver exports HSR/PRP capabilities in the NetDev feature flags. The green blocks in the Redundancy layer shows the software blocks that gets offloaded to PRUs in ICSS which is shown green as well. The upper layer HSR/PRP driver uses the feature flags exported by the PRU Ethernet driver to disable corresponding functions in its layer. The firmware is a re-use from the TI RTOS implementation that is discussed above. Re-use means the data structures and API should be re-used across both TI RTOS and Linux driver implementations. A common PRU Ethernet driver is developed to support existing EMAC device as well HSR/PRPr«…�r¬}r­(hHj¨hIj¦ubaubjP)�r®}r¯(hHX).. Image:: ../images/Hsr-prp-offload.png hIjnhOjXhQjShS}r°(UuriX#linux/../images/Hsr-prp-offload.pngr±hX]hW]hU]hV]jV}r²U*j±sh[]uh]K”h^hh_]ubj/)�r³}r´(hHX'.. _PLSDK_HSR_PRP_id_if_number_mapping:hIjnhOjXhQj2hS}rµ(hX]hW]hU]hV]h[]j4U"plsdk-hsr-prp-id-if-number-mappingr¶uh]Mõh^hh_]ubeubhJ)�r·}r¸(hHUhIjåhOjXj8}r¹h j³shQhRhS}rº(hU]hV]hW]hX]r»(Upru-icss-subsystem-driverr¼j¶eh[]r½(h5h euh]K˜h^hj>}r¾j¶j³sh_]r¿(ha)�rÀ}rÁ(hHXPRU-ICSS Subsystem DriverrÂhIj·hOjXhQhehS}rÃ(hU]hV]hW]hX]h[]uh]K˜h^hh_]rÄhhXPRU-ICSS Subsystem DriverrÅ…�rÆ}rÇ(hHjÂhIjÀubaubh{)�rÈ}rÉ(hHXuPRU-ICSS Subsystem Driver provide a set of functions to client driver such as PRU Ethernet (described in next section) to load and run firmware on a specific core, such as PRU on a PRU-ICSS. On a SoC, there can be 1 or 2 instance of the PRU-ICSS and client driver might want to know which instance it is referring to. For example, PRU Ethernet driver calls pruss_get() to get the instance ID. Also PRU-ICSS and PRU Ethernet driver support sysfs and debugfs files specific to an instance and user might have to know what instance the file refers to. Following mapping is used for the ID based on the SoC and the PRU-ICSS instance.rÊhIj·hOjXhQhƒhS}rË(hU]hV]hW]hX]h[]uh]Kšh^hh_]rÌhhXuPRU-ICSS Subsystem Driver provide a set of functions to client driver such as PRU Ethernet (described in next section) to load and run firmware on a specific core, such as PRU on a PRU-ICSS. On a SoC, there can be 1 or 2 instance of the PRU-ICSS and client driver might want to know which instance it is referring to. For example, PRU Ethernet driver calls pruss_get() to get the instance ID. Also PRU-ICSS and PRU Ethernet driver support sysfs and debugfs files specific to an instance and user might have to know what instance the file refers to. Following mapping is used for the ID based on the SoC and the PRU-ICSS instance.rÍ…�rÎ}rÏ(hHjÊhIjÈubaubjV)�rÐ}rÑ(hHUhIj·hOjXhQjYhS}rÒ(hU]hV]hW]hX]h[]uh]Nh^hh_]rÓj\)�rÔ}rÕ(hHUhS}rÖ(hX]hW]hU]hV]h[]UcolsKuhIjÐh_]r×(ja)�rØ}rÙ(hHUhS}rÚ(hX]hW]hU]hV]h[]UcolwidthKuhIjÔh_]hQjeubja)�rÛ}rÜ(hHUhS}rÝ(hX]hW]hU]hV]h[]UcolwidthKuhIjÔh_]hQjeubja)�rÞ}rß(hHUhS}rà(hX]hW]hU]hV]h[]UcolwidthK uhIjÔh_]hQjeubja)�rá}râ(hHUhS}rã(hX]hW]hU]hV]h[]UcolwidthKuhIjÔh_]hQjeubjo)�rä}rå(hHUhS}ræ(hU]hV]hW]hX]h[]uhIjÔh_]rçjt)�rè}ré(hHUhS}rê(hU]hV]hW]hX]h[]uhIjäh_]rë(jy)�rì}rí(hHUhS}rî(hU]hV]hW]hX]h[]uhIjèh_]rïh{)�rð}rñ(hHXSoCròhIjìhOjXhQhƒhS}ró(hU]hV]hW]hX]h[]uh]K¥h_]rôhhXSoCrõ…�rö}r÷(hHjòhIjðubaubahQj†ubjy)�rø}rù(hHUhS}rú(hU]hV]hW]hX]h[]uhIjèh_]rûh{)�rü}rý(hHXIDrþhIjøhOjXhQhƒhS}rÿ(hU]hV]hW]hX]h[]uh]K¥h_]rhhXIDr…�r}r(hHjþhIjüubaubahQj†ubjy)�r}r(hHUhS}r(hU]hV]hW]hX]h[]uhIjèh_]rh{)�r}r (hHX if numberr hIjhOjXhQhƒhS}r (hU]hV]hW]hX]h[]uh]K¥h_]r hhX if numberr …�r}r(hHj hIjubaubahQj†ubjy)�r}r(hHUhS}r(hU]hV]hW]hX]h[]uhIjèh_]rh{)�r}r(hHXICSS TRM referencerhIjhOjXhQhƒhS}r(hU]hV]hW]hX]h[]uh]K¥h_]rhhXICSS TRM referencer…�r}r(hHjhIjubaubahQj†ubehQj³ubahQj´ubjµ)�r}r(hHUhS}r(hU]hV]hW]hX]h[]uhIjÔh_]r(jt)�r }r!(hHUhS}r"(hU]hV]hW]hX]h[]uhIjh_]r#(jy)�r$}r%(hHUhS}r&(hU]hV]hW]hX]h[]uhIj h_]r'h{)�r(}r)(hHXAM3r*hIj$hOjXhQhƒhS}r+(hU]hV]hW]hX]h[]uh]K§h_]r,hhXAM3r-…�r.}r/(hHj*hIj(ubaubahQj†ubjy)�r0}r1(hHUhS}r2(hU]hV]hW]hX]h[]uhIj h_]r3h{)�r4}r5(hHX0hIj0hOjXhQhƒhS}r6(hU]hV]hW]hX]h[]uh]K§h_]r7hhX0…�r8}r9(hHX0hIj4ubaubahQj†ubjy)�r:}r;(hHUhS}r<(hU]hV]hW]hX]h[]uhIj h_]r=h{)�r>}r?(hHXeth0/1r@hIj:hOjXhQhƒhS}rA(hU]hV]hW]hX]h[]uh]K§h_]rBhhXeth0/1rC…�rD}rE(hHj@hIj>ubaubahQj†ubjy)�rF}rG(hHUhS}rH(hU]hV]hW]hX]h[]uhIj h_]rIh{)�rJ}rK(hHXPRU-ICSSrLhIjFhOjXhQhƒhS}rM(hU]hV]hW]hX]h[]uh]K§h_]rNhhXPRU-ICSSrO…�rP}rQ(hHjLhIjJubaubahQj†ubehQj³ubjt)�rR}rS(hHUhS}rT(hU]hV]hW]hX]h[]uhIjh_]rU(jy)�rV}rW(hHUhS}rX(hU]hV]hW]hX]h[]uhIjRh_]rYh{)�rZ}r[(hHXAM4r\hIjVhOjXhQhƒhS}r](hU]hV]hW]hX]h[]uh]K©h_]r^hhXAM4r_…�r`}ra(hHj\hIjZubaubahQj†ubjy)�rb}rc(hHUhS}rd(hU]hV]hW]hX]h[]uhIjRh_]reh{)�rf}rg(hHX0hIjbhOjXhQhƒhS}rh(hU]hV]hW]hX]h[]uh]K©h_]rihhX0…�rj}rk(hHX0hIjfubaubahQj†ubjy)�rl}rm(hHUhS}rn(hU]hV]hW]hX]h[]uhIjRh_]roh{)�rp}rq(hHXeth1/2rrhIjlhOjXhQhƒhS}rs(hU]hV]hW]hX]h[]uh]K©h_]rthhXeth1/2ru…�rv}rw(hHjrhIjpubaubahQj†ubjy)�rx}ry(hHUhS}rz(hU]hV]hW]hX]h[]uhIjRh_]r{h{)�r|}r}(hHX PRU-ICSS0r~hIjxhOjXhQhƒhS}r(hU]hV]hW]hX]h[]uh]K©h_]r€hhX PRU-ICSS0r�…�r‚}rƒ(hHj~hIj|ubaubahQj†ubehQj³ubjt)�r„}r…(hHUhS}r†(hU]hV]hW]hX]h[]uhIjh_]r‡(jy)�rˆ}r‰(hHUhS}rŠ(hU]hV]hW]hX]h[]uhIj„h_]r‹h{)�rŒ}r�(hHXAM571rŽhIjˆhOjXhQhƒhS}r�(hU]hV]hW]hX]h[]uh]K«h_]r�hhXAM571r‘…�r’}r“(hHjŽhIjŒubaubahQj†ubjy)�r”}r•(hHUhS}r–(hU]hV]hW]hX]h[]uhIj„h_]r—h{)�r˜}r™(hHX1hIj”hOjXhQhƒhS}rš(hU]hV]hW]hX]h[]uh]K«h_]r›hhX1…�rœ}r�(hHX1hIj˜ubaubahQj†ubjy)�rž}rŸ(hHUhS}r (hU]hV]hW]hX]h[]uhIj„h_]r¡h{)�r¢}r£(hHXeth2/3r¤hIjžhOjXhQhƒhS}r¥(hU]hV]hW]hX]h[]uh]K«h_]r¦hhXeth2/3r§…�r¨}r©(hHj¤hIj¢ubaubahQj†ubjy)�rª}r«(hHUhS}r¬(hU]hV]hW]hX]h[]uhIj„h_]r­h{)�r®}r¯(hHX PRU-ICSS1r°hIjªhOjXhQhƒhS}r±(hU]hV]hW]hX]h[]uh]K«h_]r²hhX PRU-ICSS1r³…�r´}rµ(hHj°hIj®ubaubahQj†ubehQj³ubjt)�r¶}r·(hHUhS}r¸(hU]hV]hW]hX]h[]uhIjh_]r¹(jy)�rº}r»(hHUhS}r¼(hU]hV]hW]hX]h[]uhIj¶h_]r½h{)�r¾}r¿(hHXAM571rÀhIjºhOjXhQhƒhS}rÁ(hU]hV]hW]hX]h[]uh]K­h_]rÂhhXAM571rÃ…�rÄ}rÅ(hHjÀhIj¾ubaubahQj†ubjy)�rÆ}rÇ(hHUhS}rÈ(hU]hV]hW]hX]h[]uhIj¶h_]rÉh{)�rÊ}rË(hHX2hIjÆhOjXhQhƒhS}rÌ(hU]hV]hW]hX]h[]uh]K­h_]rÍhhX2…�rÎ}rÏ(hHX2hIjÊubaubahQj†ubjy)�rÐ}rÑ(hHUhS}rÒ(hU]hV]hW]hX]h[]uhIj¶h_]rÓh{)�rÔ}rÕ(hHXeth4/5rÖhIjÐhOjXhQhƒhS}r×(hU]hV]hW]hX]h[]uh]K­h_]rØhhXeth4/5rÙ…�rÚ}rÛ(hHjÖhIjÔubaubahQj†ubjy)�rÜ}rÝ(hHUhS}rÞ(hU]hV]hW]hX]h[]uhIj¶h_]rßh{)�rà}rá(hHX PRU-ICSS2râhIjÜhOjXhQhƒhS}rã(hU]hV]hW]hX]h[]uh]K­h_]rähhX PRU-ICSS2rå…�ræ}rç(hHjâhIjàubaubahQj†ubehQj³ubjt)�rè}ré(hHUhS}rê(hU]hV]hW]hX]h[]uhIjh_]rë(jy)�rì}rí(hHUhS}rî(hU]hV]hW]hX]h[]uhIjèh_]rïh{)�rð}rñ(hHXAM572/4ròhIjìhOjXhQhƒhS}ró(hU]hV]hW]hX]h[]uh]K¯h_]rôhhXAM572/4rõ…�rö}r÷(hHjòhIjðubaubahQj†ubjy)�rø}rù(hHUhS}rú(hU]hV]hW]hX]h[]uhIjèh_]rûh{)�rü}rý(hHX2hIjøhOjXhQhƒhS}rþ(hU]hV]hW]hX]h[]uh]K¯h_]rÿhhX2…�r}r(hHX2hIjüubaubahQj†ubjy)�r}r(hHUhS}r(hU]hV]hW]hX]h[]uhIjèh_]rh{)�r}r(hHXeth2/3rhIjhOjXhQhƒhS}r (hU]hV]hW]hX]h[]uh]K¯h_]r hhXeth2/3r …�r }r (hHjhIjubaubahQj†ubjy)�r}r(hHUhS}r(hU]hV]hW]hX]h[]uhIjèh_]rh{)�r}r(hHX PRU-ICSS2rhIjhOjXhQhƒhS}r(hU]hV]hW]hX]h[]uh]K¯h_]rhhX PRU-ICSS2r…�r}r(hHjhIjubaubahQj†ubehQj³ubjt)�r}r(hHUhS}r(hU]hV]hW]hX]h[]uhIjh_]r(jy)�r}r(hHUhS}r (hU]hV]hW]hX]h[]uhIjh_]r!h{)�r"}r#(hHXK2Gr$hIjhOjXhQhƒhS}r%(hU]hV]hW]hX]h[]uh]K±h_]r&hhXK2Gr'…�r(}r)(hHj$hIj"ubaubahQj†ubjy)�r*}r+(hHUhS}r,(hU]hV]hW]hX]h[]uhIjh_]r-h{)�r.}r/(hHX0hIj*hOjXhQhƒhS}r0(hU]hV]hW]hX]h[]uh]K±h_]r1hhX0…�r2}r3(hHX0hIj.ubaubahQj†ubjy)�r4}r5(hHUhS}r6(hU]hV]hW]hX]h[]uhIjh_]r7h{)�r8}r9(hHXeth1/2r:hIj4hOjXhQhƒhS}r;(hU]hV]hW]hX]h[]uh]K±h_]r<hhXeth1/2r=…�r>}r?(hHj:hIj8ubaubahQj†ubjy)�r@}rA(hHUhS}rB(hU]hV]hW]hX]h[]uhIjh_]rCh{)�rD}rE(hHX PRU-ICSS0rFhIj@hOjXhQhƒhS}rG(hU]hV]hW]hX]h[]uh]K±h_]rHhhX PRU-ICSS0rI…�rJ}rK(hHjFhIjDubaubahQj†ubehQj³ubjt)�rL}rM(hHUhS}rN(hU]hV]hW]hX]h[]uhIjh_]rO(jy)�rP}rQ(hHUhS}rR(hU]hV]hW]hX]h[]uhIjLh_]rSh{)�rT}rU(hHXK2GrVhIjPhOjXhQhƒhS}rW(hU]hV]hW]hX]h[]uh]K³h_]rXhhXK2GrY…�rZ}r[(hHjVhIjTubaubahQj†ubjy)�r\}r](hHUhS}r^(hU]hV]hW]hX]h[]uhIjLh_]r_h{)�r`}ra(hHX1hIj\hOjXhQhƒhS}rb(hU]hV]hW]hX]h[]uh]K³h_]rchhX1…�rd}re(hHX1hIj`ubaubahQj†ubjy)�rf}rg(hHUhS}rh(hU]hV]hW]hX]h[]uhIjLh_]rih{)�rj}rk(hHXeth3/4rlhIjfhOjXhQhƒhS}rm(hU]hV]hW]hX]h[]uh]K³h_]rnhhXeth3/4ro…�rp}rq(hHjlhIjjubaubahQj†ubjy)�rr}rs(hHUhS}rt(hU]hV]hW]hX]h[]uhIjLh_]ruh{)�rv}rw(hHX PRU-ICSS1rxhIjrhOjXhQhƒhS}ry(hU]hV]hW]hX]h[]uh]K³h_]rzhhX PRU-ICSS1r{…�r|}r}(hHjxhIjvubaubahQj†ubehQj³ubehQj,ubehQj-ubaubh{)�r~}r(hHX°In the following section, the PRU-ICSS ID is used in the debugfs or sysfs file path and the same can be obtained from the table above to know which PRU-ICSS the file refers to.r€hIj·hOjXhQhƒhS}r�(hU]hV]hW]hX]h[]uh]K¶h^hh_]r‚hhX°In the following section, the PRU-ICSS ID is used in the debugfs or sysfs file path and the same can be obtained from the table above to know which PRU-ICSS the file refers to.rƒ…�r„}r…(hHj€hIj~ubaubh{)�r†}r‡(hHXvYou can also check which PRU-ICSS an ethernet interface belongs to via command line, e.g. eth2 on different platforms:rˆhIj·hOjXhQhƒhS}r‰(hU]hV]hW]hX]h[]uh]Kºh^hh_]rŠhhXvYou can also check which PRU-ICSS an ethernet interface belongs to via command line, e.g. eth2 on different platforms:r‹…�rŒ}r�(hHjˆhIj†ubaubh{)�rŽ}r�(hHX AM571x: ::hIj·hOjXhQhƒhS}r�(hU]hV]hW]hX]h[]uh]K½h^hh_]r‘hhXAM571x:r’…�r“}r”(hHXAM571x:hIjŽubaubcdocutils.nodes literal_block r•)�r–}r—(hHX‘root@am57xx-evm:~# ls -l /sys/class/net/eth2 | grep device lrwxrwxrwx 1 root root 0 Jun 10 11:29 device -> ../../../pruss1_ethhIj·hOjXhQU literal_blockr˜hS}r™(h­h®hX]hW]hU]hV]h[]uh]M h^hh_]ršhhX‘root@am57xx-evm:~# ls -l /sys/class/net/eth2 | grep device lrwxrwxrwx 1 root root 0 Jun 10 11:29 device -> ../../../pruss1_ethr›…�rœ}r�(hHUhIj–ubaubh{)�rž}rŸ(hHX AM572x: ::hIj·hOjXhQhƒhS}r (hU]hV]hW]hX]h[]uh]KÃh^hh_]r¡hhXAM572x:r¢…�r£}r¤(hHXAM572x:hIjžubaubj•)�r¥}r¦(hHX‘root@am57xx-evm:~# ls -l /sys/class/net/eth2 | grep device lrwxrwxrwx 1 root root 0 Jun 10 11:29 device -> ../../../pruss2_ethhIj·hOjXhQj˜hS}r§(h­h®hX]hW]hU]hV]h[]uh]M&h^hh_]r¨hhX‘root@am57xx-evm:~# ls -l /sys/class/net/eth2 | grep device lrwxrwxrwx 1 root root 0 Jun 10 11:29 device -> ../../../pruss2_ethr©…�rª}r«(hHUhIj¥ubaubeubhJ)�r¬}r­(hHUhIjåhOjXhQhRhS}r®(hU]hV]hW]hX]r¯U pru-ethernet-driver-emac-hsr-prpr°ah[]r±hauh]KÊh^hh_]r²(ha)�r³}r´(hHX"PRU Ethernet Driver (EMAC/HSR/PRP)rµhIj¬hOjXhQhehS}r¶(hU]hV]hW]hX]h[]uh]KÊh^hh_]r·hhX"PRU Ethernet Driver (EMAC/HSR/PRP)r¸…�r¹}rº(hHjµhIj³ubaubh{)�r»}r¼(hHX_Starting from Processor SDK 04.00.00 release, the PRU Ethernet driver supports HSR/PRP firmware offload. More specifically, based on a module parameter configured at boot time, the PRU Ethernet driver loads either a PRU EMAC firmware, PRU HSR firmware or PRU PRP firmware. The first case (EMAC) is the non-offload case, while the latter 2 cases are the firmware offload cases. When a HSR/PRP firmware is loaded, the PRU Ethernet driver will do proper firmware configurations and notify the Linux HSR/PRP driver stack that offload has been enabled. From then on, LRE functionality is carried out in firmware.r½hIj¬hOjXhQhƒhS}r¾(hU]hV]hW]hX]h[]uh]KÌh^hh_]r¿hhX_Starting from Processor SDK 04.00.00 release, the PRU Ethernet driver supports HSR/PRP firmware offload. More specifically, based on a module parameter configured at boot time, the PRU Ethernet driver loads either a PRU EMAC firmware, PRU HSR firmware or PRU PRP firmware. The first case (EMAC) is the non-offload case, while the latter 2 cases are the firmware offload cases. When a HSR/PRP firmware is loaded, the PRU Ethernet driver will do proper firmware configurations and notify the Linux HSR/PRP driver stack that offload has been enabled. From then on, LRE functionality is carried out in firmware.rÀ…�rÁ}rÂ(hHj½hIj»ubaubh{)�rÃ}rÄ(hHX»Notice that, from the user point of view, other than providing a module parameter to specify which firmware to load, all of the above mentioned driver behavior is transparent to the user.rÅhIj¬hOjXhQhƒhS}rÆ(hU]hV]hW]hX]h[]uh]KÖh^hh_]rÇhhX»Notice that, from the user point of view, other than providing a module parameter to specify which firmware to load, all of the above mentioned driver behavior is transparent to the user.rÈ…�rÉ}rÊ(hHjÅhIjÃubaubcdocutils.nodes note rË)�rÌ}rÍ(hHXòFor all discussion and examples shown, AM57xx device is used as example, but different devices will use different ports. Please see :ref:`PLSDK_HSR_PRP_id_if_number_mapping` for interface number and PRU-ICSS ID information for different SoCs.hIj¬hOjXhQUnoterÎhS}rÏ(hU]hV]hW]hX]h[]uh]Nh^hh_]rÐh{)�rÑ}rÒ(hHXòFor all discussion and examples shown, AM57xx device is used as example, but different devices will use different ports. Please see :ref:`PLSDK_HSR_PRP_id_if_number_mapping` for interface number and PRU-ICSS ID information for different SoCs.hIjÌhOjXhQhƒhS}rÓ(hU]hV]hW]hX]h[]uh]KÚh_]rÔ(hhX„For all discussion and examples shown, AM57xx device is used as example, but different devices will use different ports. Please see rÕ…�rÖ}r×(hHX„For all discussion and examples shown, AM57xx device is used as example, but different devices will use different ports. Please see hIjÑubcsphinx.addnodes pending_xref rØ)�rÙ}rÚ(hHX):ref:`PLSDK_HSR_PRP_id_if_number_mapping`rÛhIjÑhOjXhQU pending_xrefrÜhS}rÝ(UreftypeXrefUrefwarnrÞˆU reftargetrßX"plsdk_hsr_prp_id_if_number_mappingU refdomainXstdràhX]hW]U refexplicit‰hU]hV]h[]UrefdocráX"linux/Industrial_Protocols_HSR_PRPrâuh]KÚh_]rãcdocutils.nodes inline rä)�rå}ræ(hHjÛhS}rç(hU]hV]rè(UxrefréjàXstd-refrêehW]hX]h[]uhIjÙh_]rëhhX"PLSDK_HSR_PRP_id_if_number_mappingrì…�rí}rî(hHUhIjåubahQUinlinerïubaubhhXE for interface number and PRU-ICSS ID information for different SoCs.rð…�rñ}rò(hHXE for interface number and PRU-ICSS ID information for different SoCs.hIjÑubeubaubh{)�ró}rô(hHX{As of Processor SDK 5.1.x, the driver supports 2 instances of HSR/PRP one on each of PRU-ICSS on AM5xxx as per table below.rõhIj¬hOjXhQhƒhS}rö(hU]hV]hW]hX]h[]uh]Kßh^hh_]r÷hhX{As of Processor SDK 5.1.x, the driver supports 2 instances of HSR/PRP one on each of PRU-ICSS on AM5xxx as per table below.rø…�rù}rú(hHjõhIjóubaubcdocutils.nodes block_quote rû)�rü}rý(hHUhIj¬hOjXhQU block_quoterþhS}rÿ(hU]hV]hW]hX]h[]uh]Nh^hh_]rjV)�r}r(hHUhS}r(hU]hV]hW]hX]h[]uhIjüh_]rj\)�r}r(hHUhS}r(hX]hW]hU]hV]h[]UcolsKuhIjh_]r(ja)�r }r (hHUhS}r (hX]hW]hU]hV]h[]UcolwidthK uhIjh_]hQjeubja)�r }r (hHUhS}r(hX]hW]hU]hV]h[]UcolwidthK uhIjh_]hQjeubjo)�r}r(hHUhS}r(hU]hV]hW]hX]h[]uhIjh_]rjt)�r}r(hHUhS}r(hU]hV]hW]hX]h[]uhIjh_]r(jy)�r}r(hHUhS}r(hU]hV]hW]hX]h[]uhIjh_]rh{)�r}r(hHX PRU-ICSS1rhIjhOjXhQhƒhS}r(hU]hV]hW]hX]h[]uh]Kãh_]rhhX PRU-ICSS1r …�r!}r"(hHjhIjubaubahQj†ubjy)�r#}r$(hHUhS}r%(hU]hV]hW]hX]h[]uhIjh_]r&h{)�r'}r((hHX PRU-ICSS2r)hIj#hOjXhQhƒhS}r*(hU]hV]hW]hX]h[]uh]Kãh_]r+hhX PRU-ICSS2r,…�r-}r.(hHj)hIj'ubaubahQj†ubehQj³ubahQj´ubjµ)�r/}r0(hHUhS}r1(hU]hV]hW]hX]h[]uhIjh_]r2(jt)�r3}r4(hHUhS}r5(hU]hV]hW]hX]h[]uhIj/h_]r6(jy)�r7}r8(hHUhS}r9(hU]hV]hW]hX]h[]uhIj3h_]r:h{)�r;}r<(hHXHSRr=hIj7hOjXhQhƒhS}r>(hU]hV]hW]hX]h[]uh]Kåh_]r?hhXHSRr@…�rA}rB(hHj=hIj;ubaubahQj†ubjy)�rC}rD(hHUhS}rE(hU]hV]hW]hX]h[]uhIj3h_]rFh{)�rG}rH(hHXHSRrIhIjChOjXhQhƒhS}rJ(hU]hV]hW]hX]h[]uh]Kåh_]rKhhXHSRrL…�rM}rN(hHjIhIjGubaubahQj†ubehQj³ubjt)�rO}rP(hHUhS}rQ(hU]hV]hW]hX]h[]uhIj/h_]rR(jy)�rS}rT(hHUhS}rU(hU]hV]hW]hX]h[]uhIjOh_]rVh{)�rW}rX(hHXHSRrYhIjShOjXhQhƒhS}rZ(hU]hV]hW]hX]h[]uh]Kçh_]r[hhXHSRr\…�r]}r^(hHjYhIjWubaubahQj†ubjy)�r_}r`(hHUhS}ra(hU]hV]hW]hX]h[]uhIjOh_]rbh{)�rc}rd(hHXPRPrehIj_hOjXhQhƒhS}rf(hU]hV]hW]hX]h[]uh]Kçh_]rghhXPRPrh…�ri}rj(hHjehIjcubaubahQj†ubehQj³ubjt)�rk}rl(hHUhS}rm(hU]hV]hW]hX]h[]uhIj/h_]rn(jy)�ro}rp(hHUhS}rq(hU]hV]hW]hX]h[]uhIjkh_]rrh{)�rs}rt(hHXPRPruhIjohOjXhQhƒhS}rv(hU]hV]hW]hX]h[]uh]Kéh_]rwhhXPRPrx…�ry}rz(hHjuhIjsubaubahQj†ubjy)�r{}r|(hHUhS}r}(hU]hV]hW]hX]h[]uhIjkh_]r~h{)�r}r€(hHXPRPr�hIj{hOjXhQhƒhS}r‚(hU]hV]hW]hX]h[]uh]Kéh_]rƒhhXPRPr„…�r…}r†(hHj�hIjubaubahQj†ubehQj³ubjt)�r‡}rˆ(hHUhS}r‰(hU]hV]hW]hX]h[]uhIj/h_]rŠ(jy)�r‹}rŒ(hHUhS}r�(hU]hV]hW]hX]h[]uhIj‡h_]rŽh{)�r�}r�(hHXPRPr‘hIj‹hOjXhQhƒhS}r’(hU]hV]hW]hX]h[]uh]Këh_]r“hhXPRPr”…�r•}r–(hHj‘hIj�ubaubahQj†ubjy)�r—}r˜(hHUhS}r™(hU]hV]hW]hX]h[]uhIj‡h_]ršh{)�r›}rœ(hHXHSRr�hIj—hOjXhQhƒhS}rž(hU]hV]hW]hX]h[]uh]Këh_]rŸhhXHSRr …�r¡}r¢(hHj�hIj›ubaubahQj†ubehQj³ubehQj,ubehQj-ubahQjYubaubhJ)�r£}r¤(hHUhIj¬hOjXhQhRhS}r¥(hU]hV]hW]hX]r¦U%queue-usage-and-vlan-pcp-to-queue-mapr§ah[]r¨hauh]Kïh^hh_]r©(ha)�rª}r«(hHX%Queue Usage and VLAN PCP to Queue Mapr¬hIj£hOjXhQhehS}r­(hU]hV]hW]hX]h[]uh]Kïh^hh_]r®hhX%Queue Usage and VLAN PCP to Queue Mapr¯…�r°}r±(hHj¬hIjªubaubh{)�r²}r³(hHXïAt the Ingress, there are two queues available for queueing the frames coming from each port or PRU to Host and two queues available for packets from Host to each PRU. At the Egress, there are additionally two more queues used for forward traffic from PRU1 to PRU0 and vice-versa. PRUETH driver configures the PCP to Queue MAP in Shared RAM which is used by firmware to decide which queue to pick to enqueue frames towards Host or other PRU. Priority queues are assigned based on the PCP value in VLAN tag of an Ethernet frame. Untagged frame is treated like PCP 0. Here is the mapping value configured by driver in 4 bytes starting at offset QUEUE_2_PCP_MAP_OFFSET (defined in hsr_prp_firmware.h). Same mapping is used for Ingress and Egress traffic.r´hIj£hOjXhQhƒhS}rµ(hU]hV]hW]hX]h[]uh]Kñh^hh_]r¶hhXïAt the Ingress, there are two queues available for queueing the frames coming from each port or PRU to Host and two queues available for packets from Host to each PRU. At the Egress, there are additionally two more queues used for forward traffic from PRU1 to PRU0 and vice-versa. PRUETH driver configures the PCP to Queue MAP in Shared RAM which is used by firmware to decide which queue to pick to enqueue frames towards Host or other PRU. Priority queues are assigned based on the PCP value in VLAN tag of an Ethernet frame. Untagged frame is treated like PCP 0. Here is the mapping value configured by driver in 4 bytes starting at offset QUEUE_2_PCP_MAP_OFFSET (defined in hsr_prp_firmware.h). Same mapping is used for Ingress and Egress traffic.r·…�r¸}r¹(hHj´hIj²ubaubh{)�rº}r»(hHXGThe convention is that higher queue value corresponds to lower priorityr¼hIj£hOjXhQhƒhS}r½(hU]hV]hW]hX]h[]uh]Kýh^hh_]r¾hhXGThe convention is that higher queue value corresponds to lower priorityr¿…�rÀ}rÁ(hHj¼hIjºubaubh{)�rÂ}rÃ(hHX**For HSR/PRP Ethernet types**rÄhIj£hOjXhQhƒhS}rÅ(hU]hV]hW]hX]h[]uh]Kÿh^hh_]rÆhæ)�rÇ}rÈ(hHjÄhS}rÉ(hU]hV]hW]hX]h[]uhIjÂh_]rÊhhXFor HSR/PRP Ethernet typesrË…�rÌ}rÍ(hHUhIjÇubahQhîubaubhÔ)�rÎ}rÏ(hHUhIj£hOjXhQh×hS}rÐ(hÙX-hX]hW]hU]hV]h[]uh]Mh^hh_]rÑhÛ)�rÒ}rÓ(hHXAt ingress to Host hIjÎhOjXhQhÞhS}rÔ(hU]hV]hW]hX]h[]uh]Nh^hh_]rÕh{)�rÖ}r×(hHXAt ingress to HostrØhIjÒhOjXhQhƒhS}rÙ(hU]hV]hW]hX]h[]uh]Mh_]rÚhhXAt ingress to HostrÛ…�rÜ}rÝ(hHjØhIjÖubaubaubaubj•)�rÞ}rß(hHX«byte 0 - To host from PRU 1, PCP 0-3 => Q3 byte 1 - To host from PRU 1, PCP 4-7 => Q2 byte 2 - To host from PRU 0, PCP 0-3 => Q1 byte 3 - To host from PRU 0, PCP 4-7 => Q0hIj£hOjXhQj˜hS}rà(h­h®hX]hW]hU]hV]h[]uh]Meh^hh_]ráhhX«byte 0 - To host from PRU 1, PCP 0-3 => Q3 byte 1 - To host from PRU 1, PCP 4-7 => Q2 byte 2 - To host from PRU 0, PCP 0-3 => Q1 byte 3 - To host from PRU 0, PCP 4-7 => Q0râ…�rã}rä(hHUhIjÞubaubh{)�rå}ræ(hHX¥At the ingress, firmware inspect the PCP value in the incoming Ethernet frame's VLAN tag and choose a priority queue to enqueue the frame based on the above mapping.rçhIj£hOjXhQhƒhS}rè(hU]hV]hW]hX]h[]uh]M h^hh_]réhhX¥At the ingress, firmware inspect the PCP value in the incoming Ethernet frame's VLAN tag and choose a priority queue to enqueue the frame based on the above mapping.rê…�rë}rì(hHjçhIjåubaubhÔ)�rí}rî(hHUhIj£hOjXhQh×hS}rï(hÙX-hX]hW]hU]hV]h[]uh]Mh^hh_]rðhÛ)�rñ}rò(hHX$At egress from host to wire/network hIjíhOjXhQhÞhS}ró(hU]hV]hW]hX]h[]uh]Nh^hh_]rôh{)�rõ}rö(hHX#At egress from host to wire/networkr÷hIjñhOjXhQhƒhS}rø(hU]hV]hW]hX]h[]uh]Mh_]rùhhX#At egress from host to wire/networkrú…�rû}rü(hHj÷hIjõubaubaubaubj•)�rý}rþ(hHX%PRU0/PRU1 --------- byte 0 - from Host to PRU, PCP 0-3 => Q3 byte 1 - from Host to PRU, PCP 4-7 => Q2 PRU0 ----- byte 2 - from PRU1 to PRU0, PCP 0-3 => Q1 byte 3 - from PRU1 to PRU0, PCP 4-7 => Q0 PRU1 ----- byte 2 - from PRU0 to PRU1, PCP 0-3 => Q1 byte 3 - from PRU0 to PRU1, PCP 4-7 => Q0hIj£hOjXhQj˜hS}rÿ(h­h®hX]hW]hU]hV]h[]uh]Mrh^hh_]rhhX%PRU0/PRU1 --------- byte 0 - from Host to PRU, PCP 0-3 => Q3 byte 1 - from Host to PRU, PCP 4-7 => Q2 PRU0 ----- byte 2 - from PRU1 to PRU0, PCP 0-3 => Q1 byte 3 - from PRU1 to PRU0, PCP 4-7 => Q0 PRU1 ----- byte 2 - from PRU0 to PRU1, PCP 0-3 => Q1 byte 3 - from PRU0 to PRU1, PCP 4-7 => Q0r…�r}r(hHUhIjýubaubh{)�r}r(hHX�Driver choose the priority queue for egress transmission based on the PCP value of the Ethernet frame received from the upper layer. Firmware sends the frames first from Q0 and Q2 in a round robin fashion. Once these queues are drained, it then sends from the next higher queues Q1 and Q3 again in a round robin fashion. At the egress, Q0/Q1 are port queues and Q2/Q3 are host queues.rhIj£hOjXhQhƒhS}r(hU]hV]hW]hX]h[]uh]M!h^hh_]rhhX�Driver choose the priority queue for egress transmission based on the PCP value of the Ethernet frame received from the upper layer. Firmware sends the frames first from Q0 and Q2 in a round robin fashion. Once these queues are drained, it then sends from the next higher queues Q1 and Q3 again in a round robin fashion. At the egress, Q0/Q1 are port queues and Q2/Q3 are host queues.r …�r }r (hHjhIjubaubh{)�r }r (hHX**For Dual EMAC Ethernet type**rhIj£hOjXhQhƒhS}r(hU]hV]hW]hX]h[]uh]M(h^hh_]rhæ)�r}r(hHjhS}r(hU]hV]hW]hX]h[]uhIj h_]rhhXFor Dual EMAC Ethernet typer…�r}r(hHUhIjubahQhîubaubh{)�r}r(hHX5In Dual EMAC case, mapping is hard coded in firmware.rhIj£hOjXhQhƒhS}r(hU]hV]hW]hX]h[]uh]M*h^hh_]rhhX5In Dual EMAC case, mapping is hard coded in firmware.r…�r}r(hHjhIjubaubhÔ)�r }r!(hHUhIj£hOjXhQh×hS}r"(hÙX-hX]hW]hU]hV]h[]uh]M,h^hh_]r#hÛ)�r$}r%(hHXAt ingress to Host hIj hOjXhQhÞhS}r&(hU]hV]hW]hX]h[]uh]Nh^hh_]r'h{)�r(}r)(hHXAt ingress to Hostr*hIj$hOjXhQhƒhS}r+(hU]hV]hW]hX]h[]uh]M,h_]r,hhXAt ingress to Hostr-…�r.}r/(hHj*hIj(ubaubaubaubj•)�r0}r1(hHX„From PRU0 to Host, PCP 0-3 => Q1 From PRU0 to Host, PCP 4-7 => Q0 From PRU1 to Host, PCP 0-3 => Q3 From PRU1 to Host, PCP 4-7 => Q2hIj£hOjXhQj˜hS}r2(h­h®hX]hW]hU]hV]h[]uh]M�h^hh_]r3hhX„From PRU0 to Host, PCP 0-3 => Q1 From PRU0 to Host, PCP 4-7 => Q0 From PRU1 to Host, PCP 0-3 => Q3 From PRU1 to Host, PCP 4-7 => Q2r4…�r5}r6(hHUhIj0ubaubhÔ)�r7}r8(hHUhIj£hOjXhQh×hS}r9(hÙX-hX]hW]hU]hV]h[]uh]M6h^hh_]r:hÛ)�r;}r<(hHX$At egress from host to wire/network hIj7hOjXhQhÞhS}r=(hU]hV]hW]hX]h[]uh]Nh^hh_]r>h{)�r?}r@(hHX#At egress from host to wire/networkrAhIj;hOjXhQhƒhS}rB(hU]hV]hW]hX]h[]uh]M6h_]rChhX#At egress from host to wire/networkrD…�rE}rF(hHjAhIj?ubaubaubaubj•)�rG}rH(hHX®PRU0/PRU1 -- --------- From Host to PRU0/PRU1, PCP 0-1 => Q3 From Host to PRU0/PRU1, PCP 2-3 => Q2 From Host to PRU0/PRU1, PCP 4-5 => Q1 From Host to PRU0/PRU1, PCP 6-7 => Q0hIj£hOjXhQj˜hS}rI(h­h®hX]hW]hU]hV]h[]uh]Mšh^hh_]rJhhX®PRU0/PRU1 -- --------- From Host to PRU0/PRU1, PCP 0-1 => Q3 From Host to PRU0/PRU1, PCP 2-3 => Q2 From Host to PRU0/PRU1, PCP 4-5 => Q1 From Host to PRU0/PRU1, PCP 6-7 => Q0rK…�rL}rM(hHUhIjGubaubh{)�rN}rO(hHX_Firmware sends the frames first from Q1, and then from the next higher queue (Q2) and so forth.rPhIj£hOjXhQhƒhS}rQ(hU]hV]hW]hX]h[]uh]MAh^hh_]rRhhX_Firmware sends the frames first from Q1, and then from the next higher queue (Q2) and so forth.rS…�rT}rU(hHjPhIjNubaubh{)�rV}rW(hHXèFor all ethernet types, at the Ingress, two separate irq handlers are assigned to each port to process the packets. Driver handler first process packets from the high priority queue followed by packets from the lower priority queue.rXhIj£hOjXhQhƒhS}rY(hU]hV]hW]hX]h[]uh]MDh^hh_]rZhhXèFor all ethernet types, at the Ingress, two separate irq handlers are assigned to each port to process the packets. Driver handler first process packets from the high priority queue followed by packets from the lower priority queue.r[…�r\}r](hHjXhIjVubaubeubhJ)�r^}r_(hHUhIj¬hOjXhQhRhS}r`(hU]hV]hW]hX]raU!changing-protocol-at-pru-ethernetrbah[]rch+auh]MJh^hh_]rd(ha)�re}rf(hHX!Changing protocol at PRU EthernetrghIj^hOjXhQhehS}rh(hU]hV]hW]hX]h[]uh]MJh^hh_]rihhX!Changing protocol at PRU Ethernetrj…�rk}rl(hHjghIjeubaubh{)�rm}rn(hHXJPRU Ethernet driver supports multiple protocols based on the firmware loaded on ICSS PRU. In Processor SDK 04.00.00, a capability was added to change the protocol running on the PRU at boot time through bootargs. This is described at :ref:`PLSDK_HSR_PRP_Testing_Firmware_Offload`. Starting Processor SDK 04.01.00, The driver can be configured to switch the protocol while the board is powered up and running Linux kernel. By default, the PRU Ethernet driver is probed to be in the EMAC mode and EMAC firmware is loaded on to the PRU unless user set the pruss2\_ethtype to run HSR (1) or PRP (2). Two feature names are added to help offload HSR or PRP in the PRU Ethernet driver :- hsr-rx-offload and prp-rx-offload. PRU Firmware essentially offload the rx side processing of LRE, such as duplicate detection and drop, node table update, stats update etc. To reflect the same, the features are named with a rx-offload suffx to the protocol name. Ethtool command has an option -K to set or clear the feature in a network device. So this flag can be set or reset rx offload feature in the PRU Ethernet device. As the device may be hooked up to a upper HSR/PRP network device, user is expected to delete the hsr or prp interface before changing the flag at the PRU Ethernet device. General procedure to change protocol at PRU Ethernet device is as follows:-hIj^hOjXhQhƒhS}ro(hU]hV]hW]hX]h[]uh]MLh^hh_]rp(hhXêPRU Ethernet driver supports multiple protocols based on the firmware loaded on ICSS PRU. In Processor SDK 04.00.00, a capability was added to change the protocol running on the PRU at boot time through bootargs. This is described at rq…�rr}rs(hHXêPRU Ethernet driver supports multiple protocols based on the firmware loaded on ICSS PRU. In Processor SDK 04.00.00, a capability was added to change the protocol running on the PRU at boot time through bootargs. This is described at hIjmubjØ)�rt}ru(hHX-:ref:`PLSDK_HSR_PRP_Testing_Firmware_Offload`rvhIjmhOjXhQjÜhS}rw(UreftypeXrefjÞˆjßX&plsdk_hsr_prp_testing_firmware_offloadU refdomainXstdrxhX]hW]U refexplicit‰hU]hV]h[]jájâuh]MLh_]ryjä)�rz}r{(hHjvhS}r|(hU]hV]r}(jéjxXstd-refr~ehW]hX]h[]uhIjth_]rhhX&PLSDK_HSR_PRP_Testing_Firmware_Offloadr€…�r�}r‚(hHUhIjzubahQjïubaubhhX2. Starting Processor SDK 04.01.00, The driver can be configured to switch the protocol while the board is powered up and running Linux kernel. By default, the PRU Ethernet driver is probed to be in the EMAC mode and EMAC firmware is loaded on to the PRU unless user set the pruss2_ethtype to run HSR (1) or PRP (2). Two feature names are added to help offload HSR or PRP in the PRU Ethernet driver :- hsr-rx-offload and prp-rx-offload. PRU Firmware essentially offload the rx side processing of LRE, such as duplicate detection and drop, node table update, stats update etc. To reflect the same, the features are named with a rx-offload suffx to the protocol name. Ethtool command has an option -K to set or clear the feature in a network device. So this flag can be set or reset rx offload feature in the PRU Ethernet device. As the device may be hooked up to a upper HSR/PRP network device, user is expected to delete the hsr or prp interface before changing the flag at the PRU Ethernet device. General procedure to change protocol at PRU Ethernet device is as follows:-rƒ…�r„}r…(hHX3. Starting Processor SDK 04.01.00, The driver can be configured to switch the protocol while the board is powered up and running Linux kernel. By default, the PRU Ethernet driver is probed to be in the EMAC mode and EMAC firmware is loaded on to the PRU unless user set the pruss2\_ethtype to run HSR (1) or PRP (2). Two feature names are added to help offload HSR or PRP in the PRU Ethernet driver :- hsr-rx-offload and prp-rx-offload. PRU Firmware essentially offload the rx side processing of LRE, such as duplicate detection and drop, node table update, stats update etc. To reflect the same, the features are named with a rx-offload suffx to the protocol name. Ethtool command has an option -K to set or clear the feature in a network device. So this flag can be set or reset rx offload feature in the PRU Ethernet device. As the device may be hooked up to a upper HSR/PRP network device, user is expected to delete the hsr or prp interface before changing the flag at the PRU Ethernet device. General procedure to change protocol at PRU Ethernet device is as follows:-hIjmubeubh{)�r†}r‡(hHX�Below assumes that hsr or prp interface using the PRU Ethernet devices is currently deleted. Here are the steps at a high level:-rˆhIj^hOjXhQhƒhS}r‰(hU]hV]hW]hX]h[]uh]Mah^hh_]rŠhhX�Below assumes that hsr or prp interface using the PRU Ethernet devices is currently deleted. Here are the steps at a high level:-r‹…�rŒ}r�(hHjˆhIj†ubaubh{)�rŽ}r�(hHXt1. Bring down the two PRU Ethernet interfaces using ifconfig and unassign the ip address using ifconfig. For exampler�hIj^hOjXhQhƒhS}r‘(hU]hV]hW]hX]h[]uh]Mdh^hh_]r’hhXt1. Bring down the two PRU Ethernet interfaces using ifconfig and unassign the ip address using ifconfig. For exampler“…�r”}r•(hHj�hIjŽubaubj•)�r–}r—(hHX5ifconfig eth2 down 0.0.0.0 ifconfig eth3 down 0.0.0.0hIj^hOjXhQj˜hS}r˜(h­h®hX]hW]hU]hV]h[]uh]MÉh^hh_]r™hhX5ifconfig eth2 down 0.0.0.0 ifconfig eth3 down 0.0.0.0rš…�r›}rœ(hHUhIj–ubaubh{)�r�}rž(hHXÜ2. If the PRU Ethernet device is currently running HSR or PRP offload feature, the same has to be disabled before switching to EMAC or another protocol using ethtool -K option. For example if HSR is currently running, dorŸhIj^hOjXhQhƒhS}r (hU]hV]hW]hX]h[]uh]Mlh^hh_]r¡hhXÜ2. If the PRU Ethernet device is currently running HSR or PRP offload feature, the same has to be disabled before switching to EMAC or another protocol using ethtool -K option. For example if HSR is currently running, dor¢…�r£}r¤(hHjŸhIj�ubaubj•)�r¥}r¦(hHXEethtool -K eth2 hsr-rx-offload off ethtool -K eth3 hsr-rx-offload offhIj^hOjXhQj˜hS}r§(h­h®hX]hW]hU]hV]h[]uh]MÓh^hh_]r¨hhXEethtool -K eth2 hsr-rx-offload off ethtool -K eth3 hsr-rx-offload offr©…�rª}r«(hHUhIj¥ubaubh{)�r¬}r­(hHX)Similarly if PRP is currently running, dor®hIj^hOjXhQhƒhS}r¯(hU]hV]hW]hX]h[]uh]Mvh^hh_]r°hhX)Similarly if PRP is currently running, dor±…�r²}r³(hHj®hIj¬ubaubj•)�r´}rµ(hHXEethtool -K eth2 prp-rx-offload off ethtool -K eth3 prp-rx-offload offhIj^hOjXhQj˜hS}r¶(h­h®hX]hW]hU]hV]h[]uh]MÚh^hh_]r·hhXEethtool -K eth2 prp-rx-offload off ethtool -K eth3 prp-rx-offload offr¸…�r¹}rº(hHUhIj´ubaubh{)�r»}r¼(hHXX3. If user would like to offload HSR, enable the feature hsr-rx-offload on both devices.r½hIj^hOjXhQhƒhS}r¾(hU]hV]hW]hX]h[]uh]M}h^hh_]r¿hhXX3. If user would like to offload HSR, enable the feature hsr-rx-offload on both devices.rÀ…�rÁ}rÂ(hHj½hIj»ubaubj•)�rÃ}rÄ(hHXCethtool -K eth2 hsr-rx-offload on ethtool -K eth3 hsr-rx-offload onhIj^hOjXhQj˜hS}rÅ(h­h®hX]hW]hU]hV]h[]uh]Mâh^hh_]rÆhhXCethtool -K eth2 hsr-rx-offload on ethtool -K eth3 hsr-rx-offload onrÇ…�rÈ}rÉ(hHUhIjÃubaubh{)�rÊ}rË(hHX”4. Now the PRU Ethernet devices can be paired to create an HSR interface using ip link command. To offload PRP user does following command in step 3rÌhIj^hOjXhQhƒhS}rÍ(hU]hV]hW]hX]h[]uh]M…h^hh_]rÎhhX”4. Now the PRU Ethernet devices can be paired to create an HSR interface using ip link command. To offload PRP user does following command in step 3rÏ…�rÐ}rÑ(hHjÌhIjÊubaubj•)�rÒ}rÓ(hHXCethtool -K eth2 prp-rx-offload on ethtool -K eth3 prp-rx-offload onhIj^hOjXhQj˜hS}rÔ(h­h®hX]hW]hU]hV]h[]uh]Mëh^hh_]rÕhhXCethtool -K eth2 prp-rx-offload on ethtool -K eth3 prp-rx-offload onrÖ…�r×}rØ(hHUhIjÒubaubh{)�rÙ}rÚ(hHXyTo display the offload feature currently active at the PRU Ethernet, user may type following command for example for eth2rÛhIj^hOjXhQhƒhS}rÜ(hU]hV]hW]hX]h[]uh]MŽh^hh_]rÝhhXyTo display the offload feature currently active at the PRU Ethernet, user may type following command for example for eth2rÞ…�rß}rà(hHjÛhIjÙubaubj•)�rá}râ(hHXethtool -k eth2hIj^hOjXhQj˜hS}rã(h­h®hX]hW]hU]hV]h[]uh]Móh^hh_]rähhXethtool -k eth2rå…�ræ}rç(hHUhIjáubaubjI)�rè}ré(hHXSample commandsrêhIj^hOjXhQjMhS}rë(hX]rìUsample-commandsríahW]hU]hV]h[]rîhauh]Nh^hh_]rïhhXSample commandsrð…�rñ}rò(hHjêhIjèubaubh{)�ró}rô(hHXÕBefore using these commands, save the MAC address of both interfaces. These sample commands assumes a MAC address of 70:FF:76:1C:0E:8C for both PRU Ethernet interfaces and an IP address of 192.168.2.20 for the hsr/prp interface. Eth3 MAC address is assumed to be 70:FF:76:1C:0E:8E. Also assumes user create hsr0 or prp0 interface using eth2 and eth3 interfaces. Please note that for each DAN, user needs to assign unique MAC address and IP address from the same subnet.rõhIj^hOjXhQhƒhS}rö(hU]hV]hW]hX]h[]uh]M˜h^hh_]r÷hhXÕBefore using these commands, save the MAC address of both interfaces. These sample commands assumes a MAC address of 70:FF:76:1C:0E:8C for both PRU Ethernet interfaces and an IP address of 192.168.2.20 for the hsr/prp interface. Eth3 MAC address is assumed to be 70:FF:76:1C:0E:8E. Also assumes user create hsr0 or prp0 interface using eth2 and eth3 interfaces. Please note that for each DAN, user needs to assign unique MAC address and IP address from the same subnet.rø…�rù}rú(hHjõhIjóubaubhÔ)�rû}rü(hHUhIj^hOjXhQh×hS}rý(hÙX-hX]hW]hU]hV]h[]uh]M h^hh_]rþhÛ)�rÿ}r(hHXTo switch from EMAC to HSR hIjûhOjXhQhÞhS}r(hU]hV]hW]hX]h[]uh]Nh^hh_]rh{)�r}r(hHXTo switch from EMAC to HSRrhIjÿhOjXhQhƒhS}r(hU]hV]hW]hX]h[]uh]M h_]rhhXTo switch from EMAC to HSRr…�r }r (hHjhIjubaubaubaubj•)�r }r (hHXXifconfig eth2 0.0.0.0 down ifconfig eth3 0.0.0.0 down ifconfig eth2 hw ether 70:FF:76:1C:0E:8C ifconfig eth3 hw ether 70:FF:76:1C:0E:8C ethtool -K eth2 hsr-rx-offload on ethtool -K eth3 hsr-rx-offload on ifconfig eth2 up ifconfig eth3 up ip link add name hsr0 type hsr slave1 eth2 slave2 eth3 supervision 45 version 1 ifconfig hsr0 192.168.2.20hIj^hOjXhQj˜hS}r (h­h®hX]hW]hU]hV]h[]uh]Mh^hh_]rhhXXifconfig eth2 0.0.0.0 down ifconfig eth3 0.0.0.0 down ifconfig eth2 hw ether 70:FF:76:1C:0E:8C ifconfig eth3 hw ether 70:FF:76:1C:0E:8C ethtool -K eth2 hsr-rx-offload on ethtool -K eth3 hsr-rx-offload on ifconfig eth2 up ifconfig eth3 up ip link add name hsr0 type hsr slave1 eth2 slave2 eth3 supervision 45 version 1 ifconfig hsr0 192.168.2.20r…�r}r(hHUhIj ubaubhÔ)�r}r(hHUhIj^hOjXhQh×hS}r(hÙX-hX]hW]hU]hV]h[]uh]M¯h^hh_]rhÛ)�r}r(hHXTo switch from HSR to PRP hIjhOjXhQhÞhS}r(hU]hV]hW]hX]h[]uh]Nh^hh_]rh{)�r}r(hHXTo switch from HSR to PRPrhIjhOjXhQhƒhS}r(hU]hV]hW]hX]h[]uh]M¯h_]rhhXTo switch from HSR to PRPr…�r }r!(hHjhIjubaubaubaubj•)�r"}r#(hHXFip link delete hsr0 ifconfig eth2 down ifconfig eth3 down ethtool -K eth2 hsr-rx-offload off ethtool -K eth3 hsr-rx-offload off ethtool -K eth2 prp-rx-offload on ethtool -K eth3 prp-rx-offload on ifconfig eth2 up ifconfig eth3 up ip link add name prp0 type prp slave1 eth2 slave2 eth3 supervision 45 ifconfig prp0 192.168.2.20hIj^hOjXhQj˜hS}r$(h­h®hX]hW]hU]hV]h[]uh]Mh^hh_]r%hhXFip link delete hsr0 ifconfig eth2 down ifconfig eth3 down ethtool -K eth2 hsr-rx-offload off ethtool -K eth3 hsr-rx-offload off ethtool -K eth2 prp-rx-offload on ethtool -K eth3 prp-rx-offload on ifconfig eth2 up ifconfig eth3 up ip link add name prp0 type prp slave1 eth2 slave2 eth3 supervision 45 ifconfig prp0 192.168.2.20r&…�r'}r((hHUhIj"ubaubhÔ)�r)}r*(hHUhIj^hOjXhQh×hS}r+(hÙX-hX]hW]hU]hV]h[]uh]M¿h^hh_]r,hÛ)�r-}r.(hHXTo switch from PRP to HSR hIj)hOjXhQhÞhS}r/(hU]hV]hW]hX]h[]uh]Nh^hh_]r0h{)�r1}r2(hHXTo switch from PRP to HSRr3hIj-hOjXhQhƒhS}r4(hU]hV]hW]hX]h[]uh]M¿h_]r5hhXTo switch from PRP to HSRr6…�r7}r8(hHj3hIj1ubaubaubaubj•)�r9}r:(hHXPip link delete prp0 ifconfig eth2 down ifconfig eth3 down ethtool -K eth2 prp-rx-offload off ethtool -K eth3 prp-rx-offload off ethtool -K eth2 hsr-rx-offload on ethtool -K eth3 hsr-rx-offload on ifconfig eth2 up ifconfig eth3 up ip link add name hsr0 type hsr slave1 eth2 slave2 eth3 supervision 45 version 1 ifconfig hsr0 192.168.2.20hIj^hOjXhQj˜hS}r;(h­h®hX]hW]hU]hV]h[]uh]M#h^hh_]r<hhXPip link delete prp0 ifconfig eth2 down ifconfig eth3 down ethtool -K eth2 prp-rx-offload off ethtool -K eth3 prp-rx-offload off ethtool -K eth2 hsr-rx-offload on ethtool -K eth3 hsr-rx-offload on ifconfig eth2 up ifconfig eth3 up ip link add name hsr0 type hsr slave1 eth2 slave2 eth3 supervision 45 version 1 ifconfig hsr0 192.168.2.20r=…�r>}r?(hHUhIj9ubaubhÔ)�r@}rA(hHUhIj^hOjXhQh×hS}rB(hÙX-hX]hW]hU]hV]h[]uh]MÏh^hh_]rChÛ)�rD}rE(hHXTo switch from HSR to EMAC hIj@hOjXhQhÞhS}rF(hU]hV]hW]hX]h[]uh]Nh^hh_]rGh{)�rH}rI(hHXTo switch from HSR to EMACrJhIjDhOjXhQhƒhS}rK(hU]hV]hW]hX]h[]uh]MÏh_]rLhhXTo switch from HSR to EMACrM…�rN}rO(hHjJhIjHubaubaubaubj•)�rP}rQ(hHXøip link delete hsr0 ifconfig eth2 down ifconfig eth3 down #Restore eth3 MAC address ifconfig eth3 hw ether 70:FF:76:1C:0E:8E ethtool -K eth2 hsr-rx-offload off ethtool -K eth3 hsr-rx-offload off ifconfig eth2 192.168.2.20 ifconfig eth3 192.168.3.20hIj^hOjXhQj˜hS}rR(h­h®hX]hW]hU]hV]h[]uh]M3h^hh_]rShhXøip link delete hsr0 ifconfig eth2 down ifconfig eth3 down #Restore eth3 MAC address ifconfig eth3 hw ether 70:FF:76:1C:0E:8E ethtool -K eth2 hsr-rx-offload off ethtool -K eth3 hsr-rx-offload off ifconfig eth2 192.168.2.20 ifconfig eth3 192.168.3.20rT…�rU}rV(hHUhIjPubaubhÔ)�rW}rX(hHUhIj^hOjXhQh×hS}rY(hÙX-hX]hW]hU]hV]h[]uh]MÝh^hh_]rZhÛ)�r[}r\(hHXTo switch from PRP to EMAC hIjWhOjXhQhÞhS}r](hU]hV]hW]hX]h[]uh]Nh^hh_]r^h{)�r_}r`(hHXTo switch from PRP to EMACrahIj[hOjXhQhƒhS}rb(hU]hV]hW]hX]h[]uh]MÝh_]rchhXTo switch from PRP to EMACrd…�re}rf(hHjahIj_ubaubaubaubj•)�rg}rh(hHXøip link delete prp0 ifconfig eth2 down ifconfig eth3 down ethtool -K eth2 prp-rx-offload off ethtool -K eth3 prp-rx-offload off #Restore eth3 MAC address ifconfig eth3 hw ether 70:FF:76:1C:0E:8E ifconfig eth2 192.168.2.20 ifconfig eth3 192.168.3.20hIj^hOjXhQj˜hS}ri(h­h®hX]hW]hU]hV]h[]uh]MAh^hh_]rjhhXøip link delete prp0 ifconfig eth2 down ifconfig eth3 down ethtool -K eth2 prp-rx-offload off ethtool -K eth3 prp-rx-offload off #Restore eth3 MAC address ifconfig eth3 hw ether 70:FF:76:1C:0E:8E ifconfig eth2 192.168.2.20 ifconfig eth3 192.168.3.20rk…�rl}rm(hHUhIjgubaubj/)�rn}ro(hHX.. _PLSDK_PRP_EMAC_Mode-label:hIj^hOjXhQj2hS}rp(hX]hW]hU]hV]h[]j4Uplsdk-prp-emac-mode-labelrquh]MKh^hh_]ubeubhJ)�rr}rs(hHUhIj¬hOjXj8}rthjnshQhRhS}ru(hU]hV]hW]hX]rv(U prp-emac-moderwjqeh[]rx(h%heuh]Mîh^hj>}ryjqjnsh_]rz(ha)�r{}r|(hHX PRP EMAC moder}hIjrhOjXhQhehS}r~(hU]hV]hW]hX]h[]uh]Mîh^hh_]rhhX PRP EMAC moder€…�r�}r‚(hHj}hIj{ubaubh{)�rƒ}r„(hHXIPRP EMAC mode is a special mode of PRP Ethernet type where the driver configures the PRP firmware to work like EMAC firmware. This is because currently PTP support is available only in PRU PRP firmware. So the current implementation of SAN with PTP requires PRUETH driver to be configured as PRP using bootargs. User needs to configure the PRP Firmware in PRP EMAC mode before bringing up the Ethernet interfaces. It is expected to add the PTP support to EMAC firmware in a future release. Until then this intermediate solution is used. Here are the steps to use PRUETH as SAN with PTPr…hIjrhOjXhQhƒhS}r†(hU]hV]hW]hX]h[]uh]Mðh^hh_]r‡hhXIPRP EMAC mode is a special mode of PRP Ethernet type where the driver configures the PRP firmware to work like EMAC firmware. This is because currently PTP support is available only in PRU PRP firmware. So the current implementation of SAN with PTP requires PRUETH driver to be configured as PRP using bootargs. User needs to configure the PRP Firmware in PRP EMAC mode before bringing up the Ethernet interfaces. It is expected to add the PTP support to EMAC firmware in a future release. Until then this intermediate solution is used. Here are the steps to use PRUETH as SAN with PTPrˆ…�r‰}rŠ(hHj…hIjƒubaubhÔ)�r‹}rŒ(hHUhIjrhOjXhQh×hS}r�(hÙX-hX]hW]hU]hV]h[]uh]Múh^hh_]rŽ(hÛ)�r�}r�(hHXzBoot the IDK EVM with prussX\_ethtype in bootargs set to PRP as described at :ref:`PLSDK_HSR_PRP_Testing_Firmware_Offload`hIj‹hOjXhQhÞhS}r‘(hU]hV]hW]hX]h[]uh]Nh^hh_]r’h{)�r“}r”(hHXzBoot the IDK EVM with prussX\_ethtype in bootargs set to PRP as described at :ref:`PLSDK_HSR_PRP_Testing_Firmware_Offload`hIj�hOjXhQhƒhS}r•(hU]hV]hW]hX]h[]uh]Múh_]r–(hhXLBoot the IDK EVM with prussX_ethtype in bootargs set to PRP as described at r—…�r˜}r™(hHXMBoot the IDK EVM with prussX\_ethtype in bootargs set to PRP as described at hIj“ubjØ)�rš}r›(hHX-:ref:`PLSDK_HSR_PRP_Testing_Firmware_Offload`rœhIj“hOjXhQjÜhS}r�(UreftypeXrefjÞˆjßX&plsdk_hsr_prp_testing_firmware_offloadU refdomainXstdržhX]hW]U refexplicit‰hU]hV]h[]jájâuh]Múh_]rŸjä)�r }r¡(hHjœhS}r¢(hU]hV]r£(jéjžXstd-refr¤ehW]hX]h[]uhIjšh_]r¥hhX&PLSDK_HSR_PRP_Testing_Firmware_Offloadr¦…�r§}r¨(hHUhIj ubahQjïubaubeubaubhÛ)�r©}rª(hHXŠOnce the EVM boots up and user login, first thing to verify is if PRUETH is configured as PRP Ethernet type. See above section for detailshIj‹hOjXhQhÞhS}r«(hU]hV]hW]hX]h[]uh]Nh^hh_]r¬h{)�r­}r®(hHXŠOnce the EVM boots up and user login, first thing to verify is if PRUETH is configured as PRP Ethernet type. See above section for detailsr¯hIj©hOjXhQhƒhS}r°(hU]hV]hW]hX]h[]uh]Müh_]r±hhXŠOnce the EVM boots up and user login, first thing to verify is if PRUETH is configured as PRP Ethernet type. See above section for detailsr²…�r³}r´(hHj¯hIj­ubaubaubhÛ)�rµ}r¶(hHX\Configure PRP EMAC mode in the PRP firmware by issuing the following command at the console hIj‹hOjXhQhÞhS}r·(hU]hV]hW]hX]h[]uh]Nh^hh_]r¸h{)�r¹}rº(hHX[Configure PRP EMAC mode in the PRP firmware by issuing the following command at the consoler»hIjµhOjXhQhƒhS}r¼(hU]hV]hW]hX]h[]uh]Mÿh_]r½hhX[Configure PRP EMAC mode in the PRP firmware by issuing the following command at the consoler¾…�r¿}rÀ(hHj»hIj¹ubaubaubeubj•)�rÁ}rÂ(hHXMecho 1 > /sys/devices/platform/pruss_eth/net/eth/prp_emac_modehIjrhOjXhQj˜hS}rÃ(h­h®hX]hW]hU]hV]h[]uh]Mdh^hh_]rÄhhXMecho 1 > /sys/devices/platform/pruss_eth/net/eth/prp_emac_moderÅ…�rÆ}rÇ(hHUhIjÁubaubh{)�rÈ}rÉ(hHX]where and are described in section :ref:`PLSDK_HSR_PRP_id_if_number_mapping`rÊhIjrhOjXhQhƒhS}rË(hU]hV]hW]hX]h[]uh]Mh^hh_]rÌ(hhX4where and are described in section rÍ…�rÎ}rÏ(hHX4where and are described in section hIjÈubjØ)�rÐ}rÑ(hHX):ref:`PLSDK_HSR_PRP_id_if_number_mapping`rÒhIjÈhOjXhQjÜhS}rÓ(UreftypeXrefjÞˆjßX"plsdk_hsr_prp_id_if_number_mappingU refdomainXstdrÔhX]hW]U refexplicit‰hU]hV]h[]jájâuh]Mh_]rÕjä)�rÖ}r×(hHjÒhS}rØ(hU]hV]rÙ(jéjÔXstd-refrÚehW]hX]h[]uhIjÐh_]rÛhhX"PLSDK_HSR_PRP_id_if_number_mappingrÜ…�rÝ}rÞ(hHUhIjÖubahQjïubaubeubhÔ)�rß}rà(hHUhIjrhOjXhQh×hS}rá(hÙX-hX]hW]hU]hV]h[]uh]Mh^hh_]râhÛ)�rã}rä(hHXøNow bring up Ethernet interfaces as usual and the device is ready to be used as SAN. PTP support can be enabled at this time. See section on [`[1] `__] for the details. hIjßhOjXhQhÞhS}rå(hU]hV]hW]hX]h[]uh]Nh^hh_]ræh{)�rç}rè(hHX÷Now bring up Ethernet interfaces as usual and the device is ready to be used as SAN. PTP support can be enabled at this time. See section on [`[1] `__] for the details.hIjãhOjXhQhƒhS}ré(hU]hV]hW]hX]h[]uh]Mh_]rê(hhXŽNow bring up Ethernet interfaces as usual and the device is ready to be used as SAN. PTP support can be enabled at this time. See section on [rë…�rì}rí(hHXŽNow bring up Ethernet interfaces as usual and the device is ready to be used as SAN. PTP support can be enabled at this time. See section on [hIjçubcdocutils.nodes reference rî)�rï}rð(hHXW`[1] `__hS}rñ(UnameX[1]UrefuriròXMhttp://processors.wiki.ti.com/index.php/Processor_SDK_Linux_HSR_PRP#Linux_PTPhX]hW]hU]hV]h[]uhIjçh_]róhhX[1]rô…�rõ}rö(hHUhIjïubahQU referencer÷ubhhX] for the details.rø…�rù}rú(hHX] for the details.hIjçubeubaubaubh{)�rû}rü(hHX³**NOTE: run time protocol switch is not supported for switch to SAN PTP for now and required boot time configuration and above debugfs command once device is boot up in PRP mode**rýhIjrhOjXhQhƒhS}rþ(hU]hV]hW]hX]h[]uh]Mh^hh_]rÿhæ)�r}r(hHjýhS}r(hU]hV]hW]hX]h[]uhIjûh_]rhhX¯NOTE: run time protocol switch is not supported for switch to SAN PTP for now and required boot time configuration and above debugfs command once device is boot up in PRP moder…�r}r(hHUhIjubahQhîubaubeubeubeubhJ)�r}r(hHUhIjFhOjXhQhRhS}r (hU]hV]hW]hX]r Umulticast-filteringr ah[]r h4auh]Mh^hh_]r (ha)�r}r(hHXMulticast filteringrhIjhOjXhQhehS}r(hU]hV]hW]hX]h[]uh]Mh^hh_]rhhXMulticast filteringr…�r}r(hHjhIjubaubh{)�r}r(hHXÈMulticast filtering is an Ethernet frame filtering feature in PRU firmware based on the destination MAC address of the received frame. The PRU provides a Multicast filter table in Data RAM1 of PRU with a size of 256 entries of 1 byte each. Firmware implements an imperfect match for filtering the frames based on a hash calculated using the destination MAC address of the frame and a configurable mask if the destination address is a multicast MAC address.rhIjhOjXhQhƒhS}r(hU]hV]hW]hX]h[]uh]Mh^hh_]rhhXÈMulticast filtering is an Ethernet frame filtering feature in PRU firmware based on the destination MAC address of the received frame. The PRU provides a Multicast filter table in Data RAM1 of PRU with a size of 256 entries of 1 byte each. Firmware implements an imperfect match for filtering the frames based on a hash calculated using the destination MAC address of the frame and a configurable mask if the destination address is a multicast MAC address.r…�r}r(hHjhIjubaubj•)�r}r(hHXÙHash = (MAC_ADDR[0] AND MASK[0]) XOR (MAC_ADDR[1] AND MASK[1]) XOR (MAC_ADDR[2] AND MASK[2]) XOR (MAC_ADDR[3] AND MASK[3]) XOR (MAC_ADDR[4] AND MASK[4]) XOR (MAC_ADDR[5] AND MASK[5])hIjhOjXhQj˜hS}r (h­h®hX]hW]hU]hV]h[]uh]M~h^hh_]r!hhXÙHash = (MAC_ADDR[0] AND MASK[0]) XOR (MAC_ADDR[1] AND MASK[1]) XOR (MAC_ADDR[2] AND MASK[2]) XOR (MAC_ADDR[3] AND MASK[3]) XOR (MAC_ADDR[4] AND MASK[4]) XOR (MAC_ADDR[5] AND MASK[5])r"…�r#}r$(hHUhIjubaubh{)�r%}r&(hHXìWhere MASK is a user configurable value provided at boot time and MAC_ADDR is the multicast MAC address which is extracted from the destination address of the Ethernet frame and AND is the bitwise AND operation. In other words, a bitwise AND operation is performed between each byte of MAC address and a corresponding MASK byte and the resulting bytes are XOR-ed together to get the hash value. The hash is used to index into the Multicast filter table to check if it is set (1) or reset (0). If set, the frame is forwarded to ARM core (a.k.a Host). If reset, the frame is dropped at the PRU. This is an imperfect match since there can be multiple MAC addresses that produces the same hash value. So these frames will get forwarded to the ARM core.r'hIjhOjXhQhƒhS}r((hU]hV]hW]hX]h[]uh]M%h^hh_]r)hhXìWhere MASK is a user configurable value provided at boot time and MAC_ADDR is the multicast MAC address which is extracted from the destination address of the Ethernet frame and AND is the bitwise AND operation. In other words, a bitwise AND operation is performed between each byte of MAC address and a corresponding MASK byte and the resulting bytes are XOR-ed together to get the hash value. The hash is used to index into the Multicast filter table to check if it is set (1) or reset (0). If set, the frame is forwarded to ARM core (a.k.a Host). If reset, the frame is dropped at the PRU. This is an imperfect match since there can be multiple MAC addresses that produces the same hash value. So these frames will get forwarded to the ARM core.r*…�r+}r,(hHj'hIj%ubaubh{)�r-}r.(hHXbti_prueth.pruss_port_mc_mask is the module parameter for MASK where is described in section :ref:`PLSDK_HSR_PRP_id_if_number_mapping` and is '0' in HSR/PRP case since both ports share the same MASK (port 1 does not need to be set and has no effect), and '0' or '1' in Dual EMAC case since both ports can be configured independently.hIjhOjXhQhƒhS}r/(hU]hV]hW]hX]h[]uh]M0h^hh_]r0(hhXkti_prueth.pruss_port_mc_mask is the module parameter for MASK where is described in section r1…�r2}r3(hHXkti_prueth.pruss_port_mc_mask is the module parameter for MASK where is described in section hIj-ubjØ)�r4}r5(hHX):ref:`PLSDK_HSR_PRP_id_if_number_mapping`r6hIj-hOjXhQjÜhS}r7(UreftypeXrefjÞˆjßX"plsdk_hsr_prp_id_if_number_mappingU refdomainXstdr8hX]hW]U refexplicit‰hU]hV]h[]jájâuh]M0h_]r9jä)�r:}r;(hHj6hS}r<(hU]hV]r=(jéj8Xstd-refr>ehW]hX]h[]uhIj4h_]r?hhX"PLSDK_HSR_PRP_id_if_number_mappingr@…�rA}rB(hHUhIj:ubahQjïubaubhhXÎ and is '0' in HSR/PRP case since both ports share the same MASK (port 1 does not need to be set and has no effect), and '0' or '1' in Dual EMAC case since both ports can be configured independently.rC…�rD}rE(hHXÎ and is '0' in HSR/PRP case since both ports share the same MASK (port 1 does not need to be set and has no effect), and '0' or '1' in Dual EMAC case since both ports can be configured independently.hIj-ubeubh{)�rF}rG(hHX.Sample bootargs with MASK configured (HSR/PRP)rHhIjhOjXhQhƒhS}rI(hU]hV]hW]hX]h[]uh]M6h^hh_]rJhhX.Sample bootargs with MASK configured (HSR/PRP)rK…�rL}rM(hHjHhIjFubaubj•)�rN}rO(hHX¦setenv pruss1_port0_mc_mask "FF:FF:FF:FF:00:00" setenv pruss2_port0_mc_mask "FF:FF:FF:FF:00:00" setenv args_mmc 'run finduuid;setenv bootargs console=${console} ${optargs} root=PARTUUID=${uuid} rw rootfstype=${mmcrootfstype} ti_prueth.pruss1_ethtype=${pruss1_ethtype} ti_prueth.pruss2_ethtype=${pruss2_ethtype} ti_prueth.pruss1_port0_mc_mask=${pruss1_port0_mc_mask} ti_prueth.pruss2_port0_mc_mask=${pruss2_port0_mc_mask}'hIjhOjXhQj˜hS}rP(h­h®hX]hW]hU]hV]h[]uh]Mšh^hh_]rQhhX¦setenv pruss1_port0_mc_mask "FF:FF:FF:FF:00:00" setenv pruss2_port0_mc_mask "FF:FF:FF:FF:00:00" setenv args_mmc 'run finduuid;setenv bootargs console=${console} ${optargs} root=PARTUUID=${uuid} rw rootfstype=${mmcrootfstype} ti_prueth.pruss1_ethtype=${pruss1_ethtype} ti_prueth.pruss2_ethtype=${pruss2_ethtype} ti_prueth.pruss1_port0_mc_mask=${pruss1_port0_mc_mask} ti_prueth.pruss2_port0_mc_mask=${pruss2_port0_mc_mask}'rR…�rS}rT(hHUhIjNubaubh{)�rU}rV(hHX?A comparable sample bootargs with MASK configured for Dual EMACrWhIjhOjXhQhƒhS}rX(hU]hV]hW]hX]h[]uh]M>h^hh_]rYhhX?A comparable sample bootargs with MASK configured for Dual EMACrZ…�r[}r\(hHjWhIjUubaubj•)�r]}r^(hHXtsetenv pruss1_port0_mc_mask "FF:FF:FF:FF:00:00" setenv pruss1_port1_mc_mask "FF:FF:FF:FF:00:00" setenv pruss2_port0_mc_mask "FF:FF:FF:FF:00:00" setenv pruss2_port1_mc_mask "FF:FF:FF:FF:00:00" setenv args_mmc 'run finduuid;setenv bootargs console=${console} ${optargs} root=PARTUUID=${uuid} rw rootfstype=${mmcrootfstype} ti_prueth.pruss1_ethtype=${pruss1_ethtype} ti_prueth.pruss2_ethtype=${pruss2_ethtype} ti_prueth.pruss1_port0_mc_mask=${pruss1_port0_mc_mask} ti_prueth.pruss1_port1_mc_mask=${pruss1_port1_mc_mask} ti_prueth.pruss2_port0_mc_mask=${pruss2_port0_mc_mask} ti_prueth.pruss2_port1_mc_mask=${pruss2_port1_mc_mask}'hIjhOjXhQj˜hS}r_(h­h®hX]hW]hU]hV]h[]uh]M¢h^hh_]r`hhXtsetenv pruss1_port0_mc_mask "FF:FF:FF:FF:00:00" setenv pruss1_port1_mc_mask "FF:FF:FF:FF:00:00" setenv pruss2_port0_mc_mask "FF:FF:FF:FF:00:00" setenv pruss2_port1_mc_mask "FF:FF:FF:FF:00:00" setenv args_mmc 'run finduuid;setenv bootargs console=${console} ${optargs} root=PARTUUID=${uuid} rw rootfstype=${mmcrootfstype} ti_prueth.pruss1_ethtype=${pruss1_ethtype} ti_prueth.pruss2_ethtype=${pruss2_ethtype} ti_prueth.pruss1_port0_mc_mask=${pruss1_port0_mc_mask} ti_prueth.pruss1_port1_mc_mask=${pruss1_port1_mc_mask} ti_prueth.pruss2_port0_mc_mask=${pruss2_port0_mc_mask} ti_prueth.pruss2_port1_mc_mask=${pruss2_port1_mc_mask}'ra…�rb}rc(hHUhIj]ubaubh{)�rd}re(hHXÎTypically, an application joins the multicast group either using a raw socket of type SOCK_DGRAM and use setsockopt() API to Join or leave the multicast group. An interesting article on this is available atrfhIjhOjXhQhƒhS}rg(hU]hV]hW]hX]h[]uh]MHh^hh_]rhhhXÎTypically, an application joins the multicast group either using a raw socket of type SOCK_DGRAM and use setsockopt() API to Join or leave the multicast group. An interesting article on this is available atri…�rj}rk(hHjfhIjdubaubh{)�rl}rm(hHX$http://www.tenouk.com/Module41c.htmlrnhIjhOjXhQhƒhS}ro(hU]hV]hW]hX]h[]uh]MLh^hh_]rpjî)�rq}rr(hHjnhS}rs(UrefurijnhX]hW]hU]hV]h[]uhIjlh_]rthhX$http://www.tenouk.com/Module41c.htmlru…�rv}rw(hHUhIjqubahQj÷ubaubh{)�rx}ry(hHX–This causes the Multicast MAC address to be added to the mc_list of the socket and the associated network device in kernel and finally get passed to the Ethernet device driver (in our case, it is PRU Ethernet device driver). The relevant API is ndo_set_rx_mode() of the net_device_ops structure in Linux kernel associated with the network device. The PRU Ethernet device driver calculates the hash as described above and then writes 1 to MC filter table using the hash value as index. The PRU Ethernet device driver also supports allmulti which is used to enable receieve of all multicast frames at an interface. This is an option passed to the ifconfig command.rzhIjhOjXhQhƒhS}r{(hU]hV]hW]hX]h[]uh]MNh^hh_]r|hhX–This causes the Multicast MAC address to be added to the mc_list of the socket and the associated network device in kernel and finally get passed to the Ethernet device driver (in our case, it is PRU Ethernet device driver). The relevant API is ndo_set_rx_mode() of the net_device_ops structure in Linux kernel associated with the network device. The PRU Ethernet device driver calculates the hash as described above and then writes 1 to MC filter table using the hash value as index. The PRU Ethernet device driver also supports allmulti which is used to enable receieve of all multicast frames at an interface. This is an option passed to the ifconfig command.r}…�r~}r(hHjzhIjxubaubj•)�r€}r�(hHXÍExample >ifconfig eth2 192.168.2.20 allmulti To remove the option >ifconfig eth2 192.168.2.20 -allmulti To display the Multicast address list of an interface, say eth2, user types >ip maddr show dev eth2hIjhOjXhQj˜hS}r‚(h­h®hX]hW]hU]hV]h[]uh]M»h^hh_]rƒhhXÍExample >ifconfig eth2 192.168.2.20 allmulti To remove the option >ifconfig eth2 192.168.2.20 -allmulti To display the Multicast address list of an interface, say eth2, user types >ip maddr show dev eth2r„…�r…}r†(hHUhIj€ubaubh{)�r‡}rˆ(hHXsample displayr‰hIjhOjXhQhƒhS}rŠ(hU]hV]hW]hX]h[]uh]Mdh^hh_]r‹hhXsample displayrŒ…�r�}rŽ(hHj‰hIj‡ubaubj•)�r�}r�(hHXÑroot@am57xx-evm:~# ip maddr show dev eth2 6: eth2 link 33:33:00:00:00:01 users 2 link 01:00:5e:00:00:01 users 2 link 33:33:ff:1c:16:e0 users 2 link 01:00:5e:00:00:fb link 01:00:5e:00:00:fc link 33:33:00:01:00:03 users 2 link 33:33:00:00:00:fb users 2 inet 224.0.0.1 inet6 ff02::fb inet6 ff02::1:3 inet6 ff02::1:ff1c:16e0 inet6 ff02::1 inet6 ff01::1hIjhOjXhQj˜hS}r‘(h­h®hX]hW]hU]hV]h[]uh]MÈh^hh_]r’hhXÑroot@am57xx-evm:~# ip maddr show dev eth2 6: eth2 link 33:33:00:00:00:01 users 2 link 01:00:5e:00:00:01 users 2 link 33:33:ff:1c:16:e0 users 2 link 01:00:5e:00:00:fb link 01:00:5e:00:00:fc link 33:33:00:01:00:03 users 2 link 33:33:00:00:00:fb users 2 inet 224.0.0.1 inet6 ff02::fb inet6 ff02::1:3 inet6 ff02::1:ff1c:16e0 inet6 ff02::1 inet6 ff01::1r“…�r”}r•(hHUhIj�ubaubh{)�r–}r—(hHXcPRU Ethernet driver also provides a debugfs file mc_filter to display MC filter table in the memoryr˜hIjhOjXhQhƒhS}r™(hU]hV]hW]hX]h[]uh]Mxh^hh_]ršhhXcPRU Ethernet driver also provides a debugfs file mc_filter to display MC filter table in the memoryr›…�rœ}r�(hHj˜hIj–ubaubj•)�rž}rŸ(hHX+/sys/kernel/debug/prueth-prp-/mc_filterhIjhOjXhQj˜hS}r (h­h®hX]hW]hU]hV]h[]uh]MÝh^hh_]r¡hhX+/sys/kernel/debug/prueth-prp-/mc_filterr¢…�r£}r¤(hHUhIjžubaubh{)�r¥}r¦(hHXorr§hIjhOjXhQhƒhS}r¨(hU]hV]hW]hX]h[]uh]M€h^hh_]r©hhXorrª…�r«}r¬(hHj§hIj¥ubaubj•)�r­}r®(hHX+/sys/kernel/debug/prueth-hsr-/mc_filterhIjhOjXhQj˜hS}r¯(h­h®hX]hW]hU]hV]h[]uh]Mäh^hh_]r°hhX+/sys/kernel/debug/prueth-hsr-/mc_filterr±…�r²}r³(hHUhIj­ubaubh{)�r´}rµ(hHXor (for Dual EMAC)r¶hIjhOjXhQhƒhS}r·(hU]hV]hW]hX]h[]uh]M‡h^hh_]r¸hhXor (for Dual EMAC)r¹…�rº}r»(hHj¶hIj´ubaubj•)�r¼}r½(hHX1/sys/kernel/debug/prueth-eth/mc_filterhIjhOjXhQj˜hS}r¾(h­h®hX]hW]hU]hV]h[]uh]Mëh^hh_]r¿hhX1/sys/kernel/debug/prueth-eth/mc_filterrÀ…�rÁ}rÂ(hHUhIj¼ubaubh{)�rÃ}rÄ(hHXVwhere ID/'if number' is described in section :ref:`PLSDK_HSR_PRP_id_if_number_mapping`rÅhIjhOjXhQhƒhS}rÆ(hU]hV]hW]hX]h[]uh]MŽh^hh_]rÇ(hhX-where ID/'if number' is described in section rÈ…�rÉ}rÊ(hHX-where ID/'if number' is described in section hIjÃubjØ)�rË}rÌ(hHX):ref:`PLSDK_HSR_PRP_id_if_number_mapping`rÍhIjÃhOjXhQjÜhS}rÎ(UreftypeXrefjÞˆjßX"plsdk_hsr_prp_id_if_number_mappingU refdomainXstdrÏhX]hW]U refexplicit‰hU]hV]h[]jájâuh]MŽh_]rÐjä)�rÑ}rÒ(hHjÍhS}rÓ(hU]hV]rÔ(jéjÏXstd-refrÕehW]hX]h[]uhIjËh_]rÖhhX"PLSDK_HSR_PRP_id_if_number_mappingr×…�rØ}rÙ(hHUhIjÑubahQjïubaubeubh{)�rÚ}rÛ(hHXSample displayrÜhIjhOjXhQhƒhS}rÝ(hU]hV]hW]hX]h[]uh]M�h^hh_]rÞhhXSample displayrß…�rà}rá(hHjÜhIjÚubaubj•)�râ}rã(hHXíroot@am57xx-evm:~# cat /sys/kernel/debug/prueth-prp-2/mc_filter MC Filter : enabled MC Mask : ff:ff:ff:ff:0:0 MC Filter table below 1 - Allowed, 0 - Dropped 0: 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 20: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 30: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 40: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 50: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 60: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 70: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 80: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 90: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 a0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 b0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 c0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 d0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 e0: 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 f0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0hIjhOjXhQj˜hS}rä(h­h®hX]hW]hU]hV]h[]uh]Môh^hh_]råhhXíroot@am57xx-evm:~# cat /sys/kernel/debug/prueth-prp-2/mc_filter MC Filter : enabled MC Mask : ff:ff:ff:ff:0:0 MC Filter table below 1 - Allowed, 0 - Dropped 0: 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 20: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 30: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 40: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 50: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 60: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 70: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 80: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 90: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 a0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 b0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 c0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 d0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 e0: 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 f0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0ræ…�rç}rè(hHUhIjâubaubhJ)�ré}rê(hHUj�KhIjhOjXhQhRhS}rë(hU]rìX dual emacríahV]hW]hX]rîU dual-emacrïah[]uh]M«h^hh_]rð(ha)�rñ}rò(hHX Dual EMACróhIjéhOjXhQhehS}rô(hU]hV]hW]hX]h[]uh]M«h^hh_]rõhhX Dual EMACrö…�r÷}rø(hHjóhIjñubaubh{)�rù}rú(hHXIf using Dual EMAC, the only interface differences are the debugfs paths and the mask parameters, as mentioned above. Internally, the multicast filter table(s) are stored in each PRU's Data RAM (PRU0->Data RAM0, PRU1->Data RAM1) instead of one table in Data RAM1 as for HSR/PRP.rûhIjéhOjXhQhƒhS}rü(hU]hV]hW]hX]h[]uh]M­h^hh_]rýhhXIf using Dual EMAC, the only interface differences are the debugfs paths and the mask parameters, as mentioned above. Internally, the multicast filter table(s) are stored in each PRU's Data RAM (PRU0->Data RAM0, PRU1->Data RAM1) instead of one table in Data RAM1 as for HSR/PRP.rþ…�rÿ}r(hHjûhIjùubaubeubeubhJ)�r}r(hHUhIjFhOjXhQhRhS}r(hU]hV]hW]hX]rUvlan-over-pru-ethernetrah[]rh6auh]M³h^hh_]r(ha)�r}r (hHXVLAN over PRU Ethernetr hIjhOjXhQhehS}r (hU]hV]hW]hX]h[]uh]M³h^hh_]r hhXVLAN over PRU Ethernetr …�r}r(hHj hIjubaubh{)�r}r(hHX¼Virtual LAN (VLAN) is a standard Linux feature that can be enabled over PRU Ethernet devices. There are many websites that describes how Linux VLAN works. Some of them are at [`[2] `__] or at [`[3] `__] and some configuration details are also discussed at [`[4] `__].hIjhOjXhQhƒhS}r(hU]hV]hW]hX]h[]uh]Mµh^hh_]r(hhX°Virtual LAN (VLAN) is a standard Linux feature that can be enabled over PRU Ethernet devices. There are many websites that describes how Linux VLAN works. Some of them are at [r…�r}r(hHX°Virtual LAN (VLAN) is a standard Linux feature that can be enabled over PRU Ethernet devices. There are many websites that describes how Linux VLAN works. Some of them are at [hIjubjî)�r}r(hHX3`[2] `__hS}r(UnameX[2]jòX)https://wiki.archlinux.org/index.php/VLANhX]hW]hU]hV]h[]uhIjh_]rhhX[2]r…�r}r(hHUhIjubahQj÷ubhhX ] or at [r…�r}r (hHX ] or at [hIjubjî)�r!}r"(hHX3`[3] `__hS}r#(UnameX[3]jòX)http://www.linuxjournal.com/article/10821hX]hW]hU]hV]h[]uhIjh_]r$hhX[3]r%…�r&}r'(hHUhIj!ubahQj÷ubhhX8] and some configuration details are also discussed at [r(…�r)}r*(hHX8] and some configuration details are also discussed at [hIjubjî)�r+}r,(hHXc`[4] `__hS}r-(UnameX[4]jòXYhttps://www.cyberciti.biz/tips/howto-configure-linux-virtual-local-area-network-vlan.htmlhX]hW]hU]hV]h[]uhIjh_]r.hhX[4]r/…�r0}r1(hHUhIj+ubahQj÷ubhhX].r2…�r3}r4(hHX].hIjubeubh{)�r5}r6(hHX User may use ip link command to setup vlan interface over prueth interfaces. For example, over a hsr interface, if user would like to setup two vlan interfaces say, hsr0.2 and hsr0.3, user execute the following commands assuming the hsr0 interface is already setup:-r7hIjhOjXhQhƒhS}r8(hU]hV]hW]hX]h[]uh]M½h^hh_]r9hhX User may use ip link command to setup vlan interface over prueth interfaces. For example, over a hsr interface, if user would like to setup two vlan interfaces say, hsr0.2 and hsr0.3, user execute the following commands assuming the hsr0 interface is already setup:-r:…�r;}r<(hHj7hIj5ubaubh{)�r=}r>(hHXNode-1r?hIjhOjXhQhƒhS}r@(hU]hV]hW]hX]h[]uh]MÂh^hh_]rAhhXNode-1rB…�rC}rD(hHj?hIj=ubaubj•)�rE}rF(hHXifconfig hsr0 0.0.0.0 ip link add link hsr0 name hsr0.2 type vlan id 2 ip link add link hsr0 name hsr0.3 type vlan id 3 ifconfig hsr0.2 192.168.2.40 ifconfig hsr0.3 192.168.3.40 ip link set hsr0.2 type vlan egress 0:0 ip link set hsr0.3 type vlan egress 0:7hIjhOjXhQj˜hS}rG(h­h®hX]hW]hU]hV]h[]uh]M&h^hh_]rHhhXifconfig hsr0 0.0.0.0 ip link add link hsr0 name hsr0.2 type vlan id 2 ip link add link hsr0 name hsr0.3 type vlan id 3 ifconfig hsr0.2 192.168.2.40 ifconfig hsr0.3 192.168.3.40 ip link set hsr0.2 type vlan egress 0:0 ip link set hsr0.3 type vlan egress 0:7rI…�rJ}rK(hHUhIjEubaubh{)�rL}rM(hHXNode-2rNhIjhOjXhQhƒhS}rO(hU]hV]hW]hX]h[]uh]MÎh^hh_]rPhhXNode-2rQ…�rR}rS(hHjNhIjLubaubj•)�rT}rU(hHXifconfig hsr0 0.0.0.0 ip link add link hsr0 name hsr0.2 type vlan id 2 ip link add link hsr0 name hsr0.3 type vlan id 3 ifconfig hsr0.2 192.168.2.50 ifconfig hsr0.3 192.168.3.50 ip link set hsr0.2 type vlan egress 0:0 ip link set hsr0.3 type vlan egress 0:7hIjhOjXhQj˜hS}rV(h­h®hX]hW]hU]hV]h[]uh]M2h^hh_]rWhhXifconfig hsr0 0.0.0.0 ip link add link hsr0 name hsr0.2 type vlan id 2 ip link add link hsr0 name hsr0.3 type vlan id 3 ifconfig hsr0.2 192.168.2.50 ifconfig hsr0.3 192.168.3.50 ip link set hsr0.2 type vlan egress 0:0 ip link set hsr0.3 type vlan egress 0:7rX…�rY}rZ(hHUhIjTubaubh{)�r[}r\(hHX¨The above assume we have a network with two nodes connected back to back. The procedure is same if more than two nodes are present in the network. Using similar commands, user would be able to overlay multiple virtual LANs over the physical LAN created. The egress option of ip link command allow mapping packet priority to VLAN PCP values. In the example the packets on VLAN ID 2 is mapped to PCP value of 0 and VLAN ID 3 is mapped to PCP value of 7. At the Egress PRU Ethernet device looks at the PCP value and places it into one of the 4 queues. PRU scan the high priority queue first for packets and transmits them before transmitting packets from the lower priority queues. At the ingress, the PRU checks the PCP value of the packet in the VLAN header and places the frame into one of the ingress queues. More details on Queue usage is available at `Queue Usage and VLAN PCP to Queue Map <#queue-usage-and-vlan-pcp-to-queue-map>`__hIjhOjXhQhƒhS}r](hU]hV]hW]hX]h[]uh]MÚh^hh_]r^(hhXVThe above assume we have a network with two nodes connected back to back. The procedure is same if more than two nodes are present in the network. Using similar commands, user would be able to overlay multiple virtual LANs over the physical LAN created. The egress option of ip link command allow mapping packet priority to VLAN PCP values. In the example the packets on VLAN ID 2 is mapped to PCP value of 0 and VLAN ID 3 is mapped to PCP value of 7. At the Egress PRU Ethernet device looks at the PCP value and places it into one of the 4 queues. PRU scan the high priority queue first for packets and transmits them before transmitting packets from the lower priority queues. At the ingress, the PRU checks the PCP value of the packet in the VLAN header and places the frame into one of the ingress queues. More details on Queue usage is available at r_…�r`}ra(hHXVThe above assume we have a network with two nodes connected back to back. The procedure is same if more than two nodes are present in the network. Using similar commands, user would be able to overlay multiple virtual LANs over the physical LAN created. The egress option of ip link command allow mapping packet priority to VLAN PCP values. In the example the packets on VLAN ID 2 is mapped to PCP value of 0 and VLAN ID 3 is mapped to PCP value of 7. At the Egress PRU Ethernet device looks at the PCP value and places it into one of the 4 queues. PRU scan the high priority queue first for packets and transmits them before transmitting packets from the lower priority queues. At the ingress, the PRU checks the PCP value of the packet in the VLAN header and places the frame into one of the ingress queues. More details on Queue usage is available at hIj[ubjî)�rb}rc(hHXR`Queue Usage and VLAN PCP to Queue Map <#queue-usage-and-vlan-pcp-to-queue-map>`__hS}rd(UnameX%Queue Usage and VLAN PCP to Queue MapjòX&#queue-usage-and-vlan-pcp-to-queue-maphX]hW]hU]hV]h[]uhIj[h_]rehhX%Queue Usage and VLAN PCP to Queue Maprf…�rg}rh(hHUhIjbubahQj÷ubeubh{)�ri}rj(hHXµIn the above example, after passing some UDP traffic over hsr0.2 and hsr0.3, the user may check following statistics to verify if the packets are going over the right VLAN interfacerkhIjhOjXhQhƒhS}rl(hU]hV]hW]hX]h[]uh]Mèh^hh_]rmhhXµIn the above example, after passing some UDP traffic over hsr0.2 and hsr0.3, the user may check following statistics to verify if the packets are going over the right VLAN interfacern…�ro}rp(hHjkhIjiubaubh{)�rq}rr(hHX On Node-1rshIjhOjXhQhƒhS}rt(hU]hV]hW]hX]h[]uh]Mìh^hh_]ruhhX On Node-1rv…�rw}rx(hHjshIjqubaubj•)�ry}rz(hHXÔcat /proc/net/vlan/hsr0.3 hsr0.3 VID: 3 REORDER_HDR: 1 dev->priv_flags: 1001 total frames received 68090 total bytes received 52598480 Broadcast/Multicast Rcvd 52hIjhOjXhQj˜hS}r{(h­h®hX]hW]hU]hV]h[]uh]MPh^hh_]r|hhXÔcat /proc/net/vlan/hsr0.3 hsr0.3 VID: 3 REORDER_HDR: 1 dev->priv_flags: 1001 total frames received 68090 total bytes received 52598480 Broadcast/Multicast Rcvd 52r}…�r~}r(hHUhIjyubaubj•)�r€}r�(hHX* total frames transmitted 68090 total bytes transmitted 52598459 Device: hsr0 INGRESS priority mappings: 0:0 1:0 2:0 3:0 4:0 5:0 6:0 7:0 EGRESS priority mappings: 0:7 root@am57xx-evm:~# cat /proc/net/vlan/hsr0.2 hsr0.2 VID: 2 REORDER_HDR: 1 dev->priv_flags: 1001 total frames received 68105 total bytes received 52604702 Broadcast/Multicast Rcvd 53 total frames transmitted 68074 total bytes transmitted 52583138 Device: hsr0 INGRESS priority mappings: 0:0 1:0 2:0 3:0 4:0 5:0 6:0 7:0 EGRESS priority mappings: 0:0 root@am57xx-evm:~# cat /sys/kernel/debug/prueth-eth2/stats TxQ-0 TxQ-1 TxQ-2 TxQ-3 RxQ-0 RxQ-1 ===================================================== 68041 0 0 68908 67809 68925 root@am57xx-evm:~# cat /sys/kernel/debug/prueth-eth3/stats TxQ-0 TxQ-1 TxQ-2 TxQ-3 RxQ-2 RxQ-3 ===================================================== 68041 0 0 68912 234 695hIjhOjXhQj˜hS}r‚(h­h®hX]hW]hU]hV]h[]uh]MXh^hh_]rƒhhX* total frames transmitted 68090 total bytes transmitted 52598459 Device: hsr0 INGRESS priority mappings: 0:0 1:0 2:0 3:0 4:0 5:0 6:0 7:0 EGRESS priority mappings: 0:7 root@am57xx-evm:~# cat /proc/net/vlan/hsr0.2 hsr0.2 VID: 2 REORDER_HDR: 1 dev->priv_flags: 1001 total frames received 68105 total bytes received 52604702 Broadcast/Multicast Rcvd 53 total frames transmitted 68074 total bytes transmitted 52583138 Device: hsr0 INGRESS priority mappings: 0:0 1:0 2:0 3:0 4:0 5:0 6:0 7:0 EGRESS priority mappings: 0:0 root@am57xx-evm:~# cat /sys/kernel/debug/prueth-eth2/stats TxQ-0 TxQ-1 TxQ-2 TxQ-3 RxQ-0 RxQ-1 ===================================================== 68041 0 0 68908 67809 68925 root@am57xx-evm:~# cat /sys/kernel/debug/prueth-eth3/stats TxQ-0 TxQ-1 TxQ-2 TxQ-3 RxQ-2 RxQ-3 ===================================================== 68041 0 0 68912 234 695r„…�r…}r†(hHUhIj€ubaubh{)�r‡}rˆ(hHXbSimilar procedure can be used for setting up VLAN interfaces over PRU EMAC and HSR Ethernet types.r‰hIjhOjXhQhƒhS}rŠ(hU]hV]hW]hX]h[]uh]Mh^hh_]r‹hhXbSimilar procedure can be used for setting up VLAN interfaces over PRU EMAC and HSR Ethernet types.rŒ…�r�}rŽ(hHj‰hIj‡ubaubeubhJ)�r�}r�(hHUhIjFhOjXhQhRhS}r‘(hU]hV]hW]hX]r’Uvlan-filteringr“ah[]r”h#auh]Mh^hh_]r•(ha)�r–}r—(hHXVLAN Filteringr˜hIj�hOjXhQhehS}r™(hU]hV]hW]hX]h[]uh]Mh^hh_]ršhhXVLAN Filteringr›…�rœ}r�(hHj˜hIj–ubaubh{)�rž}rŸ(hHXÅThe PRU has a 4096 entry VLAN filter table that allows filtering out unwanted VLAN traffic to the host. As soon a VLAN interface is created, the 802.1q Linux kernel module sends the VID information down to the lower layer HSR or PRP Linux device which in turn pass it down to the slave Ethernet devices below it (or directly to the Ethernet device in the case of Dual EMAC). The PRU Ethernet driver gets the VID information via net_device_ops:ndo_vlan_rx_add_vid(). On receiving this, PRU Ethernet driver sets the entry at the VID index in VLAN filter table to 1. When the VLAN interface is deleted, the driver receives the same information through ndo_vlan_rx_kill_vid() and reset the entry at the VID index.r hIj�hOjXhQhƒhS}r¡(hU]hV]hW]hX]h[]uh]Mh^hh_]r¢hhXÅThe PRU has a 4096 entry VLAN filter table that allows filtering out unwanted VLAN traffic to the host. As soon a VLAN interface is created, the 802.1q Linux kernel module sends the VID information down to the lower layer HSR or PRP Linux device which in turn pass it down to the slave Ethernet devices below it (or directly to the Ethernet device in the case of Dual EMAC). The PRU Ethernet driver gets the VID information via net_device_ops:ndo_vlan_rx_add_vid(). On receiving this, PRU Ethernet driver sets the entry at the VID index in VLAN filter table to 1. When the VLAN interface is deleted, the driver receives the same information through ndo_vlan_rx_kill_vid() and reset the entry at the VID index.r£…�r¤}r¥(hHj hIjžubaubh{)�r¦}r§(hHXšPRU firmware on receiving a VLAN frame, extracts the VID and look up the VLAN filter table for an entry at the VID if VLAN filtering is enabled in firmware. If the entry is 1, it forwards the frame to the Host. Otherwise the frame is dropped. There are additional controls to allow priority tagged frames to Host if the corrsponding bit is set in firmware shared memory. PRU Ethernet driver always enables Priority tagged frames to the Host. User may setup a VLAN interface with VID 0 to send or receive priority tagged frames. See section `VLAN <#vlan-over-pru-ethernet>`_ for details on how to assign egress priority mapping for the priority tagged VLAN interface.hIj�hOjXhQhƒhS}r¨(hU]hV]hW]hX]h[]uh]M#h^hh_]r©(hhXPRU firmware on receiving a VLAN frame, extracts the VID and look up the VLAN filter table for an entry at the VID if VLAN filtering is enabled in firmware. If the entry is 1, it forwards the frame to the Host. Otherwise the frame is dropped. There are additional controls to allow priority tagged frames to Host if the corrsponding bit is set in firmware shared memory. PRU Ethernet driver always enables Priority tagged frames to the Host. User may setup a VLAN interface with VID 0 to send or receive priority tagged frames. See section rª…�r«}r¬(hHXPRU firmware on receiving a VLAN frame, extracts the VID and look up the VLAN filter table for an entry at the VID if VLAN filtering is enabled in firmware. If the entry is 1, it forwards the frame to the Host. Otherwise the frame is dropped. There are additional controls to allow priority tagged frames to Host if the corrsponding bit is set in firmware shared memory. PRU Ethernet driver always enables Priority tagged frames to the Host. User may setup a VLAN interface with VID 0 to send or receive priority tagged frames. See section hIj¦ubjî)�r­}r®(hHX!`VLAN <#vlan-over-pru-ethernet>`_hS}r¯(UnameXVLANjòX#vlan-over-pru-ethernetr°hX]hW]hU]hV]h[]uhIj¦h_]r±hhXVLANr²…�r³}r´(hHUhIj­ubahQj÷ubj/)�rµ}r¶(hHX <#vlan-over-pru-ethernet>j�KhIj¦hQj2hS}r·(Urefurij°hX]r¸Uvlanr¹ahW]hU]hV]h[]rºh(auh_]ubhhX] for details on how to assign egress priority mapping for the priority tagged VLAN interface.r»…�r¼}r½(hHX] for details on how to assign egress priority mapping for the priority tagged VLAN interface.hIj¦ubeubjI)�r¾}r¿(hHXUseful commandsrÀhIj�hOjXhQjMhS}rÁ(hX]rÂUuseful-commandsrÃahW]hU]hV]h[]rÄhauh]Nh^hh_]rÅhhXUseful commandsrÆ…�rÇ}rÈ(hHjÀhIj¾ubaubh{)�rÉ}rÊ(hHXwUser can use the following command to view the VLAN filter table at PRU. (Similar commands apply for HSR and Dual EMAC)rËhIj�hOjXhQhƒhS}rÌ(hU]hV]hW]hX]h[]uh]M1h^hh_]rÍhhXwUser can use the following command to view the VLAN filter table at PRU. (Similar commands apply for HSR and Dual EMAC)rÎ…�rÏ}rÐ(hHjËhIjÉubaubj•)�rÑ}rÒ(hHX1cat /sys/kernel/debug/prueth-prp-/vlan_filterhIj�hOjXhQj˜hS}rÓ(h­h®hX]hW]hU]hV]h[]uh]M–h^hh_]rÔhhX1cat /sys/kernel/debug/prueth-prp-/vlan_filterrÕ…�rÖ}r×(hHUhIjÑubaubh{)�rØ}rÙ(hHXBWhere ID is described at :ref:`PLSDK_HSR_PRP_id_if_number_mapping`rÚhIj�hOjXhQhƒhS}rÛ(hU]hV]hW]hX]h[]uh]M8h^hh_]rÜ(hhXWhere ID is described at rÝ…�rÞ}rß(hHXWhere ID is described at hIjØubjØ)�rà}rá(hHX):ref:`PLSDK_HSR_PRP_id_if_number_mapping`râhIjØhOjXhQjÜhS}rã(UreftypeXrefjÞˆjßX"plsdk_hsr_prp_id_if_number_mappingU refdomainXstdrähX]hW]U refexplicit‰hU]hV]h[]jájâuh]M8h_]råjä)�ræ}rç(hHjâhS}rè(hU]hV]ré(jéjäXstd-refrêehW]hX]h[]uhIjàh_]rëhhX"PLSDK_HSR_PRP_id_if_number_mappingrì…�rí}rî(hHUhIjæubahQjïubaubeubj•)�rï}rð(hHXlroot@am57xx-evm:~# cat /sys/kernel/debug/prueth-prp-2/vlan_filter VLAN Filter : enabled VLAN Filter untagged : allowed to Host VLAN Filter priority tagged: allowed to Host 0: 0011000000000000000000000000000000000000000000000000000000000000 64: 0000000000000000000000000000000000000000000000000000000000000000 128: 0000000000000000000000000000000000000000000000000000000000000000 192: 0000000000000000000000000000000000000000000000000000000000000000 256: 0000000000000000000000000000000000000000000000000000000000000000 320: 0000000000000000000000000000000000000000000000000000000000000000 384: 0000000000000000000000000000000000000000000000000000000000000000 448: 0000000000000000000000000000000000000000000000000000000000000000 512: 0000000000000000000000000000000000000000000000000000000000000000 576: 0000000000000000000000000000000000000000000000000000000000000000 640: 0000000000000000000000000000000000000000000000000000000000000000 704: 0000000000000000000000000000000000000000000000000000000000000000 768: 0000000000000000000000000000000000000000000000000000000000000000 832: 0000000000000000000000000000000000000000000000000000000000000000 896: 0000000000000000000000000000000000000000000000000000000000000000 960: 0000000000000000000000000000000000000000000000000000000000000000 1024: 0000000000000000000000000000000000000000000000000000000000000000 1088: 0000000000000000000000000000000000000000000000000000000000000000 1152: 0000000000000000000000000000000000000000000000000000000000000000 1216: 0000000000000000000000000000000000000000000000000000000000000000 1280: 0000000000000000000000000000000000000000000000000000000000000000 1344: 0000000000000000000000000000000000000000000000000000000000000000 1408: 0000000000000000000000000000000000000000000000000000000000000000 1472: 0000000000000000000000000000000000000000000000000000000000000000 1536: 0000000000000000000000000000000000000000000000000000000000000000 1600: 0000000000000000000000000000000000000000000000000000000000000000 1664: 0000000000000000000000000000000000000000000000000000000000000000 1728: 0000000000000000000000000000000000000000000000000000000000000000 1792: 0000000000000000000000000000000000000000000000000000000000000000 1856: 0000000000000000000000000000000000000000000000000000000000000000 1920: 0000000000000000000000000000000000000000000000000000000000000000 1984: 0000000000000000000000000000000000000000000000000000000000000000 2048: 0000000000000000000000000000000000000000000000000000000000000000 2112: 0000000000000000000000000000000000000000000000000000000000000000 2176: 0000000000000000000000000000000000000000000000000000000000000000 2240: 0000000000000000000000000000000000000000000000000000000000000000 2304: 0000000000000000000000000000000000000000000000000000000000000000 2368: 0000000000000000000000000000000000000000000000000000000000000000 2432: 0000000000000000000000000000000000000000000000000000000000000000 2496: 0000000000000000000000000000000000000000000000000000000000000000 2560: 0000000000000000000000000000000000000000000000000000000000000000 2624: 0000000000000000000000000000000000000000000000000000000000000000 2688: 0000000000000000000000000000000000000000000000000000000000000000 2752: 0000000000000000000000000000000000000000000000000000000000000000 2816: 0000000000000000000000000000000000000000000000000000000000000000 2880: 0000000000000000000000000000000000000000000000000000000000000000 2944: 0000000000000000000000000000000000000000000000000000000000000000 3008: 0000000000000000000000000000000000000000000000000000000000000000 3072: 0000000000000000000000000000000000000000000000000000000000000000 3136: 0000000000000000000000000000000000000000000000000000000000000000 3200: 0000000000000000000000000000000000000000000000000000000000000000 3264: 0000000000000000000000000000000000000000000000000000000000000000 3328: 0000000000000000000000000000000000000000000000000000000000000000 3392: 0000000000000000000000000000000000000000000000000000000000000000 3456: 0000000000000000000000000000000000000000000000000000000000000000 3520: 0000000000000000000000000000000000000000000000000000000000000000 3584: 0000000000000000000000000000000000000000000000000000000000000000 3648: 0000000000000000000000000000000000000000000000000000000000000000 3712: 0000000000000000000000000000000000000000000000000000000000000000 3776: 0000000000000000000000000000000000000000000000000000000000000000 3840: 0000000000000000000000000000000000000000000000000000000000000000 3904: 0000000000000000000000000000000000000000000000000000000000000000 3968: 0000000000000000000000000000000000000000000000000000000000000000 4032: 0000000000000000000000000000000000000000000000000000000000000000hIj�hOjXhQj˜hS}rñ(h­h®hX]hW]hU]hV]h[]uh]Mœh^hh_]ròhhXlroot@am57xx-evm:~# cat /sys/kernel/debug/prueth-prp-2/vlan_filter VLAN Filter : enabled VLAN Filter untagged : allowed to Host VLAN Filter priority tagged: allowed to Host 0: 0011000000000000000000000000000000000000000000000000000000000000 64: 0000000000000000000000000000000000000000000000000000000000000000 128: 0000000000000000000000000000000000000000000000000000000000000000 192: 0000000000000000000000000000000000000000000000000000000000000000 256: 0000000000000000000000000000000000000000000000000000000000000000 320: 0000000000000000000000000000000000000000000000000000000000000000 384: 0000000000000000000000000000000000000000000000000000000000000000 448: 0000000000000000000000000000000000000000000000000000000000000000 512: 0000000000000000000000000000000000000000000000000000000000000000 576: 0000000000000000000000000000000000000000000000000000000000000000 640: 0000000000000000000000000000000000000000000000000000000000000000 704: 0000000000000000000000000000000000000000000000000000000000000000 768: 0000000000000000000000000000000000000000000000000000000000000000 832: 0000000000000000000000000000000000000000000000000000000000000000 896: 0000000000000000000000000000000000000000000000000000000000000000 960: 0000000000000000000000000000000000000000000000000000000000000000 1024: 0000000000000000000000000000000000000000000000000000000000000000 1088: 0000000000000000000000000000000000000000000000000000000000000000 1152: 0000000000000000000000000000000000000000000000000000000000000000 1216: 0000000000000000000000000000000000000000000000000000000000000000 1280: 0000000000000000000000000000000000000000000000000000000000000000 1344: 0000000000000000000000000000000000000000000000000000000000000000 1408: 0000000000000000000000000000000000000000000000000000000000000000 1472: 0000000000000000000000000000000000000000000000000000000000000000 1536: 0000000000000000000000000000000000000000000000000000000000000000 1600: 0000000000000000000000000000000000000000000000000000000000000000 1664: 0000000000000000000000000000000000000000000000000000000000000000 1728: 0000000000000000000000000000000000000000000000000000000000000000 1792: 0000000000000000000000000000000000000000000000000000000000000000 1856: 0000000000000000000000000000000000000000000000000000000000000000 1920: 0000000000000000000000000000000000000000000000000000000000000000 1984: 0000000000000000000000000000000000000000000000000000000000000000 2048: 0000000000000000000000000000000000000000000000000000000000000000 2112: 0000000000000000000000000000000000000000000000000000000000000000 2176: 0000000000000000000000000000000000000000000000000000000000000000 2240: 0000000000000000000000000000000000000000000000000000000000000000 2304: 0000000000000000000000000000000000000000000000000000000000000000 2368: 0000000000000000000000000000000000000000000000000000000000000000 2432: 0000000000000000000000000000000000000000000000000000000000000000 2496: 0000000000000000000000000000000000000000000000000000000000000000 2560: 0000000000000000000000000000000000000000000000000000000000000000 2624: 0000000000000000000000000000000000000000000000000000000000000000 2688: 0000000000000000000000000000000000000000000000000000000000000000 2752: 0000000000000000000000000000000000000000000000000000000000000000 2816: 0000000000000000000000000000000000000000000000000000000000000000 2880: 0000000000000000000000000000000000000000000000000000000000000000 2944: 0000000000000000000000000000000000000000000000000000000000000000 3008: 0000000000000000000000000000000000000000000000000000000000000000 3072: 0000000000000000000000000000000000000000000000000000000000000000 3136: 0000000000000000000000000000000000000000000000000000000000000000 3200: 0000000000000000000000000000000000000000000000000000000000000000 3264: 0000000000000000000000000000000000000000000000000000000000000000 3328: 0000000000000000000000000000000000000000000000000000000000000000 3392: 0000000000000000000000000000000000000000000000000000000000000000 3456: 0000000000000000000000000000000000000000000000000000000000000000 3520: 0000000000000000000000000000000000000000000000000000000000000000 3584: 0000000000000000000000000000000000000000000000000000000000000000 3648: 0000000000000000000000000000000000000000000000000000000000000000 3712: 0000000000000000000000000000000000000000000000000000000000000000 3776: 0000000000000000000000000000000000000000000000000000000000000000 3840: 0000000000000000000000000000000000000000000000000000000000000000 3904: 0000000000000000000000000000000000000000000000000000000000000000 3968: 0000000000000000000000000000000000000000000000000000000000000000 4032: 0000000000000000000000000000000000000000000000000000000000000000ró…�rô}rõ(hHUhIjïubaubhJ)�rö}r÷(hHUj�KhIj�hOjXhQhRhS}rø(hU]rùjíahV]hW]hX]rúUid1rûah[]uh]Mƒh^hh_]rü(ha)�rý}rþ(hHX Dual EMACrÿhIjöhOjXhQhehS}r(hU]hV]hW]hX]h[]uh]Mƒh^hh_]rhhX Dual EMACr…�r}r(hHjÿhIjýubaubh{)�r}r(hHXIIf using Dual EMAC, the only interface differences are the debugfs paths.rhIjöhOjXhQhƒhS}r(hU]hV]hW]hX]h[]uh]M…h^hh_]r hhXIIf using Dual EMAC, the only interface differences are the debugfs paths.r …�r }r (hHjhIjubaubj•)�r }r(hHX3/sys/kernel/debug/prueth-eth/vlan_filterhIjöhOjXhQj˜hS}r(h­h®hX]hW]hU]hV]h[]uh]Méh^hh_]rhhX3/sys/kernel/debug/prueth-eth/vlan_filterr…�r}r(hHUhIj ubaubh{)�r}r(hHXœInternally, the VLAN filter table(s) are stored in each PRU's Data RAM (PRU0->Data RAM0, PRU1->Data RAM1) instead of one table in Shared RAM as for HSR/PRP.rhIjöhOjXhQhƒhS}r(hU]hV]hW]hX]h[]uh]M‹h^hh_]rhhXœInternally, the VLAN filter table(s) are stored in each PRU's Data RAM (PRU0->Data RAM0, PRU1->Data RAM1) instead of one table in Shared RAM as for HSR/PRP.r…�r}r(hHjhIjubaubjI)�r}r(hHX LimitationrhIjöhOjXhQjMhS}r(hU]hV]hW]hX]h[]uh]M�h^hh_]r hhX Limitationr!…�r"}r#(hHjhIjubaubh{)�r$}r%(hHX÷Currently, the PRU firmware is configured to receive all of the untagged frames from the network when the VLAN filtering is enabled. However there is no support for port VLAN which allows these frames to be received at a designated VLAN interface.r&hIjöhOjXhQhƒhS}r'(hU]hV]hW]hX]h[]uh]M‘h^hh_]r(hhX÷Currently, the PRU firmware is configured to receive all of the untagged frames from the network when the VLAN filtering is enabled. However there is no support for port VLAN which allows these frames to be received at a designated VLAN interface.r)…�r*}r+(hHj&hIj$ubaubeubeubhJ)�r,}r-(hHUhIjFhOjXhQhRhS}r.(hU]hV]hW]hX]r/Unetwork-storm-preventionr0ah[]r1hauh]M—h^hh_]r2(ha)�r3}r4(hHXNetwork Storm Preventionr5hIj,hOjXhQhehS}r6(hU]hV]hW]hX]h[]uh]M—h^hh_]r7hhXNetwork Storm Preventionr8…�r9}r:(hHj5hIj3ubaubh{)�r;}r<(hHXßNetwork storm is defined as an excessive amount of Ethernet frames at the ingress of a network interface causing resources being wasted in the device for processing these frames and thereby affecting the device performance.r=hIj,hOjXhQhƒhS}r>(hU]hV]hW]hX]h[]uh]M˜h^hh_]r?hhXßNetwork storm is defined as an excessive amount of Ethernet frames at the ingress of a network interface causing resources being wasted in the device for processing these frames and thereby affecting the device performance.r@…�rA}rB(hHj=hIj;ubaubh{)�rC}rD(hHX¸PRUETH driver implements a control mechanism that user can enable to drop these frames if the number of frames received during a window (100 msec) reaches a threshold. PRUETH uses a credit value as the threshold which is user configurable on a per interface and packet type (broadcast/multicast/unicast) basis. There are sysfs entries ``nsp_credit_bc`` (broadcast), ``nsp_credit_mc`` (multicast), and ``nsp_credit_uc`` (unicast) located at:hIj,hOjXhQhƒhS}rE(hU]hV]hW]hX]h[]uh]M�h^hh_]rF(hhXOPRUETH driver implements a control mechanism that user can enable to drop these frames if the number of frames received during a window (100 msec) reaches a threshold. PRUETH uses a credit value as the threshold which is user configurable on a per interface and packet type (broadcast/multicast/unicast) basis. There are sysfs entries rG…�rH}rI(hHXOPRUETH driver implements a control mechanism that user can enable to drop these frames if the number of frames received during a window (100 msec) reaches a threshold. PRUETH uses a credit value as the threshold which is user configurable on a per interface and packet type (broadcast/multicast/unicast) basis. There are sysfs entries hIjCubcdocutils.nodes literal rJ)�rK}rL(hHX``nsp_credit_bc``hS}rM(hU]hV]hW]hX]h[]uhIjCh_]rNhhX nsp_credit_bcrO…�rP}rQ(hHUhIjKubahQUliteralrRubhhX (broadcast), rS…�rT}rU(hHX (broadcast), hIjCubjJ)�rV}rW(hHX``nsp_credit_mc``hS}rX(hU]hV]hW]hX]h[]uhIjCh_]rYhhX nsp_credit_mcrZ…�r[}r\(hHUhIjVubahQjRubhhX (multicast), and r]…�r^}r_(hHX (multicast), and hIjCubjJ)�r`}ra(hHX``nsp_credit_uc``hS}rb(hU]hV]hW]hX]h[]uhIjCh_]rchhX nsp_credit_ucrd…�re}rf(hHUhIj`ubahQjRubhhX (unicast) located at:rg…�rh}ri(hHX (unicast) located at:hIjCubeubj•)�rj}rk(hHXÎ/sys/devices/platform/pruss_eth/net/eth/nsp_credit_bc /sys/devices/platform/pruss_eth/net/eth/nsp_credit_mc /sys/devices/platform/pruss_eth/net/eth/nsp_credit_uchIj,hOjXhQj˜hS}rl(h­h®hX]hW]hU]hV]h[]uh]Mh^hh_]rmhhXÎ/sys/devices/platform/pruss_eth/net/eth/nsp_credit_bc /sys/devices/platform/pruss_eth/net/eth/nsp_credit_mc /sys/devices/platform/pruss_eth/net/eth/nsp_credit_ucrn…�ro}rp(hHUhIjjubaubh{)�rq}rr(hHXãWhere ID and if number are obtained from the table under the section :ref:`PLSDK_HSR_PRP_id_if_number_mapping`. The driver writes the credit value in DRAM based on the sysfs entry from user. The PRU firmware uses the credit value as a counter. The driver refreshes the counter every 100 msec. i.e write the credit value to memory every 100 msec. PRU Firmware upon receiving a frame decrements this counter until it becomes zero. Firmware forwards the frames to Host or ARM until the counter is non zero. PRU Firmware drops the frames if the counter is zero. Since driver writes the credit value to DRAM every 100 msec, the number of frames sent to host or ARM during a 100 msec window is limited to the credit value and anything beyond that is dropped by the firmware. Firmware maintains statistics counters, stormPrevCounterBC/stormPrevCounterMC/stormPrevCounterUC, for the number of frames dropped due to storm prevention control for each packet type and can be seen using ethtool -S command.hIj,hOjXhQhƒhS}rs(hU]hV]hW]hX]h[]uh]M«h^hh_]rt(hhXEWhere ID and if number are obtained from the table under the section ru…�rv}rw(hHXEWhere ID and if number are obtained from the table under the section hIjqubjØ)�rx}ry(hHX):ref:`PLSDK_HSR_PRP_id_if_number_mapping`rzhIjqhOjXhQjÜhS}r{(UreftypeXrefjÞˆjßX"plsdk_hsr_prp_id_if_number_mappingU refdomainXstdr|hX]hW]U refexplicit‰hU]hV]h[]jájâuh]M«h_]r}jä)�r~}r(hHjzhS}r€(hU]hV]r�(jéj|Xstd-refr‚ehW]hX]h[]uhIjxh_]rƒhhX"PLSDK_HSR_PRP_id_if_number_mappingr„…�r…}r†(hHUhIj~ubahQjïubaubhhXu. The driver writes the credit value in DRAM based on the sysfs entry from user. The PRU firmware uses the credit value as a counter. The driver refreshes the counter every 100 msec. i.e write the credit value to memory every 100 msec. PRU Firmware upon receiving a frame decrements this counter until it becomes zero. Firmware forwards the frames to Host or ARM until the counter is non zero. PRU Firmware drops the frames if the counter is zero. Since driver writes the credit value to DRAM every 100 msec, the number of frames sent to host or ARM during a 100 msec window is limited to the credit value and anything beyond that is dropped by the firmware. Firmware maintains statistics counters, stormPrevCounterBC/stormPrevCounterMC/stormPrevCounterUC, for the number of frames dropped due to storm prevention control for each packet type and can be seen using ethtool -S command.r‡…�rˆ}r‰(hHXu. The driver writes the credit value in DRAM based on the sysfs entry from user. The PRU firmware uses the credit value as a counter. The driver refreshes the counter every 100 msec. i.e write the credit value to memory every 100 msec. PRU Firmware upon receiving a frame decrements this counter until it becomes zero. Firmware forwards the frames to Host or ARM until the counter is non zero. PRU Firmware drops the frames if the counter is zero. Since driver writes the credit value to DRAM every 100 msec, the number of frames sent to host or ARM during a 100 msec window is limited to the credit value and anything beyond that is dropped by the firmware. Firmware maintains statistics counters, stormPrevCounterBC/stormPrevCounterMC/stormPrevCounterUC, for the number of frames dropped due to storm prevention control for each packet type and can be seen using ethtool -S command.hIjqubeubh{)�rŠ}r‹(hHXLNote that this feature is disabled by default and user needs to configure it explicitely to enable the feature. A write of non zero value to the sysfs file enables the feature and zero disables the feature. The value to be used may be experimented in a particular network situation and configured by the user. E.g. In a typical network, there will be few broadcast frames per 100 msec window such as ARP broadcast, DHCP broadcast, router advetisement etc. So user may observe the broadcast traffic in the network using network tools such as wireshark and set the credit value accordingly.rŒhIj,hOjXhQhƒhS}r�(hU]hV]hW]hX]h[]uh]M»h^hh_]rŽhhXLNote that this feature is disabled by default and user needs to configure it explicitely to enable the feature. A write of non zero value to the sysfs file enables the feature and zero disables the feature. The value to be used may be experimented in a particular network situation and configured by the user. E.g. In a typical network, there will be few broadcast frames per 100 msec window such as ARP broadcast, DHCP broadcast, router advetisement etc. So user may observe the broadcast traffic in the network using network tools such as wireshark and set the credit value accordingly.r�…�r�}r‘(hHjŒhIjŠubaubh{)�r’}r“(hHXExampler”hIj,hOjXhQhƒhS}r•(hU]hV]hW]hX]h[]uh]MÅh^hh_]r–hhXExampler—…�r˜}r™(hHj”hIj’ubaubh{)�rš}r›(hHX To enable dorœhIj,hOjXhQhƒhS}r�(hU]hV]hW]hX]h[]uh]MÇh^hh_]ržhhX To enable dorŸ…�r }r¡(hHjœhIjšubaubj•)�r¢}r£(hHXB>echo 10 > /sys/devices/platform/pruss2_eth/net/eth2/nsp_credit_bchIj,hOjXhQj˜hS}r¤(h­h®hX]hW]hU]hV]h[]uh]M+h^hh_]r¥hhXB>echo 10 > /sys/devices/platform/pruss2_eth/net/eth2/nsp_credit_bcr¦…�r§}r¨(hHUhIj¢ubaubh{)�r©}rª(hHX[for setting broadcast credit value to 10 for eth2. Similarly for other interfaces and typesr«hIj,hOjXhQhƒhS}r¬(hU]hV]hW]hX]h[]uh]MÍh^hh_]r­hhX[for setting broadcast credit value to 10 for eth2. Similarly for other interfaces and typesr®…�r¯}r°(hHj«hIj©ubaubh{)�r±}r²(hHX To disable dor³hIj,hOjXhQhƒhS}r´(hU]hV]hW]hX]h[]uh]MÐh^hh_]rµhhX To disable dor¶…�r·}r¸(hHj³hIj±ubaubj•)�r¹}rº(hHXA>echo 0 > /sys/devices/platform/pruss2_eth/net/eth2/nsp_credit_bchIj,hOjXhQj˜hS}r»(h­h®hX]hW]hU]hV]h[]uh]M4h^hh_]r¼hhXA>echo 0 > /sys/devices/platform/pruss2_eth/net/eth2/nsp_credit_bcr½…�r¾}r¿(hHUhIj¹ubaubeubhJ)�rÀ}rÁ(hHUhIjFhOjXhQhRhS}rÂ(hU]hV]hW]hX]rÃUreceive-interrupt-pacingrÄah[]rÅh:auh]M×h^hh_]rÆ(ha)�rÇ}rÈ(hHXReceive Interrupt PacingrÉhIjÀhOjXhQhehS}rÊ(hU]hV]hW]hX]h[]uh]M×h^hh_]rËhhXReceive Interrupt PacingrÌ…�rÍ}rÎ(hHjÉhIjÇubaubh{)�rÏ}rÐ(hHXyReceive interrupt pacing is a firmware feature to decrease the number of interrupts that need to be handled by the host. Without interrupt pacing, one interrupt is triggered per frame received. This can result in decreased performance due to interrupt handling overhead in the Linux kernel, especially for small sized frames (as are often used in grid infrastructure networks).rÑhIjÀhOjXhQhƒhS}rÒ(hU]hV]hW]hX]h[]uh]MÙh^hh_]rÓhhXyReceive interrupt pacing is a firmware feature to decrease the number of interrupts that need to be handled by the host. Without interrupt pacing, one interrupt is triggered per frame received. This can result in decreased performance due to interrupt handling overhead in the Linux kernel, especially for small sized frames (as are often used in grid infrastructure networks).rÔ…�rÕ}rÖ(hHjÑhIjÏubaubh{)�r×}rØ(hHXdThis receive interrupt pacing allows Ethernet frames to accumulate in the ingress ring buffer between the host and PRU for a configurable time, and triggers an interrupt on timeout expiry. The driver processes all queued frames upon receiving an RX interrupt. The firmware implements this RX pacing timer, which is configured by the PRUETH driver when the network device is opened and stopped when the device is closed. For HSR/PRP, one RX pacing timer is shared between ports. One timer is used because the HSR/PRP ports trigger common priority-based interrupts. For EMAC, there is one RX pacing timer per port.rÙhIjÀhOjXhQhƒhS}rÚ(hU]hV]hW]hX]h[]uh]Màh^hh_]rÛhhXdThis receive interrupt pacing allows Ethernet frames to accumulate in the ingress ring buffer between the host and PRU for a configurable time, and triggers an interrupt on timeout expiry. The driver processes all queued frames upon receiving an RX interrupt. The firmware implements this RX pacing timer, which is configured by the PRUETH driver when the network device is opened and stopped when the device is closed. For HSR/PRP, one RX pacing timer is shared between ports. One timer is used because the HSR/PRP ports trigger common priority-based interrupts. For EMAC, there is one RX pacing timer per port.rÜ…�rÝ}rÞ(hHjÙhIj×ubaubh{)�rß}rà(hHXThe user may show the timer value using the ethtool –c option which is a standard Linux command to show different coalesce parameters at the network device. –C option allows user to override the default value at the device. The driver uses a default timeout value of 123 usec (Duration of an MTU frame). User is not expected to change this as there are limited number of buffers in the receive path between Host and PRU and using a bigger value can result in packet loss. However ethtool –c option is implemented in the PRUETH driver to show current setting in the driver and -C to change it if needed. Driver supports rx-usecs and adaptive-rx parameters from the available list of parameters and can be changed using –C option. There are 3 modes of pacing available:ráhIjÀhOjXhQhƒhS}râ(hU]hV]hW]hX]h[]uh]Mêh^hh_]rãhhXThe user may show the timer value using the ethtool –c option which is a standard Linux command to show different coalesce parameters at the network device. –C option allows user to override the default value at the device. The driver uses a default timeout value of 123 usec (Duration of an MTU frame). User is not expected to change this as there are limited number of buffers in the receive path between Host and PRU and using a bigger value can result in packet loss. However ethtool –c option is implemented in the PRUETH driver to show current setting in the driver and -C to change it if needed. Driver supports rx-usecs and adaptive-rx parameters from the available list of parameters and can be changed using –C option. There are 3 modes of pacing available:rä…�rå}ræ(hHjáhIjßubaubh{)�rç}rè(hHX **Pacing enabled (default):** At each timer expiry, firmware checks if any frames were received during the interval, and if so triggers an interrupt. Frames received during timer interval set a flag but do not trigger an interrupt. Default timer interval is 123 us.hIjÀhOjXhQhƒhS}ré(hU]hV]hW]hX]h[]uh]M÷h^hh_]rê(hæ)�rë}rì(hHX**Pacing enabled (default):**hS}rí(hU]hV]hW]hX]h[]uhIjçh_]rîhhXPacing enabled (default):rï…�rð}rñ(hHUhIjëubahQhîubhhXì At each timer expiry, firmware checks if any frames were received during the interval, and if so triggers an interrupt. Frames received during timer interval set a flag but do not trigger an interrupt. Default timer interval is 123 us.rò…�ró}rô(hHXì At each timer expiry, firmware checks if any frames were received during the interval, and if so triggers an interrupt. Frames received during timer interval set a flag but do not trigger an interrupt. Default timer interval is 123 us.hIjçubeubh{)�rõ}rö(hHXº**Adaptive pacing enabled:** At each timer expiry, firmware checks if any frames were received during the interval, and if so triggers an interrupt. Frames received during timer interval in an *empty* queue trigger an interrupt immediately, frames received to a non-empty queue set a flag but do not trigger an interrupt. (This can help improve latency when using pacing, but is disabled by default because as it results in lower throughput.)hIjÀhOjXhQhƒhS}r÷(hU]hV]hW]hX]h[]uh]Müh^hh_]rø(hæ)�rù}rú(hHX**Adaptive pacing enabled:**hS}rû(hU]hV]hW]hX]h[]uhIjõh_]rühhXAdaptive pacing enabled:rý…�rþ}rÿ(hHUhIjùubahQhîubhhX¥ At each timer expiry, firmware checks if any frames were received during the interval, and if so triggers an interrupt. Frames received during timer interval in an r…�r}r(hHX¥ At each timer expiry, firmware checks if any frames were received during the interval, and if so triggers an interrupt. Frames received during timer interval in an hIjõubj’)�r}r(hHX*empty*hS}r(hU]hV]hW]hX]h[]uhIjõh_]rhhXemptyr…�r}r (hHUhIjubahQjšubhhXò queue trigger an interrupt immediately, frames received to a non-empty queue set a flag but do not trigger an interrupt. (This can help improve latency when using pacing, but is disabled by default because as it results in lower throughput.)r …�r }r (hHXò queue trigger an interrupt immediately, frames received to a non-empty queue set a flag but do not trigger an interrupt. (This can help improve latency when using pacing, but is disabled by default because as it results in lower throughput.)hIjõubeubh{)�r }r(hHXG**Pacing disabled:** An interrupt is triggered for each frame received.hIjÀhOjXhQhƒhS}r(hU]hV]hW]hX]h[]uh]Mh^hh_]r(hæ)�r}r(hHX**Pacing disabled:**hS}r(hU]hV]hW]hX]h[]uhIj h_]rhhXPacing disabled:r…�r}r(hHUhIjubahQhîubhhX3 An interrupt is triggered for each frame received.r…�r}r(hHX3 An interrupt is triggered for each frame received.hIj ubeubh{)�r}r(hHXExamplerhIjÀhOjXhQhƒhS}r(hU]hV]hW]hX]h[]uh]Mh^hh_]rhhXExampler …�r!}r"(hHjhIjubaubh{)�r#}r$(hHX.To show the current value of pacing timer, user%hIjÀhOjXhQhƒhS}r&(hU]hV]hW]hX]h[]uh]M h^hh_]r'hhX.To show the current value of pacing timer, user(…�r)}r*(hHj%hIj#ubaubj•)�r+}r,(hHX">ethtool –c hIjÀhOjXhQj˜hS}r-(h­h®hX]hW]hU]hV]h[]uh]Mnh^hh_]r.hhX">ethtool –c r/…�r0}r1(hHUhIj+ubaubh{)�r2}r3(hHX To change the current value, user4hIjÀhOjXhQhƒhS}r5(hU]hV]hW]hX]h[]uh]Mh^hh_]r6hhX To change the current value, user7…�r8}r9(hHj4hIj2ubaubj•)�r:}r;(hHXB>ethtool –C hIjÀhOjXhQj˜hS}r<(h­h®hX]hW]hU]hV]h[]uh]Mth^hh_]r=hhXB>ethtool –C r>…�r?}r@(hHUhIj:ubaubh{)�rA}rB(hHXFor example for eth2, user typerChIjÀhOjXhQhƒhS}rD(hU]hV]hW]hX]h[]uh]Mh^hh_]rEhhXFor example for eth2, user typerF…�rG}rH(hHjChIjAubaubj•)�rI}rJ(hHX>ethtool –c eth2hIjÀhOjXhQj˜hS}rK(h­h®hX]hW]hU]hV]h[]uh]Mzh^hh_]rLhhX>ethtool –c eth2rM…�rN}rO(hHUhIjIubaubh{)�rP}rQ(hHXNote that this changes the timer at both PRUs (for HSR/PRP). So the command may be issued to one of the pair of Ethernet interfaces used for the HSR or PRP interface. i.e for ICSS2 (assuming eth2 and eth3), user may use either of the below command to set the timerrRhIjÀhOjXhQhƒhS}rS(hU]hV]hW]hX]h[]uh]Mh^hh_]rThhXNote that this changes the timer at both PRUs (for HSR/PRP). So the command may be issued to one of the pair of Ethernet interfaces used for the HSR or PRP interface. i.e for ICSS2 (assuming eth2 and eth3), user may use either of the below command to set the timerrU…�rV}rW(hHjRhIjPubaubj•)�rX}rY(hHX>ethtool –C eth2 rx-usecs 123hIjÀhOjXhQj˜hS}rZ(h­h®hX]hW]hU]hV]h[]uh]M„h^hh_]r[hhX>ethtool –C eth2 rx-usecs 123r\…�r]}r^(hHUhIjXubaubh{)�r_}r`(hHXorrahIjÀhOjXhQhƒhS}rb(hU]hV]hW]hX]h[]uh]M&h^hh_]rchhXorrd…�re}rf(hHjahIj_ubaubj•)�rg}rh(hHX>ethtool –C eth3 rx-usecs 123hIjÀhOjXhQj˜hS}ri(h­h®hX]hW]hU]hV]h[]uh]MŠh^hh_]rjhhX>ethtool –C eth3 rx-usecs 123rk…�rl}rm(hHUhIjgubaubh{)�rn}ro(hHX+Similarly to enable adaptive-rx, user typesrphIjÀhOjXhQhƒhS}rq(hU]hV]hW]hX]h[]uh]M,h^hh_]rrhhX+Similarly to enable adaptive-rx, user typesrs…�rt}ru(hHjphIjnubaubj•)�rv}rw(hHX!>ethtool –C eth2 adaptive-rx onhIjÀhOjXhQj˜hS}rx(h­h®hX]hW]hU]hV]h[]uh]M�h^hh_]ryhhX!>ethtool –C eth2 adaptive-rx onrz…�r{}r|(hHUhIjvubaubh{)�r}}r~(hHXorrhIjÀhOjXhQhƒhS}r€(hU]hV]hW]hX]h[]uh]M2h^hh_]r�hhXorr‚…�rƒ}r„(hHjhIj}ubaubj•)�r…}r†(hHX!>ethtool –C eth3 adaptive-rx onhIjÀhOjXhQj˜hS}r‡(h­h®hX]hW]hU]hV]h[]uh]M–h^hh_]rˆhhX!>ethtool –C eth3 adaptive-rx onr‰…�rŠ}r‹(hHUhIj…ubaubh{)�rŒ}r�(hHX+Both parameters may be updated in one go asrŽhIjÀhOjXhQhƒhS}r�(hU]hV]hW]hX]h[]uh]M8h^hh_]r�hhX+Both parameters may be updated in one go asr‘…�r’}r“(hHjŽhIjŒubaubj•)�r”}r•(hHX.>ethtool –C eth2 rx-usecs 123 adaptive-rx onhIjÀhOjXhQj˜hS}r–(h­h®hX]hW]hU]hV]h[]uh]Mœh^hh_]r—hhX.>ethtool –C eth2 rx-usecs 123 adaptive-rx onr˜…�r™}rš(hHUhIj”ubaubh{)�r›}rœ(hHXyMore details on the command syntax are available by typing man ethtool on a Linux PC as this is a standard Linux command.r�hIjÀhOjXhQhƒhS}rž(hU]hV]hW]hX]h[]uh]M>h^hh_]rŸhhXyMore details on the command syntax are available by typing man ethtool on a Linux PC as this is a standard Linux command.r …�r¡}r¢(hHj�hIj›ubaubeubhJ)�r£}r¤(hHUhIjFhOjXhQhRhS}r¥(hU]hV]hW]hX]r¦Uvlan-tag-in-supervision-framer§ah[]r¨h/auh]MCh^hh_]r©(ha)�rª}r«(hHXVLAN Tag in Supervision framer¬hIj£hOjXhQhehS}r­(hU]hV]hW]hX]h[]uh]MCh^hh_]r®hhXVLAN Tag in Supervision framer¯…�r°}r±(hHj¬hIjªubaubh{)�r²}r³(hHXìHSR/PRP protocol standard IEC62439-3 defines that the PRP_Supervision frame as well as HSR_Supervision frames optionally include a VLAN tag header. Starting with Processor SDK 5.1.x, VLAN tag is supprted in Linux HSR/PRP implementation.r´hIj£hOjXhQhƒhS}rµ(hU]hV]hW]hX]h[]uh]MEh^hh_]r¶hhXìHSR/PRP protocol standard IEC62439-3 defines that the PRP_Supervision frame as well as HSR_Supervision frames optionally include a VLAN tag header. Starting with Processor SDK 5.1.x, VLAN tag is supprted in Linux HSR/PRP implementation.r·…�r¸}r¹(hHj´hIj²ubaubh{)�rº}r»(hHXJIn Linux, user use the ip link add command to create an HSR/PRP interface. ip link command is supported by the iproute2 package which is an open source software. hsr or prp type is currently a supported link type by ip link command. To support VLAN tag in SV frames, the command now accepts 3 more parameters from user. They are:-r¼hIj£hOjXhQhƒhS}r½(hU]hV]hW]hX]h[]uh]MJh^hh_]r¾hhXJIn Linux, user use the ip link add command to create an HSR/PRP interface. ip link command is supported by the iproute2 package which is an open source software. hsr or prp type is currently a supported link type by ip link command. To support VLAN tag in SV frames, the command now accepts 3 more parameters from user. They are:-r¿…�rÀ}rÁ(hHj¼hIjºubaubjû)�rÂ}rÃ(hHUhIj£hONhQjþhS}rÄ(hU]hV]hW]hX]h[]uh]Nh^hh_]rÅhÔ)�rÆ}rÇ(hHUhS}rÈ(hÙX*hX]hW]hU]hV]h[]uhIjÂh_]rÉ(hÛ)�rÊ}rË(hHXVLAN Identifier (VID) - sv_vidrÌhS}rÍ(hU]hV]hW]hX]h[]uhIjÆh_]rÎh{)�rÏ}rÐ(hHjÌhIjÊhOjXhQhƒhS}rÑ(hU]hV]hW]hX]h[]uh]MPh_]rÒhhXVLAN Identifier (VID) - sv_vidrÓ…�rÔ}rÕ(hHjÌhIjÏubaubahQhÞubhÛ)�rÖ}r×(hHX"Priority code point (PCP) - sv_pcprØhS}rÙ(hU]hV]hW]hX]h[]uhIjÆh_]rÚh{)�rÛ}rÜ(hHjØhIjÖhOjXhQhƒhS}rÝ(hU]hV]hW]hX]h[]uh]MQh_]rÞhhX"Priority code point (PCP) - sv_pcprß…�rà}rá(hHjØhIjÛubaubahQhÞubhÛ)�râ}rã(hHX^Drop eligible indicator (DEI) or formerly known as Canonical Format Indicator (CFI) - sv_dei hS}rä(hU]hV]hW]hX]h[]uhIjÆh_]råh{)�ræ}rç(hHX]Drop eligible indicator (DEI) or formerly known as Canonical Format Indicator (CFI) - sv_deirèhIjâhOjXhQhƒhS}ré(hU]hV]hW]hX]h[]uh]MRh_]rêhhX]Drop eligible indicator (DEI) or formerly known as Canonical Format Indicator (CFI) - sv_deirë…�rì}rí(hHjèhIjæubaubahQhÞubehQh×ubaubh{)�rî}rï(hHXKUser provides following values in the ip link add command for this purpose.rðhIj£hOjXhQhƒhS}rñ(hU]hV]hW]hX]h[]uh]MTh^hh_]ròhhXKUser provides following values in the ip link add command for this purpose.ró…�rô}rõ(hHjðhIjîubaubj•)�rö}r÷(hHX8sv_vid sv_pcp sv_dei hIj£hOjXhQj˜hS}rø(h­h®hX]hW]hU]hV]h[]uh]M¸h^hh_]rùhhX8sv_vid sv_pcp sv_dei rú…�rû}rü(hHUhIjöubaubh{)�rý}rþ(hHX•These are all optional parameters. At least one of the value to be provided to use vlan. A default value of zero is used if not supplied by the user.rÿhIj£hOjXhQhƒhS}r(hU]hV]hW]hX]h[]uh]MZh^hh_]rhhX•These are all optional parameters. At least one of the value to be provided to use vlan. A default value of zero is used if not supplied by the user.r…�r}r(hHjÿhIjýubaubeubhJ)�r}r(hHUj�KhIjFhOjXhQhRhS}r(hU]rj ahV]hW]hX]r Uid2r ah[]uh]M^h^hh_]r (ha)�r }r (hHX Node TablerhIjhOjXhQhehS}r(hU]hV]hW]hX]h[]uh]M^h^hh_]rhhX Node Tabler…�r}r(hHjhIj ubaubh{)�r}r(hHXHSR/PRP offloaded LRE supports a Node Table (NT) of 256 entries on AM5/K2G devices and 128 entries on AM3/4 devices. NT entries are maintained in shared RAM of the PRU ICSS. For HSR, an entry containing the MAC address of the remote node is inserted to the Node table when a supervison(SV) frame is received from that node. For PRP, this gets added for any frame received from the node. Firmware first looks up the address in the NT upon receiving a SV frame. The look up status is indicated in a bit in the buffer descriptor. The same is checked by the driver and if the look up status indicates no success, the MAC entry is inserted to the NT by driver. For subsequent frames received from the node, the firmware updates the NT and the insertion process is skipped in the driver.rhIjhOjXhQhƒhS}r(hU]hV]hW]hX]h[]uh]M`h^hh_]rhhXHSR/PRP offloaded LRE supports a Node Table (NT) of 256 entries on AM5/K2G devices and 128 entries on AM3/4 devices. NT entries are maintained in shared RAM of the PRU ICSS. For HSR, an entry containing the MAC address of the remote node is inserted to the Node table when a supervison(SV) frame is received from that node. For PRP, this gets added for any frame received from the node. Firmware first looks up the address in the NT upon receiving a SV frame. The look up status is indicated in a bit in the buffer descriptor. The same is checked by the driver and if the look up status indicates no success, the MAC entry is inserted to the NT by driver. For subsequent frames received from the node, the firmware updates the NT and the insertion process is skipped in the driver.r…�r}r(hHjhIjubaubh{)�r}r(hHXîThe driver also runs an ageing timer to forget the node if there was no frame received from the remote node for a period of time as specified by the standard. During the timeout, if the entry is aged, then the same is deleted from the NT.rhIjhOjXhQhƒhS}r(hU]hV]hW]hX]h[]uh]Mlh^hh_]r hhXîThe driver also runs an ageing timer to forget the node if there was no frame received from the remote node for a period of time as specified by the standard. During the timeout, if the entry is aged, then the same is deleted from the NT.r!…�r"}r#(hHjhIjubaubh{)�r$}r%(hHXrIn Summary, search/update of an NT entry is done in firmware and insert/ delete of an entry is done by the driver.r&hIjhOjXhQhƒhS}r'(hU]hV]hW]hX]h[]uh]Mqh^hh_]r(hhXrIn Summary, search/update of an NT entry is done in firmware and insert/ delete of an entry is done by the driver.r)…�r*}r+(hHj&hIj$ubaubh{)�r,}r-(hHXjThe NT entries can be displayed by the user at the console using the proc file /proc//node-table.r.hIjhOjXhQhƒhS}r/(hU]hV]hW]hX]h[]uh]Mth^hh_]r0hhXjThe NT entries can be displayed by the user at the console using the proc file /proc//node-table.r1…�r2}r3(hHj.hIj,ubaubh{)�r4}r5(hHXbExample: If the interface name is prp0, a sample command is shown below to display the NT entries.r6hIjhOjXhQhƒhS}r7(hU]hV]hW]hX]h[]uh]Mwh^hh_]r8hhXbExample: If the interface name is prp0, a sample command is shown below to display the NT entries.r9…�r:}r;(hHj6hIj4ubaubj•)�r<}r=(hHX�root@am57xx-evm:~# cat /proc/prp0/node-table Remote nodes in network: 1 Node[0]: MAC ADDR: 70:ff:76:1c:16:ef DANP Time Last Seen: RxA=0 RxB=0hIjhOjXhQj˜hS}r>(h­h®hX]hW]hU]hV]h[]uh]MÜh^hh_]r?hhX�root@am57xx-evm:~# cat /proc/prp0/node-table Remote nodes in network: 1 Node[0]: MAC ADDR: 70:ff:76:1c:16:ef DANP Time Last Seen: RxA=0 RxB=0r@…�rA}rB(hHUhIj<ubaubeubhJ)�rC}rD(hHUhIjFhOjXhQhRhS}rE(hU]hV]hW]hX]rFUnet-snmprGah[]rHhauh]M†h^hh_]rI(ha)�rJ}rK(hHXNet-SNMPrLhIjChOjXhQhehS}rM(hU]hV]hW]hX]h[]uh]M†h^hh_]rNhhXNet-SNMPrO…�rP}rQ(hHjLhIjJubaubh{)�rR}rS(hHX(The TI SDK release ships tisdk-rootfs-image-am57xx-evm.tar.xz with Net-SNMP 5.8 binaries pre-installed and snmpd is started as part of the user space initialization. TI has developed a Net-SNMP module to support IEC-62439-3 related MIB access at the DAN using snmp commands such as snmpwalk, snmpget etc. **NOTE:** IEC-62439-3 MIB is supported only in the offloaded case. So user is expected to create HSR/PRP interface with offload. For details on how to setup HSR/PRP interface with offload, please refer :ref:`PLSDK_HSR_PRP_Testing_Firmware_Offload`hIjChOjXhQhƒhS}rT(hU]hV]hW]hX]h[]uh]Mˆh^hh_]rU(hhX1The TI SDK release ships tisdk-rootfs-image-am57xx-evm.tar.xz with Net-SNMP 5.8 binaries pre-installed and snmpd is started as part of the user space initialization. TI has developed a Net-SNMP module to support IEC-62439-3 related MIB access at the DAN using snmp commands such as snmpwalk, snmpget etc. rV…�rW}rX(hHX1The TI SDK release ships tisdk-rootfs-image-am57xx-evm.tar.xz with Net-SNMP 5.8 binaries pre-installed and snmpd is started as part of the user space initialization. TI has developed a Net-SNMP module to support IEC-62439-3 related MIB access at the DAN using snmp commands such as snmpwalk, snmpget etc. hIjRubhæ)�rY}rZ(hHX **NOTE:**hS}r[(hU]hV]hW]hX]h[]uhIjRh_]r\hhXNOTE:r]…�r^}r_(hHUhIjYubahQhîubhhXÁ IEC-62439-3 MIB is supported only in the offloaded case. So user is expected to create HSR/PRP interface with offload. For details on how to setup HSR/PRP interface with offload, please refer r`…�ra}rb(hHXÁ IEC-62439-3 MIB is supported only in the offloaded case. So user is expected to create HSR/PRP interface with offload. For details on how to setup HSR/PRP interface with offload, please refer hIjRubjØ)�rc}rd(hHX-:ref:`PLSDK_HSR_PRP_Testing_Firmware_Offload`rehIjRhOjXhQjÜhS}rf(UreftypeXrefjÞˆjßX&plsdk_hsr_prp_testing_firmware_offloadU refdomainXstdrghX]hW]U refexplicit‰hU]hV]h[]jájâuh]Mˆh_]rhjä)�ri}rj(hHjehS}rk(hU]hV]rl(jéjgXstd-refrmehW]hX]h[]uhIjch_]rnhhX&PLSDK_HSR_PRP_Testing_Firmware_Offloadro…�rp}rq(hHUhIjiubahQjïubaubeubjI)�rr}rs(hHXCommand examplesrthIjChOjXhQjMhS}ru(hX]rvUcommand-examplesrwahW]hU]hV]h[]rxh>auh]Nh^hh_]ryhhXCommand examplesrz…�r{}r|(hHjthIjrubaubh{)�r}}r~(hHX‰An example snmpwalk command execution is shown below where 192.168.2.20 is the IP address of the remote DAN-P or DAN-H prp/hsr interface.rhIjChOjXhQhƒhS}r€(hU]hV]hW]hX]h[]uh]M”h^hh_]r�hhX‰An example snmpwalk command execution is shown below where 192.168.2.20 is the IP address of the remote DAN-P or DAN-H prp/hsr interface.r‚…�rƒ}r„(hHjhIj}ubaubj•)�r…}r†(hHXj root@am57xx-evm:/etc/snmp# snmpwalk -v 2c -c public 192.168.2.20 iec62439 IEC-62439-3-MIB::lreManufacturerName.0 = STRING: TI LRE IEC-62439-3-MIB::lreInterfaceCount.0 = INTEGER: 1 IEC-62439-3-MIB::lreRowStatus.1 = INTEGER: active(1) IEC-62439-3-MIB::lreNodeType.1 = INTEGER: hsr(2) IEC-62439-3-MIB::lreNodeName.1 = STRING: hsr0 IEC-62439-3-MIB::lreVersionName.1 = "" IEC-62439-3-MIB::lreMacAddress.1 = STRING: d2:ef:e6:2a:1f:5b IEC-62439-3-MIB::lrePortAdminStateA.1 = INTEGER: active(2) IEC-62439-3-MIB::lrePortAdminStateB.1 = INTEGER: active(2) IEC-62439-3-MIB::lreLinkStatusA.1 = INTEGER: up(1) IEC-62439-3-MIB::lreLinkStatusB.1 = INTEGER: up(1) IEC-62439-3-MIB::lreDuplicateDiscard.1 = INTEGER: discard(2) IEC-62439-3-MIB::lreTransparentReception.1 = INTEGER: 0 IEC-62439-3-MIB::lreHsrLREMode.1 = INTEGER: modeh(1) IEC-62439-3-MIB::lreSwitchingEndNode.1 = INTEGER: hsrnode(5) IEC-62439-3-MIB::lreRedBoxIdentity.1 = INTEGER: id1a(2) IEC-62439-3-MIB::lreEvaluateSupervision.1 = INTEGER: true(1) IEC-62439-3-MIB::lreNodesTableClear.1 = INTEGER: noOp(0) IEC-62439-3-MIB::lreProxyNodeTableClear.1 = INTEGER: noOp(0) IEC-62439-3-MIB::lreDupListResideMaxTime.1 = INTEGER: 26214 binaryFractionOfSecond IEC-62439-3-MIB::lreCntTxA.1 = Counter32: 7384 IEC-62439-3-MIB::lreCntTxB.1 = Counter32: 7385 IEC-62439-3-MIB::lreCntTxC.1 = Counter32: 4032 IEC-62439-3-MIB::lreCntErrWrongLanA.1 = Counter32: 0 IEC-62439-3-MIB::lreCntErrWrongLanB.1 = Counter32: 0 IEC-62439-3-MIB::lreCntErrWrongLanC.1 = Counter32: 0 IEC-62439-3-MIB::lreCntRxA.1 = Counter32: 4024 IEC-62439-3-MIB::lreCntRxB.1 = Counter32: 4025 IEC-62439-3-MIB::lreCntRxC.1 = Counter32: 0 IEC-62439-3-MIB::lreCntErrorsA.1 = Counter32: 3351 IEC-62439-3-MIB::lreCntErrorsB.1 = Counter32: 3351 IEC-62439-3-MIB::lreCntErrorsC.1 = Counter32: 0 IEC-62439-3-MIB::lreCntNodes.1 = INTEGER: 1 IEC-62439-3-MIB::lreCntProxyNodes.1 = INTEGER: 0 IEC-62439-3-MIB::lreCntUniqueA.1 = Counter32: 4 IEC-62439-3-MIB::lreCntUniqueB.1 = Counter32: 4 IEC-62439-3-MIB::lreCntUniqueC.1 = Counter32: 0 IEC-62439-3-MIB::lreCntDuplicateA.1 = Counter32: 0 IEC-62439-3-MIB::lreCntDuplicateB.1 = Counter32: 0 IEC-62439-3-MIB::lreCntDuplicateC.1 = Counter32: 3992 IEC-62439-3-MIB::lreCntMultiA.1 = Counter32: 0 IEC-62439-3-MIB::lreCntMultiB.1 = Counter32: 0 IEC-62439-3-MIB::lreCntMultiC.1 = Counter32: 0 IEC-62439-3-MIB::lreCntOwnRxA.1 = Counter32: 0 IEC-62439-3-MIB::lreCntOwnRxB.1 = Counter32: 0 IEC-62439-3-MIB::lreNodesMacAddress.1.1 = STRING: 70:ff:76:1c:f:8d IEC-62439-3-MIB::lreTimeLastSeenA.1.1 = Timeticks: (0) 0:00:00.00 IEC-62439-3-MIB::lreTimeLastSeenB.1.1 = Timeticks: (1) 0:00:00.01 IEC-62439-3-MIB::lreRemNodeType.1.1 = INTEGER: danh(3)hIjChOjXhQj˜hS}r‡(h­h®hX]hW]hU]hV]h[]uh]Mùh^hh_]rˆhhXj root@am57xx-evm:/etc/snmp# snmpwalk -v 2c -c public 192.168.2.20 iec62439 IEC-62439-3-MIB::lreManufacturerName.0 = STRING: TI LRE IEC-62439-3-MIB::lreInterfaceCount.0 = INTEGER: 1 IEC-62439-3-MIB::lreRowStatus.1 = INTEGER: active(1) IEC-62439-3-MIB::lreNodeType.1 = INTEGER: hsr(2) IEC-62439-3-MIB::lreNodeName.1 = STRING: hsr0 IEC-62439-3-MIB::lreVersionName.1 = "" IEC-62439-3-MIB::lreMacAddress.1 = STRING: d2:ef:e6:2a:1f:5b IEC-62439-3-MIB::lrePortAdminStateA.1 = INTEGER: active(2) IEC-62439-3-MIB::lrePortAdminStateB.1 = INTEGER: active(2) IEC-62439-3-MIB::lreLinkStatusA.1 = INTEGER: up(1) IEC-62439-3-MIB::lreLinkStatusB.1 = INTEGER: up(1) IEC-62439-3-MIB::lreDuplicateDiscard.1 = INTEGER: discard(2) IEC-62439-3-MIB::lreTransparentReception.1 = INTEGER: 0 IEC-62439-3-MIB::lreHsrLREMode.1 = INTEGER: modeh(1) IEC-62439-3-MIB::lreSwitchingEndNode.1 = INTEGER: hsrnode(5) IEC-62439-3-MIB::lreRedBoxIdentity.1 = INTEGER: id1a(2) IEC-62439-3-MIB::lreEvaluateSupervision.1 = INTEGER: true(1) IEC-62439-3-MIB::lreNodesTableClear.1 = INTEGER: noOp(0) IEC-62439-3-MIB::lreProxyNodeTableClear.1 = INTEGER: noOp(0) IEC-62439-3-MIB::lreDupListResideMaxTime.1 = INTEGER: 26214 binaryFractionOfSecond IEC-62439-3-MIB::lreCntTxA.1 = Counter32: 7384 IEC-62439-3-MIB::lreCntTxB.1 = Counter32: 7385 IEC-62439-3-MIB::lreCntTxC.1 = Counter32: 4032 IEC-62439-3-MIB::lreCntErrWrongLanA.1 = Counter32: 0 IEC-62439-3-MIB::lreCntErrWrongLanB.1 = Counter32: 0 IEC-62439-3-MIB::lreCntErrWrongLanC.1 = Counter32: 0 IEC-62439-3-MIB::lreCntRxA.1 = Counter32: 4024 IEC-62439-3-MIB::lreCntRxB.1 = Counter32: 4025 IEC-62439-3-MIB::lreCntRxC.1 = Counter32: 0 IEC-62439-3-MIB::lreCntErrorsA.1 = Counter32: 3351 IEC-62439-3-MIB::lreCntErrorsB.1 = Counter32: 3351 IEC-62439-3-MIB::lreCntErrorsC.1 = Counter32: 0 IEC-62439-3-MIB::lreCntNodes.1 = INTEGER: 1 IEC-62439-3-MIB::lreCntProxyNodes.1 = INTEGER: 0 IEC-62439-3-MIB::lreCntUniqueA.1 = Counter32: 4 IEC-62439-3-MIB::lreCntUniqueB.1 = Counter32: 4 IEC-62439-3-MIB::lreCntUniqueC.1 = Counter32: 0 IEC-62439-3-MIB::lreCntDuplicateA.1 = Counter32: 0 IEC-62439-3-MIB::lreCntDuplicateB.1 = Counter32: 0 IEC-62439-3-MIB::lreCntDuplicateC.1 = Counter32: 3992 IEC-62439-3-MIB::lreCntMultiA.1 = Counter32: 0 IEC-62439-3-MIB::lreCntMultiB.1 = Counter32: 0 IEC-62439-3-MIB::lreCntMultiC.1 = Counter32: 0 IEC-62439-3-MIB::lreCntOwnRxA.1 = Counter32: 0 IEC-62439-3-MIB::lreCntOwnRxB.1 = Counter32: 0 IEC-62439-3-MIB::lreNodesMacAddress.1.1 = STRING: 70:ff:76:1c:f:8d IEC-62439-3-MIB::lreTimeLastSeenA.1.1 = Timeticks: (0) 0:00:00.00 IEC-62439-3-MIB::lreTimeLastSeenB.1.1 = Timeticks: (1) 0:00:00.01 IEC-62439-3-MIB::lreRemNodeType.1.1 = INTEGER: danh(3)r‰…�rŠ}r‹(hHUhIj…ubaubh{)�rŒ}r�(hHXjIndividual MIB variable may be queried or set using snmpset or snmpget commands. Below are some examples:-rŽhIjChOjXhQhƒhS}r�(hU]hV]hW]hX]h[]uh]MÌh^hh_]r�hhXjIndividual MIB variable may be queried or set using snmpset or snmpget commands. Below are some examples:-r‘…�r’}r“(hHjŽhIjŒubaubh{)�r”}r•(hHXsnmpsetr–hIjChOjXhQhƒhS}r—(hU]hV]hW]hX]h[]uh]MÎh^hh_]r˜hhXsnmpsetr™…�rš}r›(hHj–hIj”ubaubj•)�rœ}r�(hHXJsnmpset -v 2c -c private 192.168.2.20 IEC-62439-3-MIB::lreHsrLREMode.1 i 3hIjChOjXhQj˜hS}rž(h­h®hX]hW]hU]hV]h[]uh]M2h^hh_]rŸhhXJsnmpset -v 2c -c private 192.168.2.20 IEC-62439-3-MIB::lreHsrLREMode.1 i 3r …�r¡}r¢(hHUhIjœubaubh{)�r£}r¤(hHXsnmpgetr¥hIjChOjXhQhƒhS}r¦(hU]hV]hW]hX]h[]uh]MÔh^hh_]r§hhXsnmpgetr¨…�r©}rª(hHj¥hIj£ubaubj•)�r«}r¬(hHXKsnmpget -v 2c -c public 192.168.2.20 IEC-62439-3-MIB::lreManufacturerName.0hIjChOjXhQj˜hS}r­(h­h®hX]hW]hU]hV]h[]uh]M8h^hh_]r®hhXKsnmpget -v 2c -c public 192.168.2.20 IEC-62439-3-MIB::lreManufacturerName.0r¯…�r°}r±(hHUhIj«ubaubjI)�r²}r³(hHX MIB Supportr´hIjChOjXhQjMhS}rµ(hX]r¶U mib-supportr·ahW]hU]hV]h[]r¸h auh]Nh^hh_]r¹hhX MIB Supportrº…�r»}r¼(hHj´hIj²ubaubjV)�r½}r¾(hHUhIjChOjXhQjYhS}r¿(hU]hV]hW]hX]h[]uh]Nh^hh_]rÀj\)�rÁ}rÂ(hHUhS}rÃ(hX]hW]hU]hV]h[]UcolsKuhIj½h_]rÄ(ja)�rÅ}rÆ(hHUhS}rÇ(hX]hW]hU]hV]h[]UcolwidthKuhIjÁh_]hQjeubja)�rÈ}rÉ(hHUhS}rÊ(hX]hW]hU]hV]h[]UcolwidthK"uhIjÁh_]hQjeubja)�rË}rÌ(hHUhS}rÍ(hX]hW]hU]hV]h[]UcolwidthK!uhIjÁh_]hQjeubja)�rÎ}rÏ(hHUhS}rÐ(hX]hW]hU]hV]h[]UcolwidthKuhIjÁh_]hQjeubjo)�rÑ}rÒ(hHUhS}rÓ(hU]hV]hW]hX]h[]uhIjÁh_]rÔjt)�rÕ}rÖ(hHUhS}r×(hU]hV]hW]hX]h[]uhIjÑh_]rØ(jy)�rÙ}rÚ(hHUhS}rÛ(hU]hV]hW]hX]h[]uhIjÕh_]rÜh{)�rÝ}rÞ(hHX MIB variablerßhIjÙhOjXhQhƒhS}rà(hU]hV]hW]hX]h[]uh]MÞh_]ráhhX MIB variablerâ…�rã}rä(hHjßhIjÝubaubahQj†ubjy)�rå}ræ(hHUhS}rç(hU]hV]hW]hX]h[]uhIjÕh_]rèh{)�ré}rê(hHXGrouprëhIjåhOjXhQhƒhS}rì(hU]hV]hW]hX]h[]uh]MÞh_]ríhhXGrouprî…�rï}rð(hHjëhIjéubaubahQj†ubjy)�rñ}rò(hHUhS}ró(hU]hV]hW]hX]h[]uhIjÕh_]rôh{)�rõ}rö(hHXActions Specified by Standardr÷hIjñhOjXhQhƒhS}rø(hU]hV]hW]hX]h[]uh]MÞh_]rùhhXActions Specified by Standardrú…�rû}rü(hHj÷hIjõubaubahQj†ubjy)�rý}rþ(hHUhS}rÿ(hU]hV]hW]hX]h[]uhIjÕh_]rh{)�r}r(hHXAction supportedrhIjýhOjXhQhƒhS}r(hU]hV]hW]hX]h[]uh]MÞh_]rhhXAction supportedr…�r}r(hHjhIjubaubahQj†ubehQj³ubahQj´ubjµ)�r }r (hHUhS}r (hU]hV]hW]hX]h[]uhIjÁh_]r (jt)�r }r(hHUhS}r(hU]hV]hW]hX]h[]uhIj h_]r(jy)�r}r(hHUhS}r(hU]hV]hW]hX]h[]uhIj h_]rh{)�r}r(hHXlreManufacturerNamerhIjhOjXhQhƒhS}r(hU]hV]hW]hX]h[]uh]Màh_]rhhXlreManufacturerNamer…�r}r(hHjhIjubaubahQj†ubjy)�r}r(hHUhS}r(hU]hV]hW]hX]h[]uhIj h_]r h{)�r!}r"(hHXlreConfigurationGeneralGroupr#hIjhOjXhQhƒhS}r$(hU]hV]hW]hX]h[]uh]Màh_]r%hhXlreConfigurationGeneralGroupr&…�r'}r((hHj#hIj!ubaubahQj†ubjy)�r)}r*(hHUhS}r+(hU]hV]hW]hX]h[]uhIj h_]r,h{)�r-}r.(hHXgetr/hIj)hOjXhQhƒhS}r0(hU]hV]hW]hX]h[]uh]Màh_]r1hhXgetr2…�r3}r4(hHj/hIj-ubaubahQj†ubjy)�r5}r6(hHUhS}r7(hU]hV]hW]hX]h[]uhIj h_]r8h{)�r9}r:(hHXgetr;hIj5hOjXhQhƒhS}r<(hU]hV]hW]hX]h[]uh]Màh_]r=hhXgetr>…�r?}r@(hHj;hIj9ubaubahQj†ubehQj³ubjt)�rA}rB(hHUhS}rC(hU]hV]hW]hX]h[]uhIj h_]rD(jy)�rE}rF(hHUhS}rG(hU]hV]hW]hX]h[]uhIjAh_]rHh{)�rI}rJ(hHXlreInterfaceCountrKhIjEhOjXhQhƒhS}rL(hU]hV]hW]hX]h[]uh]Mâh_]rMhhXlreInterfaceCountrN…�rO}rP(hHjKhIjIubaubahQj†ubjy)�rQ}rR(hHUhS}rS(hU]hV]hW]hX]h[]uhIjAh_]rTh{)�rU}rV(hHXlreConfigurationGeneralGrouprWhIjQhOjXhQhƒhS}rX(hU]hV]hW]hX]h[]uh]Mâh_]rYhhXlreConfigurationGeneralGrouprZ…�r[}r\(hHjWhIjUubaubahQj†ubjy)�r]}r^(hHUhS}r_(hU]hV]hW]hX]h[]uhIjAh_]r`h{)�ra}rb(hHXgetrchIj]hOjXhQhƒhS}rd(hU]hV]hW]hX]h[]uh]Mâh_]rehhXgetrf…�rg}rh(hHjchIjaubaubahQj†ubjy)�ri}rj(hHUhS}rk(hU]hV]hW]hX]h[]uhIjAh_]rlh{)�rm}rn(hHXgetrohIjihOjXhQhƒhS}rp(hU]hV]hW]hX]h[]uh]Mâh_]rqhhXgetrr…�rs}rt(hHjohIjmubaubahQj†ubehQj³ubjt)�ru}rv(hHUhS}rw(hU]hV]hW]hX]h[]uhIj h_]rx(jy)�ry}rz(hHUhS}r{(hU]hV]hW]hX]h[]uhIjuh_]r|h{)�r}}r~(hHXlreInterfaceConfigTablerhIjyhOjXhQhƒhS}r€(hU]hV]hW]hX]h[]uh]Mäh_]r�hhXlreInterfaceConfigTabler‚…�rƒ}r„(hHjhIj}ubaubahQj†ubjy)�r…}r†(hHUhS}r‡(hU]hV]hW]hX]h[]uhIjuh_]rˆh{)�r‰}rŠ(hHXlreConfigurationInterfaceGroupr‹hIj…hOjXhQhƒhS}rŒ(hU]hV]hW]hX]h[]uh]Mäh_]r�hhXlreConfigurationInterfaceGrouprŽ…�r�}r�(hHj‹hIj‰ubaubahQj†ubjy)�r‘}r’(hHUhS}r“(hU]hV]hW]hX]h[]uhIjuh_]r”h{)�r•}r–(hHXNAr—hIj‘hOjXhQhƒhS}r˜(hU]hV]hW]hX]h[]uh]Mäh_]r™hhXNArš…�r›}rœ(hHj—hIj•ubaubahQj†ubjy)�r�}rž(hHUhS}rŸ(hU]hV]hW]hX]h[]uhIjuh_]r h{)�r¡}r¢(hHXNAr£hIj�hOjXhQhƒhS}r¤(hU]hV]hW]hX]h[]uh]Mäh_]r¥hhXNAr¦…�r§}r¨(hHj£hIj¡ubaubahQj†ubehQj³ubjt)�r©}rª(hHUhS}r«(hU]hV]hW]hX]h[]uhIj h_]r¬(jy)�r­}r®(hHUhS}r¯(hU]hV]hW]hX]h[]uhIj©h_]r°h{)�r±}r²(hHXlreInterfaceConfigEntryr³hIj­hOjXhQhƒhS}r´(hU]hV]hW]hX]h[]uh]Mæh_]rµhhXlreInterfaceConfigEntryr¶…�r·}r¸(hHj³hIj±ubaubahQj†ubjy)�r¹}rº(hHUhS}r»(hU]hV]hW]hX]h[]uhIj©h_]r¼h{)�r½}r¾(hHXlreConfigurationInterfaceGroupr¿hIj¹hOjXhQhƒhS}rÀ(hU]hV]hW]hX]h[]uh]Mæh_]rÁhhXlreConfigurationInterfaceGrouprÂ…�rÃ}rÄ(hHj¿hIj½ubaubahQj†ubjy)�rÅ}rÆ(hHUhS}rÇ(hU]hV]hW]hX]h[]uhIj©h_]rÈh{)�rÉ}rÊ(hHXNArËhIjÅhOjXhQhƒhS}rÌ(hU]hV]hW]hX]h[]uh]Mæh_]rÍhhXNArÎ…�rÏ}rÐ(hHjËhIjÉubaubahQj†ubjy)�rÑ}rÒ(hHUhS}rÓ(hU]hV]hW]hX]h[]uhIj©h_]rÔh{)�rÕ}rÖ(hHXNAr×hIjÑhOjXhQhƒhS}rØ(hU]hV]hW]hX]h[]uh]Mæh_]rÙhhXNArÚ…�rÛ}rÜ(hHj×hIjÕubaubahQj†ubehQj³ubjt)�rÝ}rÞ(hHUhS}rß(hU]hV]hW]hX]h[]uhIj h_]rà(jy)�rá}râ(hHUhS}rã(hU]hV]hW]hX]h[]uhIjÝh_]räh{)�rå}ræ(hHXlreInterfaceConfigIndexrçhIjáhOjXhQhƒhS}rè(hU]hV]hW]hX]h[]uh]Mèh_]réhhXlreInterfaceConfigIndexrê…�rë}rì(hHjçhIjåubaubahQj†ubjy)�rí}rî(hHUhS}rï(hU]hV]hW]hX]h[]uhIjÝh_]rðh{)�rñ}rò(hHXlreConfigurationInterfaceGroupróhIjíhOjXhQhƒhS}rô(hU]hV]hW]hX]h[]uh]Mèh_]rõhhXlreConfigurationInterfaceGrouprö…�r÷}rø(hHjóhIjñubaubahQj†ubjy)�rù}rú(hHUhS}rû(hU]hV]hW]hX]h[]uhIjÝh_]rüh{)�rý}rþ(hHXNArÿhIjùhOjXhQhƒhS}r(hU]hV]hW]hX]h[]uh]Mèh_]rhhXNAr…�r}r(hHjÿhIjýubaubahQj†ubjy)�r}r(hHUhS}r(hU]hV]hW]hX]h[]uhIjÝh_]rh{)�r }r (hHXNAr hIjhOjXhQhƒhS}r (hU]hV]hW]hX]h[]uh]Mèh_]r hhXNAr…�r}r(hHj hIj ubaubahQj†ubehQj³ubjt)�r}r(hHUhS}r(hU]hV]hW]hX]h[]uhIj h_]r(jy)�r}r(hHUhS}r(hU]hV]hW]hX]h[]uhIjh_]rh{)�r}r(hHX lreRowStatusrhIjhOjXhQhƒhS}r(hU]hV]hW]hX]h[]uh]Mêh_]rhhX lreRowStatusr…�r}r (hHjhIjubaubahQj†ubjy)�r!}r"(hHUhS}r#(hU]hV]hW]hX]h[]uhIjh_]r$h{)�r%}r&(hHXlreConfigurationInterfaceGroupr'hIj!hOjXhQhƒhS}r((hU]hV]hW]hX]h[]uh]Mêh_]r)hhXlreConfigurationInterfaceGroupr*…�r+}r,(hHj'hIj%ubaubahQj†ubjy)�r-}r.(hHUhS}r/(hU]hV]hW]hX]h[]uhIjh_]r0h{)�r1}r2(hHXNAr3hIj-hOjXhQhƒhS}r4(hU]hV]hW]hX]h[]uh]Mêh_]r5hhXNAr6…�r7}r8(hHj3hIj1ubaubahQj†ubjy)�r9}r:(hHUhS}r;(hU]hV]hW]hX]h[]uhIjh_]r<h{)�r=}r>(hHXgetr?hIj9hOjXhQhƒhS}r@(hU]hV]hW]hX]h[]uh]Mêh_]rAhhXgetrB…�rC}rD(hHj?hIj=ubaubahQj†ubehQj³ubjt)�rE}rF(hHUhS}rG(hU]hV]hW]hX]h[]uhIj h_]rH(jy)�rI}rJ(hHUhS}rK(hU]hV]hW]hX]h[]uhIjEh_]rLh{)�rM}rN(hHX lreNodeTyperOhIjIhOjXhQhƒhS}rP(hU]hV]hW]hX]h[]uh]Mìh_]rQhhX lreNodeTyperR…�rS}rT(hHjOhIjMubaubahQj†ubjy)�rU}rV(hHUhS}rW(hU]hV]hW]hX]h[]uhIjEh_]rXh{)�rY}rZ(hHXlreConfigurationInterfaceGroupr[hIjUhOjXhQhƒhS}r\(hU]hV]hW]hX]h[]uh]Mìh_]r]hhXlreConfigurationInterfaceGroupr^…�r_}r`(hHj[hIjYubaubahQj†ubjy)�ra}rb(hHUhS}rc(hU]hV]hW]hX]h[]uhIjEh_]rdh{)�re}rf(hHXget/setrghIjahOjXhQhƒhS}rh(hU]hV]hW]hX]h[]uh]Mìh_]rihhXget/setrj…�rk}rl(hHjghIjeubaubahQj†ubjy)�rm}rn(hHUhS}ro(hU]hV]hW]hX]h[]uhIjEh_]rph{)�rq}rr(hHXgetrshIjmhOjXhQhƒhS}rt(hU]hV]hW]hX]h[]uh]Mìh_]ruhhXgetrv…�rw}rx(hHjshIjqubaubahQj†ubehQj³ubjt)�ry}rz(hHUhS}r{(hU]hV]hW]hX]h[]uhIj h_]r|(jy)�r}}r~(hHUhS}r(hU]hV]hW]hX]h[]uhIjyh_]r€h{)�r�}r‚(hHX lreNodeNamerƒhIj}hOjXhQhƒhS}r„(hU]hV]hW]hX]h[]uh]Mîh_]r…hhX lreNodeNamer†…�r‡}rˆ(hHjƒhIj�ubaubahQj†ubjy)�r‰}rŠ(hHUhS}r‹(hU]hV]hW]hX]h[]uhIjyh_]rŒh{)�r�}rŽ(hHXlreConfigurationInterfaceGroupr�hIj‰hOjXhQhƒhS}r�(hU]hV]hW]hX]h[]uh]Mîh_]r‘hhXlreConfigurationInterfaceGroupr’…�r“}r”(hHj�hIj�ubaubahQj†ubjy)�r•}r–(hHUhS}r—(hU]hV]hW]hX]h[]uhIjyh_]r˜h{)�r™}rš(hHXget/setr›hIj•hOjXhQhƒhS}rœ(hU]hV]hW]hX]h[]uh]Mîh_]r�hhXget/setrž…�rŸ}r (hHj›hIj™ubaubahQj†ubjy)�r¡}r¢(hHUhS}r£(hU]hV]hW]hX]h[]uhIjyh_]r¤h{)�r¥}r¦(hHXgetr§hIj¡hOjXhQhƒhS}r¨(hU]hV]hW]hX]h[]uh]Mîh_]r©hhXgetrª…�r«}r¬(hHj§hIj¥ubaubahQj†ubehQj³ubjt)�r­}r®(hHUhS}r¯(hU]hV]hW]hX]h[]uhIj h_]r°(jy)�r±}r²(hHUhS}r³(hU]hV]hW]hX]h[]uhIj­h_]r´h{)�rµ}r¶(hHXlreVersionNamer·hIj±hOjXhQhƒhS}r¸(hU]hV]hW]hX]h[]uh]Mðh_]r¹hhXlreVersionNamerº…�r»}r¼(hHj·hIjµubaubahQj†ubjy)�r½}r¾(hHUhS}r¿(hU]hV]hW]hX]h[]uhIj­h_]rÀh{)�rÁ}rÂ(hHXlreConfigurationInterfaceGrouprÃhIj½hOjXhQhƒhS}rÄ(hU]hV]hW]hX]h[]uh]Mðh_]rÅhhXlreConfigurationInterfaceGrouprÆ…�rÇ}rÈ(hHjÃhIjÁubaubahQj†ubjy)�rÉ}rÊ(hHUhS}rË(hU]hV]hW]hX]h[]uhIj­h_]rÌh{)�rÍ}rÎ(hHXgetrÏhIjÉhOjXhQhƒhS}rÐ(hU]hV]hW]hX]h[]uh]Mðh_]rÑhhXgetrÒ…�rÓ}rÔ(hHjÏhIjÍubaubahQj†ubjy)�rÕ}rÖ(hHUhS}r×(hU]hV]hW]hX]h[]uhIj­h_]rØh{)�rÙ}rÚ(hHXgetrÛhIjÕhOjXhQhƒhS}rÜ(hU]hV]hW]hX]h[]uh]Mðh_]rÝhhXgetrÞ…�rß}rà(hHjÛhIjÙubaubahQj†ubehQj³ubjt)�rá}râ(hHUhS}rã(hU]hV]hW]hX]h[]uhIj h_]rä(jy)�rå}ræ(hHUhS}rç(hU]hV]hW]hX]h[]uhIjáh_]rèh{)�ré}rê(hHX lreMacAddressrëhIjåhOjXhQhƒhS}rì(hU]hV]hW]hX]h[]uh]Mòh_]ríhhX lreMacAddressrî…�rï}rð(hHjëhIjéubaubahQj†ubjy)�rñ}rò(hHUhS}ró(hU]hV]hW]hX]h[]uhIjáh_]rôh{)�rõ}rö(hHXlreConfigurationInterfaceGroupr÷hIjñhOjXhQhƒhS}rø(hU]hV]hW]hX]h[]uh]Mòh_]rùhhXlreConfigurationInterfaceGrouprú…�rû}rü(hHj÷hIjõubaubahQj†ubjy)�rý}rþ(hHUhS}rÿ(hU]hV]hW]hX]h[]uhIjáh_]r h{)�r }r (hHXget/setr hIjýhOjXhQhƒhS}r (hU]hV]hW]hX]h[]uh]Mòh_]r hhXget/setr …�r }r (hHj hIj ubaubahQj†ubjy)�r }r (hHUhS}r (hU]hV]hW]hX]h[]uhIjáh_]r h{)�r }r (hHXgetr hIj hOjXhQhƒhS}r (hU]hV]hW]hX]h[]uh]Mòh_]r hhXgetr …�r }r (hHj hIj ubaubahQj†ubehQj³ubjt)�r }r (hHUhS}r (hU]hV]hW]hX]h[]uhIj h_]r (jy)�r }r (hHUhS}r (hU]hV]hW]hX]h[]uhIj h_]r h{)�r }r (hHXlrePortAdminStateAr hIj hOjXhQhƒhS}r (hU]hV]hW]hX]h[]uh]Môh_]r! hhXlrePortAdminStateAr" …�r# }r$ (hHj hIj ubaubahQj†ubjy)�r% }r& (hHUhS}r' (hU]hV]hW]hX]h[]uhIj h_]r( h{)�r) }r* (hHXlreConfigurationInterfaceGroupr+ hIj% hOjXhQhƒhS}r, (hU]hV]hW]hX]h[]uh]Môh_]r- hhXlreConfigurationInterfaceGroupr. …�r/ }r0 (hHj+ hIj) ubaubahQj†ubjy)�r1 }r2 (hHUhS}r3 (hU]hV]hW]hX]h[]uhIj h_]r4 h{)�r5 }r6 (hHXget/setr7 hIj1 hOjXhQhƒhS}r8 (hU]hV]hW]hX]h[]uh]Môh_]r9 hhXget/setr: …�r; }r< (hHj7 hIj5 ubaubahQj†ubjy)�r= }r> (hHUhS}r? (hU]hV]hW]hX]h[]uhIj h_]r@ h{)�rA }rB (hHXgetrC hIj= hOjXhQhƒhS}rD (hU]hV]hW]hX]h[]uh]Môh_]rE hhXgetrF …�rG }rH (hHjC hIjA ubaubahQj†ubehQj³ubjt)�rI }rJ (hHUhS}rK (hU]hV]hW]hX]h[]uhIj h_]rL (jy)�rM }rN (hHUhS}rO (hU]hV]hW]hX]h[]uhIjI h_]rP h{)�rQ }rR (hHXlrePortAdminStateBrS hIjM hOjXhQhƒhS}rT (hU]hV]hW]hX]h[]uh]Möh_]rU hhXlrePortAdminStateBrV …�rW }rX (hHjS hIjQ ubaubahQj†ubjy)�rY }rZ (hHUhS}r[ (hU]hV]hW]hX]h[]uhIjI h_]r\ h{)�r] }r^ (hHXlreConfigurationInterfaceGroupr_ hIjY hOjXhQhƒhS}r` (hU]hV]hW]hX]h[]uh]Möh_]ra hhXlreConfigurationInterfaceGrouprb …�rc }rd (hHj_ hIj] ubaubahQj†ubjy)�re }rf (hHUhS}rg (hU]hV]hW]hX]h[]uhIjI h_]rh h{)�ri }rj (hHXget/setrk hIje hOjXhQhƒhS}rl (hU]hV]hW]hX]h[]uh]Möh_]rm hhXget/setrn …�ro }rp (hHjk hIji ubaubahQj†ubjy)�rq }rr (hHUhS}rs (hU]hV]hW]hX]h[]uhIjI h_]rt h{)�ru }rv (hHXgetrw hIjq hOjXhQhƒhS}rx (hU]hV]hW]hX]h[]uh]Möh_]ry hhXgetrz …�r{ }r| (hHjw hIju ubaubahQj†ubehQj³ubjt)�r} }r~ (hHUhS}r (hU]hV]hW]hX]h[]uhIj h_]r€ (jy)�r� }r‚ (hHUhS}rƒ (hU]hV]hW]hX]h[]uhIj} h_]r„ h{)�r… }r† (hHXlreLinkStatusAr‡ hIj� hOjXhQhƒhS}rˆ (hU]hV]hW]hX]h[]uh]Møh_]r‰ hhXlreLinkStatusArŠ …�r‹ }rŒ (hHj‡ hIj… ubaubahQj†ubjy)�r� }rŽ (hHUhS}r� (hU]hV]hW]hX]h[]uhIj} h_]r� h{)�r‘ }r’ (hHXlreConfigurationInterfaceGroupr“ hIj� hOjXhQhƒhS}r” (hU]hV]hW]hX]h[]uh]Møh_]r• hhXlreConfigurationInterfaceGroupr– …�r— }r˜ (hHj“ hIj‘ ubaubahQj†ubjy)�r™ }rš (hHUhS}r› (hU]hV]hW]hX]h[]uhIj} h_]rœ h{)�r� }rž (hHXgetrŸ hIj™ hOjXhQhƒhS}r  (hU]hV]hW]hX]h[]uh]Møh_]r¡ hhXgetr¢ …�r£ }r¤ (hHjŸ hIj� ubaubahQj†ubjy)�r¥ }r¦ (hHUhS}r§ (hU]hV]hW]hX]h[]uhIj} h_]r¨ h{)�r© }rª (hHXgetr« hIj¥ hOjXhQhƒhS}r¬ (hU]hV]hW]hX]h[]uh]Møh_]r­ hhXgetr® …�r¯ }r° (hHj« hIj© ubaubahQj†ubehQj³ubjt)�r± }r² (hHUhS}r³ (hU]hV]hW]hX]h[]uhIj h_]r´ (jy)�rµ }r¶ (hHUhS}r· (hU]hV]hW]hX]h[]uhIj± h_]r¸ h{)�r¹ }rº (hHXlreLinkStatusBr» hIjµ hOjXhQhƒhS}r¼ (hU]hV]hW]hX]h[]uh]Múh_]r½ hhXlreLinkStatusBr¾ …�r¿ }rÀ (hHj» hIj¹ ubaubahQj†ubjy)�rÁ }r (hHUhS}rà (hU]hV]hW]hX]h[]uhIj± h_]rÄ h{)�rÅ }rÆ (hHXlreConfigurationInterfaceGrouprÇ hIjÁ hOjXhQhƒhS}rÈ (hU]hV]hW]hX]h[]uh]Múh_]rÉ hhXlreConfigurationInterfaceGrouprÊ …�rË }rÌ (hHjÇ hIjÅ ubaubahQj†ubjy)�rÍ }rÎ (hHUhS}rÏ (hU]hV]hW]hX]h[]uhIj± h_]rÐ h{)�rÑ }rÒ (hHXgetrÓ hIjÍ hOjXhQhƒhS}rÔ (hU]hV]hW]hX]h[]uh]Múh_]rÕ hhXgetrÖ …�r× }rØ (hHjÓ hIjÑ ubaubahQj†ubjy)�rÙ }rÚ (hHUhS}rÛ (hU]hV]hW]hX]h[]uhIj± h_]rÜ h{)�rÝ }rÞ (hHXgetrß hIjÙ hOjXhQhƒhS}rà (hU]hV]hW]hX]h[]uh]Múh_]rá hhXgetrâ …�rã }rä (hHjß hIjÝ ubaubahQj†ubehQj³ubjt)�rå }ræ (hHUhS}rç (hU]hV]hW]hX]h[]uhIj h_]rè (jy)�ré }rê (hHUhS}rë (hU]hV]hW]hX]h[]uhIjå h_]rì h{)�rí }rî (hHXlreDuplicateDiscardrï hIjé hOjXhQhƒhS}rð (hU]hV]hW]hX]h[]uh]Müh_]rñ hhXlreDuplicateDiscardrò …�ró }rô (hHjï hIjí ubaubahQj†ubjy)�rõ }rö (hHUhS}r÷ (hU]hV]hW]hX]h[]uhIjå h_]rø h{)�rù }rú (hHXlreConfigurationInterfaceGrouprû hIjõ hOjXhQhƒhS}rü (hU]hV]hW]hX]h[]uh]Müh_]rý hhXlreConfigurationInterfaceGrouprþ …�rÿ }r!(hHjû hIjù ubaubahQj†ubjy)�r!}r!(hHUhS}r!(hU]hV]hW]hX]h[]uhIjå h_]r!h{)�r!}r!(hHXget/setr!hIj!hOjXhQhƒhS}r!(hU]hV]hW]hX]h[]uh]Müh_]r !hhXget/setr !…�r !}r !(hHj!hIj!ubaubahQj†ubjy)�r !}r!(hHUhS}r!(hU]hV]hW]hX]h[]uhIjå h_]r!h{)�r!}r!(hHXget/setr!hIj !hOjXhQhƒhS}r!(hU]hV]hW]hX]h[]uh]Müh_]r!hhXget/setr!…�r!}r!(hHj!hIj!ubaubahQj†ubehQj³ubjt)�r!}r!(hHUhS}r!(hU]hV]hW]hX]h[]uhIj h_]r!(jy)�r!}r!(hHUhS}r!(hU]hV]hW]hX]h[]uhIj!h_]r !h{)�r!!}r"!(hHXlreTransparentReceptionr#!hIj!hOjXhQhƒhS}r$!(hU]hV]hW]hX]h[]uh]Mþh_]r%!hhXlreTransparentReceptionr&!…�r'!}r(!(hHj#!hIj!!ubaubahQj†ubjy)�r)!}r*!(hHUhS}r+!(hU]hV]hW]hX]h[]uhIj!h_]r,!h{)�r-!}r.!(hHXlreConfigurationInterfaceGroupr/!hIj)!hOjXhQhƒhS}r0!(hU]hV]hW]hX]h[]uh]Mþh_]r1!hhXlreConfigurationInterfaceGroupr2!…�r3!}r4!(hHj/!hIj-!ubaubahQj†ubjy)�r5!}r6!(hHUhS}r7!(hU]hV]hW]hX]h[]uhIj!h_]r8!h{)�r9!}r:!(hHXget/setr;!hIj5!hOjXhQhƒhS}r!…�r?!}r@!(hHj;!hIj9!ubaubahQj†ubjy)�rA!}rB!(hHUhS}rC!(hU]hV]hW]hX]h[]uhIj!h_]rD!h{)�rE!}rF!(hHXget/setrG!hIjA!hOjXhQhƒhS}rH!(hU]hV]hW]hX]h[]uh]Mþh_]rI!hhXget/setrJ!…�rK!}rL!(hHjG!hIjE!ubaubahQj†ubehQj³ubjt)�rM!}rN!(hHUhS}rO!(hU]hV]hW]hX]h[]uhIj h_]rP!(jy)�rQ!}rR!(hHUhS}rS!(hU]hV]hW]hX]h[]uhIjM!h_]rT!h{)�rU!}rV!(hHX lreHsrLREModerW!hIjQ!hOjXhQhƒhS}rX!(hU]hV]hW]hX]h[]uh]Mh_]rY!hhX lreHsrLREModerZ!…�r[!}r\!(hHjW!hIjU!ubaubahQj†ubjy)�r]!}r^!(hHUhS}r_!(hU]hV]hW]hX]h[]uhIjM!h_]r`!h{)�ra!}rb!(hHXlreConfigurationInterfaceGrouprc!hIj]!hOjXhQhƒhS}rd!(hU]hV]hW]hX]h[]uh]Mh_]re!hhXlreConfigurationInterfaceGrouprf!…�rg!}rh!(hHjc!hIja!ubaubahQj†ubjy)�ri!}rj!(hHUhS}rk!(hU]hV]hW]hX]h[]uhIjM!h_]rl!h{)�rm!}rn!(hHXget/setro!hIji!hOjXhQhƒhS}rp!(hU]hV]hW]hX]h[]uh]Mh_]rq!hhXget/setrr!…�rs!}rt!(hHjo!hIjm!ubaubahQj†ubjy)�ru!}rv!(hHUhS}rw!(hU]hV]hW]hX]h[]uhIjM!h_]rx!h{)�ry!}rz!(hHXget/setr{!hIju!hOjXhQhƒhS}r|!(hU]hV]hW]hX]h[]uh]Mh_]r}!hhXget/setr~!…�r!}r€!(hHj{!hIjy!ubaubahQj†ubehQj³ubjt)�r�!}r‚!(hHUhS}rƒ!(hU]hV]hW]hX]h[]uhIj h_]r„!(jy)�r…!}r†!(hHUhS}r‡!(hU]hV]hW]hX]h[]uhIj�!h_]rˆ!h{)�r‰!}rŠ!(hHXlreSwitchingEndNoder‹!hIj…!hOjXhQhƒhS}rŒ!(hU]hV]hW]hX]h[]uh]Mh_]r�!hhXlreSwitchingEndNoderŽ!…�r�!}r�!(hHj‹!hIj‰!ubaubahQj†ubjy)�r‘!}r’!(hHUhS}r“!(hU]hV]hW]hX]h[]uhIj�!h_]r”!h{)�r•!}r–!(hHXlreConfigurationInterfaceGroupr—!hIj‘!hOjXhQhƒhS}r˜!(hU]hV]hW]hX]h[]uh]Mh_]r™!hhXlreConfigurationInterfaceGrouprš!…�r›!}rœ!(hHj—!hIj•!ubaubahQj†ubjy)�r�!}rž!(hHUhS}rŸ!(hU]hV]hW]hX]h[]uhIj�!h_]r !h{)�r¡!}r¢!(hHXget/setr£!hIj�!hOjXhQhƒhS}r¤!(hU]hV]hW]hX]h[]uh]Mh_]r¥!hhXget/setr¦!…�r§!}r¨!(hHj£!hIj¡!ubaubahQj†ubjy)�r©!}rª!(hHUhS}r«!(hU]hV]hW]hX]h[]uhIj�!h_]r¬!h{)�r­!}r®!(hHXgetr¯!hIj©!hOjXhQhƒhS}r°!(hU]hV]hW]hX]h[]uh]Mh_]r±!hhXgetr²!…�r³!}r´!(hHj¯!hIj­!ubaubahQj†ubehQj³ubjt)�rµ!}r¶!(hHUhS}r·!(hU]hV]hW]hX]h[]uhIj h_]r¸!(jy)�r¹!}rº!(hHUhS}r»!(hU]hV]hW]hX]h[]uhIjµ!h_]r¼!h{)�r½!}r¾!(hHXlreRedBoxIdentityr¿!hIj¹!hOjXhQhƒhS}rÀ!(hU]hV]hW]hX]h[]uh]Mh_]rÁ!hhXlreRedBoxIdentityrÂ!…�rÃ!}rÄ!(hHj¿!hIj½!ubaubahQj†ubjy)�rÅ!}rÆ!(hHUhS}rÇ!(hU]hV]hW]hX]h[]uhIjµ!h_]rÈ!h{)�rÉ!}rÊ!(hHXlreConfigurationInterfaceGrouprË!hIjÅ!hOjXhQhƒhS}rÌ!(hU]hV]hW]hX]h[]uh]Mh_]rÍ!hhXlreConfigurationInterfaceGrouprÎ!…�rÏ!}rÐ!(hHjË!hIjÉ!ubaubahQj†ubjy)�rÑ!}rÒ!(hHUhS}rÓ!(hU]hV]hW]hX]h[]uhIjµ!h_]rÔ!h{)�rÕ!}rÖ!(hHXget/setr×!hIjÑ!hOjXhQhƒhS}rØ!(hU]hV]hW]hX]h[]uh]Mh_]rÙ!hhXget/setrÚ!…�rÛ!}rÜ!(hHj×!hIjÕ!ubaubahQj†ubjy)�rÝ!}rÞ!(hHUhS}rß!(hU]hV]hW]hX]h[]uhIjµ!h_]rà!h{)�rá!}râ!(hHXNSrã!hIjÝ!hOjXhQhƒhS}rä!(hU]hV]hW]hX]h[]uh]Mh_]rå!hhXNSræ!…�rç!}rè!(hHjã!hIjá!ubaubahQj†ubehQj³ubjt)�ré!}rê!(hHUhS}rë!(hU]hV]hW]hX]h[]uhIj h_]rì!(jy)�rí!}rî!(hHUhS}rï!(hU]hV]hW]hX]h[]uhIjé!h_]rð!h{)�rñ!}rò!(hHXlreEvaluateSupervisionró!hIjí!hOjXhQhƒhS}rô!(hU]hV]hW]hX]h[]uh]Mh_]rõ!hhXlreEvaluateSupervisionrö!…�r÷!}rø!(hHjó!hIjñ!ubaubahQj†ubjy)�rù!}rú!(hHUhS}rû!(hU]hV]hW]hX]h[]uhIjé!h_]rü!h{)�rý!}rþ!(hHXlreConfigurationInterfaceGrouprÿ!hIjù!hOjXhQhƒhS}r"(hU]hV]hW]hX]h[]uh]Mh_]r"hhXlreConfigurationInterfaceGroupr"…�r"}r"(hHjÿ!hIjý!ubaubahQj†ubjy)�r"}r"(hHUhS}r"(hU]hV]hW]hX]h[]uhIjé!h_]r"h{)�r "}r "(hHXget/setr "hIj"hOjXhQhƒhS}r "(hU]hV]hW]hX]h[]uh]Mh_]r "hhXget/setr"…�r"}r"(hHj "hIj "ubaubahQj†ubjy)�r"}r"(hHUhS}r"(hU]hV]hW]hX]h[]uhIjé!h_]r"h{)�r"}r"(hHXNSr"hIj"hOjXhQhƒhS}r"(hU]hV]hW]hX]h[]uh]Mh_]r"hhXNSr"…�r"}r"(hHj"hIj"ubaubahQj†ubehQj³ubjt)�r"}r"(hHUhS}r"(hU]hV]hW]hX]h[]uhIj h_]r "(jy)�r!"}r""(hHUhS}r#"(hU]hV]hW]hX]h[]uhIj"h_]r$"h{)�r%"}r&"(hHXlreNodesTableClearr'"hIj!"hOjXhQhƒhS}r("(hU]hV]hW]hX]h[]uh]Mh_]r)"hhXlreNodesTableClearr*"…�r+"}r,"(hHj'"hIj%"ubaubahQj†ubjy)�r-"}r."(hHUhS}r/"(hU]hV]hW]hX]h[]uhIj"h_]r0"h{)�r1"}r2"(hHXlreConfigurationInterfaceGroupr3"hIj-"hOjXhQhƒhS}r4"(hU]hV]hW]hX]h[]uh]Mh_]r5"hhXlreConfigurationInterfaceGroupr6"…�r7"}r8"(hHj3"hIj1"ubaubahQj†ubjy)�r9"}r:"(hHUhS}r;"(hU]hV]hW]hX]h[]uhIj"h_]r<"h{)�r="}r>"(hHXget/setr?"hIj9"hOjXhQhƒhS}r@"(hU]hV]hW]hX]h[]uh]Mh_]rA"hhXget/setrB"…�rC"}rD"(hHj?"hIj="ubaubahQj†ubjy)�rE"}rF"(hHUhS}rG"(hU]hV]hW]hX]h[]uhIj"h_]rH"h{)�rI"}rJ"(hHXget/setrK"hIjE"hOjXhQhƒhS}rL"(hU]hV]hW]hX]h[]uh]Mh_]rM"hhXget/setrN"…�rO"}rP"(hHjK"hIjI"ubaubahQj†ubehQj³ubjt)�rQ"}rR"(hHUhS}rS"(hU]hV]hW]hX]h[]uhIj h_]rT"(jy)�rU"}rV"(hHUhS}rW"(hU]hV]hW]hX]h[]uhIjQ"h_]rX"h{)�rY"}rZ"(hHXlreProxyNodeTableClearr["hIjU"hOjXhQhƒhS}r\"(hU]hV]hW]hX]h[]uh]M h_]r]"hhXlreProxyNodeTableClearr^"…�r_"}r`"(hHj["hIjY"ubaubahQj†ubjy)�ra"}rb"(hHUhS}rc"(hU]hV]hW]hX]h[]uhIjQ"h_]rd"h{)�re"}rf"(hHXlreConfigurationInterfaceGrouprg"hIja"hOjXhQhƒhS}rh"(hU]hV]hW]hX]h[]uh]M h_]ri"hhXlreConfigurationInterfaceGrouprj"…�rk"}rl"(hHjg"hIje"ubaubahQj†ubjy)�rm"}rn"(hHUhS}ro"(hU]hV]hW]hX]h[]uhIjQ"h_]rp"h{)�rq"}rr"(hHXget/setrs"hIjm"hOjXhQhƒhS}rt"(hU]hV]hW]hX]h[]uh]M h_]ru"hhXget/setrv"…�rw"}rx"(hHjs"hIjq"ubaubahQj†ubjy)�ry"}rz"(hHUhS}r{"(hU]hV]hW]hX]h[]uhIjQ"h_]r|"h{)�r}"}r~"(hHXNSr"hIjy"hOjXhQhƒhS}r€"(hU]hV]hW]hX]h[]uh]M h_]r�"hhXNSr‚"…�rƒ"}r„"(hHj"hIj}"ubaubahQj†ubehQj³ubjt)�r…"}r†"(hHUhS}r‡"(hU]hV]hW]hX]h[]uhIj h_]rˆ"(jy)�r‰"}rŠ"(hHUhS}r‹"(hU]hV]hW]hX]h[]uhIj…"h_]rŒ"h{)�r�"}rŽ"(hHXlreDupListResideMaxTimer�"hIj‰"hOjXhQhƒhS}r�"(hU]hV]hW]hX]h[]uh]M h_]r‘"hhXlreDupListResideMaxTimer’"…�r“"}r”"(hHj�"hIj�"ubaubahQj†ubjy)�r•"}r–"(hHUhS}r—"(hU]hV]hW]hX]h[]uhIj…"h_]r˜"h{)�r™"}rš"(hHXlreConfigurationInterfaceGroupr›"hIj•"hOjXhQhƒhS}rœ"(hU]hV]hW]hX]h[]uh]M h_]r�"hhXlreConfigurationInterfaceGrouprž"…�rŸ"}r "(hHj›"hIj™"ubaubahQj†ubjy)�r¡"}r¢"(hHUhS}r£"(hU]hV]hW]hX]h[]uhIj…"h_]r¤"h{)�r¥"}r¦"(hHXget/setr§"hIj¡"hOjXhQhƒhS}r¨"(hU]hV]hW]hX]h[]uh]M h_]r©"hhXget/setrª"…�r«"}r¬"(hHj§"hIj¥"ubaubahQj†ubjy)�r­"}r®"(hHUhS}r¯"(hU]hV]hW]hX]h[]uhIj…"h_]r°"h{)�r±"}r²"(hHXgetr³"hIj­"hOjXhQhƒhS}r´"(hU]hV]hW]hX]h[]uh]M h_]rµ"hhXgetr¶"…�r·"}r¸"(hHj³"hIj±"ubaubahQj†ubehQj³ubjt)�r¹"}rº"(hHUhS}r»"(hU]hV]hW]hX]h[]uhIj h_]r¼"(jy)�r½"}r¾"(hHUhS}r¿"(hU]hV]hW]hX]h[]uhIj¹"h_]rÀ"h{)�rÁ"}rÂ"(hHXlreInterfaceStatsTablerÃ"hIj½"hOjXhQhƒhS}rÄ"(hU]hV]hW]hX]h[]uh]Mh_]rÅ"hhXlreInterfaceStatsTablerÆ"…�rÇ"}rÈ"(hHjÃ"hIjÁ"ubaubahQj†ubjy)�rÉ"}rÊ"(hHUhS}rË"(hU]hV]hW]hX]h[]uhIj¹"h_]rÌ"h{)�rÍ"}rÎ"(hHXlreStatisticsInterfaceGrouprÏ"hIjÉ"hOjXhQhƒhS}rÐ"(hU]hV]hW]hX]h[]uh]Mh_]rÑ"hhXlreStatisticsInterfaceGrouprÒ"…�rÓ"}rÔ"(hHjÏ"hIjÍ"ubaubahQj†ubjy)�rÕ"}rÖ"(hHUhS}r×"(hU]hV]hW]hX]h[]uhIj¹"h_]rØ"h{)�rÙ"}rÚ"(hHXNArÛ"hIjÕ"hOjXhQhƒhS}rÜ"(hU]hV]hW]hX]h[]uh]Mh_]rÝ"hhXNArÞ"…�rß"}rà"(hHjÛ"hIjÙ"ubaubahQj†ubjy)�rá"}râ"(hHUhS}rã"(hU]hV]hW]hX]h[]uhIj¹"h_]rä"h{)�rå"}ræ"(hHXNArç"hIjá"hOjXhQhƒhS}rè"(hU]hV]hW]hX]h[]uh]Mh_]ré"hhXNArê"…�rë"}rì"(hHjç"hIjå"ubaubahQj†ubehQj³ubjt)�rí"}rî"(hHUhS}rï"(hU]hV]hW]hX]h[]uhIj h_]rð"(jy)�rñ"}rò"(hHUhS}ró"(hU]hV]hW]hX]h[]uhIjí"h_]rô"h{)�rõ"}rö"(hHXlreInterfaceStatsEntryr÷"hIjñ"hOjXhQhƒhS}rø"(hU]hV]hW]hX]h[]uh]Mh_]rù"hhXlreInterfaceStatsEntryrú"…�rû"}rü"(hHj÷"hIjõ"ubaubahQj†ubjy)�rý"}rþ"(hHUhS}rÿ"(hU]hV]hW]hX]h[]uhIjí"h_]r#h{)�r#}r#(hHXlreStatisticsInterfaceGroupr#hIjý"hOjXhQhƒhS}r#(hU]hV]hW]hX]h[]uh]Mh_]r#hhXlreStatisticsInterfaceGroupr#…�r#}r#(hHj#hIj#ubaubahQj†ubjy)�r #}r #(hHUhS}r #(hU]hV]hW]hX]h[]uhIjí"h_]r #h{)�r #}r#(hHXNAr#hIj #hOjXhQhƒhS}r#(hU]hV]hW]hX]h[]uh]Mh_]r#hhXNAr#…�r#}r#(hHj#hIj #ubaubahQj†ubjy)�r#}r#(hHUhS}r#(hU]hV]hW]hX]h[]uhIjí"h_]r#h{)�r#}r#(hHXNAr#hIj#hOjXhQhƒhS}r#(hU]hV]hW]hX]h[]uh]Mh_]r#hhXNAr#…�r#}r #(hHj#hIj#ubaubahQj†ubehQj³ubjt)�r!#}r"#(hHUhS}r##(hU]hV]hW]hX]h[]uhIj h_]r$#(jy)�r%#}r&#(hHUhS}r'#(hU]hV]hW]hX]h[]uhIj!#h_]r(#h{)�r)#}r*#(hHXlreInterfaceStatsIndexr+#hIj%#hOjXhQhƒhS}r,#(hU]hV]hW]hX]h[]uh]Mh_]r-#hhXlreInterfaceStatsIndexr.#…�r/#}r0#(hHj+#hIj)#ubaubahQj†ubjy)�r1#}r2#(hHUhS}r3#(hU]hV]hW]hX]h[]uhIj!#h_]r4#h{)�r5#}r6#(hHXlreStatisticsInterfaceGroupr7#hIj1#hOjXhQhƒhS}r8#(hU]hV]hW]hX]h[]uh]Mh_]r9#hhXlreStatisticsInterfaceGroupr:#…�r;#}r<#(hHj7#hIj5#ubaubahQj†ubjy)�r=#}r>#(hHUhS}r?#(hU]hV]hW]hX]h[]uhIj!#h_]r@#h{)�rA#}rB#(hHXNArC#hIj=#hOjXhQhƒhS}rD#(hU]hV]hW]hX]h[]uh]Mh_]rE#hhXNArF#…�rG#}rH#(hHjC#hIjA#ubaubahQj†ubjy)�rI#}rJ#(hHUhS}rK#(hU]hV]hW]hX]h[]uhIj!#h_]rL#h{)�rM#}rN#(hHXYesrO#hIjI#hOjXhQhƒhS}rP#(hU]hV]hW]hX]h[]uh]Mh_]rQ#hhXYesrR#…�rS#}rT#(hHjO#hIjM#ubaubahQj†ubehQj³ubjt)�rU#}rV#(hHUhS}rW#(hU]hV]hW]hX]h[]uhIj h_]rX#(jy)�rY#}rZ#(hHUhS}r[#(hU]hV]hW]hX]h[]uhIjU#h_]r\#h{)�r]#}r^#(hHX lreCntTxAr_#hIjY#hOjXhQhƒhS}r`#(hU]hV]hW]hX]h[]uh]Mh_]ra#hhX lreCntTxArb#…�rc#}rd#(hHj_#hIj]#ubaubahQj†ubjy)�re#}rf#(hHUhS}rg#(hU]hV]hW]hX]h[]uhIjU#h_]rh#h{)�ri#}rj#(hHXlreStatisticsInterfaceGrouprk#hIje#hOjXhQhƒhS}rl#(hU]hV]hW]hX]h[]uh]Mh_]rm#hhXlreStatisticsInterfaceGrouprn#…�ro#}rp#(hHjk#hIji#ubaubahQj†ubjy)�rq#}rr#(hHUhS}rs#(hU]hV]hW]hX]h[]uhIjU#h_]rt#h{)�ru#}rv#(hHXgetrw#hIjq#hOjXhQhƒhS}rx#(hU]hV]hW]hX]h[]uh]Mh_]ry#hhXgetrz#…�r{#}r|#(hHjw#hIju#ubaubahQj†ubjy)�r}#}r~#(hHUhS}r#(hU]hV]hW]hX]h[]uhIjU#h_]r€#h{)�r�#}r‚#(hHXgetrƒ#hIj}#hOjXhQhƒhS}r„#(hU]hV]hW]hX]h[]uh]Mh_]r…#hhXgetr†#…�r‡#}rˆ#(hHjƒ#hIj�#ubaubahQj†ubehQj³ubjt)�r‰#}rŠ#(hHUhS}r‹#(hU]hV]hW]hX]h[]uhIj h_]rŒ#(jy)�r�#}rŽ#(hHUhS}r�#(hU]hV]hW]hX]h[]uhIj‰#h_]r�#h{)�r‘#}r’#(hHX lreCntTxBr“#hIj�#hOjXhQhƒhS}r”#(hU]hV]hW]hX]h[]uh]Mh_]r•#hhX lreCntTxBr–#…�r—#}r˜#(hHj“#hIj‘#ubaubahQj†ubjy)�r™#}rš#(hHUhS}r›#(hU]hV]hW]hX]h[]uhIj‰#h_]rœ#h{)�r�#}rž#(hHXlreStatisticsInterfaceGrouprŸ#hIj™#hOjXhQhƒhS}r #(hU]hV]hW]hX]h[]uh]Mh_]r¡#hhXlreStatisticsInterfaceGroupr¢#…�r£#}r¤#(hHjŸ#hIj�#ubaubahQj†ubjy)�r¥#}r¦#(hHUhS}r§#(hU]hV]hW]hX]h[]uhIj‰#h_]r¨#h{)�r©#}rª#(hHXgetr«#hIj¥#hOjXhQhƒhS}r¬#(hU]hV]hW]hX]h[]uh]Mh_]r­#hhXgetr®#…�r¯#}r°#(hHj«#hIj©#ubaubahQj†ubjy)�r±#}r²#(hHUhS}r³#(hU]hV]hW]hX]h[]uhIj‰#h_]r´#h{)�rµ#}r¶#(hHXgetr·#hIj±#hOjXhQhƒhS}r¸#(hU]hV]hW]hX]h[]uh]Mh_]r¹#hhXgetrº#…�r»#}r¼#(hHj·#hIjµ#ubaubahQj†ubehQj³ubjt)�r½#}r¾#(hHUhS}r¿#(hU]hV]hW]hX]h[]uhIj h_]rÀ#(jy)�rÁ#}rÂ#(hHUhS}rÃ#(hU]hV]hW]hX]h[]uhIj½#h_]rÄ#h{)�rÅ#}rÆ#(hHX lreCntTxCrÇ#hIjÁ#hOjXhQhƒhS}rÈ#(hU]hV]hW]hX]h[]uh]Mh_]rÉ#hhX lreCntTxCrÊ#…�rË#}rÌ#(hHjÇ#hIjÅ#ubaubahQj†ubjy)�rÍ#}rÎ#(hHUhS}rÏ#(hU]hV]hW]hX]h[]uhIj½#h_]rÐ#h{)�rÑ#}rÒ#(hHXlreStatisticsInterfaceGrouprÓ#hIjÍ#hOjXhQhƒhS}rÔ#(hU]hV]hW]hX]h[]uh]Mh_]rÕ#hhXlreStatisticsInterfaceGrouprÖ#…�r×#}rØ#(hHjÓ#hIjÑ#ubaubahQj†ubjy)�rÙ#}rÚ#(hHUhS}rÛ#(hU]hV]hW]hX]h[]uhIj½#h_]rÜ#h{)�rÝ#}rÞ#(hHXgetrß#hIjÙ#hOjXhQhƒhS}rà#(hU]hV]hW]hX]h[]uh]Mh_]rá#hhXgetrâ#…�rã#}rä#(hHjß#hIjÝ#ubaubahQj†ubjy)�rå#}ræ#(hHUhS}rç#(hU]hV]hW]hX]h[]uhIj½#h_]rè#h{)�ré#}rê#(hHXgetrë#hIjå#hOjXhQhƒhS}rì#(hU]hV]hW]hX]h[]uh]Mh_]rí#hhXgetrî#…�rï#}rð#(hHjë#hIjé#ubaubahQj†ubehQj³ubjt)�rñ#}rò#(hHUhS}ró#(hU]hV]hW]hX]h[]uhIj h_]rô#(jy)�rõ#}rö#(hHUhS}r÷#(hU]hV]hW]hX]h[]uhIjñ#h_]rø#h{)�rù#}rú#(hHXlreCntErrWrongLanArû#hIjõ#hOjXhQhƒhS}rü#(hU]hV]hW]hX]h[]uh]Mh_]rý#hhXlreCntErrWrongLanArþ#…�rÿ#}r$(hHjû#hIjù#ubaubahQj†ubjy)�r$}r$(hHUhS}r$(hU]hV]hW]hX]h[]uhIjñ#h_]r$h{)�r$}r$(hHXlreStatisticsInterfaceGroupr$hIj$hOjXhQhƒhS}r$(hU]hV]hW]hX]h[]uh]Mh_]r $hhXlreStatisticsInterfaceGroupr $…�r $}r $(hHj$hIj$ubaubahQj†ubjy)�r $}r$(hHUhS}r$(hU]hV]hW]hX]h[]uhIjñ#h_]r$h{)�r$}r$(hHXgetr$hIj $hOjXhQhƒhS}r$(hU]hV]hW]hX]h[]uh]Mh_]r$hhXgetr$…�r$}r$(hHj$hIj$ubaubahQj†ubjy)�r$}r$(hHUhS}r$(hU]hV]hW]hX]h[]uhIjñ#h_]r$h{)�r$}r$(hHXgetr$hIj$hOjXhQhƒhS}r $(hU]hV]hW]hX]h[]uh]Mh_]r!$hhXgetr"$…�r#$}r$$(hHj$hIj$ubaubahQj†ubehQj³ubjt)�r%$}r&$(hHUhS}r'$(hU]hV]hW]hX]h[]uhIj h_]r($(jy)�r)$}r*$(hHUhS}r+$(hU]hV]hW]hX]h[]uhIj%$h_]r,$h{)�r-$}r.$(hHXlreCntErrWrongLanBr/$hIj)$hOjXhQhƒhS}r0$(hU]hV]hW]hX]h[]uh]Mh_]r1$hhXlreCntErrWrongLanBr2$…�r3$}r4$(hHj/$hIj-$ubaubahQj†ubjy)�r5$}r6$(hHUhS}r7$(hU]hV]hW]hX]h[]uhIj%$h_]r8$h{)�r9$}r:$(hHXlreStatisticsInterfaceGroupr;$hIj5$hOjXhQhƒhS}r<$(hU]hV]hW]hX]h[]uh]Mh_]r=$hhXlreStatisticsInterfaceGroupr>$…�r?$}r@$(hHj;$hIj9$ubaubahQj†ubjy)�rA$}rB$(hHUhS}rC$(hU]hV]hW]hX]h[]uhIj%$h_]rD$h{)�rE$}rF$(hHXgetrG$hIjA$hOjXhQhƒhS}rH$(hU]hV]hW]hX]h[]uh]Mh_]rI$hhXgetrJ$…�rK$}rL$(hHjG$hIjE$ubaubahQj†ubjy)�rM$}rN$(hHUhS}rO$(hU]hV]hW]hX]h[]uhIj%$h_]rP$h{)�rQ$}rR$(hHXgetrS$hIjM$hOjXhQhƒhS}rT$(hU]hV]hW]hX]h[]uh]Mh_]rU$hhXgetrV$…�rW$}rX$(hHjS$hIjQ$ubaubahQj†ubehQj³ubjt)�rY$}rZ$(hHUhS}r[$(hU]hV]hW]hX]h[]uhIj h_]r\$(jy)�r]$}r^$(hHUhS}r_$(hU]hV]hW]hX]h[]uhIjY$h_]r`$h{)�ra$}rb$(hHXlreCntErrWrongLanCrc$hIj]$hOjXhQhƒhS}rd$(hU]hV]hW]hX]h[]uh]Mh_]re$hhXlreCntErrWrongLanCrf$…�rg$}rh$(hHjc$hIja$ubaubahQj†ubjy)�ri$}rj$(hHUhS}rk$(hU]hV]hW]hX]h[]uhIjY$h_]rl$h{)�rm$}rn$(hHXlreStatisticsInterfaceGroupro$hIji$hOjXhQhƒhS}rp$(hU]hV]hW]hX]h[]uh]Mh_]rq$hhXlreStatisticsInterfaceGrouprr$…�rs$}rt$(hHjo$hIjm$ubaubahQj†ubjy)�ru$}rv$(hHUhS}rw$(hU]hV]hW]hX]h[]uhIjY$h_]rx$h{)�ry$}rz$(hHXgetr{$hIju$hOjXhQhƒhS}r|$(hU]hV]hW]hX]h[]uh]Mh_]r}$hhXgetr~$…�r$}r€$(hHj{$hIjy$ubaubahQj†ubjy)�r�$}r‚$(hHUhS}rƒ$(hU]hV]hW]hX]h[]uhIjY$h_]r„$h{)�r…$}r†$(hHXgetr‡$hIj�$hOjXhQhƒhS}rˆ$(hU]hV]hW]hX]h[]uh]Mh_]r‰$hhXgetrŠ$…�r‹$}rŒ$(hHj‡$hIj…$ubaubahQj†ubehQj³ubjt)�r�$}rŽ$(hHUhS}r�$(hU]hV]hW]hX]h[]uhIj h_]r�$(jy)�r‘$}r’$(hHUhS}r“$(hU]hV]hW]hX]h[]uhIj�$h_]r”$h{)�r•$}r–$(hHX lreCntRxAr—$hIj‘$hOjXhQhƒhS}r˜$(hU]hV]hW]hX]h[]uh]M h_]r™$hhX lreCntRxArš$…�r›$}rœ$(hHj—$hIj•$ubaubahQj†ubjy)�r�$}rž$(hHUhS}rŸ$(hU]hV]hW]hX]h[]uhIj�$h_]r $h{)�r¡$}r¢$(hHXlreStatisticsInterfaceGroupr£$hIj�$hOjXhQhƒhS}r¤$(hU]hV]hW]hX]h[]uh]M h_]r¥$hhXlreStatisticsInterfaceGroupr¦$…�r§$}r¨$(hHj£$hIj¡$ubaubahQj†ubjy)�r©$}rª$(hHUhS}r«$(hU]hV]hW]hX]h[]uhIj�$h_]r¬$h{)�r­$}r®$(hHXgetr¯$hIj©$hOjXhQhƒhS}r°$(hU]hV]hW]hX]h[]uh]M h_]r±$hhXgetr²$…�r³$}r´$(hHj¯$hIj­$ubaubahQj†ubjy)�rµ$}r¶$(hHUhS}r·$(hU]hV]hW]hX]h[]uhIj�$h_]r¸$h{)�r¹$}rº$(hHXgetr»$hIjµ$hOjXhQhƒhS}r¼$(hU]hV]hW]hX]h[]uh]M h_]r½$hhXgetr¾$…�r¿$}rÀ$(hHj»$hIj¹$ubaubahQj†ubehQj³ubjt)�rÁ$}rÂ$(hHUhS}rÃ$(hU]hV]hW]hX]h[]uhIj h_]rÄ$(jy)�rÅ$}rÆ$(hHUhS}rÇ$(hU]hV]hW]hX]h[]uhIjÁ$h_]rÈ$h{)�rÉ$}rÊ$(hHX lreCntRxBrË$hIjÅ$hOjXhQhƒhS}rÌ$(hU]hV]hW]hX]h[]uh]M"h_]rÍ$hhX lreCntRxBrÎ$…�rÏ$}rÐ$(hHjË$hIjÉ$ubaubahQj†ubjy)�rÑ$}rÒ$(hHUhS}rÓ$(hU]hV]hW]hX]h[]uhIjÁ$h_]rÔ$h{)�rÕ$}rÖ$(hHXlreStatisticsInterfaceGroupr×$hIjÑ$hOjXhQhƒhS}rØ$(hU]hV]hW]hX]h[]uh]M"h_]rÙ$hhXlreStatisticsInterfaceGrouprÚ$…�rÛ$}rÜ$(hHj×$hIjÕ$ubaubahQj†ubjy)�rÝ$}rÞ$(hHUhS}rß$(hU]hV]hW]hX]h[]uhIjÁ$h_]rà$h{)�rá$}râ$(hHXgetrã$hIjÝ$hOjXhQhƒhS}rä$(hU]hV]hW]hX]h[]uh]M"h_]rå$hhXgetræ$…�rç$}rè$(hHjã$hIjá$ubaubahQj†ubjy)�ré$}rê$(hHUhS}rë$(hU]hV]hW]hX]h[]uhIjÁ$h_]rì$h{)�rí$}rî$(hHXgetrï$hIjé$hOjXhQhƒhS}rð$(hU]hV]hW]hX]h[]uh]M"h_]rñ$hhXgetrò$…�ró$}rô$(hHjï$hIjí$ubaubahQj†ubehQj³ubjt)�rõ$}rö$(hHUhS}r÷$(hU]hV]hW]hX]h[]uhIj h_]rø$(jy)�rù$}rú$(hHUhS}rû$(hU]hV]hW]hX]h[]uhIjõ$h_]rü$h{)�rý$}rþ$(hHX lreCntRxCrÿ$hIjù$hOjXhQhƒhS}r%(hU]hV]hW]hX]h[]uh]M$h_]r%hhX lreCntRxCr%…�r%}r%(hHjÿ$hIjý$ubaubahQj†ubjy)�r%}r%(hHUhS}r%(hU]hV]hW]hX]h[]uhIjõ$h_]r%h{)�r %}r %(hHXlreStatisticsInterfaceGroupr %hIj%hOjXhQhƒhS}r %(hU]hV]hW]hX]h[]uh]M$h_]r %hhXlreStatisticsInterfaceGroupr%…�r%}r%(hHj %hIj %ubaubahQj†ubjy)�r%}r%(hHUhS}r%(hU]hV]hW]hX]h[]uhIjõ$h_]r%h{)�r%}r%(hHXgetr%hIj%hOjXhQhƒhS}r%(hU]hV]hW]hX]h[]uh]M$h_]r%hhXgetr%…�r%}r%(hHj%hIj%ubaubahQj†ubjy)�r%}r%(hHUhS}r%(hU]hV]hW]hX]h[]uhIjõ$h_]r %h{)�r!%}r"%(hHXgetr#%hIj%hOjXhQhƒhS}r$%(hU]hV]hW]hX]h[]uh]M$h_]r%%hhXgetr&%…�r'%}r(%(hHj#%hIj!%ubaubahQj†ubehQj³ubjt)�r)%}r*%(hHUhS}r+%(hU]hV]hW]hX]h[]uhIj h_]r,%(jy)�r-%}r.%(hHUhS}r/%(hU]hV]hW]hX]h[]uhIj)%h_]r0%h{)�r1%}r2%(hHX lreCntErrorsAr3%hIj-%hOjXhQhƒhS}r4%(hU]hV]hW]hX]h[]uh]M&h_]r5%hhX lreCntErrorsAr6%…�r7%}r8%(hHj3%hIj1%ubaubahQj†ubjy)�r9%}r:%(hHUhS}r;%(hU]hV]hW]hX]h[]uhIj)%h_]r<%h{)�r=%}r>%(hHXlreStatisticsInterfaceGroupr?%hIj9%hOjXhQhƒhS}r@%(hU]hV]hW]hX]h[]uh]M&h_]rA%hhXlreStatisticsInterfaceGrouprB%…�rC%}rD%(hHj?%hIj=%ubaubahQj†ubjy)�rE%}rF%(hHUhS}rG%(hU]hV]hW]hX]h[]uhIj)%h_]rH%h{)�rI%}rJ%(hHXgetrK%hIjE%hOjXhQhƒhS}rL%(hU]hV]hW]hX]h[]uh]M&h_]rM%hhXgetrN%…�rO%}rP%(hHjK%hIjI%ubaubahQj†ubjy)�rQ%}rR%(hHUhS}rS%(hU]hV]hW]hX]h[]uhIj)%h_]rT%h{)�rU%}rV%(hHXgetrW%hIjQ%hOjXhQhƒhS}rX%(hU]hV]hW]hX]h[]uh]M&h_]rY%hhXgetrZ%…�r[%}r\%(hHjW%hIjU%ubaubahQj†ubehQj³ubjt)�r]%}r^%(hHUhS}r_%(hU]hV]hW]hX]h[]uhIj h_]r`%(jy)�ra%}rb%(hHUhS}rc%(hU]hV]hW]hX]h[]uhIj]%h_]rd%h{)�re%}rf%(hHX lreCntErrorsBrg%hIja%hOjXhQhƒhS}rh%(hU]hV]hW]hX]h[]uh]M(h_]ri%hhX lreCntErrorsBrj%…�rk%}rl%(hHjg%hIje%ubaubahQj†ubjy)�rm%}rn%(hHUhS}ro%(hU]hV]hW]hX]h[]uhIj]%h_]rp%h{)�rq%}rr%(hHXlreStatisticsInterfaceGrouprs%hIjm%hOjXhQhƒhS}rt%(hU]hV]hW]hX]h[]uh]M(h_]ru%hhXlreStatisticsInterfaceGrouprv%…�rw%}rx%(hHjs%hIjq%ubaubahQj†ubjy)�ry%}rz%(hHUhS}r{%(hU]hV]hW]hX]h[]uhIj]%h_]r|%h{)�r}%}r~%(hHXgetr%hIjy%hOjXhQhƒhS}r€%(hU]hV]hW]hX]h[]uh]M(h_]r�%hhXgetr‚%…�rƒ%}r„%(hHj%hIj}%ubaubahQj†ubjy)�r…%}r†%(hHUhS}r‡%(hU]hV]hW]hX]h[]uhIj]%h_]rˆ%h{)�r‰%}rŠ%(hHXgetr‹%hIj…%hOjXhQhƒhS}rŒ%(hU]hV]hW]hX]h[]uh]M(h_]r�%hhXgetrŽ%…�r�%}r�%(hHj‹%hIj‰%ubaubahQj†ubehQj³ubjt)�r‘%}r’%(hHUhS}r“%(hU]hV]hW]hX]h[]uhIj h_]r”%(jy)�r•%}r–%(hHUhS}r—%(hU]hV]hW]hX]h[]uhIj‘%h_]r˜%h{)�r™%}rš%(hHX lreCntErrorsCr›%hIj•%hOjXhQhƒhS}rœ%(hU]hV]hW]hX]h[]uh]M*h_]r�%hhX lreCntErrorsCrž%…�rŸ%}r %(hHj›%hIj™%ubaubahQj†ubjy)�r¡%}r¢%(hHUhS}r£%(hU]hV]hW]hX]h[]uhIj‘%h_]r¤%h{)�r¥%}r¦%(hHXlreStatisticsInterfaceGroupr§%hIj¡%hOjXhQhƒhS}r¨%(hU]hV]hW]hX]h[]uh]M*h_]r©%hhXlreStatisticsInterfaceGrouprª%…�r«%}r¬%(hHj§%hIj¥%ubaubahQj†ubjy)�r­%}r®%(hHUhS}r¯%(hU]hV]hW]hX]h[]uhIj‘%h_]r°%h{)�r±%}r²%(hHXgetr³%hIj­%hOjXhQhƒhS}r´%(hU]hV]hW]hX]h[]uh]M*h_]rµ%hhXgetr¶%…�r·%}r¸%(hHj³%hIj±%ubaubahQj†ubjy)�r¹%}rº%(hHUhS}r»%(hU]hV]hW]hX]h[]uhIj‘%h_]r¼%h{)�r½%}r¾%(hHXgetr¿%hIj¹%hOjXhQhƒhS}rÀ%(hU]hV]hW]hX]h[]uh]M*h_]rÁ%hhXgetrÂ%…�rÃ%}rÄ%(hHj¿%hIj½%ubaubahQj†ubehQj³ubjt)�rÅ%}rÆ%(hHUhS}rÇ%(hU]hV]hW]hX]h[]uhIj h_]rÈ%(jy)�rÉ%}rÊ%(hHUhS}rË%(hU]hV]hW]hX]h[]uhIjÅ%h_]rÌ%h{)�rÍ%}rÎ%(hHX lreCntNodesrÏ%hIjÉ%hOjXhQhƒhS}rÐ%(hU]hV]hW]hX]h[]uh]M,h_]rÑ%hhX lreCntNodesrÒ%…�rÓ%}rÔ%(hHjÏ%hIjÍ%ubaubahQj†ubjy)�rÕ%}rÖ%(hHUhS}r×%(hU]hV]hW]hX]h[]uhIjÅ%h_]rØ%h{)�rÙ%}rÚ%(hHXlreStatisticsInterfaceGrouprÛ%hIjÕ%hOjXhQhƒhS}rÜ%(hU]hV]hW]hX]h[]uh]M,h_]rÝ%hhXlreStatisticsInterfaceGrouprÞ%…�rß%}rà%(hHjÛ%hIjÙ%ubaubahQj†ubjy)�rá%}râ%(hHUhS}rã%(hU]hV]hW]hX]h[]uhIjÅ%h_]rä%h{)�rå%}ræ%(hHXgetrç%hIjá%hOjXhQhƒhS}rè%(hU]hV]hW]hX]h[]uh]M,h_]ré%hhXgetrê%…�rë%}rì%(hHjç%hIjå%ubaubahQj†ubjy)�rí%}rî%(hHUhS}rï%(hU]hV]hW]hX]h[]uhIjÅ%h_]rð%h{)�rñ%}rò%(hHXgetró%hIjí%hOjXhQhƒhS}rô%(hU]hV]hW]hX]h[]uh]M,h_]rõ%hhXgetrö%…�r÷%}rø%(hHjó%hIjñ%ubaubahQj†ubehQj³ubjt)�rù%}rú%(hHUhS}rû%(hU]hV]hW]hX]h[]uhIj h_]rü%(jy)�rý%}rþ%(hHUhS}rÿ%(hU]hV]hW]hX]h[]uhIjù%h_]r&h{)�r&}r&(hHXlreCntProxyNodesr&hIjý%hOjXhQhƒhS}r&(hU]hV]hW]hX]h[]uh]M.h_]r&hhXlreCntProxyNodesr&…�r&}r&(hHj&hIj&ubaubahQj†ubjy)�r &}r &(hHUhS}r &(hU]hV]hW]hX]h[]uhIjù%h_]r &h{)�r &}r&(hHXlreStatisticsInterfaceGroupr&hIj &hOjXhQhƒhS}r&(hU]hV]hW]hX]h[]uh]M.h_]r&hhXlreStatisticsInterfaceGroupr&…�r&}r&(hHj&hIj &ubaubahQj†ubjy)�r&}r&(hHUhS}r&(hU]hV]hW]hX]h[]uhIjù%h_]r&h{)�r&}r&(hHXgetr&hIj&hOjXhQhƒhS}r&(hU]hV]hW]hX]h[]uh]M.h_]r&hhXgetr&…�r&}r &(hHj&hIj&ubaubahQj†ubjy)�r!&}r"&(hHUhS}r#&(hU]hV]hW]hX]h[]uhIjù%h_]r$&h{)�r%&}r&&(hHXNSr'&hIj!&hOjXhQhƒhS}r(&(hU]hV]hW]hX]h[]uh]M.h_]r)&hhXNSr*&…�r+&}r,&(hHj'&hIj%&ubaubahQj†ubehQj³ubjt)�r-&}r.&(hHUhS}r/&(hU]hV]hW]hX]h[]uhIj h_]r0&(jy)�r1&}r2&(hHUhS}r3&(hU]hV]hW]hX]h[]uhIj-&h_]r4&h{)�r5&}r6&(hHX lreCntUniqueAr7&hIj1&hOjXhQhƒhS}r8&(hU]hV]hW]hX]h[]uh]M0h_]r9&hhX lreCntUniqueAr:&…�r;&}r<&(hHj7&hIj5&ubaubahQj†ubjy)�r=&}r>&(hHUhS}r?&(hU]hV]hW]hX]h[]uhIj-&h_]r@&h{)�rA&}rB&(hHXlreStatisticsInterfaceGrouprC&hIj=&hOjXhQhƒhS}rD&(hU]hV]hW]hX]h[]uh]M0h_]rE&hhXlreStatisticsInterfaceGrouprF&…�rG&}rH&(hHjC&hIjA&ubaubahQj†ubjy)�rI&}rJ&(hHUhS}rK&(hU]hV]hW]hX]h[]uhIj-&h_]rL&h{)�rM&}rN&(hHXgetrO&hIjI&hOjXhQhƒhS}rP&(hU]hV]hW]hX]h[]uh]M0h_]rQ&hhXgetrR&…�rS&}rT&(hHjO&hIjM&ubaubahQj†ubjy)�rU&}rV&(hHUhS}rW&(hU]hV]hW]hX]h[]uhIj-&h_]rX&h{)�rY&}rZ&(hHXgetr[&hIjU&hOjXhQhƒhS}r\&(hU]hV]hW]hX]h[]uh]M0h_]r]&hhXgetr^&…�r_&}r`&(hHj[&hIjY&ubaubahQj†ubehQj³ubjt)�ra&}rb&(hHUhS}rc&(hU]hV]hW]hX]h[]uhIj h_]rd&(jy)�re&}rf&(hHUhS}rg&(hU]hV]hW]hX]h[]uhIja&h_]rh&h{)�ri&}rj&(hHX lreCntUniqueBrk&hIje&hOjXhQhƒhS}rl&(hU]hV]hW]hX]h[]uh]M2h_]rm&hhX lreCntUniqueBrn&…�ro&}rp&(hHjk&hIji&ubaubahQj†ubjy)�rq&}rr&(hHUhS}rs&(hU]hV]hW]hX]h[]uhIja&h_]rt&h{)�ru&}rv&(hHXlreStatisticsInterfaceGrouprw&hIjq&hOjXhQhƒhS}rx&(hU]hV]hW]hX]h[]uh]M2h_]ry&hhXlreStatisticsInterfaceGrouprz&…�r{&}r|&(hHjw&hIju&ubaubahQj†ubjy)�r}&}r~&(hHUhS}r&(hU]hV]hW]hX]h[]uhIja&h_]r€&h{)�r�&}r‚&(hHXgetrƒ&hIj}&hOjXhQhƒhS}r„&(hU]hV]hW]hX]h[]uh]M2h_]r…&hhXgetr†&…�r‡&}rˆ&(hHjƒ&hIj�&ubaubahQj†ubjy)�r‰&}rŠ&(hHUhS}r‹&(hU]hV]hW]hX]h[]uhIja&h_]rŒ&h{)�r�&}rŽ&(hHXgetr�&hIj‰&hOjXhQhƒhS}r�&(hU]hV]hW]hX]h[]uh]M2h_]r‘&hhXgetr’&…�r“&}r”&(hHj�&hIj�&ubaubahQj†ubehQj³ubjt)�r•&}r–&(hHUhS}r—&(hU]hV]hW]hX]h[]uhIj h_]r˜&(jy)�r™&}rš&(hHUhS}r›&(hU]hV]hW]hX]h[]uhIj•&h_]rœ&h{)�r�&}rž&(hHX lreCntUniqueCrŸ&hIj™&hOjXhQhƒhS}r &(hU]hV]hW]hX]h[]uh]M4h_]r¡&hhX lreCntUniqueCr¢&…�r£&}r¤&(hHjŸ&hIj�&ubaubahQj†ubjy)�r¥&}r¦&(hHUhS}r§&(hU]hV]hW]hX]h[]uhIj•&h_]r¨&h{)�r©&}rª&(hHXlreStatisticsInterfaceGroupr«&hIj¥&hOjXhQhƒhS}r¬&(hU]hV]hW]hX]h[]uh]M4h_]r­&hhXlreStatisticsInterfaceGroupr®&…�r¯&}r°&(hHj«&hIj©&ubaubahQj†ubjy)�r±&}r²&(hHUhS}r³&(hU]hV]hW]hX]h[]uhIj•&h_]r´&h{)�rµ&}r¶&(hHXgetr·&hIj±&hOjXhQhƒhS}r¸&(hU]hV]hW]hX]h[]uh]M4h_]r¹&hhXgetrº&…�r»&}r¼&(hHj·&hIjµ&ubaubahQj†ubjy)�r½&}r¾&(hHUhS}r¿&(hU]hV]hW]hX]h[]uhIj•&h_]rÀ&h{)�rÁ&}rÂ&(hHXgetrÃ&hIj½&hOjXhQhƒhS}rÄ&(hU]hV]hW]hX]h[]uh]M4h_]rÅ&hhXgetrÆ&…�rÇ&}rÈ&(hHjÃ&hIjÁ&ubaubahQj†ubehQj³ubjt)�rÉ&}rÊ&(hHUhS}rË&(hU]hV]hW]hX]h[]uhIj h_]rÌ&(jy)�rÍ&}rÎ&(hHUhS}rÏ&(hU]hV]hW]hX]h[]uhIjÉ&h_]rÐ&h{)�rÑ&}rÒ&(hHXlreCntDuplicateArÓ&hIjÍ&hOjXhQhƒhS}rÔ&(hU]hV]hW]hX]h[]uh]M6h_]rÕ&hhXlreCntDuplicateArÖ&…�r×&}rØ&(hHjÓ&hIjÑ&ubaubahQj†ubjy)�rÙ&}rÚ&(hHUhS}rÛ&(hU]hV]hW]hX]h[]uhIjÉ&h_]rÜ&h{)�rÝ&}rÞ&(hHXlreStatisticsInterfaceGrouprß&hIjÙ&hOjXhQhƒhS}rà&(hU]hV]hW]hX]h[]uh]M6h_]rá&hhXlreStatisticsInterfaceGrouprâ&…�rã&}rä&(hHjß&hIjÝ&ubaubahQj†ubjy)�rå&}ræ&(hHUhS}rç&(hU]hV]hW]hX]h[]uhIjÉ&h_]rè&h{)�ré&}rê&(hHXgetrë&hIjå&hOjXhQhƒhS}rì&(hU]hV]hW]hX]h[]uh]M6h_]rí&hhXgetrî&…�rï&}rð&(hHjë&hIjé&ubaubahQj†ubjy)�rñ&}rò&(hHUhS}ró&(hU]hV]hW]hX]h[]uhIjÉ&h_]rô&h{)�rõ&}rö&(hHXgetr÷&hIjñ&hOjXhQhƒhS}rø&(hU]hV]hW]hX]h[]uh]M6h_]rù&hhXgetrú&…�rû&}rü&(hHj÷&hIjõ&ubaubahQj†ubehQj³ubjt)�rý&}rþ&(hHUhS}rÿ&(hU]hV]hW]hX]h[]uhIj h_]r'(jy)�r'}r'(hHUhS}r'(hU]hV]hW]hX]h[]uhIjý&h_]r'h{)�r'}r'(hHXlreCntDuplicateBr'hIj'hOjXhQhƒhS}r'(hU]hV]hW]hX]h[]uh]M8h_]r 'hhXlreCntDuplicateBr '…�r '}r '(hHj'hIj'ubaubahQj†ubjy)�r '}r'(hHUhS}r'(hU]hV]hW]hX]h[]uhIjý&h_]r'h{)�r'}r'(hHXlreStatisticsInterfaceGroupr'hIj 'hOjXhQhƒhS}r'(hU]hV]hW]hX]h[]uh]M8h_]r'hhXlreStatisticsInterfaceGroupr'…�r'}r'(hHj'hIj'ubaubahQj†ubjy)�r'}r'(hHUhS}r'(hU]hV]hW]hX]h[]uhIjý&h_]r'h{)�r'}r'(hHXgetr'hIj'hOjXhQhƒhS}r '(hU]hV]hW]hX]h[]uh]M8h_]r!'hhXgetr"'…�r#'}r$'(hHj'hIj'ubaubahQj†ubjy)�r%'}r&'(hHUhS}r''(hU]hV]hW]hX]h[]uhIjý&h_]r('h{)�r)'}r*'(hHXgetr+'hIj%'hOjXhQhƒhS}r,'(hU]hV]hW]hX]h[]uh]M8h_]r-'hhXgetr.'…�r/'}r0'(hHj+'hIj)'ubaubahQj†ubehQj³ubjt)�r1'}r2'(hHUhS}r3'(hU]hV]hW]hX]h[]uhIj h_]r4'(jy)�r5'}r6'(hHUhS}r7'(hU]hV]hW]hX]h[]uhIj1'h_]r8'h{)�r9'}r:'(hHXlreCntDuplicateCr;'hIj5'hOjXhQhƒhS}r<'(hU]hV]hW]hX]h[]uh]M:h_]r='hhXlreCntDuplicateCr>'…�r?'}r@'(hHj;'hIj9'ubaubahQj†ubjy)�rA'}rB'(hHUhS}rC'(hU]hV]hW]hX]h[]uhIj1'h_]rD'h{)�rE'}rF'(hHXlreStatisticsInterfaceGrouprG'hIjA'hOjXhQhƒhS}rH'(hU]hV]hW]hX]h[]uh]M:h_]rI'hhXlreStatisticsInterfaceGrouprJ'…�rK'}rL'(hHjG'hIjE'ubaubahQj†ubjy)�rM'}rN'(hHUhS}rO'(hU]hV]hW]hX]h[]uhIj1'h_]rP'h{)�rQ'}rR'(hHXgetrS'hIjM'hOjXhQhƒhS}rT'(hU]hV]hW]hX]h[]uh]M:h_]rU'hhXgetrV'…�rW'}rX'(hHjS'hIjQ'ubaubahQj†ubjy)�rY'}rZ'(hHUhS}r['(hU]hV]hW]hX]h[]uhIj1'h_]r\'h{)�r]'}r^'(hHXgetr_'hIjY'hOjXhQhƒhS}r`'(hU]hV]hW]hX]h[]uh]M:h_]ra'hhXgetrb'…�rc'}rd'(hHj_'hIj]'ubaubahQj†ubehQj³ubjt)�re'}rf'(hHUhS}rg'(hU]hV]hW]hX]h[]uhIj h_]rh'(jy)�ri'}rj'(hHUhS}rk'(hU]hV]hW]hX]h[]uhIje'h_]rl'h{)�rm'}rn'(hHX lreCntMultiAro'hIji'hOjXhQhƒhS}rp'(hU]hV]hW]hX]h[]uh]M<h_]rq'hhX lreCntMultiArr'…�rs'}rt'(hHjo'hIjm'ubaubahQj†ubjy)�ru'}rv'(hHUhS}rw'(hU]hV]hW]hX]h[]uhIje'h_]rx'h{)�ry'}rz'(hHXlreStatisticsInterfaceGroupr{'hIju'hOjXhQhƒhS}r|'(hU]hV]hW]hX]h[]uh]M<h_]r}'hhXlreStatisticsInterfaceGroupr~'…�r'}r€'(hHj{'hIjy'ubaubahQj†ubjy)�r�'}r‚'(hHUhS}rƒ'(hU]hV]hW]hX]h[]uhIje'h_]r„'h{)�r…'}r†'(hHXgetr‡'hIj�'hOjXhQhƒhS}rˆ'(hU]hV]hW]hX]h[]uh]M<h_]r‰'hhXgetrŠ'…�r‹'}rŒ'(hHj‡'hIj…'ubaubahQj†ubjy)�r�'}rŽ'(hHUhS}r�'(hU]hV]hW]hX]h[]uhIje'h_]r�'h{)�r‘'}r’'(hHXgetr“'hIj�'hOjXhQhƒhS}r”'(hU]hV]hW]hX]h[]uh]M<h_]r•'hhXgetr–'…�r—'}r˜'(hHj“'hIj‘'ubaubahQj†ubehQj³ubjt)�r™'}rš'(hHUhS}r›'(hU]hV]hW]hX]h[]uhIj h_]rœ'(jy)�r�'}rž'(hHUhS}rŸ'(hU]hV]hW]hX]h[]uhIj™'h_]r 'h{)�r¡'}r¢'(hHX lreCntMultiBr£'hIj�'hOjXhQhƒhS}r¤'(hU]hV]hW]hX]h[]uh]M>h_]r¥'hhX lreCntMultiBr¦'…�r§'}r¨'(hHj£'hIj¡'ubaubahQj†ubjy)�r©'}rª'(hHUhS}r«'(hU]hV]hW]hX]h[]uhIj™'h_]r¬'h{)�r­'}r®'(hHXlreStatisticsInterfaceGroupr¯'hIj©'hOjXhQhƒhS}r°'(hU]hV]hW]hX]h[]uh]M>h_]r±'hhXlreStatisticsInterfaceGroupr²'…�r³'}r´'(hHj¯'hIj­'ubaubahQj†ubjy)�rµ'}r¶'(hHUhS}r·'(hU]hV]hW]hX]h[]uhIj™'h_]r¸'h{)�r¹'}rº'(hHXgetr»'hIjµ'hOjXhQhƒhS}r¼'(hU]hV]hW]hX]h[]uh]M>h_]r½'hhXgetr¾'…�r¿'}rÀ'(hHj»'hIj¹'ubaubahQj†ubjy)�rÁ'}rÂ'(hHUhS}rÃ'(hU]hV]hW]hX]h[]uhIj™'h_]rÄ'h{)�rÅ'}rÆ'(hHXgetrÇ'hIjÁ'hOjXhQhƒhS}rÈ'(hU]hV]hW]hX]h[]uh]M>h_]rÉ'hhXgetrÊ'…�rË'}rÌ'(hHjÇ'hIjÅ'ubaubahQj†ubehQj³ubjt)�rÍ'}rÎ'(hHUhS}rÏ'(hU]hV]hW]hX]h[]uhIj h_]rÐ'(jy)�rÑ'}rÒ'(hHUhS}rÓ'(hU]hV]hW]hX]h[]uhIjÍ'h_]rÔ'h{)�rÕ'}rÖ'(hHX lreCntMultiCr×'hIjÑ'hOjXhQhƒhS}rØ'(hU]hV]hW]hX]h[]uh]M@h_]rÙ'hhX lreCntMultiCrÚ'…�rÛ'}rÜ'(hHj×'hIjÕ'ubaubahQj†ubjy)�rÝ'}rÞ'(hHUhS}rß'(hU]hV]hW]hX]h[]uhIjÍ'h_]rà'h{)�rá'}râ'(hHXlreStatisticsInterfaceGrouprã'hIjÝ'hOjXhQhƒhS}rä'(hU]hV]hW]hX]h[]uh]M@h_]rå'hhXlreStatisticsInterfaceGroupræ'…�rç'}rè'(hHjã'hIjá'ubaubahQj†ubjy)�ré'}rê'(hHUhS}rë'(hU]hV]hW]hX]h[]uhIjÍ'h_]rì'h{)�rí'}rî'(hHXgetrï'hIjé'hOjXhQhƒhS}rð'(hU]hV]hW]hX]h[]uh]M@h_]rñ'hhXgetrò'…�ró'}rô'(hHjï'hIjí'ubaubahQj†ubjy)�rõ'}rö'(hHUhS}r÷'(hU]hV]hW]hX]h[]uhIjÍ'h_]rø'h{)�rù'}rú'(hHXgetrû'hIjõ'hOjXhQhƒhS}rü'(hU]hV]hW]hX]h[]uh]M@h_]rý'hhXgetrþ'…�rÿ'}r((hHjû'hIjù'ubaubahQj†ubehQj³ubjt)�r(}r((hHUhS}r((hU]hV]hW]hX]h[]uhIj h_]r((jy)�r(}r((hHUhS}r((hU]hV]hW]hX]h[]uhIj(h_]r(h{)�r (}r ((hHX lreCntOwnRxAr (hIj(hOjXhQhƒhS}r ((hU]hV]hW]hX]h[]uh]MBh_]r (hhX lreCntOwnRxAr(…�r(}r((hHj (hIj (ubaubahQj†ubjy)�r(}r((hHUhS}r((hU]hV]hW]hX]h[]uhIj(h_]r(h{)�r(}r((hHXlreStatisticsInterfaceGroupr(hIj(hOjXhQhƒhS}r((hU]hV]hW]hX]h[]uh]MBh_]r(hhXlreStatisticsInterfaceGroupr(…�r(}r((hHj(hIj(ubaubahQj†ubjy)�r(}r((hHUhS}r((hU]hV]hW]hX]h[]uhIj(h_]r (h{)�r!(}r"((hHXgetr#(hIj(hOjXhQhƒhS}r$((hU]hV]hW]hX]h[]uh]MBh_]r%(hhXgetr&(…�r'(}r(((hHj#(hIj!(ubaubahQj†ubjy)�r)(}r*((hHUhS}r+((hU]hV]hW]hX]h[]uhIj(h_]r,(h{)�r-(}r.((hHXgetr/(hIj)(hOjXhQhƒhS}r0((hU]hV]hW]hX]h[]uh]MBh_]r1(hhXgetr2(…�r3(}r4((hHj/(hIj-(ubaubahQj†ubehQj³ubjt)�r5(}r6((hHUhS}r7((hU]hV]hW]hX]h[]uhIj h_]r8((jy)�r9(}r:((hHUhS}r;((hU]hV]hW]hX]h[]uhIj5(h_]r<(h{)�r=(}r>((hHX lreCntOwnRxBr?(hIj9(hOjXhQhƒhS}r@((hU]hV]hW]hX]h[]uh]MDh_]rA(hhX lreCntOwnRxBrB(…�rC(}rD((hHj?(hIj=(ubaubahQj†ubjy)�rE(}rF((hHUhS}rG((hU]hV]hW]hX]h[]uhIj5(h_]rH(h{)�rI(}rJ((hHXlreStatisticsInterfaceGrouprK(hIjE(hOjXhQhƒhS}rL((hU]hV]hW]hX]h[]uh]MDh_]rM(hhXlreStatisticsInterfaceGrouprN(…�rO(}rP((hHjK(hIjI(ubaubahQj†ubjy)�rQ(}rR((hHUhS}rS((hU]hV]hW]hX]h[]uhIj5(h_]rT(h{)�rU(}rV((hHXgetrW(hIjQ(hOjXhQhƒhS}rX((hU]hV]hW]hX]h[]uh]MDh_]rY(hhXgetrZ(…�r[(}r\((hHjW(hIjU(ubaubahQj†ubjy)�r](}r^((hHUhS}r_((hU]hV]hW]hX]h[]uhIj5(h_]r`(h{)�ra(}rb((hHXgetrc(hIj](hOjXhQhƒhS}rd((hU]hV]hW]hX]h[]uh]MDh_]re(hhXgetrf(…�rg(}rh((hHjc(hIja(ubaubahQj†ubehQj³ubjt)�ri(}rj((hHUhS}rk((hU]hV]hW]hX]h[]uhIj h_]rl((jy)�rm(}rn((hHUhS}ro((hU]hV]hW]hX]h[]uhIji(h_]rp(h{)�rq(}rr((hHX lreNodesTablers(hIjm(hOjXhQhƒhS}rt((hU]hV]hW]hX]h[]uh]MFh_]ru(hhX lreNodesTablerv(…�rw(}rx((hHjs(hIjq(ubaubahQj†ubjy)�ry(}rz((hHUhS}r{((hU]hV]hW]hX]h[]uhIji(h_]r|(h{)�r}(}r~((hHXlreStatisticsInterfaceGroupr(hIjy(hOjXhQhƒhS}r€((hU]hV]hW]hX]h[]uh]MFh_]r�(hhXlreStatisticsInterfaceGroupr‚(…�rƒ(}r„((hHj(hIj}(ubaubahQj†ubjy)�r…(}r†((hHUhS}r‡((hU]hV]hW]hX]h[]uhIji(h_]rˆ(h{)�r‰(}rŠ((hHXNAr‹(hIj…(hOjXhQhƒhS}rŒ((hU]hV]hW]hX]h[]uh]MFh_]r�(hhXNArŽ(…�r�(}r�((hHj‹(hIj‰(ubaubahQj†ubjy)�r‘(}r’((hHUhS}r“((hU]hV]hW]hX]h[]uhIji(h_]r”(h{)�r•(}r–((hHXYesr—(hIj‘(hOjXhQhƒhS}r˜((hU]hV]hW]hX]h[]uh]MFh_]r™(hhXYesrš(…�r›(}rœ((hHj—(hIj•(ubaubahQj†ubehQj³ubjt)�r�(}rž((hHUhS}rŸ((hU]hV]hW]hX]h[]uhIj h_]r ((jy)�r¡(}r¢((hHUhS}r£((hU]hV]hW]hX]h[]uhIj�(h_]r¤(h{)�r¥(}r¦((hHX lreNodesIndexr§(hIj¡(hOjXhQhƒhS}r¨((hU]hV]hW]hX]h[]uh]MHh_]r©(hhX lreNodesIndexrª(…�r«(}r¬((hHj§(hIj¥(ubaubahQj†ubjy)�r­(}r®((hHUhS}r¯((hU]hV]hW]hX]h[]uhIj�(h_]r°(h{)�r±(}r²((hHXlreStatisticsInterfaceGroupr³(hIj­(hOjXhQhƒhS}r´((hU]hV]hW]hX]h[]uh]MHh_]rµ(hhXlreStatisticsInterfaceGroupr¶(…�r·(}r¸((hHj³(hIj±(ubaubahQj†ubjy)�r¹(}rº((hHUhS}r»((hU]hV]hW]hX]h[]uhIj�(h_]r¼(h{)�r½(}r¾((hHXNAr¿(hIj¹(hOjXhQhƒhS}rÀ((hU]hV]hW]hX]h[]uh]MHh_]rÁ(hhXNArÂ(…�rÃ(}rÄ((hHj¿(hIj½(ubaubahQj†ubjy)�rÅ(}rÆ((hHUhS}rÇ((hU]hV]hW]hX]h[]uhIj�(h_]rÈ(h{)�rÉ(}rÊ((hHXYesrË(hIjÅ(hOjXhQhƒhS}rÌ((hU]hV]hW]hX]h[]uh]MHh_]rÍ(hhXYesrÎ(…�rÏ(}rÐ((hHjË(hIjÉ(ubaubahQj†ubehQj³ubjt)�rÑ(}rÒ((hHUhS}rÓ((hU]hV]hW]hX]h[]uhIj h_]rÔ((jy)�rÕ(}rÖ((hHUhS}r×((hU]hV]hW]hX]h[]uhIjÑ(h_]rØ(h{)�rÙ(}rÚ((hHXlreNodesMacAddressrÛ(hIjÕ(hOjXhQhƒhS}rÜ((hU]hV]hW]hX]h[]uh]MJh_]rÝ(hhXlreNodesMacAddressrÞ(…�rß(}rà((hHjÛ(hIjÙ(ubaubahQj†ubjy)�rá(}râ((hHUhS}rã((hU]hV]hW]hX]h[]uhIjÑ(h_]rä(h{)�rå(}ræ((hHXlreStatisticsInterfaceGrouprç(hIjá(hOjXhQhƒhS}rè((hU]hV]hW]hX]h[]uh]MJh_]ré(hhXlreStatisticsInterfaceGrouprê(…�rë(}rì((hHjç(hIjå(ubaubahQj†ubjy)�rí(}rî((hHUhS}rï((hU]hV]hW]hX]h[]uhIjÑ(h_]rð(h{)�rñ(}rò((hHXgetró(hIjí(hOjXhQhƒhS}rô((hU]hV]hW]hX]h[]uh]MJh_]rõ(hhXgetrö(…�r÷(}rø((hHjó(hIjñ(ubaubahQj†ubjy)�rù(}rú((hHUhS}rû((hU]hV]hW]hX]h[]uhIjÑ(h_]rü(h{)�rý(}rþ((hHXgetrÿ(hIjù(hOjXhQhƒhS}r)(hU]hV]hW]hX]h[]uh]MJh_]r)hhXgetr)…�r)}r)(hHjÿ(hIjý(ubaubahQj†ubehQj³ubjt)�r)}r)(hHUhS}r)(hU]hV]hW]hX]h[]uhIj h_]r)(jy)�r )}r )(hHUhS}r )(hU]hV]hW]hX]h[]uhIj)h_]r )h{)�r )}r)(hHXlreTimeLastSeenAr)hIj )hOjXhQhƒhS}r)(hU]hV]hW]hX]h[]uh]MLh_]r)hhXlreTimeLastSeenAr)…�r)}r)(hHj)hIj )ubaubahQj†ubjy)�r)}r)(hHUhS}r)(hU]hV]hW]hX]h[]uhIj)h_]r)h{)�r)}r)(hHXlreStatisticsInterfaceGroupr)hIj)hOjXhQhƒhS}r)(hU]hV]hW]hX]h[]uh]MLh_]r)hhXlreStatisticsInterfaceGroupr)…�r)}r )(hHj)hIj)ubaubahQj†ubjy)�r!)}r")(hHUhS}r#)(hU]hV]hW]hX]h[]uhIj)h_]r$)h{)�r%)}r&)(hHXgetr')hIj!)hOjXhQhƒhS}r()(hU]hV]hW]hX]h[]uh]MLh_]r))hhXgetr*)…�r+)}r,)(hHj')hIj%)ubaubahQj†ubjy)�r-)}r.)(hHUhS}r/)(hU]hV]hW]hX]h[]uhIj)h_]r0)h{)�r1)}r2)(hHXgetr3)hIj-)hOjXhQhƒhS}r4)(hU]hV]hW]hX]h[]uh]MLh_]r5)hhXgetr6)…�r7)}r8)(hHj3)hIj1)ubaubahQj†ubehQj³ubjt)�r9)}r:)(hHUhS}r;)(hU]hV]hW]hX]h[]uhIj h_]r<)(jy)�r=)}r>)(hHUhS}r?)(hU]hV]hW]hX]h[]uhIj9)h_]r@)h{)�rA)}rB)(hHXlreTimeLastSeenBrC)hIj=)hOjXhQhƒhS}rD)(hU]hV]hW]hX]h[]uh]MNh_]rE)hhXlreTimeLastSeenBrF)…�rG)}rH)(hHjC)hIjA)ubaubahQj†ubjy)�rI)}rJ)(hHUhS}rK)(hU]hV]hW]hX]h[]uhIj9)h_]rL)h{)�rM)}rN)(hHXlreStatisticsInterfaceGrouprO)hIjI)hOjXhQhƒhS}rP)(hU]hV]hW]hX]h[]uh]MNh_]rQ)hhXlreStatisticsInterfaceGrouprR)…�rS)}rT)(hHjO)hIjM)ubaubahQj†ubjy)�rU)}rV)(hHUhS}rW)(hU]hV]hW]hX]h[]uhIj9)h_]rX)h{)�rY)}rZ)(hHXgetr[)hIjU)hOjXhQhƒhS}r\)(hU]hV]hW]hX]h[]uh]MNh_]r])hhXgetr^)…�r_)}r`)(hHj[)hIjY)ubaubahQj†ubjy)�ra)}rb)(hHUhS}rc)(hU]hV]hW]hX]h[]uhIj9)h_]rd)h{)�re)}rf)(hHXgetrg)hIja)hOjXhQhƒhS}rh)(hU]hV]hW]hX]h[]uh]MNh_]ri)hhXgetrj)…�rk)}rl)(hHjg)hIje)ubaubahQj†ubehQj³ubjt)�rm)}rn)(hHUhS}ro)(hU]hV]hW]hX]h[]uhIj h_]rp)(jy)�rq)}rr)(hHUhS}rs)(hU]hV]hW]hX]h[]uhIjm)h_]rt)h{)�ru)}rv)(hHXlreRemNodeTyperw)hIjq)hOjXhQhƒhS}rx)(hU]hV]hW]hX]h[]uh]MPh_]ry)hhXlreRemNodeTyperz)…�r{)}r|)(hHjw)hIju)ubaubahQj†ubjy)�r})}r~)(hHUhS}r)(hU]hV]hW]hX]h[]uhIjm)h_]r€)h{)�r�)}r‚)(hHXlreStatisticsInterfaceGrouprƒ)hIj})hOjXhQhƒhS}r„)(hU]hV]hW]hX]h[]uh]MPh_]r…)hhXlreStatisticsInterfaceGroupr†)…�r‡)}rˆ)(hHjƒ)hIj�)ubaubahQj†ubjy)�r‰)}rŠ)(hHUhS}r‹)(hU]hV]hW]hX]h[]uhIjm)h_]rŒ)h{)�r�)}rŽ)(hHXgetr�)hIj‰)hOjXhQhƒhS}r�)(hU]hV]hW]hX]h[]uh]MPh_]r‘)hhXgetr’)…�r“)}r”)(hHj�)hIj�)ubaubahQj†ubjy)�r•)}r–)(hHUhS}r—)(hU]hV]hW]hX]h[]uhIjm)h_]r˜)h{)�r™)}rš)(hHXgetr›)hIj•)hOjXhQhƒhS}rœ)(hU]hV]hW]hX]h[]uh]MPh_]r�)hhXgetrž)…�rŸ)}r )(hHj›)hIj™)ubaubahQj†ubehQj³ubjt)�r¡)}r¢)(hHUhS}r£)(hU]hV]hW]hX]h[]uhIj h_]r¤)(jy)�r¥)}r¦)(hHUhS}r§)(hU]hV]hW]hX]h[]uhIj¡)h_]r¨)h{)�r©)}rª)(hHXlreProxyNodeTabler«)hIj¥)hOjXhQhƒhS}r¬)(hU]hV]hW]hX]h[]uh]MRh_]r­)hhXlreProxyNodeTabler®)…�r¯)}r°)(hHj«)hIj©)ubaubahQj†ubjy)�r±)}r²)(hHUhS}r³)(hU]hV]hW]hX]h[]uhIj¡)h_]r´)h{)�rµ)}r¶)(hHXlreStatisticsInterfaceGroupr·)hIj±)hOjXhQhƒhS}r¸)(hU]hV]hW]hX]h[]uh]MRh_]r¹)hhXlreStatisticsInterfaceGrouprº)…�r»)}r¼)(hHj·)hIjµ)ubaubahQj†ubjy)�r½)}r¾)(hHUhS}r¿)(hU]hV]hW]hX]h[]uhIj¡)h_]hQj†ubjy)�rÀ)}rÁ)(hHUhS}rÂ)(hU]hV]hW]hX]h[]uhIj¡)h_]rÃ)h{)�rÄ)}rÅ)(hHXNSrÆ)hIjÀ)hOjXhQhƒhS}rÇ)(hU]hV]hW]hX]h[]uh]MRh_]rÈ)hhXNSrÉ)…�rÊ)}rË)(hHjÆ)hIjÄ)ubaubahQj†ubehQj³ubjt)�rÌ)}rÍ)(hHUhS}rÎ)(hU]hV]hW]hX]h[]uhIj h_]rÏ)(jy)�rÐ)}rÑ)(hHUhS}rÒ)(hU]hV]hW]hX]h[]uhIjÌ)h_]rÓ)h{)�rÔ)}rÕ)(hHXlreProxyNodeEntryrÖ)hIjÐ)hOjXhQhƒhS}r×)(hU]hV]hW]hX]h[]uh]MTh_]rØ)hhXlreProxyNodeEntryrÙ)…�rÚ)}rÛ)(hHjÖ)hIjÔ)ubaubahQj†ubjy)�rÜ)}rÝ)(hHUhS}rÞ)(hU]hV]hW]hX]h[]uhIjÌ)h_]rß)h{)�rà)}rá)(hHXlreStatisticsInterfacesGrouprâ)hIjÜ)hOjXhQhƒhS}rã)(hU]hV]hW]hX]h[]uh]MTh_]rä)hhXlreStatisticsInterfacesGrouprå)…�ræ)}rç)(hHjâ)hIjà)ubaubahQj†ubjy)�rè)}ré)(hHUhS}rê)(hU]hV]hW]hX]h[]uhIjÌ)h_]rë)h{)�rì)}rí)(hHXNArî)hIjè)hOjXhQhƒhS}rï)(hU]hV]hW]hX]h[]uh]MTh_]rð)hhXNArñ)…�rò)}ró)(hHjî)hIjì)ubaubahQj†ubjy)�rô)}rõ)(hHUhS}rö)(hU]hV]hW]hX]h[]uhIjÌ)h_]r÷)h{)�rø)}rù)(hHXNSrú)hIjô)hOjXhQhƒhS}rû)(hU]hV]hW]hX]h[]uh]MTh_]rü)hhXNSrý)…�rþ)}rÿ)(hHjú)hIjø)ubaubahQj†ubehQj³ubjt)�r*}r*(hHUhS}r*(hU]hV]hW]hX]h[]uhIj h_]r*(jy)�r*}r*(hHUhS}r*(hU]hV]hW]hX]h[]uhIj*h_]r*h{)�r*}r *(hHXlreProxyNodeMacAddressr *hIj*hOjXhQhƒhS}r *(hU]hV]hW]hX]h[]uh]MVh_]r *hhXlreProxyNodeMacAddressr *…�r*}r*(hHj *hIj*ubaubahQj†ubjy)�r*}r*(hHUhS}r*(hU]hV]hW]hX]h[]uhIj*h_]r*h{)�r*}r*(hHXlreStatisticsInterfacesGroupr*hIj*hOjXhQhƒhS}r*(hU]hV]hW]hX]h[]uh]MVh_]r*hhXlreStatisticsInterfacesGroupr*…�r*}r*(hHj*hIj*ubaubahQj†ubjy)�r*}r*(hHUhS}r*(hU]hV]hW]hX]h[]uhIj*h_]r*h{)�r *}r!*(hHXgetr"*hIj*hOjXhQhƒhS}r#*(hU]hV]hW]hX]h[]uh]MVh_]r$*hhXgetr%*…�r&*}r'*(hHj"*hIj *ubaubahQj†ubjy)�r(*}r)*(hHUhS}r**(hU]hV]hW]hX]h[]uhIj*h_]r+*h{)�r,*}r-*(hHXNSr.*hIj(*hOjXhQhƒhS}r/*(hU]hV]hW]hX]h[]uh]MVh_]r0*hhXNSr1*…�r2*}r3*(hHj.*hIj,*ubaubahQj†ubehQj³ubehQj,ubehQj-ubaubh{)�r4*}r5*(hHX.**Note** NS: Not supported, NA: Not Applicabler6*hIjChOjXhQhƒhS}r7*(hU]hV]hW]hX]h[]uh]MYh^hh_]r8*(hæ)�r9*}r:*(hHX**Note**hS}r;*(hU]hV]hW]hX]h[]uhIj4*h_]r<*hhXNoter=*…�r>*}r?*(hHUhIj9*ubahQhîubhhX& NS: Not supported, NA: Not Applicabler@*…�rA*}rB*(hHX& NS: Not supported, NA: Not ApplicablehIj4*ubeubeubhJ)�rC*}rD*(hHUhIjFhOjXhQhRhS}rE*(hU]hV]hW]hX]rF*Uiproute2rG*ah[]rH*h}rt*jl*ji*sh_]ru*(ha)�rv*}rw*(hHX Testing HSR/PRP Firmware Offloadrx*hIjm*hOjXhQhehS}ry*(hU]hV]hW]hX]h[]uh]Mfh^hh_]rz*hhX Testing HSR/PRP Firmware Offloadr{*…�r|*}r}*(hHjx*hIjv*ubaubh{)�r~*}r*(hHX†The setup of the IDKs for testing HSR/PRP firmware offload and the configuration of the HSR/PRP interfaces after kernel boot up are no different than the case without firmware offload. The differences are, in the case of firmware offload, the correct PRU firmware needs to be loaded and the PRUETH driver needs to be configured to interface with the type of firmware loaded, during boot up.r€*hIjm*hOjXhQhƒhS}r�*(hU]hV]hW]hX]h[]uh]Mhh^hh_]r‚*hhX†The setup of the IDKs for testing HSR/PRP firmware offload and the configuration of the HSR/PRP interfaces after kernel boot up are no different than the case without firmware offload. The differences are, in the case of firmware offload, the correct PRU firmware needs to be loaded and the PRUETH driver needs to be configured to interface with the type of firmware loaded, during boot up.rƒ*…�r„*}r…*(hHj€*hIj~*ubaubh{)�r†*}r‡*(hHXíThe module parameter "ti\_prueth.pruss1\_ethtype" and "ti\_prueth.pruss2\_ethtype" are used for instructing the PRU Ethernet driver what type of PRU firmware is to be loaded to PRU-ICSS1 and PRU-ICSS2 respectively. These type values are:hIjm*hOjXhQhƒhS}rˆ*(hU]hV]hW]hX]h[]uh]Moh^hh_]r‰*hhXéThe module parameter "ti_prueth.pruss1_ethtype" and "ti_prueth.pruss2_ethtype" are used for instructing the PRU Ethernet driver what type of PRU firmware is to be loaded to PRU-ICSS1 and PRU-ICSS2 respectively. These type values are:rŠ*…�r‹*}rŒ*(hHXíThe module parameter "ti\_prueth.pruss1\_ethtype" and "ti\_prueth.pruss2\_ethtype" are used for instructing the PRU Ethernet driver what type of PRU firmware is to be loaded to PRU-ICSS1 and PRU-ICSS2 respectively. These type values are:hIj†*ubaubjV)�r�*}rŽ*(hHUhIjm*hOjXhQjYhS}r�*(hU]hV]hW]hX]h[]uh]Nh^hh_]r�*j\)�r‘*}r’*(hHUhS}r“*(hX]hW]hU]hV]h[]UcolsKuhIj�*h_]r”*(ja)�r•*}r–*(hHUhS}r—*(hX]hW]hU]hV]h[]UcolwidthK'uhIj‘*h_]hQjeubja)�r˜*}r™*(hHUhS}rš*(hX]hW]hU]hV]h[]UcolwidthKuhIj‘*h_]hQjeubjo)�r›*}rœ*(hHUhS}r�*(hU]hV]hW]hX]h[]uhIj‘*h_]rž*jt)�rŸ*}r *(hHUhS}r¡*(hU]hV]hW]hX]h[]uhIj›*h_]r¢*(jy)�r£*}r¤*(hHUhS}r¥*(hU]hV]hW]hX]h[]uhIjŸ*h_]r¦*h{)�r§*}r¨*(hHX#ti\_prueth.prussX\_ethtype, X = 1,2hIj£*hOjXhQhƒhS}r©*(hU]hV]hW]hX]h[]uh]Muh_]rª*hhX!ti_prueth.prussX_ethtype, X = 1,2r«*…�r¬*}r­*(hHX#ti\_prueth.prussX\_ethtype, X = 1,2hIj§*ubaubahQj†ubjy)�r®*}r¯*(hHUhS}r°*(hU]hV]hW]hX]h[]uhIjŸ*h_]r±*h{)�r²*}r³*(hHX firmware typer´*hIj®*hOjXhQhƒhS}rµ*(hU]hV]hW]hX]h[]uh]Muh_]r¶*hhX firmware typer·*…�r¸*}r¹*(hHj´*hIj²*ubaubahQj†ubehQj³ubahQj´ubjµ)�rº*}r»*(hHUhS}r¼*(hU]hV]hW]hX]h[]uhIj‘*h_]r½*(jt)�r¾*}r¿*(hHUhS}rÀ*(hU]hV]hW]hX]h[]uhIjº*h_]rÁ*(jy)�rÂ*}rÃ*(hHUhS}rÄ*(hU]hV]hW]hX]h[]uhIj¾*h_]rÅ*h{)�rÆ*}rÇ*(hHX0hIjÂ*hOjXhQhƒhS}rÈ*(hU]hV]hW]hX]h[]uh]Mwh_]rÉ*hhX0…�rÊ*}rË*(hHX0hIjÆ*ubaubahQj†ubjy)�rÌ*}rÍ*(hHUhS}rÎ*(hU]hV]hW]hX]h[]uhIj¾*h_]rÏ*h{)�rÐ*}rÑ*(hHXEMACrÒ*hIjÌ*hOjXhQhƒhS}rÓ*(hU]hV]hW]hX]h[]uh]Mwh_]rÔ*hhXEMACrÕ*…�rÖ*}r×*(hHjÒ*hIjÐ*ubaubahQj†ubehQj³ubjt)�rØ*}rÙ*(hHUhS}rÚ*(hU]hV]hW]hX]h[]uhIjº*h_]rÛ*(jy)�rÜ*}rÝ*(hHUhS}rÞ*(hU]hV]hW]hX]h[]uhIjØ*h_]rß*h{)�rà*}rá*(hHX1hIjÜ*hOjXhQhƒhS}râ*(hU]hV]hW]hX]h[]uh]Myh_]rã*hhX1…�rä*}rå*(hHX1hIjà*ubaubahQj†ubjy)�ræ*}rç*(hHUhS}rè*(hU]hV]hW]hX]h[]uhIjØ*h_]ré*h{)�rê*}rë*(hHXHSRrì*hIjæ*hOjXhQhƒhS}rí*(hU]hV]hW]hX]h[]uh]Myh_]rî*hhXHSRrï*…�rð*}rñ*(hHjì*hIjê*ubaubahQj†ubehQj³ubjt)�rò*}ró*(hHUhS}rô*(hU]hV]hW]hX]h[]uhIjº*h_]rõ*(jy)�rö*}r÷*(hHUhS}rø*(hU]hV]hW]hX]h[]uhIjò*h_]rù*h{)�rú*}rû*(hHX2hIjö*hOjXhQhƒhS}rü*(hU]hV]hW]hX]h[]uh]M{h_]rý*hhX2…�rþ*}rÿ*(hHX2hIjú*ubaubahQj†ubjy)�r+}r+(hHUhS}r+(hU]hV]hW]hX]h[]uhIjò*h_]r+h{)�r+}r+(hHXPRPr+hIj+hOjXhQhƒhS}r+(hU]hV]hW]hX]h[]uh]M{h_]r+hhXPRPr +…�r +}r +(hHj+hIj+ubaubahQj†ubehQj³ubehQj,ubehQj-ubaubh{)�r +}r +(hHXThese ti\_prueth.prussX\_type values can be set up in the Kernel boot argument in Uboot. For example, to load HSR firmware to PRU-ICSS1 and PRP firmware to PRU-ICSS2, and assuming boot using NFS rootfs, the Kernel boot argument can be configured as follows. Under Uboot prompt,hIjm*hOjXhQhƒhS}r+(hU]hV]hW]hX]h[]uh]M~h^hh_]r+hhXThese ti_prueth.prussX_type values can be set up in the Kernel boot argument in Uboot. For example, to load HSR firmware to PRU-ICSS1 and PRP firmware to PRU-ICSS2, and assuming boot using NFS rootfs, the Kernel boot argument can be configured as follows. Under Uboot prompt,r+…�r+}r+(hHXThese ti\_prueth.prussX\_type values can be set up in the Kernel boot argument in Uboot. For example, to load HSR firmware to PRU-ICSS1 and PRP firmware to PRU-ICSS2, and assuming boot using NFS rootfs, the Kernel boot argument can be configured as follows. Under Uboot prompt,hIj +ubaubj•)�r+}r+(hHX  => setenv netargs 'setenv bootargs console=${console} ${optargs} root=/dev/nfs nfsroot=${serverip}:${rootpath},${nfsopts} rw ip=dhcp ti_prueth.pruss1_ethtype=${pruss1_ethtype} ti_prueth.pruss2_ethtype=${pruss2_ethtype}' => setenv pruss1_ethtype 1 => setenv pruss2_ethtype 2 => saveenvhIjm*hOjXhQj˜hS}r+(h­h®hX]hW]hU]hV]h[]uh]Måh^hh_]r+hhX  => setenv netargs 'setenv bootargs console=${console} ${optargs} root=/dev/nfs nfsroot=${serverip}:${rootpath},${nfsopts} rw ip=dhcp ti_prueth.pruss1_ethtype=${pruss1_ethtype} ti_prueth.pruss2_ethtype=${pruss2_ethtype}' => setenv pruss1_ethtype 1 => setenv pruss2_ethtype 2 => saveenvr+…�r+}r+(hHUhIj+ubaubh{)�r+}r+(hHX7**NOTE** If using mmc rootfs, update args\_mmc as belowr+hIjm*hOjXhQhƒhS}r+(hU]hV]hW]hX]h[]uh]M‹h^hh_]r+(hæ)�r+}r +(hHX**NOTE**hS}r!+(hU]hV]hW]hX]h[]uhIj+h_]r"+hhXNOTEr#+…�r$+}r%+(hHUhIj+ubahQhîubhhX. If using mmc rootfs, update args_mmc as belowr&+…�r'+}r(+(hHX/ If using mmc rootfs, update args\_mmc as belowhIj+ubeubj•)�r)+}r*+(hHXÛ => setenv args_mmc 'run finduuid;setenv bootargs console=${console} ${optargs} root=PARTUUID=${uuid} rw rootfstype=${mmcrootfstype} ti_prueth.pruss1_ethtype=${pruss1_ethtype} ti_prueth.pruss2_ethtype=${pruss2_ethtype}'hIjm*hOjXhQj˜hS}r++(h­h®hX]hW]hU]hV]h[]uh]Mïh^hh_]r,+hhXÛ => setenv args_mmc 'run finduuid;setenv bootargs console=${console} ${optargs} root=PARTUUID=${uuid} rw rootfstype=${mmcrootfstype} ti_prueth.pruss1_ethtype=${pruss1_ethtype} ti_prueth.pruss2_ethtype=${pruss2_ethtype}'r-+…�r.+}r/+(hHUhIj)+ubaubh{)�r0+}r1+(hHX'Just change the value of pruss1\_ethtype or pruss2\_ethtype in the above example to switch to a different type of firmware (see the above table). If a ti\_prueth.prussX\_ethtype is not configured, ie. does not appear in Kernel boot argument, the default EMAC firmware will be loaded to the corresponding PRU-ICSSX. In this case, if user sets up HSR/PRP interface, it will work without offload using the PRU EMAC firmware and driver. So using offload or no offload is controlled via selecting appropriate firmware at boot up and is transparent to user.hIjm*hOjXhQhƒhS}r2+(hU]hV]hW]hX]h[]uh]M’h^hh_]r3+hhX#Just change the value of pruss1_ethtype or pruss2_ethtype in the above example to switch to a different type of firmware (see the above table). If a ti_prueth.prussX_ethtype is not configured, ie. does not appear in Kernel boot argument, the default EMAC firmware will be loaded to the corresponding PRU-ICSSX. In this case, if user sets up HSR/PRP interface, it will work without offload using the PRU EMAC firmware and driver. So using offload or no offload is controlled via selecting appropriate firmware at boot up and is transparent to user.r4+…�r5+}r6+(hHX'Just change the value of pruss1\_ethtype or pruss2\_ethtype in the above example to switch to a different type of firmware (see the above table). If a ti\_prueth.prussX\_ethtype is not configured, ie. does not appear in Kernel boot argument, the default EMAC firmware will be loaded to the corresponding PRU-ICSSX. In this case, if user sets up HSR/PRP interface, it will work without offload using the PRU EMAC firmware and driver. So using offload or no offload is controlled via selecting appropriate firmware at boot up and is transparent to user.hIj0+ubaubh{)�r7+}r8+(hHXRemarks:r9+hIjm*hOjXhQhƒhS}r:+(hU]hV]hW]hX]h[]uh]M›h^hh_]r;+hhXRemarks:r<+…�r=+}r>+(hHj9+hIj7+ubaubcdocutils.nodes enumerated_list r?+)�r@+}rA+(hHUhIjm*hOjXhQUenumerated_listrB+hS}rC+(UsuffixrD+U.hX]hW]hU]UprefixrE+UhV]h[]UenumtyperF+UarabicrG+uh]M�h^hh_]rH+(hÛ)�rI+}rJ+(hHXŒSetting ti\_prueth.prussX\_ethtype to 0 is the same as not using it in the Kernel argument. In either case, default EMAC firmware is loaded.hIj@+hOjXhQhÞhS}rK+(hU]hV]hW]hX]h[]uh]Nh^hh_]rL+h{)�rM+}rN+(hHXŒSetting ti\_prueth.prussX\_ethtype to 0 is the same as not using it in the Kernel argument. In either case, default EMAC firmware is loaded.hIjI+hOjXhQhƒhS}rO+(hU]hV]hW]hX]h[]uh]M�h_]rP+hhXŠSetting ti_prueth.prussX_ethtype to 0 is the same as not using it in the Kernel argument. In either case, default EMAC firmware is loaded.rQ+…�rR+}rS+(hHXŒSetting ti\_prueth.prussX\_ethtype to 0 is the same as not using it in the Kernel argument. In either case, default EMAC firmware is loaded.hIjM+ubaubaubhÛ)�rT+}rU+(hHXb"ti\_prueth.prussX\_ethtype=", ie. setting the module parameter but without a value, is incorrect.hIj@+hOjXhQhÞhS}rV+(hU]hV]hW]hX]h[]uh]Nh^hh_]rW+h{)�rX+}rY+(hHXb"ti\_prueth.prussX\_ethtype=", ie. setting the module parameter but without a value, is incorrect.hIjT+hOjXhQhƒhS}rZ+(hU]hV]hW]hX]h[]uh]M h_]r[+hhX`"ti_prueth.prussX_ethtype=", ie. setting the module parameter but without a value, is incorrect.r\+…�r]+}r^+(hHXb"ti\_prueth.prussX\_ethtype=", ie. setting the module parameter but without a value, is incorrect.hIjX+ubaubaubhÛ)�r_+}r`+(hHXYOn AM572x IDK, only PRU-ICSS2 is supported. Hence only prueth.pruss2\_type takes effect. hIj@+hOjXhQhÞhS}ra+(hU]hV]hW]hX]h[]uh]Nh^hh_]rb+h{)�rc+}rd+(hHXXOn AM572x IDK, only PRU-ICSS2 is supported. Hence only prueth.pruss2\_type takes effect.hIj_+hOjXhQhƒhS}re+(hU]hV]hW]hX]h[]uh]M¢h_]rf+hhXWOn AM572x IDK, only PRU-ICSS2 is supported. Hence only prueth.pruss2_type takes effect.rg+…�rh+}ri+(hHXXOn AM572x IDK, only PRU-ICSS2 is supported. Hence only prueth.pruss2\_type takes effect.hIjc+ubaubaubeubh{)�rj+}rk+(hHXVTo verify PRU Ethernet type after boot, do following that display TI PRU ethernet typerl+hIjm*hOjXhQhƒhS}rm+(hU]hV]hW]hX]h[]uh]M¥h^hh_]rn+hhXVTo verify PRU Ethernet type after boot, do following that display TI PRU ethernet typero+…�rp+}rq+(hHjl+hIjj+ubaubj•)�rr+}rs+(hHX$dmesg | grep "TI PRU ethernet (type"hIjm*hOjXhQj˜hS}rt+(h­h®hX]hW]hU]hV]h[]uh]M h^hh_]ru+hhX$dmesg | grep "TI PRU ethernet (type"rv+…�rw+}rx+(hHUhIjr+ubaubh{)�ry+}rz+(hHX*For PRU Emac, the string displayed will ber{+hIjm*hOjXhQhƒhS}r|+(hU]hV]hW]hX]h[]uh]M¬h^hh_]r}+hhX*For PRU Emac, the string displayed will ber~+…�r+}r€+(hHj{+hIjy+ubaubj•)�r�+}r‚+(hHX>prueth pruss2_eth: TI PRU ethernet (type 0) driver initializedhIjm*hOjXhQj˜hS}rƒ+(h­h®hX]hW]hU]hV]h[]uh]Mh^hh_]r„+hhX>prueth pruss2_eth: TI PRU ethernet (type 0) driver initializedr…+…�r†+}r‡+(hHUhIj�+ubaubh{)�rˆ+}r‰+(hHX)For PRU HSR, the string displayed will berŠ+hIjm*hOjXhQhƒhS}r‹+(hU]hV]hW]hX]h[]uh]M²h^hh_]rŒ+hhX)For PRU HSR, the string displayed will ber�+…�rŽ+}r�+(hHjŠ+hIjˆ+ubaubj•)�r�+}r‘+(hHX>prueth pruss2_eth: TI PRU ethernet (type 1) driver initializedhIjm*hOjXhQj˜hS}r’+(h­h®hX]hW]hU]hV]h[]uh]Mh^hh_]r“+hhX>prueth pruss2_eth: TI PRU ethernet (type 1) driver initializedr”+…�r•+}r–+(hHUhIj�+ubaubh{)�r—+}r˜+(hHX)For PRU PRP, the string displayed will ber™+hIjm*hOjXhQhƒhS}rš+(hU]hV]hW]hX]h[]uh]M¸h^hh_]r›+hhX)For PRU PRP, the string displayed will berœ+…�r�+}rž+(hHj™+hIj—+ubaubj•)�rŸ+}r +(hHX>prueth pruss2_eth: TI PRU ethernet (type 2) driver initializedhIjm*hOjXhQj˜hS}r¡+(h­h®hX]hW]hU]hV]h[]uh]Mh^hh_]r¢+hhX>prueth pruss2_eth: TI PRU ethernet (type 2) driver initializedr£+…�r¤+}r¥+(hHUhIjŸ+ubaubh{)�r¦+}r§+(hHXeWhere type is what is set in the bootargs and is listed in the table at the beginning of this sectionr¨+hIjm*hOjXhQhƒhS}r©+(hU]hV]hW]hX]h[]uh]M¾h^hh_]rª+hhXeWhere type is what is set in the bootargs and is listed in the table at the beginning of this sectionr«+…�r¬+}r­+(hHj¨+hIj¦+ubaubeubhJ)�r®+}r¯+(hHUhIjZ*hOjXhQhRhS}r°+(hU]hV]hW]hX]r±+Unode-tables-firmware-offloadr²+ah[]r³+h;auh]MÂh^hh_]r´+(ha)�rµ+}r¶+(hHXNode Tables (firmware offload)r·+hIj®+hOjXhQhehS}r¸+(hU]hV]hW]hX]h[]uh]MÂh^hh_]r¹+hhXNode Tables (firmware offload)rº+…�r»+}r¼+(hHj·+hIjµ+ubaubh{)�r½+}r¾+(hHX¤In the case of HSR/PRP firmware offload, the Node Table can be displayed as follows. Note: the locations are different from those when there is no firmware offload.r¿+hIj®+hOjXhQhƒhS}rÀ+(hU]hV]hW]hX]h[]uh]MÄh^hh_]rÁ+hhX¤In the case of HSR/PRP firmware offload, the Node Table can be displayed as follows. Note: the locations are different from those when there is no firmware offload.rÂ+…�rÃ+}rÄ+(hHj¿+hIj½+ubaubh{)�rÅ+}rÆ+(hHX`To show the **HSR Node Table**, under the kernel prompt on the terminal connected to the IDK, dohIj®+hOjXhQhƒhS}rÇ+(hU]hV]hW]hX]h[]uh]MÈh^hh_]rÈ+(hhX To show the rÉ+…�rÊ+}rË+(hHX To show the hIjÅ+ubhæ)�rÌ+}rÍ+(hHX**HSR Node Table**hS}rÎ+(hU]hV]hW]hX]h[]uhIjÅ+h_]rÏ+hhXHSR Node TablerÐ+…�rÑ+}rÒ+(hHUhIjÌ+ubahQhîubhhXB, under the kernel prompt on the terminal connected to the IDK, dorÓ+…�rÔ+}rÕ+(hHXB, under the kernel prompt on the terminal connected to the IDK, dohIjÅ+ubeubhÔ)�rÖ+}r×+(hHUhIj®+hOjXhQh×hS}rØ+(hÙX-hX]hW]hU]hV]h[]uh]MËh^hh_]rÙ+(hÛ)�rÚ+}rÛ+(hHXHroot@am57xx-evm:~# cat /sys/kernel/debug/**prueth-hsr-**/node\_tablerÜ+hIjÖ+hOjXhQhÞhS}rÝ+(hU]hV]hW]hX]h[]uh]Nh^hh_]rÞ+h{)�rß+}rà+(hHjÜ+hIjÚ+hOjXhQhƒhS}rá+(hU]hV]hW]hX]h[]uh]MËh_]râ+(jî)�rã+}rä+(hHXroot@am57xx-evmhS}rå+(UrefuriXmailto:root@am57xx-evmhX]hW]hU]hV]h[]uhIjß+h_]ræ+hhXroot@am57xx-evmrç+…�rè+}ré+(hHUhIjã+ubahQj÷ubhhX:~# cat /sys/kernel/debug/rê+…�rë+}rì+(hHX:~# cat /sys/kernel/debug/hIjß+ubhæ)�rí+}rî+(hHX**prueth-hsr-**hS}rï+(hU]hV]hW]hX]h[]uhIjß+h_]rð+hhXprueth-hsr-rñ+…�rò+}ró+(hHUhIjí+ubahQhîubhhX /node_tablerô+…�rõ+}rö+(hHX /node\_tablehIjß+ubeubaubhÛ)�r÷+}rø+(hHXSample display hIjÖ+hOjXhQhÞhS}rù+(hU]hV]hW]hX]h[]uh]Nh^hh_]rú+h{)�rû+}rü+(hHXSample displayrý+hIj÷+hOjXhQhƒhS}rþ+(hU]hV]hW]hX]h[]uh]MÌh_]rÿ+hhXSample displayr,…�r,}r,(hHjý+hIjû+ubaubaubeubj•)�r,}r,(hHXÞroot@am57xx-evm:~# cat /sys/kernel/debug/prueth-hsr-2/node_table Remote nodes in network: 1 Node[1]: MAC ADDR: 70:ff:76:1c:0f:99 state: valid DANH RxA=2992 SupRxA=148 RxB=2992 SupRxB=148 Time Last Seen: Sup=0 RxA=0 RxB=0hIj®+hOjXhQj˜hS}r,(h­h®hX]hW]hU]hV]h[]uh]M0h^hh_]r,hhXÞroot@am57xx-evm:~# cat /sys/kernel/debug/prueth-hsr-2/node_table Remote nodes in network: 1 Node[1]: MAC ADDR: 70:ff:76:1c:0f:99 state: valid DANH RxA=2992 SupRxA=148 RxB=2992 SupRxB=148 Time Last Seen: Sup=0 RxA=0 RxB=0r,…�r,}r ,(hHUhIj,ubaubh{)�r ,}r ,(hHX`To show the **PRP Node Table**, under the kernel prompt on the terminal connected to the IDK, dohIj®+hOjXhQhƒhS}r ,(hU]hV]hW]hX]h[]uh]MÜh^hh_]r ,(hhX To show the r,…�r,}r,(hHX To show the hIj ,ubhæ)�r,}r,(hHX**PRP Node Table**hS}r,(hU]hV]hW]hX]h[]uhIj ,h_]r,hhXPRP Node Tabler,…�r,}r,(hHUhIj,ubahQhîubhhXB, under the kernel prompt on the terminal connected to the IDK, dor,…�r,}r,(hHXB, under the kernel prompt on the terminal connected to the IDK, dohIj ,ubeubhÔ)�r,}r,(hHUhIj®+hOjXhQh×hS}r,(hÙX-hX]hW]hU]hV]h[]uh]Mßh^hh_]r,(hÛ)�r,}r ,(hHXHroot@am57xx-evm:~# cat /sys/kernel/debug/**prueth-prp-**/node\_tabler!,hIj,hOjXhQhÞhS}r",(hU]hV]hW]hX]h[]uh]Nh^hh_]r#,h{)�r$,}r%,(hHj!,hIj,hOjXhQhƒhS}r&,(hU]hV]hW]hX]h[]uh]Mßh_]r',(jî)�r(,}r),(hHXroot@am57xx-evmhS}r*,(UrefuriXmailto:root@am57xx-evmhX]hW]hU]hV]h[]uhIj$,h_]r+,hhXroot@am57xx-evmr,,…�r-,}r.,(hHUhIj(,ubahQj÷ubhhX:~# cat /sys/kernel/debug/r/,…�r0,}r1,(hHX:~# cat /sys/kernel/debug/hIj$,ubhæ)�r2,}r3,(hHX**prueth-prp-**hS}r4,(hU]hV]hW]hX]h[]uhIj$,h_]r5,hhXprueth-prp-r6,…�r7,}r8,(hHUhIj2,ubahQhîubhhX /node_tabler9,…�r:,}r;,(hHX /node\_tablehIj$,ubeubaubhÛ)�r<,}r=,(hHXSample display hIj,hOjXhQhÞhS}r>,(hU]hV]hW]hX]h[]uh]Nh^hh_]r?,h{)�r@,}rA,(hHXSample displayrB,hIj<,hOjXhQhƒhS}rC,(hU]hV]hW]hX]h[]uh]Màh_]rD,hhXSample displayrE,…�rF,}rG,(hHjB,hIj@,ubaubaubeubj•)�rH,}rI,(hHXroot@am57xx-evm:~# cat /sys/kernel/debug/prueth-prp-2/node_table Remote nodes in network: 1 Node[1]: MAC ADDR: 70:ff:76:1c:0f:99 state: valid DupDiscard (0x80) DANP RxA=17 SupRxA=17 RxB=17 SupRxB=17 Time Last Seen: Sup=0 RxA=0 RxB=0 PRP LineID Err: A=0 B=0hIj®+hOjXhQj˜hS}rJ,(h­h®hX]hW]hU]hV]h[]uh]MDh^hh_]rK,hhXroot@am57xx-evm:~# cat /sys/kernel/debug/prueth-prp-2/node_table Remote nodes in network: 1 Node[1]: MAC ADDR: 70:ff:76:1c:0f:99 state: valid DupDiscard (0x80) DANP RxA=17 SupRxA=17 RxB=17 SupRxB=17 Time Last Seen: Sup=0 RxA=0 RxB=0 PRP LineID Err: A=0 B=0rL,…�rM,}rN,(hHUhIjH,ubaubeubhJ)�rO,}rP,(hHUhIjZ*hOjXhQhRhS}rQ,(hU]hV]hW]hX]rR,Ulre-statistics-firmware-offloadrS,ah[]rT,h)auh]Móh^hh_]rU,(ha)�rV,}rW,(hHX!LRE Statistics (firmware offload)rX,hIjO,hOjXhQhehS}rY,(hU]hV]hW]hX]h[]uh]Móh^hh_]rZ,hhX!LRE Statistics (firmware offload)r[,…�r\,}r],(hHjX,hIjV,ubaubh{)�r^,}r_,(hHX{The LRE statistics is displayed as part the interface statistics using the "ethtool -S DEVNAME" command, where DEVNAME, in the case AM572x IDK, is eth2 or eth3. The fields pertaining to LRE statistics are prefixed with "lre". Since LRE statistics are LRE specific, instead of interface specific, so either "ethtool -S eth2" or "ethtool -S eth3" will show the same LRE statistics.r`,hIjO,hOjXhQhƒhS}ra,(hU]hV]hW]hX]h[]uh]Mõh^hh_]rb,hhX{The LRE statistics is displayed as part the interface statistics using the "ethtool -S DEVNAME" command, where DEVNAME, in the case AM572x IDK, is eth2 or eth3. The fields pertaining to LRE statistics are prefixed with "lre". Since LRE statistics are LRE specific, instead of interface specific, so either "ethtool -S eth2" or "ethtool -S eth3" will show the same LRE statistics.rc,…�rd,}re,(hHj`,hIj^,ubaubh{)�rf,}rg,(hHXSample display:rh,hIjO,hOjXhQhƒhS}ri,(hU]hV]hW]hX]h[]uh]Müh^hh_]rj,hhXSample display:rk,…�rl,}rm,(hHjh,hIjf,ubaubj•)�rn,}ro,(hHXˆroot@am57xx-evm:~# ethtool -S eth2 NIC statistics: txBcast: 1 txMcast: 11635 txUcast: 3 txOctets: 816642 rxBcast: 0 rxMcast: 36 rxUcast: 17 rxOctets: 4841 tx64byte: 6 tx65_127byte: 11633 tx128_255byte: 0 tx256_511byte: 0 tx512_1023byte: 0 tx1024byte: 0 rx64byte: 4 rx65_127byte: 49 rx128_255byte: 0 rx256_511byte: 0 rx512_1023byte: 0 rx1024byte: 0 lateColl: 0 singleColl: 0 multiColl: 0 excessColl: 0 rxMisAlignmentFrames: 0 stormPrevCounter: 0 macRxError: 0 SFDError: 0 defTx: 0 macTxError: 0 rxOverSizedFrames: 0 rxUnderSizedFrames: 0 rxCRCFrames: 0 droppedPackets: 0 txHWQOverFlow: 0 txHWQUnderFlow: 0 lreTxA: 11636 lreTxB: 11639 lreTxC: 66 lreErrWrongLanA: 0 lreErrWrongLanB: 0 lreErrWrongLanC: 0 lreRxA: 40 lreRxB: 40 lreRxC: 0 lreErrorsA: 11560 lreErrorsB: 11559 lreErrorsC: 0 lreNodes: 0 lreProxyNodes: 0 lreUniqueRxA: 0 lreUniqueRxB: 0 lreUniqueRxC: 0 lreDuplicateRxA: 0 lreDuplicateRxB: 0 lreDuplicateRxC: 0 lreMultiRxA: 0 lreMultiRxB: 0 lreMultiRxC: 0 lreOwnRxA: 0 lreOwnRxB: 0 lreDuplicateDiscard: 2 lreTransRecept: 1 lreNtLookupErrA: 0 lreNtLookupErrB: 0 lreNodeTableFull: 0hIjO,hOjXhQj˜hS}rp,(h­h®hX]hW]hU]hV]h[]uh]M`h^hh_]rq,hhXˆroot@am57xx-evm:~# ethtool -S eth2 NIC statistics: txBcast: 1 txMcast: 11635 txUcast: 3 txOctets: 816642 rxBcast: 0 rxMcast: 36 rxUcast: 17 rxOctets: 4841 tx64byte: 6 tx65_127byte: 11633 tx128_255byte: 0 tx256_511byte: 0 tx512_1023byte: 0 tx1024byte: 0 rx64byte: 4 rx65_127byte: 49 rx128_255byte: 0 rx256_511byte: 0 rx512_1023byte: 0 rx1024byte: 0 lateColl: 0 singleColl: 0 multiColl: 0 excessColl: 0 rxMisAlignmentFrames: 0 stormPrevCounter: 0 macRxError: 0 SFDError: 0 defTx: 0 macTxError: 0 rxOverSizedFrames: 0 rxUnderSizedFrames: 0 rxCRCFrames: 0 droppedPackets: 0 txHWQOverFlow: 0 txHWQUnderFlow: 0 lreTxA: 11636 lreTxB: 11639 lreTxC: 66 lreErrWrongLanA: 0 lreErrWrongLanB: 0 lreErrWrongLanC: 0 lreRxA: 40 lreRxB: 40 lreRxC: 0 lreErrorsA: 11560 lreErrorsB: 11559 lreErrorsC: 0 lreNodes: 0 lreProxyNodes: 0 lreUniqueRxA: 0 lreUniqueRxB: 0 lreUniqueRxC: 0 lreDuplicateRxA: 0 lreDuplicateRxB: 0 lreDuplicateRxC: 0 lreMultiRxA: 0 lreMultiRxB: 0 lreMultiRxC: 0 lreOwnRxA: 0 lreOwnRxB: 0 lreDuplicateDiscard: 2 lreTransRecept: 1 lreNtLookupErrA: 0 lreNtLookupErrB: 0 lreNodeTableFull: 0rr,…�rs,}rt,(hHUhIjn,ubaubj/)�ru,}rv,(hHX.. _PLSDK_HSR_Testing:hIjO,hOjXhQj2hS}rw,(hX]hW]hU]hV]h[]j4Uplsdk-hsr-testingrx,uh]M¥h^hh_]ubeubhJ)�ry,}rz,(hHUhIjZ*hOjXj8}r{,h?ju,shQhRhS}r|,(hU]hV]hW]hX]r},(U hsr-testingr~,jx,eh[]r,(h-h?euh]MHh^hj>}r€,jx,ju,sh_]r�,(ha)�r‚,}rƒ,(hHX HSR Testingr„,hIjy,hOjXhQhehS}r…,(hU]hV]hW]hX]h[]uh]MHh^hh_]r†,hhX HSR Testingr‡,…�rˆ,}r‰,(hHj„,hIj‚,ubaubh{)�rŠ,}r‹,(hHX-To test HSR, user would need two AM572x EVMs.rŒ,hIjy,hOjXhQhƒhS}r�,(hU]hV]hW]hX]h[]uh]MJh^hh_]rŽ,hhX-To test HSR, user would need two AM572x EVMs.r�,…�r�,}r‘,(hHjŒ,hIjŠ,ubaubj?+)�r’,}r“,(hHUhIjy,hOjXhQjB+hS}r”,(jD+U.hX]hW]hU]jE+UhV]h[]jF+jG+uh]MLh^hh_]r•,(hÛ)�r–,}r—,(hHXSetup HSR Ring network as per diagram below. Connect the PRU2ETH0 (See the marking on the EVM) Ethernet ports of the two EVMs together (corresponds to Linux interface eth2) as shown below. Similarly, connect the PRU2ETH1 ports (Linux interface eth3) as well.hIj’,hOjXhQhÞhS}r˜,(hU]hV]hW]hX]h[]uh]Nh^hh_]r™,h{)�rš,}r›,(hHXSetup HSR Ring network as per diagram below. Connect the PRU2ETH0 (See the marking on the EVM) Ethernet ports of the two EVMs together (corresponds to Linux interface eth2) as shown below. Similarly, connect the PRU2ETH1 ports (Linux interface eth3) as well.rœ,hIj–,hOjXhQhƒhS}r�,(hU]hV]hW]hX]h[]uh]MLh_]rž,hhXSetup HSR Ring network as per diagram below. Connect the PRU2ETH0 (See the marking on the EVM) Ethernet ports of the two EVMs together (corresponds to Linux interface eth2) as shown below. Similarly, connect the PRU2ETH1 ports (Linux interface eth3) as well.rŸ,…�r ,}r¡,(hHjœ,hIjš,ubaubaubhÛ)�r¢,}r£,(hHXxConfigure the bootargs to boot PRU with HSR firmware as described above at :ref:`PLSDK_HSR_PRP_Testing_Firmware_Offload`hIj’,hOjXhQhÞhS}r¤,(hU]hV]hW]hX]h[]uh]Nh^hh_]r¥,h{)�r¦,}r§,(hHXxConfigure the bootargs to boot PRU with HSR firmware as described above at :ref:`PLSDK_HSR_PRP_Testing_Firmware_Offload`hIj¢,hOjXhQhƒhS}r¨,(hU]hV]hW]hX]h[]uh]MPh_]r©,(hhXKConfigure the bootargs to boot PRU with HSR firmware as described above at rª,…�r«,}r¬,(hHXKConfigure the bootargs to boot PRU with HSR firmware as described above at hIj¦,ubjØ)�r­,}r®,(hHX-:ref:`PLSDK_HSR_PRP_Testing_Firmware_Offload`r¯,hIj¦,hOjXhQjÜhS}r°,(UreftypeXrefjÞˆjßX&plsdk_hsr_prp_testing_firmware_offloadU refdomainXstdr±,hX]hW]U refexplicit‰hU]hV]h[]jájâuh]MPh_]r²,jä)�r³,}r´,(hHj¯,hS}rµ,(hU]hV]r¶,(jéj±,Xstd-refr·,ehW]hX]h[]uhIj­,h_]r¸,hhX&PLSDK_HSR_PRP_Testing_Firmware_Offloadr¹,…�rº,}r»,(hHUhIj³,ubahQjïubaubeubaubhÛ)�r¼,}r½,(hHX­Boot the EVMs using the pre-built images from the Processor SDK release. These images are built with Linux HSR/PRP driver enabled. Login to the console using root user name.hIj’,hOjXhQhÞhS}r¾,(hU]hV]hW]hX]h[]uh]Nh^hh_]r¿,h{)�rÀ,}rÁ,(hHX­Boot the EVMs using the pre-built images from the Processor SDK release. These images are built with Linux HSR/PRP driver enabled. Login to the console using root user name.rÂ,hIj¼,hOjXhQhƒhS}rÃ,(hU]hV]hW]hX]h[]uh]MRh_]rÄ,hhX­Boot the EVMs using the pre-built images from the Processor SDK release. These images are built with Linux HSR/PRP driver enabled. Login to the console using root user name.rÅ,…�rÆ,}rÇ,(hHjÂ,hIjÀ,ubaubaubhÛ)�rÈ,}rÉ,(hHXNote the MAC Address of eth2 at DAN-H-1(Say MAC-A) using the ifconfig command. Do ifconfig eth2 at the Linux console of DAN-H-1hIj’,hOjXhQhÞhS}rÊ,(hU]hV]hW]hX]h[]uh]Nh^hh_]rË,h{)�rÌ,}rÍ,(hHXNote the MAC Address of eth2 at DAN-H-1(Say MAC-A) using the ifconfig command. Do ifconfig eth2 at the Linux console of DAN-H-1rÎ,hIjÈ,hOjXhQhƒhS}rÏ,(hU]hV]hW]hX]h[]uh]MUh_]rÐ,hhXNote the MAC Address of eth2 at DAN-H-1(Say MAC-A) using the ifconfig command. Do ifconfig eth2 at the Linux console of DAN-H-1rÑ,…�rÒ,}rÓ,(hHjÎ,hIjÌ,ubaubaubhÛ)�rÔ,}rÕ,(hHXŠNote the MAC Address of eth2 at DAN-H-2(Say MAC-B) using the ifconfig command. Do ifconfig eth2 at the Linux console of DAN-H-2 #. ifconfig eth2 down #. ifconfig eth3 down #. ifconfig eth3 hw ether #. ifconfig eth2 up #. ifconfig eth3 up #. ip link add name hsr0 type hsr slave1 eth2 slave2 eth3 supervision 45 version 1 #. ifconfig hsr0 up hIj’,hONhQhÞhS}rÖ,(hU]hV]hW]hX]h[]uh]Nh^hh_]r×,(h{)�rØ,}rÙ,(hHXNote the MAC Address of eth2 at DAN-H-2(Say MAC-B) using the ifconfig command. Do ifconfig eth2 at the Linux console of DAN-H-2rÚ,hIjÔ,hOjXhQhƒhS}rÛ,(hU]hV]hW]hX]h[]uh]MWh_]rÜ,hhXNote the MAC Address of eth2 at DAN-H-2(Say MAC-B) using the ifconfig command. Do ifconfig eth2 at the Linux console of DAN-H-2rÝ,…�rÞ,}rß,(hHjÚ,hIjØ,ubaubj?+)�rà,}rá,(hHUhS}râ,(jD+U.hX]hW]hU]jE+UhV]h[]jF+jG+uhIjÔ,h_]rã,(hÛ)�rä,}rå,(hHXifconfig eth2 downræ,hS}rç,(hU]hV]hW]hX]h[]uhIjà,h_]rè,h{)�ré,}rê,(hHjæ,hIjä,hOjXhQhƒhS}rë,(hU]hV]hW]hX]h[]uh]MZh_]rì,hhXifconfig eth2 downrí,…�rî,}rï,(hHjæ,hIjé,ubaubahQhÞubhÛ)�rð,}rñ,(hHXifconfig eth3 downrò,hS}ró,(hU]hV]hW]hX]h[]uhIjà,h_]rô,h{)�rõ,}rö,(hHjò,hIjð,hOjXhQhƒhS}r÷,(hU]hV]hW]hX]h[]uh]M[h_]rø,hhXifconfig eth3 downrù,…�rú,}rû,(hHjò,hIjõ,ubaubahQhÞubhÛ)�rü,}rý,(hHXifconfig eth3 hw ether rþ,hS}rÿ,(hU]hV]hW]hX]h[]uhIjà,h_]r-h{)�r-}r-(hHjþ,hIjü,hOjXhQhƒhS}r-(hU]hV]hW]hX]h[]uh]M\h_]r-hhXifconfig eth3 hw ether r-…�r-}r-(hHjþ,hIj-ubaubahQhÞubhÛ)�r-}r -(hHXifconfig eth2 upr -hS}r -(hU]hV]hW]hX]h[]uhIjà,h_]r -h{)�r -}r-(hHj -hIj-hOjXhQhƒhS}r-(hU]hV]hW]hX]h[]uh]M]h_]r-hhXifconfig eth2 upr-…�r-}r-(hHj -hIj -ubaubahQhÞubhÛ)�r-}r-(hHXifconfig eth3 upr-hS}r-(hU]hV]hW]hX]h[]uhIjà,h_]r-h{)�r-}r-(hHj-hIj-hOjXhQhƒhS}r-(hU]hV]hW]hX]h[]uh]M^h_]r-hhXifconfig eth3 upr-…�r-}r-(hHj-hIj-ubaubahQhÞubhÛ)�r -}r!-(hHXOip link add name hsr0 type hsr slave1 eth2 slave2 eth3 supervision 45 version 1hS}r"-(hU]hV]hW]hX]h[]uhIjà,h_]r#-h{)�r$-}r%-(hHXOip link add name hsr0 type hsr slave1 eth2 slave2 eth3 supervision 45 version 1r&-hIj -hOjXhQhƒhS}r'-(hU]hV]hW]hX]h[]uh]M_h_]r(-hhXOip link add name hsr0 type hsr slave1 eth2 slave2 eth3 supervision 45 version 1r)-…�r*-}r+-(hHj&-hIj$-ubaubahQhÞubhÛ)�r,-}r--(hHX:ifconfig hsr0 up hS}r.-(hU]hV]hW]hX]h[]uhIjà,h_]r/-h{)�r0-}r1-(hHX9ifconfig hsr0 upr2-hIj,-hOjXhQhƒhS}r3-(hU]hV]hW]hX]h[]uh]Mah_]r4-hhX9ifconfig hsr0 upr5-…�r6-}r7-(hHj2-hIj0-ubaubahQhÞubehQjB+ubeubhÛ)�r8-}r9-(hHXžRepeat the above steps for DAN-H-2, but this time use MAC-B in step 4.3 above. And use IP Address from the same subnet as that of DAN-H-1 hsr interface hsr0. hIj’,hOjXhQhÞhS}r:-(hU]hV]hW]hX]h[]uh]Nh^hh_]r;-h{)�r<-}r=-(hHX�Repeat the above steps for DAN-H-2, but this time use MAC-B in step 4.3 above. And use IP Address from the same subnet as that of DAN-H-1 hsr interface hsr0.r>-hIj8-hOjXhQhƒhS}r?-(hU]hV]hW]hX]h[]uh]Mch_]r@-hhX�Repeat the above steps for DAN-H-2, but this time use MAC-B in step 4.3 above. And use IP Address from the same subnet as that of DAN-H-1 hsr interface hsr0.rA-…�rB-}rC-(hHj>-hIj<-ubaubaubeubjP)�rD-}rE-(hHX... Image:: ../images/Hsr-network-setup-v2.jpg hIjy,hOjXhQjShS}rF-(UuriX(linux/../images/Hsr-network-setup-v2.jpgrG-hX]hW]hU]hV]jV}rH-U*jG-sh[]uh]Mhh^hh_]ubh{)�rI-}rJ-(hHX For example use Ip Address 192.168.2.20 for DAN-H-1 and 192.168.2.30 for DAN-H-2. Assume CPSW ports at the EVM are on a different Subnet than the HSR interface.rK-hIjy,hOjXhQhƒhS}rL-(hU]hV]hW]hX]h[]uh]Mih^hh_]rM-hhX For example use Ip Address 192.168.2.20 for DAN-H-1 and 192.168.2.30 for DAN-H-2. Assume CPSW ports at the EVM are on a different Subnet than the HSR interface.rN-…�rO-}rP-(hHjK-hIjI-ubaubh{)�rQ-}rR-(hHXYOnce both hsr0 interfaces are created, user should be able to do a ping from DAN-H-1 to DAN-H-2 or vice-versa. Disconnect Ethernet cable at eth2 or eth3. The Ping should continue to go through. User could run iperf between the two HSR interfaces and test the iperf is not affected when one of the cable is disconnected. This verifies redundancy.rS-hIjy,hOjXhQhƒhS}rT-(hU]hV]hW]hX]h[]uh]Mmh^hh_]rU-hhXYOnce both hsr0 interfaces are created, user should be able to do a ping from DAN-H-1 to DAN-H-2 or vice-versa. Disconnect Ethernet cable at eth2 or eth3. The Ping should continue to go through. User could run iperf between the two HSR interfaces and test the iperf is not affected when one of the cable is disconnected. This verifies redundancy.rV-…�rW-}rX-(hHjS-hIjQ-ubaubh{)�rY-}rZ-(hHXKA Sample script that automates the steps 4.1 to 4.7, say setup.sh, is belowr[-hIjy,hOjXhQhƒhS}r\-(hU]hV]hW]hX]h[]uh]Msh^hh_]r]-hhXKA Sample script that automates the steps 4.1 to 4.7, say setup.sh, is belowr^-…�r_-}r`-(hHj[-hIjY-ubaubj•)�ra-}rb-(hHXË#!/bin/sh if [ $# -lt 3 ] then echo "setup.sh " exit fi if [ "$1" != "hsr" ] && [ "$1" != "prp" ] then echo "use hsr or prp as first argument" exit fi echo "Setting up $10 interface with MAC address $2 for slaves and IP address $3" ifconfig eth2 down ifconfig eth3 down ifconfig eth2 hw ether $2 ifconfig eth3 hw ether $2 ifconfig eth2 up ifconfig eth3 up if [ "$1" == "hsr" ] then ip link add name hsr0 type hsr slave1 eth2 slave2 eth3 supervision 45 version 1 ifconfig hsr0 $3 up else ip link add name prp0 type prp slave1 eth2 slave2 eth3 supervision 45 ifconfig prp0 $3 up fihIjy,hOjXhQj˜hS}rc-(h­h®hX]hW]hU]hV]h[]uh]MÙh^hh_]rd-hhXË#!/bin/sh if [ $# -lt 3 ] then echo "setup.sh " exit fi if [ "$1" != "hsr" ] && [ "$1" != "prp" ] then echo "use hsr or prp as first argument" exit fi echo "Setting up $10 interface with MAC address $2 for slaves and IP address $3" ifconfig eth2 down ifconfig eth3 down ifconfig eth2 hw ether $2 ifconfig eth3 hw ether $2 ifconfig eth2 up ifconfig eth3 up if [ "$1" == "hsr" ] then ip link add name hsr0 type hsr slave1 eth2 slave2 eth3 supervision 45 version 1 ifconfig hsr0 $3 up else ip link add name prp0 type prp slave1 eth2 slave2 eth3 supervision 45 ifconfig prp0 $3 up fire-…�rf-}rg-(hHUhIja-ubaubh{)�rh-}ri-(hHX2Using this script, user can setup hsr interface asrj-hIjy,hOjXhQhƒhS}rk-(hU]hV]hW]hX]h[]uh]M˜h^hh_]rl-hhX2Using this script, user can setup hsr interface asrm-…�rn-}ro-(hHjj-hIjh-ubaubj•)�rp-}rq-(hHX3/setup.sh hsr hIjy,hOjXhQj˜hS}rr-(h­h®hX]hW]hU]hV]h[]uh]Mýh^hh_]rs-hhX3/setup.sh hsr rt-…�ru-}rv-(hHUhIjp-ubaubh{)�rw-}rx-(hHXvwhere it is assumed that the setup.sh is copied to the root directory of the target file system and is made executablery-hIjy,hOjXhQhƒhS}rz-(hU]hV]hW]hX]h[]uh]MŸh^hh_]r{-hhXvwhere it is assumed that the setup.sh is copied to the root directory of the target file system and is made executabler|-…�r}-}r~-(hHjy-hIjw-ubaubh{)�r-}r€-(hHXHBelow script can be used to teardown the hsr interface (say teardown.sh)r�-hIjy,hOjXhQhƒhS}r‚-(hU]hV]hW]hX]h[]uh]M¢h^hh_]rƒ-hhXHBelow script can be used to teardown the hsr interface (say teardown.sh)r„-…�r…-}r†-(hHj�-hIj-ubaubj•)�r‡-}rˆ-(hHX#!/bin/sh if [ $# -lt 1 ] then echo "teardown.sh " exit fi if [ "$1" != "hsr" ] && [ "$1" != "prp" ] then echo "use hsr or prp as first argument" exit fi if [ "$1" == "hsr" ] then ip link del hsr0 else ip link del prp0 fihIjy,hOjXhQj˜hS}r‰-(h­h®hX]hW]hU]hV]h[]uh]M h^hh_]rŠ-hhX#!/bin/sh if [ $# -lt 1 ] then echo "teardown.sh " exit fi if [ "$1" != "hsr" ] && [ "$1" != "prp" ] then echo "use hsr or prp as first argument" exit fi if [ "$1" == "hsr" ] then ip link del hsr0 else ip link del prp0 fir‹-…�rŒ-}r�-(hHUhIj‡-ubaubh{)�rŽ-}r�-(hHX:Using the above script, user teardown the hsr interface asr�-hIjy,hOjXhQhƒhS}r‘-(hU]hV]hW]hX]h[]uh]Mºh^hh_]r’-hhX:Using the above script, user teardown the hsr interface asr“-…�r”-}r•-(hHj�-hIjŽ-ubaubj•)�r–-}r—-(hHX/teardown.sh hsrhIjy,hOjXhQj˜hS}r˜-(h­h®hX]hW]hU]hV]h[]uh]M h^hh_]r™-hhX/teardown.sh hsrrš-…�r›-}rœ-(hHUhIj–-ubaubh{)�r�-}rž-(hHX±Sample script below can be used to create two instances of HSR/PRP at PRU-ICSS1 and PRU-ICSS2 on AM571x. For other platform where applicable, this can be customized by changing the slave eth interface names to match with that on the specific platform. The script also allows configuring the LRE to use VLAN tag for Supervision frames by providing an optional vlan string in the command line of the script as documented in the script.rŸ-hIjy,hOjXhQhƒhS}r -(hU]hV]hW]hX]h[]uh]MÀh^hh_]r¡-hhX±Sample script below can be used to create two instances of HSR/PRP at PRU-ICSS1 and PRU-ICSS2 on AM571x. For other platform where applicable, this can be customized by changing the slave eth interface names to match with that on the specific platform. The script also allows configuring the LRE to use VLAN tag for Supervision frames by providing an optional vlan string in the command line of the script as documented in the script.r¢-…�r£-}r¤-(hHjŸ-hIj�-ubaubh{)�r¥-}r¦-(hHX**On PRU-ICSS1 of AM571x** ::hIjy,hOjXhQhƒhS}r§-(hU]hV]hW]hX]h[]uh]MÅh^hh_]r¨-hæ)�r©-}rª-(hHX**On PRU-ICSS1 of AM571x**hS}r«-(hU]hV]hW]hX]h[]uhIj¥-h_]r¬-hhXOn PRU-ICSS1 of AM571xr­-…�r®-}r¯-(hHUhIj©-ubahQhîubaubj•)�r°-}r±-(hHX #!/bin/sh if [ $# -lt 4 ] then echo "setup-pruss1.sh " echo " " echo " [vlan]" echo " vlan is optional and if present use vlan tag" echo " in the SV frame. Use values of vid, pcp and" echo " and dei hardcoded in the script" exit fi if [ "$1" != "hsr" ] && [ "$1" != "prp" ] then echo "use hsr or prp as first argument" exit fi if_a=eth2 if_b=eth3 if_name=$4 vl=$5 #change this as needed vid=10 pcp=5 dei=0 ifconfig $if_a down ifconfig $if_b down ifconfig $if_a hw ether $2 ifconfig $if_b hw ether $2 ifconfig $if_a up ifconfig $if_b up echo "Setting up $if_name with MAC address $2 for slaves and IP address $3" echo " using $if_a and $if_b" if [ "$1" = "hsr" ]; then if [ "$vl" = "vlan" ]; then options="version 1 sv_vid $vid sv_pcp $pcp sv_dei $dei" echo $options else options="version 1" fi else if [ "$vl" = "vlan" ]; then options="sv_vid $vid sv_pcp $pcp sv_dei $dei" else options="" fi fi ip link add name $if_name type $1 slave1 $if_a slave2 $if_b supervision 0 $options ifconfig $if_name $3 uphIjy,hOjXhQj˜hS}r²-(h­h®hX]hW]hU]hV]h[]uh]M( h^hh_]r³-hhX #!/bin/sh if [ $# -lt 4 ] then echo "setup-pruss1.sh " echo " " echo " [vlan]" echo " vlan is optional and if present use vlan tag" echo " in the SV frame. Use values of vid, pcp and" echo " and dei hardcoded in the script" exit fi if [ "$1" != "hsr" ] && [ "$1" != "prp" ] then echo "use hsr or prp as first argument" exit fi if_a=eth2 if_b=eth3 if_name=$4 vl=$5 #change this as needed vid=10 pcp=5 dei=0 ifconfig $if_a down ifconfig $if_b down ifconfig $if_a hw ether $2 ifconfig $if_b hw ether $2 ifconfig $if_a up ifconfig $if_b up echo "Setting up $if_name with MAC address $2 for slaves and IP address $3" echo " using $if_a and $if_b" if [ "$1" = "hsr" ]; then if [ "$vl" = "vlan" ]; then options="version 1 sv_vid $vid sv_pcp $pcp sv_dei $dei" echo $options else options="version 1" fi else if [ "$vl" = "vlan" ]; then options="sv_vid $vid sv_pcp $pcp sv_dei $dei" else options="" fi fi ip link add name $if_name type $1 slave1 $if_a slave2 $if_b supervision 0 $options ifconfig $if_name $3 upr´-…�rµ-}r¶-(hHUhIj°-ubaubh{)�r·-}r¸-(hHX**On PRU-ICSS2 of AM571x**r¹-hIjy,hOjXhQhƒhS}rº-(hU]hV]hW]hX]h[]uh]Mh^hh_]r»-hæ)�r¼-}r½-(hHj¹-hS}r¾-(hU]hV]hW]hX]h[]uhIj·-h_]r¿-hhXOn PRU-ICSS2 of AM571xrÀ-…�rÁ-}rÂ-(hHUhIj¼-ubahQhîubaubj•)�rÃ-}rÄ-(hHX#!/bin/sh if [ $# -lt 4 ] then echo "setup-pruss2.sh " echo " " echo " [vlan]" echo " vlan is optional and if present use vlan tag" echo " in the SV frame. Use values of vid, pcp and" echo " and dei hardcoded in the script" exit fi if [ "$1" != "hsr" ] && [ "$1" != "prp" ] then echo "use hsr or prp as first argument" exit fi if_a=eth4 if_b=eth5 if_name=$4 vl=$5 #change this as needed vid=10 pcp=5 dei=0 ifconfig $if_a down ifconfig $if_b down ifconfig $if_a hw ether $2 ifconfig $if_b hw ether $2 ifconfig $if_a up ifconfig $if_b up echo "Setting up $if_name with MAC address $2 for slaves and IP address $3" echo " using $if_a and $if_b" if [ "$1" = "hsr" ]; then if [ "$vl" = "vlan" ]; then options="version 1 sv_vid $vid sv_pcp $pcp sv_dei $dei" echo $options else options="version 1" fi else if [ "$vl" = "vlan" ]; then options="sv_vid $vid sv_pcp $pcp sv_dei $dei" else options="" fi fi ip link add name $if_name type $1 slave1 $if_a slave2 $if_b supervision 0 $options ifconfig $if_name $3 uphIjy,hOjXhQj˜hS}rÅ-(h­h®hX]hW]hU]hV]h[]uh]Md h^hh_]rÆ-hhX#!/bin/sh if [ $# -lt 4 ] then echo "setup-pruss2.sh " echo " " echo " [vlan]" echo " vlan is optional and if present use vlan tag" echo " in the SV frame. Use values of vid, pcp and" echo " and dei hardcoded in the script" exit fi if [ "$1" != "hsr" ] && [ "$1" != "prp" ] then echo "use hsr or prp as first argument" exit fi if_a=eth4 if_b=eth5 if_name=$4 vl=$5 #change this as needed vid=10 pcp=5 dei=0 ifconfig $if_a down ifconfig $if_b down ifconfig $if_a hw ether $2 ifconfig $if_b hw ether $2 ifconfig $if_a up ifconfig $if_b up echo "Setting up $if_name with MAC address $2 for slaves and IP address $3" echo " using $if_a and $if_b" if [ "$1" = "hsr" ]; then if [ "$vl" = "vlan" ]; then options="version 1 sv_vid $vid sv_pcp $pcp sv_dei $dei" echo $options else options="version 1" fi else if [ "$vl" = "vlan" ]; then options="sv_vid $vid sv_pcp $pcp sv_dei $dei" else options="" fi fi ip link add name $if_name type $1 slave1 $if_a slave2 $if_b supervision 0 $options ifconfig $if_name $3 uprÇ-…�rÈ-}rÉ-(hHUhIjÃ-ubaubh{)�rÊ-}rË-(hHXSample logs are shown below:rÌ-hIjy,hOjXhQhƒhS}rÍ-(hU]hV]hW]hX]h[]uh]M;h^hh_]rÎ-hhXSample logs are shown below:rÏ-…�rÐ-}rÑ-(hHjÌ-hIjÊ-ubaubh{)�rÒ-}rÓ-(hHX **DAN-H-1**rÔ-hIjy,hOjXhQhƒhS}rÕ-(hU]hV]hW]hX]h[]uh]M=h^hh_]rÖ-hæ)�r×-}rØ-(hHjÔ-hS}rÙ-(hU]hV]hW]hX]h[]uhIjÒ-h_]rÚ-hhXDAN-H-1rÛ-…�rÜ-}rÝ-(hHUhIj×-ubahQhîubaubj•)�rÞ-}rß-(hHXÂroot@am57xx-evm:~# ifconfig eth2 eth2 Link encap:Ethernet HWaddr 70:FF:76:1C:0F:8D [ 38.944687] random: nonblocking pool is initialized BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) root@am57xx-evm:~# /setup.sh hsr 70:FF:76:1C:0F:8D 192.168.2.20 Setting up hsr0 interface with MAC address 70:FF:76:1C:0F:8D for slaves and IP address 192.168.2.20 [ 62.319328] remoteproc6: powering up 4b2b4000.pru0 [ 62.325015] remoteproc6: Booting fw image ti-pruss/am57xx-pru0-prueth-fw.elf, size 4350 [ 62.335303] ti-pruss 4b280000.pruss: configured system_events = 0x0000060000500000 intr_channels = 0x00000095 host_intr = 0x00000115 [ 62.348724] remoteproc6: remote processor 4b2b4000.pru0 is now up [ 62.354947] net eth2: started [ 62.360842] IPv6: ADDRCONF(NETDEV_UP): eth2: link is not ready [ 62.408479] remoteproc7: powering up 4b2b8000.pru1 [ 62.413790] remoteproc7: Booting fw image ti-pruss/am57xx-pru1-prueth-fw.elf, size 4382 [ 62.422088] ti-pruss 4b280000.pruss: configured system_events = 0x0060000000a00000 intr_channels = 0x0000012a host_intr = 0x0000022a [ 62.434059] remoteproc7: remote processor 4b2b8000.pru1 is now up [ 62.440281] net eth3: started [ 62.444625] IPv6: ADDRCONF(NETDEV_UP): eth3: link is not ready [ 62.509276] device eth2 entered promiscuous mode [ 62.549502] device eth3 entered promiscuous mode [ 62.593878] hsr0: Slave A (eth2) is not up; please bring it up to get a fully working HSR network [ 62.604214] IPv6: ADDRCONF(NETDEV_UP): hsr0: link is not ready [ 62.614722] IPv6: ADDRCONF(NETDEV_CHANGE): hsr0: link becomes ready root@am57xx-evm:~# root@am57xx-evm:~# [ 63.648569] eth2: Link is Up - 100Mbps/Full - flow control off [ 63.654446] IPv6: ADDRCONF(NETDEV_CHANGE): eth2: link becomes ready [ 63.748602] eth3: Link is Up - 100Mbps/Full - flow control off [ 63.754477] IPv6: ADDRCONF(NETDEV_CHANGE): eth3: link becomes ready =========Setup hsr0 on DAN-H-2============================================= root@am57xx-evm:~# ping 192.168.2.30 PING 192.168.2.30 (192.168.2.30): 56 data bytes 64 bytes from 192.168.2.30: seq=0 ttl=64 time=0.400 ms 64 bytes from 192.168.2.30: seq=1 ttl=64 time=0.190 ms 64 bytes from 192.168.2.30: seq=2 ttl=64 time=0.200 ms --- 192.168.2.30 ping statistics --- 3 packets transmitted, 3 packets received, 0% packet loss round-trip min/avg/max = 0.190/0.263/0.400 ms root@am57xx-evm:~# root@am57xx-evm:~# iperf -s ------------------------------------------------------------ Server listening on TCP port 5001 TCP window size: 85.3 KByte (default) ------------------------------------------------------------ [ 4] local 192.168.2.20 port 5001 connected with 192.168.2.30 port 33546 [ ID] Interval Transfer Bandwidth [ 4] 0.0-10.0 sec 108 MBytes 90.7 Mbits/sec root@am57xx-evm:~# iperf -s -u ------------------------------------------------------------ Server listening on UDP port 5001 Receiving 1470 byte datagrams UDP buffer size: 160 KByte (default) ------------------------------------------------------------ [ 3] local 192.168.2.20 port 5001 connected with 192.168.2.30 port 47913 [ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams [ 3] 0.0-10.0 sec 106 MBytes 89.0 Mbits/sec 0.078 ms 587/76246 (0.77%) [ 3] 0.0-10.0 sec 1 datagrams received out-of-order root@am57xx-evm:~# root@am57xx-evm:~# cat /proc/hsr0/node-table Remote nodes in network: 1 Node[0]: MAC ADDR: d6:ab:09:0d:f0:e5 DANH Time Last Seen: RxA=0 RxB=0 root@am57xx-evm:~# cat /proc/hsr0/lre-stats LRE statistics: Rx Offloaded: 1 lreTxA: 15915369 lreTxB: 15915369 lreTxC: 673 lreErrWrongLanA: 207816 lreErrWrongLanB: 207789 lreErrWrongLanC: 0 lreRxA: 0 lreRxB: 27 lreRxC: 15707590 lreErrorsA: 0 lreErrorsB: 0 lreErrorsC: 0 lreNodes: 1 lreProxyNodes: 0 lreUniqueRxA: 0 lreUniqueRxB: 0 lreUniqueRxC: 0 lreDuplicateRxA: 0 lreDuplicateRxB: 0 lreDuplicateRxC: 0 lreMultiRxA: 0 lreMultiRxB: 0 lreMultiRxC: 0 lreOwnRxA: 0 lreOwnRxB: 0hIjy,hOjXhQj˜hS}rà-(h­h®hX]hW]hU]hV]h[]uh]M¡ h^hh_]rá-hhXÂroot@am57xx-evm:~# ifconfig eth2 eth2 Link encap:Ethernet HWaddr 70:FF:76:1C:0F:8D [ 38.944687] random: nonblocking pool is initialized BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) root@am57xx-evm:~# /setup.sh hsr 70:FF:76:1C:0F:8D 192.168.2.20 Setting up hsr0 interface with MAC address 70:FF:76:1C:0F:8D for slaves and IP address 192.168.2.20 [ 62.319328] remoteproc6: powering up 4b2b4000.pru0 [ 62.325015] remoteproc6: Booting fw image ti-pruss/am57xx-pru0-prueth-fw.elf, size 4350 [ 62.335303] ti-pruss 4b280000.pruss: configured system_events = 0x0000060000500000 intr_channels = 0x00000095 host_intr = 0x00000115 [ 62.348724] remoteproc6: remote processor 4b2b4000.pru0 is now up [ 62.354947] net eth2: started [ 62.360842] IPv6: ADDRCONF(NETDEV_UP): eth2: link is not ready [ 62.408479] remoteproc7: powering up 4b2b8000.pru1 [ 62.413790] remoteproc7: Booting fw image ti-pruss/am57xx-pru1-prueth-fw.elf, size 4382 [ 62.422088] ti-pruss 4b280000.pruss: configured system_events = 0x0060000000a00000 intr_channels = 0x0000012a host_intr = 0x0000022a [ 62.434059] remoteproc7: remote processor 4b2b8000.pru1 is now up [ 62.440281] net eth3: started [ 62.444625] IPv6: ADDRCONF(NETDEV_UP): eth3: link is not ready [ 62.509276] device eth2 entered promiscuous mode [ 62.549502] device eth3 entered promiscuous mode [ 62.593878] hsr0: Slave A (eth2) is not up; please bring it up to get a fully working HSR network [ 62.604214] IPv6: ADDRCONF(NETDEV_UP): hsr0: link is not ready [ 62.614722] IPv6: ADDRCONF(NETDEV_CHANGE): hsr0: link becomes ready root@am57xx-evm:~# root@am57xx-evm:~# [ 63.648569] eth2: Link is Up - 100Mbps/Full - flow control off [ 63.654446] IPv6: ADDRCONF(NETDEV_CHANGE): eth2: link becomes ready [ 63.748602] eth3: Link is Up - 100Mbps/Full - flow control off [ 63.754477] IPv6: ADDRCONF(NETDEV_CHANGE): eth3: link becomes ready =========Setup hsr0 on DAN-H-2============================================= root@am57xx-evm:~# ping 192.168.2.30 PING 192.168.2.30 (192.168.2.30): 56 data bytes 64 bytes from 192.168.2.30: seq=0 ttl=64 time=0.400 ms 64 bytes from 192.168.2.30: seq=1 ttl=64 time=0.190 ms 64 bytes from 192.168.2.30: seq=2 ttl=64 time=0.200 ms --- 192.168.2.30 ping statistics --- 3 packets transmitted, 3 packets received, 0% packet loss round-trip min/avg/max = 0.190/0.263/0.400 ms root@am57xx-evm:~# root@am57xx-evm:~# iperf -s ------------------------------------------------------------ Server listening on TCP port 5001 TCP window size: 85.3 KByte (default) ------------------------------------------------------------ [ 4] local 192.168.2.20 port 5001 connected with 192.168.2.30 port 33546 [ ID] Interval Transfer Bandwidth [ 4] 0.0-10.0 sec 108 MBytes 90.7 Mbits/sec root@am57xx-evm:~# iperf -s -u ------------------------------------------------------------ Server listening on UDP port 5001 Receiving 1470 byte datagrams UDP buffer size: 160 KByte (default) ------------------------------------------------------------ [ 3] local 192.168.2.20 port 5001 connected with 192.168.2.30 port 47913 [ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams [ 3] 0.0-10.0 sec 106 MBytes 89.0 Mbits/sec 0.078 ms 587/76246 (0.77%) [ 3] 0.0-10.0 sec 1 datagrams received out-of-order root@am57xx-evm:~# root@am57xx-evm:~# cat /proc/hsr0/node-table Remote nodes in network: 1 Node[0]: MAC ADDR: d6:ab:09:0d:f0:e5 DANH Time Last Seen: RxA=0 RxB=0 root@am57xx-evm:~# cat /proc/hsr0/lre-stats LRE statistics: Rx Offloaded: 1 lreTxA: 15915369 lreTxB: 15915369 lreTxC: 673 lreErrWrongLanA: 207816 lreErrWrongLanB: 207789 lreErrWrongLanC: 0 lreRxA: 0 lreRxB: 27 lreRxC: 15707590 lreErrorsA: 0 lreErrorsB: 0 lreErrorsC: 0 lreNodes: 1 lreProxyNodes: 0 lreUniqueRxA: 0 lreUniqueRxB: 0 lreUniqueRxC: 0 lreDuplicateRxA: 0 lreDuplicateRxB: 0 lreDuplicateRxC: 0 lreMultiRxA: 0 lreMultiRxB: 0 lreMultiRxC: 0 lreOwnRxA: 0 lreOwnRxB: 0râ-…�rã-}rä-(hHUhIjÞ-ubaubh{)�rå-}ræ-(hHX **DAN-H-2**rç-hIjy,hOjXhQhƒhS}rè-(hU]hV]hW]hX]h[]uh]M¨h^hh_]ré-hæ)�rê-}rë-(hHjç-hS}rì-(hU]hV]hW]hX]h[]uhIjå-h_]rí-hhXDAN-H-2rî-…�rï-}rð-(hHUhIjê-ubahQhîubaubj•)�rñ-}rò-(hHXçroot@am57xx-evm:~# ifconfig eth2 eth2 Link encap:Ethernet HWaddr D6:AB:09:0D:F0:E5 BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) root@am57xx-evm:~# /setup.sh hsr D6:AB:09:0D:F0:E5 192.168.2.30 Setting up hsr0 interface with MAC address D6:AB:09:0D:F0:E5 for slaves and IP address 192.168.2.30 [ 66.015629] remoteproc6: powering up 4b2b4000.pru0 [ 66.021263] remoteproc6: Booting fw image ti-pruss/am57xx-pru0-prueth-fw.elf, size 4350 [ 66.031502] ti-pruss 4b280000.pruss: configured system_events = 0x0000060000500000 intr_channels = 0x00000095 host_intr = 0x00000115 [ 66.044965] remoteproc6: remote processor 4b2b4000.pru0 is now up [ 66.052043] net eth2: started [ 66.055419] IPv6: ADDRCONF(NETDEV_UP): eth2: link is not ready [ 66.108268] remoteproc7: powering up 4b2b8000.pru1 [ 66.113562] remoteproc7: Booting fw image ti-pruss/am57xx-pru1-prueth-fw.elf, size 4382 [ 66.123585] ti-pruss 4b280000.pruss: configured system_events = 0x0060000000a00000 intr_channels = 0x0000012a host_intr = 0x0000022a [ 66.136973] remoteproc7: remote processor 4b2b8000.pru1 is now up [ 66.143998] net eth3: started [ 66.147284] IPv6: ADDRCONF(NETDEV_UP): eth3: link is not ready [ 66.218855] device eth2 entered promiscuous mode [ 66.258015] device eth3 entered promiscuous mode [ 66.303911] hsr0: Slave A (eth2) is not up; please bring it up to get a fully working HSR network [ 66.313621] IPv6: ADDRCONF(NETDEV_UP): hsr0: link is not ready [ 66.323162] IPv6: ADDRCONF(NETDEV_CHANGE): hsr0: link becomes ready root@am57xx-evm:~# [ 67.358460] eth2: Link is Up - 100Mbps/Full - flow control off [ 67.364336] IPv6: ADDRCONF(NETDEV_CHANGE): eth2: link becomes ready [ 67.518489] eth3: Link is Up - 100Mbps/Full - flow control off [ 67.524363] IPv6: ADDRCONF(NETDEV_CHANGE): eth3: link becomes ready root@am57xx-evm:~# iperf -c 192.168.2.20 ------------------------------------------------------------ Client connecting to 192.168.2.20, TCP port 5001 TCP window size: 70.0 KByte (default) ------------------------------------------------------------ [ 3] local 192.168.2.30 port 33546 connected with 192.168.2.20 port 5001 [ ID] Interval Transfer Bandwidth [ 3] 0.0-10.0 sec 108 MBytes 90.9 Mbits/sec root@am57xx-evm:~# iperf -c 192.168.2.20 -u -b 90M ------------------------------------------------------------ Client connecting to 192.168.2.20, UDP port 5001 Sending 1470 byte datagrams UDP buffer size: 160 KByte (default) ------------------------------------------------------------ [ 3] local 192.168.2.30 port 47913 connected with 192.168.2.20 port 5001 [ ID] Interval Transfer Bandwidth [ 3] 0.0-10.0 sec 107 MBytes 89.7 Mbits/sec [ 3] Sent 76247 datagrams [ 3] Server Report: [ 3] 0.0-10.0 sec 106 MBytes 89.0 Mbits/sec 0.078 ms 587/76246 (0.77%) [ 3] 0.0-10.0 sec 1 datagrams received out-of-order root@am57xx-evm:~# cat /proc/hsr0/node-table Remote nodes in network: 1 Node[0]: MAC ADDR: 70:ff:76:1c:0f:8d DANH Time Last Seen: RxA=0 RxB=0 root@am57xx-evm:/# cat /proc/prp0/lre-stats LRE statistics: Rx Offloaded: 1 lreTxA: 208128 lreTxB: 208128 lreTxC: 31305063 lreErrWrongLanA: 0 lreErrWrongLanB: 0 lreErrWrongLanC: 0 lreRxA: 0 lreRxB: 0 lreRxC: 208 lreErrorsA: 0 lreErrorsB: 0 lreErrorsC: 0 lreNodes: 1 lreProxyNodes: 0 lreUniqueRxA: 0 lreUniqueRxB: 0 lreUniqueRxC: 0 lreDuplicateRxA: 0 lreDuplicateRxB: 0 lreDuplicateRxC: 0 lreMultiRxA: 0 lreMultiRxB: 0 lreMultiRxC: 0 lreOwnRxA: 0 lreOwnRxB: 0hIjy,hOjXhQj˜hS}ró-(h­h®hX]hW]hU]hV]h[]uh]M h^hh_]rô-hhXçroot@am57xx-evm:~# ifconfig eth2 eth2 Link encap:Ethernet HWaddr D6:AB:09:0D:F0:E5 BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) root@am57xx-evm:~# /setup.sh hsr D6:AB:09:0D:F0:E5 192.168.2.30 Setting up hsr0 interface with MAC address D6:AB:09:0D:F0:E5 for slaves and IP address 192.168.2.30 [ 66.015629] remoteproc6: powering up 4b2b4000.pru0 [ 66.021263] remoteproc6: Booting fw image ti-pruss/am57xx-pru0-prueth-fw.elf, size 4350 [ 66.031502] ti-pruss 4b280000.pruss: configured system_events = 0x0000060000500000 intr_channels = 0x00000095 host_intr = 0x00000115 [ 66.044965] remoteproc6: remote processor 4b2b4000.pru0 is now up [ 66.052043] net eth2: started [ 66.055419] IPv6: ADDRCONF(NETDEV_UP): eth2: link is not ready [ 66.108268] remoteproc7: powering up 4b2b8000.pru1 [ 66.113562] remoteproc7: Booting fw image ti-pruss/am57xx-pru1-prueth-fw.elf, size 4382 [ 66.123585] ti-pruss 4b280000.pruss: configured system_events = 0x0060000000a00000 intr_channels = 0x0000012a host_intr = 0x0000022a [ 66.136973] remoteproc7: remote processor 4b2b8000.pru1 is now up [ 66.143998] net eth3: started [ 66.147284] IPv6: ADDRCONF(NETDEV_UP): eth3: link is not ready [ 66.218855] device eth2 entered promiscuous mode [ 66.258015] device eth3 entered promiscuous mode [ 66.303911] hsr0: Slave A (eth2) is not up; please bring it up to get a fully working HSR network [ 66.313621] IPv6: ADDRCONF(NETDEV_UP): hsr0: link is not ready [ 66.323162] IPv6: ADDRCONF(NETDEV_CHANGE): hsr0: link becomes ready root@am57xx-evm:~# [ 67.358460] eth2: Link is Up - 100Mbps/Full - flow control off [ 67.364336] IPv6: ADDRCONF(NETDEV_CHANGE): eth2: link becomes ready [ 67.518489] eth3: Link is Up - 100Mbps/Full - flow control off [ 67.524363] IPv6: ADDRCONF(NETDEV_CHANGE): eth3: link becomes ready root@am57xx-evm:~# iperf -c 192.168.2.20 ------------------------------------------------------------ Client connecting to 192.168.2.20, TCP port 5001 TCP window size: 70.0 KByte (default) ------------------------------------------------------------ [ 3] local 192.168.2.30 port 33546 connected with 192.168.2.20 port 5001 [ ID] Interval Transfer Bandwidth [ 3] 0.0-10.0 sec 108 MBytes 90.9 Mbits/sec root@am57xx-evm:~# iperf -c 192.168.2.20 -u -b 90M ------------------------------------------------------------ Client connecting to 192.168.2.20, UDP port 5001 Sending 1470 byte datagrams UDP buffer size: 160 KByte (default) ------------------------------------------------------------ [ 3] local 192.168.2.30 port 47913 connected with 192.168.2.20 port 5001 [ ID] Interval Transfer Bandwidth [ 3] 0.0-10.0 sec 107 MBytes 89.7 Mbits/sec [ 3] Sent 76247 datagrams [ 3] Server Report: [ 3] 0.0-10.0 sec 106 MBytes 89.0 Mbits/sec 0.078 ms 587/76246 (0.77%) [ 3] 0.0-10.0 sec 1 datagrams received out-of-order root@am57xx-evm:~# cat /proc/hsr0/node-table Remote nodes in network: 1 Node[0]: MAC ADDR: 70:ff:76:1c:0f:8d DANH Time Last Seen: RxA=0 RxB=0 root@am57xx-evm:/# cat /proc/prp0/lre-stats LRE statistics: Rx Offloaded: 1 lreTxA: 208128 lreTxB: 208128 lreTxC: 31305063 lreErrWrongLanA: 0 lreErrWrongLanB: 0 lreErrWrongLanC: 0 lreRxA: 0 lreRxB: 0 lreRxC: 208 lreErrorsA: 0 lreErrorsB: 0 lreErrorsC: 0 lreNodes: 1 lreProxyNodes: 0 lreUniqueRxA: 0 lreUniqueRxB: 0 lreUniqueRxC: 0 lreDuplicateRxA: 0 lreDuplicateRxB: 0 lreDuplicateRxC: 0 lreMultiRxA: 0 lreMultiRxB: 0 lreMultiRxC: 0 lreOwnRxA: 0 lreOwnRxB: 0rõ-…�rö-}r÷-(hHUhIjñ-ubaubj/)�rø-}rù-(hHX.. _PLSDK_PTP_Testing:hIjy,hOjXhQj2hS}rú-(hX]hW]hU]hV]h[]j4Uplsdk-ptp-testingrû-uh]Mn h^hh_]ubeubhJ)�rü-}rý-(hHUhIjZ*hOjXj8}rþ-h"jø-shQhRhS}rÿ-(hU]hV]hW]hX]r.(U prp-testingr.jû-eh[]r.(hh"euh]Mh^hj>}r.jû-jø-sh_]r.(ha)�r.}r.(hHX PRP Testingr.hIjü-hOjXhQhehS}r.(hU]hV]hW]hX]h[]uh]Mh^hh_]r .hhX PRP Testingr .…�r .}r .(hHj.hIj.ubaubjP)�r .}r.(hHX+.. Image:: ../images/Prp-network-setup.jpg hIjü-hOjXhQjShS}r.(UuriX%linux/../images/Prp-network-setup.jpgr.hX]hW]hU]hV]jV}r.U*j.sh[]uh]Mh^hh_]ubh{)�r.}r.(hHXfFor Testing PRP, user is required to use the setup shown in the above diagram. A DAN-P is attached to two independent networks (A and B) each of which is shown as a separate Ethernet switch. Do the following steps to setup the prp interface. Note that in the below example Linux interface eth2 is Link-A (slave1 in ip link command) and eth3 is Link-B (slave2 in ip link command). Link-A is the Ethernet cable that connects DUT to Switch A and Link-B is the Ethernet cable that connects to Switch-B. **This is very important for PRP as swapping them is an incorrect connection and can produce undesirable results.**hIjü-hOjXhQhƒhS}r.(hU]hV]hW]hX]h[]uh]Mh^hh_]r.(hhXóFor Testing PRP, user is required to use the setup shown in the above diagram. A DAN-P is attached to two independent networks (A and B) each of which is shown as a separate Ethernet switch. Do the following steps to setup the prp interface. Note that in the below example Linux interface eth2 is Link-A (slave1 in ip link command) and eth3 is Link-B (slave2 in ip link command). Link-A is the Ethernet cable that connects DUT to Switch A and Link-B is the Ethernet cable that connects to Switch-B. r.…�r.}r.(hHXóFor Testing PRP, user is required to use the setup shown in the above diagram. A DAN-P is attached to two independent networks (A and B) each of which is shown as a separate Ethernet switch. Do the following steps to setup the prp interface. Note that in the below example Linux interface eth2 is Link-A (slave1 in ip link command) and eth3 is Link-B (slave2 in ip link command). Link-A is the Ethernet cable that connects DUT to Switch A and Link-B is the Ethernet cable that connects to Switch-B. hIj.ubhæ)�r.}r.(hHXs**This is very important for PRP as swapping them is an incorrect connection and can produce undesirable results.**hS}r.(hU]hV]hW]hX]h[]uhIj.h_]r.hhXoThis is very important for PRP as swapping them is an incorrect connection and can produce undesirable results.r.…�r.}r.(hHUhIj.ubahQhîubeubj?+)�r .}r!.(hHUhIjü-hOjXhQjB+hS}r".(jD+U.hX]hW]hU]jE+UhV]h[]jF+jG+uh]Mh^hh_]r#.(hÛ)�r$.}r%.(hHX}Connect the DAN-P-1 EVM, PRU2ETH0 (marking on EVM) to a port at Ethernet switch A and PRU2ETH1 to a port at Ethernet switch BhIj .hOjXhQhÞhS}r&.(hU]hV]hW]hX]h[]uh]Nh^hh_]r'.h{)�r(.}r).(hHX}Connect the DAN-P-1 EVM, PRU2ETH0 (marking on EVM) to a port at Ethernet switch A and PRU2ETH1 to a port at Ethernet switch Br*.hIj$.hOjXhQhƒhS}r+.(hU]hV]hW]hX]h[]uh]Mh_]r,.hhX}Connect the DAN-P-1 EVM, PRU2ETH0 (marking on EVM) to a port at Ethernet switch A and PRU2ETH1 to a port at Ethernet switch Br-.…�r..}r/.(hHj*.hIj(.ubaubaubhÛ)�r0.}r1.(hHXsSimilarly, connect DAN-P-2 EVM, PRU2ETH0 to a port at Ethernet switch A and PRU2ETH1 to a port at Ethernet switch BhIj .hOjXhQhÞhS}r2.(hU]hV]hW]hX]h[]uh]Nh^hh_]r3.h{)�r4.}r5.(hHXsSimilarly, connect DAN-P-2 EVM, PRU2ETH0 to a port at Ethernet switch A and PRU2ETH1 to a port at Ethernet switch Br6.hIj0.hOjXhQhƒhS}r7.(hU]hV]hW]hX]h[]uh]M!h_]r8.hhXsSimilarly, connect DAN-P-2 EVM, PRU2ETH0 to a port at Ethernet switch A and PRU2ETH1 to a port at Ethernet switch Br9.…�r:.}r;.(hHj6.hIj4.ubaubaubhÛ)�r<.}r=.(hHX|Configure the PRU to load PRP firmware by setting env variable as discussed at :ref:`PLSDK_HSR_PRP_Testing_Firmware_Offload`hIj .hOjXhQhÞhS}r>.(hU]hV]hW]hX]h[]uh]Nh^hh_]r?.h{)�r@.}rA.(hHX|Configure the PRU to load PRP firmware by setting env variable as discussed at :ref:`PLSDK_HSR_PRP_Testing_Firmware_Offload`hIj<.hOjXhQhƒhS}rB.(hU]hV]hW]hX]h[]uh]M#h_]rC.(hhXOConfigure the PRU to load PRP firmware by setting env variable as discussed at rD.…�rE.}rF.(hHXOConfigure the PRU to load PRP firmware by setting env variable as discussed at hIj@.ubjØ)�rG.}rH.(hHX-:ref:`PLSDK_HSR_PRP_Testing_Firmware_Offload`rI.hIj@.hOjXhQjÜhS}rJ.(UreftypeXrefjÞˆjßX&plsdk_hsr_prp_testing_firmware_offloadU refdomainXstdrK.hX]hW]U refexplicit‰hU]hV]h[]jájâuh]M#h_]rL.jä)�rM.}rN.(hHjI.hS}rO.(hU]hV]rP.(jéjK.Xstd-refrQ.ehW]hX]h[]uhIjG.h_]rR.hhX&PLSDK_HSR_PRP_Testing_Firmware_OffloadrS.…�rT.}rU.(hHUhIjM.ubahQjïubaubeubaubhÛ)�rV.}rW.(hHX­Boot the EVMs using the pre-built images from the Processor SDK release. These images are built with Linux HSR/PRP driver enabled. Login to the console using root user name.hIj .hOjXhQhÞhS}rX.(hU]hV]hW]hX]h[]uh]Nh^hh_]rY.h{)�rZ.}r[.(hHX­Boot the EVMs using the pre-built images from the Processor SDK release. These images are built with Linux HSR/PRP driver enabled. Login to the console using root user name.r\.hIjV.hOjXhQhƒhS}r].(hU]hV]hW]hX]h[]uh]M%h_]r^.hhX­Boot the EVMs using the pre-built images from the Processor SDK release. These images are built with Linux HSR/PRP driver enabled. Login to the console using root user name.r_.…�r`.}ra.(hHj\.hIjZ.ubaubaubhÛ)�rb.}rc.(hHXŽThis time user may use the script (setup.sh) to create the prp interface. Note the MAC-A and MAC-B as in the case of HSR (MAC address of eth2)hIj .hOjXhQhÞhS}rd.(hU]hV]hW]hX]h[]uh]Nh^hh_]re.h{)�rf.}rg.(hHXŽThis time user may use the script (setup.sh) to create the prp interface. Note the MAC-A and MAC-B as in the case of HSR (MAC address of eth2)rh.hIjb.hOjXhQhƒhS}ri.(hU]hV]hW]hX]h[]uh]M(h_]rj.hhXŽThis time user may use the script (setup.sh) to create the prp interface. Note the MAC-A and MAC-B as in the case of HSR (MAC address of eth2)rk.…�rl.}rm.(hHjh.hIjf.ubaubaubhÛ)�rn.}ro.(hHXfsetup the prp interface at DAN-P-1 as follows #. /setup.sh prp hIj .hONhQhÞhS}rp.(hU]hV]hW]hX]h[]uh]Nh^hh_]rq.(h{)�rr.}rs.(hHX-setup the prp interface at DAN-P-1 as followsrt.hIjn.hOjXhQhƒhS}ru.(hU]hV]hW]hX]h[]uh]M+h_]rv.hhX-setup the prp interface at DAN-P-1 as followsrw.…�rx.}ry.(hHjt.hIjr.ubaubj?+)�rz.}r{.(hHUhS}r|.(jD+U.hX]hW]hU]jE+UhV]h[]jF+jG+uhIjn.h_]r}.hÛ)�r~.}r.(hHX4/setup.sh prp hS}r€.(hU]hV]hW]hX]h[]uhIjz.h_]r�.h{)�r‚.}rƒ.(hHX3/setup.sh prp r„.hIj~.hOjXhQhƒhS}r….(hU]hV]hW]hX]h[]uh]M-h_]r†.hhX3/setup.sh prp r‡.…�rˆ.}r‰.(hHj„.hIj‚.ubaubahQhÞubahQjB+ubeubhÛ)�rŠ.}r‹.(hHXhsetup the prp interface at DAN-P-2 as follows:- #. /setup.sh prp hIj .hONhQhÞhS}rŒ.(hU]hV]hW]hX]h[]uh]Nh^hh_]r�.(h{)�rŽ.}r�.(hHX/setup the prp interface at DAN-P-2 as follows:-r�.hIjŠ.hOjXhQhƒhS}r‘.(hU]hV]hW]hX]h[]uh]M/h_]r’.hhX/setup the prp interface at DAN-P-2 as follows:-r“.…�r”.}r•.(hHj�.hIjŽ.ubaubj?+)�r–.}r—.(hHUhS}r˜.(jD+U.hX]hW]hU]jE+UhV]h[]jF+jG+uhIjŠ.h_]r™.hÛ)�rš.}r›.(hHX4/setup.sh prp hS}rœ.(hU]hV]hW]hX]h[]uhIj–.h_]r�.h{)�rž.}rŸ.(hHX3/setup.sh prp r .hIjš.hOjXhQhƒhS}r¡.(hU]hV]hW]hX]h[]uh]M1h_]r¢.hhX3/setup.sh prp r£.…�r¤.}r¥.(hHj .hIjž.ubaubahQhÞubahQjB+ubeubeubh{)�r¦.}r§.(hHX‰If PRP interface uses IP address 192.168.2.20 and eth2 MAC address is 70:ff:76:1c:0f:8d, following example command may be used at DAN-P-1r¨.hIjü-hOjXhQhƒhS}r©.(hU]hV]hW]hX]h[]uh]M3h^hh_]rª.hhX‰If PRP interface uses IP address 192.168.2.20 and eth2 MAC address is 70:ff:76:1c:0f:8d, following example command may be used at DAN-P-1r«.…�r¬.}r­.(hHj¨.hIj¦.ubaubj•)�r®.}r¯.(hHX,/setup.sh prp 70:ff:76:1c:0f:8d 192.168.2.20hIjü-hOjXhQj˜hS}r°.(h­h®hX]hW]hU]hV]h[]uh]M˜ h^hh_]r±.hhX,/setup.sh prp 70:ff:76:1c:0f:8d 192.168.2.20r².…�r³.}r´.(hHUhIj®.ubaubh{)�rµ.}r¶.(hHX‡If PRP interface uses IP address 192.168.2.30 and eth2 MAC address is 70:ff:76:1c:0f:8e following example command may be use at DAN-P-2r·.hIjü-hOjXhQhƒhS}r¸.(hU]hV]hW]hX]h[]uh]M:h^hh_]r¹.hhX‡If PRP interface uses IP address 192.168.2.30 and eth2 MAC address is 70:ff:76:1c:0f:8e following example command may be use at DAN-P-2rº.…�r».}r¼.(hHj·.hIjµ.ubaubj•)�r½.}r¾.(hHX,/setup.sh prp 70:ff:76:1c:0f:8e 192.168.2.30hIjü-hOjXhQj˜hS}r¿.(h­h®hX]hW]hU]hV]h[]uh]MŸ h^hh_]rÀ.hhX,/setup.sh prp 70:ff:76:1c:0f:8e 192.168.2.30rÁ.…�rÂ.}rÃ.(hHUhIj½.ubaubh{)�rÄ.}rÅ.(hHX To teardown the prp interface dorÆ.hIjü-hOjXhQhƒhS}rÇ.(hU]hV]hW]hX]h[]uh]MAh^hh_]rÈ.hhX To teardown the prp interface dorÉ.…�rÊ.}rË.(hHjÆ.hIjÄ.ubaubj•)�rÌ.}rÍ.(hHX/teardown.sh prphIjü-hOjXhQj˜hS}rÎ.(h­h®hX]hW]hU]hV]h[]uh]M¥ h^hh_]rÏ.hhX/teardown.sh prprÐ.…�rÑ.}rÒ.(hHUhIjÌ.ubaubh{)�rÓ.}rÔ.(hHXSample logs are shown below:rÕ.hIjü-hOjXhQhƒhS}rÖ.(hU]hV]hW]hX]h[]uh]MGh^hh_]r×.hhXSample logs are shown below:rØ.…�rÙ.}rÚ.(hHjÕ.hIjÓ.ubaubh{)�rÛ.}rÜ.(hHX **DAN-P-1**rÝ.hIjü-hOjXhQhƒhS}rÞ.(hU]hV]hW]hX]h[]uh]MIh^hh_]rß.hæ)�rà.}rá.(hHjÝ.hS}râ.(hU]hV]hW]hX]h[]uhIjÛ.h_]rã.hhXDAN-P-1rä.…�rå.}ræ.(hHUhIjà.ubahQhîubaubj•)�rç.}rè.(hHXÿroot@am57xx-evm:~# ifconfig eth2 eth2 Link encap:Ethernet HWaddr 70:FF:76:1C:0F:8D inet6 addr: fe80::72ff:76ff:fe1c:f8d%3068183320/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:80429 errors:0 dropped:0 overruns:0 frame:593 TX packets:40905 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:121704175 (116.0 MiB) TX bytes:2716445 (2.5 MiB) root@am57xx-evm:~# /setup.sh prp 70:FF:76:1C:0F:8D 192.168.2.20 Setting up prp0 interface with MAC address 70:FF:76:1C:0F:8D for slaves and IP address 192.168.2.20 [21649.978346] ti-pruss 4b280000.pruss: unconfigured system_events = 0x0000060000500000 host_intr = 0x00000115 [21649.988138] remoteproc6: stopped remote processor 4b2b4000.pru0 [21649.994196] net eth2: stopped [21650.048408] ti-pruss 4b280000.pruss: unconfigured system_events = 0x0060000000a00000 host_intr = 0x0000022a [21650.058199] remoteproc7: stopped remote processor 4b2b8000.pru1 [21650.064258] net eth3: stopped [21650.084733] remoteproc6: powering up 4b2b4000.pru0 [21650.090419] remoteproc6: Booting fw image ti-pruss/am57xx-pru0-prueth-fw.elf, size 4350 [21650.098711] ti-pruss 4b280000.pruss: configured system_events = 0x0000060000500000 intr_channels = 0x00000095 host_intr = 0x00000115 [21650.110746] remoteproc6: remote processor 4b2b4000.pru0 is now up [21650.117709] net eth2: started [21650.121113] IPv6: ADDRCONF(NETDEV_UP): eth2: link is not ready [21650.131268] remoteproc7: powering up 4b2b8000.pru1 [21650.136538] remoteproc7: Booting fw image ti-pruss/am57xx-pru1-prueth-fw.elf, size 4382 [21650.144871] ti-pruss 4b280000.pruss: configured system_events = 0x0060000000a00000 intr_channels = 0x0000012a host_intr = 0x0000022a [21650.156838] remoteproc7: remote processor 4b2b8000.pru1 is now up [21650.163795] net eth3: started [21650.167169] IPv6: ADDRCONF(NETDEV_UP): eth3: link is not ready [21650.188520] IPv6: ADDRCONF(NETDEV_CHANGE): eth2: link becomes ready [21650.248510] device eth2 entered promiscuous mode [21650.287995] device eth3 entered promiscuous mode [21650.328127] IPv6: ADDRCONF(NETDEV_CHANGE): eth3: link becomes ready root@am57xx-evm:~# ping 192.168.2.30 PING 192.168.2.30 (192.168.2.30): 56 data bytes 64 bytes from 192.168.2.30: seq=0 ttl=64 time=0.401 ms 64 bytes from 192.168.2.30: seq=1 ttl=64 time=0.189 ms 64 bytes from 192.168.2.30: seq=2 ttl=64 time=0.186 ms ^C --- 192.168.2.30 ping statistics --- 3 packets transmitted, 3 packets received, 0% packet loss round-trip min/avg/max = 0.186/0.258/0.401 ms root@am57xx-evm:~# root@am57xx-evm:~# root@am57xx-evm:~# root@am57xx-evm:~# iperf -s ------------------------------------------------------------ Server listening on TCP port 5001 TCP window size: 85.3 KByte (default) ------------------------------------------------------------ [ 4] local 192.168.2.20 port 5001 connected with 192.168.2.30 port 38900 [ ID] Interval Transfer Bandwidth [ 4] 0.0-10.0 sec 109 MBytes 91.5 Mbits/sec ^Croot@am57xx-evm:~# iperf -s -u ------------------------------------------------------------ Server listening on UDP port 5001 Receiving 1470 byte datagrams UDP buffer size: 160 KByte (default) ------------------------------------------------------------ [ 3] local 192.168.2.20 port 5001 connected with 192.168.2.30 port 43497 [ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams [ 3] 0.0-10.0 sec 106 MBytes 88.8 Mbits/sec 0.070 ms 0/76109 (0.0%) [ 3] 0.0-10.0 sec 1 datagrams received out-of-order ^Croot@am57xx-evm:~# root@am57xx-evm:~# root@am57xx-evm:~# root@am57xx-evm:/# cat /proc/prp0/node-table Remote nodes in network: 1 Node[0]: MAC ADDR: 2a:da:8c:50:1b:86 DANP Time Last Seen: RxA=0 RxB=0 root@am57xx-evm:/# cat /proc/prp0/lre-stats LRE statistics: Rx Offloaded: 1 lreTxA: 208128 lreTxB: 208128 lreTxC: 31305063 lreErrWrongLanA: 0 lreErrWrongLanB: 0 lreErrWrongLanC: 0 lreRxA: 0 lreRxB: 0 lreRxC: 208 lreErrorsA: 0 lreErrorsB: 0 lreErrorsC: 0 lreNodes: 1 lreProxyNodes: 0 lreUniqueRxA: 0 lreUniqueRxB: 0 lreUniqueRxC: 0 lreDuplicateRxA: 0 lreDuplicateRxB: 0 lreDuplicateRxC: 0 lreMultiRxA: 0 lreMultiRxB: 0 lreMultiRxC: 0 lreOwnRxA: 0 lreOwnRxB: 0hIjü-hOjXhQj˜hS}ré.(h­h®hX]hW]hU]hV]h[]uh]M­ h^hh_]rê.hhXÿroot@am57xx-evm:~# ifconfig eth2 eth2 Link encap:Ethernet HWaddr 70:FF:76:1C:0F:8D inet6 addr: fe80::72ff:76ff:fe1c:f8d%3068183320/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:80429 errors:0 dropped:0 overruns:0 frame:593 TX packets:40905 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:121704175 (116.0 MiB) TX bytes:2716445 (2.5 MiB) root@am57xx-evm:~# /setup.sh prp 70:FF:76:1C:0F:8D 192.168.2.20 Setting up prp0 interface with MAC address 70:FF:76:1C:0F:8D for slaves and IP address 192.168.2.20 [21649.978346] ti-pruss 4b280000.pruss: unconfigured system_events = 0x0000060000500000 host_intr = 0x00000115 [21649.988138] remoteproc6: stopped remote processor 4b2b4000.pru0 [21649.994196] net eth2: stopped [21650.048408] ti-pruss 4b280000.pruss: unconfigured system_events = 0x0060000000a00000 host_intr = 0x0000022a [21650.058199] remoteproc7: stopped remote processor 4b2b8000.pru1 [21650.064258] net eth3: stopped [21650.084733] remoteproc6: powering up 4b2b4000.pru0 [21650.090419] remoteproc6: Booting fw image ti-pruss/am57xx-pru0-prueth-fw.elf, size 4350 [21650.098711] ti-pruss 4b280000.pruss: configured system_events = 0x0000060000500000 intr_channels = 0x00000095 host_intr = 0x00000115 [21650.110746] remoteproc6: remote processor 4b2b4000.pru0 is now up [21650.117709] net eth2: started [21650.121113] IPv6: ADDRCONF(NETDEV_UP): eth2: link is not ready [21650.131268] remoteproc7: powering up 4b2b8000.pru1 [21650.136538] remoteproc7: Booting fw image ti-pruss/am57xx-pru1-prueth-fw.elf, size 4382 [21650.144871] ti-pruss 4b280000.pruss: configured system_events = 0x0060000000a00000 intr_channels = 0x0000012a host_intr = 0x0000022a [21650.156838] remoteproc7: remote processor 4b2b8000.pru1 is now up [21650.163795] net eth3: started [21650.167169] IPv6: ADDRCONF(NETDEV_UP): eth3: link is not ready [21650.188520] IPv6: ADDRCONF(NETDEV_CHANGE): eth2: link becomes ready [21650.248510] device eth2 entered promiscuous mode [21650.287995] device eth3 entered promiscuous mode [21650.328127] IPv6: ADDRCONF(NETDEV_CHANGE): eth3: link becomes ready root@am57xx-evm:~# ping 192.168.2.30 PING 192.168.2.30 (192.168.2.30): 56 data bytes 64 bytes from 192.168.2.30: seq=0 ttl=64 time=0.401 ms 64 bytes from 192.168.2.30: seq=1 ttl=64 time=0.189 ms 64 bytes from 192.168.2.30: seq=2 ttl=64 time=0.186 ms ^C --- 192.168.2.30 ping statistics --- 3 packets transmitted, 3 packets received, 0% packet loss round-trip min/avg/max = 0.186/0.258/0.401 ms root@am57xx-evm:~# root@am57xx-evm:~# root@am57xx-evm:~# root@am57xx-evm:~# iperf -s ------------------------------------------------------------ Server listening on TCP port 5001 TCP window size: 85.3 KByte (default) ------------------------------------------------------------ [ 4] local 192.168.2.20 port 5001 connected with 192.168.2.30 port 38900 [ ID] Interval Transfer Bandwidth [ 4] 0.0-10.0 sec 109 MBytes 91.5 Mbits/sec ^Croot@am57xx-evm:~# iperf -s -u ------------------------------------------------------------ Server listening on UDP port 5001 Receiving 1470 byte datagrams UDP buffer size: 160 KByte (default) ------------------------------------------------------------ [ 3] local 192.168.2.20 port 5001 connected with 192.168.2.30 port 43497 [ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams [ 3] 0.0-10.0 sec 106 MBytes 88.8 Mbits/sec 0.070 ms 0/76109 (0.0%) [ 3] 0.0-10.0 sec 1 datagrams received out-of-order ^Croot@am57xx-evm:~# root@am57xx-evm:~# root@am57xx-evm:~# root@am57xx-evm:/# cat /proc/prp0/node-table Remote nodes in network: 1 Node[0]: MAC ADDR: 2a:da:8c:50:1b:86 DANP Time Last Seen: RxA=0 RxB=0 root@am57xx-evm:/# cat /proc/prp0/lre-stats LRE statistics: Rx Offloaded: 1 lreTxA: 208128 lreTxB: 208128 lreTxC: 31305063 lreErrWrongLanA: 0 lreErrWrongLanB: 0 lreErrWrongLanC: 0 lreRxA: 0 lreRxB: 0 lreRxC: 208 lreErrorsA: 0 lreErrorsB: 0 lreErrorsC: 0 lreNodes: 1 lreProxyNodes: 0 lreUniqueRxA: 0 lreUniqueRxB: 0 lreUniqueRxC: 0 lreDuplicateRxA: 0 lreDuplicateRxB: 0 lreDuplicateRxC: 0 lreMultiRxA: 0 lreMultiRxB: 0 lreMultiRxC: 0 lreOwnRxA: 0 lreOwnRxB: 0rë.…�rì.}rí.(hHUhIjç.ubaubh{)�rî.}rï.(hHX **DAN-P-2**rð.hIjü-hOjXhQhƒhS}rñ.(hU]hV]hW]hX]h[]uh]M¼h^hh_]rò.hæ)�ró.}rô.(hHjð.hS}rõ.(hU]hV]hW]hX]h[]uhIjî.h_]rö.hhXDAN-P-2r÷.…�rø.}rù.(hHUhIjó.ubahQhîubaubj•)�rú.}rû.(hHXKroot@am57xx-evm:~# ifconfig eth2 eth2 Link encap:Ethernet HWaddr 2A:DA:8C:50:1B:86 inet6 addr: fe80::28da:8cff:fe50:1b86%3068203800/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:40881 errors:0 dropped:10 overruns:0 frame:64 TX packets:81022 errors:0 dropped:3528075 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:2718950 (2.5 MiB) TX bytes:122601929 (116.9 MiB) root@am57xx-evm:~# /setup.sh prp 2A:DA:8C:50:1B:86 192.168.2.30 Setting up prp0 interface with MAC address 2A:DA:8C:50:1B:86 for slaves and IP address 192.168.2.30 [21684.048303] ti-pruss 4b280000.pruss: unconfigured system_events = 0x0000060000500000 host_intr = 0x00000115 [21684.058095] remoteproc6: stopped remote processor 4b2b4000.pru0 [21684.064152] net eth2: stopped [21684.118368] ti-pruss 4b280000.pruss: unconfigured system_events = 0x0060000000a00000 host_intr = 0x0000022a [21684.128160] remoteproc7: stopped remote processor 4b2b8000.pru1 [21684.134217] net eth3: stopped [21684.158347] remoteproc6: powering up 4b2b4000.pru0 [21684.164069] remoteproc6: Booting fw image ti-pruss/am57xx-pru0-prueth-fw.elf, size 4350 [21684.172524] ti-pruss 4b280000.pruss: configured system_events = 0x0000060000500000 intr_channels = 0x00000095 host_intr = 0x00000115 [21684.184563] remoteproc6: remote processor 4b2b4000.pru0 is now up [21684.191761] net eth2: started [21684.195184] IPv6: ADDRCONF(NETDEV_UP): eth2: link is not ready [21684.205638] remoteproc7: powering up 4b2b8000.pru1 [21684.210960] remoteproc7: Booting fw image ti-pruss/am57xx-pru1-prueth-fw.elf, size 4382 [21684.219252] ti-pruss 4b280000.pruss: configured system_events = 0x0060000000a00000 intr_channels = 0x0000012a host_intr = 0x0000022a [21684.231220] remoteproc7: remote processor 4b2b8000.pru1 is now up [21684.238235] net eth3: started [21684.241684] IPv6: ADDRCONF(NETDEV_UP): eth3: link is not ready [21684.339123] device eth2 entered promiscuous mode [21684.377962] device eth3 entered promiscuous mode [21684.425802] prp0: Slave A (eth2) is not up; please bring it up to get a fully working HSR network [21684.436772] IPv6: ADDRCONF(NETDEV_UP): prp0: link is not ready [21684.443615] IPv6: ADDRCONF(NETDEV_CHANGE): prp0: link becomes ready root@am57xx-evm:~# [21684.488601] IPv6: ADDRCONF(NETDEV_CHANGE): eth2: link becomes ready [21684.518615] IPv6: ADDRCONF(NETDEV_CHANGE): eth3: link becomes ready root@am57xx-evm:~# iperf -c 192.168.2.20 ------------------------------------------------------------ Client connecting to 192.168.2.20, TCP port 5001 TCP window size: 43.8 KByte (default) ------------------------------------------------------------ [ 3] local 192.168.2.30 port 38900 connected with 192.168.2.20 port 5001 [ ID] Interval Transfer Bandwidth [ 3] 0.0-10.0 sec 109 MBytes 91.5 Mbits/sec root@am57xx-evm:~# iperf -c 192.168.2.20 -u -b 88M ------------------------------------------------------------ Client connecting to 192.168.2.20, UDP port 5001 Sending 1470 byte datagrams UDP buffer size: 160 KByte (default) ------------------------------------------------------------ [ 3] local 192.168.2.30 port 43497 connected with 192.168.2.20 port 5001 [ ID] Interval Transfer Bandwidth [ 3] 0.0-10.0 sec 107 MBytes 89.5 Mbits/sec [ 3] Sent 76110 datagrams [ 3] Server Report: [ 3] 0.0-10.0 sec 106 MBytes 88.8 Mbits/sec 0.069 ms 0/76109 (0.0%) [ 3] 0.0-10.0 sec 1 datagrams received out-of-order Remote nodes in network: 1 Node[0]: MAC ADDR: 70:ff:76:1c:0f:8d DANP Time Last Seen: RxA=0 RxB=0 root@am57xx-evm:/# cat /proc/prp0/lre-stats LRE statistics: Rx Offloaded: 1 lreTxA: 208128 lreTxB: 208128 lreTxC: 31305063 lreErrWrongLanA: 0 lreErrWrongLanB: 0 lreErrWrongLanC: 0 lreRxA: 0 lreRxB: 0 lreRxC: 208 lreErrorsA: 0 lreErrorsB: 0 lreErrorsC: 0 lreNodes: 1 lreProxyNodes: 0 lreUniqueRxA: 0 lreUniqueRxB: 0 lreUniqueRxC: 0 lreDuplicateRxA: 0 lreDuplicateRxB: 0 lreDuplicateRxC: 0 lreMultiRxA: 0 lreMultiRxB: 0 lreMultiRxC: 0 lreOwnRxA: 0 lreOwnRxB: 0hIjü-hOjXhQj˜hS}rü.(h­h®hX]hW]hU]hV]h[]uh]M h^hh_]rý.hhXKroot@am57xx-evm:~# ifconfig eth2 eth2 Link encap:Ethernet HWaddr 2A:DA:8C:50:1B:86 inet6 addr: fe80::28da:8cff:fe50:1b86%3068203800/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:40881 errors:0 dropped:10 overruns:0 frame:64 TX packets:81022 errors:0 dropped:3528075 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:2718950 (2.5 MiB) TX bytes:122601929 (116.9 MiB) root@am57xx-evm:~# /setup.sh prp 2A:DA:8C:50:1B:86 192.168.2.30 Setting up prp0 interface with MAC address 2A:DA:8C:50:1B:86 for slaves and IP address 192.168.2.30 [21684.048303] ti-pruss 4b280000.pruss: unconfigured system_events = 0x0000060000500000 host_intr = 0x00000115 [21684.058095] remoteproc6: stopped remote processor 4b2b4000.pru0 [21684.064152] net eth2: stopped [21684.118368] ti-pruss 4b280000.pruss: unconfigured system_events = 0x0060000000a00000 host_intr = 0x0000022a [21684.128160] remoteproc7: stopped remote processor 4b2b8000.pru1 [21684.134217] net eth3: stopped [21684.158347] remoteproc6: powering up 4b2b4000.pru0 [21684.164069] remoteproc6: Booting fw image ti-pruss/am57xx-pru0-prueth-fw.elf, size 4350 [21684.172524] ti-pruss 4b280000.pruss: configured system_events = 0x0000060000500000 intr_channels = 0x00000095 host_intr = 0x00000115 [21684.184563] remoteproc6: remote processor 4b2b4000.pru0 is now up [21684.191761] net eth2: started [21684.195184] IPv6: ADDRCONF(NETDEV_UP): eth2: link is not ready [21684.205638] remoteproc7: powering up 4b2b8000.pru1 [21684.210960] remoteproc7: Booting fw image ti-pruss/am57xx-pru1-prueth-fw.elf, size 4382 [21684.219252] ti-pruss 4b280000.pruss: configured system_events = 0x0060000000a00000 intr_channels = 0x0000012a host_intr = 0x0000022a [21684.231220] remoteproc7: remote processor 4b2b8000.pru1 is now up [21684.238235] net eth3: started [21684.241684] IPv6: ADDRCONF(NETDEV_UP): eth3: link is not ready [21684.339123] device eth2 entered promiscuous mode [21684.377962] device eth3 entered promiscuous mode [21684.425802] prp0: Slave A (eth2) is not up; please bring it up to get a fully working HSR network [21684.436772] IPv6: ADDRCONF(NETDEV_UP): prp0: link is not ready [21684.443615] IPv6: ADDRCONF(NETDEV_CHANGE): prp0: link becomes ready root@am57xx-evm:~# [21684.488601] IPv6: ADDRCONF(NETDEV_CHANGE): eth2: link becomes ready [21684.518615] IPv6: ADDRCONF(NETDEV_CHANGE): eth3: link becomes ready root@am57xx-evm:~# iperf -c 192.168.2.20 ------------------------------------------------------------ Client connecting to 192.168.2.20, TCP port 5001 TCP window size: 43.8 KByte (default) ------------------------------------------------------------ [ 3] local 192.168.2.30 port 38900 connected with 192.168.2.20 port 5001 [ ID] Interval Transfer Bandwidth [ 3] 0.0-10.0 sec 109 MBytes 91.5 Mbits/sec root@am57xx-evm:~# iperf -c 192.168.2.20 -u -b 88M ------------------------------------------------------------ Client connecting to 192.168.2.20, UDP port 5001 Sending 1470 byte datagrams UDP buffer size: 160 KByte (default) ------------------------------------------------------------ [ 3] local 192.168.2.30 port 43497 connected with 192.168.2.20 port 5001 [ ID] Interval Transfer Bandwidth [ 3] 0.0-10.0 sec 107 MBytes 89.5 Mbits/sec [ 3] Sent 76110 datagrams [ 3] Server Report: [ 3] 0.0-10.0 sec 106 MBytes 88.8 Mbits/sec 0.069 ms 0/76109 (0.0%) [ 3] 0.0-10.0 sec 1 datagrams received out-of-order Remote nodes in network: 1 Node[0]: MAC ADDR: 70:ff:76:1c:0f:8d DANP Time Last Seen: RxA=0 RxB=0 root@am57xx-evm:/# cat /proc/prp0/lre-stats LRE statistics: Rx Offloaded: 1 lreTxA: 208128 lreTxB: 208128 lreTxC: 31305063 lreErrWrongLanA: 0 lreErrWrongLanB: 0 lreErrWrongLanC: 0 lreRxA: 0 lreRxB: 0 lreRxC: 208 lreErrorsA: 0 lreErrorsB: 0 lreErrorsC: 0 lreNodes: 1 lreProxyNodes: 0 lreUniqueRxA: 0 lreUniqueRxB: 0 lreUniqueRxC: 0 lreDuplicateRxA: 0 lreDuplicateRxB: 0 lreDuplicateRxC: 0 lreMultiRxA: 0 lreMultiRxB: 0 lreMultiRxC: 0 lreOwnRxA: 0 lreOwnRxB: 0rþ.…�rÿ.}r/(hHUhIjú.ubaubcdocutils.nodes line_block r/)�r/}r/(hHUhIjü-hOjXhQU line_blockr/hS}r/(hU]hV]hW]hX]h[]uh]M% h^hh_]r/cdocutils.nodes line r/)�r/}r /(hHUUindentr /KhIj/hOjXhQh]hS}r /(hU]hV]hW]hX]h[]uh]Kh^hh_]ubaubeubeubhJ)�r /}r /(hHUhIjFhOjXhQhRhS}r/(hU]hV]hW]hX]r/Uperformance-test-and-logsr/ah[]r/hauh]M( h^hh_]r/(ha)�r/}r/(hHXPerformance Test and Logsr/hIj /hOjXhQhehS}r/(hU]hV]hW]hX]h[]uh]M( h^hh_]r/hhXPerformance Test and Logsr/…�r/}r/(hHj/hIj/ubaubh{)�r/}r/(hHXñBoot up two AM571x/572x EVM to configure PRU Ethernet in HSR or PRP mode as described at :ref:`PLSDK_HSR_PRP_Testing_Firmware_Offload` They are connected over eth2 and eth3 as described in :ref:`PLSDK_HSR_Testing` or :ref:`PLSDK_PTP_Testing`hIj /hOjXhQhƒhS}r/(hU]hV]hW]hX]h[]uh]M* h^hh_]r/(hhXYBoot up two AM571x/572x EVM to configure PRU Ethernet in HSR or PRP mode as described at r/…�r /}r!/(hHXYBoot up two AM571x/572x EVM to configure PRU Ethernet in HSR or PRP mode as described at hIj/ubjØ)�r"/}r#/(hHX-:ref:`PLSDK_HSR_PRP_Testing_Firmware_Offload`r$/hIj/hOjXhQjÜhS}r%/(UreftypeXrefjÞˆjßX&plsdk_hsr_prp_testing_firmware_offloadU refdomainXstdr&/hX]hW]U refexplicit‰hU]hV]h[]jájâuh]M* h_]r'/jä)�r(/}r)/(hHj$/hS}r*/(hU]hV]r+/(jéj&/Xstd-refr,/ehW]hX]h[]uhIj"/h_]r-/hhX&PLSDK_HSR_PRP_Testing_Firmware_Offloadr./…�r//}r0/(hHUhIj(/ubahQjïubaubhhX7 They are connected over eth2 and eth3 as described in r1/…�r2/}r3/(hHX7 They are connected over eth2 and eth3 as described in hIj/ubjØ)�r4/}r5/(hHX:ref:`PLSDK_HSR_Testing`r6/hIj/hOjXhQjÜhS}r7/(UreftypeXrefjÞˆjßXplsdk_hsr_testingU refdomainXstdr8/hX]hW]U refexplicit‰hU]hV]h[]jájâuh]M* h_]r9/jä)�r:/}r;/(hHj6/hS}r/ehW]hX]h[]uhIj4/h_]r?/hhXPLSDK_HSR_Testingr@/…�rA/}rB/(hHUhIj:/ubahQjïubaubhhX or rC/…�rD/}rE/(hHX or hIj/ubjØ)�rF/}rG/(hHX:ref:`PLSDK_PTP_Testing`rH/hIj/hOjXhQjÜhS}rI/(UreftypeXrefjÞˆjßXplsdk_ptp_testingU refdomainXstdrJ/hX]hW]U refexplicit‰hU]hV]h[]jájâuh]M* h_]rK/jä)�rL/}rM/(hHjH/hS}rN/(hU]hV]rO/(jéjJ/Xstd-refrP/ehW]hX]h[]uhIjF/h_]rQ/hhXPLSDK_PTP_TestingrR/…�rS/}rT/(hHUhIjL/ubahQjïubaubeubjI)�rU/}rV/(hHXUDPrW/hIj /hOjXhQjMhS}rX/(hX]rY/UudprZ/ahW]hU]hV]h[]r[/h&auh]Nh^hh_]r\/hhXUDPr]/…�r^/}r_/(hHjW/hIjU/ubaubh{)�r`/}ra/(hHX¨Sample iperf UDP test showing no packet loss for MTU sized packets. For HSR/PRP, there are 6 bytes of Tag effectively reducing pay load size to 1466 (1500 - 6 - 20 - 8)rb/hIj /hOjXhQhƒhS}rc/(hU]hV]hW]hX]h[]uh]M2 h^hh_]rd/hhX¨Sample iperf UDP test showing no packet loss for MTU sized packets. For HSR/PRP, there are 6 bytes of Tag effectively reducing pay load size to 1466 (1500 - 6 - 20 - 8)re/…�rf/}rg/(hHjb/hIj`/ubaubh{)�rh/}ri/(hHX Server Siderj/hIj /hOjXhQhƒhS}rk/(hU]hV]hW]hX]h[]uh]M6 h^hh_]rl/hhX Server Siderm/…�rn/}ro/(hHjj/hIjh/ubaubj•)�rp/}rq/(hHXroot@am57xx-evm:~# iperf -s -u ------------------------------------------------------------ Server listening on UDP port 5001 Receiving 1470 byte datagrams UDP buffer size: 160 KByte (default) ------------------------------------------------------------ [ 3] local 192.168.2.20 port 5001 connected with 192.168.2.30 port 34255 [ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams [ 3] 0.0-60.0 sec 630 MBytes 88.1 Mbits/sec 0.002 ms 0/450887 (0%) [ 3] 0.0-60.0 sec 1 datagrams received out-of-orderhIj /hOjXhQj˜hS}rr/(h­h®hX]hW]hU]hV]h[]uh]Mš h^hh_]rs/hhXroot@am57xx-evm:~# iperf -s -u ------------------------------------------------------------ Server listening on UDP port 5001 Receiving 1470 byte datagrams UDP buffer size: 160 KByte (default) ------------------------------------------------------------ [ 3] local 192.168.2.20 port 5001 connected with 192.168.2.30 port 34255 [ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams [ 3] 0.0-60.0 sec 630 MBytes 88.1 Mbits/sec 0.002 ms 0/450887 (0%) [ 3] 0.0-60.0 sec 1 datagrams received out-of-orderrt/…�ru/}rv/(hHUhIjp/ubaubh{)�rw/}rx/(hHX Client sidery/hIj /hOjXhQhƒhS}rz/(hU]hV]hW]hX]h[]uh]ME h^hh_]r{/hhX Client sider|/…�r}/}r~/(hHjy/hIjw/ubaubj•)�r/}r€/(hHX†root@am57xx-evm:~# iperf -c 192.168.2.20 -u -b88M -l1466 -t60 ------------------------------------------------------------ Client connecting to 192.168.2.20, UDP port 5001 Sending 1466 byte datagrams UDP buffer size: 160 KByte (default) ------------------------------------------------------------ [ 3] local 192.168.2.30 port 34255 connected with 192.168.2.20 port 5001 [ ID] Interval Transfer Bandwidth [ 3] 0.0-60.0 sec 630 MBytes 88.1 Mbits/sec [ 3] Sent 450888 datagrams [ 3] Server Report: [ 3] 0.0-60.0 sec 630 MBytes 88.1 Mbits/sec 0.002 ms 0/450887 (0%) [ 3] 0.0-60.0 sec 1 datagrams received out-of-orderhIj /hOjXhQj˜hS}r�/(h­h®hX]hW]hU]hV]h[]uh]M© h^hh_]r‚/hhX†root@am57xx-evm:~# iperf -c 192.168.2.20 -u -b88M -l1466 -t60 ------------------------------------------------------------ Client connecting to 192.168.2.20, UDP port 5001 Sending 1466 byte datagrams UDP buffer size: 160 KByte (default) ------------------------------------------------------------ [ 3] local 192.168.2.30 port 34255 connected with 192.168.2.20 port 5001 [ ID] Interval Transfer Bandwidth [ 3] 0.0-60.0 sec 630 MBytes 88.1 Mbits/sec [ 3] Sent 450888 datagrams [ 3] Server Report: [ 3] 0.0-60.0 sec 630 MBytes 88.1 Mbits/sec 0.002 ms 0/450887 (0%) [ 3] 0.0-60.0 sec 1 datagrams received out-of-orderrƒ/…�r„/}r…/(hHUhIj/ubaubh{)�r†/}r‡/(hHXn**NOTE:** When doing UDP test, user may observe out of order packets sometimes. This is normal as the driver doesn't use NAPI and packets may get queued to backlog queues of each CPU which may get delivered out of sequence to the iperf application. Out of order delivery of UDP packets are normal and kernel doesn't guarantee in sequence delivery of UDP packets to application. So iperf may show some packets lost during the test. User may use some of the tools available to migrate the rx irq threads and iperf server to same CPU, example CPU 0, to mitigate out of order issue and get a no loss iperf stats for udp tests.hIj /hOjXhQhƒhS}rˆ/(hU]hV]hW]hX]h[]uh]MW h^hh_]r‰/(hæ)�rŠ/}r‹/(hHX **NOTE:**hS}rŒ/(hU]hV]hW]hX]h[]uhIj†/h_]r�/hhXNOTE:rŽ/…�r�/}r�/(hHUhIjŠ/ubahQhîubhhXe When doing UDP test, user may observe out of order packets sometimes. This is normal as the driver doesn't use NAPI and packets may get queued to backlog queues of each CPU which may get delivered out of sequence to the iperf application. Out of order delivery of UDP packets are normal and kernel doesn't guarantee in sequence delivery of UDP packets to application. So iperf may show some packets lost during the test. User may use some of the tools available to migrate the rx irq threads and iperf server to same CPU, example CPU 0, to mitigate out of order issue and get a no loss iperf stats for udp tests.r‘/…�r’/}r“/(hHXe When doing UDP test, user may observe out of order packets sometimes. This is normal as the driver doesn't use NAPI and packets may get queued to backlog queues of each CPU which may get delivered out of sequence to the iperf application. Out of order delivery of UDP packets are normal and kernel doesn't guarantee in sequence delivery of UDP packets to application. So iperf may show some packets lost during the test. User may use some of the tools available to migrate the rx irq threads and iperf server to same CPU, example CPU 0, to mitigate out of order issue and get a no loss iperf stats for udp tests.hIj†/ubeubh{)�r”/}r•/(hHX‹For example, here is a snapshot of the test that shows packet lost during the test. The test also shows 106 datagram received out of order.r–/hIj /hOjXhQhƒhS}r—/(hU]hV]hW]hX]h[]uh]Ma h^hh_]r˜/hhX‹For example, here is a snapshot of the test that shows packet lost during the test. The test also shows 106 datagram received out of order.r™/…�rš/}r›/(hHj–/hIj”/ubaubj•)�rœ/}r�/(hHX(root@am57xx-evm:~# iperf -s -u ------------------------------------------------------------ Server listening on UDP port 5001 Receiving 1470 byte datagrams UDP buffer size: 160 KByte (default) ------------------------------------------------------------ [ 3] local 192.168.2.30 port 5001 connected with 192.168.2.20 port 41976 [ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams [ 3] 0.0-600.0 sec 6.15 GBytes 88.0 Mbits/sec 0.004 ms 5/4501411 (0.00011%) [ 3] 0.0-600.0 sec 106 datagrams received out-of-orderhIj /hOjXhQj˜hS}rž/(h­h®hX]hW]hU]hV]h[]uh]MÆ h^hh_]rŸ/hhX(root@am57xx-evm:~# iperf -s -u ------------------------------------------------------------ Server listening on UDP port 5001 Receiving 1470 byte datagrams UDP buffer size: 160 KByte (default) ------------------------------------------------------------ [ 3] local 192.168.2.30 port 5001 connected with 192.168.2.20 port 41976 [ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams [ 3] 0.0-600.0 sec 6.15 GBytes 88.0 Mbits/sec 0.004 ms 5/4501411 (0.00011%) [ 3] 0.0-600.0 sec 106 datagrams received out-of-orderr /…�r¡/}r¢/(hHUhIjœ/ubaubj/)�r£/}r¤/(hHUhIj /hOjXhQj/hS}r¥/(hU]hV]hW]hX]h[]uh]Mq h^hh_]r¦/(j/)�r§/}r¨/(hHUj /KhIj£/hOjXhQh]hS}r©/(hU]hV]hW]hX]h[]uh]Kh^hh_]ubj/)�rª/}r«/(hHXUHere is how to re-run the test by migrating the iperf server and irq threads to CPU 0r¬/j /KhIj£/hOjXhQh]hS}r­/(hU]hV]hW]hX]h[]uh]Ms h^hh_]r®/hhXUHere is how to re-run the test by migrating the iperf server and irq threads to CPU 0r¯/…�r°/}r±/(hHj¬/hIjª/ubaubeubh{)�r²/}r³/(hHXmRun the iperf -s -u & Do ps command and find the PID of the iperf and migrate the process to CPU 0 as followsr´/hIj /hOjXhQhƒhS}rµ/(hU]hV]hW]hX]h[]uh]Mu h^hh_]r¶/hhXmRun the iperf -s -u & Do ps command and find the PID of the iperf and migrate the process to CPU 0 as followsr·/…�r¸/}r¹/(hHj´/hIj²/ubaubj•)�rº/}r»/(hHX root@am57xx-evm:~# ps PID TTY TIME CMD 964 ttyS2 00:00:00 login 1063 ttyS2 00:00:00 sh 1135 ttyS2 00:00:00 iperf 1141 ttyS2 00:00:00 ps root@am57xx-evm:~# taskset -cp 0 1135 pid 1135's current affinity list: 0,1 pid 1135's new affinity list: 0hIj /hOjXhQj˜hS}r¼/(h­h®hX]hW]hU]hV]h[]uh]MÚ h^hh_]r½/hhX root@am57xx-evm:~# ps PID TTY TIME CMD 964 ttyS2 00:00:00 login 1063 ttyS2 00:00:00 sh 1135 ttyS2 00:00:00 iperf 1141 ttyS2 00:00:00 ps root@am57xx-evm:~# taskset -cp 0 1135 pid 1135's current affinity list: 0,1 pid 1135's new affinity list: 0r¾/…�r¿/}rÀ/(hHUhIjº/ubaubh{)�rÁ/}rÂ/(hHX4Now find the irq thread for eth2, eth3 devices usingrÃ/hIj /hOjXhQhƒhS}rÄ/(hU]hV]hW]hX]h[]uh]M„ h^hh_]rÅ/hhX4Now find the irq thread for eth2, eth3 devices usingrÆ/…�rÇ/}rÈ/(hHjÃ/hIjÁ/ubaubj•)�rÉ/}rÊ/(hHXUroot@am57xx-evm:~# ps -ef | grep "eth3" root 1464 2 0 06:01 ? 00:00:00 [irq/498-eth3] root 1495 1065 0 06:04 ttyS2 00:00:00 grep irq/498-eth3 root@am57xx-evm:~# ps -ef | grep "eth2" root 1462 2 0 06:01 ? 00:00:00 [irq/496-eth2] root 1497 1065 0 06:04 ttyS2 00:00:00 grep irq/496-eth2hIj /hOjXhQj˜hS}rË/(h­h®hX]hW]hU]hV]h[]uh]Mè h^hh_]rÌ/hhXUroot@am57xx-evm:~# ps -ef | grep "eth3" root 1464 2 0 06:01 ? 00:00:00 [irq/498-eth3] root 1495 1065 0 06:04 ttyS2 00:00:00 grep irq/498-eth3 root@am57xx-evm:~# ps -ef | grep "eth2" root 1462 2 0 06:01 ? 00:00:00 [irq/496-eth2] root 1497 1065 0 06:04 ttyS2 00:00:00 grep irq/496-eth2rÍ/…�rÎ/}rÏ/(hHUhIjÉ/ubaubh{)�rÐ/}rÑ/(hHX–In the above example 1462 is the process id of irq/496-eth2 thread and 1464 is the process ID of irq/498-eth3 . Do following to migrate them to CPU 0.rÒ/hIj /hOjXhQhƒhS}rÓ/(hU]hV]hW]hX]h[]uh]M� h^hh_]rÔ/hhX–In the above example 1462 is the process id of irq/496-eth2 thread and 1464 is the process ID of irq/498-eth3 . Do following to migrate them to CPU 0.rÕ/…�rÖ/}r×/(hHjÒ/hIjÐ/ubaubj•)�rØ/}rÙ/(hHXýroot@am57xx-evm:~# taskset -cp 0 1464 pid 1464's current affinity list: 0,1 pid 1464's new affinity list: 0 root@am57xx-evm:~# taskset -cp 0 1462 pid 1462's current affinity list: 0,1 pid 1462's new affinity list: 0 root@am57xx-evm:~# root@am57xx-evm:~#hIj /hOjXhQj˜hS}rÚ/(h­h®hX]hW]hU]hV]h[]uh]Mõ h^hh_]rÛ/hhXýroot@am57xx-evm:~# taskset -cp 0 1464 pid 1464's current affinity list: 0,1 pid 1464's new affinity list: 0 root@am57xx-evm:~# taskset -cp 0 1462 pid 1462's current affinity list: 0,1 pid 1462's new affinity list: 0 root@am57xx-evm:~# root@am57xx-evm:~#rÜ/…�rÝ/}rÞ/(hHUhIjØ/ubaubh{)�rß/}rà/(hHXkNow start iperf client on the other side. The server side log below with these tuning shows no packet loss.rá/hIj /hOjXhQhƒhS}râ/(hU]hV]hW]hX]h[]uh]Mž h^hh_]rã/hhXkNow start iperf client on the other side. The server side log below with these tuning shows no packet loss.rä/…�rå/}ræ/(hHjá/hIjß/ubaubj•)�rç/}rè/(hHXÐ[ 4] local 192.168.2.30 port 5001 connected with 192.168.2.20 port 36415 [ 4] 0.0-600.0 sec 6.15 GBytes 88.0 Mbits/sec 0.007 ms 0/4501355 (0%) [ 4] 0.0-600.0 sec 1 datagrams received out-of-orderhIj /hOjXhQj˜hS}ré/(h­h®hX]hW]hU]hV]h[]uh]M h^hh_]rê/hhXÐ[ 4] local 192.168.2.30 port 5001 connected with 192.168.2.20 port 36415 [ 4] 0.0-600.0 sec 6.15 GBytes 88.0 Mbits/sec 0.007 ms 0/4501355 (0%) [ 4] 0.0-600.0 sec 1 datagrams received out-of-orderrë/…�rì/}rí/(hHUhIjç/ubaubj/)�rî/}rï/(hHUhIj /hOjXhQj/hS}rð/(hU]hV]hW]hX]h[]uh]M§ h^hh_]rñ/j/)�rò/}ró/(hHUj /KhIjî/hOjXhQh]hS}rô/(hU]hV]hW]hX]h[]uh]Kh^hh_]ubaubjV)�rõ/}rö/(hHUhIj /hOjXhQjYhS}r÷/(hU]hV]hW]hX]h[]uh]Nh^hh_]rø/j\)�rù/}rú/(hHUhS}rû/(hX]hW]hU]hV]h[]UcolsKuhIjõ/h_]rü/(ja)�rý/}rþ/(hHUhS}rÿ/(hX]hW]hU]hV]h[]UcolwidthKuhIjù/h_]hQjeubja)�r0}r0(hHUhS}r0(hX]hW]hU]hV]h[]UcolwidthK uhIjù/h_]hQjeubja)�r0}r0(hHUhS}r0(hX]hW]hU]hV]h[]UcolwidthK uhIjù/h_]hQjeubja)�r0}r0(hHUhS}r0(hX]hW]hU]hV]h[]UcolwidthK uhIjù/h_]hQjeubja)�r 0}r 0(hHUhS}r 0(hX]hW]hU]hV]h[]UcolwidthK uhIjù/h_]hQjeubjo)�r 0}r 0(hHUhS}r0(hU]hV]hW]hX]h[]uhIjù/h_]r0jt)�r0}r0(hHUhS}r0(hU]hV]hW]hX]h[]uhIj 0h_]r0(jy)�r0}r0(hHUhS}r0(hU]hV]hW]hX]h[]uhIj0h_]r0h{)�r0}r0(hHX Packet Sizer0hIj0hOjXhQhƒhS}r0(hU]hV]hW]hX]h[]uh]Mª h_]r0hhX Packet Sizer0…�r0}r0(hHj0hIj0ubaubahQj†ubjy)�r 0}r!0(hHUhS}r"0(hX]UmorecolsKhW]hU]hV]h[]uhIj0h_]r#0h{)�r$0}r%0(hHX$Tput with no packet loss (Mbits/sec)r&0hIj 0hOjXhQhƒhS}r'0(hU]hV]hW]hX]h[]uh]Mª h_]r(0hhX$Tput with no packet loss (Mbits/sec)r)0…�r*0}r+0(hHj&0hIj$0ubaubahQj†ubehQj³ubahQj´ubjµ)�r,0}r-0(hHUhS}r.0(hU]hV]hW]hX]h[]uhIjù/h_]r/0(jt)�r00}r10(hHUhS}r20(hU]hV]hW]hX]h[]uhIj,0h_]r30(jy)�r40}r50(hHUhS}r60(hU]hV]hW]hX]h[]uhIj00h_]hQj†ubjy)�r70}r80(hHUhS}r90(hU]hV]hW]hX]h[]uhIj00h_]r:0h{)�r;0}r<0(hHXAM335xr=0hIj70hOjXhQhƒhS}r>0(hU]hV]hW]hX]h[]uh]M¬ h_]r?0hhXAM335xr@0…�rA0}rB0(hHj=0hIj;0ubaubahQj†ubjy)�rC0}rD0(hHUhS}rE0(hU]hV]hW]hX]h[]uhIj00h_]rF0h{)�rG0}rH0(hHXAM437xrI0hIjC0hOjXhQhƒhS}rJ0(hU]hV]hW]hX]h[]uh]M¬ h_]rK0hhXAM437xrL0…�rM0}rN0(hHjI0hIjG0ubaubahQj†ubjy)�rO0}rP0(hHUhS}rQ0(hU]hV]hW]hX]h[]uhIj00h_]rR0h{)�rS0}rT0(hHXAM57xxrU0hIjO0hOjXhQhƒhS}rV0(hU]hV]hW]hX]h[]uh]M¬ h_]rW0hhXAM57xxrX0…�rY0}rZ0(hHjU0hIjS0ubaubahQj†ubjy)�r[0}r\0(hHUhS}r]0(hU]hV]hW]hX]h[]uhIj00h_]r^0h{)�r_0}r`0(hHXK2Gra0hIj[0hOjXhQhƒhS}rb0(hU]hV]hW]hX]h[]uh]M¬ h_]rc0hhXK2Grd0…�re0}rf0(hHja0hIj_0ubaubahQj†ubehQj³ubjt)�rg0}rh0(hHUhS}ri0(hU]hV]hW]hX]h[]uhIj,0h_]rj0(jy)�rk0}rl0(hHUhS}rm0(hU]hV]hW]hX]h[]uhIjg0h_]rn0h{)�ro0}rp0(hHX1472rq0hIjk0hOjXhQhƒhS}rr0(hU]hV]hW]hX]h[]uh]M® h_]rs0hhX1472rt0…�ru0}rv0(hHjq0hIjo0ubaubahQj†ubjy)�rw0}rx0(hHUhS}ry0(hU]hV]hW]hX]h[]uhIjg0h_]rz0h{)�r{0}r|0(hHX30r}0hIjw0hOjXhQhƒhS}r~0(hU]hV]hW]hX]h[]uh]M® h_]r0hhX30r€0…�r�0}r‚0(hHj}0hIj{0ubaubahQj†ubjy)�rƒ0}r„0(hHUhS}r…0(hU]hV]hW]hX]h[]uhIjg0h_]r†0h{)�r‡0}rˆ0(hHX64r‰0hIjƒ0hOjXhQhƒhS}rŠ0(hU]hV]hW]hX]h[]uh]M® h_]r‹0hhX64rŒ0…�r�0}rŽ0(hHj‰0hIj‡0ubaubahQj†ubjy)�r�0}r�0(hHUhS}r‘0(hU]hV]hW]hX]h[]uhIjg0h_]r’0h{)�r“0}r”0(hHX88r•0hIj�0hOjXhQhƒhS}r–0(hU]hV]hW]hX]h[]uh]M® h_]r—0hhX88r˜0…�r™0}rš0(hHj•0hIj“0ubaubahQj†ubjy)�r›0}rœ0(hHUhS}r�0(hU]hV]hW]hX]h[]uhIjg0h_]rž0h{)�rŸ0}r 0(hHX30r¡0hIj›0hOjXhQhƒhS}r¢0(hU]hV]hW]hX]h[]uh]M® h_]r£0hhX30r¤0…�r¥0}r¦0(hHj¡0hIjŸ0ubaubahQj†ubehQj³ubjt)�r§0}r¨0(hHUhS}r©0(hU]hV]hW]hX]h[]uhIj,0h_]rª0(jy)�r«0}r¬0(hHUhS}r­0(hU]hV]hW]hX]h[]uhIj§0h_]r®0h{)�r¯0}r°0(hHX1024r±0hIj«0hOjXhQhƒhS}r²0(hU]hV]hW]hX]h[]uh]M° h_]r³0hhX1024r´0…�rµ0}r¶0(hHj±0hIj¯0ubaubahQj†ubjy)�r·0}r¸0(hHUhS}r¹0(hU]hV]hW]hX]h[]uhIj§0h_]rº0h{)�r»0}r¼0(hHX29r½0hIj·0hOjXhQhƒhS}r¾0(hU]hV]hW]hX]h[]uh]M° h_]r¿0hhX29rÀ0…�rÁ0}rÂ0(hHj½0hIj»0ubaubahQj†ubjy)�rÃ0}rÄ0(hHUhS}rÅ0(hU]hV]hW]hX]h[]uhIj§0h_]rÆ0h{)�rÇ0}rÈ0(hHX52rÉ0hIjÃ0hOjXhQhƒhS}rÊ0(hU]hV]hW]hX]h[]uh]M° h_]rË0hhX52rÌ0…�rÍ0}rÎ0(hHjÉ0hIjÇ0ubaubahQj†ubjy)�rÏ0}rÐ0(hHUhS}rÑ0(hU]hV]hW]hX]h[]uhIj§0h_]rÒ0h{)�rÓ0}rÔ0(hHX86rÕ0hIjÏ0hOjXhQhƒhS}rÖ0(hU]hV]hW]hX]h[]uh]M° h_]r×0hhX86rØ0…�rÙ0}rÚ0(hHjÕ0hIjÓ0ubaubahQj†ubjy)�rÛ0}rÜ0(hHUhS}rÝ0(hU]hV]hW]hX]h[]uhIj§0h_]rÞ0h{)�rß0}rà0(hHX26rá0hIjÛ0hOjXhQhƒhS}râ0(hU]hV]hW]hX]h[]uh]M° h_]rã0hhX26rä0…�rå0}ræ0(hHjá0hIjß0ubaubahQj†ubehQj³ubjt)�rç0}rè0(hHUhS}ré0(hU]hV]hW]hX]h[]uhIj,0h_]rê0(jy)�rë0}rì0(hHUhS}rí0(hU]hV]hW]hX]h[]uhIjç0h_]rî0h{)�rï0}rð0(hHX512rñ0hIjë0hOjXhQhƒhS}rò0(hU]hV]hW]hX]h[]uh]M² h_]ró0hhX512rô0…�rõ0}rö0(hHjñ0hIjï0ubaubahQj†ubjy)�r÷0}rø0(hHUhS}rù0(hU]hV]hW]hX]h[]uhIjç0h_]rú0h{)�rû0}rü0(hHX18rý0hIj÷0hOjXhQhƒhS}rþ0(hU]hV]hW]hX]h[]uh]M² h_]rÿ0hhX18r1…�r1}r1(hHjý0hIjû0ubaubahQj†ubjy)�r1}r1(hHUhS}r1(hU]hV]hW]hX]h[]uhIjç0h_]r1h{)�r1}r1(hHX36r 1hIj1hOjXhQhƒhS}r 1(hU]hV]hW]hX]h[]uh]M² h_]r 1hhX36r 1…�r 1}r1(hHj 1hIj1ubaubahQj†ubjy)�r1}r1(hHUhS}r1(hU]hV]hW]hX]h[]uhIjç0h_]r1h{)�r1}r1(hHX52r1hIj1hOjXhQhƒhS}r1(hU]hV]hW]hX]h[]uh]M² h_]r1hhX52r1…�r1}r1(hHj1hIj1ubaubahQj†ubjy)�r1}r1(hHUhS}r1(hU]hV]hW]hX]h[]uhIjç0h_]r1h{)�r1}r 1(hHX16r!1hIj1hOjXhQhƒhS}r"1(hU]hV]hW]hX]h[]uh]M² h_]r#1hhX16r$1…�r%1}r&1(hHj!1hIj1ubaubahQj†ubehQj³ubjt)�r'1}r(1(hHUhS}r)1(hU]hV]hW]hX]h[]uhIj,0h_]r*1(jy)�r+1}r,1(hHUhS}r-1(hU]hV]hW]hX]h[]uhIj'1h_]r.1h{)�r/1}r01(hHX256r11hIj+1hOjXhQhƒhS}r21(hU]hV]hW]hX]h[]uh]M´ h_]r31hhX256r41…�r51}r61(hHj11hIj/1ubaubahQj†ubjy)�r71}r81(hHUhS}r91(hU]hV]hW]hX]h[]uhIj'1h_]r:1h{)�r;1}r<1(hHX11r=1hIj71hOjXhQhƒhS}r>1(hU]hV]hW]hX]h[]uh]M´ h_]r?1hhX11r@1…�rA1}rB1(hHj=1hIj;1ubaubahQj†ubjy)�rC1}rD1(hHUhS}rE1(hU]hV]hW]hX]h[]uhIj'1h_]rF1h{)�rG1}rH1(hHX22rI1hIjC1hOjXhQhƒhS}rJ1(hU]hV]hW]hX]h[]uh]M´ h_]rK1hhX22rL1…�rM1}rN1(hHjI1hIjG1ubaubahQj†ubjy)�rO1}rP1(hHUhS}rQ1(hU]hV]hW]hX]h[]uhIj'1h_]rR1h{)�rS1}rT1(hHX25rU1hIjO1hOjXhQhƒhS}rV1(hU]hV]hW]hX]h[]uh]M´ h_]rW1hhX25rX1…�rY1}rZ1(hHjU1hIjS1ubaubahQj†ubjy)�r[1}r\1(hHUhS}r]1(hU]hV]hW]hX]h[]uhIj'1h_]r^1h{)�r_1}r`1(hHX10ra1hIj[1hOjXhQhƒhS}rb1(hU]hV]hW]hX]h[]uh]M´ h_]rc1hhX10rd1…�re1}rf1(hHja1hIj_1ubaubahQj†ubehQj³ubehQj,ubehQj-ubaubh{)�rg1}rh1(hHXTable: UDP Performance for HSRri1hIj /hOjXhQhƒhS}rj1(hU]hV]hW]hX]h[]uh]M· h^hh_]rk1hhXTable: UDP Performance for HSRrl1…�rm1}rn1(hHji1hIjg1ubaubjV)�ro1}rp1(hHUhIj /hOjXhQjYhS}rq1(hU]hV]hW]hX]h[]uh]Nh^hh_]rr1j\)�rs1}rt1(hHUhS}ru1(hX]hW]hU]hV]h[]UcolsKuhIjo1h_]rv1(ja)�rw1}rx1(hHUhS}ry1(hX]hW]hU]hV]h[]UcolwidthKuhIjs1h_]hQjeubja)�rz1}r{1(hHUhS}r|1(hX]hW]hU]hV]h[]UcolwidthK uhIjs1h_]hQjeubja)�r}1}r~1(hHUhS}r1(hX]hW]hU]hV]h[]UcolwidthK uhIjs1h_]hQjeubja)�r€1}r�1(hHUhS}r‚1(hX]hW]hU]hV]h[]UcolwidthK uhIjs1h_]hQjeubja)�rƒ1}r„1(hHUhS}r…1(hX]hW]hU]hV]h[]UcolwidthK uhIjs1h_]hQjeubjo)�r†1}r‡1(hHUhS}rˆ1(hU]hV]hW]hX]h[]uhIjs1h_]r‰1jt)�rŠ1}r‹1(hHUhS}rŒ1(hU]hV]hW]hX]h[]uhIj†1h_]r�1(jy)�rŽ1}r�1(hHUhS}r�1(hU]hV]hW]hX]h[]uhIjŠ1h_]r‘1h{)�r’1}r“1(hHX Packet Sizer”1hIjŽ1hOjXhQhƒhS}r•1(hU]hV]hW]hX]h[]uh]Mº h_]r–1hhX Packet Sizer—1…�r˜1}r™1(hHj”1hIj’1ubaubahQj†ubjy)�rš1}r›1(hHUhS}rœ1(hX]UmorecolsKhW]hU]hV]h[]uhIjŠ1h_]r�1h{)�rž1}rŸ1(hHX$Tput with no packet loss (Mbits/sec)r 1hIjš1hOjXhQhƒhS}r¡1(hU]hV]hW]hX]h[]uh]Mº h_]r¢1hhX$Tput with no packet loss (Mbits/sec)r£1…�r¤1}r¥1(hHj 1hIjž1ubaubahQj†ubehQj³ubahQj´ubjµ)�r¦1}r§1(hHUhS}r¨1(hU]hV]hW]hX]h[]uhIjs1h_]r©1(jt)�rª1}r«1(hHUhS}r¬1(hU]hV]hW]hX]h[]uhIj¦1h_]r­1(jy)�r®1}r¯1(hHUhS}r°1(hU]hV]hW]hX]h[]uhIjª1h_]hQj†ubjy)�r±1}r²1(hHUhS}r³1(hU]hV]hW]hX]h[]uhIjª1h_]r´1h{)�rµ1}r¶1(hHXAM335xr·1hIj±1hOjXhQhƒhS}r¸1(hU]hV]hW]hX]h[]uh]M¼ h_]r¹1hhXAM335xrº1…�r»1}r¼1(hHj·1hIjµ1ubaubahQj†ubjy)�r½1}r¾1(hHUhS}r¿1(hU]hV]hW]hX]h[]uhIjª1h_]rÀ1h{)�rÁ1}rÂ1(hHXAM437xrÃ1hIj½1hOjXhQhƒhS}rÄ1(hU]hV]hW]hX]h[]uh]M¼ h_]rÅ1hhXAM437xrÆ1…�rÇ1}rÈ1(hHjÃ1hIjÁ1ubaubahQj†ubjy)�rÉ1}rÊ1(hHUhS}rË1(hU]hV]hW]hX]h[]uhIjª1h_]rÌ1h{)�rÍ1}rÎ1(hHXAM57xxrÏ1hIjÉ1hOjXhQhƒhS}rÐ1(hU]hV]hW]hX]h[]uh]M¼ h_]rÑ1hhXAM57xxrÒ1…�rÓ1}rÔ1(hHjÏ1hIjÍ1ubaubahQj†ubjy)�rÕ1}rÖ1(hHUhS}r×1(hU]hV]hW]hX]h[]uhIjª1h_]rØ1h{)�rÙ1}rÚ1(hHXK2GrÛ1hIjÕ1hOjXhQhƒhS}rÜ1(hU]hV]hW]hX]h[]uh]M¼ h_]rÝ1hhXK2GrÞ1…�rß1}rà1(hHjÛ1hIjÙ1ubaubahQj†ubehQj³ubjt)�rá1}râ1(hHUhS}rã1(hU]hV]hW]hX]h[]uhIj¦1h_]rä1(jy)�rå1}ræ1(hHUhS}rç1(hU]hV]hW]hX]h[]uhIjá1h_]rè1h{)�ré1}rê1(hHX1472rë1hIjå1hOjXhQhƒhS}rì1(hU]hV]hW]hX]h[]uh]M¾ h_]rí1hhX1472rî1…�rï1}rð1(hHjë1hIjé1ubaubahQj†ubjy)�rñ1}rò1(hHUhS}ró1(hU]hV]hW]hX]h[]uhIjá1h_]rô1h{)�rõ1}rö1(hHX30r÷1hIjñ1hOjXhQhƒhS}rø1(hU]hV]hW]hX]h[]uh]M¾ h_]rù1hhX30rú1…�rû1}rü1(hHj÷1hIjõ1ubaubahQj†ubjy)�rý1}rþ1(hHUhS}rÿ1(hU]hV]hW]hX]h[]uhIjá1h_]r2h{)�r2}r2(hHX64r2hIjý1hOjXhQhƒhS}r2(hU]hV]hW]hX]h[]uh]M¾ h_]r2hhX64r2…�r2}r2(hHj2hIj2ubaubahQj†ubjy)�r 2}r 2(hHUhS}r 2(hU]hV]hW]hX]h[]uhIjá1h_]r 2h{)�r 2}r2(hHX88r2hIj 2hOjXhQhƒhS}r2(hU]hV]hW]hX]h[]uh]M¾ h_]r2hhX88r2…�r2}r2(hHj2hIj 2ubaubahQj†ubjy)�r2}r2(hHUhS}r2(hU]hV]hW]hX]h[]uhIjá1h_]r2h{)�r2}r2(hHX30r2hIj2hOjXhQhƒhS}r2(hU]hV]hW]hX]h[]uh]M¾ h_]r2hhX30r2…�r2}r 2(hHj2hIj2ubaubahQj†ubehQj³ubjt)�r!2}r"2(hHUhS}r#2(hU]hV]hW]hX]h[]uhIj¦1h_]r$2(jy)�r%2}r&2(hHUhS}r'2(hU]hV]hW]hX]h[]uhIj!2h_]r(2h{)�r)2}r*2(hHX1024r+2hIj%2hOjXhQhƒhS}r,2(hU]hV]hW]hX]h[]uh]MÀ h_]r-2hhX1024r.2…�r/2}r02(hHj+2hIj)2ubaubahQj†ubjy)�r12}r22(hHUhS}r32(hU]hV]hW]hX]h[]uhIj!2h_]r42h{)�r52}r62(hHX27r72hIj12hOjXhQhƒhS}r82(hU]hV]hW]hX]h[]uh]MÀ h_]r92hhX27r:2…�r;2}r<2(hHj72hIj52ubaubahQj†ubjy)�r=2}r>2(hHUhS}r?2(hU]hV]hW]hX]h[]uhIj!2h_]r@2h{)�rA2}rB2(hHX52rC2hIj=2hOjXhQhƒhS}rD2(hU]hV]hW]hX]h[]uh]MÀ h_]rE2hhX52rF2…�rG2}rH2(hHjC2hIjA2ubaubahQj†ubjy)�rI2}rJ2(hHUhS}rK2(hU]hV]hW]hX]h[]uhIj!2h_]rL2h{)�rM2}rN2(hHX88rO2hIjI2hOjXhQhƒhS}rP2(hU]hV]hW]hX]h[]uh]MÀ h_]rQ2hhX88rR2…�rS2}rT2(hHjO2hIjM2ubaubahQj†ubjy)�rU2}rV2(hHUhS}rW2(hU]hV]hW]hX]h[]uhIj!2h_]rX2h{)�rY2}rZ2(hHX26r[2hIjU2hOjXhQhƒhS}r\2(hU]hV]hW]hX]h[]uh]MÀ h_]r]2hhX26r^2…�r_2}r`2(hHj[2hIjY2ubaubahQj†ubehQj³ubjt)�ra2}rb2(hHUhS}rc2(hU]hV]hW]hX]h[]uhIj¦1h_]rd2(jy)�re2}rf2(hHUhS}rg2(hU]hV]hW]hX]h[]uhIja2h_]rh2h{)�ri2}rj2(hHX512rk2hIje2hOjXhQhƒhS}rl2(hU]hV]hW]hX]h[]uh]M h_]rm2hhX512rn2…�ro2}rp2(hHjk2hIji2ubaubahQj†ubjy)�rq2}rr2(hHUhS}rs2(hU]hV]hW]hX]h[]uhIja2h_]rt2h{)�ru2}rv2(hHX19rw2hIjq2hOjXhQhƒhS}rx2(hU]hV]hW]hX]h[]uh]M h_]ry2hhX19rz2…�r{2}r|2(hHjw2hIju2ubaubahQj†ubjy)�r}2}r~2(hHUhS}r2(hU]hV]hW]hX]h[]uhIja2h_]r€2h{)�r�2}r‚2(hHX34rƒ2hIj}2hOjXhQhƒhS}r„2(hU]hV]hW]hX]h[]uh]M h_]r…2hhX34r†2…�r‡2}rˆ2(hHjƒ2hIj�2ubaubahQj†ubjy)�r‰2}rŠ2(hHUhS}r‹2(hU]hV]hW]hX]h[]uhIja2h_]rŒ2h{)�r�2}rŽ2(hHX46r�2hIj‰2hOjXhQhƒhS}r�2(hU]hV]hW]hX]h[]uh]M h_]r‘2hhX46r’2…�r“2}r”2(hHj�2hIj�2ubaubahQj†ubjy)�r•2}r–2(hHUhS}r—2(hU]hV]hW]hX]h[]uhIja2h_]r˜2h{)�r™2}rš2(hHX15r›2hIj•2hOjXhQhƒhS}rœ2(hU]hV]hW]hX]h[]uh]M h_]r�2hhX15rž2…�rŸ2}r 2(hHj›2hIj™2ubaubahQj†ubehQj³ubjt)�r¡2}r¢2(hHUhS}r£2(hU]hV]hW]hX]h[]uhIj¦1h_]r¤2(jy)�r¥2}r¦2(hHUhS}r§2(hU]hV]hW]hX]h[]uhIj¡2h_]r¨2h{)�r©2}rª2(hHX256r«2hIj¥2hOjXhQhƒhS}r¬2(hU]hV]hW]hX]h[]uh]MÄ h_]r­2hhX256r®2…�r¯2}r°2(hHj«2hIj©2ubaubahQj†ubjy)�r±2}r²2(hHUhS}r³2(hU]hV]hW]hX]h[]uhIj¡2h_]r´2h{)�rµ2}r¶2(hHX11r·2hIj±2hOjXhQhƒhS}r¸2(hU]hV]hW]hX]h[]uh]MÄ h_]r¹2hhX11rº2…�r»2}r¼2(hHj·2hIjµ2ubaubahQj†ubjy)�r½2}r¾2(hHUhS}r¿2(hU]hV]hW]hX]h[]uhIj¡2h_]rÀ2h{)�rÁ2}rÂ2(hHX22rÃ2hIj½2hOjXhQhƒhS}rÄ2(hU]hV]hW]hX]h[]uh]MÄ h_]rÅ2hhX22rÆ2…�rÇ2}rÈ2(hHjÃ2hIjÁ2ubaubahQj†ubjy)�rÉ2}rÊ2(hHUhS}rË2(hU]hV]hW]hX]h[]uhIj¡2h_]rÌ2h{)�rÍ2}rÎ2(hHX28rÏ2hIjÉ2hOjXhQhƒhS}rÐ2(hU]hV]hW]hX]h[]uh]MÄ h_]rÑ2hhX28rÒ2…�rÓ2}rÔ2(hHjÏ2hIjÍ2ubaubahQj†ubjy)�rÕ2}rÖ2(hHUhS}r×2(hU]hV]hW]hX]h[]uhIj¡2h_]rØ2h{)�rÙ2}rÚ2(hHX9hIjÕ2hOjXhQhƒhS}rÛ2(hU]hV]hW]hX]h[]uh]MÄ h_]rÜ2hhX9…�rÝ2}rÞ2(hHX9hIjÙ2ubaubahQj†ubehQj³ubehQj,ubehQj-ubaubh{)�rß2}rà2(hHXTable: UDP Performance for PRPrá2hIj /hOjXhQhƒhS}râ2(hU]hV]hW]hX]h[]uh]MÇ h^hh_]rã2hhXTable: UDP Performance for PRPrä2…�rå2}ræ2(hHjá2hIjß2ubaubj/)�rç2}rè2(hHUhIj /hOjXhQj/hS}ré2(hU]hV]hW]hX]h[]uh]MÉ h^hh_]rê2j/)�rë2}rì2(hHUj /KhIjç2hOjXhQh]hS}rí2(hU]hV]hW]hX]h[]uh]Kh^hh_]ubaubh{)�rî2}rï2(hHX-**NOTE-1:**\ Test ran for 1 minute with single direction traffic (Client to Server). Both ports were individually disconnected and then reconnected during the test. Reduced the traffic from 88Mbits/sec until there is no out of order or lost packets in the iperf stats i.e. iperf command client side ::hIj /hOjXhQhƒhS}rð2(hU]hV]hW]hX]h[]uh]MË h^hh_]rñ2(hæ)�rò2}ró2(hHX **NOTE-1:**hS}rô2(hU]hV]hW]hX]h[]uhIjî2h_]rõ2hhXNOTE-1:rö2…�r÷2}rø2(hHUhIjò2ubahQhîubhhXTest ran for 1 minute with single direction traffic (Client to Server). Both ports were individually disconnected and then reconnected during the test. Reduced the traffic from 88Mbits/sec until there is no out of order or lost packets in the iperf stats i.e. iperf command client siderù2…�rú2}rû2(hHX\ Test ran for 1 minute with single direction traffic (Client to Server). Both ports were individually disconnected and then reconnected during the test. Reduced the traffic from 88Mbits/sec until there is no out of order or lost packets in the iperf stats i.e. iperf command client sidehIjî2ubeubj•)�rü2}rý2(hHX+iperf3 -c -u -l1472 -bM -t60 -i5hIj /hOjXhQj˜hS}rþ2(h­h®hX]hW]hU]hV]h[]uh]M1 h^hh_]rÿ2hhX+iperf3 -c -u -l1472 -bM -t60 -i5r3…�r3}r3(hHUhIjü2ubaubjI)�r3}r3(hHXTCPr3hIj /hOjXhQjMhS}r3(hX]r3Utcpr3ahW]hU]hV]h[]r 3h auh]Nh^hh_]r 3hhXTCPr 3…�r 3}r 3(hHj3hIj3ubaubjI)�r3}r3(hHXHSRr3hIj /hOjXhQjMhS}r3(hX]r3Uhsrr3ahW]hU]hV]h[]r3h,auh]Nh^hh_]r3hhXHSRr3…�r3}r3(hHj3hIj3ubaubh{)�r3}r3(hHX Server sider3hIj /hOjXhQhƒhS}r3(hU]hV]hW]hX]h[]uh]MÙ h^hh_]r3hhX Server sider3…�r3}r 3(hHj3hIj3ubaubj•)�r!3}r"3(hHX„root@am57xx-evm:~# iperf -s ------------------------------------------------------------ Server listening on TCP port 5001 TCP window size: 85.3 KByte (default) ------------------------------------------------------------ [ 4] local 192.168.2.20 port 5001 connected with 192.168.2.30 port 54148 [ ID] Interval Transfer Bandwidth [ 4] 0.0-60.0 sec 663 MBytes 92.7 Mbits/sechIj /hOjXhQj˜hS}r#3(h­h®hX]hW]hU]hV]h[]uh]M= h^hh_]r$3hhX„root@am57xx-evm:~# iperf -s ------------------------------------------------------------ Server listening on TCP port 5001 TCP window size: 85.3 KByte (default) ------------------------------------------------------------ [ 4] local 192.168.2.20 port 5001 connected with 192.168.2.30 port 54148 [ ID] Interval Transfer Bandwidth [ 4] 0.0-60.0 sec 663 MBytes 92.7 Mbits/secr%3…�r&3}r'3(hHUhIj!3ubaubh{)�r(3}r)3(hHX Client sider*3hIj /hOjXhQhƒhS}r+3(hU]hV]hW]hX]h[]uh]Mæ h^hh_]r,3hhX Client sider-3…�r.3}r/3(hHj*3hIj(3ubaubj•)�r03}r13(hHX¦root@am57xx-evm:~# iperf -c 192.168.2.20 -t60 ------------------------------------------------------------ Client connecting to 192.168.2.20, TCP port 5001 TCP window size: 43.8 KByte (default) ------------------------------------------------------------ [ 3] local 192.168.2.30 port 54148 connected with 192.168.2.20 port 5001 [ ID] Interval Transfer Bandwidth [ 3] 0.0-60.0 sec 663 MBytes 92.7 Mbits/sechIj /hOjXhQj˜hS}r23(h­h®hX]hW]hU]hV]h[]uh]MJ h^hh_]r33hhX¦root@am57xx-evm:~# iperf -c 192.168.2.20 -t60 ------------------------------------------------------------ Client connecting to 192.168.2.20, TCP port 5001 TCP window size: 43.8 KByte (default) ------------------------------------------------------------ [ 3] local 192.168.2.30 port 54148 connected with 192.168.2.20 port 5001 [ ID] Interval Transfer Bandwidth [ 3] 0.0-60.0 sec 663 MBytes 92.7 Mbits/secr43…�r53}r63(hHUhIj03ubaubjI)�r73}r83(hHXPRPr93hIj /hOjXhQjMhS}r:3(hX]r;3Uprpr<3ahW]hU]hV]h[]r=3hauh]Nh^hh_]r>3hhXPRPr?3…�r@3}rA3(hHj93hIj73ubaubh{)�rB3}rC3(hHX Server siderD3hIj /hOjXhQhƒhS}rE3(hU]hV]hW]hX]h[]uh]Mö h^hh_]rF3hhX Server siderG3…�rH3}rI3(hHjD3hIjB3ubaubj•)�rJ3}rK3(hHX„root@am57xx-evm:~# iperf -s ------------------------------------------------------------ Server listening on TCP port 5001 TCP window size: 85.3 KByte (default) ------------------------------------------------------------ [ 4] local 192.168.2.20 port 5001 connected with 192.168.2.30 port 54150 [ ID] Interval Transfer Bandwidth [ 4] 0.0-60.0 sec 660 MBytes 92.3 Mbits/sechIj /hOjXhQj˜hS}rL3(h­h®hX]hW]hU]hV]h[]uh]MZ h^hh_]rM3hhX„root@am57xx-evm:~# iperf -s ------------------------------------------------------------ Server listening on TCP port 5001 TCP window size: 85.3 KByte (default) ------------------------------------------------------------ [ 4] local 192.168.2.20 port 5001 connected with 192.168.2.30 port 54150 [ ID] Interval Transfer Bandwidth [ 4] 0.0-60.0 sec 660 MBytes 92.3 Mbits/secrN3…�rO3}rP3(hHUhIjJ3ubaubh{)�rQ3}rR3(hHX Client siderS3hIj /hOjXhQhƒhS}rT3(hU]hV]hW]hX]h[]uh]M h^hh_]rU3hhX Client siderV3…�rW3}rX3(hHjS3hIjQ3ubaubj•)�rY3}rZ3(hHX¥root@am57xx-evm:~# iperf -c 192.168.2.20 -t60 ------------------------------------------------------------ Client connecting to 192.168.2.20, TCP port 5001 TCP window size: 43.8 KByte (default) ------------------------------------------------------------ [ 3] local 192.168.2.30 port 54150 connected with 192.168.2.20 port 5001 [ ID] Interval Transfer Bandwidth [ 3] 0.0-60.0 sec 660 MBytes 92.3 Mbits/sechIj /hOjXhQj˜hS}r[3(h­h®hX]hW]hU]hV]h[]uh]Mg h^hh_]r\3hhX¥root@am57xx-evm:~# iperf -c 192.168.2.20 -t60 ------------------------------------------------------------ Client connecting to 192.168.2.20, TCP port 5001 TCP window size: 43.8 KByte (default) ------------------------------------------------------------ [ 3] local 192.168.2.30 port 54150 connected with 192.168.2.20 port 5001 [ ID] Interval Transfer Bandwidth [ 3] 0.0-60.0 sec 660 MBytes 92.3 Mbits/secr]3…�r^3}r_3(hHUhIjY3ubaubeubhJ)�r`3}ra3(hHUhIjFhOjXhQhRhS}rb3(hU]hV]hW]hX]rc3Uredundancy-test-and-logsrd3ah[]re3h3auh]M h^hh_]rf3(ha)�rg3}rh3(hHXRedundancy Test and Logsri3hIj`3hOjXhQhehS}rj3(hU]hV]hW]hX]h[]uh]M h^hh_]rk3hhXRedundancy Test and Logsrl3…�rm3}rn3(hHji3hIjg3ubaubh{)�ro3}rp3(hHXFor HSR and PRP redundancy is implemented using duplicate links and sending frame over both links and discarding the duplicate at the receive side. The test requires two DAN-P or DAN-H nodes connected over eth2 and eth3 Ethernet Links. Boot up the EVM with bootargs set to configure PRU Ethernet in HSR or PRP mode as described at `Processor\_SDK\_Linux\_HSR\_PRP#Testing\_HSR.2FPRP\_Firmware\_Offload `__ Do an iperf UDP test at 88Mbits/sec for MTU sized packets (size = 1466) and then pull out either eth2 or eth3 Ethernet cable. Make sure iperf stats doesn't show packet loss during the test period. Here is the log for HSR that show link failed during the test and there was no packet loss.hIj`3hOjXhQhƒhS}rq3(hU]hV]hW]hX]h[]uh]M h^hh_]rr3(hhXKFor HSR and PRP redundancy is implemented using duplicate links and sending frame over both links and discarding the duplicate at the receive side. The test requires two DAN-P or DAN-H nodes connected over eth2 and eth3 Ethernet Links. Boot up the EVM with bootargs set to configure PRU Ethernet in HSR or PRP mode as described at rs3…�rt3}ru3(hHXKFor HSR and PRP redundancy is implemented using duplicate links and sending frame over both links and discarding the duplicate at the receive side. The test requires two DAN-P or DAN-H nodes connected over eth2 and eth3 Ethernet Links. Boot up the EVM with bootargs set to configure PRU Ethernet in HSR or PRP mode as described at hIjo3ubjî)�rv3}rw3(hHX”`Processor\_SDK\_Linux\_HSR\_PRP#Testing\_HSR.2FPRP\_Firmware\_Offload `__hS}rx3(UnameX>Processor_SDK_Linux_HSR_PRP#Testing_HSR.2FPRP_Firmware_OffloadjòXHIndustrial_Protocols_HSR_PRP.html#plsdk-hsr-prp-testing-firmware-offloadhX]hW]hU]hV]h[]uhIjo3h_]ry3hhX>Processor_SDK_Linux_HSR_PRP#Testing_HSR.2FPRP_Firmware_Offloadrz3…�r{3}r|3(hHUhIjv3ubahQj÷ubhhX! Do an iperf UDP test at 88Mbits/sec for MTU sized packets (size = 1466) and then pull out either eth2 or eth3 Ethernet cable. Make sure iperf stats doesn't show packet loss during the test period. Here is the log for HSR that show link failed during the test and there was no packet loss.r}3…�r~3}r3(hHX! Do an iperf UDP test at 88Mbits/sec for MTU sized packets (size = 1466) and then pull out either eth2 or eth3 Ethernet cable. Make sure iperf stats doesn't show packet loss during the test period. Here is the log for HSR that show link failed during the test and there was no packet loss.hIjo3ubeubh{)�r€3}r�3(hHXeth3 link failedr‚3hIj`3hOjXhQhƒhS}rƒ3(hU]hV]hW]hX]h[]uh]M h^hh_]r„3hhXeth3 link failedr…3…�r†3}r‡3(hHj‚3hIj€3ubaubj•)�rˆ3}r‰3(hHX!root@am57xx-evm:~# iperf -c 192.168.2.20 -u -b88M -l1466 -t60 ------------------------------------------------------------ Client connecting to 192.168.2.20, UDP port 5001 Sending 1466 byte datagrams UDP buffer size: 160 KByte (default) ------------------------------------------------------------ [ 3] local 192.168.2.30 port 50443 connected with 192.168.2.20 port 5001 [ 108.740402] prueth pruss2_eth eth3: Link is Down [ ID] Interval Transfer Bandwidth [ 3] 0.0-60.0 sec 631 MBytes 88.2 Mbits/sec [ 3] Sent 451002 datagrams [ 3] Server Report: [ 3] 0.0-60.0 sec 631 MBytes 88.2 Mbits/sec 0.003 ms 0/451001 (0%) [ 3] 0.0-60.0 sec 1 datagrams received out-of-order root@am57xx-evm:~# [ 181.444988] prueth pruss2_eth eth3: Link is Up - 100Mbps/Full - flow control offhIj`3hOjXhQj˜hS}rŠ3(h­h®hX]hW]hU]hV]h[]uh]Mƒ h^hh_]r‹3hhX!root@am57xx-evm:~# iperf -c 192.168.2.20 -u -b88M -l1466 -t60 ------------------------------------------------------------ Client connecting to 192.168.2.20, UDP port 5001 Sending 1466 byte datagrams UDP buffer size: 160 KByte (default) ------------------------------------------------------------ [ 3] local 192.168.2.30 port 50443 connected with 192.168.2.20 port 5001 [ 108.740402] prueth pruss2_eth eth3: Link is Down [ ID] Interval Transfer Bandwidth [ 3] 0.0-60.0 sec 631 MBytes 88.2 Mbits/sec [ 3] Sent 451002 datagrams [ 3] Server Report: [ 3] 0.0-60.0 sec 631 MBytes 88.2 Mbits/sec 0.003 ms 0/451001 (0%) [ 3] 0.0-60.0 sec 1 datagrams received out-of-order root@am57xx-evm:~# [ 181.444988] prueth pruss2_eth eth3: Link is Up - 100Mbps/Full - flow control offrŒ3…�r�3}rŽ3(hHUhIjˆ3ubaubh{)�r�3}r�3(hHXeth2 link failedr‘3hIj`3hOjXhQhƒhS}r’3(hU]hV]hW]hX]h[]uh]M3 h^hh_]r“3hhXeth2 link failedr”3…�r•3}r–3(hHj‘3hIj�3ubaubj•)�r—3}r˜3(hHX?root@am57xx-evm:~# iperf -c 192.168.2.20 -u -b88M -l1466 -t60 ------------------------------------------------------------ Client connecting to 192.168.2.20, UDP port 5001 Sending 1466 byte datagrams UDP buffer size: 160 KByte (default) ------------------------------------------------------------ [ 3] local 192.168.2.30 port 49260 connected with 192.168.2.20 port 5001 [ 204.253286] prueth pruss2_eth eth2: Link is Down [ ID] Interval Transfer Bandwidth [ 3] 0.0-60.0 sec 631 MBytes 88.2 Mbits/sec [ 3] Sent 451028 datagrams [ 3] Server Report: [ 3] 0.0-60.0 sec 631 MBytes 88.2 Mbits/sec 0.005 ms 0/451027 (0%) [ 3] 0.0-60.0 sec 1 datagrams received out-of-order root@am57xx-evm:~# uname -a Linux am57xx-evm 4.9.41-rt23-gc038d21a22 #2 SMP PREEMPT RT Wed Sep 27 06:34:09 EDT 2017 armv7l GNU/LinuxhIj`3hOjXhQj˜hS}r™3(h­h®hX]hW]hU]hV]h[]uh]M— h^hh_]rš3hhX?root@am57xx-evm:~# iperf -c 192.168.2.20 -u -b88M -l1466 -t60 ------------------------------------------------------------ Client connecting to 192.168.2.20, UDP port 5001 Sending 1466 byte datagrams UDP buffer size: 160 KByte (default) ------------------------------------------------------------ [ 3] local 192.168.2.30 port 49260 connected with 192.168.2.20 port 5001 [ 204.253286] prueth pruss2_eth eth2: Link is Down [ ID] Interval Transfer Bandwidth [ 3] 0.0-60.0 sec 631 MBytes 88.2 Mbits/sec [ 3] Sent 451028 datagrams [ 3] Server Report: [ 3] 0.0-60.0 sec 631 MBytes 88.2 Mbits/sec 0.005 ms 0/451027 (0%) [ 3] 0.0-60.0 sec 1 datagrams received out-of-order root@am57xx-evm:~# uname -a Linux am57xx-evm 4.9.41-rt23-gc038d21a22 #2 SMP PREEMPT RT Wed Sep 27 06:34:09 EDT 2017 armv7l GNU/Linuxr›3…�rœ3}r�3(hHUhIj—3ubaubeubhJ)�rž3}rŸ3(hHUhIjFhOjXhQhRhS}r 3(hU]hV]hW]hX]r¡3Uid3r¢3ah[]r£3h@auh]MI h^hh_]r¤3(ha)�r¥3}r¦3(hHXUseful Commandsr§3hIjž3hOjXhQhehS}r¨3(hU]hV]hW]hX]h[]uh]MI h^hh_]r©3hhXUseful Commandsrª3…�r«3}r¬3(hHj§3hIj¥3ubaubjû)�r­3}r®3(hHUhIjž3hOjXhQjþhS}r¯3(hU]hV]hW]hX]h[]uh]Nh^hh_]r°3h{)�r±3}r²3(hHX&**Linux HSR/PRP driver help commands**r³3hIj­3hOjXhQhƒhS}r´3(hU]hV]hW]hX]h[]uh]MK h_]rµ3hæ)�r¶3}r·3(hHj³3hS}r¸3(hU]hV]hW]hX]h[]uhIj±3h_]r¹3hhX"Linux HSR/PRP driver help commandsrº3…�r»3}r¼3(hHUhIj¶3ubahQhîubaubaubh{)�r½3}r¾3(hHXeTo dump lre_info such as sv_vid, sv_pcp, sv_dei, protocol etc used at the LRE of Linux HSR/PRP driverr¿3hIjž3hOjXhQhƒhS}rÀ3(hU]hV]hW]hX]h[]uh]MM h^hh_]rÁ3hhXeTo dump lre_info such as sv_vid, sv_pcp, sv_dei, protocol etc used at the LRE of Linux HSR/PRP driverrÂ3…�rÃ3}rÄ3(hHj¿3hIj½3ubaubhÔ)�rÅ3}rÆ3(hHUhIjž3hOjXhQh×hS}rÇ3(hÙX-hX]hW]hU]hV]h[]uh]MP h^hh_]rÈ3hÛ)�rÉ3}rÊ3(hHX]cat /sys/kernel/debug//lre_info example cat /sys/kernel/debug/hsr0/lre_info hIjÅ3hOjXhQhÞhS}rË3(hU]hV]hW]hX]h[]uh]Nh^hh_]rÌ3h{)�rÍ3}rÎ3(hHX\cat /sys/kernel/debug//lre_info example cat /sys/kernel/debug/hsr0/lre_inforÏ3hIjÉ3hOjXhQhƒhS}rÐ3(hU]hV]hW]hX]h[]uh]MP h_]rÑ3hhX\cat /sys/kernel/debug//lre_info example cat /sys/kernel/debug/hsr0/lre_inforÒ3…�rÓ3}rÔ3(hHjÏ3hIjÍ3ubaubaubaubh{)�rÕ3}rÖ3(hHXTo dump Node\_Tabler×3hIjž3hOjXhQhƒhS}rØ3(hU]hV]hW]hX]h[]uh]MT h^hh_]rÙ3hhXTo dump Node_TablerÚ3…�rÛ3}rÜ3(hHXTo dump Node\_TablehIjÕ3ubaubhÔ)�rÝ3}rÞ3(hHUhIjž3hOjXhQh×hS}rß3(hÙX-hX]hW]hU]hV]h[]uh]MV h^hh_]rà3hÛ)�rá3}râ3(hHX'cat /proc//node-table hIjÝ3hOjXhQhÞhS}rã3(hU]hV]hW]hX]h[]uh]Nh^hh_]rä3h{)�rå3}ræ3(hHX&cat /proc//node-tablerç3hIjá3hOjXhQhƒhS}rè3(hU]hV]hW]hX]h[]uh]MV h_]ré3hhX&cat /proc//node-tablerê3…�rë3}rì3(hHjç3hIjå3ubaubaubaubh{)�rí3}rî3(hHX<To set hsr-mode - echo 1 > /proc//hsr-moderï3hIjž3hOjXhQhƒhS}rð3(hU]hV]hW]hX]h[]uh]MX h^hh_]rñ3hhX<To set hsr-mode - echo 1 > /proc//hsr-moderò3…�ró3}rô3(hHjï3hIjí3ubaubh{)�rõ3}rö3(hHXUwhere 1 is for Mode-H Other values are 2 (Mode-N), 3 (Mode-T), 4 (Mode-U), 5 (Mode-M)r÷3hIjž3hOjXhQhƒhS}rø3(hU]hV]hW]hX]h[]uh]M[ h^hh_]rù3hhXUwhere 1 is for Mode-H Other values are 2 (Mode-N), 3 (Mode-T), 4 (Mode-U), 5 (Mode-M)rú3…�rû3}rü3(hHj÷3hIjõ3ubaubh{)�rý3}rþ3(hHX@To clear node table - echo 1 > /proc//clear-ntrÿ3hIjž3hOjXhQhƒhS}r4(hU]hV]hW]hX]h[]uh]M^ h^hh_]r4hhX@To clear node table - echo 1 > /proc//clear-ntr4…�r4}r4(hHjÿ3hIjý3ubaubh{)�r4}r4(hHXNTo change duplicate detection mode - echo 1 > /proc//dd-moder4hIjž3hOjXhQhƒhS}r4(hU]hV]hW]hX]h[]uh]Ma h^hh_]r 4hhXNTo change duplicate detection mode - echo 1 > /proc//dd-moder 4…�r 4}r 4(hHj4hIj4ubaubh{)�r 4}r4(hHXWTo change duplicate list max resident time - echo 1000 > /proc//dlrmtr4hIjž3hOjXhQhƒhS}r4(hU]hV]hW]hX]h[]uh]Md h^hh_]r4hhXWTo change duplicate list max resident time - echo 1000 > /proc//dlrmtr4…�r4}r4(hHj4hIj 4ubaubh{)�r4}r4(hHXSTo change prp transparent reception mode - echo 1 > /proc//prp-trr4hIjž3hOjXhQhƒhS}r4(hU]hV]hW]hX]h[]uh]Mg h^hh_]r4hhXSTo change prp transparent reception mode - echo 1 > /proc//prp-trr4…�r4}r4(hHj4hIj4ubaubh{)�r4}r4(hHXUTo disable SV frame transmission - echo 1 > /proc//disable-sv_framer4hIjž3hOjXhQhƒhS}r 4(hU]hV]hW]hX]h[]uh]Mj h^hh_]r!4hhXUTo disable SV frame transmission - echo 1 > /proc//disable-sv_framer"4…�r#4}r$4(hHj4hIj4ubaubjû)�r%4}r&4(hHUhIjž3hOjXhQjþhS}r'4(hU]hV]hW]hX]h[]uh]Nh^hh_]r(4h{)�r)4}r*4(hHX%**PRU Ethernet driver help commands**r+4hIj%4hOjXhQhƒhS}r,4(hU]hV]hW]hX]h[]uh]Mm h_]r-4hæ)�r.4}r/4(hHj+4hS}r04(hU]hV]hW]hX]h[]uhIj)4h_]r14hhX!PRU Ethernet driver help commandsr24…�r34}r44(hHUhIj.4ubahQhîubaubaubh{)�r54}r64(hHXTo see queue statsr74hIjž3hOjXhQhƒhS}r84(hU]hV]hW]hX]h[]uh]Mp h^hh_]r94hhXTo see queue statsr:4…�r;4}r<4(hHj74hIj54ubaubhÔ)�r=4}r>4(hHUhIjž3hOjXhQh×hS}r?4(hÙX-hX]hW]hU]hV]h[]uh]Mr h^hh_]r@4hÛ)�rA4}rB4(hHX2cat /sys/kernel/debug/prueth-eth/stats hIj=4hOjXhQhÞhS}rC4(hU]hV]hW]hX]h[]uh]Nh^hh_]rD4h{)�rE4}rF4(hHX1cat /sys/kernel/debug/prueth-eth/statsrG4hIjA4hOjXhQhƒhS}rH4(hU]hV]hW]hX]h[]uh]Mr h_]rI4hhX1cat /sys/kernel/debug/prueth-eth/statsrJ4…�rK4}rL4(hHjG4hIjE4ubaubaubaubh{)�rM4}rN4(hHXTo see lre_configrO4hIjž3hOjXhQhƒhS}rP4(hU]hV]hW]hX]h[]uh]Mt h^hh_]rQ4hhXTo see lre_configrR4…�rS4}rT4(hHjO4hIjM4ubaubhÔ)�rU4}rV4(hHUhIjž3hOjXhQh×hS}rW4(hÙX-hX]hW]hU]hV]h[]uh]Mv h^hh_]rX4hÛ)�rY4}rZ4(hHX8cat /sys/kernel/debug/prueth-->/lre_config hIjU4hOjXhQhÞhS}r[4(hU]hV]hW]hX]h[]uh]Nh^hh_]r\4h{)�r]4}r^4(hHX7cat /sys/kernel/debug/prueth-->/lre_configr_4hIjY4hOjXhQhƒhS}r`4(hU]hV]hW]hX]h[]uh]Mv h_]ra4hhX7cat /sys/kernel/debug/prueth-->/lre_configrb4…�rc4}rd4(hHj_4hIj]4ubaubaubaubh{)�re4}rf4(hHXTo dump node tablerg4hIjž3hOjXhQhƒhS}rh4(hU]hV]hW]hX]h[]uh]Mx h^hh_]ri4hhXTo dump node tablerj4…�rk4}rl4(hHjg4hIje4ubaubhÔ)�rm4}rn4(hHUhIjž3hOjXhQh×hS}ro4(hÙX-hX]hW]hU]hV]h[]uh]Mz h^hh_]rp4hÛ)�rq4}rr4(hHX8cat /sys/kernel/debug/prueth-->/node_table hIjm4hOjXhQhÞhS}rs4(hU]hV]hW]hX]h[]uh]Nh^hh_]rt4h{)�ru4}rv4(hHX7cat /sys/kernel/debug/prueth-->/node_tablerw4hIjq4hOjXhQhƒhS}rx4(hU]hV]hW]hX]h[]uh]Mz h_]ry4hhX7cat /sys/kernel/debug/prueth-->/node_tablerz4…�r{4}r|4(hHjw4hIju4ubaubaubaubh{)�r}4}r~4(hHXAlsor4hIjž3hOjXhQhƒhS}r€4(hU]hV]hW]hX]h[]uh]M| h^hh_]r�4hhXAlsor‚4…�rƒ4}r„4(hHj4hIj}4ubaubhÔ)�r…4}r†4(hHUhIjž3hOjXhQh×hS}r‡4(hÙX-hX]hW]hU]hV]h[]uh]M~ h^hh_]rˆ4hÛ)�r‰4}rŠ4(hHX9cat /sys/kernel/debug/prueth-/new\_nt\_bins hIj…4hOjXhQhÞhS}r‹4(hU]hV]hW]hX]h[]uh]Nh^hh_]rŒ4h{)�r�4}rŽ4(hHX8cat /sys/kernel/debug/prueth-/new\_nt\_binshIj‰4hOjXhQhƒhS}r�4(hU]hV]hW]hX]h[]uh]M~ h_]r�4hhX6cat /sys/kernel/debug/prueth-/new_nt_binsr‘4…�r’4}r“4(hHX8cat /sys/kernel/debug/prueth-/new\_nt\_binshIj�4ubaubaubaubh{)�r”4}r•4(hHXtIn the above commands ID and if_numbers are chosen as described in section :ref:`PLSDK_HSR_PRP_id_if_number_mapping`hIjž3hOjXhQhƒhS}r–4(hU]hV]hW]hX]h[]uh]M€ h^hh_]r—4(hhXKIn the above commands ID and if_numbers are chosen as described in section r˜4…�r™4}rš4(hHXKIn the above commands ID and if_numbers are chosen as described in section hIj”4ubjØ)�r›4}rœ4(hHX):ref:`PLSDK_HSR_PRP_id_if_number_mapping`r�4hIj”4hOjXhQjÜhS}rž4(UreftypeXrefjÞˆjßX"plsdk_hsr_prp_id_if_number_mappingU refdomainXstdrŸ4hX]hW]U refexplicit‰hU]hV]h[]jájâuh]M€ h_]r 4jä)�r¡4}r¢4(hHj�4hS}r£4(hU]hV]r¤4(jéjŸ4Xstd-refr¥4ehW]hX]h[]uhIj›4h_]r¦4hhX"PLSDK_HSR_PRP_id_if_number_mappingr§4…�r¨4}r©4(hHUhIj¡4ubahQjïubaubeubeubhJ)�rª4}r«4(hHUhIjFhOjXhQhRhS}r¬4(hU]hV]hW]hX]r­4Ufaqr®4ah[]r¯4h'auh]M„ h^hh_]r°4(ha)�r±4}r²4(hHXFAQr³4hIjª4hOjXhQhehS}r´4(hU]hV]hW]hX]h[]uh]M„ h^hh_]rµ4hhXFAQr¶4…�r·4}r¸4(hHj³4hIj±4ubaubhÔ)�r¹4}rº4(hHUhIjª4hOjXhQh×hS}r»4(hÙX*hX]hW]hU]hV]h[]uh]M† h^hh_]r¼4hÛ)�r½4}r¾4(hHX—How to disable udhcpc from sending DHCP request over prueth Ethernet interfaces (eth2-eth3) when it is configured to run HSR/PRP protocol in firmware? hIj¹4hOjXhQhÞhS}r¿4(hU]hV]hW]hX]h[]uh]Nh^hh_]rÀ4h{)�rÁ4}rÂ4(hHX–How to disable udhcpc from sending DHCP request over prueth Ethernet interfaces (eth2-eth3) when it is configured to run HSR/PRP protocol in firmware?rÃ4hIj½4hOjXhQhƒhS}rÄ4(hU]hV]hW]hX]h[]uh]M† h_]rÅ4hhX–How to disable udhcpc from sending DHCP request over prueth Ethernet interfaces (eth2-eth3) when it is configured to run HSR/PRP protocol in firmware?rÆ4…�rÇ4}rÈ4(hHjÃ4hIjÁ4ubaubaubaubh{)�rÉ4}rÊ4(hHX-Linux HSR/PRP driver uses the eth2/eth3 interface as slave interfaces to implement the protocol on top of it. Application is expected to send or receive packets over the hsr or prp lre interface also known as C port. However prueth also support plain Ethernet and the file system /etc/systemd/network/10-eth.network has a general rule to enable DHCP over all of the interface matching eth\*. Modify the file to match unique name instead of generic name wild cards. For example to do DHCP over only eth0 interface, 10-eth.network may be modified as follows:-hIjª4hOjXhQhƒhS}rË4(hU]hV]hW]hX]h[]uh]MŠ h^hh_]rÌ4hhX,Linux HSR/PRP driver uses the eth2/eth3 interface as slave interfaces to implement the protocol on top of it. Application is expected to send or receive packets over the hsr or prp lre interface also known as C port. However prueth also support plain Ethernet and the file system /etc/systemd/network/10-eth.network has a general rule to enable DHCP over all of the interface matching eth*. Modify the file to match unique name instead of generic name wild cards. For example to do DHCP over only eth0 interface, 10-eth.network may be modified as follows:-rÍ4…�rÎ4}rÏ4(hHX-Linux HSR/PRP driver uses the eth2/eth3 interface as slave interfaces to implement the protocol on top of it. Application is expected to send or receive packets over the hsr or prp lre interface also known as C port. However prueth also support plain Ethernet and the file system /etc/systemd/network/10-eth.network has a general rule to enable DHCP over all of the interface matching eth\*. Modify the file to match unique name instead of generic name wild cards. For example to do DHCP over only eth0 interface, 10-eth.network may be modified as follows:-hIjÉ4ubaubh{)�rÐ4}rÑ4(hHX:root@am57xx-evm:~# cat /etc/systemd/network/10-eth.networkrÒ4hIjª4hOjXhQhƒhS}rÓ4(hU]hV]hW]hX]h[]uh]M“ h^hh_]rÔ4(jî)�rÕ4}rÖ4(hHXroot@am57xx-evmhS}r×4(UrefuriXmailto:root@am57xx-evmhX]hW]hU]hV]h[]uhIjÐ4h_]rØ4hhXroot@am57xx-evmrÙ4…�rÚ4}rÛ4(hHUhIjÕ4ubahQj÷ubhhX+:~# cat /etc/systemd/network/10-eth.networkrÜ4…�rÝ4}rÞ4(hHX+:~# cat /etc/systemd/network/10-eth.networkhIjÐ4ubeubj•)�rß4}rà4(hHXF[Match] Name=eth0 KernelCommandLine=!root=/dev/nfs [Network] DHCP=yeshIjª4hOjXhQj˜hS}rá4(h­h®hX]hW]hU]hV]h[]uh]M÷ h^hh_]râ4hhXF[Match] Name=eth0 KernelCommandLine=!root=/dev/nfs [Network] DHCP=yesrã4…�rä4}rå4(hHUhIjß4ubaubh{)�ræ4}rç4(hHX)To do DHCP over hsr0 or prp0 interfaces, user may add additional files to /etc/systemd/network/ one for each prp0 or hsr0 similar to eth0, by using a Match name string of hsr0 or prp0. More details on this is at [`[6] `__]hIjª4hOjXhQhƒhS}rè4(hU]hV]hW]hX]h[]uh]Mž h^hh_]ré4(hhXÕTo do DHCP over hsr0 or prp0 interfaces, user may add additional files to /etc/systemd/network/ one for each prp0 or hsr0 similar to eth0, by using a Match name string of hsr0 or prp0. More details on this is at [rê4…�rë4}rì4(hHXÕTo do DHCP over hsr0 or prp0 interfaces, user may add additional files to /etc/systemd/network/ one for each prp0 or hsr0 similar to eth0, by using a Match name string of hsr0 or prp0. More details on this is at [hIjæ4ubjî)�rí4}rî4(hHXS`[6] `__hS}rï4(UnameX[6]jòXIhttps://wiki.archlinux.org/index.php/systemd-networkd#Configuration_fileshX]hW]hU]hV]h[]uhIjæ4h_]rð4hhX[6]rñ4…�rò4}ró4(hHUhIjí4ubahQj÷ubhhX]…�rô4}rõ4(hHX]hIjæ4ubeubhÔ)�rö4}r÷4(hHUhIjª4hOjXhQh×hS}rø4(hÙX*hX]hW]hU]hV]h[]uh]M£ h^hh_]rù4hÛ)�rú4}rû4(hHXJWhy do I see duplicate frames displayed by ping when I use PRP interface? hIjö4hOjXhQhÞhS}rü4(hU]hV]hW]hX]h[]uh]Nh^hh_]rý4h{)�rþ4}rÿ4(hHXIWhy do I see duplicate frames displayed by ping when I use PRP interface?r5hIjú4hOjXhQhƒhS}r5(hU]hV]hW]hX]h[]uh]M£ h_]r5hhXIWhy do I see duplicate frames displayed by ping when I use PRP interface?r5…�r5}r5(hHj5hIjþ4ubaubaubaubh{)�r5}r5(hHXÐIn ICSS firmware, PRU-0 is assumed to be for Link-A and PRU-1 for Link-B of a LRE in the case DANP. So in PRP case, Link-A should be connected network A and Link-B should be connected to Network B of a PRP network since net-id has to match as per duplicate detect alogrithm. If this convention is not followed, duplicate detection logic fails and duplicates are sent to upper layer causing ping application to complain about duplicates. So when creating prp interface, make sure ip link command parameter slave 1 use linux interface associated with PRU-0 and slave 2 use interface associated with PRU-1. Also when making network connection make sure that PRU-0 port is connected to Network A and PRU-1 port to Network B.r5hIjª4hOjXhQhƒhS}r 5(hU]hV]hW]hX]h[]uh]M¥ h^hh_]r 5hhXÐIn ICSS firmware, PRU-0 is assumed to be for Link-A and PRU-1 for Link-B of a LRE in the case DANP. So in PRP case, Link-A should be connected network A and Link-B should be connected to Network B of a PRP network since net-id has to match as per duplicate detect alogrithm. If this convention is not followed, duplicate detection logic fails and duplicates are sent to upper layer causing ping application to complain about duplicates. So when creating prp interface, make sure ip link command parameter slave 1 use linux interface associated with PRU-0 and slave 2 use interface associated with PRU-1. Also when making network connection make sure that PRU-0 port is connected to Network A and PRU-1 port to Network B.r 5…�r 5}r 5(hHj5hIj5ubaubeubeubeubhOhPhQhRhS}r5(hU]hV]hW]hX]r5Ugetting-startedr5ah[]r5h$auh]K h^hh_]r5(ha)�r5}r5(hHXGetting Startedr5hIhKhOhPhQhehS}r5(hU]hV]hW]hX]h[]uh]K h^hh_]r5hhXGetting Startedr5…�r5}r5(hHj5hIj5ubaubh{)�r5}r5(hHXkTo try out HSR/PRP (assuming two supported platforms are set up already, and PRU-ICSS ports are eth1/eth2):r5hIhKhOhPhQhƒhS}r5(hU]hV]hW]hX]h[]uh]K h^hh_]r5hhXkTo try out HSR/PRP (assuming two supported platforms are set up already, and PRU-ICSS ports are eth1/eth2):r 5…�r!5}r"5(hHj5hIj5ubaubh{)�r#5}r$5(hHX—1 ) Connect the PRU-ICSS ports between devices, eth1 to eth1 and eth2 to eth2. (This acts as a 2 node ring for HSR, or a 2 node point-to-point for PRP)r%5hIhKhOhPhQhƒhS}r&5(hU]hV]hW]hX]h[]uh]Kh^hh_]r'5hhX—1 ) Connect the PRU-ICSS ports between devices, eth1 to eth1 and eth2 to eth2. (This acts as a 2 node ring for HSR, or a 2 node point-to-point for PRP)r(5…�r)5}r*5(hHj%5hIj#5ubaubh{)�r+5}r,5(hHX32 ) Configure ports to have the same MAC address ::hIhKhOhPhQhƒhS}r-5(hU]hV]hW]hX]h[]uh]Kh^hh_]r.5hhX02 ) Configure ports to have the same MAC addressr/5…�r05}r15(hHX02 ) Configure ports to have the same MAC addresshIj+5ubaubj•)�r25}r35(hHX�ifconfig eth1 0.0.0.0 down && ifconfig eth2 0.0.0.0 down ifconfig eth1 hw ether 70:FF:76:1C:0E:8C && ifconfig eth2 hw ether 70:FF:76:1C:0E:8ChIhKhOhPhQj˜hS}r45(h­h®hX]hW]hU]hV]h[]uh]K0h^hh_]r55hhX�ifconfig eth1 0.0.0.0 down && ifconfig eth2 0.0.0.0 down ifconfig eth1 hw ether 70:FF:76:1C:0E:8C && ifconfig eth2 hw ether 70:FF:76:1C:0E:8Cr65…�r75}r85(hHUhIj25ubaubh{)�r95}r:5(hHX;3 ) Configure offload feature, and create HSR/PRP interfacer;5hIhKhOhPhQhƒhS}r<5(hU]hV]hW]hX]h[]uh]Kh^hh_]r=5hhX;3 ) Configure offload feature, and create HSR/PRP interfacer>5…�r?5}r@5(hHj;5hIj95ubaubh{)�rA5}rB5(hHX (for HSR) ::hIhKhOhPhQhƒhS}rC5(hU]hV]hW]hX]h[]uh]Kh^hh_]rD5hhX (for HSR)rE5…�rF5}rG5(hHX (for HSR)hIjA5ubaubj•)�rH5}rI5(hHXÖethtool -K eth1 hsr-rx-offload on && ethtool -K eth2 hsr-rx-offload on ifconfig eth1 up && ifconfig eth2 up ip link add name hsr0 type hsr slave1 eth1 slave2 eth2 supervision 45 version 1 ifconfig hsr0 192.168.2.20hIhKhOhPhQj˜hS}rJ5(h­h®hX]hW]hU]hV]h[]uh]K8h^hh_]rK5hhXÖethtool -K eth1 hsr-rx-offload on && ethtool -K eth2 hsr-rx-offload on ifconfig eth1 up && ifconfig eth2 up ip link add name hsr0 type hsr slave1 eth1 slave2 eth2 supervision 45 version 1 ifconfig hsr0 192.168.2.20rL5…�rM5}rN5(hHUhIjH5ubaubh{)�rO5}rP5(hHX (for PRP) ::hIhKhOhPhQhƒhS}rQ5(hU]hV]hW]hX]h[]uh]K"h^hh_]rR5hhX (for PRP)rS5…�rT5}rU5(hHX (for PRP)hIjO5ubaubj•)�rV5}rW5(hHXÌethtool -K eth1 prp-rx-offload on && ethtool -K eth2 prp-rx-offload on ifconfig eth1 up && ifconfig eth2 up ip link add name prp0 type prp slave1 eth1 slave2 eth2 supervision 45 ifconfig prp0 192.168.2.20hIhKhOhPhQj˜hS}rX5(h­h®hX]hW]hU]hV]h[]uh]K@h^hh_]rY5hhXÌethtool -K eth1 prp-rx-offload on && ethtool -K eth2 prp-rx-offload on ifconfig eth1 up && ifconfig eth2 up ip link add name prp0 type prp slave1 eth1 slave2 eth2 supervision 45 ifconfig prp0 192.168.2.20rZ5…�r[5}r\5(hHUhIjV5ubaubh{)�r]5}r^5(hHXz4 ) Attempt to ping from one device to the other, and try disconnecting a link. The connection will continue without loss.r_5hIhKhOhPhQhƒhS}r`5(hU]hV]hW]hX]h[]uh]K*h^hh_]ra5hhXz4 ) Attempt to ping from one device to the other, and try disconnecting a link. The connection will continue without loss.rb5…�rc5}rd5(hHj_5hIj]5ubaubeubhOhPhQUsystem_messagere5hS}rf5(hU]UlevelKhX]hW]UsourcehPhV]h[]UlineKUtypeUINFOrg5uh]Kh^hh_]rh5h{)�ri5}rj5(hHXfPossible title underline, too short for the title. Treating it as ordinary text because it's so short.hS}rk5(hU]hV]hW]hX]h[]uhIhFh_]rl5hhXfPossible title underline, too short for the title. Treating it as ordinary text because it's so short.rm5…�rn5}ro5(hHUhIji5ubahQhƒubaubhE)�rp5}rq5(hHUhIhKhOhPhQje5hS}rr5(hU]UlevelKhX]hW]UsourcehPhV]h[]UlineKUtypejg5uh]Kh^hh_]rs5h{)�rt5}ru5(hHXfPossible title underline, too short for the title. Treating it as ordinary text because it's so short.hS}rv5(hU]hV]hW]hX]h[]uhIjp5h_]rw5hhXfPossible title underline, too short for the title. Treating it as ordinary text because it's so short.rx5…�ry5}rz5(hHUhIjt5ubahQhƒubaubhE)�r{5}r|5(hHUhIhKhOhPhQje5hS}r}5(hU]UlevelKhX]hW]UsourcehPhV]h[]UlineK#Utypejg5uh]K#h^hh_]r~5h{)�r5}r€5(hHXfPossible title underline, too short for the title. Treating it as ordinary text because it's so short.hS}r�5(hU]hV]hW]hX]h[]uhIj{5h_]r‚5hhXfPossible title underline, too short for the title. Treating it as ordinary text because it's so short.rƒ5…�r„5}r…5(hHUhIj5ubahQhƒubaubhE)�r†5}r‡5(hHUhIj·hOjXhQje5hS}rˆ5(hU]UlevelKhX]hW]UsourcejXhV]h[]UlineK¾Utypejg5uh]K¾h^hh_]r‰5h{)�rŠ5}r‹5(hHXfPossible title underline, too short for the title. Treating it as ordinary text because it's so short.hS}rŒ5(hU]hV]hW]hX]h[]uhIj†5h_]r�5hhXfPossible title underline, too short for the title. Treating it as ordinary text because it's so short.rŽ5…�r�5}r�5(hHUhIjŠ5ubahQhƒubaubhE)�r‘5}r’5(hHUhIj·hOjXhQje5hS}r“5(hU]UlevelKhX]hW]UsourcejXhV]h[]UlineKÄUtypejg5uh]KÄh^hh_]r”5h{)�r•5}r–5(hHXfPossible title underline, too short for the title. Treating it as ordinary text because it's so short.hS}r—5(hU]hV]hW]hX]h[]uhIj‘5h_]r˜5hhXfPossible title underline, too short for the title. Treating it as ordinary text because it's so short.r™5…�rš5}r›5(hHUhIj•5ubahQhƒubaubhE)�rœ5}r�5(hHUhIjöhOjXhQje5hS}rž5(hU]UlevelKhX]hW]rŸ5jûaUsourcejXhV]h[]UlineMƒUtypejg5uh]Mƒh^hh_]r 5h{)�r¡5}r¢5(hHX,Duplicate implicit target name: "dual emac".hS}r£5(hU]hV]hW]hX]h[]uhIjœ5h_]r¤5hhX,Duplicate implicit target name: "dual emac".r¥5…�r¦5}r§5(hHUhIj¡5ubahQhƒubaubhE)�r¨5}r©5(hHUhIjhOjXhQje5hS}rª5(hU]UlevelKhX]hW]r«5j aUsourcejXhV]h[]UlineM^Utypejg5uh]M^h^hh_]r¬5h{)�r­5}r®5(hHX-Duplicate implicit target name: "node table".hS}r¯5(hU]hV]hW]hX]h[]uhIj¨5h_]r°5hhX-Duplicate implicit target name: "node table".r±5…�r²5}r³5(hHUhIj­5ubahQhƒubaubhE)�r´5}rµ5(hHUhIjy,hOjXhQje5hS}r¶5(hU]UlevelKhX]hW]UsourcejXhV]h[]UlineMÆUtypejg5uh]MÆh^hh_]r·5h{)�r¸5}r¹5(hHXfPossible title underline, too short for the title. Treating it as ordinary text because it's so short.hS}rº5(hU]hV]hW]hX]h[]uhIj´5h_]r»5hhXfPossible title underline, too short for the title. Treating it as ordinary text because it's so short.r¼5…�r½5}r¾5(hHUhIj¸5ubahQhƒubaubeUcurrent_sourcer¿5NU decorationrÀ5NUautofootnote_startrÁ5KUnameidsrÂ5}rÃ5(hj\hjÇhj/h j·h j<h j¶h j\h j3hNhjÃhj°hj<3hjíhNhjöhh�hjPhjqhj0hjGhjl*hjéhjJhjr*hj.hj§h jsh!j5h"jû-h#j“h$j5h%jwh&jZ/h'j®4h(j¹h)jS,h*hÉh+jbh,j3h-j~,h.jˆh/j§h0hph1j^*h2j h3jd3h4j h5j¼h6jh7hZh8jrh9jBh:jÄh;j²+hjwh?jx,h@j¢3uh_]rÄ5hMahHUU transformerrÅ5NU footnote_refsrÆ5}rÇ5UrefnamesrÈ5}rÉ5Usymbol_footnotesrÊ5]rË5Uautofootnote_refsrÌ5]rÍ5Usymbol_footnote_refsrÎ5]rÏ5U citationsrÐ5]rÑ5h^hU current_linerÒ5NUtransform_messagesrÓ5]rÔ5(hE)�rÕ5}rÖ5(hHUhS}r×5(hU]UlevelKhX]hW]Usourcej7hV]h[]UlineMYUtypejg5uh_]rØ5h{)�rÙ5}rÚ5(hHUhS}rÛ5(hU]hV]hW]hX]h[]uhIjÕ5h_]rÜ5hhXGHyperlink target "hsr-prp-firmware-memory-map-label" is not referenced.rÝ5…�rÞ5}rß5(hHUhIjÙ5ubahQhƒubahQje5ubhE)�rà5}rá5(hHUhS}râ5(hU]UlevelKhX]hW]UsourcejXhV]h[]UlineMõUtypejg5uh_]rã5h{)�rä5}rå5(hHUhS}ræ5(hU]hV]hW]hX]h[]uhIjà5h_]rç5hhXHHyperlink target "plsdk-hsr-prp-id-if-number-mapping" is not referenced.rè5…�ré5}rê5(hHUhIjä5ubahQhƒubahQje5ubhE)�rë5}rì5(hHUhS}rí5(hU]UlevelKhX]hW]UsourcejXhV]h[]UlineMKUtypejg5uh_]rî5h{)�rï5}rð5(hHUhS}rñ5(hU]hV]hW]hX]h[]uhIjë5h_]rò5hhX?Hyperlink target "plsdk-prp-emac-mode-label" is not referenced.ró5…�rô5}rõ5(hHUhIjï5ubahQhƒubahQje5ubhE)�rö5}r÷5(hHUhS}rø5(hU]UlevelKhX]hW]UsourcejXhV]h[]UlineMÃUtypejg5uh_]rù5h{)�rú5}rû5(hHUhS}rü5(hU]hV]hW]hX]h[]uhIjö5h_]rý5hhXLHyperlink target "plsdk-hsr-prp-testing-firmware-offload" is not referenced.rþ5…�rÿ5}r6(hHUhIjú5ubahQhƒubahQje5ubhE)�r6}r6(hHUhS}r6(hU]UlevelKhX]hW]UsourcejXhV]h[]UlineM¥Utypejg5uh_]r6h{)�r6}r6(hHUhS}r6(hU]hV]hW]hX]h[]uhIj6h_]r6hhX7Hyperlink target "plsdk-hsr-testing" is not referenced.r 6…�r 6}r 6(hHUhIj6ubahQhƒubahQje5ubhE)�r 6}r 6(hHUhS}r6(hU]UlevelKhX]hW]UsourcejXhV]h[]UlineMn Utypejg5uh_]r6h{)�r6}r6(hHUhS}r6(hU]hV]hW]hX]h[]uhIj 6h_]r6hhX7Hyperlink target "plsdk-ptp-testing" is not referenced.r6…�r6}r6(hHUhIj6ubahQhƒubahQje5ubeUreporterr6NUid_startr6KU autofootnotesr6]r6U citation_refsr6}r6Uindirect_targetsr6]r6Usettingsr6(cdocutils.frontend Values r 6or!6}r"6(Ufootnote_backlinksr#6KUrecord_dependenciesr$6NU rfc_base_urlr%6Uhttps://tools.ietf.org/html/r&6U tracebackr'6ˆUpep_referencesr(6NUstrip_commentsr)6NU toc_backlinksr*6j†U language_coder+6Uenr,6U datestampr-6NU report_levelr.6KU _destinationr/6NU halt_levelr06KU strip_classesr16NheNUerror_encoding_error_handlerr26Ubackslashreplacer36Udebugr46NUembed_stylesheetr56‰Uoutput_encoding_error_handlerr66Ustrictr76U sectnum_xformr86KUdump_transformsr96NU docinfo_xformr:6KUwarning_streamr;6NUpep_file_url_templater<6Upep-%04dr=6Uexit_status_levelr>6KUconfigr?6NUstrict_visitorr@6NUcloak_email_addressesrA6ˆUtrim_footnote_reference_spacerB6‰UenvrC6NUdump_pseudo_xmlrD6NUexpose_internalsrE6NUsectsubtitle_xformrF6‰U source_linkrG6NUrfc_referencesrH6NUoutput_encodingrI6Uutf-8rJ6U source_urlrK6NUinput_encodingrL6U utf-8-sigrM6U_disable_configrN6NU id_prefixrO6UU tab_widthrP6KUerror_encodingrQ6UUTF-8rR6U_sourcerS6hPUgettext_compactrT6ˆU generatorrU6NUdump_internalsrV6NU smart_quotesrW6‰U pep_base_urlrX6U https://www.python.org/dev/peps/rY6Usyntax_highlightrZ6Ulongr[6Uinput_encoding_error_handlerr\6j76Uauto_id_prefixr]6Uidr^6Udoctitle_xformr_6‰Ustrip_elements_with_classesr`6NU _config_filesra6]Ufile_insertion_enabledrb6ˆU raw_enabledrc6KU dump_settingsrd6NubUsymbol_footnote_startre6KUidsrf6}rg6(jwjrjJjFj“j�j·j²jx,jy,j\jUj¶j·jÇjÃj3j3jöjòjÃj¾j<3j73jíjèjBj>j/j /jÄjÀj0j,jl*jm*j^*jZ*jPjJjGjCj~,jy,j jj¢3jž3jûjöjˆj„jS,jO,hZhMjû-jü-jrjnj²+j®+jZ/jU/hÉhÅjG*jC*jjj<j6j¹jµhphljsjoj3j3jqjrj®4jª4jéjåj5j6jd3j`3j j j¼j·j§j£j.jü-jwjrj5hKh�h™jbj^j\jXj jjr*jm*j°j¬j§j£jïjéj¢j›jqjmuUsubstitution_namesrh6}ri6hQh^hS}rj6(hU]hX]hW]UsourcehPhV]h[]uU footnotesrk6]rl6Urefidsrm6}rn6(jx,]ro6ju,aj¶]rp6j³aj5]rq6j0ajq]rr6jnajû-]rs6jø-ajl*]rt6ji*auub.