diff --git a/source/linux/Foundational_Components/Kernel/Kernel_Drivers/Network/CPSW-CBS.rst b/source/linux/Foundational_Components/Kernel/Kernel_Drivers/Network/CPSW-CBS.rst index 8ee281a6c..68881e112 100644 --- a/source/linux/Foundational_Components/Kernel/Kernel_Drivers/Network/CPSW-CBS.rst +++ b/source/linux/Foundational_Components/Kernel/Kernel_Drivers/Network/CPSW-CBS.rst @@ -2,7 +2,7 @@ CBS === .. contents:: :local: - :depth: 3 + :depth: 3 Introduction ------------ @@ -27,7 +27,7 @@ Host port ingress Rate Limiting offload The netdev sysfs **tx_maxrate** parameter can be used to configure rate limit in Mbit/s per TX DMA channel. The rate for shapers has to be set a little bit more then potential incoming rate, and real rates can differ, due to discreetness. -:: +.. code:: console echo 100 > /sys/class/net/eth2/queues/tx-7/tx_maxrate @@ -40,7 +40,7 @@ In this example Rate Limiting is enabled only for Host port TX channels. * pri6 traffic routed to TX DMA channel 6, rate limit 200Mbit * pri0-5 traffic routed to TX DMA channel 0 -:: +.. code:: console ip link set dev eth0 down ethtool -L eth0 tx 8 @@ -100,7 +100,7 @@ The MQPRIO Qdisc **shaper bw_rlimit min_rate and max_rate** parameters can be us * if Host sends traffic to the same, rate limited External Ports FIFO then corresponding Host TX DMA channel shapers has to be enabled and its rate has to be set equal or less than External Ports FIFO rate * the rate for shapers has to be set a little bit more then potential incoming rate, and real rates can differ, due to discreetness. -:: +.. code:: console tc qdisc add dev eth0 parent root handle 100: mqprio num_tc 3 \ map 0 0 0 0 0 0 1 2 0 0 0 0 0 0 0 0 \ @@ -120,7 +120,7 @@ In this example Rate Limiting is enabled for Host port TX channels and External * pri6 traffic mapped to TC1, External Ports FIFO1, cir=200Mbit, eir=250Mbit * pri0-5 traffic mapped to TC1, External Ports FIFO0 -:: +.. code:: console ip link set dev eth0 down ethtool -L eth0 tx 8 @@ -181,85 +181,85 @@ Connect eth0 of AM625-SK to eth1 of J7VCL. 1. Create and run the following script on AM625-SK: -:: +.. code:: sh - #!/bin/sh + #!/bin/sh - ifconfig eth0 down - ifconfig eth1 down - ethtool -L eth0 tx 8 - ethtool --set-priv-flags eth0 p0-rx-ptype-rrobin off - ifconfig eth0 up - ifconfig eth0 192.168.1.1 + ifconfig eth0 down + ifconfig eth1 down + ethtool -L eth0 tx 8 + ethtool --set-priv-flags eth0 p0-rx-ptype-rrobin off + ifconfig eth0 up + ifconfig eth0 192.168.1.1 - sleep 10 + sleep 10 - tc qdisc replace dev eth0 handle 100: parent root mqprio num_tc 3 \ - map 0 0 0 0 0 0 1 2 0 0 0 0 0 0 0 0 queues 1@0 1@6 1@7 hw 0 + tc qdisc replace dev eth0 handle 100: parent root mqprio num_tc 3 \ + map 0 0 0 0 0 0 1 2 0 0 0 0 0 0 0 0 queues 1@0 1@6 1@7 hw 0 - echo 106 > /sys/class/net/eth0/queues/tx-7/tx_maxrate - echo 212 > /sys/class/net/eth0/queues/tx-6/tx_maxrate + echo 106 > /sys/class/net/eth0/queues/tx-7/tx_maxrate + echo 212 > /sys/class/net/eth0/queues/tx-6/tx_maxrate - tc qdisc add dev eth0 clsact - tc filter add dev eth0 egress protocol ip prio 1 u32 match ip dport 5001 0xffff action skbedit priority 7 - tc filter add dev eth0 egress protocol ip prio 1 u32 match ip dport 5002 0xffff action skbedit priority 6 + tc qdisc add dev eth0 clsact + tc filter add dev eth0 egress protocol ip prio 1 u32 match ip dport 5001 0xffff action skbedit priority 7 + tc filter add dev eth0 egress protocol ip prio 1 u32 match ip dport 5002 0xffff action skbedit priority 6 In the above script, the tx queues that send data to the host port are rate- limited using the following commands: -:: +.. code:: console - # Rate limit tx queue 7 of eth0 to 106 Mbps - echo 106 > /sys/class/net/eth0/queues/tx-7/tx_maxrate - # Rate limit tx queue 6 of eth0 to 212 Mbps - echo 212 > /sys/class/net/eth0/queues/tx-6/tx_maxrate + # Rate limit tx queue 7 of eth0 to 106 Mbps + echo 106 > /sys/class/net/eth0/queues/tx-7/tx_maxrate + # Rate limit tx queue 6 of eth0 to 212 Mbps + echo 212 > /sys/class/net/eth0/queues/tx-6/tx_maxrate 2. Next, assign IP address of 192.168.1.2 to Port-1 of the CPSW5G ports on J7VCL using: -:: +.. code:: console - ifconfig eth1 192.168.1.2 + ifconfig eth1 192.168.1.2 3. Next, start an iperf server on J7VCL by running: -:: +.. code:: console - iperf3 -s -p 5001& - iperf3 -s -p 5002& - iperf3 -s -p 5003& + iperf3 -s -p 5001& + iperf3 -s -p 5002& + iperf3 -s -p 5003& 4. Now, run the iperf client on AM625-SK using: -:: +.. code:: console - iperf3 -c 192.168.1.2 -t10 -p5001 -Tpri7 & \ - iperf3 -c 192.168.1.2 -t10 -p5002 -Tpri6 & \ - iperf3 -c 192.168.1.2 -t10 -p5003 -Tpri0 + iperf3 -c 192.168.1.2 -t10 -p5001 -Tpri7 & \ + iperf3 -c 192.168.1.2 -t10 -p5002 -Tpri6 & \ + iperf3 -c 192.168.1.2 -t10 -p5003 -Tpri0 **Results:** On AM625-SK: -:: - - pri0: - - - - - - - - - - - - - - - - - - - - - - - - - - pri0: [ ID] Interval Transfer Bitrate Retr - pri0: [ 5] 0.00-10.00 sec 738 MBytes 619 Mbits/sec 162 sender - pri0: [ 5] 0.00-10.00 sec 735 MBytes 617 Mbits/sec receiver - pri0: - pri0: iperf Done. - pri6: - - - - - - - - - - - - - - - - - - - - - - - - - - pri6: [ ID] Interval Transfer Bitrate Retr - pri6: [ 5] 0.00-10.00 sec 221 MBytes 185 Mbits/sec 69 sender - pri6: [ 5] 0.00-10.01 sec 220 MBytes 184 Mbits/sec receiver - pri6: - pri6: iperf Done. - pri7: - - - - - - - - - - - - - - - - - - - - - - - - - - pri7: [ ID] Interval Transfer Bitrate Retr - pri7: [ 5] 0.00-10.00 sec 115 MBytes 96.5 Mbits/sec 37 sender - pri7: [ 5] 0.00-10.01 sec 114 MBytes 95.9 Mbits/sec receiver - pri7: - pri7: iperf Done. +.. code:: console + + pri0: - - - - - - - - - - - - - - - - - - - - - - - - - + pri0: [ ID] Interval Transfer Bitrate Retr + pri0: [ 5] 0.00-10.00 sec 738 MBytes 619 Mbits/sec 162 sender + pri0: [ 5] 0.00-10.00 sec 735 MBytes 617 Mbits/sec receiver + pri0: + pri0: iperf Done. + pri6: - - - - - - - - - - - - - - - - - - - - - - - - - + pri6: [ ID] Interval Transfer Bitrate Retr + pri6: [ 5] 0.00-10.00 sec 221 MBytes 185 Mbits/sec 69 sender + pri6: [ 5] 0.00-10.01 sec 220 MBytes 184 Mbits/sec receiver + pri6: + pri6: iperf Done. + pri7: - - - - - - - - - - - - - - - - - - - - - - - - - + pri7: [ ID] Interval Transfer Bitrate Retr + pri7: [ 5] 0.00-10.00 sec 115 MBytes 96.5 Mbits/sec 37 sender + pri7: [ 5] 0.00-10.01 sec 114 MBytes 95.9 Mbits/sec receiver + pri7: + pri7: iperf Done. Rate-limiting Host Port Ingress on J7VCL ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -270,87 +270,87 @@ Connect eth1 of J7VCL to eth0 of AM625-SK. 1. Create and run the following script on J7VCL: -:: +.. code:: sh - #!/bin/sh + #!/bin/sh - ifconfig eth1 down - ifconfig eth2 down - ifconfig eth3 down - ifconfig eth4 down - ethtool -L eth1 tx 8 - ethtool --set-priv-flags eth1 p0-rx-ptype-rrobin off - ifconfig eth1 up - ifconfig eth1 192.168.1.1 + ifconfig eth1 down + ifconfig eth2 down + ifconfig eth3 down + ifconfig eth4 down + ethtool -L eth1 tx 8 + ethtool --set-priv-flags eth1 p0-rx-ptype-rrobin off + ifconfig eth1 up + ifconfig eth1 192.168.1.1 - sleep 10 + sleep 10 - tc qdisc replace dev eth1 handle 100: parent root mqprio num_tc 3 \ - map 0 0 0 0 0 0 1 2 0 0 0 0 0 0 0 0 queues 1@0 1@6 1@7 hw 0 + tc qdisc replace dev eth1 handle 100: parent root mqprio num_tc 3 \ + map 0 0 0 0 0 0 1 2 0 0 0 0 0 0 0 0 queues 1@0 1@6 1@7 hw 0 - echo 106 > /sys/class/net/eth1/queues/tx-7/tx_maxrate - echo 212 > /sys/class/net/eth1/queues/tx-6/tx_maxrate + echo 106 > /sys/class/net/eth1/queues/tx-7/tx_maxrate + echo 212 > /sys/class/net/eth1/queues/tx-6/tx_maxrate - tc qdisc add dev eth1 clsact - tc filter add dev eth1 egress protocol ip prio 1 u32 match ip dport 5001 0xffff action skbedit priority 7 - tc filter add dev eth1 egress protocol ip prio 1 u32 match ip dport 5002 0xffff action skbedit priority 6 + tc qdisc add dev eth1 clsact + tc filter add dev eth1 egress protocol ip prio 1 u32 match ip dport 5001 0xffff action skbedit priority 7 + tc filter add dev eth1 egress protocol ip prio 1 u32 match ip dport 5002 0xffff action skbedit priority 6 In the above script, the tx queues that send data to the host port are rate- limited using the following commands: -:: +.. code:: console - # Rate limit tx queue 7 of eth0 to 106 Mbps - echo 106 > /sys/class/net/eth0/queues/tx-7/tx_maxrate - # Rate limit tx queue 6 of eth0 to 212 Mbps - echo 212 > /sys/class/net/eth0/queues/tx-6/tx_maxrate + # Rate limit tx queue 7 of eth0 to 106 Mbps + echo 106 > /sys/class/net/eth0/queues/tx-7/tx_maxrate + # Rate limit tx queue 6 of eth0 to 212 Mbps + echo 212 > /sys/class/net/eth0/queues/tx-6/tx_maxrate 2. Next, assign IP address of 192.168.1.2 to Port-1 of the CPSW3G ports on AM625-SK using: -:: +.. code:: console - ifconfig eth0 192.168.1.2 + ifconfig eth0 192.168.1.2 3. Next, start an iperf server on AM625-SK by running: -:: +.. code:: console - iperf3 -s -p 5001& - iperf3 -s -p 5002& - iperf3 -s -p 5003& + iperf3 -s -p 5001& + iperf3 -s -p 5002& + iperf3 -s -p 5003& 4. Now, run the iperf client on J7VCL using: -:: +.. code:: console - iperf3 -c 192.168.1.2 -t10 -p5001 -Tpri7 & \ - iperf3 -c 192.168.1.2 -t10 -p5002 -Tpri6 & \ - iperf3 -c 192.168.1.2 -t10 -p5003 -Tpri0 + iperf3 -c 192.168.1.2 -t10 -p5001 -Tpri7 & \ + iperf3 -c 192.168.1.2 -t10 -p5002 -Tpri6 & \ + iperf3 -c 192.168.1.2 -t10 -p5003 -Tpri0 **Results:** On J7VCL: -:: - - pri0: - - - - - - - - - - - - - - - - - - - - - - - - - - pri0: [ ID] Interval Transfer Bitrate Retr - pri0: [ 5] 0.00-10.00 sec 759 MBytes 637 Mbits/sec 0 sender - pri0: [ 5] 0.00-10.00 sec 756 MBytes 635 Mbits/sec receiver - pri0: - pri0: iperf Done. - pri7: - - - - - - - - - - - - - - - - - - - - - - - - - - pri7: [ ID] Interval Transfer Bitrate Retr - pri7: [ 5] 0.00-10.00 sec 118 MBytes 98.7 Mbits/sec 0 sender - pri7: [ 5] 0.00-10.01 sec 117 MBytes 97.9 Mbits/sec receiver - pri7: - pri7: iperf Done. - pri6: - - - - - - - - - - - - - - - - - - - - - - - - - - pri6: [ ID] Interval Transfer Bitrate Retr - pri6: [ 5] 0.00-10.00 sec 234 MBytes 196 Mbits/sec 0 sender - pri6: [ 5] 0.00-10.01 sec 233 MBytes 195 Mbits/sec receiver - pri6: - pri6: iperf Done. +.. code:: console + + pri0: - - - - - - - - - - - - - - - - - - - - - - - - - + pri0: [ ID] Interval Transfer Bitrate Retr + pri0: [ 5] 0.00-10.00 sec 759 MBytes 637 Mbits/sec 0 sender + pri0: [ 5] 0.00-10.00 sec 756 MBytes 635 Mbits/sec receiver + pri0: + pri0: iperf Done. + pri7: - - - - - - - - - - - - - - - - - - - - - - - - - + pri7: [ ID] Interval Transfer Bitrate Retr + pri7: [ 5] 0.00-10.00 sec 118 MBytes 98.7 Mbits/sec 0 sender + pri7: [ 5] 0.00-10.01 sec 117 MBytes 97.9 Mbits/sec receiver + pri7: + pri7: iperf Done. + pri6: - - - - - - - - - - - - - - - - - - - - - - - - - + pri6: [ ID] Interval Transfer Bitrate Retr + pri6: [ 5] 0.00-10.00 sec 234 MBytes 196 Mbits/sec 0 sender + pri6: [ 5] 0.00-10.01 sec 233 MBytes 195 Mbits/sec receiver + pri6: + pri6: iperf Done. Rate-limiting Switch Egress on AM625-SK (Data sent from Host Port of AM625-SK to J7VCL) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -361,77 +361,77 @@ Connect eth0 of AM625-SK to eth1 of J7VCL. 1. Create and run the following script on AM625-SK: -:: +.. code:: sh - #!/bin/sh + #!/bin/sh - ifconfig eth0 down - ifconfig eth1 down - ethtool -L eth0 tx 8 - ethtool --set-priv-flags eth0 p0-rx-ptype-rrobin off - ifconfig eth0 up - ifconfig eth0 192.168.1.1 + ifconfig eth0 down + ifconfig eth1 down + ethtool -L eth0 tx 8 + ethtool --set-priv-flags eth0 p0-rx-ptype-rrobin off + ifconfig eth0 up + ifconfig eth0 192.168.1.1 - sleep 10 + sleep 10 - tc qdisc add dev eth0 parent root handle 100: mqprio num_tc 3 \ - map 0 0 0 0 0 0 1 2 0 0 0 0 0 0 0 0 \ - queues 1@0 1@6 1@7 hw 1 mode channel \ - shaper bw_rlimit min_rate 0 212mbit 106mbit max_rate 0 250mbit 150mbit + tc qdisc add dev eth0 parent root handle 100: mqprio num_tc 3 \ + map 0 0 0 0 0 0 1 2 0 0 0 0 0 0 0 0 \ + queues 1@0 1@6 1@7 hw 1 mode channel \ + shaper bw_rlimit min_rate 0 212mbit 106mbit max_rate 0 250mbit 150mbit - echo 106 > /sys/class/net/eth0/queues/tx-7/tx_maxrate - echo 212 > /sys/class/net/eth0/queues/tx-6/tx_maxrate + echo 106 > /sys/class/net/eth0/queues/tx-7/tx_maxrate + echo 212 > /sys/class/net/eth0/queues/tx-6/tx_maxrate - tc qdisc add dev eth0 clsact - tc filter add dev eth0 egress protocol ip prio 1 u32 match ip dport 5001 0xffff action skbedit priority 7 - tc filter add dev eth0 egress protocol ip prio 1 u32 match ip dport 5002 0xffff action skbedit priority 6 + tc qdisc add dev eth0 clsact + tc filter add dev eth0 egress protocol ip prio 1 u32 match ip dport 5001 0xffff action skbedit priority 7 + tc filter add dev eth0 egress protocol ip prio 1 u32 match ip dport 5002 0xffff action skbedit priority 6 2. Assign IP address of 192.168.1.2 to Port-1 of the CPSW5G ports on J7VCL using: -:: +.. code:: console - ifconfig eth1 192.168.1.2 + ifconfig eth1 192.168.1.2 3. Next, start an iperf server on J7VCL using: -:: +.. code:: console - iperf3 -s -p 5001& - iperf3 -s -p 5002& - iperf3 -s -p 5003& + iperf3 -s -p 5001& + iperf3 -s -p 5002& + iperf3 -s -p 5003& 4. Now, run the iperf client on AM625-SK using: -:: +.. code:: console - iperf3 -c 192.168.1.2 -t10 -p5001 -Tpri7 & \ - iperf3 -c 192.168.1.2 -t10 -p5002 -Tpri6 & \ - iperf3 -c 192.168.1.2 -t10 -p5003 -Tpri0 + iperf3 -c 192.168.1.2 -t10 -p5001 -Tpri7 & \ + iperf3 -c 192.168.1.2 -t10 -p5002 -Tpri6 & \ + iperf3 -c 192.168.1.2 -t10 -p5003 -Tpri0 **Results:** On AM625-SK: -:: - - pri7: - - - - - - - - - - - - - - - - - - - - - - - - - - pri7: [ ID] Interval Transfer Bitrate Retr - pri7: [ 5] 0.00-10.00 sec 116 MBytes 97.1 Mbits/sec 17 sender - pri7: [ 5] 0.00-10.00 sec 115 MBytes 96.5 Mbits/sec receiver - pri7: - pri7: iperf Done. - pri6: - - - - - - - - - - - - - - - - - - - - - - - - - - pri6: [ ID] Interval Transfer Bitrate Retr - pri6: [ 5] 0.00-10.00 sec 226 MBytes 190 Mbits/sec 33 sender - pri6: [ 5] 0.00-10.01 sec 225 MBytes 189 Mbits/sec receiver - pri6: - pri6: iperf Done. - pri0: - - - - - - - - - - - - - - - - - - - - - - - - - - pri0: [ ID] Interval Transfer Bitrate Retr - pri0: [ 5] 0.00-10.00 sec 716 MBytes 601 Mbits/sec 42 sender - pri0: [ 5] 0.00-10.00 sec 714 MBytes 598 Mbits/sec receiver - pri0: - pri0: iperf Done. +.. code:: console + + pri7: - - - - - - - - - - - - - - - - - - - - - - - - - + pri7: [ ID] Interval Transfer Bitrate Retr + pri7: [ 5] 0.00-10.00 sec 116 MBytes 97.1 Mbits/sec 17 sender + pri7: [ 5] 0.00-10.00 sec 115 MBytes 96.5 Mbits/sec receiver + pri7: + pri7: iperf Done. + pri6: - - - - - - - - - - - - - - - - - - - - - - - - - + pri6: [ ID] Interval Transfer Bitrate Retr + pri6: [ 5] 0.00-10.00 sec 226 MBytes 190 Mbits/sec 33 sender + pri6: [ 5] 0.00-10.01 sec 225 MBytes 189 Mbits/sec receiver + pri6: + pri6: iperf Done. + pri0: - - - - - - - - - - - - - - - - - - - - - - - - - + pri0: [ ID] Interval Transfer Bitrate Retr + pri0: [ 5] 0.00-10.00 sec 716 MBytes 601 Mbits/sec 42 sender + pri0: [ 5] 0.00-10.00 sec 714 MBytes 598 Mbits/sec receiver + pri0: + pri0: iperf Done. Rate-limiting Switch Egress on J7VCL (Data sent from Host Port of J7VCL to AM625-SK) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -442,79 +442,79 @@ Connect eth1 of J7VCL to eth0 of AM625-SK. 1. Create and run the following script on J7VCL: -:: +.. code:: sh - #!/bin/sh + #!/bin/sh - ifconfig eth1 down - ifconfig eth2 down - ifconfig eth3 down - ifconfig eth4 down - ethtool -L eth1 tx 8 - ethtool --set-priv-flags eth1 p0-rx-ptype-rrobin off - ifconfig eth1 up - ifconfig eth1 192.168.1.1 + ifconfig eth1 down + ifconfig eth2 down + ifconfig eth3 down + ifconfig eth4 down + ethtool -L eth1 tx 8 + ethtool --set-priv-flags eth1 p0-rx-ptype-rrobin off + ifconfig eth1 up + ifconfig eth1 192.168.1.1 - sleep 10 + sleep 10 - tc qdisc add dev eth1 parent root handle 100: mqprio num_tc 3 \ - map 0 0 0 0 0 0 1 2 0 0 0 0 0 0 0 0 \ - queues 1@0 1@6 1@7 hw 1 mode channel \ - shaper bw_rlimit min_rate 0 212mbit 106mbit max_rate 0 250mbit 150mbit + tc qdisc add dev eth1 parent root handle 100: mqprio num_tc 3 \ + map 0 0 0 0 0 0 1 2 0 0 0 0 0 0 0 0 \ + queues 1@0 1@6 1@7 hw 1 mode channel \ + shaper bw_rlimit min_rate 0 212mbit 106mbit max_rate 0 250mbit 150mbit - echo 106 > /sys/class/net/eth1/queues/tx-7/tx_maxrate - echo 212 > /sys/class/net/eth1/queues/tx-6/tx_maxrate + echo 106 > /sys/class/net/eth1/queues/tx-7/tx_maxrate + echo 212 > /sys/class/net/eth1/queues/tx-6/tx_maxrate - tc qdisc add dev eth1 clsact - tc filter add dev eth1 egress protocol ip prio 1 u32 match ip dport 5001 0xffff action skbedit priority 7 - tc filter add dev eth1 egress protocol ip prio 1 u32 match ip dport 5002 0xffff action skbedit priority 6 + tc qdisc add dev eth1 clsact + tc filter add dev eth1 egress protocol ip prio 1 u32 match ip dport 5001 0xffff action skbedit priority 7 + tc filter add dev eth1 egress protocol ip prio 1 u32 match ip dport 5002 0xffff action skbedit priority 6 2. Assign IP address of 192.168.1.2 to Port-1 of the CPSW3G ports on AM625-SK using: -:: +.. code:: console - ifconfig eth0 192.168.1.2 + ifconfig eth0 192.168.1.2 3. Next, start an iperf server on AM625-SK using: -:: +.. code:: console - iperf3 -s -p 5001& - iperf3 -s -p 5002& - iperf3 -s -p 5003& + iperf3 -s -p 5001& + iperf3 -s -p 5002& + iperf3 -s -p 5003& 4. Now, run the iperf client on J7VCL using: -:: +.. code:: console - iperf3 -c 192.168.1.2 -t10 -p5001 -Tpri7 & \ - iperf3 -c 192.168.1.2 -t10 -p5002 -Tpri6 & \ - iperf3 -c 192.168.1.2 -t10 -p5003 -Tpri0 + iperf3 -c 192.168.1.2 -t10 -p5001 -Tpri7 & \ + iperf3 -c 192.168.1.2 -t10 -p5002 -Tpri6 & \ + iperf3 -c 192.168.1.2 -t10 -p5003 -Tpri0 **Results:** On J7VCL: -:: - - pri0: - - - - - - - - - - - - - - - - - - - - - - - - - - pri0: [ ID] Interval Transfer Bitrate Retr - pri0: [ 5] 0.00-10.00 sec 746 MBytes 626 Mbits/sec 0 sender - pri0: [ 5] 0.00-10.00 sec 744 MBytes 624 Mbits/sec receiver - pri0: - pri0: iperf Done. - pri6: - - - - - - - - - - - - - - - - - - - - - - - - - - pri6: [ ID] Interval Transfer Bitrate Retr - pri6: [ 5] 0.00-10.00 sec 234 MBytes 196 Mbits/sec 0 sender - pri6: [ 5] 0.00-10.01 sec 233 MBytes 195 Mbits/sec receiver - pri6: - pri6: iperf Done. - pri7: - - - - - - - - - - - - - - - - - - - - - - - - - - pri7: [ ID] Interval Transfer Bitrate Retr - pri7: [ 5] 0.00-10.00 sec 119 MBytes 99.4 Mbits/sec 0 sender - pri7: [ 5] 0.00-10.01 sec 117 MBytes 98.3 Mbits/sec receiver - pri7: - pri7: iperf Done. +.. code:: console + + pri0: - - - - - - - - - - - - - - - - - - - - - - - - - + pri0: [ ID] Interval Transfer Bitrate Retr + pri0: [ 5] 0.00-10.00 sec 746 MBytes 626 Mbits/sec 0 sender + pri0: [ 5] 0.00-10.00 sec 744 MBytes 624 Mbits/sec receiver + pri0: + pri0: iperf Done. + pri6: - - - - - - - - - - - - - - - - - - - - - - - - - + pri6: [ ID] Interval Transfer Bitrate Retr + pri6: [ 5] 0.00-10.00 sec 234 MBytes 196 Mbits/sec 0 sender + pri6: [ 5] 0.00-10.01 sec 233 MBytes 195 Mbits/sec receiver + pri6: + pri6: iperf Done. + pri7: - - - - - - - - - - - - - - - - - - - - - - - - - + pri7: [ ID] Interval Transfer Bitrate Retr + pri7: [ 5] 0.00-10.00 sec 119 MBytes 99.4 Mbits/sec 0 sender + pri7: [ 5] 0.00-10.01 sec 117 MBytes 98.3 Mbits/sec receiver + pri7: + pri7: iperf Done. CBS in Switch mode ------------------ @@ -525,10 +525,10 @@ to the size limit of the TX FIFO queue. .. note:: - All three devices (AM625-SK, AM64-SK and J7VCL) must be a part of the - same VLAN, to ensure that the priority field is included in the - packets, enabling the switch to identify the priority and rate-limit - traffic accordingly. + All three devices (AM625-SK, AM64-SK and J7VCL) must be a part of the + same VLAN, to ensure that the priority field is included in the + packets, enabling the switch to identify the priority and rate-limit + traffic accordingly. Rate limiting Switch Egress on AM625-SK (Data sent from AM64-SK to J7VCL via AM625-SK switch) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -540,111 +540,111 @@ eth1. 1. Create and run the following script on AM625-SK: -:: +.. code:: sh - #!/bin/sh - ifconfig eth0 down - ifconfig eth1 down - ethtool -L eth1 tx 8 - ethtool --set-priv-flags eth1 p0-rx-ptype-rrobin off + #!/bin/sh + ifconfig eth0 down + ifconfig eth1 down + ethtool -L eth1 tx 8 + ethtool --set-priv-flags eth1 p0-rx-ptype-rrobin off - devlink dev param set platform/8000000.ethernet name switch_mode value true cmode runtime - ip link add name br0 type bridge - ip link set dev br0 type bridge ageing_time 1000 - ip link set dev eth0 up - ip link set dev eth1 up - sleep 10 + devlink dev param set platform/8000000.ethernet name switch_mode value true cmode runtime + ip link add name br0 type bridge + ip link set dev br0 type bridge ageing_time 1000 + ip link set dev eth0 up + ip link set dev eth1 up + sleep 10 - ip link set dev eth0 master br0 - ip link set dev eth1 master br0 - ip link set dev br0 up - ip link set dev br0 type bridge vlan_filtering 1 - bridge vlan add dev br0 vid 1 self - bridge vlan add dev br0 vid 1 pvid untagged self - bridge vlan add dev eth0 vid 100 master - bridge vlan add dev eth1 vid 100 master + ip link set dev eth0 master br0 + ip link set dev eth1 master br0 + ip link set dev br0 up + ip link set dev br0 type bridge vlan_filtering 1 + bridge vlan add dev br0 vid 1 self + bridge vlan add dev br0 vid 1 pvid untagged self + bridge vlan add dev eth0 vid 100 master + bridge vlan add dev eth1 vid 100 master - tc qdisc add dev eth1 parent root handle 100: mqprio num_tc 3 \ - map 0 0 0 0 0 0 1 2 0 0 0 0 0 0 0 0 \ - queues 1@0 1@6 1@7 hw 1 mode channel \ - shaper bw_rlimit min_rate 99mbit 211mbit 105mbit max_rate 100mbit 212mbit 106mbit + tc qdisc add dev eth1 parent root handle 100: mqprio num_tc 3 \ + map 0 0 0 0 0 0 1 2 0 0 0 0 0 0 0 0 \ + queues 1@0 1@6 1@7 hw 1 mode channel \ + shaper bw_rlimit min_rate 99mbit 211mbit 105mbit max_rate 100mbit 212mbit 106mbit 2. Create and run the following script on AM64-SK: -:: +.. code:: sh - #!/bin/sh + #!/bin/sh - ifconfig eth0 down - ifconfig eth1 down - ethtool -L eth0 tx 8 - ethtool --set-priv-flags eth0 p0-rx-ptype-rrobin off - ifconfig eth0 up - sleep 5 + ifconfig eth0 down + ifconfig eth1 down + ethtool -L eth0 tx 8 + ethtool --set-priv-flags eth0 p0-rx-ptype-rrobin off + ifconfig eth0 up + sleep 5 - ip link add link eth0 name eth0.100 type vlan id 100 - ip link set eth0.100 type vlan egress 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 - sleep 5 - ifconfig eth0.100 192.168.1.1 netmask 255.255.255.0 - sleep 2 + ip link add link eth0 name eth0.100 type vlan id 100 + ip link set eth0.100 type vlan egress 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 + sleep 5 + ifconfig eth0.100 192.168.1.1 netmask 255.255.255.0 + sleep 2 - echo 106 > /sys/class/net/eth0/queues/tx-7/tx_maxrate - echo 212 > /sys/class/net/eth0/queues/tx-6/tx_maxrate + echo 106 > /sys/class/net/eth0/queues/tx-7/tx_maxrate + echo 212 > /sys/class/net/eth0/queues/tx-6/tx_maxrate - tc qdisc add dev eth0.100 clsact - tc filter add dev eth0.100 egress protocol ip prio 1 u32 match ip dport 5001 0xffff action skbedit priority 7 - tc filter add dev eth0.100 egress protocol ip prio 1 u32 match ip dport 5002 0xffff action skbedit priority 6 + tc qdisc add dev eth0.100 clsact + tc filter add dev eth0.100 egress protocol ip prio 1 u32 match ip dport 5001 0xffff action skbedit priority 7 + tc filter add dev eth0.100 egress protocol ip prio 1 u32 match ip dport 5002 0xffff action skbedit priority 6 - tc qdisc add dev eth0 parent root handle 100: mqprio num_tc 3 \ - map 0 0 0 0 0 0 1 2 0 0 0 0 0 0 0 0 \ - queues 1@0 1@6 1@7 hw 1 mode channel \ - shaper bw_rlimit min_rate 101mbit 213mbit 107mbit max_rate 102mbit 214mbit 108mbit + tc qdisc add dev eth0 parent root handle 100: mqprio num_tc 3 \ + map 0 0 0 0 0 0 1 2 0 0 0 0 0 0 0 0 \ + queues 1@0 1@6 1@7 hw 1 mode channel \ + shaper bw_rlimit min_rate 101mbit 213mbit 107mbit max_rate 102mbit 214mbit 108mbit 3. Create and run the following scripts on J7VCL: -:: +.. code:: sh - #!/bin/sh + #!/bin/sh - ip link add link eth1 name eth1.100 type vlan id 100 - sleep 5 - ifconfig eth1.100 192.168.1.2 netmask 255.255.255.0 - sleep 2 - iperf3 -s -p 5001& - iperf3 -s -p 5002& - iperf3 -s -p 5003& + ip link add link eth1 name eth1.100 type vlan id 100 + sleep 5 + ifconfig eth1.100 192.168.1.2 netmask 255.255.255.0 + sleep 2 + iperf3 -s -p 5001& + iperf3 -s -p 5002& + iperf3 -s -p 5003& 4. Now, run the iperf client on AM64-SK using the following commands: -:: +.. code:: console - iperf3 -c 192.168.1.2 -u -b108M -t10 -p5001 -Tpri7 & \ - iperf3 -c 192.168.1.2 -u -b214M -t10 -p5002 -Tpri6 & \ - iperf3 -c 192.168.1.2 -u -b102M -t10 -p5003 -Tpri0 + iperf3 -c 192.168.1.2 -u -b108M -t10 -p5001 -Tpri7 & \ + iperf3 -c 192.168.1.2 -u -b214M -t10 -p5002 -Tpri6 & \ + iperf3 -c 192.168.1.2 -u -b102M -t10 -p5003 -Tpri0 **Results:** -:: - - pri7: - - - - - - - - - - - - - - - - - - - - - - - - - - pri7: [ ID] Interval Transfer Bitrate Jitter Lost/Total Datagrams - pri7: [ 5] 0.00-10.00 sec 120 MBytes 101 Mbits/sec 0.000 ms 0/87099 (0%) sender - pri7: [ 5] 0.00-10.01 sec 115 MBytes 96.6 Mbits/sec 0.027 ms 3682/87099 (4.2%) receiver - pri7: - pri7: iperf Done. - pri6: - - - - - - - - - - - - - - - - - - - - - - - - - - pri6: [ ID] Interval Transfer Bitrate Jitter Lost/Total Datagrams - pri6: [ 5] 0.00-10.00 sec 241 MBytes 202 Mbits/sec 0.000 ms 0/174308 (0%) sender - pri6: [ 5] 0.00-10.00 sec 228 MBytes 191 Mbits/sec 0.104 ms 9203/174308 (5.3%) receiver - pri6: - pri6: iperf Done. - pri0: - - - - - - - - - - - - - - - - - - - - - - - - - - pri0: [ ID] Interval Transfer Bitrate Jitter Lost/Total Datagrams - pri0: [ 5] 0.00-10.00 sec 116 MBytes 97.3 Mbits/sec 0.000 ms 0/84000 (0%) sender - pri0: [ 5] 0.00-10.00 sec 114 MBytes 95.3 Mbits/sec 0.028 ms 1700/83958 (2%) receiver - pri0: - pri0: iperf Done. +.. code:: console + + pri7: - - - - - - - - - - - - - - - - - - - - - - - - - + pri7: [ ID] Interval Transfer Bitrate Jitter Lost/Total Datagrams + pri7: [ 5] 0.00-10.00 sec 120 MBytes 101 Mbits/sec 0.000 ms 0/87099 (0%) sender + pri7: [ 5] 0.00-10.01 sec 115 MBytes 96.6 Mbits/sec 0.027 ms 3682/87099 (4.2%) receiver + pri7: + pri7: iperf Done. + pri6: - - - - - - - - - - - - - - - - - - - - - - - - - + pri6: [ ID] Interval Transfer Bitrate Jitter Lost/Total Datagrams + pri6: [ 5] 0.00-10.00 sec 241 MBytes 202 Mbits/sec 0.000 ms 0/174308 (0%) sender + pri6: [ 5] 0.00-10.00 sec 228 MBytes 191 Mbits/sec 0.104 ms 9203/174308 (5.3%) receiver + pri6: + pri6: iperf Done. + pri0: - - - - - - - - - - - - - - - - - - - - - - - - - + pri0: [ ID] Interval Transfer Bitrate Jitter Lost/Total Datagrams + pri0: [ 5] 0.00-10.00 sec 116 MBytes 97.3 Mbits/sec 0.000 ms 0/84000 (0%) sender + pri0: [ 5] 0.00-10.00 sec 114 MBytes 95.3 Mbits/sec 0.028 ms 1700/83958 (2%) receiver + pri0: + pri0: iperf Done. Rate-limiting Switch Egress on J7VCL (Data sent from AM64-SK to AM625-SK via J7VCL switch) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -655,110 +655,110 @@ Connect AM64-SK's eth0 to J7VCL's eth1 and AM625-SK's eth0 to J7VCL's eth2. 1. Create and run the following script on J7VCL: -:: - - #!/bin/sh - ifconfig eth1 down - ifconfig eth2 down - ifconfig eth3 down - ifconfig eth4 down - ethtool -L eth2 tx 8 - ethtool --set-priv-flags eth2 p0-rx-ptype-rrobin off - - devlink dev param set platform/c000000.ethernet name switch_mode value true cmode runtime - ip link add name br0 type bridge - ip link set dev br0 type bridge ageing_time 1000 - ip link set dev eth1 up - ip link set dev eth2 up - sleep 10 - - ip link set dev eth1 master br0 - ip link set dev eth2 master br0 - ip link set dev br0 up - ip link set dev br0 type bridge vlan_filtering 1 - bridge vlan add dev br0 vid 1 self - bridge vlan add dev br0 vid 1 pvid untagged self - bridge vlan add dev eth1 vid 100 master - bridge vlan add dev eth2 vid 100 master - - - tc qdisc add dev eth2 parent root handle 100: mqprio num_tc 3 \ - map 0 0 0 0 0 0 1 2 0 0 0 0 0 0 0 0 \ - queues 1@0 1@6 1@7 hw 1 mode channel \ - shaper bw_rlimit min_rate 99mbit 211mbit 105mbit max_rate 100mbit 212mbit 106mbit +.. code:: sh + + #!/bin/sh + ifconfig eth1 down + ifconfig eth2 down + ifconfig eth3 down + ifconfig eth4 down + ethtool -L eth2 tx 8 + ethtool --set-priv-flags eth2 p0-rx-ptype-rrobin off + + devlink dev param set platform/c000000.ethernet name switch_mode value true cmode runtime + ip link add name br0 type bridge + ip link set dev br0 type bridge ageing_time 1000 + ip link set dev eth1 up + ip link set dev eth2 up + sleep 10 + + ip link set dev eth1 master br0 + ip link set dev eth2 master br0 + ip link set dev br0 up + ip link set dev br0 type bridge vlan_filtering 1 + bridge vlan add dev br0 vid 1 self + bridge vlan add dev br0 vid 1 pvid untagged self + bridge vlan add dev eth1 vid 100 master + bridge vlan add dev eth2 vid 100 master + + + tc qdisc add dev eth2 parent root handle 100: mqprio num_tc 3 \ + map 0 0 0 0 0 0 1 2 0 0 0 0 0 0 0 0 \ + queues 1@0 1@6 1@7 hw 1 mode channel \ + shaper bw_rlimit min_rate 99mbit 211mbit 105mbit max_rate 100mbit 212mbit 106mbit 2. Create and run the following script on AM64-SK: -:: +.. code:: sh - #!/bin/sh + #!/bin/sh - ifconfig eth0 down - ifconfig eth1 down - ethtool -L eth0 tx 8 - ethtool --set-priv-flags eth0 p0-rx-ptype-rrobin off - ifconfig eth0 up - sleep 5 + ifconfig eth0 down + ifconfig eth1 down + ethtool -L eth0 tx 8 + ethtool --set-priv-flags eth0 p0-rx-ptype-rrobin off + ifconfig eth0 up + sleep 5 - ip link add link eth0 name eth0.100 type vlan id 100 - ip link set eth0.100 type vlan egress 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 - sleep 5 - ifconfig eth0.100 192.168.1.1 netmask 255.255.255.0 - sleep 2 + ip link add link eth0 name eth0.100 type vlan id 100 + ip link set eth0.100 type vlan egress 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 + sleep 5 + ifconfig eth0.100 192.168.1.1 netmask 255.255.255.0 + sleep 2 - echo 106 > /sys/class/net/eth0/queues/tx-7/tx_maxrate - echo 212 > /sys/class/net/eth0/queues/tx-6/tx_maxrate + echo 106 > /sys/class/net/eth0/queues/tx-7/tx_maxrate + echo 212 > /sys/class/net/eth0/queues/tx-6/tx_maxrate - tc qdisc add dev eth0.100 clsact - tc filter add dev eth0.100 egress protocol ip prio 1 u32 match ip dport 5001 0xffff action skbedit priority 7 - tc filter add dev eth0.100 egress protocol ip prio 1 u32 match ip dport 5002 0xffff action skbedit priority 6 + tc qdisc add dev eth0.100 clsact + tc filter add dev eth0.100 egress protocol ip prio 1 u32 match ip dport 5001 0xffff action skbedit priority 7 + tc filter add dev eth0.100 egress protocol ip prio 1 u32 match ip dport 5002 0xffff action skbedit priority 6 - tc qdisc add dev eth0 parent root handle 100: mqprio num_tc 3 \ - map 0 0 0 0 0 0 1 2 0 0 0 0 0 0 0 0 \ - queues 1@0 1@6 1@7 hw 1 mode channel \ - shaper bw_rlimit min_rate 101mbit 213mbit 107mbit max_rate 102mbit 214mbit 108mbit + tc qdisc add dev eth0 parent root handle 100: mqprio num_tc 3 \ + map 0 0 0 0 0 0 1 2 0 0 0 0 0 0 0 0 \ + queues 1@0 1@6 1@7 hw 1 mode channel \ + shaper bw_rlimit min_rate 101mbit 213mbit 107mbit max_rate 102mbit 214mbit 108mbit 3. Create and run the following script on AM625-SK: -:: +.. code:: sh - #!/bin/sh + #!/bin/sh - ip link add link eth0 name eth0.100 type vlan id 100 - sleep 5 - ifconfig eth0.100 192.168.1.2 netmask 255.255.255.0 - sleep 2 - iperf3 -s -p 5001& - iperf3 -s -p 5002& - iperf3 -s -p 5003& + ip link add link eth0 name eth0.100 type vlan id 100 + sleep 5 + ifconfig eth0.100 192.168.1.2 netmask 255.255.255.0 + sleep 2 + iperf3 -s -p 5001& + iperf3 -s -p 5002& + iperf3 -s -p 5003& 4. Now, run the iperf client on AM64-SK using the following commands: -:: +.. code:: console - iperf3 -c 192.168.1.2 -u -b108M -t10 -p5001 -Tpri7 & \ - iperf3 -c 192.168.1.2 -u -b214M -t10 -p5002 -Tpri6 & \ - iperf3 -c 192.168.1.2 -u -b102M -t10 -p5003 -Tpri0 + iperf3 -c 192.168.1.2 -u -b108M -t10 -p5001 -Tpri7 & \ + iperf3 -c 192.168.1.2 -u -b214M -t10 -p5002 -Tpri6 & \ + iperf3 -c 192.168.1.2 -u -b102M -t10 -p5003 -Tpri0 **Results:** -:: - - pri6: - - - - - - - - - - - - - - - - - - - - - - - - - - pri6: [ ID] Interval Transfer Bitrate Jitter Lost/Total Datagrams - pri6: [ 5] 0.00-10.00 sec 240 MBytes 201 Mbits/sec 0.000 ms 0/173574 (0%) sender - pri6: [ 5] 0.00-10.03 sec 215 MBytes 180 Mbits/sec 0.083 ms 18116/173574 (10%) receiver - pri6: - pri6: iperf Done. - pri7: - - - - - - - - - - - - - - - - - - - - - - - - - - pri7: [ ID] Interval Transfer Bitrate Jitter Lost/Total Datagrams - pri7: [ 5] 0.00-10.00 sec 120 MBytes 101 Mbits/sec 0.000 ms 0/86842 (0%) sender - pri7: [ 5] 0.00-10.05 sec 117 MBytes 97.5 Mbits/sec 0.010 ms 2279/86842 (2.6%) receiver - pri7: - pri7: iperf Done. - pri0: - - - - - - - - - - - - - - - - - - - - - - - - - - pri0: [ ID] Interval Transfer Bitrate Jitter Lost/Total Datagrams - pri0: [ 5] 0.00-10.00 sec 116 MBytes 97.2 Mbits/sec 0.000 ms 0/83913 (0%) sender - pri0: [ 5] 0.00-10.01 sec 113 MBytes 95.1 Mbits/sec 0.009 ms 1683/83848 (2%) receiver - pri0: - pri0: iperf Done. +.. code:: console + + pri6: - - - - - - - - - - - - - - - - - - - - - - - - - + pri6: [ ID] Interval Transfer Bitrate Jitter Lost/Total Datagrams + pri6: [ 5] 0.00-10.00 sec 240 MBytes 201 Mbits/sec 0.000 ms 0/173574 (0%) sender + pri6: [ 5] 0.00-10.03 sec 215 MBytes 180 Mbits/sec 0.083 ms 18116/173574 (10%) receiver + pri6: + pri6: iperf Done. + pri7: - - - - - - - - - - - - - - - - - - - - - - - - - + pri7: [ ID] Interval Transfer Bitrate Jitter Lost/Total Datagrams + pri7: [ 5] 0.00-10.00 sec 120 MBytes 101 Mbits/sec 0.000 ms 0/86842 (0%) sender + pri7: [ 5] 0.00-10.05 sec 117 MBytes 97.5 Mbits/sec 0.010 ms 2279/86842 (2.6%) receiver + pri7: + pri7: iperf Done. + pri0: - - - - - - - - - - - - - - - - - - - - - - - - - + pri0: [ ID] Interval Transfer Bitrate Jitter Lost/Total Datagrams + pri0: [ 5] 0.00-10.00 sec 116 MBytes 97.2 Mbits/sec 0.000 ms 0/83913 (0%) sender + pri0: [ 5] 0.00-10.01 sec 113 MBytes 95.1 Mbits/sec 0.009 ms 1683/83848 (2%) receiver + pri0: + pri0: iperf Done. diff --git a/source/linux/Foundational_Components/Kernel/Kernel_Drivers/Network/CPSW-EST.rst b/source/linux/Foundational_Components/Kernel/Kernel_Drivers/Network/CPSW-EST.rst index 3c336413d..ce3170dde 100644 --- a/source/linux/Foundational_Components/Kernel/Kernel_Drivers/Network/CPSW-EST.rst +++ b/source/linux/Foundational_Components/Kernel/Kernel_Drivers/Network/CPSW-EST.rst @@ -4,7 +4,7 @@ EST === .. contents:: :local: - :depth: 3 + :depth: 3 Introduction ------------ @@ -36,66 +36,66 @@ An example configuration with 3 schedule entries given below:- Here are the steps to configure this schedule. -:: - - #Setup interface and queue configuration - #Bring down all interfaces associated with the same CPSW instance to update tx channels - ip link set dev eth0 down - ethtool -L eth0 tx 3 - - #disable rrobin - ethtool --set-priv-flags eth0 p0-rx-ptype-rrobin off - - #bring up eth0 interface - ip link set dev eth0 up - #Setup EST schedule with 3 Gates (Q0-Q2). For description of Command parameters, see manual page for taprio. - #TC0 <-> Q0, TC1 <-> Q1, and TC2 <-> Q2 - tc qdisc replace dev eth0 parent root handle 100 taprio \ - num_tc 3 \ - map 0 0 1 2 0 0 0 0 0 0 0 0 0 0 0 0 \ - queues 1@0 1@1 1@2 \ - base-time 0000 \ - sched-entry S 4 125000 \ - sched-entry S 2 125000 \ - sched-entry S 1 250000 \ - flags 2 - - #Where num_tc is same as number of queues = 3, map, maps 16 priorities to one of 3 TCs, queues specify the - #Queue associated with each TC, TC0 - One queue @0, TC1 - One queue @1 and TC2 - One queue @2 - # sched-entry S 4 125000 - # S - SetGateStates operation - # 4 - Bit mask showing bit 2 set (Q2/TC2) - # 125000 - 125000 nsecs (125 usecs ) duration of Gate open - # The cycle-time is 500 msec - - #enable classifier. Classifier is used to mark the packet based on packet meta data. For example UDP port - #number - tc qdisc add dev eth0 clsact - - #Using tc filter command edit the SKB priority based on udp port number. i.e Udp port 5003 -> prio 3 (TC2/Q2), port 5002 -> prio 2 (TC1/Q1), 5001 -> prio 1( TC0/Q0) - tc filter add dev eth0 egress protocol ip prio 1 u32 match ip dport 5003 0xffff action skbedit priority 3 - tc filter add dev eth0 egress protocol ip prio 1 u32 match ip dport 5002 0xffff action skbedit priority 2 - tc filter add dev eth0 egress protocol ip prio 1 u32 match ip dport 5001 0xffff action skbedit priority 1 - - #Network core and Driver uses the skb priority to deliver frames to specific hardware queues. In the above case, - #priority 3 SKB (packet) goes to Q2 (4th entry in map in the tc qdisc command), priority 2 SKB goes to Q1 - #(3rd entry in map) and priority 1 SKB goes to Q0 (2nd entry in map) - - #Run 3 iperf sessions, each with udp port 5001, 5002 and 5003 as - #Remote PC connected to eth0 with IP address 192.168.2.10 - iperf3 -s -i30 -p5001& - iperf3 -s -i30 -p5002& - iperf3 -s -i30 -p5003& - - #At DUT, start trasmission of stream using iperf3 - ip addr add 192.168.2.20/24 dev eth0 - ip link set dev eth0 up - iperf3 -c 192.168.2.10 -u -b100M -p 5003 -l1472 -t10 -i5& - iperf3 -c 192.168.2.10 -u -b100M -p 5002 -l1472 -t10 -i5& - iperf3 -c 192.168.2.10 -u -b100M -p 5001 -l1472 -t10 -i5& - - #Capture frame using wireshark at the PC to see how EST work. The frames will be on the wire only at - #scheduled time and a periodic burst of frames will be seen every 500 milli seconds. +.. code:: console + + #Setup interface and queue configuration + #Bring down all interfaces associated with the same CPSW instance to update tx channels + ip link set dev eth0 down + ethtool -L eth0 tx 3 + + #disable rrobin + ethtool --set-priv-flags eth0 p0-rx-ptype-rrobin off + + #bring up eth0 interface + ip link set dev eth0 up + #Setup EST schedule with 3 Gates (Q0-Q2). For description of Command parameters, see manual page for taprio. + #TC0 <-> Q0, TC1 <-> Q1, and TC2 <-> Q2 + tc qdisc replace dev eth0 parent root handle 100 taprio \ + num_tc 3 \ + map 0 0 1 2 0 0 0 0 0 0 0 0 0 0 0 0 \ + queues 1@0 1@1 1@2 \ + base-time 0000 \ + sched-entry S 4 125000 \ + sched-entry S 2 125000 \ + sched-entry S 1 250000 \ + flags 2 + + #Where num_tc is same as number of queues = 3, map, maps 16 priorities to one of 3 TCs, queues specify the + #Queue associated with each TC, TC0 - One queue @0, TC1 - One queue @1 and TC2 - One queue @2 + # sched-entry S 4 125000 + # S - SetGateStates operation + # 4 - Bit mask showing bit 2 set (Q2/TC2) + # 125000 - 125000 nsecs (125 usecs ) duration of Gate open + # The cycle-time is 500 msec + + #enable classifier. Classifier is used to mark the packet based on packet meta data. For example UDP port + #number + tc qdisc add dev eth0 clsact + + #Using tc filter command edit the SKB priority based on udp port number. i.e Udp port 5003 -> prio 3 (TC2/Q2), port 5002 -> prio 2 (TC1/Q1), 5001 -> prio 1( TC0/Q0) + tc filter add dev eth0 egress protocol ip prio 1 u32 match ip dport 5003 0xffff action skbedit priority 3 + tc filter add dev eth0 egress protocol ip prio 1 u32 match ip dport 5002 0xffff action skbedit priority 2 + tc filter add dev eth0 egress protocol ip prio 1 u32 match ip dport 5001 0xffff action skbedit priority 1 + + #Network core and Driver uses the skb priority to deliver frames to specific hardware queues. In the above case, + #priority 3 SKB (packet) goes to Q2 (4th entry in map in the tc qdisc command), priority 2 SKB goes to Q1 + #(3rd entry in map) and priority 1 SKB goes to Q0 (2nd entry in map) + + #Run 3 iperf sessions, each with udp port 5001, 5002 and 5003 as + #Remote PC connected to eth0 with IP address 192.168.2.10 + iperf3 -s -i30 -p5001& + iperf3 -s -i30 -p5002& + iperf3 -s -i30 -p5003& + + #At DUT, start trasmission of stream using iperf3 + ip addr add 192.168.2.20/24 dev eth0 + ip link set dev eth0 up + iperf3 -c 192.168.2.10 -u -b100M -p 5003 -l1472 -t10 -i5& + iperf3 -c 192.168.2.10 -u -b100M -p 5002 -l1472 -t10 -i5& + iperf3 -c 192.168.2.10 -u -b100M -p 5001 -l1472 -t10 -i5& + + #Capture frame using wireshark at the PC to see how EST work. The frames will be on the wire only at + #scheduled time and a periodic burst of frames will be seen every 500 milli seconds. A sample wireshark capture for the example above is shown below @@ -116,20 +116,20 @@ Packet highlighted are the first packet transmitted during Gate open of Q2/TC2 a CPSW EST hardware will transmit the frame during Gate open. If a frame happens to arrive at the hardware queue just before the Gate closes, it gets spilled over to the next schedule window. If this is not desirable, user may add a guard band between schedule window, duration of which should equal to the transmission time of a MTU frame (1518 * 8 = 12144 nsec) + 2336 nsec (TRM describes this as 292 wire clocks = 292 * 8 = 2336). This ensures that frames don't spill over to the next sched window. For example, for the example schedule described above, to ensure no spill over, guard bands may be introduced as follows:- -:: - - tc qdisc replace dev eth0 parent root handle 100 taprio \ - num_tc 3 \ - map 0 0 1 2 0 0 0 0 0 0 0 0 0 0 0 0 \ - queues 1@0 1@1 1@2 \ - base-time 0000 \ - sched-entry S 4 110520 \ - sched-entry S 0 14480 \ - sched-entry S 2 110520 \ - sched-entry S 0 14480 \ - sched-entry S 1 235520 \ - sched-entry S 0 14480 \ - flags 2 +.. code:: console + + tc qdisc replace dev eth0 parent root handle 100 taprio \ + num_tc 3 \ + map 0 0 1 2 0 0 0 0 0 0 0 0 0 0 0 0 \ + queues 1@0 1@1 1@2 \ + base-time 0000 \ + sched-entry S 4 110520 \ + sched-entry S 0 14480 \ + sched-entry S 2 110520 \ + sched-entry S 0 14480 \ + sched-entry S 1 235520 \ + sched-entry S 0 14480 \ + flags 2 The above schedule still have a cycle-time of 500 msec, however there are guard bands inserted between Gate Close/Open and uses 0 Gate mask during the period of 12144 usec. @@ -138,39 +138,39 @@ The above schedule still have a cycle-time of 500 msec, however there are guard In the example schedule described earlier, there are 3 schedule windows described by sched-entry, first 2 being each of 125 usec and a third of 250 usec. So the schedule has a cycle-time of 500 msec which is the sum of the intervals of individual schedule. tc command also allow user to specify cycle-time as part of the command which can be used to truncate or stretch an entry. For example in the typical schedule, if user specify cycle-time of 600000 -:: - - tc qdisc replace dev eth0 parent root handle 100 taprio \ - num_tc 3 \ - map 0 0 1 2 0 0 0 0 0 0 0 0 0 0 0 0 \ - queues 1@0 1@1 1@2 \ - base-time 0000 \ - sched-entry S 4 110520 \ - sched-entry S 0 14480 \ - sched-entry S 2 110520 \ - sched-entry S 0 14480 \ - sched-entry S 1 235520 \ - sched-entry S 0 14480 \ - cycle-time 600000 \ - flags 2 +.. code:: console + + tc qdisc replace dev eth0 parent root handle 100 taprio \ + num_tc 3 \ + map 0 0 1 2 0 0 0 0 0 0 0 0 0 0 0 0 \ + queues 1@0 1@1 1@2 \ + base-time 0000 \ + sched-entry S 4 110520 \ + sched-entry S 0 14480 \ + sched-entry S 2 110520 \ + sched-entry S 0 14480 \ + sched-entry S 1 235520 \ + sched-entry S 0 14480 \ + cycle-time 600000 \ + flags 2 In the above example, the last window gets stretched for a total of 350 usec instead of 250 usec resulting in a cycle-time of 600 usec. Similarly if the cycle-time is less than the sum of individual sched-entry, then schedule would get truncated. -:: - - tc qdisc replace dev eth0 parent root handle 100 taprio \ - num_tc 3 \ - map 0 0 1 2 0 0 0 0 0 0 0 0 0 0 0 0 \ - queues 1@0 1@1 1@2 \ - base-time 0000 \ - sched-entry S 4 110520 \ - sched-entry S 0 14480 \ - sched-entry S 2 110520 \ - sched-entry S 0 14480 \ - sched-entry S 1 235520 \ - sched-entry S 0 14480 \ - cycle-time 400000 \ - flags 2 +.. code:: console + + tc qdisc replace dev eth0 parent root handle 100 taprio \ + num_tc 3 \ + map 0 0 1 2 0 0 0 0 0 0 0 0 0 0 0 0 \ + queues 1@0 1@1 1@2 \ + base-time 0000 \ + sched-entry S 4 110520 \ + sched-entry S 0 14480 \ + sched-entry S 2 110520 \ + sched-entry S 0 14480 \ + sched-entry S 1 235520 \ + sched-entry S 0 14480 \ + cycle-time 400000 \ + flags 2 In the above case, last sched-entry will become truncated to 150 usec resulting in a cycle-time of 400 usec. Also it takes about 16 wireside clock cycles (128 nsec) to fetch the sched-entry from the fetch ram. So that determines the minimum value of sched-entry interval. If it is less than this, packet spills over to the next window. @@ -200,9 +200,9 @@ Setup 2. Cross-compile and build the executable using: -:: +.. code:: console - make ARCH=arm64 CROSS_COMPILE=aarch64-none-linux-gnu- + make ARCH=arm64 CROSS_COMPILE=aarch64-none-linux-gnu- 3. Copy the generated executable named "plget" to J7VCL and AM625-SK. @@ -218,221 +218,221 @@ Connect eth0 of AM625-SK to eth1 of J7VCL. 1. Run the following on AM625-SK: -:: - - #!/bin/sh - - # AM625-SK CPSW3G Port-1 - ifconfig eth0 down - ethtool -L eth0 tx 3 - ethtool --set-priv-flags eth0 p0-rx-ptype-rrobin off - ifconfig eth0 up - sleep 30 - - #sync system time to CPSW CPTS - phc2sys -s CLOCK_REALTIME -c eth0 -m -O 0 > /dev/null & - - #calc base_time as now + 2min, give it time to sync - base=$(((`date +%s` + 2 * 60)*1000000000)) - - tc qdisc replace dev eth0 parent root handle 100 taprio \ - num_tc 3 \ - map 0 0 1 2 0 0 0 0 0 0 0 0 0 0 0 0 \ - queues 1@0 1@1 1@2 \ - base-time $base \ - sched-entry S 4 125000 \ - sched-entry S 2 125000 \ - sched-entry S 1 250000 \ - flags 2 - - tc qdisc add dev eth0 clsact - tc filter add dev eth0 egress protocol ip prio 1 u32 match ip dport 5001 0xffff action skbedit priority 3 - tc filter add dev eth0 egress protocol ip prio 1 u32 match ip dport 5002 0xffff action skbedit priority 2 - tc filter add dev eth0 egress protocol ip prio 1 u32 match ip dport 5003 0xffff action skbedit priority 1 - tc qdisc show dev eth0 - - # Wait for 2 minutes for sync to complete - sleep 120 - - # NOTE: Replace 70:ff:76:1d:8c:08 with the MAC address of CPSW5G port-1 of J7VCL - ./plget -i eth0 -m pkt-gen -p 3 -t ptpl2 -n 128 -a 70:ff:76:1d:8c:08 -l 1500 - sleep 5 - ./plget -i eth0 -m pkt-gen -p 2 -t ptpl2 -n 128 -a 70:ff:76:1d:8c:08 -l 1500 - sleep 5 - ./plget -i eth0 -m pkt-gen -p 1 -t ptpl2 -n 128 -a 70:ff:76:1d:8c:08 -l 1500 +.. code:: console + + #!/bin/sh + + # AM625-SK CPSW3G Port-1 + ifconfig eth0 down + ethtool -L eth0 tx 3 + ethtool --set-priv-flags eth0 p0-rx-ptype-rrobin off + ifconfig eth0 up + sleep 30 + + #sync system time to CPSW CPTS + phc2sys -s CLOCK_REALTIME -c eth0 -m -O 0 > /dev/null & + + #calc base_time as now + 2min, give it time to sync + base=$(((`date +%s` + 2 * 60)*1000000000)) + + tc qdisc replace dev eth0 parent root handle 100 taprio \ + num_tc 3 \ + map 0 0 1 2 0 0 0 0 0 0 0 0 0 0 0 0 \ + queues 1@0 1@1 1@2 \ + base-time $base \ + sched-entry S 4 125000 \ + sched-entry S 2 125000 \ + sched-entry S 1 250000 \ + flags 2 + + tc qdisc add dev eth0 clsact + tc filter add dev eth0 egress protocol ip prio 1 u32 match ip dport 5001 0xffff action skbedit priority 3 + tc filter add dev eth0 egress protocol ip prio 1 u32 match ip dport 5002 0xffff action skbedit priority 2 + tc filter add dev eth0 egress protocol ip prio 1 u32 match ip dport 5003 0xffff action skbedit priority 1 + tc qdisc show dev eth0 + + # Wait for 2 minutes for sync to complete + sleep 120 + + # NOTE: Replace 70:ff:76:1d:8c:08 with the MAC address of CPSW5G port-1 of J7VCL + ./plget -i eth0 -m pkt-gen -p 3 -t ptpl2 -n 128 -a 70:ff:76:1d:8c:08 -l 1500 + sleep 5 + ./plget -i eth0 -m pkt-gen -p 2 -t ptpl2 -n 128 -a 70:ff:76:1d:8c:08 -l 1500 + sleep 5 + ./plget -i eth0 -m pkt-gen -p 1 -t ptpl2 -n 128 -a 70:ff:76:1d:8c:08 -l 1500 2. Wait for eth0 on AM625-SK to be up and then run the following on J7VCL: -:: +.. code:: sh - #!/bin/sh - while sleep 1; do ./plget -m rx-lat -f ipgap -n 128 -i eth1 -t ptpl2 -f hwts; done + #!/bin/sh + while sleep 1; do ./plget -m rx-lat -f ipgap -n 128 -i eth1 -t ptpl2 -f hwts; done **Observed Outputs:** On J7VCL: -:: - - Priority 3 Output: - hw rx time, us: packets 128: - relative abs time 228493286405 ns - first packet abs time 228493286405 ns - ------------------------------------------------------------------------------------------------------------------------ - 0 | 12.19 | 24.38 | 36.57 | 48.76 | 60.95 | 73.145 | 85.34 | - 97.53 | 109.725 | 121.915 | 499.985 | 512.185 | 524.375 | 536.565 | 548.755 | - 560.95 | 573.14 | 585.33 | 597.53 | 609.72 | 621.91 | 999.98 | 1012.18 | - 1024.37 | 1036.56 | 1048.76 | 1060.94 | 1073.13 | 1085.33 | 1097.53 | 1109.71 | - 1121.9 | 1499.98 | 1512.17 | 1524.37 | 1536.56 | 1548.75 | 1560.94 | 1573.13 | - 1585.32 | 1597.51 | 1609.71 | 1621.9 | 1999.97 | 2012.16 | 2024.37 | 2036.56 | - 2048.74 | 2060.93 | 2073.12 | 2085.32 | 2097.51 | 2109.7 | 2121.89 | 2499.97 | - 2512.16 | 2524.35 | 2536.55 | 2548.74 | 2560.93 | 2573.12 | 2585.31 | 2597.51 | - 2609.7 | 2621.89 | 2999.97 | 3012.16 | 3024.34 | 3036.55 | 3048.74 | 3060.93 | - 3073.11 | 3085.31 | 3097.5 | 3109.69 | 3121.89 | 3499.96 | 3512.15 | 3524.34 | - 3536.53 | 3548.73 | 3560.92 | 3573.11 | 3585.3 | 3597.49 | 3609.68 | 3621.88 | - 3999.95 | 4012.14 | 4024.34 | 4036.53 | 4048.72 | 4060.92 | 4073.11 | 4085.3 | - 4097.49 | 4109.68 | 4121.87 | 4499.95 | 4512.15 | 4524.34 | 4536.52 | 4548.72 | - 4560.91 | 4573.1 | 4585.3 | 4597.48 | 4609.68 | 4621.86 | 4999.95 | 5012.14 | - 5024.33 | 5036.52 | 5048.71 | 5060.91 | 5073.1 | 5085.29 | 5097.48 | 5109.67 | - 5121.86 | 5499.94 | 5512.14 | 5524.32 | 5536.52 | 5548.7 | 5560.9 | 5573.1 | - ------------------------------------------------------------------------------------------------------------------------ - - - gap of hw rx time, us: packets 128: - ------------------------------------------------------------------------------------------------------------------------ - 0 | 12.19 | 12.19 | 12.19 | 12.19 | 12.19 | 12.195 | 12.195 | - 12.19 | 12.195 | 12.19 | 378.07 | 12.2 | 12.19 | 12.19 | 12.19 | - 12.195 | 12.19 | 12.19 | 12.2 | 12.19 | 12.19 | 378.07 | 12.2 | - 12.19 | 12.19 | 12.195 | 12.19 | 12.19 | 12.19 | 12.2 | 12.19 | - 12.19 | 378.075 | 12.19 | 12.195 | 12.195 | 12.19 | 12.19 | 12.19 | - 12.19 | 12.19 | 12.2 | 12.19 | 378.075 | 12.19 | 12.2 | 12.19 | - 12.19 | 12.19 | 12.19 | 12.19 | 12.19 | 12.2 | 12.19 | 378.075 | - 12.19 | 12.19 | 12.2 | 12.19 | 12.19 | 12.19 | 12.19 | 12.195 | - 12.19 | 12.195 | 378.075 | 12.19 | 12.19 | 12.2 | 12.19 | 12.19 | - 12.19 | 12.195 | 12.19 | 12.19 | 12.2 | 378.07 | 12.19 | 12.19 | - 12.195 | 12.195 | 12.19 | 12.195 | 12.19 | 12.19 | 12.19 | 12.19 | - 378.08 | 12.19 | 12.195 | 12.19 | 12.195 | 12.195 | 12.19 | 12.19 | - 12.19 | 12.19 | 12.19 | 378.08 | 12.195 | 12.19 | 12.19 | 12.19 | - 12.2 | 12.19 | 12.19 | 12.19 | 12.19 | 12.19 | 378.085 | 12.19 | - 12.19 | 12.19 | 12.19 | 12.2 | 12.19 | 12.19 | 12.19 | 12.19 | - 12.195 | 378.08 | 12.19 | 12.19 | 12.19 | 12.19 | 12.19 | 12.2 | - ------------------------------------------------------------------------------------------------------------------------ - max val(#110) = 378.08us - min val(#1) = 12.19us - peak-to-peak = 365.89us - mean +- RMS = 43.88 +- 102.91 us - - Priority 2 Output: - hw rx time, us: packets 128: - relative abs time 233544362395 ns - first packet abs time 233544362395 ns - ------------------------------------------------------------------------------------------------------------------------ - 0 | 12.195 | 24.39 | 36.58 | 48.77 | 60.96 | 73.15 | 85.34 | - 97.54 | 109.73 | 121.92 | 499.995 | 512.19 | 524.385 | 536.575 | 548.765 | - 560.955 | 573.145 | 585.335 | 597.535 | 609.725 | 621.915 | 999.99 | 1012.18 | - 1024.38 | 1036.57 | 1048.76 | 1060.95 | 1073.14 | 1085.33 | 1097.53 | 1109.72 | - 1121.91 | 1499.98 | 1512.17 | 1524.38 | 1536.57 | 1548.76 | 1560.94 | 1573.13 | - 1585.33 | 1597.52 | 1609.72 | 1621.91 | 1999.98 | 2012.17 | 2024.36 | 2036.56 | - 2048.75 | 2060.94 | 2073.14 | 2085.32 | 2097.51 | 2109.7 | 2121.91 | 2499.97 | - 2512.16 | 2524.36 | 2536.55 | 2548.74 | 2560.94 | 2573.13 | 2585.32 | 2597.51 | - 2609.7 | 2621.9 | 2999.97 | 3012.16 | 3024.36 | 3036.55 | 3048.74 | 3060.93 | - 3073.12 | 3085.32 | 3097.51 | 3109.7 | 3121.89 | 3499.97 | 3512.16 | 3524.35 | - 3536.54 | 3548.74 | 3560.93 | 3573.12 | 3585.31 | 3597.5 | 3609.69 | 3621.89 | - 3999.97 | 4012.16 | 4024.34 | 4036.53 | 4048.74 | 4060.93 | 4073.11 | 4085.3 | - 4097.49 | 4109.69 | 4121.88 | 4499.96 | 4512.15 | 4524.34 | 4536.53 | 4548.72 | - 4560.92 | 4573.11 | 4585.3 | 4597.49 | 4609.69 | 4621.88 | 4999.95 | 5012.15 | - 5024.34 | 5036.52 | 5048.72 | 5060.91 | 5073.1 | 5085.3 | 5097.49 | 5109.68 | - 5121.87 | 5499.95 | 5512.14 | 5524.33 | 5536.52 | 5548.72 | 5560.9 | 5573.1 | - ------------------------------------------------------------------------------------------------------------------------ - - - gap of hw rx time, us: packets 128: - ------------------------------------------------------------------------------------------------------------------------ - 0 | 12.195 | 12.195 | 12.19 | 12.19 | 12.19 | 12.19 | 12.19 | - 12.2 | 12.19 | 12.19 | 378.075 | 12.195 | 12.195 | 12.19 | 12.19 | - 12.19 | 12.19 | 12.19 | 12.2 | 12.19 | 12.19 | 378.075 | 12.19 | - 12.2 | 12.19 | 12.19 | 12.19 | 12.19 | 12.19 | 12.195 | 12.195 | - 12.195 | 378.07 | 12.19 | 12.2 | 12.19 | 12.19 | 12.19 | 12.19 | - 12.195 | 12.19 | 12.2 | 12.19 | 378.07 | 12.19 | 12.19 | 12.2 | - 12.19 | 12.19 | 12.195 | 12.19 | 12.19 | 12.19 | 12.2 | 378.07 | - 12.19 | 12.195 | 12.195 | 12.19 | 12.195 | 12.19 | 12.19 | 12.19 | - 12.19 | 12.2 | 378.07 | 12.195 | 12.19 | 12.19 | 12.2 | 12.19 | - 12.19 | 12.19 | 12.19 | 12.19 | 12.2 | 378.075 | 12.19 | 12.19 | - 12.19 | 12.2 | 12.19 | 12.19 | 12.19 | 12.19 | 12.19 | 12.195 | - 378.08 | 12.19 | 12.19 | 12.19 | 12.2 | 12.19 | 12.19 | 12.19 | - 12.19 | 12.195 | 12.19 | 378.08 | 12.19 | 12.19 | 12.19 | 12.19 | - 12.2 | 12.19 | 12.19 | 12.195 | 12.19 | 12.19 | 378.08 | 12.19 | - 12.19 | 12.19 | 12.195 | 12.195 | 12.19 | 12.195 | 12.19 | 12.19 | - 12.19 | 378.08 | 12.19 | 12.19 | 12.195 | 12.19 | 12.19 | 12.2 | - ------------------------------------------------------------------------------------------------------------------------ - max val(#88) = 378.08us - min val(#3) = 12.19us - peak-to-peak = 365.89us - mean +- RMS = 43.88 +- 102.91 us - - Priority 1 Output: - hw rx time, us: packets 128: - relative abs time 238600085525 ns - first packet abs time 238600085525 ns - ------------------------------------------------------------------------------------------------------------------------ - 0 | 66.805 | 82.395 | 96.97 | 352.715 | 364.91 | 377.105 | 389.295 | - 401.49 | 413.68 | 425.87 | 438.06 | 450.25 | 462.45 | 474.64 | 486.83 | - 499.02 | 511.21 | 523.405 | 535.595 | 547.79 | 559.985 | 572.175 | 584.365 | - 596.555 | 852.71 | 864.905 | 877.095 | 889.295 | 901.485 | 913.675 | 925.865 | - 938.055 | 950.245 | 962.435 | 974.635 | 986.825 | 999.015 | 1011.21 | 1023.4 | - 1035.59 | 1047.79 | 1059.98 | 1072.17 | 1084.36 | 1096.55 | 1352.71 | 1364.9 | - 1377.09 | 1389.29 | 1401.48 | 1413.67 | 1425.86 | 1438.05 | 1450.24 | 1462.43 | - 1474.63 | 1486.82 | 1499.02 | 1511.2 | 1523.39 | 1535.59 | 1547.78 | 1559.97 | - 1572.16 | 1584.36 | 1596.55 | 1852.7 | 1864.89 | 1877.09 | 1889.28 | 1901.47 | - 1913.66 | 1925.86 | 1938.05 | 1950.24 | 1962.43 | 1974.62 | 1986.82 | 1999.01 | - 2011.2 | 2023.39 | 2035.58 | 2047.77 | 2059.97 | 2072.16 | 2084.35 | 2096.54 | - 2352.7 | 2364.89 | 2377.08 | 2389.27 | 2401.47 | 2413.66 | 2425.85 | 2438.04 | - 2450.24 | 2462.43 | 2474.61 | 2486.82 | 2499.01 | 2511.2 | 2523.39 | 2535.57 | - 2547.76 | 2559.96 | 2572.16 | 2584.34 | 2596.54 | 2852.7 | 2864.89 | 2877.07 | - 2889.26 | 2901.46 | 2913.66 | 2925.84 | 2938.04 | 2950.23 | 2962.42 | 2974.61 | - 2986.81 | 2999 | 3011.19 | 3023.38 | 3035.57 | 3047.76 | 3059.95 | 3072.15 | - ------------------------------------------------------------------------------------------------------------------------ - - - gap of hw rx time, us: packets 128: - ------------------------------------------------------------------------------------------------------------------------ - 0 | 66.805 | 15.59 | 14.575 | 255.745 | 12.195 | 12.195 | 12.19 | - 12.195 | 12.19 | 12.19 | 12.19 | 12.19 | 12.2 | 12.19 | 12.19 | - 12.19 | 12.19 | 12.195 | 12.19 | 12.195 | 12.195 | 12.19 | 12.19 | - 12.19 | 256.155 | 12.195 | 12.19 | 12.2 | 12.19 | 12.19 | 12.19 | - 12.19 | 12.19 | 12.19 | 12.2 | 12.19 | 12.19 | 12.195 | 12.19 | - 12.19 | 12.2 | 12.19 | 12.19 | 12.19 | 12.19 | 256.16 | 12.19 | - 12.19 | 12.2 | 12.19 | 12.19 | 12.19 | 12.19 | 12.19 | 12.195 | - 12.195 | 12.19 | 12.195 | 12.19 | 12.19 | 12.19 | 12.19 | 12.2 | - 12.19 | 12.19 | 12.19 | 256.16 | 12.19 | 12.19 | 12.19 | 12.2 | - 12.19 | 12.19 | 12.19 | 12.195 | 12.19 | 12.195 | 12.195 | 12.19 | - 12.19 | 12.19 | 12.19 | 12.19 | 12.2 | 12.19 | 12.19 | 12.19 | - 256.16 | 12.19 | 12.19 | 12.19 | 12.2 | 12.19 | 12.19 | 12.19 | - 12.195 | 12.19 | 12.19 | 12.2 | 12.19 | 12.19 | 12.19 | 12.19 | - 12.19 | 12.195 | 12.195 | 12.19 | 12.195 | 256.155 | 12.19 | 12.19 | - 12.19 | 12.195 | 12.195 | 12.19 | 12.195 | 12.19 | 12.19 | 12.19 | - 12.2 | 12.19 | 12.19 | 12.19 | 12.19 | 12.195 | 12.19 | 12.195 | - ------------------------------------------------------------------------------------------------------------------------ - max val(#46) = 256.16us - min val(#7) = 12.19us - peak-to-peak = 243.97us - mean +- RMS = 24.19 +- 51.87 us +.. code:: console + + Priority 3 Output: + hw rx time, us: packets 128: + relative abs time 228493286405 ns + first packet abs time 228493286405 ns + ------------------------------------------------------------------------------------------------------------------------ + 0 | 12.19 | 24.38 | 36.57 | 48.76 | 60.95 | 73.145 | 85.34 | + 97.53 | 109.725 | 121.915 | 499.985 | 512.185 | 524.375 | 536.565 | 548.755 | + 560.95 | 573.14 | 585.33 | 597.53 | 609.72 | 621.91 | 999.98 | 1012.18 | + 1024.37 | 1036.56 | 1048.76 | 1060.94 | 1073.13 | 1085.33 | 1097.53 | 1109.71 | + 1121.9 | 1499.98 | 1512.17 | 1524.37 | 1536.56 | 1548.75 | 1560.94 | 1573.13 | + 1585.32 | 1597.51 | 1609.71 | 1621.9 | 1999.97 | 2012.16 | 2024.37 | 2036.56 | + 2048.74 | 2060.93 | 2073.12 | 2085.32 | 2097.51 | 2109.7 | 2121.89 | 2499.97 | + 2512.16 | 2524.35 | 2536.55 | 2548.74 | 2560.93 | 2573.12 | 2585.31 | 2597.51 | + 2609.7 | 2621.89 | 2999.97 | 3012.16 | 3024.34 | 3036.55 | 3048.74 | 3060.93 | + 3073.11 | 3085.31 | 3097.5 | 3109.69 | 3121.89 | 3499.96 | 3512.15 | 3524.34 | + 3536.53 | 3548.73 | 3560.92 | 3573.11 | 3585.3 | 3597.49 | 3609.68 | 3621.88 | + 3999.95 | 4012.14 | 4024.34 | 4036.53 | 4048.72 | 4060.92 | 4073.11 | 4085.3 | + 4097.49 | 4109.68 | 4121.87 | 4499.95 | 4512.15 | 4524.34 | 4536.52 | 4548.72 | + 4560.91 | 4573.1 | 4585.3 | 4597.48 | 4609.68 | 4621.86 | 4999.95 | 5012.14 | + 5024.33 | 5036.52 | 5048.71 | 5060.91 | 5073.1 | 5085.29 | 5097.48 | 5109.67 | + 5121.86 | 5499.94 | 5512.14 | 5524.32 | 5536.52 | 5548.7 | 5560.9 | 5573.1 | + ------------------------------------------------------------------------------------------------------------------------ + + + gap of hw rx time, us: packets 128: + ------------------------------------------------------------------------------------------------------------------------ + 0 | 12.19 | 12.19 | 12.19 | 12.19 | 12.19 | 12.195 | 12.195 | + 12.19 | 12.195 | 12.19 | 378.07 | 12.2 | 12.19 | 12.19 | 12.19 | + 12.195 | 12.19 | 12.19 | 12.2 | 12.19 | 12.19 | 378.07 | 12.2 | + 12.19 | 12.19 | 12.195 | 12.19 | 12.19 | 12.19 | 12.2 | 12.19 | + 12.19 | 378.075 | 12.19 | 12.195 | 12.195 | 12.19 | 12.19 | 12.19 | + 12.19 | 12.19 | 12.2 | 12.19 | 378.075 | 12.19 | 12.2 | 12.19 | + 12.19 | 12.19 | 12.19 | 12.19 | 12.19 | 12.2 | 12.19 | 378.075 | + 12.19 | 12.19 | 12.2 | 12.19 | 12.19 | 12.19 | 12.19 | 12.195 | + 12.19 | 12.195 | 378.075 | 12.19 | 12.19 | 12.2 | 12.19 | 12.19 | + 12.19 | 12.195 | 12.19 | 12.19 | 12.2 | 378.07 | 12.19 | 12.19 | + 12.195 | 12.195 | 12.19 | 12.195 | 12.19 | 12.19 | 12.19 | 12.19 | + 378.08 | 12.19 | 12.195 | 12.19 | 12.195 | 12.195 | 12.19 | 12.19 | + 12.19 | 12.19 | 12.19 | 378.08 | 12.195 | 12.19 | 12.19 | 12.19 | + 12.2 | 12.19 | 12.19 | 12.19 | 12.19 | 12.19 | 378.085 | 12.19 | + 12.19 | 12.19 | 12.19 | 12.2 | 12.19 | 12.19 | 12.19 | 12.19 | + 12.195 | 378.08 | 12.19 | 12.19 | 12.19 | 12.19 | 12.19 | 12.2 | + ------------------------------------------------------------------------------------------------------------------------ + max val(#110) = 378.08us + min val(#1) = 12.19us + peak-to-peak = 365.89us + mean +- RMS = 43.88 +- 102.91 us + + Priority 2 Output: + hw rx time, us: packets 128: + relative abs time 233544362395 ns + first packet abs time 233544362395 ns + ------------------------------------------------------------------------------------------------------------------------ + 0 | 12.195 | 24.39 | 36.58 | 48.77 | 60.96 | 73.15 | 85.34 | + 97.54 | 109.73 | 121.92 | 499.995 | 512.19 | 524.385 | 536.575 | 548.765 | + 560.955 | 573.145 | 585.335 | 597.535 | 609.725 | 621.915 | 999.99 | 1012.18 | + 1024.38 | 1036.57 | 1048.76 | 1060.95 | 1073.14 | 1085.33 | 1097.53 | 1109.72 | + 1121.91 | 1499.98 | 1512.17 | 1524.38 | 1536.57 | 1548.76 | 1560.94 | 1573.13 | + 1585.33 | 1597.52 | 1609.72 | 1621.91 | 1999.98 | 2012.17 | 2024.36 | 2036.56 | + 2048.75 | 2060.94 | 2073.14 | 2085.32 | 2097.51 | 2109.7 | 2121.91 | 2499.97 | + 2512.16 | 2524.36 | 2536.55 | 2548.74 | 2560.94 | 2573.13 | 2585.32 | 2597.51 | + 2609.7 | 2621.9 | 2999.97 | 3012.16 | 3024.36 | 3036.55 | 3048.74 | 3060.93 | + 3073.12 | 3085.32 | 3097.51 | 3109.7 | 3121.89 | 3499.97 | 3512.16 | 3524.35 | + 3536.54 | 3548.74 | 3560.93 | 3573.12 | 3585.31 | 3597.5 | 3609.69 | 3621.89 | + 3999.97 | 4012.16 | 4024.34 | 4036.53 | 4048.74 | 4060.93 | 4073.11 | 4085.3 | + 4097.49 | 4109.69 | 4121.88 | 4499.96 | 4512.15 | 4524.34 | 4536.53 | 4548.72 | + 4560.92 | 4573.11 | 4585.3 | 4597.49 | 4609.69 | 4621.88 | 4999.95 | 5012.15 | + 5024.34 | 5036.52 | 5048.72 | 5060.91 | 5073.1 | 5085.3 | 5097.49 | 5109.68 | + 5121.87 | 5499.95 | 5512.14 | 5524.33 | 5536.52 | 5548.72 | 5560.9 | 5573.1 | + ------------------------------------------------------------------------------------------------------------------------ + + + gap of hw rx time, us: packets 128: + ------------------------------------------------------------------------------------------------------------------------ + 0 | 12.195 | 12.195 | 12.19 | 12.19 | 12.19 | 12.19 | 12.19 | + 12.2 | 12.19 | 12.19 | 378.075 | 12.195 | 12.195 | 12.19 | 12.19 | + 12.19 | 12.19 | 12.19 | 12.2 | 12.19 | 12.19 | 378.075 | 12.19 | + 12.2 | 12.19 | 12.19 | 12.19 | 12.19 | 12.19 | 12.195 | 12.195 | + 12.195 | 378.07 | 12.19 | 12.2 | 12.19 | 12.19 | 12.19 | 12.19 | + 12.195 | 12.19 | 12.2 | 12.19 | 378.07 | 12.19 | 12.19 | 12.2 | + 12.19 | 12.19 | 12.195 | 12.19 | 12.19 | 12.19 | 12.2 | 378.07 | + 12.19 | 12.195 | 12.195 | 12.19 | 12.195 | 12.19 | 12.19 | 12.19 | + 12.19 | 12.2 | 378.07 | 12.195 | 12.19 | 12.19 | 12.2 | 12.19 | + 12.19 | 12.19 | 12.19 | 12.19 | 12.2 | 378.075 | 12.19 | 12.19 | + 12.19 | 12.2 | 12.19 | 12.19 | 12.19 | 12.19 | 12.19 | 12.195 | + 378.08 | 12.19 | 12.19 | 12.19 | 12.2 | 12.19 | 12.19 | 12.19 | + 12.19 | 12.195 | 12.19 | 378.08 | 12.19 | 12.19 | 12.19 | 12.19 | + 12.2 | 12.19 | 12.19 | 12.195 | 12.19 | 12.19 | 378.08 | 12.19 | + 12.19 | 12.19 | 12.195 | 12.195 | 12.19 | 12.195 | 12.19 | 12.19 | + 12.19 | 378.08 | 12.19 | 12.19 | 12.195 | 12.19 | 12.19 | 12.2 | + ------------------------------------------------------------------------------------------------------------------------ + max val(#88) = 378.08us + min val(#3) = 12.19us + peak-to-peak = 365.89us + mean +- RMS = 43.88 +- 102.91 us + + Priority 1 Output: + hw rx time, us: packets 128: + relative abs time 238600085525 ns + first packet abs time 238600085525 ns + ------------------------------------------------------------------------------------------------------------------------ + 0 | 66.805 | 82.395 | 96.97 | 352.715 | 364.91 | 377.105 | 389.295 | + 401.49 | 413.68 | 425.87 | 438.06 | 450.25 | 462.45 | 474.64 | 486.83 | + 499.02 | 511.21 | 523.405 | 535.595 | 547.79 | 559.985 | 572.175 | 584.365 | + 596.555 | 852.71 | 864.905 | 877.095 | 889.295 | 901.485 | 913.675 | 925.865 | + 938.055 | 950.245 | 962.435 | 974.635 | 986.825 | 999.015 | 1011.21 | 1023.4 | + 1035.59 | 1047.79 | 1059.98 | 1072.17 | 1084.36 | 1096.55 | 1352.71 | 1364.9 | + 1377.09 | 1389.29 | 1401.48 | 1413.67 | 1425.86 | 1438.05 | 1450.24 | 1462.43 | + 1474.63 | 1486.82 | 1499.02 | 1511.2 | 1523.39 | 1535.59 | 1547.78 | 1559.97 | + 1572.16 | 1584.36 | 1596.55 | 1852.7 | 1864.89 | 1877.09 | 1889.28 | 1901.47 | + 1913.66 | 1925.86 | 1938.05 | 1950.24 | 1962.43 | 1974.62 | 1986.82 | 1999.01 | + 2011.2 | 2023.39 | 2035.58 | 2047.77 | 2059.97 | 2072.16 | 2084.35 | 2096.54 | + 2352.7 | 2364.89 | 2377.08 | 2389.27 | 2401.47 | 2413.66 | 2425.85 | 2438.04 | + 2450.24 | 2462.43 | 2474.61 | 2486.82 | 2499.01 | 2511.2 | 2523.39 | 2535.57 | + 2547.76 | 2559.96 | 2572.16 | 2584.34 | 2596.54 | 2852.7 | 2864.89 | 2877.07 | + 2889.26 | 2901.46 | 2913.66 | 2925.84 | 2938.04 | 2950.23 | 2962.42 | 2974.61 | + 2986.81 | 2999 | 3011.19 | 3023.38 | 3035.57 | 3047.76 | 3059.95 | 3072.15 | + ------------------------------------------------------------------------------------------------------------------------ + + + gap of hw rx time, us: packets 128: + ------------------------------------------------------------------------------------------------------------------------ + 0 | 66.805 | 15.59 | 14.575 | 255.745 | 12.195 | 12.195 | 12.19 | + 12.195 | 12.19 | 12.19 | 12.19 | 12.19 | 12.2 | 12.19 | 12.19 | + 12.19 | 12.19 | 12.195 | 12.19 | 12.195 | 12.195 | 12.19 | 12.19 | + 12.19 | 256.155 | 12.195 | 12.19 | 12.2 | 12.19 | 12.19 | 12.19 | + 12.19 | 12.19 | 12.19 | 12.2 | 12.19 | 12.19 | 12.195 | 12.19 | + 12.19 | 12.2 | 12.19 | 12.19 | 12.19 | 12.19 | 256.16 | 12.19 | + 12.19 | 12.2 | 12.19 | 12.19 | 12.19 | 12.19 | 12.19 | 12.195 | + 12.195 | 12.19 | 12.195 | 12.19 | 12.19 | 12.19 | 12.19 | 12.2 | + 12.19 | 12.19 | 12.19 | 256.16 | 12.19 | 12.19 | 12.19 | 12.2 | + 12.19 | 12.19 | 12.19 | 12.195 | 12.19 | 12.195 | 12.195 | 12.19 | + 12.19 | 12.19 | 12.19 | 12.19 | 12.2 | 12.19 | 12.19 | 12.19 | + 256.16 | 12.19 | 12.19 | 12.19 | 12.2 | 12.19 | 12.19 | 12.19 | + 12.195 | 12.19 | 12.19 | 12.2 | 12.19 | 12.19 | 12.19 | 12.19 | + 12.19 | 12.195 | 12.195 | 12.19 | 12.195 | 256.155 | 12.19 | 12.19 | + 12.19 | 12.195 | 12.195 | 12.19 | 12.195 | 12.19 | 12.19 | 12.19 | + 12.2 | 12.19 | 12.19 | 12.19 | 12.19 | 12.195 | 12.19 | 12.195 | + ------------------------------------------------------------------------------------------------------------------------ + max val(#46) = 256.16us + min val(#7) = 12.19us + peak-to-peak = 243.97us + mean +- RMS = 24.19 +- 51.87 us **Explanation:** -:: +.. code:: text - Looking at the inter-packet gaps, which correspond to the second table within each of the priorities, for Priority 3, - we see that the inter-packet gap is roughly 12 microseconds for about 10 packets, after which it suddenly jumps to - around 378.07 microseconds. This jump corresponds to the time that the packets with Priorities 2 and 1, with - duration of 125 and 250 micro seconds (125 + 250 = 375 ~ 378.07) were being transmitted. + Looking at the inter-packet gaps, which correspond to the second table within each of the priorities, for Priority 3, + we see that the inter-packet gap is roughly 12 microseconds for about 10 packets, after which it suddenly jumps to + around 378.07 microseconds. This jump corresponds to the time that the packets with Priorities 2 and 1, with + duration of 125 and 250 micro seconds (125 + 250 = 375 ~ 378.07) were being transmitted. - Similarly, for packets with Priority 2, there is a sudden gap of 378.075 microseconds, which corresponds to the time that - the packets with Priorities 1 and 3, with duration of 250 and 125 microseconds (250 + 125 = 375 ~ 378.075) were - being transmitted. + Similarly, for packets with Priority 2, there is a sudden gap of 378.075 microseconds, which corresponds to the time that + the packets with Priorities 1 and 3, with duration of 250 and 125 microseconds (250 + 125 = 375 ~ 378.075) were + being transmitted. - Now, for packets with Priority 1, the gap is of 256.155 microseconds, which corresponds to the time that the packets - with Priorities 3 and 2, with duration of 125 and 125 microseconds (125 + 125 = 250 ~ 256.155) were being transmitted. + Now, for packets with Priority 1, the gap is of 256.155 microseconds, which corresponds to the time that the packets + with Priorities 3 and 2, with duration of 125 and 125 microseconds (125 + 125 = 250 ~ 256.155) were being transmitted. EST scheduled on J7VCL with AM625-SK receiving the packets ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -443,224 +443,224 @@ Connect eth1 of J7VCL to eth0 of AM625-SK. 1. Run the following on J7VCL: -:: - - #!/bin/sh - - # J7VCL CPSW5G Port-1 in QSGMII mode - ifconfig eth1 down - ifconfig eth2 down - ifconfig eth3 down - ifconfig eth4 down - ethtool -L eth1 tx 3 - ethtool --set-priv-flags eth1 p0-rx-ptype-rrobin off - ifconfig eth1 up - sleep 30 - - #sync system time to CPSW CPTS - phc2sys -s CLOCK_REALTIME -c eth1 -m -O 0 > /dev/null & - - #calc base_time as now + 2min, give it time to sync - base=$(((`date +%s` + 2 * 60)*1000000000)) - - tc qdisc replace dev eth1 parent root handle 100 taprio \ - num_tc 3 \ - map 0 0 1 2 0 0 0 0 0 0 0 0 0 0 0 0 \ - queues 1@0 1@1 1@2 \ - base-time $base \ - sched-entry S 4 125000 \ - sched-entry S 2 125000 \ - sched-entry S 1 250000 \ - flags 2 - - tc qdisc add dev eth1 clsact - tc filter add dev eth1 egress protocol ip prio 1 u32 match ip dport 5001 0xffff action skbedit priority 3 - tc filter add dev eth1 egress protocol ip prio 1 u32 match ip dport 5002 0xffff action skbedit priority 2 - tc filter add dev eth1 egress protocol ip prio 1 u32 match ip dport 5003 0xffff action skbedit priority 1 - tc qdisc show dev eth1 - - # Wait for 2 minutes for sync to complete - sleep 120 - - # NOTE: Replace f4:84:4c:fc:11:51 with the MAC address of CPSW3G port-1 of AM625-SK - ./plget -i eth1 -m pkt-gen -p 3 -t ptpl2 -n 128 -a f4:84:4c:fc:11:51 -l 1500 - sleep 5 - ./plget -i eth1 -m pkt-gen -p 2 -t ptpl2 -n 128 -a f4:84:4c:fc:11:51 -l 1500 - sleep 5 - ./plget -i eth1 -m pkt-gen -p 1 -t ptpl2 -n 128 -a f4:84:4c:fc:11:51 -l 1500 +.. code:: console + + #!/bin/sh + + # J7VCL CPSW5G Port-1 in QSGMII mode + ifconfig eth1 down + ifconfig eth2 down + ifconfig eth3 down + ifconfig eth4 down + ethtool -L eth1 tx 3 + ethtool --set-priv-flags eth1 p0-rx-ptype-rrobin off + ifconfig eth1 up + sleep 30 + + #sync system time to CPSW CPTS + phc2sys -s CLOCK_REALTIME -c eth1 -m -O 0 > /dev/null & + + #calc base_time as now + 2min, give it time to sync + base=$(((`date +%s` + 2 * 60)*1000000000)) + + tc qdisc replace dev eth1 parent root handle 100 taprio \ + num_tc 3 \ + map 0 0 1 2 0 0 0 0 0 0 0 0 0 0 0 0 \ + queues 1@0 1@1 1@2 \ + base-time $base \ + sched-entry S 4 125000 \ + sched-entry S 2 125000 \ + sched-entry S 1 250000 \ + flags 2 + + tc qdisc add dev eth1 clsact + tc filter add dev eth1 egress protocol ip prio 1 u32 match ip dport 5001 0xffff action skbedit priority 3 + tc filter add dev eth1 egress protocol ip prio 1 u32 match ip dport 5002 0xffff action skbedit priority 2 + tc filter add dev eth1 egress protocol ip prio 1 u32 match ip dport 5003 0xffff action skbedit priority 1 + tc qdisc show dev eth1 + + # Wait for 2 minutes for sync to complete + sleep 120 + + # NOTE: Replace f4:84:4c:fc:11:51 with the MAC address of CPSW3G port-1 of AM625-SK + ./plget -i eth1 -m pkt-gen -p 3 -t ptpl2 -n 128 -a f4:84:4c:fc:11:51 -l 1500 + sleep 5 + ./plget -i eth1 -m pkt-gen -p 2 -t ptpl2 -n 128 -a f4:84:4c:fc:11:51 -l 1500 + sleep 5 + ./plget -i eth1 -m pkt-gen -p 1 -t ptpl2 -n 128 -a f4:84:4c:fc:11:51 -l 1500 2. Wait for eth1 on J7VCL to be up and then run the following on AM625-SK: -:: +.. code:: sh - #!/bin/sh - while sleep 1; do ./plget -m rx-lat -f ipgap -n 128 -i eth0 -t ptpl2 -f hwts; done + #!/bin/sh + while sleep 1; do ./plget -m rx-lat -f ipgap -n 128 -i eth0 -t ptpl2 -f hwts; done **Observed Outputs:** On AM625-SK: -:: - - Priority 3 Output: - hw rx time, us: packets 128: - relative abs time 217361205681 ns - first packet abs time 217361205681 ns - ------------------------------------------------------------------------------------------------------------------------ - 0 | 37.188 | 423.094 | 435.286 | 447.476 | 459.666 | 471.85 | 484.04 | - 496.232 | 508.422 | 520.614 | 532.804 | 544.986 | 923.094 | 935.276 | 947.468 | - 959.658 | 971.85 | 984.04 | 996.23 | 1008.42 | 1020.6 | 1032.8 | 1044.99 | - 1423.1 | 1435.29 | 1447.48 | 1459.67 | 1471.86 | 1484.05 | 1496.24 | 1508.43 | - 1520.62 | 1532.81 | 1545 | 1923.11 | 1935.3 | 1947.49 | 1959.67 | 1971.86 | - 1984.05 | 1996.25 | 2008.44 | 2020.63 | 2032.81 | 2045 | 2423.11 | 2435.29 | - 2447.48 | 2459.67 | 2471.86 | 2484.05 | 2496.25 | 2508.43 | 2520.62 | 2532.81 | - 2545 | 2923.11 | 2935.3 | 2947.49 | 2959.68 | 2971.87 | 2984.05 | 2996.24 | - 3008.44 | 3020.63 | 3032.82 | 3045.01 | 3423.12 | 3435.31 | 3447.5 | 3459.69 | - 3471.88 | 3484.07 | 3496.26 | 3508.45 | 3520.64 | 3532.82 | 3545.02 | 3923.12 | - 3935.31 | 3947.5 | 3959.69 | 3971.89 | 3984.08 | 3996.26 | 4008.45 | 4020.64 | - 4032.83 | 4045.02 | 4423.12 | 4435.31 | 4447.5 | 4459.69 | 4471.88 | 4484.07 | - 4496.26 | 4508.45 | 4520.64 | 4532.83 | 4545.01 | 4923.14 | 4935.33 | 4947.51 | - 4959.7 | 4971.89 | 4984.08 | 4996.27 | 5008.47 | 5020.65 | 5032.84 | 5045.03 | - 5423.14 | 5435.33 | 5447.52 | 5459.71 | 5471.9 | 5484.09 | 5496.27 | 5508.46 | - 5520.66 | 5532.85 | 5545.04 | 5923.14 | 5935.34 | 5947.53 | 5959.71 | 5971.9 | - ------------------------------------------------------------------------------------------------------------------------ - - - gap of hw rx time, us: packets 128: - ------------------------------------------------------------------------------------------------------------------------ - 0 | 37.188 | 385.906 | 12.192 | 12.19 | 12.19 | 12.184 | 12.19 | - 12.192 | 12.19 | 12.192 | 12.19 | 12.182 | 378.108 | 12.182 | 12.192 | - 12.19 | 12.192 | 12.19 | 12.19 | 12.192 | 12.182 | 12.192 | 12.19 | - 378.116 | 12.19 | 12.192 | 12.19 | 12.19 | 12.184 | 12.19 | 12.19 | - 12.192 | 12.19 | 12.192 | 378.106 | 12.192 | 12.19 | 12.184 | 12.19 | - 12.19 | 12.192 | 12.19 | 12.192 | 12.182 | 12.19 | 378.108 | 12.184 | - 12.19 | 12.19 | 12.192 | 12.19 | 12.192 | 12.182 | 12.19 | 12.192 | - 12.19 | 378.108 | 12.19 | 12.192 | 12.19 | 12.19 | 12.184 | 12.19 | - 12.192 | 12.19 | 12.19 | 12.192 | 378.116 | 12.19 | 12.182 | 12.192 | - 12.19 | 12.192 | 12.19 | 12.19 | 12.192 | 12.182 | 12.192 | 378.106 | - 12.192 | 12.19 | 12.19 | 12.192 | 12.19 | 12.184 | 12.19 | 12.19 | - 12.192 | 12.19 | 378.1 | 12.19 | 12.192 | 12.19 | 12.184 | 12.19 | - 12.19 | 12.192 | 12.19 | 12.192 | 12.182 | 378.124 | 12.19 | 12.182 | - 12.192 | 12.19 | 12.192 | 12.19 | 12.192 | 12.182 | 12.19 | 12.192 | - 378.106 | 12.192 | 12.19 | 12.192 | 12.19 | 12.19 | 12.184 | 12.19 | - 12.192 | 12.19 | 12.19 | 378.108 | 12.192 | 12.19 | 12.182 | 12.192 | - ------------------------------------------------------------------------------------------------------------------------ - max val(#2) = 385.91us - min val(#12) = 12.18us - peak-to-peak = 373.72us - mean +- RMS = 47.02 +- 107.19 us - - Priority 2 Output: - hw rx time, us: packets 128: - relative abs time 222402899877 ns - first packet abs time 222402899877 ns - ------------------------------------------------------------------------------------------------------------------------ - 0 | 406.992 | 419.184 | 431.374 | 443.566 | 455.748 | 467.938 | 480.13 | - 492.32 | 504.512 | 516.702 | 528.892 | 907.008 | 919.2 | 931.382 | 943.572 | - 955.764 | 967.954 | 980.144 | 992.336 | 1004.52 | 1016.71 | 1028.9 | 1407.01 | - 1419.2 | 1431.39 | 1443.58 | 1455.77 | 1467.96 | 1480.14 | 1492.34 | 1504.53 | - 1516.72 | 1528.91 | 1907.01 | 1919.2 | 1931.39 | 1943.58 | 1955.76 | 1967.95 | - 1980.14 | 1992.33 | 2004.53 | 2016.72 | 2028.9 | 2407.01 | 2419.2 | 2431.39 | - 2443.58 | 2455.77 | 2467.96 | 2480.15 | 2492.34 | 2504.52 | 2516.72 | 2528.91 | - 2907.02 | 2919.21 | 2931.4 | 2943.59 | 2955.79 | 2967.97 | 2980.16 | 2992.35 | - 3004.54 | 3016.73 | 3028.92 | 3407.03 | 3419.22 | 3431.41 | 3443.59 | 3455.78 | - 3467.98 | 3480.17 | 3492.36 | 3504.55 | 3516.73 | 3528.92 | 3907.02 | 3919.21 | - 3931.4 | 3943.59 | 3955.78 | 3967.97 | 3980.17 | 3992.35 | 4004.54 | 4016.73 | - 4028.92 | 4407.04 | 4419.23 | 4431.42 | 4443.61 | 4455.79 | 4467.98 | 4480.17 | - 4492.36 | 4504.55 | 4516.75 | 4528.94 | 4907.04 | 4919.23 | 4931.42 | 4943.61 | - 4955.8 | 4967.99 | 4980.18 | 4992.37 | 5004.56 | 5016.74 | 5028.94 | 5407.05 | - 5419.24 | 5431.43 | 5443.62 | 5455.81 | 5468.01 | 5480.19 | 5492.38 | 5504.57 | - 5516.76 | 5528.95 | 5907.06 | 5919.25 | 5931.44 | 5943.63 | 5955.81 | 5968 | - ------------------------------------------------------------------------------------------------------------------------ - - - gap of hw rx time, us: packets 128: - ------------------------------------------------------------------------------------------------------------------------ - 0 | 406.992 | 12.192 | 12.19 | 12.192 | 12.182 | 12.19 | 12.192 | - 12.19 | 12.192 | 12.19 | 12.19 | 378.116 | 12.192 | 12.182 | 12.19 | - 12.192 | 12.19 | 12.19 | 12.192 | 12.182 | 12.192 | 12.19 | 378.108 | - 12.19 | 12.192 | 12.19 | 12.19 | 12.192 | 12.182 | 12.192 | 12.19 | - 12.19 | 12.192 | 378.1 | 12.19 | 12.19 | 12.192 | 12.182 | 12.192 | - 12.19 | 12.19 | 12.192 | 12.19 | 12.184 | 378.114 | 12.184 | 12.19 | - 12.19 | 12.192 | 12.19 | 12.192 | 12.19 | 12.182 | 12.192 | 12.19 | - 378.116 | 12.19 | 12.192 | 12.19 | 12.192 | 12.182 | 12.19 | 12.192 | - 12.19 | 12.192 | 12.19 | 378.108 | 12.19 | 12.19 | 12.184 | 12.19 | - 12.192 | 12.19 | 12.19 | 12.192 | 12.182 | 12.192 | 378.098 | 12.192 | - 12.19 | 12.192 | 12.19 | 12.19 | 12.192 | 12.182 | 12.192 | 12.19 | - 12.19 | 378.116 | 12.19 | 12.192 | 12.19 | 12.184 | 12.19 | 12.192 | - 12.19 | 12.19 | 12.192 | 12.19 | 378.108 | 12.19 | 12.184 | 12.19 | - 12.19 | 12.192 | 12.19 | 12.192 | 12.19 | 12.182 | 12.192 | 378.116 | - 12.19 | 12.19 | 12.192 | 12.19 | 12.192 | 12.182 | 12.19 | 12.192 | - 12.19 | 12.192 | 378.106 | 12.192 | 12.19 | 12.19 | 12.184 | 12.19 | - ------------------------------------------------------------------------------------------------------------------------ - max val(#1) = 406.99us - min val(#5) = 12.18us - peak-to-peak = 394.81us - mean +- RMS = 46.99 +- 107.77 us - - Priority 1 Output: - hw rx time, us: packets 128: - relative abs time 227442984967 ns - first packet abs time 227442984967 ns - ------------------------------------------------------------------------------------------------------------------------ - 0 | 27.836 | 40.02 | 52.21 | 64.4 | 76.592 | 88.782 | 100.974 | - 113.164 | 125.346 | 137.538 | 149.728 | 161.92 | 174.11 | 186.3 | 198.484 | - 210.674 | 222.866 | 235.056 | 247.246 | 500.006 | 512.19 | 524.38 | 536.57 | - 548.762 | 560.952 | 573.144 | 585.334 | 597.516 | 609.708 | 621.898 | 634.09 | - 646.28 | 658.47 | 670.654 | 682.844 | 695.036 | 707.226 | 719.418 | 731.608 | - 743.798 | 999.998 | 1012.19 | 1024.38 | 1036.57 | 1048.76 | 1060.94 | 1073.13 | - 1085.33 | 1097.52 | 1109.71 | 1121.9 | 1134.09 | 1146.27 | 1158.46 | 1170.65 | - 1182.84 | 1195.03 | 1207.23 | 1219.41 | 1231.6 | 1243.79 | 1500.01 | 1512.2 | - 1524.39 | 1536.58 | 1548.77 | 1560.96 | 1573.15 | 1585.34 | 1597.53 | 1609.71 | - 1621.91 | 1634.1 | 1646.29 | 1658.48 | 1670.67 | 1682.86 | 1695.04 | 1707.23 | - 1719.42 | 1731.61 | 1743.81 | 2000.01 | 2012.2 | 2024.39 | 2036.59 | 2048.78 | - 2060.97 | 2073.16 | 2085.34 | 2097.53 | 2109.72 | 2121.91 | 2134.1 | 2146.29 | - 2158.48 | 2170.67 | 2182.86 | 2195.05 | 2207.24 | 2219.43 | 2231.62 | 2243.8 | - 2500.02 | 2512.21 | 2524.4 | 2536.59 | 2548.78 | 2560.97 | 2573.16 | 2585.35 | - 2597.54 | 2609.73 | 2621.92 | 2634.1 | 2646.29 | 2658.48 | 2670.68 | 2682.87 | - 2695.06 | 2707.24 | 2719.43 | 2731.62 | 2743.81 | 3000.02 | 3012.21 | 3024.39 | - ------------------------------------------------------------------------------------------------------------------------ - - - gap of hw rx time, us: packets 128: - ------------------------------------------------------------------------------------------------------------------------ - 0 | 27.836 | 12.184 | 12.19 | 12.19 | 12.192 | 12.19 | 12.192 | - 12.19 | 12.182 | 12.192 | 12.19 | 12.192 | 12.19 | 12.19 | 12.184 | - 12.19 | 12.192 | 12.19 | 12.19 | 252.76 | 12.184 | 12.19 | 12.19 | - 12.192 | 12.19 | 12.192 | 12.19 | 12.182 | 12.192 | 12.19 | 12.192 | - 12.19 | 12.19 | 12.184 | 12.19 | 12.192 | 12.19 | 12.192 | 12.19 | - 12.19 | 256.2 | 12.19 | 12.192 | 12.19 | 12.19 | 12.184 | 12.19 | - 12.192 | 12.19 | 12.192 | 12.19 | 12.19 | 12.184 | 12.19 | 12.192 | - 12.19 | 12.19 | 12.192 | 12.182 | 12.192 | 12.19 | 256.224 | 12.19 | - 12.19 | 12.184 | 12.19 | 12.192 | 12.19 | 12.19 | 12.192 | 12.182 | - 12.192 | 12.19 | 12.192 | 12.19 | 12.19 | 12.192 | 12.182 | 12.192 | - 12.19 | 12.19 | 12.192 | 256.206 | 12.192 | 12.19 | 12.192 | 12.19 | - 12.19 | 12.192 | 12.182 | 12.192 | 12.19 | 12.19 | 12.192 | 12.19 | - 12.184 | 12.19 | 12.19 | 12.192 | 12.19 | 12.192 | 12.19 | 12.182 | - 256.216 | 12.19 | 12.192 | 12.19 | 12.184 | 12.19 | 12.192 | 12.19 | - 12.19 | 12.192 | 12.19 | 12.182 | 12.192 | 12.19 | 12.192 | 12.19 | - 12.192 | 12.182 | 12.19 | 12.192 | 12.19 | 256.208 | 12.19 | 12.184 | - ------------------------------------------------------------------------------------------------------------------------ - max val(#62) = 256.22us - min val(#9) = 12.18us - peak-to-peak = 244.04us - mean +- RMS = 23.81 +- 51.64 us +.. code:: console + + Priority 3 Output: + hw rx time, us: packets 128: + relative abs time 217361205681 ns + first packet abs time 217361205681 ns + ------------------------------------------------------------------------------------------------------------------------ + 0 | 37.188 | 423.094 | 435.286 | 447.476 | 459.666 | 471.85 | 484.04 | + 496.232 | 508.422 | 520.614 | 532.804 | 544.986 | 923.094 | 935.276 | 947.468 | + 959.658 | 971.85 | 984.04 | 996.23 | 1008.42 | 1020.6 | 1032.8 | 1044.99 | + 1423.1 | 1435.29 | 1447.48 | 1459.67 | 1471.86 | 1484.05 | 1496.24 | 1508.43 | + 1520.62 | 1532.81 | 1545 | 1923.11 | 1935.3 | 1947.49 | 1959.67 | 1971.86 | + 1984.05 | 1996.25 | 2008.44 | 2020.63 | 2032.81 | 2045 | 2423.11 | 2435.29 | + 2447.48 | 2459.67 | 2471.86 | 2484.05 | 2496.25 | 2508.43 | 2520.62 | 2532.81 | + 2545 | 2923.11 | 2935.3 | 2947.49 | 2959.68 | 2971.87 | 2984.05 | 2996.24 | + 3008.44 | 3020.63 | 3032.82 | 3045.01 | 3423.12 | 3435.31 | 3447.5 | 3459.69 | + 3471.88 | 3484.07 | 3496.26 | 3508.45 | 3520.64 | 3532.82 | 3545.02 | 3923.12 | + 3935.31 | 3947.5 | 3959.69 | 3971.89 | 3984.08 | 3996.26 | 4008.45 | 4020.64 | + 4032.83 | 4045.02 | 4423.12 | 4435.31 | 4447.5 | 4459.69 | 4471.88 | 4484.07 | + 4496.26 | 4508.45 | 4520.64 | 4532.83 | 4545.01 | 4923.14 | 4935.33 | 4947.51 | + 4959.7 | 4971.89 | 4984.08 | 4996.27 | 5008.47 | 5020.65 | 5032.84 | 5045.03 | + 5423.14 | 5435.33 | 5447.52 | 5459.71 | 5471.9 | 5484.09 | 5496.27 | 5508.46 | + 5520.66 | 5532.85 | 5545.04 | 5923.14 | 5935.34 | 5947.53 | 5959.71 | 5971.9 | + ------------------------------------------------------------------------------------------------------------------------ + + + gap of hw rx time, us: packets 128: + ------------------------------------------------------------------------------------------------------------------------ + 0 | 37.188 | 385.906 | 12.192 | 12.19 | 12.19 | 12.184 | 12.19 | + 12.192 | 12.19 | 12.192 | 12.19 | 12.182 | 378.108 | 12.182 | 12.192 | + 12.19 | 12.192 | 12.19 | 12.19 | 12.192 | 12.182 | 12.192 | 12.19 | + 378.116 | 12.19 | 12.192 | 12.19 | 12.19 | 12.184 | 12.19 | 12.19 | + 12.192 | 12.19 | 12.192 | 378.106 | 12.192 | 12.19 | 12.184 | 12.19 | + 12.19 | 12.192 | 12.19 | 12.192 | 12.182 | 12.19 | 378.108 | 12.184 | + 12.19 | 12.19 | 12.192 | 12.19 | 12.192 | 12.182 | 12.19 | 12.192 | + 12.19 | 378.108 | 12.19 | 12.192 | 12.19 | 12.19 | 12.184 | 12.19 | + 12.192 | 12.19 | 12.19 | 12.192 | 378.116 | 12.19 | 12.182 | 12.192 | + 12.19 | 12.192 | 12.19 | 12.19 | 12.192 | 12.182 | 12.192 | 378.106 | + 12.192 | 12.19 | 12.19 | 12.192 | 12.19 | 12.184 | 12.19 | 12.19 | + 12.192 | 12.19 | 378.1 | 12.19 | 12.192 | 12.19 | 12.184 | 12.19 | + 12.19 | 12.192 | 12.19 | 12.192 | 12.182 | 378.124 | 12.19 | 12.182 | + 12.192 | 12.19 | 12.192 | 12.19 | 12.192 | 12.182 | 12.19 | 12.192 | + 378.106 | 12.192 | 12.19 | 12.192 | 12.19 | 12.19 | 12.184 | 12.19 | + 12.192 | 12.19 | 12.19 | 378.108 | 12.192 | 12.19 | 12.182 | 12.192 | + ------------------------------------------------------------------------------------------------------------------------ + max val(#2) = 385.91us + min val(#12) = 12.18us + peak-to-peak = 373.72us + mean +- RMS = 47.02 +- 107.19 us + + Priority 2 Output: + hw rx time, us: packets 128: + relative abs time 222402899877 ns + first packet abs time 222402899877 ns + ------------------------------------------------------------------------------------------------------------------------ + 0 | 406.992 | 419.184 | 431.374 | 443.566 | 455.748 | 467.938 | 480.13 | + 492.32 | 504.512 | 516.702 | 528.892 | 907.008 | 919.2 | 931.382 | 943.572 | + 955.764 | 967.954 | 980.144 | 992.336 | 1004.52 | 1016.71 | 1028.9 | 1407.01 | + 1419.2 | 1431.39 | 1443.58 | 1455.77 | 1467.96 | 1480.14 | 1492.34 | 1504.53 | + 1516.72 | 1528.91 | 1907.01 | 1919.2 | 1931.39 | 1943.58 | 1955.76 | 1967.95 | + 1980.14 | 1992.33 | 2004.53 | 2016.72 | 2028.9 | 2407.01 | 2419.2 | 2431.39 | + 2443.58 | 2455.77 | 2467.96 | 2480.15 | 2492.34 | 2504.52 | 2516.72 | 2528.91 | + 2907.02 | 2919.21 | 2931.4 | 2943.59 | 2955.79 | 2967.97 | 2980.16 | 2992.35 | + 3004.54 | 3016.73 | 3028.92 | 3407.03 | 3419.22 | 3431.41 | 3443.59 | 3455.78 | + 3467.98 | 3480.17 | 3492.36 | 3504.55 | 3516.73 | 3528.92 | 3907.02 | 3919.21 | + 3931.4 | 3943.59 | 3955.78 | 3967.97 | 3980.17 | 3992.35 | 4004.54 | 4016.73 | + 4028.92 | 4407.04 | 4419.23 | 4431.42 | 4443.61 | 4455.79 | 4467.98 | 4480.17 | + 4492.36 | 4504.55 | 4516.75 | 4528.94 | 4907.04 | 4919.23 | 4931.42 | 4943.61 | + 4955.8 | 4967.99 | 4980.18 | 4992.37 | 5004.56 | 5016.74 | 5028.94 | 5407.05 | + 5419.24 | 5431.43 | 5443.62 | 5455.81 | 5468.01 | 5480.19 | 5492.38 | 5504.57 | + 5516.76 | 5528.95 | 5907.06 | 5919.25 | 5931.44 | 5943.63 | 5955.81 | 5968 | + ------------------------------------------------------------------------------------------------------------------------ + + + gap of hw rx time, us: packets 128: + ------------------------------------------------------------------------------------------------------------------------ + 0 | 406.992 | 12.192 | 12.19 | 12.192 | 12.182 | 12.19 | 12.192 | + 12.19 | 12.192 | 12.19 | 12.19 | 378.116 | 12.192 | 12.182 | 12.19 | + 12.192 | 12.19 | 12.19 | 12.192 | 12.182 | 12.192 | 12.19 | 378.108 | + 12.19 | 12.192 | 12.19 | 12.19 | 12.192 | 12.182 | 12.192 | 12.19 | + 12.19 | 12.192 | 378.1 | 12.19 | 12.19 | 12.192 | 12.182 | 12.192 | + 12.19 | 12.19 | 12.192 | 12.19 | 12.184 | 378.114 | 12.184 | 12.19 | + 12.19 | 12.192 | 12.19 | 12.192 | 12.19 | 12.182 | 12.192 | 12.19 | + 378.116 | 12.19 | 12.192 | 12.19 | 12.192 | 12.182 | 12.19 | 12.192 | + 12.19 | 12.192 | 12.19 | 378.108 | 12.19 | 12.19 | 12.184 | 12.19 | + 12.192 | 12.19 | 12.19 | 12.192 | 12.182 | 12.192 | 378.098 | 12.192 | + 12.19 | 12.192 | 12.19 | 12.19 | 12.192 | 12.182 | 12.192 | 12.19 | + 12.19 | 378.116 | 12.19 | 12.192 | 12.19 | 12.184 | 12.19 | 12.192 | + 12.19 | 12.19 | 12.192 | 12.19 | 378.108 | 12.19 | 12.184 | 12.19 | + 12.19 | 12.192 | 12.19 | 12.192 | 12.19 | 12.182 | 12.192 | 378.116 | + 12.19 | 12.19 | 12.192 | 12.19 | 12.192 | 12.182 | 12.19 | 12.192 | + 12.19 | 12.192 | 378.106 | 12.192 | 12.19 | 12.19 | 12.184 | 12.19 | + ------------------------------------------------------------------------------------------------------------------------ + max val(#1) = 406.99us + min val(#5) = 12.18us + peak-to-peak = 394.81us + mean +- RMS = 46.99 +- 107.77 us + + Priority 1 Output: + hw rx time, us: packets 128: + relative abs time 227442984967 ns + first packet abs time 227442984967 ns + ------------------------------------------------------------------------------------------------------------------------ + 0 | 27.836 | 40.02 | 52.21 | 64.4 | 76.592 | 88.782 | 100.974 | + 113.164 | 125.346 | 137.538 | 149.728 | 161.92 | 174.11 | 186.3 | 198.484 | + 210.674 | 222.866 | 235.056 | 247.246 | 500.006 | 512.19 | 524.38 | 536.57 | + 548.762 | 560.952 | 573.144 | 585.334 | 597.516 | 609.708 | 621.898 | 634.09 | + 646.28 | 658.47 | 670.654 | 682.844 | 695.036 | 707.226 | 719.418 | 731.608 | + 743.798 | 999.998 | 1012.19 | 1024.38 | 1036.57 | 1048.76 | 1060.94 | 1073.13 | + 1085.33 | 1097.52 | 1109.71 | 1121.9 | 1134.09 | 1146.27 | 1158.46 | 1170.65 | + 1182.84 | 1195.03 | 1207.23 | 1219.41 | 1231.6 | 1243.79 | 1500.01 | 1512.2 | + 1524.39 | 1536.58 | 1548.77 | 1560.96 | 1573.15 | 1585.34 | 1597.53 | 1609.71 | + 1621.91 | 1634.1 | 1646.29 | 1658.48 | 1670.67 | 1682.86 | 1695.04 | 1707.23 | + 1719.42 | 1731.61 | 1743.81 | 2000.01 | 2012.2 | 2024.39 | 2036.59 | 2048.78 | + 2060.97 | 2073.16 | 2085.34 | 2097.53 | 2109.72 | 2121.91 | 2134.1 | 2146.29 | + 2158.48 | 2170.67 | 2182.86 | 2195.05 | 2207.24 | 2219.43 | 2231.62 | 2243.8 | + 2500.02 | 2512.21 | 2524.4 | 2536.59 | 2548.78 | 2560.97 | 2573.16 | 2585.35 | + 2597.54 | 2609.73 | 2621.92 | 2634.1 | 2646.29 | 2658.48 | 2670.68 | 2682.87 | + 2695.06 | 2707.24 | 2719.43 | 2731.62 | 2743.81 | 3000.02 | 3012.21 | 3024.39 | + ------------------------------------------------------------------------------------------------------------------------ + + + gap of hw rx time, us: packets 128: + ------------------------------------------------------------------------------------------------------------------------ + 0 | 27.836 | 12.184 | 12.19 | 12.19 | 12.192 | 12.19 | 12.192 | + 12.19 | 12.182 | 12.192 | 12.19 | 12.192 | 12.19 | 12.19 | 12.184 | + 12.19 | 12.192 | 12.19 | 12.19 | 252.76 | 12.184 | 12.19 | 12.19 | + 12.192 | 12.19 | 12.192 | 12.19 | 12.182 | 12.192 | 12.19 | 12.192 | + 12.19 | 12.19 | 12.184 | 12.19 | 12.192 | 12.19 | 12.192 | 12.19 | + 12.19 | 256.2 | 12.19 | 12.192 | 12.19 | 12.19 | 12.184 | 12.19 | + 12.192 | 12.19 | 12.192 | 12.19 | 12.19 | 12.184 | 12.19 | 12.192 | + 12.19 | 12.19 | 12.192 | 12.182 | 12.192 | 12.19 | 256.224 | 12.19 | + 12.19 | 12.184 | 12.19 | 12.192 | 12.19 | 12.19 | 12.192 | 12.182 | + 12.192 | 12.19 | 12.192 | 12.19 | 12.19 | 12.192 | 12.182 | 12.192 | + 12.19 | 12.19 | 12.192 | 256.206 | 12.192 | 12.19 | 12.192 | 12.19 | + 12.19 | 12.192 | 12.182 | 12.192 | 12.19 | 12.19 | 12.192 | 12.19 | + 12.184 | 12.19 | 12.19 | 12.192 | 12.19 | 12.192 | 12.19 | 12.182 | + 256.216 | 12.19 | 12.192 | 12.19 | 12.184 | 12.19 | 12.192 | 12.19 | + 12.19 | 12.192 | 12.19 | 12.182 | 12.192 | 12.19 | 12.192 | 12.19 | + 12.192 | 12.182 | 12.19 | 12.192 | 12.19 | 256.208 | 12.19 | 12.184 | + ------------------------------------------------------------------------------------------------------------------------ + max val(#62) = 256.22us + min val(#9) = 12.18us + peak-to-peak = 244.04us + mean +- RMS = 23.81 +- 51.64 us **Explanation:** -:: +.. code:: text - Looking at the inter-packet gaps, which correspond to the second table within each of the priorities, for Priority 3, - we see that the inter-packet gap is roughly 12 microseconds for about 10 packets, after which it suddenly jumps to - around 378.108 microseconds. This jump corresponds to the time that the packets with Priorities 2 and 1, with - duration of 125 and 250 micro seconds (125 + 250 = 375 ~ 378.108) were being transmitted. + Looking at the inter-packet gaps, which correspond to the second table within each of the priorities, for Priority 3, + we see that the inter-packet gap is roughly 12 microseconds for about 10 packets, after which it suddenly jumps to + around 378.108 microseconds. This jump corresponds to the time that the packets with Priorities 2 and 1, with + duration of 125 and 250 micro seconds (125 + 250 = 375 ~ 378.108) were being transmitted. - Similarly, for packets with Priority 2, there is a sudden gap of 378.116 microseconds, which corresponds to the time that - the packets with Priorities 1 and 3, with duration of 250 and 125 microseconds (250 + 125 = 375 ~ 378.108) were - being transmitted. + Similarly, for packets with Priority 2, there is a sudden gap of 378.116 microseconds, which corresponds to the time that + the packets with Priorities 1 and 3, with duration of 250 and 125 microseconds (250 + 125 = 375 ~ 378.108) were + being transmitted. - Now, for packets with Priority 1, the gap is of 252.76 microseconds, which corresponds to the time that the packets - with Priorities 3 and 2, with duration of 125 and 125 microseconds (125 + 125 = 250 ~ 252.76) were being transmitted. + Now, for packets with Priority 1, the gap is of 252.76 microseconds, which corresponds to the time that the packets + with Priorities 3 and 2, with duration of 125 and 125 microseconds (125 + 125 = 250 ~ 252.76) were being transmitted. EST scheduled on ports 1 and 2 of AM625-SK's CPSW3G and received by J7VCL ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -671,380 +671,380 @@ Connect eth0 of AM625-SK to eth1 of J7VCL and eth1 of AM625-SK to eth2 of J7VCL. 1. Run the following on AM625-SK: -:: - - #!/bin/sh - - # AM625-SK CPSW3G Port-1 and Port-2 - ifconfig eth0 down - ifconfig eth1 down - ethtool -L eth0 tx 3 - ethtool -L eth1 tx 3 - ethtool --set-priv-flags eth0 p0-rx-ptype-rrobin off - ethtool --set-priv-flags eth1 p0-rx-ptype-rrobin off - ifconfig eth0 up - ifconfig eth1 up - sleep 30 - - #sync system time to CPSW CPTS - phc2sys -s CLOCK_REALTIME -c eth0 -m -O 0 > /dev/null & - - #calc base_time as now + 2min, give it time to sync - base=$(((`date +%s` + 2 * 60)*1000000000)) - - tc qdisc replace dev eth0 parent root handle 100 taprio \ - num_tc 3 \ - map 0 0 1 2 0 0 0 0 0 0 0 0 0 0 0 0 \ - queues 1@0 1@1 1@2 \ - base-time $base \ - sched-entry S 4 125000 \ - sched-entry S 2 125000 \ - sched-entry S 1 250000 \ - flags 2 - - tc qdisc replace dev eth1 parent root handle 100 taprio \ - num_tc 3 \ - map 0 0 1 2 0 0 0 0 0 0 0 0 0 0 0 0 \ - queues 1@0 1@1 1@2 \ - base-time $base \ - sched-entry S 4 125000 \ - sched-entry S 2 125000 \ - sched-entry S 1 250000 \ - flags 2 - - tc qdisc add dev eth0 clsact - tc qdisc add dev eth1 clsact - tc filter add dev eth0 egress protocol ip prio 1 u32 match ip dport 5001 0xffff action skbedit priority 3 - tc filter add dev eth1 egress protocol ip prio 1 u32 match ip dport 5001 0xffff action skbedit priority 3 - tc filter add dev eth0 egress protocol ip prio 1 u32 match ip dport 5002 0xffff action skbedit priority 2 - tc filter add dev eth1 egress protocol ip prio 1 u32 match ip dport 5002 0xffff action skbedit priority 2 - tc filter add dev eth0 egress protocol ip prio 1 u32 match ip dport 5003 0xffff action skbedit priority 1 - tc filter add dev eth1 egress protocol ip prio 1 u32 match ip dport 5003 0xffff action skbedit priority 1 - tc qdisc show dev eth0 - tc qdisc show dev eth1 - - # Wait for 2 minutes for sync to complete - sleep 120 - - # NOTE: Replace 70:ff:76:1d:8c:08 and 70:ff:76:1d:8c:09 with the corresponding MAC addresses of CPSW5G port-1 - # and CPSW5G port-2 of J7VCL - ./plget -i eth0 -m pkt-gen -p 3 -t ptpl2 -n 128 -a 70:ff:76:1d:8c:08 -l 1500 & ./plget -i eth1 -m pkt-gen -p 3 -t ptpl2 -n 128 -a 70:ff:76:1d:8c:09 -l 1500 - sleep 10 - ./plget -i eth0 -m pkt-gen -p 2 -t ptpl2 -n 128 -a 70:ff:76:1d:8c:08 -l 1500 & ./plget -i eth1 -m pkt-gen -p 2 -t ptpl2 -n 128 -a 70:ff:76:1d:8c:09 -l 1500 - sleep 10 - ./plget -i eth0 -m pkt-gen -p 1 -t ptpl2 -n 128 -a 70:ff:76:1d:8c:08 -l 1500 & ./plget -i eth1 -m pkt-gen -p 1 -t ptpl2 -n 128 -a 70:ff:76:1d:8c:09 -l 1500 +.. code:: sh + + #!/bin/sh + + # AM625-SK CPSW3G Port-1 and Port-2 + ifconfig eth0 down + ifconfig eth1 down + ethtool -L eth0 tx 3 + ethtool -L eth1 tx 3 + ethtool --set-priv-flags eth0 p0-rx-ptype-rrobin off + ethtool --set-priv-flags eth1 p0-rx-ptype-rrobin off + ifconfig eth0 up + ifconfig eth1 up + sleep 30 + + #sync system time to CPSW CPTS + phc2sys -s CLOCK_REALTIME -c eth0 -m -O 0 > /dev/null & + + #calc base_time as now + 2min, give it time to sync + base=$(((`date +%s` + 2 * 60)*1000000000)) + + tc qdisc replace dev eth0 parent root handle 100 taprio \ + num_tc 3 \ + map 0 0 1 2 0 0 0 0 0 0 0 0 0 0 0 0 \ + queues 1@0 1@1 1@2 \ + base-time $base \ + sched-entry S 4 125000 \ + sched-entry S 2 125000 \ + sched-entry S 1 250000 \ + flags 2 + + tc qdisc replace dev eth1 parent root handle 100 taprio \ + num_tc 3 \ + map 0 0 1 2 0 0 0 0 0 0 0 0 0 0 0 0 \ + queues 1@0 1@1 1@2 \ + base-time $base \ + sched-entry S 4 125000 \ + sched-entry S 2 125000 \ + sched-entry S 1 250000 \ + flags 2 + + tc qdisc add dev eth0 clsact + tc qdisc add dev eth1 clsact + tc filter add dev eth0 egress protocol ip prio 1 u32 match ip dport 5001 0xffff action skbedit priority 3 + tc filter add dev eth1 egress protocol ip prio 1 u32 match ip dport 5001 0xffff action skbedit priority 3 + tc filter add dev eth0 egress protocol ip prio 1 u32 match ip dport 5002 0xffff action skbedit priority 2 + tc filter add dev eth1 egress protocol ip prio 1 u32 match ip dport 5002 0xffff action skbedit priority 2 + tc filter add dev eth0 egress protocol ip prio 1 u32 match ip dport 5003 0xffff action skbedit priority 1 + tc filter add dev eth1 egress protocol ip prio 1 u32 match ip dport 5003 0xffff action skbedit priority 1 + tc qdisc show dev eth0 + tc qdisc show dev eth1 + + # Wait for 2 minutes for sync to complete + sleep 120 + + # NOTE: Replace 70:ff:76:1d:8c:08 and 70:ff:76:1d:8c:09 with the corresponding MAC addresses of CPSW5G port-1 + # and CPSW5G port-2 of J7VCL + ./plget -i eth0 -m pkt-gen -p 3 -t ptpl2 -n 128 -a 70:ff:76:1d:8c:08 -l 1500 & ./plget -i eth1 -m pkt-gen -p 3 -t ptpl2 -n 128 -a 70:ff:76:1d:8c:09 -l 1500 + sleep 10 + ./plget -i eth0 -m pkt-gen -p 2 -t ptpl2 -n 128 -a 70:ff:76:1d:8c:08 -l 1500 & ./plget -i eth1 -m pkt-gen -p 2 -t ptpl2 -n 128 -a 70:ff:76:1d:8c:09 -l 1500 + sleep 10 + ./plget -i eth0 -m pkt-gen -p 1 -t ptpl2 -n 128 -a 70:ff:76:1d:8c:08 -l 1500 & ./plget -i eth1 -m pkt-gen -p 1 -t ptpl2 -n 128 -a 70:ff:76:1d:8c:09 -l 1500 2. Once eth0 and eth1 are up in AM625-SK, run the following on J7VCL: -:: +.. code:: sh - #!/bin/sh - ./plget -m rx-lat -f ipgap -n 128 -i eth1 -t ptpl2 -f hwts > eth0-prio3.txt& ./plget -m rx-lat -f ipgap -n 128 -i eth2 -t ptpl2 -f hwts > eth1-prio3.txt - sleep 5 - ./plget -m rx-lat -f ipgap -n 128 -i eth1 -t ptpl2 -f hwts > eth0-prio2.txt& ./plget -m rx-lat -f ipgap -n 128 -i eth2 -t ptpl2 -f hwts > eth1-prio2.txt - sleep 5 - ./plget -m rx-lat -f ipgap -n 128 -i eth1 -t ptpl2 -f hwts > eth0-prio1.txt& ./plget -m rx-lat -f ipgap -n 128 -i eth2 -t ptpl2 -f hwts > eth1-prio1.txt + #!/bin/sh + ./plget -m rx-lat -f ipgap -n 128 -i eth1 -t ptpl2 -f hwts > eth0-prio3.txt& ./plget -m rx-lat -f ipgap -n 128 -i eth2 -t ptpl2 -f hwts > eth1-prio3.txt + sleep 5 + ./plget -m rx-lat -f ipgap -n 128 -i eth1 -t ptpl2 -f hwts > eth0-prio2.txt& ./plget -m rx-lat -f ipgap -n 128 -i eth2 -t ptpl2 -f hwts > eth1-prio2.txt + sleep 5 + ./plget -m rx-lat -f ipgap -n 128 -i eth1 -t ptpl2 -f hwts > eth0-prio1.txt& ./plget -m rx-lat -f ipgap -n 128 -i eth2 -t ptpl2 -f hwts > eth1-prio1.txt .. note:: - The results are stored on J7VCL in the files named eth0-prio1.txt, - eth0-prio2.txt, eth0-prio3.txt for eth0 of AM625-SK and eth1-prio1.txt, - eth1-prio2.txt, eth1-prio3.txt for eth1 of AM625-SK. + The results are stored on J7VCL in the files named eth0-prio1.txt, + eth0-prio2.txt, eth0-prio3.txt for eth0 of AM625-SK and eth1-prio1.txt, + eth1-prio2.txt, eth1-prio3.txt for eth1 of AM625-SK. - At any time, both eth0 and eth1 are transmitting traffic of the same priority - through their respective interfaces. + At any time, both eth0 and eth1 are transmitting traffic of the same priority + through their respective interfaces. **Results:** -:: - - eth0-prio1.txt: - hw rx time, us: packets 128: - relative abs time 759931442120 ns - first packet abs time 759931442120 ns - ------------------------------------------------------------------------------------------------------------------------ - 0 | 12.19 | 24.38 | 36.58 | 48.77 | 60.96 | 73.15 | 85.345 | - 97.535 | 109.73 | 121.925 | 134.115 | 146.305 | 158.495 | 170.685 | 182.875 | - 195.075 | 207.265 | 219.455 | 231.645 | 243.84 | 499.995 | 512.185 | 524.385 | - 536.575 | 548.765 | 560.955 | 573.145 | 585.335 | 597.525 | 609.725 | 621.915 | - 634.11 | 646.3 | 658.49 | 670.68 | 682.88 | 695.07 | 707.26 | 719.45 | - 731.64 | 743.83 | 999.99 | 1012.18 | 1024.38 | 1036.57 | 1048.76 | 1060.95 | - 1073.14 | 1085.33 | 1097.53 | 1109.72 | 1121.91 | 1134.1 | 1146.29 | 1158.48 | - 1170.68 | 1182.87 | 1195.07 | 1207.26 | 1219.44 | 1231.63 | 1243.83 | 1499.99 | - 1512.18 | 1524.37 | 1536.56 | 1548.76 | 1560.94 | 1573.13 | 1585.34 | 1597.53 | - 1612.01 | 1624.2 | 1636.39 | 1648.58 | 1660.78 | 1672.97 | 2035.16 | 2047.36 | - 2059.55 | 2075.97 | 2088.16 | 2100.36 | 2112.55 | 2124.74 | 2136.93 | 2149.13 | - 2161.32 | 2173.51 | 2185.7 | 2197.89 | 2210.08 | 2222.64 | 2234.84 | 2247.03 | - 2499.98 | 2512.17 | 2524.36 | 2547.22 | 2559.42 | 2571.61 | 2587.07 | 2599.26 | - 2611.45 | 2623.64 | 2635.82 | 2648.03 | 2661.2 | 2673.39 | 2685.58 | 2697.77 | - 2709.97 | 2722.16 | 2734.36 | 2746.55 | 2999.97 | 3012.16 | 3024.36 | 3036.55 | - 3048.74 | 3060.93 | 3073.12 | 3085.32 | 3097.51 | 3109.7 | 3121.89 | 3134.09 | - ------------------------------------------------------------------------------------------------------------------------ - - - gap of hw rx time, us: packets 128: - ------------------------------------------------------------------------------------------------------------------------ - 0 | 12.19 | 12.19 | 12.2 | 12.19 | 12.19 | 12.19 | 12.195 | - 12.19 | 12.195 | 12.195 | 12.19 | 12.19 | 12.19 | 12.19 | 12.19 | - 12.2 | 12.19 | 12.19 | 12.19 | 12.195 | 256.155 | 12.19 | 12.2 | - 12.19 | 12.19 | 12.19 | 12.19 | 12.19 | 12.19 | 12.2 | 12.19 | - 12.195 | 12.19 | 12.19 | 12.19 | 12.2 | 12.19 | 12.19 | 12.19 | - 12.19 | 12.19 | 256.16 | 12.195 | 12.19 | 12.195 | 12.19 | 12.19 | - 12.19 | 12.19 | 12.2 | 12.19 | 12.19 | 12.19 | 12.19 | 12.195 | - 12.195 | 12.19 | 12.195 | 12.19 | 12.19 | 12.19 | 12.19 | 256.165 | - 12.19 | 12.19 | 12.19 | 12.195 | 12.19 | 12.19 | 12.2 | 12.19 | - 14.485 | 12.19 | 12.19 | 12.19 | 12.2 | 12.19 | 362.195 | 12.19 | - 12.19 | 16.43 | 12.19 | 12.19 | 12.195 | 12.19 | 12.19 | 12.2 | - 12.19 | 12.19 | 12.19 | 12.19 | 12.19 | 12.56 | 12.2 | 12.19 | - 252.95 | 12.19 | 12.19 | 22.86 | 12.2 | 12.19 | 15.455 | 12.19 | - 12.19 | 12.19 | 12.19 | 12.2 | 13.175 | 12.19 | 12.19 | 12.19 | - 12.195 | 12.195 | 12.195 | 12.19 | 253.425 | 12.19 | 12.195 | 12.19 | - 12.2 | 12.19 | 12.19 | 12.19 | 12.19 | 12.19 | 12.19 | 12.2 | - ------------------------------------------------------------------------------------------------------------------------ - max val(#78) = 362.19us - min val(#1) = 12.19us - peak-to-peak = 350.00us - mean +- RMS = 24.68 +- 55.95 us - - eth1-prio1.txt: - hw rx time, us: packets 128: - relative abs time 759931442120 ns - first packet abs time 759931442120 ns - ------------------------------------------------------------------------------------------------------------------------ - 0 | 12.195 | 24.385 | 36.575 | 48.765 | 60.955 | 73.155 | 85.345 | - 97.535 | 109.725 | 121.915 | 134.11 | 146.3 | 158.495 | 170.69 | 182.88 | - 195.07 | 207.26 | 219.45 | 231.65 | 243.84 | 499.995 | 512.185 | 524.375 | - 536.57 | 548.76 | 560.955 | 573.15 | 585.34 | 597.53 | 609.72 | 621.91 | - 634.1 | 646.3 | 658.49 | 670.68 | 682.87 | 695.065 | 707.255 | 719.445 | - 731.645 | 743.835 | 999.99 | 1012.18 | 1024.37 | 1036.56 | 1048.76 | 1060.95 | - 1073.14 | 1085.34 | 1097.53 | 1109.71 | 1121.9 | 1134.11 | 1146.3 | 1158.48 | - 1170.67 | 1182.87 | 1195.06 | 1207.25 | 1219.44 | 1231.63 | 1243.83 | 1499.98 | - 1512.17 | 1524.37 | 1536.56 | 1548.76 | 1560.94 | 1573.13 | 1585.33 | 1597.52 | - 1609.71 | 1621.9 | 1634.1 | 1646.29 | 1658.48 | 1670.67 | 1682.86 | 1695.05 | - 1707.25 | 1719.44 | 1731.63 | 1743.82 | 1999.98 | 2012.17 | 2024.36 | 2036.56 | - 2048.75 | 2060.94 | 2073.13 | 2085.32 | 2097.51 | 2109.71 | 2121.9 | 2134.09 | - 2146.28 | 2158.47 | 2170.66 | 2182.86 | 2195.05 | 2207.24 | 2219.43 | 2231.62 | - 2243.82 | 2499.97 | 2512.16 | 2524.36 | 2536.55 | 2548.74 | 2560.93 | 2573.12 | - 2585.32 | 2597.51 | 2609.7 | 2621.89 | 2634.09 | 2646.28 | 2658.47 | 2670.66 | - 2682.86 | 2695.05 | 2707.24 | 2719.43 | 2731.62 | 2743.81 | 2999.97 | 3012.16 | - ------------------------------------------------------------------------------------------------------------------------ - - - gap of hw rx time, us: packets 128: - ------------------------------------------------------------------------------------------------------------------------ - 0 | 12.195 | 12.19 | 12.19 | 12.19 | 12.19 | 12.2 | 12.19 | - 12.19 | 12.19 | 12.19 | 12.195 | 12.19 | 12.195 | 12.195 | 12.19 | - 12.19 | 12.19 | 12.19 | 12.2 | 12.19 | 256.155 | 12.19 | 12.19 | - 12.195 | 12.19 | 12.195 | 12.195 | 12.19 | 12.19 | 12.19 | 12.19 | - 12.19 | 12.2 | 12.19 | 12.19 | 12.19 | 12.195 | 12.19 | 12.19 | - 12.2 | 12.19 | 256.155 | 12.19 | 12.19 | 12.19 | 12.2 | 12.19 | - 12.19 | 12.195 | 12.19 | 12.19 | 12.19 | 12.2 | 12.19 | 12.19 | - 12.19 | 12.19 | 12.19 | 12.195 | 12.195 | 12.19 | 12.195 | 256.155 | - 12.19 | 12.19 | 12.19 | 12.2 | 12.19 | 12.19 | 12.19 | 12.19 | - 12.195 | 12.195 | 12.19 | 12.195 | 12.19 | 12.19 | 12.19 | 12.19 | - 12.2 | 12.19 | 12.19 | 12.19 | 256.16 | 12.19 | 12.19 | 12.2 | - 12.19 | 12.19 | 12.19 | 12.19 | 12.19 | 12.2 | 12.19 | 12.19 | - 12.19 | 12.195 | 12.19 | 12.19 | 12.2 | 12.19 | 12.19 | 12.19 | - 12.19 | 256.155 | 12.195 | 12.195 | 12.19 | 12.195 | 12.19 | 12.19 | - 12.19 | 12.19 | 12.2 | 12.19 | 12.19 | 12.19 | 12.19 | 12.19 | - 12.2 | 12.19 | 12.19 | 12.195 | 12.19 | 12.19 | 256.155 | 12.2 | - ------------------------------------------------------------------------------------------------------------------------ - max val(#84) = 256.16us - min val(#2) = 12.19us - peak-to-peak = 243.97us - mean +- RMS = 23.72 +- 51.76 us - - eth0-prio2.txt: - hw rx time, us: packets 128: - relative abs time 749867445650 ns - first packet abs time 749867445650 ns - ------------------------------------------------------------------------------------------------------------------------ - 0 | 507.635 | 523.095 | 1011.59 | 1023.77 | 1035.97 | 1048.16 | 1060.35 | - 1072.54 | 1084.74 | 1096.93 | 1472.38 | 1484.59 | 1496.78 | 1508.96 | 1521.15 | - 1533.35 | 1545.54 | 1557.72 | 1569.92 | 1582.12 | 1594.31 | 1972.38 | 1984.58 | - 1996.77 | 2008.96 | 2021.15 | 2033.34 | 2045.53 | 2057.73 | 2069.92 | 2082.11 | - 2094.3 | 2472.37 | 2484.57 | 2496.76 | 2508.95 | 2521.14 | 2533.32 | 2545.53 | - 2557.72 | 2569.91 | 2582.09 | 2594.28 | 2972.36 | 2984.55 | 2996.75 | 3008.94 | - 3021.13 | 3033.32 | 3045.52 | 3057.71 | 3069.9 | 3082.09 | 3094.28 | 3472.36 | - 3484.55 | 3496.74 | 3508.93 | 3521.12 | 3533.32 | 3545.51 | 3557.7 | 3569.89 | - 3582.09 | 3594.28 | 3972.36 | 3984.55 | 3996.74 | 4008.93 | 4021.12 | 4033.32 | - 4045.51 | 4057.7 | 4069.89 | 4082.08 | 4094.27 | 4472.35 | 4484.54 | 4496.73 | - 4508.93 | 4521.12 | 4533.31 | 4545.5 | 4557.69 | 4569.88 | 4582.07 | 4594.27 | - 4972.34 | 4984.53 | 4996.73 | 5008.92 | 5021.11 | 5033.31 | 5045.49 | 5057.69 | - 5069.88 | 5082.07 | 5094.27 | 5472.34 | 5484.53 | 5496.73 | 5508.91 | 5521.1 | - 5533.3 | 5545.49 | 5557.68 | 5569.88 | 5582.07 | 5594.26 | 5972.34 | 5984.53 | - 5996.72 | 6008.91 | 6021.1 | 6033.29 | 6045.48 | 6057.68 | 6069.87 | 6082.06 | - 6094.26 | 6472.33 | 6484.52 | 6496.72 | 6508.9 | 6521.1 | 6533.28 | 6545.48 | - ------------------------------------------------------------------------------------------------------------------------ - - - gap of hw rx time, us: packets 128: - ------------------------------------------------------------------------------------------------------------------------ - 0 | 507.635 | 15.46 | 488.49 | 12.19 | 12.195 | 12.19 | 12.19 | - 12.19 | 12.2 | 12.19 | 375.455 | 12.2 | 12.19 | 12.19 | 12.19 | - 12.19 | 12.19 | 12.19 | 12.2 | 12.19 | 12.19 | 378.075 | 12.195 | - 12.195 | 12.19 | 12.19 | 12.19 | 12.19 | 12.2 | 12.19 | 12.19 | - 12.19 | 378.07 | 12.195 | 12.19 | 12.19 | 12.19 | 12.19 | 12.2 | - 12.19 | 12.19 | 12.19 | 12.19 | 378.08 | 12.19 | 12.195 | 12.19 | - 12.19 | 12.19 | 12.2 | 12.19 | 12.19 | 12.19 | 12.19 | 378.08 | - 12.19 | 12.19 | 12.19 | 12.195 | 12.195 | 12.19 | 12.195 | 12.19 | - 12.19 | 12.19 | 378.08 | 12.19 | 12.19 | 12.19 | 12.2 | 12.19 | - 12.19 | 12.19 | 12.195 | 12.19 | 12.19 | 378.08 | 12.19 | 12.19 | - 12.2 | 12.19 | 12.19 | 12.19 | 12.19 | 12.19 | 12.19 | 12.2 | - 378.07 | 12.195 | 12.195 | 12.19 | 12.195 | 12.19 | 12.19 | 12.19 | - 12.19 | 12.2 | 12.19 | 378.07 | 12.2 | 12.19 | 12.19 | 12.19 | - 12.195 | 12.19 | 12.19 | 12.2 | 12.19 | 12.19 | 378.08 | 12.19 | - 12.19 | 12.19 | 12.19 | 12.19 | 12.19 | 12.2 | 12.19 | 12.19 | - 12.195 | 378.075 | 12.195 | 12.19 | 12.19 | 12.19 | 12.19 | 12.2 | - ------------------------------------------------------------------------------------------------------------------------ - max val(#1) = 507.63us - min val(#4) = 12.19us - peak-to-peak = 495.44us - mean +- RMS = 51.54 +- 117.26 us - - eth1-prio2.txt: - hw rx time, us: packets 128: - relative abs time 749867447580 ns - first packet abs time 749867447580 ns - ------------------------------------------------------------------------------------------------------------------------ - 0 | 48.73 | 60.93 | 73.12 | 85.31 | 470.47 | 482.66 | 494.85 | - 507.04 | 519.23 | 531.42 | 543.615 | 555.81 | 568 | 580.195 | 592.385 | - 970.465 | 982.655 | 994.845 | 1007.03 | 1019.23 | 1031.41 | 1043.62 | 1055.81 | - 1067.99 | 1080.18 | 1092.38 | 1470.45 | 1482.64 | 1494.84 | 1507.03 | 1519.22 | - 1531.42 | 1543.61 | 1555.8 | 1567.99 | 1580.18 | 1592.37 | 1970.45 | 1982.64 | - 1994.83 | 2007.03 | 2019.22 | 2031.41 | 2043.61 | 2055.8 | 2067.99 | 2080.18 | - 2092.36 | 2470.45 | 2482.64 | 2494.82 | 2507.03 | 2519.22 | 2531.41 | 2543.59 | - 2555.78 | 2567.98 | 2580.17 | 2592.36 | 2970.44 | 2982.63 | 2994.83 | 3007.02 | - 3019.21 | 3031.4 | 3043.59 | 3055.78 | 3067.97 | 3080.17 | 3092.36 | 3470.43 | - 3482.63 | 3494.82 | 3507.01 | 3519.2 | 3531.39 | 3543.59 | 3555.78 | 3567.97 | - 3580.16 | 3592.36 | 3970.43 | 3982.62 | 3994.82 | 4007.01 | 4019.2 | 4031.39 | - 4043.58 | 4055.78 | 4067.97 | 4080.16 | 4092.35 | 4470.43 | 4482.62 | 4494.81 | - 4507 | 4519.19 | 4531.38 | 4543.58 | 4555.77 | 4567.96 | 4580.15 | 4592.35 | - 4970.42 | 4982.61 | 4994.81 | 5006.99 | 5019.19 | 5031.38 | 5043.57 | 5055.77 | - 5067.95 | 5080.15 | 5092.34 | 5470.41 | 5482.6 | 5494.8 | 5506.99 | 5519.18 | - 5531.38 | 5543.57 | 5555.76 | 5567.95 | 5580.14 | 5592.33 | 5970.41 | 5982.6 | - ------------------------------------------------------------------------------------------------------------------------ - - - gap of hw rx time, us: packets 128: - ------------------------------------------------------------------------------------------------------------------------ - 0 | 48.73 | 12.2 | 12.19 | 12.19 | 385.16 | 12.19 | 12.19 | - 12.19 | 12.19 | 12.19 | 12.195 | 12.195 | 12.19 | 12.195 | 12.19 | - 378.08 | 12.19 | 12.19 | 12.19 | 12.19 | 12.19 | 12.2 | 12.19 | - 12.19 | 12.19 | 12.19 | 378.08 | 12.19 | 12.195 | 12.19 | 12.19 | - 12.2 | 12.19 | 12.19 | 12.19 | 12.19 | 12.19 | 378.08 | 12.19 | - 12.19 | 12.195 | 12.195 | 12.19 | 12.195 | 12.19 | 12.19 | 12.19 | - 12.19 | 378.08 | 12.19 | 12.19 | 12.2 | 12.19 | 12.19 | 12.19 | - 12.19 | 12.195 | 12.19 | 12.195 | 378.075 | 12.19 | 12.2 | 12.19 | - 12.19 | 12.19 | 12.19 | 12.19 | 12.19 | 12.2 | 12.19 | 378.07 | - 12.2 | 12.19 | 12.19 | 12.195 | 12.19 | 12.19 | 12.19 | 12.2 | - 12.19 | 12.19 | 378.07 | 12.2 | 12.19 | 12.19 | 12.19 | 12.195 | - 12.19 | 12.195 | 12.195 | 12.19 | 12.19 | 378.08 | 12.19 | 12.19 | - 12.19 | 12.19 | 12.19 | 12.2 | 12.19 | 12.19 | 12.19 | 12.195 | - 378.075 | 12.195 | 12.19 | 12.19 | 12.19 | 12.19 | 12.2 | 12.19 | - 12.19 | 12.19 | 12.19 | 378.08 | 12.19 | 12.195 | 12.19 | 12.19 | - 12.2 | 12.19 | 12.19 | 12.19 | 12.19 | 12.19 | 378.08 | 12.19 | - ------------------------------------------------------------------------------------------------------------------------ - max val(#5) = 385.16us - min val(#3) = 12.19us - peak-to-peak = 372.97us - mean +- RMS = 47.11 +- 107.15 us - - eth0-prio3.txt: - hw rx time, us: packets 128: - relative abs time 739812393775 ns - first packet abs time 739812393775 ns - ------------------------------------------------------------------------------------------------------------------------ - 0 | 12.19 | 24.38 | 36.57 | 48.76 | 60.95 | 73.14 | 85.34 | - 97.53 | 109.72 | 121.915 | 499.985 | 512.175 | 524.365 | 536.555 | 548.745 | - 560.94 | 573.135 | 585.325 | 597.52 | 609.71 | 621.9 | 999.98 | 1012.17 | - 1024.36 | 1036.55 | 1048.74 | 1060.94 | 1073.13 | 1085.32 | 1097.51 | 1109.7 | - 1121.89 | 1499.97 | 1512.16 | 1524.36 | 1536.55 | 1548.74 | 1560.93 | 1573.12 | - 1585.32 | 1597.51 | 1609.69 | 1621.88 | 1999.96 | 2012.15 | 2024.35 | 2036.54 | - 2048.74 | 2060.93 | 2073.12 | 2085.31 | 2097.5 | 2109.69 | 2121.89 | 2499.96 | - 2512.15 | 2524.34 | 2536.54 | 2548.73 | 2560.92 | 2573.11 | 2585.3 | 2597.49 | - 2609.69 | 2621.89 | 2999.95 | 3012.14 | 3024.34 | 3036.53 | 3048.72 | 3060.91 | - 3073.11 | 3085.3 | 3097.49 | 3109.68 | 3121.88 | 3499.95 | 3512.14 | 3524.34 | - 3536.53 | 3548.72 | 3560.91 | 3573.1 | 3585.29 | 3597.49 | 3609.68 | 3621.87 | - 3999.95 | 4012.14 | 4024.33 | 4036.52 | 4048.72 | 4060.91 | 4073.09 | 4085.3 | - 4097.48 | 4109.68 | 4121.86 | 4499.94 | 4512.14 | 4524.32 | 4536.52 | 4548.7 | - 4560.9 | 4573.1 | 4585.28 | 4597.48 | 4609.67 | 4621.86 | 4999.94 | 5012.13 | - 5024.32 | 5036.51 | 5048.7 | 5060.9 | 5073.09 | 5085.28 | 5097.47 | 5109.66 | - 5121.85 | 5499.93 | 5512.12 | 5524.31 | 5536.51 | 5548.7 | 5560.9 | 5573.09 | - ------------------------------------------------------------------------------------------------------------------------ - - - gap of hw rx time, us: packets 128: - ------------------------------------------------------------------------------------------------------------------------ - 0 | 12.19 | 12.19 | 12.19 | 12.19 | 12.19 | 12.19 | 12.2 | - 12.19 | 12.19 | 12.195 | 378.07 | 12.19 | 12.19 | 12.19 | 12.19 | - 12.195 | 12.195 | 12.19 | 12.195 | 12.19 | 12.19 | 378.08 | 12.19 | - 12.19 | 12.19 | 12.19 | 12.2 | 12.19 | 12.19 | 12.19 | 12.19 | - 12.195 | 378.075 | 12.195 | 12.19 | 12.19 | 12.2 | 12.19 | 12.19 | - 12.19 | 12.19 | 12.19 | 12.19 | 378.08 | 12.19 | 12.19 | 12.195 | - 12.195 | 12.19 | 12.195 | 12.19 | 12.19 | 12.19 | 12.2 | 378.07 | - 12.19 | 12.19 | 12.2 | 12.19 | 12.19 | 12.19 | 12.195 | 12.19 | - 12.195 | 12.195 | 378.07 | 12.19 | 12.2 | 12.19 | 12.19 | 12.19 | - 12.19 | 12.19 | 12.19 | 12.2 | 12.19 | 378.075 | 12.195 | 12.19 | - 12.195 | 12.19 | 12.19 | 12.19 | 12.19 | 12.2 | 12.19 | 12.19 | - 378.08 | 12.19 | 12.19 | 12.19 | 12.195 | 12.19 | 12.19 | 12.2 | - 12.19 | 12.19 | 12.19 | 378.08 | 12.19 | 12.19 | 12.19 | 12.19 | - 12.19 | 12.2 | 12.19 | 12.19 | 12.195 | 12.19 | 378.08 | 12.19 | - 12.19 | 12.19 | 12.19 | 12.2 | 12.19 | 12.19 | 12.19 | 12.19 | - 12.195 | 378.075 | 12.195 | 12.19 | 12.19 | 12.195 | 12.195 | 12.19 | - ------------------------------------------------------------------------------------------------------------------------ - max val(#22) = 378.08us - min val(#1) = 12.19us - peak-to-peak = 365.89us - mean +- RMS = 43.88 +- 102.91 us - - eth1-prio3.txt: - hw rx time, us: packets 128: - relative abs time 739812393765 ns - first packet abs time 739812393765 ns - ------------------------------------------------------------------------------------------------------------------------ - 0 | 12.195 | 24.385 | 36.575 | 48.775 | 60.965 | 73.155 | 85.345 | - 97.535 | 109.725 | 121.925 | 499.995 | 512.185 | 524.38 | 536.575 | 548.765 | - 560.96 | 573.15 | 585.34 | 597.53 | 609.72 | 621.92 | 999.99 | 1012.18 | - 1024.38 | 1036.57 | 1048.76 | 1060.95 | 1073.14 | 1085.34 | 1097.53 | 1109.72 | - 1121.91 | 1499.98 | 1512.18 | 1524.38 | 1536.57 | 1548.76 | 1560.94 | 1573.13 | - 1585.33 | 1597.53 | 1609.71 | 1621.9 | 1999.98 | 2012.17 | 2024.37 | 2036.56 | - 2048.75 | 2060.94 | 2073.13 | 2085.33 | 2097.52 | 2109.71 | 2121.9 | 2499.98 | - 2512.17 | 2524.36 | 2536.55 | 2548.74 | 2560.93 | 2573.13 | 2585.32 | 2597.51 | - 2609.7 | 2621.89 | 2999.97 | 3012.16 | 3024.36 | 3036.55 | 3048.74 | 3060.93 | - 3073.12 | 3085.32 | 3097.51 | 3109.7 | 3121.89 | 3499.97 | 3512.16 | 3524.35 | - 3536.54 | 3548.74 | 3560.93 | 3573.12 | 3585.31 | 3597.5 | 3609.69 | 3621.89 | - 3999.96 | 4012.16 | 4024.34 | 4036.53 | 4048.74 | 4060.93 | 4073.11 | 4085.3 | - 4097.49 | 4109.69 | 4121.89 | 4499.95 | 4512.15 | 4524.34 | 4536.53 | 4548.73 | - 4560.91 | 4573.11 | 4585.3 | 4597.49 | 4609.69 | 4621.88 | 4999.95 | 5012.14 | - 5024.34 | 5036.53 | 5048.72 | 5060.91 | 5073.1 | 5085.3 | 5097.49 | 5109.68 | - 5121.88 | 5499.94 | 5512.15 | 5524.34 | 5536.52 | 5548.72 | 5560.9 | 5573.1 | - ------------------------------------------------------------------------------------------------------------------------ - - - gap of hw rx time, us: packets 128: - ------------------------------------------------------------------------------------------------------------------------ - 0 | 12.195 | 12.19 | 12.19 | 12.2 | 12.19 | 12.19 | 12.19 | - 12.19 | 12.19 | 12.2 | 378.07 | 12.19 | 12.195 | 12.195 | 12.19 | - 12.195 | 12.19 | 12.19 | 12.19 | 12.19 | 12.2 | 378.07 | 12.19 | - 12.2 | 12.19 | 12.19 | 12.19 | 12.19 | 12.195 | 12.19 | 12.195 | - 12.195 | 378.07 | 12.2 | 12.19 | 12.19 | 12.19 | 12.19 | 12.19 | - 12.19 | 12.2 | 12.19 | 12.19 | 378.08 | 12.19 | 12.19 | 12.195 | - 12.19 | 12.19 | 12.19 | 12.2 | 12.19 | 12.19 | 12.19 | 378.08 | - 12.19 | 12.19 | 12.19 | 12.195 | 12.19 | 12.195 | 12.195 | 12.19 | - 12.19 | 12.19 | 378.08 | 12.19 | 12.19 | 12.19 | 12.19 | 12.2 | - 12.19 | 12.19 | 12.19 | 12.195 | 12.19 | 378.08 | 12.19 | 12.19 | - 12.19 | 12.2 | 12.19 | 12.19 | 12.19 | 12.19 | 12.19 | 12.195 | - 378.075 | 12.195 | 12.19 | 12.19 | 12.2 | 12.19 | 12.19 | 12.19 | - 12.19 | 12.19 | 12.2 | 378.07 | 12.19 | 12.19 | 12.2 | 12.19 | - 12.19 | 12.195 | 12.19 | 12.19 | 12.2 | 12.19 | 378.07 | 12.19 | - 12.2 | 12.19 | 12.19 | 12.19 | 12.19 | 12.195 | 12.195 | 12.19 | - 12.195 | 378.07 | 12.2 | 12.19 | 12.19 | 12.19 | 12.19 | 12.19 | - ------------------------------------------------------------------------------------------------------------------------ - max val(#44) = 378.08us - min val(#2) = 12.19us - peak-to-peak = 365.89us - mean +- RMS = 43.88 +- 102.91 us +.. code:: console + + eth0-prio1.txt: + hw rx time, us: packets 128: + relative abs time 759931442120 ns + first packet abs time 759931442120 ns + ------------------------------------------------------------------------------------------------------------------------ + 0 | 12.19 | 24.38 | 36.58 | 48.77 | 60.96 | 73.15 | 85.345 | + 97.535 | 109.73 | 121.925 | 134.115 | 146.305 | 158.495 | 170.685 | 182.875 | + 195.075 | 207.265 | 219.455 | 231.645 | 243.84 | 499.995 | 512.185 | 524.385 | + 536.575 | 548.765 | 560.955 | 573.145 | 585.335 | 597.525 | 609.725 | 621.915 | + 634.11 | 646.3 | 658.49 | 670.68 | 682.88 | 695.07 | 707.26 | 719.45 | + 731.64 | 743.83 | 999.99 | 1012.18 | 1024.38 | 1036.57 | 1048.76 | 1060.95 | + 1073.14 | 1085.33 | 1097.53 | 1109.72 | 1121.91 | 1134.1 | 1146.29 | 1158.48 | + 1170.68 | 1182.87 | 1195.07 | 1207.26 | 1219.44 | 1231.63 | 1243.83 | 1499.99 | + 1512.18 | 1524.37 | 1536.56 | 1548.76 | 1560.94 | 1573.13 | 1585.34 | 1597.53 | + 1612.01 | 1624.2 | 1636.39 | 1648.58 | 1660.78 | 1672.97 | 2035.16 | 2047.36 | + 2059.55 | 2075.97 | 2088.16 | 2100.36 | 2112.55 | 2124.74 | 2136.93 | 2149.13 | + 2161.32 | 2173.51 | 2185.7 | 2197.89 | 2210.08 | 2222.64 | 2234.84 | 2247.03 | + 2499.98 | 2512.17 | 2524.36 | 2547.22 | 2559.42 | 2571.61 | 2587.07 | 2599.26 | + 2611.45 | 2623.64 | 2635.82 | 2648.03 | 2661.2 | 2673.39 | 2685.58 | 2697.77 | + 2709.97 | 2722.16 | 2734.36 | 2746.55 | 2999.97 | 3012.16 | 3024.36 | 3036.55 | + 3048.74 | 3060.93 | 3073.12 | 3085.32 | 3097.51 | 3109.7 | 3121.89 | 3134.09 | + ------------------------------------------------------------------------------------------------------------------------ + + + gap of hw rx time, us: packets 128: + ------------------------------------------------------------------------------------------------------------------------ + 0 | 12.19 | 12.19 | 12.2 | 12.19 | 12.19 | 12.19 | 12.195 | + 12.19 | 12.195 | 12.195 | 12.19 | 12.19 | 12.19 | 12.19 | 12.19 | + 12.2 | 12.19 | 12.19 | 12.19 | 12.195 | 256.155 | 12.19 | 12.2 | + 12.19 | 12.19 | 12.19 | 12.19 | 12.19 | 12.19 | 12.2 | 12.19 | + 12.195 | 12.19 | 12.19 | 12.19 | 12.2 | 12.19 | 12.19 | 12.19 | + 12.19 | 12.19 | 256.16 | 12.195 | 12.19 | 12.195 | 12.19 | 12.19 | + 12.19 | 12.19 | 12.2 | 12.19 | 12.19 | 12.19 | 12.19 | 12.195 | + 12.195 | 12.19 | 12.195 | 12.19 | 12.19 | 12.19 | 12.19 | 256.165 | + 12.19 | 12.19 | 12.19 | 12.195 | 12.19 | 12.19 | 12.2 | 12.19 | + 14.485 | 12.19 | 12.19 | 12.19 | 12.2 | 12.19 | 362.195 | 12.19 | + 12.19 | 16.43 | 12.19 | 12.19 | 12.195 | 12.19 | 12.19 | 12.2 | + 12.19 | 12.19 | 12.19 | 12.19 | 12.19 | 12.56 | 12.2 | 12.19 | + 252.95 | 12.19 | 12.19 | 22.86 | 12.2 | 12.19 | 15.455 | 12.19 | + 12.19 | 12.19 | 12.19 | 12.2 | 13.175 | 12.19 | 12.19 | 12.19 | + 12.195 | 12.195 | 12.195 | 12.19 | 253.425 | 12.19 | 12.195 | 12.19 | + 12.2 | 12.19 | 12.19 | 12.19 | 12.19 | 12.19 | 12.19 | 12.2 | + ------------------------------------------------------------------------------------------------------------------------ + max val(#78) = 362.19us + min val(#1) = 12.19us + peak-to-peak = 350.00us + mean +- RMS = 24.68 +- 55.95 us + + eth1-prio1.txt: + hw rx time, us: packets 128: + relative abs time 759931442120 ns + first packet abs time 759931442120 ns + ------------------------------------------------------------------------------------------------------------------------ + 0 | 12.195 | 24.385 | 36.575 | 48.765 | 60.955 | 73.155 | 85.345 | + 97.535 | 109.725 | 121.915 | 134.11 | 146.3 | 158.495 | 170.69 | 182.88 | + 195.07 | 207.26 | 219.45 | 231.65 | 243.84 | 499.995 | 512.185 | 524.375 | + 536.57 | 548.76 | 560.955 | 573.15 | 585.34 | 597.53 | 609.72 | 621.91 | + 634.1 | 646.3 | 658.49 | 670.68 | 682.87 | 695.065 | 707.255 | 719.445 | + 731.645 | 743.835 | 999.99 | 1012.18 | 1024.37 | 1036.56 | 1048.76 | 1060.95 | + 1073.14 | 1085.34 | 1097.53 | 1109.71 | 1121.9 | 1134.11 | 1146.3 | 1158.48 | + 1170.67 | 1182.87 | 1195.06 | 1207.25 | 1219.44 | 1231.63 | 1243.83 | 1499.98 | + 1512.17 | 1524.37 | 1536.56 | 1548.76 | 1560.94 | 1573.13 | 1585.33 | 1597.52 | + 1609.71 | 1621.9 | 1634.1 | 1646.29 | 1658.48 | 1670.67 | 1682.86 | 1695.05 | + 1707.25 | 1719.44 | 1731.63 | 1743.82 | 1999.98 | 2012.17 | 2024.36 | 2036.56 | + 2048.75 | 2060.94 | 2073.13 | 2085.32 | 2097.51 | 2109.71 | 2121.9 | 2134.09 | + 2146.28 | 2158.47 | 2170.66 | 2182.86 | 2195.05 | 2207.24 | 2219.43 | 2231.62 | + 2243.82 | 2499.97 | 2512.16 | 2524.36 | 2536.55 | 2548.74 | 2560.93 | 2573.12 | + 2585.32 | 2597.51 | 2609.7 | 2621.89 | 2634.09 | 2646.28 | 2658.47 | 2670.66 | + 2682.86 | 2695.05 | 2707.24 | 2719.43 | 2731.62 | 2743.81 | 2999.97 | 3012.16 | + ------------------------------------------------------------------------------------------------------------------------ + + + gap of hw rx time, us: packets 128: + ------------------------------------------------------------------------------------------------------------------------ + 0 | 12.195 | 12.19 | 12.19 | 12.19 | 12.19 | 12.2 | 12.19 | + 12.19 | 12.19 | 12.19 | 12.195 | 12.19 | 12.195 | 12.195 | 12.19 | + 12.19 | 12.19 | 12.19 | 12.2 | 12.19 | 256.155 | 12.19 | 12.19 | + 12.195 | 12.19 | 12.195 | 12.195 | 12.19 | 12.19 | 12.19 | 12.19 | + 12.19 | 12.2 | 12.19 | 12.19 | 12.19 | 12.195 | 12.19 | 12.19 | + 12.2 | 12.19 | 256.155 | 12.19 | 12.19 | 12.19 | 12.2 | 12.19 | + 12.19 | 12.195 | 12.19 | 12.19 | 12.19 | 12.2 | 12.19 | 12.19 | + 12.19 | 12.19 | 12.19 | 12.195 | 12.195 | 12.19 | 12.195 | 256.155 | + 12.19 | 12.19 | 12.19 | 12.2 | 12.19 | 12.19 | 12.19 | 12.19 | + 12.195 | 12.195 | 12.19 | 12.195 | 12.19 | 12.19 | 12.19 | 12.19 | + 12.2 | 12.19 | 12.19 | 12.19 | 256.16 | 12.19 | 12.19 | 12.2 | + 12.19 | 12.19 | 12.19 | 12.19 | 12.19 | 12.2 | 12.19 | 12.19 | + 12.19 | 12.195 | 12.19 | 12.19 | 12.2 | 12.19 | 12.19 | 12.19 | + 12.19 | 256.155 | 12.195 | 12.195 | 12.19 | 12.195 | 12.19 | 12.19 | + 12.19 | 12.19 | 12.2 | 12.19 | 12.19 | 12.19 | 12.19 | 12.19 | + 12.2 | 12.19 | 12.19 | 12.195 | 12.19 | 12.19 | 256.155 | 12.2 | + ------------------------------------------------------------------------------------------------------------------------ + max val(#84) = 256.16us + min val(#2) = 12.19us + peak-to-peak = 243.97us + mean +- RMS = 23.72 +- 51.76 us + + eth0-prio2.txt: + hw rx time, us: packets 128: + relative abs time 749867445650 ns + first packet abs time 749867445650 ns + ------------------------------------------------------------------------------------------------------------------------ + 0 | 507.635 | 523.095 | 1011.59 | 1023.77 | 1035.97 | 1048.16 | 1060.35 | + 1072.54 | 1084.74 | 1096.93 | 1472.38 | 1484.59 | 1496.78 | 1508.96 | 1521.15 | + 1533.35 | 1545.54 | 1557.72 | 1569.92 | 1582.12 | 1594.31 | 1972.38 | 1984.58 | + 1996.77 | 2008.96 | 2021.15 | 2033.34 | 2045.53 | 2057.73 | 2069.92 | 2082.11 | + 2094.3 | 2472.37 | 2484.57 | 2496.76 | 2508.95 | 2521.14 | 2533.32 | 2545.53 | + 2557.72 | 2569.91 | 2582.09 | 2594.28 | 2972.36 | 2984.55 | 2996.75 | 3008.94 | + 3021.13 | 3033.32 | 3045.52 | 3057.71 | 3069.9 | 3082.09 | 3094.28 | 3472.36 | + 3484.55 | 3496.74 | 3508.93 | 3521.12 | 3533.32 | 3545.51 | 3557.7 | 3569.89 | + 3582.09 | 3594.28 | 3972.36 | 3984.55 | 3996.74 | 4008.93 | 4021.12 | 4033.32 | + 4045.51 | 4057.7 | 4069.89 | 4082.08 | 4094.27 | 4472.35 | 4484.54 | 4496.73 | + 4508.93 | 4521.12 | 4533.31 | 4545.5 | 4557.69 | 4569.88 | 4582.07 | 4594.27 | + 4972.34 | 4984.53 | 4996.73 | 5008.92 | 5021.11 | 5033.31 | 5045.49 | 5057.69 | + 5069.88 | 5082.07 | 5094.27 | 5472.34 | 5484.53 | 5496.73 | 5508.91 | 5521.1 | + 5533.3 | 5545.49 | 5557.68 | 5569.88 | 5582.07 | 5594.26 | 5972.34 | 5984.53 | + 5996.72 | 6008.91 | 6021.1 | 6033.29 | 6045.48 | 6057.68 | 6069.87 | 6082.06 | + 6094.26 | 6472.33 | 6484.52 | 6496.72 | 6508.9 | 6521.1 | 6533.28 | 6545.48 | + ------------------------------------------------------------------------------------------------------------------------ + + + gap of hw rx time, us: packets 128: + ------------------------------------------------------------------------------------------------------------------------ + 0 | 507.635 | 15.46 | 488.49 | 12.19 | 12.195 | 12.19 | 12.19 | + 12.19 | 12.2 | 12.19 | 375.455 | 12.2 | 12.19 | 12.19 | 12.19 | + 12.19 | 12.19 | 12.19 | 12.2 | 12.19 | 12.19 | 378.075 | 12.195 | + 12.195 | 12.19 | 12.19 | 12.19 | 12.19 | 12.2 | 12.19 | 12.19 | + 12.19 | 378.07 | 12.195 | 12.19 | 12.19 | 12.19 | 12.19 | 12.2 | + 12.19 | 12.19 | 12.19 | 12.19 | 378.08 | 12.19 | 12.195 | 12.19 | + 12.19 | 12.19 | 12.2 | 12.19 | 12.19 | 12.19 | 12.19 | 378.08 | + 12.19 | 12.19 | 12.19 | 12.195 | 12.195 | 12.19 | 12.195 | 12.19 | + 12.19 | 12.19 | 378.08 | 12.19 | 12.19 | 12.19 | 12.2 | 12.19 | + 12.19 | 12.19 | 12.195 | 12.19 | 12.19 | 378.08 | 12.19 | 12.19 | + 12.2 | 12.19 | 12.19 | 12.19 | 12.19 | 12.19 | 12.19 | 12.2 | + 378.07 | 12.195 | 12.195 | 12.19 | 12.195 | 12.19 | 12.19 | 12.19 | + 12.19 | 12.2 | 12.19 | 378.07 | 12.2 | 12.19 | 12.19 | 12.19 | + 12.195 | 12.19 | 12.19 | 12.2 | 12.19 | 12.19 | 378.08 | 12.19 | + 12.19 | 12.19 | 12.19 | 12.19 | 12.19 | 12.2 | 12.19 | 12.19 | + 12.195 | 378.075 | 12.195 | 12.19 | 12.19 | 12.19 | 12.19 | 12.2 | + ------------------------------------------------------------------------------------------------------------------------ + max val(#1) = 507.63us + min val(#4) = 12.19us + peak-to-peak = 495.44us + mean +- RMS = 51.54 +- 117.26 us + + eth1-prio2.txt: + hw rx time, us: packets 128: + relative abs time 749867447580 ns + first packet abs time 749867447580 ns + ------------------------------------------------------------------------------------------------------------------------ + 0 | 48.73 | 60.93 | 73.12 | 85.31 | 470.47 | 482.66 | 494.85 | + 507.04 | 519.23 | 531.42 | 543.615 | 555.81 | 568 | 580.195 | 592.385 | + 970.465 | 982.655 | 994.845 | 1007.03 | 1019.23 | 1031.41 | 1043.62 | 1055.81 | + 1067.99 | 1080.18 | 1092.38 | 1470.45 | 1482.64 | 1494.84 | 1507.03 | 1519.22 | + 1531.42 | 1543.61 | 1555.8 | 1567.99 | 1580.18 | 1592.37 | 1970.45 | 1982.64 | + 1994.83 | 2007.03 | 2019.22 | 2031.41 | 2043.61 | 2055.8 | 2067.99 | 2080.18 | + 2092.36 | 2470.45 | 2482.64 | 2494.82 | 2507.03 | 2519.22 | 2531.41 | 2543.59 | + 2555.78 | 2567.98 | 2580.17 | 2592.36 | 2970.44 | 2982.63 | 2994.83 | 3007.02 | + 3019.21 | 3031.4 | 3043.59 | 3055.78 | 3067.97 | 3080.17 | 3092.36 | 3470.43 | + 3482.63 | 3494.82 | 3507.01 | 3519.2 | 3531.39 | 3543.59 | 3555.78 | 3567.97 | + 3580.16 | 3592.36 | 3970.43 | 3982.62 | 3994.82 | 4007.01 | 4019.2 | 4031.39 | + 4043.58 | 4055.78 | 4067.97 | 4080.16 | 4092.35 | 4470.43 | 4482.62 | 4494.81 | + 4507 | 4519.19 | 4531.38 | 4543.58 | 4555.77 | 4567.96 | 4580.15 | 4592.35 | + 4970.42 | 4982.61 | 4994.81 | 5006.99 | 5019.19 | 5031.38 | 5043.57 | 5055.77 | + 5067.95 | 5080.15 | 5092.34 | 5470.41 | 5482.6 | 5494.8 | 5506.99 | 5519.18 | + 5531.38 | 5543.57 | 5555.76 | 5567.95 | 5580.14 | 5592.33 | 5970.41 | 5982.6 | + ------------------------------------------------------------------------------------------------------------------------ + + + gap of hw rx time, us: packets 128: + ------------------------------------------------------------------------------------------------------------------------ + 0 | 48.73 | 12.2 | 12.19 | 12.19 | 385.16 | 12.19 | 12.19 | + 12.19 | 12.19 | 12.19 | 12.195 | 12.195 | 12.19 | 12.195 | 12.19 | + 378.08 | 12.19 | 12.19 | 12.19 | 12.19 | 12.19 | 12.2 | 12.19 | + 12.19 | 12.19 | 12.19 | 378.08 | 12.19 | 12.195 | 12.19 | 12.19 | + 12.2 | 12.19 | 12.19 | 12.19 | 12.19 | 12.19 | 378.08 | 12.19 | + 12.19 | 12.195 | 12.195 | 12.19 | 12.195 | 12.19 | 12.19 | 12.19 | + 12.19 | 378.08 | 12.19 | 12.19 | 12.2 | 12.19 | 12.19 | 12.19 | + 12.19 | 12.195 | 12.19 | 12.195 | 378.075 | 12.19 | 12.2 | 12.19 | + 12.19 | 12.19 | 12.19 | 12.19 | 12.19 | 12.2 | 12.19 | 378.07 | + 12.2 | 12.19 | 12.19 | 12.195 | 12.19 | 12.19 | 12.19 | 12.2 | + 12.19 | 12.19 | 378.07 | 12.2 | 12.19 | 12.19 | 12.19 | 12.195 | + 12.19 | 12.195 | 12.195 | 12.19 | 12.19 | 378.08 | 12.19 | 12.19 | + 12.19 | 12.19 | 12.19 | 12.2 | 12.19 | 12.19 | 12.19 | 12.195 | + 378.075 | 12.195 | 12.19 | 12.19 | 12.19 | 12.19 | 12.2 | 12.19 | + 12.19 | 12.19 | 12.19 | 378.08 | 12.19 | 12.195 | 12.19 | 12.19 | + 12.2 | 12.19 | 12.19 | 12.19 | 12.19 | 12.19 | 378.08 | 12.19 | + ------------------------------------------------------------------------------------------------------------------------ + max val(#5) = 385.16us + min val(#3) = 12.19us + peak-to-peak = 372.97us + mean +- RMS = 47.11 +- 107.15 us + + eth0-prio3.txt: + hw rx time, us: packets 128: + relative abs time 739812393775 ns + first packet abs time 739812393775 ns + ------------------------------------------------------------------------------------------------------------------------ + 0 | 12.19 | 24.38 | 36.57 | 48.76 | 60.95 | 73.14 | 85.34 | + 97.53 | 109.72 | 121.915 | 499.985 | 512.175 | 524.365 | 536.555 | 548.745 | + 560.94 | 573.135 | 585.325 | 597.52 | 609.71 | 621.9 | 999.98 | 1012.17 | + 1024.36 | 1036.55 | 1048.74 | 1060.94 | 1073.13 | 1085.32 | 1097.51 | 1109.7 | + 1121.89 | 1499.97 | 1512.16 | 1524.36 | 1536.55 | 1548.74 | 1560.93 | 1573.12 | + 1585.32 | 1597.51 | 1609.69 | 1621.88 | 1999.96 | 2012.15 | 2024.35 | 2036.54 | + 2048.74 | 2060.93 | 2073.12 | 2085.31 | 2097.5 | 2109.69 | 2121.89 | 2499.96 | + 2512.15 | 2524.34 | 2536.54 | 2548.73 | 2560.92 | 2573.11 | 2585.3 | 2597.49 | + 2609.69 | 2621.89 | 2999.95 | 3012.14 | 3024.34 | 3036.53 | 3048.72 | 3060.91 | + 3073.11 | 3085.3 | 3097.49 | 3109.68 | 3121.88 | 3499.95 | 3512.14 | 3524.34 | + 3536.53 | 3548.72 | 3560.91 | 3573.1 | 3585.29 | 3597.49 | 3609.68 | 3621.87 | + 3999.95 | 4012.14 | 4024.33 | 4036.52 | 4048.72 | 4060.91 | 4073.09 | 4085.3 | + 4097.48 | 4109.68 | 4121.86 | 4499.94 | 4512.14 | 4524.32 | 4536.52 | 4548.7 | + 4560.9 | 4573.1 | 4585.28 | 4597.48 | 4609.67 | 4621.86 | 4999.94 | 5012.13 | + 5024.32 | 5036.51 | 5048.7 | 5060.9 | 5073.09 | 5085.28 | 5097.47 | 5109.66 | + 5121.85 | 5499.93 | 5512.12 | 5524.31 | 5536.51 | 5548.7 | 5560.9 | 5573.09 | + ------------------------------------------------------------------------------------------------------------------------ + + + gap of hw rx time, us: packets 128: + ------------------------------------------------------------------------------------------------------------------------ + 0 | 12.19 | 12.19 | 12.19 | 12.19 | 12.19 | 12.19 | 12.2 | + 12.19 | 12.19 | 12.195 | 378.07 | 12.19 | 12.19 | 12.19 | 12.19 | + 12.195 | 12.195 | 12.19 | 12.195 | 12.19 | 12.19 | 378.08 | 12.19 | + 12.19 | 12.19 | 12.19 | 12.2 | 12.19 | 12.19 | 12.19 | 12.19 | + 12.195 | 378.075 | 12.195 | 12.19 | 12.19 | 12.2 | 12.19 | 12.19 | + 12.19 | 12.19 | 12.19 | 12.19 | 378.08 | 12.19 | 12.19 | 12.195 | + 12.195 | 12.19 | 12.195 | 12.19 | 12.19 | 12.19 | 12.2 | 378.07 | + 12.19 | 12.19 | 12.2 | 12.19 | 12.19 | 12.19 | 12.195 | 12.19 | + 12.195 | 12.195 | 378.07 | 12.19 | 12.2 | 12.19 | 12.19 | 12.19 | + 12.19 | 12.19 | 12.19 | 12.2 | 12.19 | 378.075 | 12.195 | 12.19 | + 12.195 | 12.19 | 12.19 | 12.19 | 12.19 | 12.2 | 12.19 | 12.19 | + 378.08 | 12.19 | 12.19 | 12.19 | 12.195 | 12.19 | 12.19 | 12.2 | + 12.19 | 12.19 | 12.19 | 378.08 | 12.19 | 12.19 | 12.19 | 12.19 | + 12.19 | 12.2 | 12.19 | 12.19 | 12.195 | 12.19 | 378.08 | 12.19 | + 12.19 | 12.19 | 12.19 | 12.2 | 12.19 | 12.19 | 12.19 | 12.19 | + 12.195 | 378.075 | 12.195 | 12.19 | 12.19 | 12.195 | 12.195 | 12.19 | + ------------------------------------------------------------------------------------------------------------------------ + max val(#22) = 378.08us + min val(#1) = 12.19us + peak-to-peak = 365.89us + mean +- RMS = 43.88 +- 102.91 us + + eth1-prio3.txt: + hw rx time, us: packets 128: + relative abs time 739812393765 ns + first packet abs time 739812393765 ns + ------------------------------------------------------------------------------------------------------------------------ + 0 | 12.195 | 24.385 | 36.575 | 48.775 | 60.965 | 73.155 | 85.345 | + 97.535 | 109.725 | 121.925 | 499.995 | 512.185 | 524.38 | 536.575 | 548.765 | + 560.96 | 573.15 | 585.34 | 597.53 | 609.72 | 621.92 | 999.99 | 1012.18 | + 1024.38 | 1036.57 | 1048.76 | 1060.95 | 1073.14 | 1085.34 | 1097.53 | 1109.72 | + 1121.91 | 1499.98 | 1512.18 | 1524.38 | 1536.57 | 1548.76 | 1560.94 | 1573.13 | + 1585.33 | 1597.53 | 1609.71 | 1621.9 | 1999.98 | 2012.17 | 2024.37 | 2036.56 | + 2048.75 | 2060.94 | 2073.13 | 2085.33 | 2097.52 | 2109.71 | 2121.9 | 2499.98 | + 2512.17 | 2524.36 | 2536.55 | 2548.74 | 2560.93 | 2573.13 | 2585.32 | 2597.51 | + 2609.7 | 2621.89 | 2999.97 | 3012.16 | 3024.36 | 3036.55 | 3048.74 | 3060.93 | + 3073.12 | 3085.32 | 3097.51 | 3109.7 | 3121.89 | 3499.97 | 3512.16 | 3524.35 | + 3536.54 | 3548.74 | 3560.93 | 3573.12 | 3585.31 | 3597.5 | 3609.69 | 3621.89 | + 3999.96 | 4012.16 | 4024.34 | 4036.53 | 4048.74 | 4060.93 | 4073.11 | 4085.3 | + 4097.49 | 4109.69 | 4121.89 | 4499.95 | 4512.15 | 4524.34 | 4536.53 | 4548.73 | + 4560.91 | 4573.11 | 4585.3 | 4597.49 | 4609.69 | 4621.88 | 4999.95 | 5012.14 | + 5024.34 | 5036.53 | 5048.72 | 5060.91 | 5073.1 | 5085.3 | 5097.49 | 5109.68 | + 5121.88 | 5499.94 | 5512.15 | 5524.34 | 5536.52 | 5548.72 | 5560.9 | 5573.1 | + ------------------------------------------------------------------------------------------------------------------------ + + + gap of hw rx time, us: packets 128: + ------------------------------------------------------------------------------------------------------------------------ + 0 | 12.195 | 12.19 | 12.19 | 12.2 | 12.19 | 12.19 | 12.19 | + 12.19 | 12.19 | 12.2 | 378.07 | 12.19 | 12.195 | 12.195 | 12.19 | + 12.195 | 12.19 | 12.19 | 12.19 | 12.19 | 12.2 | 378.07 | 12.19 | + 12.2 | 12.19 | 12.19 | 12.19 | 12.19 | 12.195 | 12.19 | 12.195 | + 12.195 | 378.07 | 12.2 | 12.19 | 12.19 | 12.19 | 12.19 | 12.19 | + 12.19 | 12.2 | 12.19 | 12.19 | 378.08 | 12.19 | 12.19 | 12.195 | + 12.19 | 12.19 | 12.19 | 12.2 | 12.19 | 12.19 | 12.19 | 378.08 | + 12.19 | 12.19 | 12.19 | 12.195 | 12.19 | 12.195 | 12.195 | 12.19 | + 12.19 | 12.19 | 378.08 | 12.19 | 12.19 | 12.19 | 12.19 | 12.2 | + 12.19 | 12.19 | 12.19 | 12.195 | 12.19 | 378.08 | 12.19 | 12.19 | + 12.19 | 12.2 | 12.19 | 12.19 | 12.19 | 12.19 | 12.19 | 12.195 | + 378.075 | 12.195 | 12.19 | 12.19 | 12.2 | 12.19 | 12.19 | 12.19 | + 12.19 | 12.19 | 12.2 | 378.07 | 12.19 | 12.19 | 12.2 | 12.19 | + 12.19 | 12.195 | 12.19 | 12.19 | 12.2 | 12.19 | 378.07 | 12.19 | + 12.2 | 12.19 | 12.19 | 12.19 | 12.19 | 12.195 | 12.195 | 12.19 | + 12.195 | 378.07 | 12.2 | 12.19 | 12.19 | 12.19 | 12.19 | 12.19 | + ------------------------------------------------------------------------------------------------------------------------ + max val(#44) = 378.08us + min val(#2) = 12.19us + peak-to-peak = 365.89us + mean +- RMS = 43.88 +- 102.91 us EST scheduled on ports 1 and 2 of J7VCL's CPSW5G and received by AM625-SK ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -1055,383 +1055,383 @@ Connect eth1 of J7VCL to eth0 of AM625-SK and eth2 of J7VCL to eth1 of AM625-SK. 1. Run the following on J7VCL: -:: - - #!/bin/sh - - # J7VCL CPSW5G Port-1 and Port-2 in QSGMII mode - ifconfig eth1 down - ifconfig eth2 down - ifconfig eth3 down - ifconfig eth4 down - ethtool -L eth1 tx 3 - ethtool -L eth2 tx 3 - ethtool --set-priv-flags eth1 p0-rx-ptype-rrobin off - ethtool --set-priv-flags eth2 p0-rx-ptype-rrobin off - ifconfig eth1 up - ifconfig eth2 up - sleep 30 - - #sync system time to CPSW CPTS - phc2sys -s CLOCK_REALTIME -c eth1 -m -O 0 > /dev/null & - - #calc base_time as now + 2min, give it time to sync - base=$(((`date +%s` + 2 * 60)*1000000000)) - - tc qdisc replace dev eth1 parent root handle 100 taprio \ - num_tc 3 \ - map 0 0 1 2 0 0 0 0 0 0 0 0 0 0 0 0 \ - queues 1@0 1@1 1@2 \ - base-time $base \ - sched-entry S 4 125000 \ - sched-entry S 2 125000 \ - sched-entry S 1 250000 \ - flags 2 - - tc qdisc replace dev eth2 parent root handle 100 taprio \ - num_tc 3 \ - map 0 0 1 2 0 0 0 0 0 0 0 0 0 0 0 0 \ - queues 1@0 1@1 1@2 \ - base-time $base \ - sched-entry S 4 125000 \ - sched-entry S 2 125000 \ - sched-entry S 1 250000 \ - flags 2 - - tc qdisc add dev eth1 clsact - tc qdisc add dev eth2 clsact - tc filter add dev eth1 egress protocol ip prio 1 u32 match ip dport 5001 0xffff action skbedit priority 3 - tc filter add dev eth2 egress protocol ip prio 1 u32 match ip dport 5001 0xffff action skbedit priority 3 - tc filter add dev eth1 egress protocol ip prio 1 u32 match ip dport 5002 0xffff action skbedit priority 2 - tc filter add dev eth2 egress protocol ip prio 1 u32 match ip dport 5002 0xffff action skbedit priority 2 - tc filter add dev eth1 egress protocol ip prio 1 u32 match ip dport 5003 0xffff action skbedit priority 1 - tc filter add dev eth2 egress protocol ip prio 1 u32 match ip dport 5003 0xffff action skbedit priority 1 - tc qdisc show dev eth1 - tc qdisc show dev eth2 - - # Wait for 2 minutes for sync to complete - sleep 120 - - # NOTE: Replace f4:84:4c:fc:11:51 and f4:84:4c:fc:11:52 with the MAC addresses of CPSW3G port-1 - # and CPSW3G port-2 of AM625-SK - ./plget -i eth1 -m pkt-gen -p 3 -t ptpl2 -n 128 -a f4:84:4c:fc:11:51 -l 1500 & ./plget -i eth2 -m pkt-gen -p 3 -t ptpl2 -n 128 -a f4:84:4c:fc:11:52 -l 1500 - sleep 10 - ./plget -i eth1 -m pkt-gen -p 2 -t ptpl2 -n 128 -a f4:84:4c:fc:11:51 -l 1500 & ./plget -i eth2 -m pkt-gen -p 2 -t ptpl2 -n 128 -a f4:84:4c:fc:11:52 -l 1500 - sleep 10 - ./plget -i eth1 -m pkt-gen -p 1 -t ptpl2 -n 128 -a f4:84:4c:fc:11:51 -l 1500 & ./plget -i eth2 -m pkt-gen -p 1 -t ptpl2 -n 128 -a f4:84:4c:fc:11:52 -l 1500 +.. code:: console + + #!/bin/sh + + # J7VCL CPSW5G Port-1 and Port-2 in QSGMII mode + ifconfig eth1 down + ifconfig eth2 down + ifconfig eth3 down + ifconfig eth4 down + ethtool -L eth1 tx 3 + ethtool -L eth2 tx 3 + ethtool --set-priv-flags eth1 p0-rx-ptype-rrobin off + ethtool --set-priv-flags eth2 p0-rx-ptype-rrobin off + ifconfig eth1 up + ifconfig eth2 up + sleep 30 + + #sync system time to CPSW CPTS + phc2sys -s CLOCK_REALTIME -c eth1 -m -O 0 > /dev/null & + + #calc base_time as now + 2min, give it time to sync + base=$(((`date +%s` + 2 * 60)*1000000000)) + + tc qdisc replace dev eth1 parent root handle 100 taprio \ + num_tc 3 \ + map 0 0 1 2 0 0 0 0 0 0 0 0 0 0 0 0 \ + queues 1@0 1@1 1@2 \ + base-time $base \ + sched-entry S 4 125000 \ + sched-entry S 2 125000 \ + sched-entry S 1 250000 \ + flags 2 + + tc qdisc replace dev eth2 parent root handle 100 taprio \ + num_tc 3 \ + map 0 0 1 2 0 0 0 0 0 0 0 0 0 0 0 0 \ + queues 1@0 1@1 1@2 \ + base-time $base \ + sched-entry S 4 125000 \ + sched-entry S 2 125000 \ + sched-entry S 1 250000 \ + flags 2 + + tc qdisc add dev eth1 clsact + tc qdisc add dev eth2 clsact + tc filter add dev eth1 egress protocol ip prio 1 u32 match ip dport 5001 0xffff action skbedit priority 3 + tc filter add dev eth2 egress protocol ip prio 1 u32 match ip dport 5001 0xffff action skbedit priority 3 + tc filter add dev eth1 egress protocol ip prio 1 u32 match ip dport 5002 0xffff action skbedit priority 2 + tc filter add dev eth2 egress protocol ip prio 1 u32 match ip dport 5002 0xffff action skbedit priority 2 + tc filter add dev eth1 egress protocol ip prio 1 u32 match ip dport 5003 0xffff action skbedit priority 1 + tc filter add dev eth2 egress protocol ip prio 1 u32 match ip dport 5003 0xffff action skbedit priority 1 + tc qdisc show dev eth1 + tc qdisc show dev eth2 + + # Wait for 2 minutes for sync to complete + sleep 120 + + # NOTE: Replace f4:84:4c:fc:11:51 and f4:84:4c:fc:11:52 with the MAC addresses of CPSW3G port-1 + # and CPSW3G port-2 of AM625-SK + ./plget -i eth1 -m pkt-gen -p 3 -t ptpl2 -n 128 -a f4:84:4c:fc:11:51 -l 1500 & ./plget -i eth2 -m pkt-gen -p 3 -t ptpl2 -n 128 -a f4:84:4c:fc:11:52 -l 1500 + sleep 10 + ./plget -i eth1 -m pkt-gen -p 2 -t ptpl2 -n 128 -a f4:84:4c:fc:11:51 -l 1500 & ./plget -i eth2 -m pkt-gen -p 2 -t ptpl2 -n 128 -a f4:84:4c:fc:11:52 -l 1500 + sleep 10 + ./plget -i eth1 -m pkt-gen -p 1 -t ptpl2 -n 128 -a f4:84:4c:fc:11:51 -l 1500 & ./plget -i eth2 -m pkt-gen -p 1 -t ptpl2 -n 128 -a f4:84:4c:fc:11:52 -l 1500 2. Once eth1 and eth2 are up in J7VCL, run the following on AM625-SK: -:: +.. code:: sh - #!/bin/sh - ./plget -m rx-lat -f ipgap -n 128 -i eth0 -t ptpl2 -f hwts > eth1-prio3.txt& ./plget -m rx-lat -f ipgap -n 128 -i eth1 -t ptpl2 -f hwts > eth2-prio3.txt - sleep 5 - ./plget -m rx-lat -f ipgap -n 128 -i eth0 -t ptpl2 -f hwts > eth1-prio2.txt& ./plget -m rx-lat -f ipgap -n 128 -i eth1 -t ptpl2 -f hwts > eth2-prio2.txt - sleep 5 - ./plget -m rx-lat -f ipgap -n 128 -i eth0 -t ptpl2 -f hwts > eth1-prio1.txt& ./plget -m rx-lat -f ipgap -n 128 -i eth1 -t ptpl2 -f hwts > eth2-prio1.txt + #!/bin/sh + ./plget -m rx-lat -f ipgap -n 128 -i eth0 -t ptpl2 -f hwts > eth1-prio3.txt& ./plget -m rx-lat -f ipgap -n 128 -i eth1 -t ptpl2 -f hwts > eth2-prio3.txt + sleep 5 + ./plget -m rx-lat -f ipgap -n 128 -i eth0 -t ptpl2 -f hwts > eth1-prio2.txt& ./plget -m rx-lat -f ipgap -n 128 -i eth1 -t ptpl2 -f hwts > eth2-prio2.txt + sleep 5 + ./plget -m rx-lat -f ipgap -n 128 -i eth0 -t ptpl2 -f hwts > eth1-prio1.txt& ./plget -m rx-lat -f ipgap -n 128 -i eth1 -t ptpl2 -f hwts > eth2-prio1.txt .. note:: - The results are stored on AM625-SK in the files named eth1-prio1.txt, - eth1-prio2.txt, eth1-prio3.txt for eth1 of J7VCL and in eth2-prio1.txt, - eth2-prio2.txt, eth2-prio3.txt for eth2 of J7VCL. + The results are stored on AM625-SK in the files named eth1-prio1.txt, + eth1-prio2.txt, eth1-prio3.txt for eth1 of J7VCL and in eth2-prio1.txt, + eth2-prio2.txt, eth2-prio3.txt for eth2 of J7VCL. - At any time, both eth1 and eth2 are transmitting traffic of the same priority - through their respective interfaces. + At any time, both eth1 and eth2 are transmitting traffic of the same priority + through their respective interfaces. **Results:** -:: - - eth1-prio1.txt: - - hw rx time, us: packets 128: - relative abs time 321980646888 ns - first packet abs time 321980646888 ns - ------------------------------------------------------------------------------------------------------------------------ - 0 | 42.076 | 54.266 | 66.45 | 78.64 | 90.832 | 103.022 | 115.212 | - 127.404 | 139.594 | 151.778 | 163.968 | 176.158 | 188.35 | 439.468 | 451.66 | - 463.842 | 476.034 | 488.224 | 500.414 | 512.606 | 524.796 | 536.98 | 549.17 | - 561.36 | 573.552 | 585.742 | 597.934 | 610.124 | 622.306 | 634.498 | 646.688 | - 658.88 | 671.07 | 683.26 | 939.484 | 951.674 | 963.866 | 976.056 | 988.248 | - 1000.44 | 1012.62 | 1024.81 | 1037 | 1049.19 | 1061.38 | 1073.57 | 1085.76 | - 1097.95 | 1110.14 | 1122.33 | 1134.52 | 1146.71 | 1158.9 | 1171.09 | 1183.28 | - 1439.48 | 1451.67 | 1463.86 | 1476.05 | 1488.24 | 1500.43 | 1512.62 | 1524.81 | - 1537 | 1549.19 | 1561.37 | 1573.57 | 1585.76 | 1597.95 | 1610.14 | 1622.33 | - 1634.51 | 1646.7 | 1658.89 | 1671.08 | 1683.27 | 1939.5 | 1951.68 | 1963.87 | - 1976.06 | 1988.25 | 2000.44 | 2012.63 | 2024.83 | 2037.01 | 2049.2 | 2061.39 | - 2073.58 | 2085.77 | 2097.96 | 2110.14 | 2122.34 | 2134.53 | 2146.72 | 2158.91 | - 2171.1 | 2183.28 | 2439.5 | 2451.69 | 2463.88 | 2476.07 | 2488.26 | 2500.44 | - 2512.63 | 2524.82 | 2537.02 | 2549.21 | 2561.4 | 2573.59 | 2585.77 | 2597.96 | - 2610.15 | 2622.34 | 2634.53 | 2646.72 | 2658.91 | 2671.1 | 2683.29 | 2939.5 | - 2951.69 | 2963.88 | 2976.06 | 2988.25 | 3000.44 | 3012.63 | 3024.82 | 3037.01 | - ------------------------------------------------------------------------------------------------------------------------ - - - gap of hw rx time, us: packets 128: - ------------------------------------------------------------------------------------------------------------------------ - 0 | 42.076 | 12.19 | 12.184 | 12.19 | 12.192 | 12.19 | 12.19 | - 12.192 | 12.19 | 12.184 | 12.19 | 12.19 | 12.192 | 251.118 | 12.192 | - 12.182 | 12.192 | 12.19 | 12.19 | 12.192 | 12.19 | 12.184 | 12.19 | - 12.19 | 12.192 | 12.19 | 12.192 | 12.19 | 12.182 | 12.192 | 12.19 | - 12.192 | 12.19 | 12.19 | 256.224 | 12.19 | 12.192 | 12.19 | 12.192 | - 12.19 | 12.182 | 12.192 | 12.19 | 12.192 | 12.19 | 12.19 | 12.184 | - 12.19 | 12.192 | 12.19 | 12.19 | 12.192 | 12.19 | 12.184 | 12.19 | - 256.206 | 12.192 | 12.19 | 12.184 | 12.19 | 12.19 | 12.192 | 12.19 | - 12.192 | 12.19 | 12.182 | 12.192 | 12.19 | 12.192 | 12.19 | 12.19 | - 12.184 | 12.19 | 12.192 | 12.19 | 12.19 | 256.224 | 12.182 | 12.192 | - 12.19 | 12.19 | 12.192 | 12.19 | 12.192 | 12.182 | 12.192 | 12.19 | - 12.19 | 12.192 | 12.19 | 12.182 | 12.192 | 12.19 | 12.192 | 12.19 | - 12.192 | 12.182 | 256.214 | 12.192 | 12.19 | 12.192 | 12.19 | 12.182 | - 12.192 | 12.19 | 12.192 | 12.19 | 12.19 | 12.192 | 12.182 | 12.192 | - 12.19 | 12.19 | 12.192 | 12.19 | 12.184 | 12.19 | 12.19 | 256.208 | - 12.19 | 12.192 | 12.182 | 12.19 | 12.192 | 12.19 | 12.192 | 12.19 | - ------------------------------------------------------------------------------------------------------------------------ - max val(#35) = 256.22us - min val(#16) = 12.18us - peak-to-peak = 244.04us - mean +- RMS = 23.91 +- 51.61 us - - eth2-prio1.txt: - hw rx time, us: packets 128: - relative abs time 321980642464 ns - first packet abs time 321980642464 ns - ------------------------------------------------------------------------------------------------------------------------ - 0 | 94.222 | 180.334 | 443.9 | 467.498 | 491.816 | 504.006 | 516.534 | - 540.682 | 552.866 | 565.056 | 580.838 | 593.03 | 605.22 | 617.412 | 629.594 | - 641.784 | 654.248 | 666.438 | 678.63 | 690.82 | 943.9 | 956.09 | 970.952 | - 983.144 | 995.334 | 1007.52 | 1019.71 | 1031.9 | 1044.56 | 1056.75 | 1068.94 | - 1081.13 | 1093.32 | 1105.51 | 1118.03 | 1130.22 | 1142.42 | 1154.61 | 1166.8 | - 1178.98 | 1191.17 | 1443.9 | 1456.09 | 1468.28 | 1480.47 | 1492.65 | 1507.4 | - 1519.59 | 1531.79 | 1543.98 | 1556.17 | 1604.41 | 1616.6 | 1628.79 | 1640.97 | - 1653.17 | 1665.36 | 1677.55 | 1689.74 | 1943.92 | 1956.1 | 1968.29 | 1980.49 | - 1992.68 | 2004.87 | 2017.06 | 2029.25 | 2041.43 | 2053.62 | 2065.81 | 2078 | - 2090.19 | 2102.39 | 2114.57 | 2126.76 | 2138.95 | 2151.14 | 2163.33 | 2175.52 | - 2187.71 | 2443.91 | 2456.1 | 2468.29 | 2480.48 | 2492.68 | 2504.86 | 2517.05 | - 2529.24 | 2541.43 | 2553.62 | 2565.81 | 2578 | 2590.19 | 2602.38 | 2630.86 | - 2643.05 | 2655.24 | 2667.43 | 2679.62 | 2691.81 | 2943.93 | 2956.12 | 2968.31 | - 2980.49 | 2992.68 | 3004.87 | 3017.06 | 3029.25 | 3041.45 | 3053.63 | 3065.82 | - 3078.01 | 3090.2 | 3102.39 | 3114.58 | 3126.77 | 3138.96 | 3151.15 | 3163.34 | - 3175.53 | 3187.72 | 3443.92 | 3456.11 | 3468.3 | 3480.49 | 3492.68 | 3504.87 | - ------------------------------------------------------------------------------------------------------------------------ - - - gap of hw rx time, us: packets 128: - ------------------------------------------------------------------------------------------------------------------------ - 0 | 94.222 | 86.112 | 263.566 | 23.598 | 24.318 | 12.19 | 12.528 | - 24.148 | 12.184 | 12.19 | 15.782 | 12.192 | 12.19 | 12.192 | 12.182 | - 12.19 | 12.464 | 12.19 | 12.192 | 12.19 | 253.08 | 12.19 | 14.862 | - 12.192 | 12.19 | 12.19 | 12.184 | 12.19 | 12.664 | 12.19 | 12.19 | - 12.192 | 12.182 | 12.192 | 12.526 | 12.19 | 12.192 | 12.19 | 12.192 | - 12.182 | 12.19 | 252.728 | 12.19 | 12.192 | 12.19 | 12.184 | 14.75 | - 12.19 | 12.192 | 12.19 | 12.192 | 48.242 | 12.192 | 12.19 | 12.182 | - 12.192 | 12.19 | 12.192 | 12.19 | 254.184 | 12.182 | 12.19 | 12.192 | - 12.19 | 12.192 | 12.19 | 12.19 | 12.184 | 12.19 | 12.192 | 12.19 | - 12.19 | 12.192 | 12.182 | 12.192 | 12.19 | 12.19 | 12.192 | 12.19 | - 12.192 | 256.198 | 12.19 | 12.192 | 12.19 | 12.192 | 12.182 | 12.19 | - 12.192 | 12.19 | 12.192 | 12.19 | 12.19 | 12.184 | 12.19 | 28.486 | - 12.19 | 12.192 | 12.182 | 12.19 | 12.192 | 252.118 | 12.192 | 12.19 | - 12.184 | 12.19 | 12.19 | 12.192 | 12.19 | 12.192 | 12.182 | 12.19 | - 12.192 | 12.19 | 12.192 | 12.19 | 12.192 | 12.182 | 12.19 | 12.192 | - 12.19 | 12.19 | 256.2 | 12.19 | 12.192 | 12.19 | 12.192 | 12.19 | - ------------------------------------------------------------------------------------------------------------------------ - max val(#3) = 263.57us - min val(#15) = 12.18us - peak-to-peak = 251.38us - mean +- RMS = 27.60 +- 56.00 us - - eth1-prio2.txt: - hw rx time, us: packets 128: - relative abs time 311932858540 ns - first packet abs time 311932858540 ns - ------------------------------------------------------------------------------------------------------------------------ - 0 | 60.434 | 499.998 | 512.19 | 539.498 | 551.69 | 563.88 | 1035.66 | - 1047.85 | 1060.04 | 1076.05 | 1088.24 | 1100.43 | 1112.62 | 1124.81 | 1500.01 | - 1515.44 | 1527.63 | 1539.82 | 1552.01 | 1564.2 | 1576.39 | 1588.58 | 1600.77 | - 1612.96 | 1625.14 | 2000.03 | 2012.22 | 2027.88 | 2040.07 | 2052.26 | 2064.45 | - 2076.64 | 2088.83 | 2101.51 | 2113.7 | 2125.89 | 2500.03 | 2512.22 | 2524.41 | - 2540.42 | 2552.61 | 2564.8 | 2576.99 | 2589.18 | 2601.37 | 2613.56 | 3000.03 | - 3012.22 | 3024.41 | 3036.59 | 3048.78 | 3060.97 | 3073.16 | 3085.35 | 3097.54 | - 3109.73 | 3121.92 | 3500.04 | 3512.22 | 3524.41 | 3536.6 | 3548.8 | 3560.99 | - 3573.18 | 3585.36 | 3597.55 | 3609.74 | 3621.93 | 4000.03 | 4012.22 | 4024.41 | - 4036.6 | 4048.79 | 4060.98 | 4073.17 | 4085.36 | 4097.55 | 4109.74 | 4121.93 | - 4500.05 | 4512.24 | 4524.42 | 4536.61 | 4548.8 | 4560.99 | 4573.18 | 4585.37 | - 4597.56 | 4609.75 | 4621.94 | 5000.05 | 5012.24 | 5024.43 | 5036.62 | 5048.81 | - 5061 | 5073.18 | 5085.37 | 5097.56 | 5109.75 | 5121.95 | 5500.06 | 5512.25 | - 5524.44 | 5536.63 | 5548.82 | 5561.01 | 5573.2 | 5585.39 | 5597.58 | 5609.77 | - 5621.96 | 6000.07 | 6012.26 | 6024.44 | 6036.63 | 6048.82 | 6061.01 | 6073.2 | - 6085.39 | 6097.58 | 6109.77 | 6121.96 | 6500.06 | 6512.25 | 6524.44 | 6536.63 | - ------------------------------------------------------------------------------------------------------------------------ - - - gap of hw rx time, us: packets 128: - ------------------------------------------------------------------------------------------------------------------------ - 0 | 60.434 | 439.564 | 12.192 | 27.308 | 12.192 | 12.19 | 471.778 | - 12.19 | 12.192 | 16.006 | 12.19 | 12.192 | 12.19 | 12.192 | 375.202 | - 15.43 | 12.192 | 12.19 | 12.184 | 12.19 | 12.19 | 12.192 | 12.19 | - 12.192 | 12.182 | 374.884 | 12.19 | 15.662 | 12.192 | 12.19 | 12.19 | - 12.192 | 12.19 | 12.68 | 12.19 | 12.19 | 374.132 | 12.192 | 12.19 | - 16.014 | 12.192 | 12.182 | 12.19 | 12.192 | 12.19 | 12.192 | 386.466 | - 12.19 | 12.19 | 12.184 | 12.19 | 12.192 | 12.19 | 12.19 | 12.192 | - 12.19 | 12.184 | 378.122 | 12.182 | 12.192 | 12.19 | 12.192 | 12.19 | - 12.19 | 12.184 | 12.19 | 12.192 | 12.19 | 378.1 | 12.19 | 12.19 | - 12.192 | 12.19 | 12.184 | 12.19 | 12.19 | 12.192 | 12.19 | 12.192 | - 378.114 | 12.19 | 12.184 | 12.19 | 12.192 | 12.19 | 12.19 | 12.192 | - 12.19 | 12.184 | 12.19 | 378.108 | 12.19 | 12.19 | 12.192 | 12.19 | - 12.192 | 12.182 | 12.19 | 12.192 | 12.19 | 12.192 | 378.114 | 12.19 | - 12.192 | 12.19 | 12.184 | 12.19 | 12.19 | 12.192 | 12.19 | 12.192 | - 12.19 | 378.106 | 12.192 | 12.182 | 12.192 | 12.19 | 12.192 | 12.19 | - 12.19 | 12.184 | 12.19 | 12.19 | 378.1 | 12.19 | 12.192 | 12.19 | - ------------------------------------------------------------------------------------------------------------------------ - max val(#7) = 471.78us - min val(#25) = 12.18us - peak-to-peak = 459.60us - mean +- RMS = 51.47 +- 114.75 us - - eth2-prio2.txt: - hw rx time, us: packets 128: - relative abs time 311932858530 ns - first packet abs time 311932858530 ns - ------------------------------------------------------------------------------------------------------------------------ - 0 | 12.192 | 24.382 | 36.574 | 48.764 | 60.946 | 73.138 | 85.328 | - 97.52 | 109.71 | 121.9 | 500.016 | 512.206 | 524.398 | 536.58 | 548.77 | - 560.962 | 573.152 | 585.344 | 597.534 | 609.716 | 621.908 | 1000.01 | 1012.21 | - 1024.4 | 1036.59 | 1048.78 | 1060.97 | 1073.16 | 1085.34 | 1097.53 | 1109.72 | - 1121.91 | 1500.01 | 1512.2 | 1524.4 | 1536.59 | 1548.77 | 1560.96 | 1573.15 | - 1585.34 | 1597.53 | 1609.72 | 1621.91 | 2000.03 | 2012.22 | 2024.4 | 2036.59 | - 2048.78 | 2060.97 | 2073.17 | 2085.36 | 2097.54 | 2109.73 | 2121.92 | 2500.03 | - 2512.22 | 2524.41 | 2536.6 | 2548.79 | 2560.98 | 2573.16 | 2585.36 | 2597.55 | - 2609.74 | 2621.93 | 3000.04 | 3012.23 | 3024.42 | 3036.61 | 3048.8 | 3060.99 | - 3073.18 | 3085.37 | 3097.56 | 3109.75 | 3121.93 | 3500.04 | 3512.22 | 3524.42 | - 3536.61 | 3548.8 | 3560.99 | 3573.18 | 3585.36 | 3597.55 | 3609.74 | 3621.93 | - 4000.05 | 4012.24 | 4024.43 | 4036.62 | 4048.81 | 4060.99 | 4073.19 | 4085.38 | - 4097.57 | 4109.76 | 4121.95 | 4500.06 | 4512.25 | 4524.44 | 4536.62 | 4548.81 | - 4561 | 4573.19 | 4585.38 | 4597.57 | 4609.76 | 4621.95 | 5000.05 | 5012.24 | - 5024.43 | 5036.62 | 5048.81 | 5061 | 5073.19 | 5085.37 | 5097.56 | 5109.76 | - 5121.95 | 5500.06 | 5512.25 | 5524.44 | 5536.63 | 5548.82 | 5561.01 | 5573.2 | - ------------------------------------------------------------------------------------------------------------------------ - - - gap of hw rx time, us: packets 128: - ------------------------------------------------------------------------------------------------------------------------ - 0 | 12.192 | 12.19 | 12.192 | 12.19 | 12.182 | 12.192 | 12.19 | - 12.192 | 12.19 | 12.19 | 378.116 | 12.19 | 12.192 | 12.182 | 12.19 | - 12.192 | 12.19 | 12.192 | 12.19 | 12.182 | 12.192 | 378.106 | 12.192 | - 12.19 | 12.192 | 12.19 | 12.19 | 12.192 | 12.182 | 12.19 | 12.192 | - 12.19 | 378.1 | 12.19 | 12.192 | 12.19 | 12.182 | 12.192 | 12.19 | - 12.192 | 12.19 | 12.19 | 12.192 | 378.114 | 12.192 | 12.182 | 12.19 | - 12.192 | 12.19 | 12.192 | 12.19 | 12.184 | 12.19 | 12.19 | 378.108 | - 12.19 | 12.192 | 12.19 | 12.19 | 12.192 | 12.182 | 12.192 | 12.19 | - 12.19 | 12.192 | 378.114 | 12.192 | 12.19 | 12.182 | 12.192 | 12.19 | - 12.192 | 12.19 | 12.19 | 12.192 | 12.182 | 378.108 | 12.182 | 12.192 | - 12.19 | 12.19 | 12.192 | 12.19 | 12.182 | 12.192 | 12.19 | 12.192 | - 378.114 | 12.192 | 12.19 | 12.19 | 12.192 | 12.182 | 12.192 | 12.19 | - 12.19 | 12.192 | 12.19 | 378.108 | 12.19 | 12.19 | 12.184 | 12.19 | - 12.192 | 12.19 | 12.19 | 12.192 | 12.182 | 12.192 | 378.098 | 12.192 | - 12.19 | 12.19 | 12.192 | 12.19 | 12.192 | 12.182 | 12.19 | 12.192 | - 12.19 | 378.116 | 12.19 | 12.19 | 12.192 | 12.182 | 12.192 | 12.19 | - ------------------------------------------------------------------------------------------------------------------------ - max val(#11) = 378.12us - min val(#5) = 12.18us - peak-to-peak = 365.93us - mean +- RMS = 43.88 +- 102.92 us - - eth1-prio3.txt: - hw rx time, us: packets 128: - relative abs time 301887130986 ns - first packet abs time 301887130986 ns - ------------------------------------------------------------------------------------------------------------------------ - 0 | 12.182 | 24.372 | 36.564 | 48.754 | 60.946 | 73.136 | 85.326 | - 97.51 | 109.7 | 121.892 | 500.006 | 512.196 | 524.388 | 536.578 | 548.77 | - 560.96 | 573.142 | 585.334 | 597.524 | 609.716 | 621.906 | 1000.01 | 1012.2 | - 1024.39 | 1036.58 | 1048.77 | 1060.96 | 1073.15 | 1085.34 | 1097.53 | 1109.72 | - 1121.91 | 1500.01 | 1512.19 | 1524.39 | 1536.58 | 1548.77 | 1560.96 | 1573.15 | - 1585.33 | 1597.52 | 1609.71 | 1621.9 | 2000.02 | 2012.21 | 2024.4 | 2036.59 | - 2048.78 | 2060.96 | 2073.16 | 2085.35 | 2097.54 | 2109.73 | 2121.92 | 2500.02 | - 2512.21 | 2524.39 | 2536.58 | 2548.77 | 2560.96 | 2573.15 | 2585.35 | 2597.54 | - 2609.72 | 2621.91 | 3000.02 | 3012.22 | 3024.41 | 3036.6 | 3048.79 | 3060.98 | - 3073.16 | 3085.35 | 3097.54 | 3109.73 | 3121.92 | 3500.03 | 3512.22 | 3524.41 | - 3536.6 | 3548.79 | 3560.98 | 3573.17 | 3585.36 | 3597.55 | 3609.74 | 3621.92 | - 4000.05 | 4012.23 | 4024.42 | 4036.61 | 4048.8 | 4060.99 | 4073.18 | 4085.37 | - 4097.56 | 4109.75 | 4121.94 | 4500.05 | 4512.24 | 4524.43 | 4536.62 | 4548.81 | - 4561 | 4573.18 | 4585.37 | 4597.56 | 4609.76 | 4621.95 | 5000.04 | 5012.24 | - 5024.43 | 5036.61 | 5048.8 | 5060.99 | 5073.18 | 5085.37 | 5097.56 | 5109.75 | - 5121.94 | 5500.06 | 5512.24 | 5524.43 | 5536.62 | 5548.81 | 5561.01 | 5573.2 | - ------------------------------------------------------------------------------------------------------------------------ - - - gap of hw rx time, us: packets 128: - ------------------------------------------------------------------------------------------------------------------------ - 0 | 12.182 | 12.19 | 12.192 | 12.19 | 12.192 | 12.19 | 12.19 | - 12.184 | 12.19 | 12.192 | 378.114 | 12.19 | 12.192 | 12.19 | 12.192 | - 12.19 | 12.182 | 12.192 | 12.19 | 12.192 | 12.19 | 378.108 | 12.19 | - 12.19 | 12.184 | 12.19 | 12.192 | 12.19 | 12.19 | 12.192 | 12.19 | - 12.184 | 378.106 | 12.182 | 12.192 | 12.19 | 12.192 | 12.19 | 12.19 | - 12.184 | 12.19 | 12.192 | 12.19 | 378.116 | 12.19 | 12.19 | 12.192 | - 12.19 | 12.182 | 12.192 | 12.19 | 12.192 | 12.19 | 12.192 | 378.098 | - 12.19 | 12.184 | 12.19 | 12.192 | 12.19 | 12.19 | 12.192 | 12.19 | - 12.184 | 12.19 | 378.114 | 12.192 | 12.19 | 12.192 | 12.19 | 12.19 | - 12.184 | 12.19 | 12.192 | 12.19 | 12.19 | 378.108 | 12.19 | 12.192 | - 12.19 | 12.184 | 12.19 | 12.19 | 12.192 | 12.19 | 12.192 | 12.182 | - 378.122 | 12.184 | 12.19 | 12.192 | 12.19 | 12.19 | 12.192 | 12.19 | - 12.184 | 12.19 | 12.19 | 378.108 | 12.19 | 12.192 | 12.19 | 12.192 | - 12.19 | 12.182 | 12.192 | 12.19 | 12.192 | 12.19 | 378.098 | 12.192 | - 12.19 | 12.184 | 12.19 | 12.19 | 12.192 | 12.19 | 12.192 | 12.19 | - 12.182 | 378.124 | 12.182 | 12.192 | 12.19 | 12.19 | 12.192 | 12.19 | - ------------------------------------------------------------------------------------------------------------------------ - max val(#121) = 378.12us - min val(#1) = 12.18us - peak-to-peak = 365.94us - mean +- RMS = 43.88 +- 102.92 us - - eth2-prio3.txt: - hw rx time, us: packets 128: - relative abs time 301887630992 ns - first packet abs time 301887630992 ns - ------------------------------------------------------------------------------------------------------------------------ - 0 | 39.42 | 51.61 | 63.794 | 75.984 | 88.174 | 100.366 | 112.556 | - 124.748 | 499.998 | 512.19 | 524.38 | 536.562 | 548.754 | 560.944 | 573.136 | - 585.326 | 597.516 | 609.708 | 621.89 | 1000.01 | 1012.2 | 1024.39 | 1036.58 | - 1048.77 | 1060.96 | 1073.15 | 1085.33 | 1097.52 | 1109.71 | 1121.91 | 1500 | - 1512.19 | 1524.39 | 1536.58 | 1548.77 | 1560.95 | 1573.14 | 1585.33 | 1597.52 | - 1609.71 | 1621.9 | 2000.02 | 2012.21 | 2024.39 | 2036.58 | 2048.77 | 2060.97 | - 2073.16 | 2085.35 | 2097.54 | 2109.72 | 2121.91 | 2500.02 | 2512.21 | 2524.4 | - 2536.59 | 2548.78 | 2560.97 | 2573.15 | 2585.35 | 2597.54 | 2609.73 | 2621.92 | - 3000.02 | 3012.21 | 3024.4 | 3036.59 | 3048.77 | 3060.96 | 3073.15 | 3085.34 | - 3097.54 | 3109.73 | 3121.92 | 3500.04 | 3512.23 | 3524.41 | 3536.6 | 3548.8 | - 3560.99 | 3573.18 | 3585.37 | 3597.55 | 3609.74 | 3621.93 | 4000.03 | 4012.22 | - 4024.41 | 4036.6 | 4048.79 | 4060.99 | 4073.17 | 4085.36 | 4097.55 | 4109.74 | - 4121.93 | 4500.05 | 4512.24 | 4524.43 | 4536.61 | 4548.8 | 4560.99 | 4573.18 | - 4585.37 | 4597.56 | 4609.76 | 4621.94 | 5000.05 | 5012.23 | 5024.42 | 5036.61 | - 5048.8 | 5060.99 | 5073.18 | 5085.36 | 5097.56 | 5109.75 | 5121.94 | 5500.05 | - 5512.24 | 5524.43 | 5536.62 | 5548.82 | 5561 | 5573.19 | 5585.38 | 5597.57 | - ------------------------------------------------------------------------------------------------------------------------ - - - gap of hw rx time, us: packets 128: - ------------------------------------------------------------------------------------------------------------------------ - 0 | 39.42 | 12.19 | 12.184 | 12.19 | 12.19 | 12.192 | 12.19 | - 12.192 | 375.25 | 12.192 | 12.19 | 12.182 | 12.192 | 12.19 | 12.192 | - 12.19 | 12.19 | 12.192 | 12.182 | 378.124 | 12.182 | 12.19 | 12.192 | - 12.19 | 12.192 | 12.19 | 12.182 | 12.192 | 12.19 | 12.192 | 378.098 | - 12.19 | 12.192 | 12.19 | 12.192 | 12.182 | 12.192 | 12.19 | 12.19 | - 12.192 | 12.19 | 378.116 | 12.19 | 12.182 | 12.192 | 12.19 | 12.192 | - 12.19 | 12.19 | 12.192 | 12.182 | 12.192 | 378.106 | 12.192 | 12.19 | - 12.19 | 12.192 | 12.19 | 12.182 | 12.192 | 12.19 | 12.192 | 12.19 | - 378.1 | 12.19 | 12.19 | 12.192 | 12.182 | 12.192 | 12.19 | 12.19 | - 12.192 | 12.19 | 12.192 | 378.122 | 12.19 | 12.184 | 12.19 | 12.192 | - 12.19 | 12.192 | 12.19 | 12.182 | 12.192 | 12.19 | 378.1 | 12.19 | - 12.19 | 12.192 | 12.19 | 12.192 | 12.182 | 12.19 | 12.192 | 12.19 | - 12.192 | 378.114 | 12.19 | 12.192 | 12.182 | 12.192 | 12.19 | 12.19 | - 12.192 | 12.19 | 12.192 | 12.182 | 378.108 | 12.182 | 12.19 | 12.192 | - 12.19 | 12.19 | 12.192 | 12.182 | 12.192 | 12.19 | 12.19 | 378.116 | - 12.19 | 12.192 | 12.19 | 12.192 | 12.182 | 12.19 | 12.192 | 12.19 | - ------------------------------------------------------------------------------------------------------------------------ - max val(#20) = 378.12us - min val(#12) = 12.18us - peak-to-peak = 365.94us - mean +- RMS = 44.08 +- 102.81 us +.. code:: console + + eth1-prio1.txt: + + hw rx time, us: packets 128: + relative abs time 321980646888 ns + first packet abs time 321980646888 ns + ------------------------------------------------------------------------------------------------------------------------ + 0 | 42.076 | 54.266 | 66.45 | 78.64 | 90.832 | 103.022 | 115.212 | + 127.404 | 139.594 | 151.778 | 163.968 | 176.158 | 188.35 | 439.468 | 451.66 | + 463.842 | 476.034 | 488.224 | 500.414 | 512.606 | 524.796 | 536.98 | 549.17 | + 561.36 | 573.552 | 585.742 | 597.934 | 610.124 | 622.306 | 634.498 | 646.688 | + 658.88 | 671.07 | 683.26 | 939.484 | 951.674 | 963.866 | 976.056 | 988.248 | + 1000.44 | 1012.62 | 1024.81 | 1037 | 1049.19 | 1061.38 | 1073.57 | 1085.76 | + 1097.95 | 1110.14 | 1122.33 | 1134.52 | 1146.71 | 1158.9 | 1171.09 | 1183.28 | + 1439.48 | 1451.67 | 1463.86 | 1476.05 | 1488.24 | 1500.43 | 1512.62 | 1524.81 | + 1537 | 1549.19 | 1561.37 | 1573.57 | 1585.76 | 1597.95 | 1610.14 | 1622.33 | + 1634.51 | 1646.7 | 1658.89 | 1671.08 | 1683.27 | 1939.5 | 1951.68 | 1963.87 | + 1976.06 | 1988.25 | 2000.44 | 2012.63 | 2024.83 | 2037.01 | 2049.2 | 2061.39 | + 2073.58 | 2085.77 | 2097.96 | 2110.14 | 2122.34 | 2134.53 | 2146.72 | 2158.91 | + 2171.1 | 2183.28 | 2439.5 | 2451.69 | 2463.88 | 2476.07 | 2488.26 | 2500.44 | + 2512.63 | 2524.82 | 2537.02 | 2549.21 | 2561.4 | 2573.59 | 2585.77 | 2597.96 | + 2610.15 | 2622.34 | 2634.53 | 2646.72 | 2658.91 | 2671.1 | 2683.29 | 2939.5 | + 2951.69 | 2963.88 | 2976.06 | 2988.25 | 3000.44 | 3012.63 | 3024.82 | 3037.01 | + ------------------------------------------------------------------------------------------------------------------------ + + + gap of hw rx time, us: packets 128: + ------------------------------------------------------------------------------------------------------------------------ + 0 | 42.076 | 12.19 | 12.184 | 12.19 | 12.192 | 12.19 | 12.19 | + 12.192 | 12.19 | 12.184 | 12.19 | 12.19 | 12.192 | 251.118 | 12.192 | + 12.182 | 12.192 | 12.19 | 12.19 | 12.192 | 12.19 | 12.184 | 12.19 | + 12.19 | 12.192 | 12.19 | 12.192 | 12.19 | 12.182 | 12.192 | 12.19 | + 12.192 | 12.19 | 12.19 | 256.224 | 12.19 | 12.192 | 12.19 | 12.192 | + 12.19 | 12.182 | 12.192 | 12.19 | 12.192 | 12.19 | 12.19 | 12.184 | + 12.19 | 12.192 | 12.19 | 12.19 | 12.192 | 12.19 | 12.184 | 12.19 | + 256.206 | 12.192 | 12.19 | 12.184 | 12.19 | 12.19 | 12.192 | 12.19 | + 12.192 | 12.19 | 12.182 | 12.192 | 12.19 | 12.192 | 12.19 | 12.19 | + 12.184 | 12.19 | 12.192 | 12.19 | 12.19 | 256.224 | 12.182 | 12.192 | + 12.19 | 12.19 | 12.192 | 12.19 | 12.192 | 12.182 | 12.192 | 12.19 | + 12.19 | 12.192 | 12.19 | 12.182 | 12.192 | 12.19 | 12.192 | 12.19 | + 12.192 | 12.182 | 256.214 | 12.192 | 12.19 | 12.192 | 12.19 | 12.182 | + 12.192 | 12.19 | 12.192 | 12.19 | 12.19 | 12.192 | 12.182 | 12.192 | + 12.19 | 12.19 | 12.192 | 12.19 | 12.184 | 12.19 | 12.19 | 256.208 | + 12.19 | 12.192 | 12.182 | 12.19 | 12.192 | 12.19 | 12.192 | 12.19 | + ------------------------------------------------------------------------------------------------------------------------ + max val(#35) = 256.22us + min val(#16) = 12.18us + peak-to-peak = 244.04us + mean +- RMS = 23.91 +- 51.61 us + + eth2-prio1.txt: + hw rx time, us: packets 128: + relative abs time 321980642464 ns + first packet abs time 321980642464 ns + ------------------------------------------------------------------------------------------------------------------------ + 0 | 94.222 | 180.334 | 443.9 | 467.498 | 491.816 | 504.006 | 516.534 | + 540.682 | 552.866 | 565.056 | 580.838 | 593.03 | 605.22 | 617.412 | 629.594 | + 641.784 | 654.248 | 666.438 | 678.63 | 690.82 | 943.9 | 956.09 | 970.952 | + 983.144 | 995.334 | 1007.52 | 1019.71 | 1031.9 | 1044.56 | 1056.75 | 1068.94 | + 1081.13 | 1093.32 | 1105.51 | 1118.03 | 1130.22 | 1142.42 | 1154.61 | 1166.8 | + 1178.98 | 1191.17 | 1443.9 | 1456.09 | 1468.28 | 1480.47 | 1492.65 | 1507.4 | + 1519.59 | 1531.79 | 1543.98 | 1556.17 | 1604.41 | 1616.6 | 1628.79 | 1640.97 | + 1653.17 | 1665.36 | 1677.55 | 1689.74 | 1943.92 | 1956.1 | 1968.29 | 1980.49 | + 1992.68 | 2004.87 | 2017.06 | 2029.25 | 2041.43 | 2053.62 | 2065.81 | 2078 | + 2090.19 | 2102.39 | 2114.57 | 2126.76 | 2138.95 | 2151.14 | 2163.33 | 2175.52 | + 2187.71 | 2443.91 | 2456.1 | 2468.29 | 2480.48 | 2492.68 | 2504.86 | 2517.05 | + 2529.24 | 2541.43 | 2553.62 | 2565.81 | 2578 | 2590.19 | 2602.38 | 2630.86 | + 2643.05 | 2655.24 | 2667.43 | 2679.62 | 2691.81 | 2943.93 | 2956.12 | 2968.31 | + 2980.49 | 2992.68 | 3004.87 | 3017.06 | 3029.25 | 3041.45 | 3053.63 | 3065.82 | + 3078.01 | 3090.2 | 3102.39 | 3114.58 | 3126.77 | 3138.96 | 3151.15 | 3163.34 | + 3175.53 | 3187.72 | 3443.92 | 3456.11 | 3468.3 | 3480.49 | 3492.68 | 3504.87 | + ------------------------------------------------------------------------------------------------------------------------ + + + gap of hw rx time, us: packets 128: + ------------------------------------------------------------------------------------------------------------------------ + 0 | 94.222 | 86.112 | 263.566 | 23.598 | 24.318 | 12.19 | 12.528 | + 24.148 | 12.184 | 12.19 | 15.782 | 12.192 | 12.19 | 12.192 | 12.182 | + 12.19 | 12.464 | 12.19 | 12.192 | 12.19 | 253.08 | 12.19 | 14.862 | + 12.192 | 12.19 | 12.19 | 12.184 | 12.19 | 12.664 | 12.19 | 12.19 | + 12.192 | 12.182 | 12.192 | 12.526 | 12.19 | 12.192 | 12.19 | 12.192 | + 12.182 | 12.19 | 252.728 | 12.19 | 12.192 | 12.19 | 12.184 | 14.75 | + 12.19 | 12.192 | 12.19 | 12.192 | 48.242 | 12.192 | 12.19 | 12.182 | + 12.192 | 12.19 | 12.192 | 12.19 | 254.184 | 12.182 | 12.19 | 12.192 | + 12.19 | 12.192 | 12.19 | 12.19 | 12.184 | 12.19 | 12.192 | 12.19 | + 12.19 | 12.192 | 12.182 | 12.192 | 12.19 | 12.19 | 12.192 | 12.19 | + 12.192 | 256.198 | 12.19 | 12.192 | 12.19 | 12.192 | 12.182 | 12.19 | + 12.192 | 12.19 | 12.192 | 12.19 | 12.19 | 12.184 | 12.19 | 28.486 | + 12.19 | 12.192 | 12.182 | 12.19 | 12.192 | 252.118 | 12.192 | 12.19 | + 12.184 | 12.19 | 12.19 | 12.192 | 12.19 | 12.192 | 12.182 | 12.19 | + 12.192 | 12.19 | 12.192 | 12.19 | 12.192 | 12.182 | 12.19 | 12.192 | + 12.19 | 12.19 | 256.2 | 12.19 | 12.192 | 12.19 | 12.192 | 12.19 | + ------------------------------------------------------------------------------------------------------------------------ + max val(#3) = 263.57us + min val(#15) = 12.18us + peak-to-peak = 251.38us + mean +- RMS = 27.60 +- 56.00 us + + eth1-prio2.txt: + hw rx time, us: packets 128: + relative abs time 311932858540 ns + first packet abs time 311932858540 ns + ------------------------------------------------------------------------------------------------------------------------ + 0 | 60.434 | 499.998 | 512.19 | 539.498 | 551.69 | 563.88 | 1035.66 | + 1047.85 | 1060.04 | 1076.05 | 1088.24 | 1100.43 | 1112.62 | 1124.81 | 1500.01 | + 1515.44 | 1527.63 | 1539.82 | 1552.01 | 1564.2 | 1576.39 | 1588.58 | 1600.77 | + 1612.96 | 1625.14 | 2000.03 | 2012.22 | 2027.88 | 2040.07 | 2052.26 | 2064.45 | + 2076.64 | 2088.83 | 2101.51 | 2113.7 | 2125.89 | 2500.03 | 2512.22 | 2524.41 | + 2540.42 | 2552.61 | 2564.8 | 2576.99 | 2589.18 | 2601.37 | 2613.56 | 3000.03 | + 3012.22 | 3024.41 | 3036.59 | 3048.78 | 3060.97 | 3073.16 | 3085.35 | 3097.54 | + 3109.73 | 3121.92 | 3500.04 | 3512.22 | 3524.41 | 3536.6 | 3548.8 | 3560.99 | + 3573.18 | 3585.36 | 3597.55 | 3609.74 | 3621.93 | 4000.03 | 4012.22 | 4024.41 | + 4036.6 | 4048.79 | 4060.98 | 4073.17 | 4085.36 | 4097.55 | 4109.74 | 4121.93 | + 4500.05 | 4512.24 | 4524.42 | 4536.61 | 4548.8 | 4560.99 | 4573.18 | 4585.37 | + 4597.56 | 4609.75 | 4621.94 | 5000.05 | 5012.24 | 5024.43 | 5036.62 | 5048.81 | + 5061 | 5073.18 | 5085.37 | 5097.56 | 5109.75 | 5121.95 | 5500.06 | 5512.25 | + 5524.44 | 5536.63 | 5548.82 | 5561.01 | 5573.2 | 5585.39 | 5597.58 | 5609.77 | + 5621.96 | 6000.07 | 6012.26 | 6024.44 | 6036.63 | 6048.82 | 6061.01 | 6073.2 | + 6085.39 | 6097.58 | 6109.77 | 6121.96 | 6500.06 | 6512.25 | 6524.44 | 6536.63 | + ------------------------------------------------------------------------------------------------------------------------ + + + gap of hw rx time, us: packets 128: + ------------------------------------------------------------------------------------------------------------------------ + 0 | 60.434 | 439.564 | 12.192 | 27.308 | 12.192 | 12.19 | 471.778 | + 12.19 | 12.192 | 16.006 | 12.19 | 12.192 | 12.19 | 12.192 | 375.202 | + 15.43 | 12.192 | 12.19 | 12.184 | 12.19 | 12.19 | 12.192 | 12.19 | + 12.192 | 12.182 | 374.884 | 12.19 | 15.662 | 12.192 | 12.19 | 12.19 | + 12.192 | 12.19 | 12.68 | 12.19 | 12.19 | 374.132 | 12.192 | 12.19 | + 16.014 | 12.192 | 12.182 | 12.19 | 12.192 | 12.19 | 12.192 | 386.466 | + 12.19 | 12.19 | 12.184 | 12.19 | 12.192 | 12.19 | 12.19 | 12.192 | + 12.19 | 12.184 | 378.122 | 12.182 | 12.192 | 12.19 | 12.192 | 12.19 | + 12.19 | 12.184 | 12.19 | 12.192 | 12.19 | 378.1 | 12.19 | 12.19 | + 12.192 | 12.19 | 12.184 | 12.19 | 12.19 | 12.192 | 12.19 | 12.192 | + 378.114 | 12.19 | 12.184 | 12.19 | 12.192 | 12.19 | 12.19 | 12.192 | + 12.19 | 12.184 | 12.19 | 378.108 | 12.19 | 12.19 | 12.192 | 12.19 | + 12.192 | 12.182 | 12.19 | 12.192 | 12.19 | 12.192 | 378.114 | 12.19 | + 12.192 | 12.19 | 12.184 | 12.19 | 12.19 | 12.192 | 12.19 | 12.192 | + 12.19 | 378.106 | 12.192 | 12.182 | 12.192 | 12.19 | 12.192 | 12.19 | + 12.19 | 12.184 | 12.19 | 12.19 | 378.1 | 12.19 | 12.192 | 12.19 | + ------------------------------------------------------------------------------------------------------------------------ + max val(#7) = 471.78us + min val(#25) = 12.18us + peak-to-peak = 459.60us + mean +- RMS = 51.47 +- 114.75 us + + eth2-prio2.txt: + hw rx time, us: packets 128: + relative abs time 311932858530 ns + first packet abs time 311932858530 ns + ------------------------------------------------------------------------------------------------------------------------ + 0 | 12.192 | 24.382 | 36.574 | 48.764 | 60.946 | 73.138 | 85.328 | + 97.52 | 109.71 | 121.9 | 500.016 | 512.206 | 524.398 | 536.58 | 548.77 | + 560.962 | 573.152 | 585.344 | 597.534 | 609.716 | 621.908 | 1000.01 | 1012.21 | + 1024.4 | 1036.59 | 1048.78 | 1060.97 | 1073.16 | 1085.34 | 1097.53 | 1109.72 | + 1121.91 | 1500.01 | 1512.2 | 1524.4 | 1536.59 | 1548.77 | 1560.96 | 1573.15 | + 1585.34 | 1597.53 | 1609.72 | 1621.91 | 2000.03 | 2012.22 | 2024.4 | 2036.59 | + 2048.78 | 2060.97 | 2073.17 | 2085.36 | 2097.54 | 2109.73 | 2121.92 | 2500.03 | + 2512.22 | 2524.41 | 2536.6 | 2548.79 | 2560.98 | 2573.16 | 2585.36 | 2597.55 | + 2609.74 | 2621.93 | 3000.04 | 3012.23 | 3024.42 | 3036.61 | 3048.8 | 3060.99 | + 3073.18 | 3085.37 | 3097.56 | 3109.75 | 3121.93 | 3500.04 | 3512.22 | 3524.42 | + 3536.61 | 3548.8 | 3560.99 | 3573.18 | 3585.36 | 3597.55 | 3609.74 | 3621.93 | + 4000.05 | 4012.24 | 4024.43 | 4036.62 | 4048.81 | 4060.99 | 4073.19 | 4085.38 | + 4097.57 | 4109.76 | 4121.95 | 4500.06 | 4512.25 | 4524.44 | 4536.62 | 4548.81 | + 4561 | 4573.19 | 4585.38 | 4597.57 | 4609.76 | 4621.95 | 5000.05 | 5012.24 | + 5024.43 | 5036.62 | 5048.81 | 5061 | 5073.19 | 5085.37 | 5097.56 | 5109.76 | + 5121.95 | 5500.06 | 5512.25 | 5524.44 | 5536.63 | 5548.82 | 5561.01 | 5573.2 | + ------------------------------------------------------------------------------------------------------------------------ + + + gap of hw rx time, us: packets 128: + ------------------------------------------------------------------------------------------------------------------------ + 0 | 12.192 | 12.19 | 12.192 | 12.19 | 12.182 | 12.192 | 12.19 | + 12.192 | 12.19 | 12.19 | 378.116 | 12.19 | 12.192 | 12.182 | 12.19 | + 12.192 | 12.19 | 12.192 | 12.19 | 12.182 | 12.192 | 378.106 | 12.192 | + 12.19 | 12.192 | 12.19 | 12.19 | 12.192 | 12.182 | 12.19 | 12.192 | + 12.19 | 378.1 | 12.19 | 12.192 | 12.19 | 12.182 | 12.192 | 12.19 | + 12.192 | 12.19 | 12.19 | 12.192 | 378.114 | 12.192 | 12.182 | 12.19 | + 12.192 | 12.19 | 12.192 | 12.19 | 12.184 | 12.19 | 12.19 | 378.108 | + 12.19 | 12.192 | 12.19 | 12.19 | 12.192 | 12.182 | 12.192 | 12.19 | + 12.19 | 12.192 | 378.114 | 12.192 | 12.19 | 12.182 | 12.192 | 12.19 | + 12.192 | 12.19 | 12.19 | 12.192 | 12.182 | 378.108 | 12.182 | 12.192 | + 12.19 | 12.19 | 12.192 | 12.19 | 12.182 | 12.192 | 12.19 | 12.192 | + 378.114 | 12.192 | 12.19 | 12.19 | 12.192 | 12.182 | 12.192 | 12.19 | + 12.19 | 12.192 | 12.19 | 378.108 | 12.19 | 12.19 | 12.184 | 12.19 | + 12.192 | 12.19 | 12.19 | 12.192 | 12.182 | 12.192 | 378.098 | 12.192 | + 12.19 | 12.19 | 12.192 | 12.19 | 12.192 | 12.182 | 12.19 | 12.192 | + 12.19 | 378.116 | 12.19 | 12.19 | 12.192 | 12.182 | 12.192 | 12.19 | + ------------------------------------------------------------------------------------------------------------------------ + max val(#11) = 378.12us + min val(#5) = 12.18us + peak-to-peak = 365.93us + mean +- RMS = 43.88 +- 102.92 us + + eth1-prio3.txt: + hw rx time, us: packets 128: + relative abs time 301887130986 ns + first packet abs time 301887130986 ns + ------------------------------------------------------------------------------------------------------------------------ + 0 | 12.182 | 24.372 | 36.564 | 48.754 | 60.946 | 73.136 | 85.326 | + 97.51 | 109.7 | 121.892 | 500.006 | 512.196 | 524.388 | 536.578 | 548.77 | + 560.96 | 573.142 | 585.334 | 597.524 | 609.716 | 621.906 | 1000.01 | 1012.2 | + 1024.39 | 1036.58 | 1048.77 | 1060.96 | 1073.15 | 1085.34 | 1097.53 | 1109.72 | + 1121.91 | 1500.01 | 1512.19 | 1524.39 | 1536.58 | 1548.77 | 1560.96 | 1573.15 | + 1585.33 | 1597.52 | 1609.71 | 1621.9 | 2000.02 | 2012.21 | 2024.4 | 2036.59 | + 2048.78 | 2060.96 | 2073.16 | 2085.35 | 2097.54 | 2109.73 | 2121.92 | 2500.02 | + 2512.21 | 2524.39 | 2536.58 | 2548.77 | 2560.96 | 2573.15 | 2585.35 | 2597.54 | + 2609.72 | 2621.91 | 3000.02 | 3012.22 | 3024.41 | 3036.6 | 3048.79 | 3060.98 | + 3073.16 | 3085.35 | 3097.54 | 3109.73 | 3121.92 | 3500.03 | 3512.22 | 3524.41 | + 3536.6 | 3548.79 | 3560.98 | 3573.17 | 3585.36 | 3597.55 | 3609.74 | 3621.92 | + 4000.05 | 4012.23 | 4024.42 | 4036.61 | 4048.8 | 4060.99 | 4073.18 | 4085.37 | + 4097.56 | 4109.75 | 4121.94 | 4500.05 | 4512.24 | 4524.43 | 4536.62 | 4548.81 | + 4561 | 4573.18 | 4585.37 | 4597.56 | 4609.76 | 4621.95 | 5000.04 | 5012.24 | + 5024.43 | 5036.61 | 5048.8 | 5060.99 | 5073.18 | 5085.37 | 5097.56 | 5109.75 | + 5121.94 | 5500.06 | 5512.24 | 5524.43 | 5536.62 | 5548.81 | 5561.01 | 5573.2 | + ------------------------------------------------------------------------------------------------------------------------ + + + gap of hw rx time, us: packets 128: + ------------------------------------------------------------------------------------------------------------------------ + 0 | 12.182 | 12.19 | 12.192 | 12.19 | 12.192 | 12.19 | 12.19 | + 12.184 | 12.19 | 12.192 | 378.114 | 12.19 | 12.192 | 12.19 | 12.192 | + 12.19 | 12.182 | 12.192 | 12.19 | 12.192 | 12.19 | 378.108 | 12.19 | + 12.19 | 12.184 | 12.19 | 12.192 | 12.19 | 12.19 | 12.192 | 12.19 | + 12.184 | 378.106 | 12.182 | 12.192 | 12.19 | 12.192 | 12.19 | 12.19 | + 12.184 | 12.19 | 12.192 | 12.19 | 378.116 | 12.19 | 12.19 | 12.192 | + 12.19 | 12.182 | 12.192 | 12.19 | 12.192 | 12.19 | 12.192 | 378.098 | + 12.19 | 12.184 | 12.19 | 12.192 | 12.19 | 12.19 | 12.192 | 12.19 | + 12.184 | 12.19 | 378.114 | 12.192 | 12.19 | 12.192 | 12.19 | 12.19 | + 12.184 | 12.19 | 12.192 | 12.19 | 12.19 | 378.108 | 12.19 | 12.192 | + 12.19 | 12.184 | 12.19 | 12.19 | 12.192 | 12.19 | 12.192 | 12.182 | + 378.122 | 12.184 | 12.19 | 12.192 | 12.19 | 12.19 | 12.192 | 12.19 | + 12.184 | 12.19 | 12.19 | 378.108 | 12.19 | 12.192 | 12.19 | 12.192 | + 12.19 | 12.182 | 12.192 | 12.19 | 12.192 | 12.19 | 378.098 | 12.192 | + 12.19 | 12.184 | 12.19 | 12.19 | 12.192 | 12.19 | 12.192 | 12.19 | + 12.182 | 378.124 | 12.182 | 12.192 | 12.19 | 12.19 | 12.192 | 12.19 | + ------------------------------------------------------------------------------------------------------------------------ + max val(#121) = 378.12us + min val(#1) = 12.18us + peak-to-peak = 365.94us + mean +- RMS = 43.88 +- 102.92 us + + eth2-prio3.txt: + hw rx time, us: packets 128: + relative abs time 301887630992 ns + first packet abs time 301887630992 ns + ------------------------------------------------------------------------------------------------------------------------ + 0 | 39.42 | 51.61 | 63.794 | 75.984 | 88.174 | 100.366 | 112.556 | + 124.748 | 499.998 | 512.19 | 524.38 | 536.562 | 548.754 | 560.944 | 573.136 | + 585.326 | 597.516 | 609.708 | 621.89 | 1000.01 | 1012.2 | 1024.39 | 1036.58 | + 1048.77 | 1060.96 | 1073.15 | 1085.33 | 1097.52 | 1109.71 | 1121.91 | 1500 | + 1512.19 | 1524.39 | 1536.58 | 1548.77 | 1560.95 | 1573.14 | 1585.33 | 1597.52 | + 1609.71 | 1621.9 | 2000.02 | 2012.21 | 2024.39 | 2036.58 | 2048.77 | 2060.97 | + 2073.16 | 2085.35 | 2097.54 | 2109.72 | 2121.91 | 2500.02 | 2512.21 | 2524.4 | + 2536.59 | 2548.78 | 2560.97 | 2573.15 | 2585.35 | 2597.54 | 2609.73 | 2621.92 | + 3000.02 | 3012.21 | 3024.4 | 3036.59 | 3048.77 | 3060.96 | 3073.15 | 3085.34 | + 3097.54 | 3109.73 | 3121.92 | 3500.04 | 3512.23 | 3524.41 | 3536.6 | 3548.8 | + 3560.99 | 3573.18 | 3585.37 | 3597.55 | 3609.74 | 3621.93 | 4000.03 | 4012.22 | + 4024.41 | 4036.6 | 4048.79 | 4060.99 | 4073.17 | 4085.36 | 4097.55 | 4109.74 | + 4121.93 | 4500.05 | 4512.24 | 4524.43 | 4536.61 | 4548.8 | 4560.99 | 4573.18 | + 4585.37 | 4597.56 | 4609.76 | 4621.94 | 5000.05 | 5012.23 | 5024.42 | 5036.61 | + 5048.8 | 5060.99 | 5073.18 | 5085.36 | 5097.56 | 5109.75 | 5121.94 | 5500.05 | + 5512.24 | 5524.43 | 5536.62 | 5548.82 | 5561 | 5573.19 | 5585.38 | 5597.57 | + ------------------------------------------------------------------------------------------------------------------------ + + + gap of hw rx time, us: packets 128: + ------------------------------------------------------------------------------------------------------------------------ + 0 | 39.42 | 12.19 | 12.184 | 12.19 | 12.19 | 12.192 | 12.19 | + 12.192 | 375.25 | 12.192 | 12.19 | 12.182 | 12.192 | 12.19 | 12.192 | + 12.19 | 12.19 | 12.192 | 12.182 | 378.124 | 12.182 | 12.19 | 12.192 | + 12.19 | 12.192 | 12.19 | 12.182 | 12.192 | 12.19 | 12.192 | 378.098 | + 12.19 | 12.192 | 12.19 | 12.192 | 12.182 | 12.192 | 12.19 | 12.19 | + 12.192 | 12.19 | 378.116 | 12.19 | 12.182 | 12.192 | 12.19 | 12.192 | + 12.19 | 12.19 | 12.192 | 12.182 | 12.192 | 378.106 | 12.192 | 12.19 | + 12.19 | 12.192 | 12.19 | 12.182 | 12.192 | 12.19 | 12.192 | 12.19 | + 378.1 | 12.19 | 12.19 | 12.192 | 12.182 | 12.192 | 12.19 | 12.19 | + 12.192 | 12.19 | 12.192 | 378.122 | 12.19 | 12.184 | 12.19 | 12.192 | + 12.19 | 12.192 | 12.19 | 12.182 | 12.192 | 12.19 | 378.1 | 12.19 | + 12.19 | 12.192 | 12.19 | 12.192 | 12.182 | 12.19 | 12.192 | 12.19 | + 12.192 | 378.114 | 12.19 | 12.192 | 12.182 | 12.192 | 12.19 | 12.19 | + 12.192 | 12.19 | 12.192 | 12.182 | 378.108 | 12.182 | 12.19 | 12.192 | + 12.19 | 12.19 | 12.192 | 12.182 | 12.192 | 12.19 | 12.19 | 378.116 | + 12.19 | 12.192 | 12.19 | 12.192 | 12.182 | 12.19 | 12.192 | 12.19 | + ------------------------------------------------------------------------------------------------------------------------ + max val(#20) = 378.12us + min val(#12) = 12.18us + peak-to-peak = 365.94us + mean +- RMS = 44.08 +- 102.81 us EST Testing in Switch mode -------------------------- @@ -1445,22 +1445,22 @@ AM64-SK is always the receiver in these tests. .. note:: - On the three devices, all interfaces taking part in this EST testing - MUST be a part of the same VLAN network. This is necessary to ensure - that the packets transferred carry priorities, which enables intermediate - devices (switch in this case) to enforce the schedule on them based on the - priorities. + On the three devices, all interfaces taking part in this EST testing + MUST be a part of the same VLAN network. This is necessary to ensure + that the packets transferred carry priorities, which enables intermediate + devices (switch in this case) to enforce the schedule on them based on the + priorities. - In switch mode, both ports of the device that make up the switch are - configured to follow the same EST schedule, though only 1 port - (egress port) implements it during the test. This has been done to - simplify the testing process, making the ports on the switch sender - agnostic. + In switch mode, both ports of the device that make up the switch are + configured to follow the same EST schedule, though only 1 port + (egress port) implements it during the test. This has been done to + simplify the testing process, making the ports on the switch sender + agnostic. - Scheduling is done only on the switch while the sender simply sends - packets with priorities assigned to them. On the receiver, we see the - inter-packet gaps to observe if the switch has correctly scheduled the - packets based on their priority. + Scheduling is done only on the switch while the sender simply sends + packets with priorities assigned to them. On the receiver, we see the + inter-packet gaps to observe if the switch has correctly scheduled the + packets based on their priority. AM625-SK acting as a switch and implementing EST schedule ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -1471,238 +1471,238 @@ Connect eth0 of AM625-SK to J7VCL and eth1 of AM625-SK to eth0 of AM64-SK. 1. Run the following command on AM625-SK: -:: - - #!/bin/sh - - ifconfig eth0 down - ifconfig eth1 down - ethtool -L eth0 tx 4 - ethtool -L eth1 tx 4 - ethtool --set-priv-flags eth0 p0-rx-ptype-rrobin off - ethtool --set-priv-flags eth1 p0-rx-ptype-rrobin off - - devlink dev param set platform/8000000.ethernet name switch_mode value true cmode runtime - ip link add name br0 type bridge - ip link set dev br0 type bridge ageing_time 1000 - ip link set dev eth0 up - ip link set dev eth1 up - sleep 10 - ip link set dev eth0 master br0 - ip link set dev eth1 master br0 - ip link set dev br0 up - ip link set dev br0 type bridge vlan_filtering 1 - bridge vlan add dev br0 vid 1 self - bridge vlan add dev br0 vid 1 pvid untagged self - bridge vlan add dev eth0 vid 100 master - bridge vlan add dev eth1 vid 100 master - - #sync system time to CPSW CPTS - phc2sys -s CLOCK_REALTIME -c eth0 -m -O 0 > /dev/null & - - #calc base_time as now + 2min, give it time to sync - base=$(((`date +%s` + 2 * 60)*1000000000)) - - tc qdisc replace dev eth0 parent root handle 100 taprio \ - num_tc 3 \ - map 0 0 1 2 0 0 0 0 0 0 0 0 0 0 0 0 \ - queues 1@0 1@1 1@2 \ - base-time $base \ - sched-entry S 4 10000 \ - sched-entry S 2 30000 \ - sched-entry S 1 60000 \ - flags 2 - tc qdisc replace dev eth1 parent root handle 100 taprio \ - num_tc 3 \ - map 0 0 1 2 0 0 0 0 0 0 0 0 0 0 0 0 \ - queues 1@0 1@1 1@2 \ - base-time $base \ - sched-entry S 4 10000 \ - sched-entry S 2 30000 \ - sched-entry S 1 60000 \ - flags 2 - - # Wait for 2 minutes for sync to complete - sleep 120 - - echo "Switch setup completed." +.. code:: console + + #!/bin/sh + + ifconfig eth0 down + ifconfig eth1 down + ethtool -L eth0 tx 4 + ethtool -L eth1 tx 4 + ethtool --set-priv-flags eth0 p0-rx-ptype-rrobin off + ethtool --set-priv-flags eth1 p0-rx-ptype-rrobin off + + devlink dev param set platform/8000000.ethernet name switch_mode value true cmode runtime + ip link add name br0 type bridge + ip link set dev br0 type bridge ageing_time 1000 + ip link set dev eth0 up + ip link set dev eth1 up + sleep 10 + ip link set dev eth0 master br0 + ip link set dev eth1 master br0 + ip link set dev br0 up + ip link set dev br0 type bridge vlan_filtering 1 + bridge vlan add dev br0 vid 1 self + bridge vlan add dev br0 vid 1 pvid untagged self + bridge vlan add dev eth0 vid 100 master + bridge vlan add dev eth1 vid 100 master + + #sync system time to CPSW CPTS + phc2sys -s CLOCK_REALTIME -c eth0 -m -O 0 > /dev/null & + + #calc base_time as now + 2min, give it time to sync + base=$(((`date +%s` + 2 * 60)*1000000000)) + + tc qdisc replace dev eth0 parent root handle 100 taprio \ + num_tc 3 \ + map 0 0 1 2 0 0 0 0 0 0 0 0 0 0 0 0 \ + queues 1@0 1@1 1@2 \ + base-time $base \ + sched-entry S 4 10000 \ + sched-entry S 2 30000 \ + sched-entry S 1 60000 \ + flags 2 + tc qdisc replace dev eth1 parent root handle 100 taprio \ + num_tc 3 \ + map 0 0 1 2 0 0 0 0 0 0 0 0 0 0 0 0 \ + queues 1@0 1@1 1@2 \ + base-time $base \ + sched-entry S 4 10000 \ + sched-entry S 2 30000 \ + sched-entry S 1 60000 \ + flags 2 + + # Wait for 2 minutes for sync to complete + sleep 120 + + echo "Switch setup completed." 2. Wait for the message "Switch setup completed." to be displayed on AM625-SK and then run the following on AM64-SK: -:: +.. code:: sh - #!/bin/sh + #!/bin/sh - ip link add link eth0 name eth0.100 type vlan id 100 - while sleep 1; do ./plget -m rx-lat -f ipgap -n 128 -i eth0.100 -t ptpl2 -f hwts; done + ip link add link eth0 name eth0.100 type vlan id 100 + while sleep 1; do ./plget -m rx-lat -f ipgap -n 128 -i eth0.100 -t ptpl2 -f hwts; done 3. Next, run the following on J7VCL: -:: +.. code:: sh - #!/bin/sh + #!/bin/sh - # J7VCL CPSW5G Port-1 + # J7VCL CPSW5G Port-1 - ip link add link eth1 name eth1.100 type vlan id 100 - ip link set eth1.100 type vlan egress 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 - sleep 10 + ip link add link eth1 name eth1.100 type vlan id 100 + ip link set eth1.100 type vlan egress 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 + sleep 10 - # NOTE: Replace ac:1f:0f:83:f0:0c with the MAC address of CPSW3G port-1 of AM64-SK - ./plget -i eth1.100 -m pkt-gen -p 3 -t ptpl2 -n 128 -a ac:1f:0f:83:f0:0c -l 80 - sleep 5 - ./plget -i eth1.100 -m pkt-gen -p 2 -t ptpl2 -n 128 -a ac:1f:0f:83:f0:0c -l 80 - sleep 5 - ./plget -i eth1.100 -m pkt-gen -p 1 -t ptpl2 -n 128 -a ac:1f:0f:83:f0:0c -l 80 + # NOTE: Replace ac:1f:0f:83:f0:0c with the MAC address of CPSW3G port-1 of AM64-SK + ./plget -i eth1.100 -m pkt-gen -p 3 -t ptpl2 -n 128 -a ac:1f:0f:83:f0:0c -l 80 + sleep 5 + ./plget -i eth1.100 -m pkt-gen -p 2 -t ptpl2 -n 128 -a ac:1f:0f:83:f0:0c -l 80 + sleep 5 + ./plget -i eth1.100 -m pkt-gen -p 1 -t ptpl2 -n 128 -a ac:1f:0f:83:f0:0c -l 80 **Results on AM64-SK:** -:: - - Priority 3 Output: - hw rx time, us: packets 128: - relative abs time 634005684835 ns - first packet abs time 634005684835 ns - ------------------------------------------------------------------------------------------------------------------------ - 0 | 9.272 | 99.992 | 100.856 | 101.72 | 102.584 | 103.448 | 104.312 | - 105.176 | 106.04 | 106.904 | 107.768 | 108.632 | 109.496 | 110.36 | 200 | - 200.864 | 201.728 | 202.592 | 203.456 | 204.32 | 205.184 | 206.048 | 206.912 | - 207.776 | 208.64 | 209.504 | 210.368 | 211.232 | 300 | 300.864 | 301.728 | - 302.592 | 303.456 | 304.32 | 305.184 | 306.048 | 306.912 | 307.776 | 308.64 | - 309.504 | 310.368 | 311.232 | 400 | 400.864 | 401.728 | 402.592 | 403.456 | - 404.32 | 405.184 | 406.048 | 406.912 | 407.776 | 408.64 | 409.504 | 410.368 | - 411.232 | 500 | 500.864 | 501.728 | 502.592 | 503.456 | 504.32 | 505.184 | - 506.048 | 506.912 | 507.776 | 508.64 | 509.504 | 510.368 | 511.232 | 600 | - 600.864 | 601.728 | 602.592 | 603.456 | 604.32 | 605.184 | 606.048 | 606.912 | - 607.776 | 608.64 | 609.504 | 610.368 | 611.232 | 700 | 700.864 | 701.728 | - 702.592 | 703.456 | 704.32 | 705.184 | 706.048 | 706.912 | 707.776 | 708.64 | - 709.504 | 710.368 | 711.232 | 800 | 800.864 | 801.728 | 802.592 | 803.456 | - 804.32 | 805.184 | 806.048 | 806.912 | 807.776 | 808.64 | 809.504 | 810.368 | - 811.232 | 900 | 900.864 | 901.728 | 902.592 | 903.456 | 904.32 | 905.184 | - 906.048 | 906.912 | 907.776 | 908.64 | 909.504 | 910.368 | 911.232 | 1000 | - ------------------------------------------------------------------------------------------------------------------------ - - - gap of hw rx time, us: packets 128: - ------------------------------------------------------------------------------------------------------------------------ - 0 | 9.272 | 90.72 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | - 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 89.64 | - 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | - 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 88.768 | 0.864 | 0.864 | - 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | - 0.864 | 0.864 | 0.864 | 88.768 | 0.864 | 0.864 | 0.864 | 0.864 | - 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | - 0.864 | 88.768 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | - 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 88.768 | - 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | - 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 88.768 | 0.864 | 0.864 | - 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | - 0.864 | 0.864 | 0.864 | 88.768 | 0.864 | 0.864 | 0.864 | 0.864 | - 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | - 0.864 | 88.768 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | - 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 88.768 | - ------------------------------------------------------------------------------------------------------------------------ - max val(#2) = 90.72us - min val(#3) = 0.86us - peak-to-peak = 89.86us - mean +- RMS = 7.87 +- 23.74 us - - Priority 2 Output: - hw rx time, us: packets 128: - relative abs time 639049719739 ns - first packet abs time 639049719739 ns - ------------------------------------------------------------------------------------------------------------------------ - 0 | 24.072 | 100 | 100.864 | 101.728 | 102.592 | 103.456 | 104.32 | - 105.184 | 106.048 | 106.912 | 107.776 | 108.64 | 110.904 | 117.664 | 124.352 | - 200 | 200.864 | 201.728 | 202.592 | 203.456 | 204.32 | 205.184 | 206.048 | - 206.912 | 207.776 | 208.64 | 209.504 | 212.136 | 218.816 | 225.568 | 300.008 | - 300.872 | 301.736 | 302.6 | 303.464 | 304.328 | 305.192 | 306.056 | 306.92 | - 307.784 | 308.648 | 309.512 | 313.248 | 320.008 | 326.92 | 400 | 400.864 | - 401.728 | 402.592 | 403.456 | 404.32 | 405.184 | 406.048 | 406.912 | 407.776 | - 408.64 | 409.504 | 416.928 | 423.944 | 500.008 | 500.872 | 501.736 | 502.6 | - 503.464 | 504.328 | 505.192 | 506.056 | 506.92 | 507.784 | 508.648 | 509.512 | - 511.496 | 518.288 | 525.008 | 600.008 | 600.872 | 601.736 | 602.6 | 603.464 | - 604.328 | 605.192 | 606.056 | 606.92 | 607.784 | 608.648 | 609.512 | 612.36 | - 619.232 | 626.088 | 700 | 700.864 | 701.728 | 702.592 | 703.456 | 704.32 | - 705.184 | 706.048 | 706.912 | 707.776 | 708.64 | 709.504 | 713.744 | 720.504 | - 727.288 | 800 | 800.864 | 801.728 | 802.592 | 803.456 | 804.32 | 805.184 | - 806.048 | 806.912 | 807.776 | 808.64 | 809.504 | 814.496 | 821.216 | 827.952 | - 900 | 900.864 | 901.728 | 902.592 | 903.456 | 904.32 | 905.184 | 906.048 | - ------------------------------------------------------------------------------------------------------------------------ - - - gap of hw rx time, us: packets 128: - ------------------------------------------------------------------------------------------------------------------------ - 0 | 24.072 | 75.928 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | - 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 2.264 | 6.76 | 6.688 | - 75.648 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | - 0.864 | 0.864 | 0.864 | 0.864 | 2.632 | 6.68 | 6.752 | 74.44 | - 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | - 0.864 | 0.864 | 0.864 | 3.736 | 6.76 | 6.912 | 73.08 | 0.864 | - 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | - 0.864 | 0.864 | 7.424 | 7.016 | 76.064 | 0.864 | 0.864 | 0.864 | - 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | - 1.984 | 6.792 | 6.72 | 75 | 0.864 | 0.864 | 0.864 | 0.864 | - 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 2.848 | - 6.872 | 6.856 | 73.912 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | - 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 4.24 | 6.76 | - 6.784 | 72.712 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | - 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 4.992 | 6.72 | 6.736 | - 72.048 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | - ------------------------------------------------------------------------------------------------------------------------ - max val(#60) = 76.06us - min val(#3) = 0.86us - peak-to-peak = 75.20us - mean +- RMS = 7.13 +- 18.77 us - - Priority 1 Output: - hw rx time, us: packets 128: - relative abs time 644089781307 ns - first packet abs time 644089781307 ns - ------------------------------------------------------------------------------------------------------------------------ - 0 | 35.088 | 45.088 | 53.328 | 93.344 | 94.208 | 95.072 | 95.936 | - 96.8 | 97.664 | 101.88 | 108.664 | 115.384 | 122.16 | 128.912 | 135.624 | - 142.488 | 149.248 | 193.344 | 194.208 | 195.072 | 195.936 | 196.8 | 197.664 | - 198.528 | 203.432 | 210.392 | 217.096 | 223.84 | 230.592 | 237.28 | 244.032 | - 250.832 | 293.344 | 294.208 | 295.072 | 295.936 | 296.8 | 297.664 | 298.528 | - 304.864 | 311.808 | 318.832 | 325.616 | 332.328 | 339.04 | 345.776 | 352.456 | - 393.344 | 394.208 | 395.072 | 395.936 | 396.8 | 397.664 | 399.84 | 406.552 | - 413.408 | 420.256 | 429.72 | 436.568 | 443.232 | 450 | 493.344 | 494.208 | - 495.072 | 495.936 | 496.8 | 497.664 | 498.528 | 503.968 | 510.656 | 517.408 | - 524.272 | 531.312 | 538.016 | 544.776 | 551.52 | 593.344 | 594.208 | 595.072 | - 595.936 | 596.8 | 597.664 | 598.608 | 605.272 | 611.984 | 618.76 | 625.44 | - 632.32 | 639.168 | 645.856 | 652.576 | 693.344 | 694.208 | 695.072 | 695.936 | - 696.8 | 697.664 | 699.88 | 706.608 | 713.304 | 719.992 | 726.664 | 733.416 | - 740.28 | 747.424 | 793.344 | 794.208 | 795.072 | 795.936 | 796.8 | 797.664 | - 798.528 | 801.808 | 808.496 | 815.216 | 821.904 | 828.608 | 835.376 | 842.104 | - 848.968 | 893.344 | 894.208 | 895.072 | 895.936 | 896.8 | 897.664 | 898.528 | - ------------------------------------------------------------------------------------------------------------------------ - - - gap of hw rx time, us: packets 128: - ------------------------------------------------------------------------------------------------------------------------ - 0 | 35.088 | 10 | 8.24 | 40.016 | 0.864 | 0.864 | 0.864 | - 0.864 | 0.864 | 4.216 | 6.784 | 6.72 | 6.776 | 6.752 | 6.712 | - 6.864 | 6.76 | 44.096 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | - 0.864 | 4.904 | 6.96 | 6.704 | 6.744 | 6.752 | 6.688 | 6.752 | - 6.8 | 42.512 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | - 6.336 | 6.944 | 7.024 | 6.784 | 6.712 | 6.712 | 6.736 | 6.68 | - 40.888 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 2.176 | 6.712 | - 6.856 | 6.848 | 9.464 | 6.848 | 6.664 | 6.768 | 43.344 | 0.864 | - 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 5.44 | 6.688 | 6.752 | - 6.864 | 7.04 | 6.704 | 6.76 | 6.744 | 41.824 | 0.864 | 0.864 | - 0.864 | 0.864 | 0.864 | 0.944 | 6.664 | 6.712 | 6.776 | 6.68 | - 6.88 | 6.848 | 6.688 | 6.72 | 40.768 | 0.864 | 0.864 | 0.864 | - 0.864 | 0.864 | 2.216 | 6.728 | 6.696 | 6.688 | 6.672 | 6.752 | - 6.864 | 7.144 | 45.92 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | - 0.864 | 3.28 | 6.688 | 6.72 | 6.688 | 6.704 | 6.768 | 6.728 | - 6.864 | 44.376 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | - ------------------------------------------------------------------------------------------------------------------------ - max val(#106) = 45.92us - min val(#5) = 0.86us - peak-to-peak = 45.06us - mean +- RMS = 7.08 +- 10.60 us +.. code:: console + + Priority 3 Output: + hw rx time, us: packets 128: + relative abs time 634005684835 ns + first packet abs time 634005684835 ns + ------------------------------------------------------------------------------------------------------------------------ + 0 | 9.272 | 99.992 | 100.856 | 101.72 | 102.584 | 103.448 | 104.312 | + 105.176 | 106.04 | 106.904 | 107.768 | 108.632 | 109.496 | 110.36 | 200 | + 200.864 | 201.728 | 202.592 | 203.456 | 204.32 | 205.184 | 206.048 | 206.912 | + 207.776 | 208.64 | 209.504 | 210.368 | 211.232 | 300 | 300.864 | 301.728 | + 302.592 | 303.456 | 304.32 | 305.184 | 306.048 | 306.912 | 307.776 | 308.64 | + 309.504 | 310.368 | 311.232 | 400 | 400.864 | 401.728 | 402.592 | 403.456 | + 404.32 | 405.184 | 406.048 | 406.912 | 407.776 | 408.64 | 409.504 | 410.368 | + 411.232 | 500 | 500.864 | 501.728 | 502.592 | 503.456 | 504.32 | 505.184 | + 506.048 | 506.912 | 507.776 | 508.64 | 509.504 | 510.368 | 511.232 | 600 | + 600.864 | 601.728 | 602.592 | 603.456 | 604.32 | 605.184 | 606.048 | 606.912 | + 607.776 | 608.64 | 609.504 | 610.368 | 611.232 | 700 | 700.864 | 701.728 | + 702.592 | 703.456 | 704.32 | 705.184 | 706.048 | 706.912 | 707.776 | 708.64 | + 709.504 | 710.368 | 711.232 | 800 | 800.864 | 801.728 | 802.592 | 803.456 | + 804.32 | 805.184 | 806.048 | 806.912 | 807.776 | 808.64 | 809.504 | 810.368 | + 811.232 | 900 | 900.864 | 901.728 | 902.592 | 903.456 | 904.32 | 905.184 | + 906.048 | 906.912 | 907.776 | 908.64 | 909.504 | 910.368 | 911.232 | 1000 | + ------------------------------------------------------------------------------------------------------------------------ + + + gap of hw rx time, us: packets 128: + ------------------------------------------------------------------------------------------------------------------------ + 0 | 9.272 | 90.72 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | + 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 89.64 | + 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | + 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 88.768 | 0.864 | 0.864 | + 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | + 0.864 | 0.864 | 0.864 | 88.768 | 0.864 | 0.864 | 0.864 | 0.864 | + 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | + 0.864 | 88.768 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | + 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 88.768 | + 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | + 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 88.768 | 0.864 | 0.864 | + 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | + 0.864 | 0.864 | 0.864 | 88.768 | 0.864 | 0.864 | 0.864 | 0.864 | + 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | + 0.864 | 88.768 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | + 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 88.768 | + ------------------------------------------------------------------------------------------------------------------------ + max val(#2) = 90.72us + min val(#3) = 0.86us + peak-to-peak = 89.86us + mean +- RMS = 7.87 +- 23.74 us + + Priority 2 Output: + hw rx time, us: packets 128: + relative abs time 639049719739 ns + first packet abs time 639049719739 ns + ------------------------------------------------------------------------------------------------------------------------ + 0 | 24.072 | 100 | 100.864 | 101.728 | 102.592 | 103.456 | 104.32 | + 105.184 | 106.048 | 106.912 | 107.776 | 108.64 | 110.904 | 117.664 | 124.352 | + 200 | 200.864 | 201.728 | 202.592 | 203.456 | 204.32 | 205.184 | 206.048 | + 206.912 | 207.776 | 208.64 | 209.504 | 212.136 | 218.816 | 225.568 | 300.008 | + 300.872 | 301.736 | 302.6 | 303.464 | 304.328 | 305.192 | 306.056 | 306.92 | + 307.784 | 308.648 | 309.512 | 313.248 | 320.008 | 326.92 | 400 | 400.864 | + 401.728 | 402.592 | 403.456 | 404.32 | 405.184 | 406.048 | 406.912 | 407.776 | + 408.64 | 409.504 | 416.928 | 423.944 | 500.008 | 500.872 | 501.736 | 502.6 | + 503.464 | 504.328 | 505.192 | 506.056 | 506.92 | 507.784 | 508.648 | 509.512 | + 511.496 | 518.288 | 525.008 | 600.008 | 600.872 | 601.736 | 602.6 | 603.464 | + 604.328 | 605.192 | 606.056 | 606.92 | 607.784 | 608.648 | 609.512 | 612.36 | + 619.232 | 626.088 | 700 | 700.864 | 701.728 | 702.592 | 703.456 | 704.32 | + 705.184 | 706.048 | 706.912 | 707.776 | 708.64 | 709.504 | 713.744 | 720.504 | + 727.288 | 800 | 800.864 | 801.728 | 802.592 | 803.456 | 804.32 | 805.184 | + 806.048 | 806.912 | 807.776 | 808.64 | 809.504 | 814.496 | 821.216 | 827.952 | + 900 | 900.864 | 901.728 | 902.592 | 903.456 | 904.32 | 905.184 | 906.048 | + ------------------------------------------------------------------------------------------------------------------------ + + + gap of hw rx time, us: packets 128: + ------------------------------------------------------------------------------------------------------------------------ + 0 | 24.072 | 75.928 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | + 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 2.264 | 6.76 | 6.688 | + 75.648 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | + 0.864 | 0.864 | 0.864 | 0.864 | 2.632 | 6.68 | 6.752 | 74.44 | + 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | + 0.864 | 0.864 | 0.864 | 3.736 | 6.76 | 6.912 | 73.08 | 0.864 | + 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | + 0.864 | 0.864 | 7.424 | 7.016 | 76.064 | 0.864 | 0.864 | 0.864 | + 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | + 1.984 | 6.792 | 6.72 | 75 | 0.864 | 0.864 | 0.864 | 0.864 | + 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 2.848 | + 6.872 | 6.856 | 73.912 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | + 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 4.24 | 6.76 | + 6.784 | 72.712 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | + 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 4.992 | 6.72 | 6.736 | + 72.048 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | + ------------------------------------------------------------------------------------------------------------------------ + max val(#60) = 76.06us + min val(#3) = 0.86us + peak-to-peak = 75.20us + mean +- RMS = 7.13 +- 18.77 us + + Priority 1 Output: + hw rx time, us: packets 128: + relative abs time 644089781307 ns + first packet abs time 644089781307 ns + ------------------------------------------------------------------------------------------------------------------------ + 0 | 35.088 | 45.088 | 53.328 | 93.344 | 94.208 | 95.072 | 95.936 | + 96.8 | 97.664 | 101.88 | 108.664 | 115.384 | 122.16 | 128.912 | 135.624 | + 142.488 | 149.248 | 193.344 | 194.208 | 195.072 | 195.936 | 196.8 | 197.664 | + 198.528 | 203.432 | 210.392 | 217.096 | 223.84 | 230.592 | 237.28 | 244.032 | + 250.832 | 293.344 | 294.208 | 295.072 | 295.936 | 296.8 | 297.664 | 298.528 | + 304.864 | 311.808 | 318.832 | 325.616 | 332.328 | 339.04 | 345.776 | 352.456 | + 393.344 | 394.208 | 395.072 | 395.936 | 396.8 | 397.664 | 399.84 | 406.552 | + 413.408 | 420.256 | 429.72 | 436.568 | 443.232 | 450 | 493.344 | 494.208 | + 495.072 | 495.936 | 496.8 | 497.664 | 498.528 | 503.968 | 510.656 | 517.408 | + 524.272 | 531.312 | 538.016 | 544.776 | 551.52 | 593.344 | 594.208 | 595.072 | + 595.936 | 596.8 | 597.664 | 598.608 | 605.272 | 611.984 | 618.76 | 625.44 | + 632.32 | 639.168 | 645.856 | 652.576 | 693.344 | 694.208 | 695.072 | 695.936 | + 696.8 | 697.664 | 699.88 | 706.608 | 713.304 | 719.992 | 726.664 | 733.416 | + 740.28 | 747.424 | 793.344 | 794.208 | 795.072 | 795.936 | 796.8 | 797.664 | + 798.528 | 801.808 | 808.496 | 815.216 | 821.904 | 828.608 | 835.376 | 842.104 | + 848.968 | 893.344 | 894.208 | 895.072 | 895.936 | 896.8 | 897.664 | 898.528 | + ------------------------------------------------------------------------------------------------------------------------ + + + gap of hw rx time, us: packets 128: + ------------------------------------------------------------------------------------------------------------------------ + 0 | 35.088 | 10 | 8.24 | 40.016 | 0.864 | 0.864 | 0.864 | + 0.864 | 0.864 | 4.216 | 6.784 | 6.72 | 6.776 | 6.752 | 6.712 | + 6.864 | 6.76 | 44.096 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | + 0.864 | 4.904 | 6.96 | 6.704 | 6.744 | 6.752 | 6.688 | 6.752 | + 6.8 | 42.512 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | + 6.336 | 6.944 | 7.024 | 6.784 | 6.712 | 6.712 | 6.736 | 6.68 | + 40.888 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 2.176 | 6.712 | + 6.856 | 6.848 | 9.464 | 6.848 | 6.664 | 6.768 | 43.344 | 0.864 | + 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 5.44 | 6.688 | 6.752 | + 6.864 | 7.04 | 6.704 | 6.76 | 6.744 | 41.824 | 0.864 | 0.864 | + 0.864 | 0.864 | 0.864 | 0.944 | 6.664 | 6.712 | 6.776 | 6.68 | + 6.88 | 6.848 | 6.688 | 6.72 | 40.768 | 0.864 | 0.864 | 0.864 | + 0.864 | 0.864 | 2.216 | 6.728 | 6.696 | 6.688 | 6.672 | 6.752 | + 6.864 | 7.144 | 45.92 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | + 0.864 | 3.28 | 6.688 | 6.72 | 6.688 | 6.704 | 6.768 | 6.728 | + 6.864 | 44.376 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | + ------------------------------------------------------------------------------------------------------------------------ + max val(#106) = 45.92us + min val(#5) = 0.86us + peak-to-peak = 45.06us + mean +- RMS = 7.08 +- 10.60 us J7VCL acting as a switch and implementing EST schedule ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -1713,237 +1713,237 @@ Connect eth1 of J7VCL to AM625-SK and eth2 of J7VCL to eth0 of AM64-SK. 1. Run the following command on J7VCL: -:: - - #!/bin/sh - - ifconfig eth1 down - ifconfig eth2 down - ifconfig eth3 down - ifconfig eth4 down - ethtool -L eth1 tx 4 - ethtool -L eth2 tx 4 - ethtool --set-priv-flags eth1 p0-rx-ptype-rrobin off - ethtool --set-priv-flags eth2 p0-rx-ptype-rrobin off - - devlink dev param set platform/c000000.ethernet name switch_mode value true cmode runtime - ip link add name br0 type bridge - ip link set dev br0 type bridge ageing_time 1000 - ip link set dev eth1 up - ip link set dev eth2 up - sleep 10 - ip link set dev eth1 master br0 - ip link set dev eth2 master br0 - ip link set dev br0 up - ip link set dev br0 type bridge vlan_filtering 1 - bridge vlan add dev br0 vid 1 self - bridge vlan add dev br0 vid 1 pvid untagged self - bridge vlan add dev eth1 vid 100 master - bridge vlan add dev eth2 vid 100 master - - #sync system time to CPSW CPTS - phc2sys -s CLOCK_REALTIME -c eth1 -m -O 0 > /dev/null & - - #calc base_time as now + 2min, give it time to sync - base=$(((`date +%s` + 2 * 60)*1000000000)) - - tc qdisc replace dev eth1 parent root handle 100 taprio \ - num_tc 3 \ - map 0 0 1 2 0 0 0 0 0 0 0 0 0 0 0 0 \ - queues 1@1 1@2 1@3 \ - base-time $base \ - sched-entry S 4 10000 \ - sched-entry S 2 30000 \ - sched-entry S 1 60000 \ - flags 2 - tc qdisc replace dev eth2 parent root handle 100 taprio \ - num_tc 3 \ - map 0 0 1 2 0 0 0 0 0 0 0 0 0 0 0 0 \ - queues 1@1 1@2 1@3 \ - base-time $base \ - sched-entry S 4 10000 \ - sched-entry S 2 30000 \ - sched-entry S 1 60000 \ - flags 2 - - # Wait for 2 minutes for sync to complete - sleep 120 - - echo "Switch setup completed." +.. code:: sh + + #!/bin/sh + + ifconfig eth1 down + ifconfig eth2 down + ifconfig eth3 down + ifconfig eth4 down + ethtool -L eth1 tx 4 + ethtool -L eth2 tx 4 + ethtool --set-priv-flags eth1 p0-rx-ptype-rrobin off + ethtool --set-priv-flags eth2 p0-rx-ptype-rrobin off + + devlink dev param set platform/c000000.ethernet name switch_mode value true cmode runtime + ip link add name br0 type bridge + ip link set dev br0 type bridge ageing_time 1000 + ip link set dev eth1 up + ip link set dev eth2 up + sleep 10 + ip link set dev eth1 master br0 + ip link set dev eth2 master br0 + ip link set dev br0 up + ip link set dev br0 type bridge vlan_filtering 1 + bridge vlan add dev br0 vid 1 self + bridge vlan add dev br0 vid 1 pvid untagged self + bridge vlan add dev eth1 vid 100 master + bridge vlan add dev eth2 vid 100 master + + #sync system time to CPSW CPTS + phc2sys -s CLOCK_REALTIME -c eth1 -m -O 0 > /dev/null & + + #calc base_time as now + 2min, give it time to sync + base=$(((`date +%s` + 2 * 60)*1000000000)) + + tc qdisc replace dev eth1 parent root handle 100 taprio \ + num_tc 3 \ + map 0 0 1 2 0 0 0 0 0 0 0 0 0 0 0 0 \ + queues 1@1 1@2 1@3 \ + base-time $base \ + sched-entry S 4 10000 \ + sched-entry S 2 30000 \ + sched-entry S 1 60000 \ + flags 2 + tc qdisc replace dev eth2 parent root handle 100 taprio \ + num_tc 3 \ + map 0 0 1 2 0 0 0 0 0 0 0 0 0 0 0 0 \ + queues 1@1 1@2 1@3 \ + base-time $base \ + sched-entry S 4 10000 \ + sched-entry S 2 30000 \ + sched-entry S 1 60000 \ + flags 2 + + # Wait for 2 minutes for sync to complete + sleep 120 + + echo "Switch setup completed." 2. Wait for the message "Switch setup completed." to be displayed on J7VCL and then run the following on AM64-SK: -:: +.. code:: sh - #!/bin/sh + #!/bin/sh - ip link add link eth0 name eth0.100 type vlan id 100 - while sleep 1; do ./plget -m rx-lat -f ipgap -n 128 -i eth0.100 -t ptpl2 -f hwts; done + ip link add link eth0 name eth0.100 type vlan id 100 + while sleep 1; do ./plget -m rx-lat -f ipgap -n 128 -i eth0.100 -t ptpl2 -f hwts; done 3. Next, run the following on AM625-SK: -:: +.. code:: console - #!/bin/sh + #!/bin/sh - # AM625-SK CPSW3G Port-1 + # AM625-SK CPSW3G Port-1 - ip link add link eth0 name eth0.100 type vlan id 100 - ip link set eth0.100 type vlan egress 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 - sleep 10 + ip link add link eth0 name eth0.100 type vlan id 100 + ip link set eth0.100 type vlan egress 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 + sleep 10 - # NOTE: Replace 70:ff:76:1d:9c:32 with the MAC address of CPSW5G port-1 of J7VCL - ./plget -i eth0.100 -m pkt-gen -p 3 -t ptpl2 -n 128 -a 70:ff:76:1d:a0:1f -l 80 - sleep 5 - ./plget -i eth0.100 -m pkt-gen -p 2 -t ptpl2 -n 128 -a 70:ff:76:1d:a0:1f -l 80 - sleep 5 - ./plget -i eth0.100 -m pkt-gen -p 1 -t ptpl2 -n 128 -a 70:ff:76:1d:a0:1f -l 80 + # NOTE: Replace 70:ff:76:1d:9c:32 with the MAC address of CPSW5G port-1 of J7VCL + ./plget -i eth0.100 -m pkt-gen -p 3 -t ptpl2 -n 128 -a 70:ff:76:1d:a0:1f -l 80 + sleep 5 + ./plget -i eth0.100 -m pkt-gen -p 2 -t ptpl2 -n 128 -a 70:ff:76:1d:a0:1f -l 80 + sleep 5 + ./plget -i eth0.100 -m pkt-gen -p 1 -t ptpl2 -n 128 -a 70:ff:76:1d:a0:1f -l 80 **Results on AM64-SK:** -:: - - Priority 3 Output: - hw rx time, us: packets 128: - relative abs time 422947260643 ns - first packet abs time 422947260643 ns - ------------------------------------------------------------------------------------------------------------------------ - 0 | 0.864 | 1.728 | 2.592 | 3.456 | 4.32 | 5.182 | 99.998 | - 100.862 | 101.726 | 102.59 | 103.454 | 104.318 | 105.182 | 106.046 | 106.91 | - 107.774 | 108.638 | 109.5 | 110.366 | 111.228 | 200.004 | 200.868 | 201.732 | - 202.596 | 203.46 | 204.324 | 205.188 | 206.052 | 206.916 | 207.78 | 208.644 | - 209.508 | 210.372 | 211.236 | 300.01 | 300.874 | 301.738 | 302.602 | 303.466 | - 304.33 | 305.194 | 306.058 | 306.922 | 307.786 | 308.65 | 309.514 | 310.378 | - 311.242 | 400.002 | 400.866 | 401.73 | 402.592 | 403.456 | 404.32 | 405.184 | - 406.048 | 406.912 | 407.776 | 408.64 | 409.504 | 410.368 | 411.232 | 500.008 | - 500.872 | 501.736 | 502.6 | 503.464 | 504.328 | 505.192 | 506.056 | 506.92 | - 507.782 | 508.646 | 509.51 | 510.374 | 511.238 | 600.014 | 600.878 | 601.742 | - 602.606 | 603.47 | 604.334 | 605.198 | 606.062 | 606.926 | 607.79 | 608.654 | - 609.518 | 610.382 | 611.246 | 700.004 | 700.868 | 701.732 | 702.596 | 703.46 | - 704.324 | 705.188 | 706.052 | 706.916 | 707.78 | 708.636 | 709.5 | 710.364 | - 711.228 | 800.012 | 800.874 | 801.738 | 802.602 | 803.466 | 804.33 | 805.194 | - 806.058 | 806.922 | 807.786 | 808.65 | 809.514 | 810.378 | 811.242 | 900.018 | - 900.882 | 901.746 | 902.61 | 903.474 | 904.338 | 905.2 | 906.064 | 906.928 | - ------------------------------------------------------------------------------------------------------------------------ - - - gap of hw rx time, us: packets 128: - ------------------------------------------------------------------------------------------------------------------------ - 0 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.862 | 94.816 | - 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | - 0.864 | 0.864 | 0.862 | 0.866 | 0.862 | 88.776 | 0.864 | 0.864 | - 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | - 0.864 | 0.864 | 0.864 | 88.774 | 0.864 | 0.864 | 0.864 | 0.864 | - 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | - 0.864 | 88.76 | 0.864 | 0.864 | 0.862 | 0.864 | 0.864 | 0.864 | - 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 88.776 | - 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | - 0.862 | 0.864 | 0.864 | 0.864 | 0.864 | 88.776 | 0.864 | 0.864 | - 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | - 0.864 | 0.864 | 0.864 | 88.758 | 0.864 | 0.864 | 0.864 | 0.864 | - 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.856 | 0.864 | 0.864 | - 0.864 | 88.784 | 0.862 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | - 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 88.776 | - 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.862 | 0.864 | 0.864 | - ------------------------------------------------------------------------------------------------------------------------ - max val(#7) = 94.82us - min val(#101) = 0.86us - peak-to-peak = 93.96us - mean +- RMS = 7.14 +- 22.74 us - - Priority 2 Output: - hw rx time, us: packets 128: - relative abs time 428019245645 ns - first packet abs time 428019245645 ns - ------------------------------------------------------------------------------------------------------------------------ - 0 | 0.864 | 1.728 | 26.91 | 100.006 | 100.87 | 101.734 | 102.598 | - 103.462 | 104.326 | 105.19 | 106.054 | 106.918 | 107.782 | 108.646 | 109.51 | - 110.374 | 111.238 | 112.102 | 112.966 | 116.694 | 121.972 | 127.54 | 199.99 | - 200.852 | 201.716 | 202.58 | 203.444 | 204.308 | 205.172 | 206.036 | 206.9 | - 207.764 | 208.628 | 209.492 | 210.356 | 211.22 | 212.084 | 214.692 | 221.778 | - 227.09 | 299.996 | 300.86 | 301.724 | 302.588 | 303.452 | 304.316 | 305.178 | - 306.042 | 306.906 | 307.77 | 308.634 | 309.498 | 310.362 | 311.226 | 312.09 | - 313.714 | 319.034 | 324.37 | 329.608 | 400.002 | 400.866 | 401.73 | 402.594 | - 403.458 | 404.322 | 405.186 | 406.05 | 406.914 | 407.778 | 408.642 | 409.504 | - 410.368 | 411.232 | 412.096 | 415.776 | 421.152 | 426.56 | 500.008 | 500.872 | - 501.736 | 502.6 | 503.464 | 504.328 | 505.192 | 506.056 | 506.92 | 507.784 | - 508.648 | 509.512 | 510.376 | 511.24 | 512.104 | 513.28 | 518.79 | 524.406 | - 529.726 | 599.998 | 600.862 | 601.726 | 602.59 | 603.454 | 604.318 | 605.182 | - 606.046 | 606.91 | 607.774 | 608.638 | 609.502 | 610.366 | 611.23 | 612.094 | - 615.838 | 621.172 | 626.492 | 700.006 | 700.87 | 701.734 | 702.598 | 703.46 | - 704.324 | 705.188 | 706.052 | 706.916 | 707.78 | 708.644 | 709.508 | 710.372 | - ------------------------------------------------------------------------------------------------------------------------ - - - gap of hw rx time, us: packets 128: - ------------------------------------------------------------------------------------------------------------------------ - 0 | 0.864 | 0.864 | 25.182 | 73.096 | 0.864 | 0.864 | 0.864 | - 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | - 0.864 | 0.864 | 0.864 | 0.864 | 3.728 | 5.278 | 5.568 | 72.45 | - 0.862 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | - 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 2.608 | 7.086 | - 5.312 | 72.906 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.862 | - 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | - 1.624 | 5.32 | 5.336 | 5.238 | 70.394 | 0.864 | 0.864 | 0.864 | - 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.862 | - 0.864 | 0.864 | 0.864 | 3.68 | 5.376 | 5.408 | 73.448 | 0.864 | - 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | - 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 1.176 | 5.51 | 5.616 | - 5.32 | 70.272 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | - 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | - 3.744 | 5.334 | 5.32 | 73.514 | 0.864 | 0.864 | 0.864 | 0.862 | - 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | - ------------------------------------------------------------------------------------------------------------------------ - max val(#115) = 73.51us - min val(#24) = 0.86us - peak-to-peak = 72.65us - mean +- RMS = 5.59 +- 16.32 us - - Priority 1 Output: - hw rx time, us: packets 128: - relative abs time 433075257051 ns - first packet abs time 433075257051 ns - ------------------------------------------------------------------------------------------------------------------------ - 0 | 14.24 | 21.126 | 44.436 | 52.716 | 93.352 | 94.216 | 95.08 | - 95.944 | 96.808 | 97.672 | 98.536 | 99.4 | 100.262 | 101.126 | 106.382 | - 111.638 | 116.998 | 122.42 | 127.86 | 133.5 | 138.924 | 144.186 | 150.002 | - 193.358 | 194.222 | 195.086 | 195.95 | 196.814 | 197.678 | 198.542 | 199.406 | - 200.27 | 205.444 | 210.74 | 216.268 | 221.556 | 226.89 | 232.266 | 238.05 | - 243.306 | 248.688 | 293.348 | 294.212 | 295.076 | 295.94 | 296.804 | 297.668 | - 298.532 | 299.396 | 300.26 | 302.932 | 308.54 | 314.114 | 319.57 | 325.122 | - 330.512 | 335.944 | 341.264 | 346.616 | 351.934 | 393.362 | 394.226 | 395.09 | - 395.946 | 396.81 | 397.674 | 398.538 | 399.402 | 401.018 | 406.578 | 412.306 | - 417.904 | 423.32 | 428.672 | 433.912 | 439.334 | 444.686 | 450.03 | 493.346 | - 494.21 | 495.074 | 495.938 | 496.802 | 497.666 | 498.528 | 499.392 | 500.256 | - 504.584 | 509.904 | 515.264 | 520.726 | 526.07 | 531.462 | 536.83 | 542.388 | - 547.78 | 553.172 | 593.352 | 594.216 | 595.08 | 595.944 | 596.808 | 597.672 | - 598.536 | 599.4 | 601.624 | 606.846 | 612.254 | 617.606 | 622.908 | 628.668 | - 633.98 | 639.244 | 644.586 | 649.834 | 693.358 | 694.222 | 695.086 | 695.95 | - 696.814 | 697.678 | 698.542 | 699.406 | 700.27 | 704.27 | 709.572 | 715.14 | - ------------------------------------------------------------------------------------------------------------------------ - - - gap of hw rx time, us: packets 128: - ------------------------------------------------------------------------------------------------------------------------ - 0 | 14.24 | 6.886 | 23.31 | 8.28 | 40.636 | 0.864 | 0.864 | - 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.862 | 0.864 | 5.256 | - 5.256 | 5.36 | 5.422 | 5.44 | 5.64 | 5.424 | 5.262 | 5.816 | - 43.356 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | - 0.864 | 5.174 | 5.296 | 5.528 | 5.288 | 5.334 | 5.376 | 5.784 | - 5.256 | 5.382 | 44.66 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | - 0.864 | 0.864 | 0.864 | 2.672 | 5.608 | 5.574 | 5.456 | 5.552 | - 5.39 | 5.432 | 5.32 | 5.352 | 5.318 | 41.428 | 0.864 | 0.864 | - 0.856 | 0.864 | 0.864 | 0.864 | 0.864 | 1.616 | 5.56 | 5.728 | - 5.598 | 5.416 | 5.352 | 5.24 | 5.422 | 5.352 | 5.344 | 43.316 | - 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.862 | 0.864 | 0.864 | - 4.328 | 5.32 | 5.36 | 5.462 | 5.344 | 5.392 | 5.368 | 5.558 | - 5.392 | 5.392 | 40.18 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | - 0.864 | 0.864 | 2.224 | 5.222 | 5.408 | 5.352 | 5.302 | 5.76 | - 5.312 | 5.264 | 5.342 | 5.248 | 43.524 | 0.864 | 0.864 | 0.864 | - 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 4 | 5.302 | 5.568 | - ------------------------------------------------------------------------------------------------------------------------ - max val(#42) = 44.66us - min val(#64) = 0.86us - peak-to-peak = 43.80us - mean +- RMS = 5.63 +- 9.39 us +.. code:: console + + Priority 3 Output: + hw rx time, us: packets 128: + relative abs time 422947260643 ns + first packet abs time 422947260643 ns + ------------------------------------------------------------------------------------------------------------------------ + 0 | 0.864 | 1.728 | 2.592 | 3.456 | 4.32 | 5.182 | 99.998 | + 100.862 | 101.726 | 102.59 | 103.454 | 104.318 | 105.182 | 106.046 | 106.91 | + 107.774 | 108.638 | 109.5 | 110.366 | 111.228 | 200.004 | 200.868 | 201.732 | + 202.596 | 203.46 | 204.324 | 205.188 | 206.052 | 206.916 | 207.78 | 208.644 | + 209.508 | 210.372 | 211.236 | 300.01 | 300.874 | 301.738 | 302.602 | 303.466 | + 304.33 | 305.194 | 306.058 | 306.922 | 307.786 | 308.65 | 309.514 | 310.378 | + 311.242 | 400.002 | 400.866 | 401.73 | 402.592 | 403.456 | 404.32 | 405.184 | + 406.048 | 406.912 | 407.776 | 408.64 | 409.504 | 410.368 | 411.232 | 500.008 | + 500.872 | 501.736 | 502.6 | 503.464 | 504.328 | 505.192 | 506.056 | 506.92 | + 507.782 | 508.646 | 509.51 | 510.374 | 511.238 | 600.014 | 600.878 | 601.742 | + 602.606 | 603.47 | 604.334 | 605.198 | 606.062 | 606.926 | 607.79 | 608.654 | + 609.518 | 610.382 | 611.246 | 700.004 | 700.868 | 701.732 | 702.596 | 703.46 | + 704.324 | 705.188 | 706.052 | 706.916 | 707.78 | 708.636 | 709.5 | 710.364 | + 711.228 | 800.012 | 800.874 | 801.738 | 802.602 | 803.466 | 804.33 | 805.194 | + 806.058 | 806.922 | 807.786 | 808.65 | 809.514 | 810.378 | 811.242 | 900.018 | + 900.882 | 901.746 | 902.61 | 903.474 | 904.338 | 905.2 | 906.064 | 906.928 | + ------------------------------------------------------------------------------------------------------------------------ + + + gap of hw rx time, us: packets 128: + ------------------------------------------------------------------------------------------------------------------------ + 0 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.862 | 94.816 | + 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | + 0.864 | 0.864 | 0.862 | 0.866 | 0.862 | 88.776 | 0.864 | 0.864 | + 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | + 0.864 | 0.864 | 0.864 | 88.774 | 0.864 | 0.864 | 0.864 | 0.864 | + 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | + 0.864 | 88.76 | 0.864 | 0.864 | 0.862 | 0.864 | 0.864 | 0.864 | + 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 88.776 | + 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | + 0.862 | 0.864 | 0.864 | 0.864 | 0.864 | 88.776 | 0.864 | 0.864 | + 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | + 0.864 | 0.864 | 0.864 | 88.758 | 0.864 | 0.864 | 0.864 | 0.864 | + 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.856 | 0.864 | 0.864 | + 0.864 | 88.784 | 0.862 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | + 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 88.776 | + 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.862 | 0.864 | 0.864 | + ------------------------------------------------------------------------------------------------------------------------ + max val(#7) = 94.82us + min val(#101) = 0.86us + peak-to-peak = 93.96us + mean +- RMS = 7.14 +- 22.74 us + + Priority 2 Output: + hw rx time, us: packets 128: + relative abs time 428019245645 ns + first packet abs time 428019245645 ns + ------------------------------------------------------------------------------------------------------------------------ + 0 | 0.864 | 1.728 | 26.91 | 100.006 | 100.87 | 101.734 | 102.598 | + 103.462 | 104.326 | 105.19 | 106.054 | 106.918 | 107.782 | 108.646 | 109.51 | + 110.374 | 111.238 | 112.102 | 112.966 | 116.694 | 121.972 | 127.54 | 199.99 | + 200.852 | 201.716 | 202.58 | 203.444 | 204.308 | 205.172 | 206.036 | 206.9 | + 207.764 | 208.628 | 209.492 | 210.356 | 211.22 | 212.084 | 214.692 | 221.778 | + 227.09 | 299.996 | 300.86 | 301.724 | 302.588 | 303.452 | 304.316 | 305.178 | + 306.042 | 306.906 | 307.77 | 308.634 | 309.498 | 310.362 | 311.226 | 312.09 | + 313.714 | 319.034 | 324.37 | 329.608 | 400.002 | 400.866 | 401.73 | 402.594 | + 403.458 | 404.322 | 405.186 | 406.05 | 406.914 | 407.778 | 408.642 | 409.504 | + 410.368 | 411.232 | 412.096 | 415.776 | 421.152 | 426.56 | 500.008 | 500.872 | + 501.736 | 502.6 | 503.464 | 504.328 | 505.192 | 506.056 | 506.92 | 507.784 | + 508.648 | 509.512 | 510.376 | 511.24 | 512.104 | 513.28 | 518.79 | 524.406 | + 529.726 | 599.998 | 600.862 | 601.726 | 602.59 | 603.454 | 604.318 | 605.182 | + 606.046 | 606.91 | 607.774 | 608.638 | 609.502 | 610.366 | 611.23 | 612.094 | + 615.838 | 621.172 | 626.492 | 700.006 | 700.87 | 701.734 | 702.598 | 703.46 | + 704.324 | 705.188 | 706.052 | 706.916 | 707.78 | 708.644 | 709.508 | 710.372 | + ------------------------------------------------------------------------------------------------------------------------ + + + gap of hw rx time, us: packets 128: + ------------------------------------------------------------------------------------------------------------------------ + 0 | 0.864 | 0.864 | 25.182 | 73.096 | 0.864 | 0.864 | 0.864 | + 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | + 0.864 | 0.864 | 0.864 | 0.864 | 3.728 | 5.278 | 5.568 | 72.45 | + 0.862 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | + 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 2.608 | 7.086 | + 5.312 | 72.906 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.862 | + 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | + 1.624 | 5.32 | 5.336 | 5.238 | 70.394 | 0.864 | 0.864 | 0.864 | + 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.862 | + 0.864 | 0.864 | 0.864 | 3.68 | 5.376 | 5.408 | 73.448 | 0.864 | + 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | + 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 1.176 | 5.51 | 5.616 | + 5.32 | 70.272 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | + 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | + 3.744 | 5.334 | 5.32 | 73.514 | 0.864 | 0.864 | 0.864 | 0.862 | + 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | + ------------------------------------------------------------------------------------------------------------------------ + max val(#115) = 73.51us + min val(#24) = 0.86us + peak-to-peak = 72.65us + mean +- RMS = 5.59 +- 16.32 us + + Priority 1 Output: + hw rx time, us: packets 128: + relative abs time 433075257051 ns + first packet abs time 433075257051 ns + ------------------------------------------------------------------------------------------------------------------------ + 0 | 14.24 | 21.126 | 44.436 | 52.716 | 93.352 | 94.216 | 95.08 | + 95.944 | 96.808 | 97.672 | 98.536 | 99.4 | 100.262 | 101.126 | 106.382 | + 111.638 | 116.998 | 122.42 | 127.86 | 133.5 | 138.924 | 144.186 | 150.002 | + 193.358 | 194.222 | 195.086 | 195.95 | 196.814 | 197.678 | 198.542 | 199.406 | + 200.27 | 205.444 | 210.74 | 216.268 | 221.556 | 226.89 | 232.266 | 238.05 | + 243.306 | 248.688 | 293.348 | 294.212 | 295.076 | 295.94 | 296.804 | 297.668 | + 298.532 | 299.396 | 300.26 | 302.932 | 308.54 | 314.114 | 319.57 | 325.122 | + 330.512 | 335.944 | 341.264 | 346.616 | 351.934 | 393.362 | 394.226 | 395.09 | + 395.946 | 396.81 | 397.674 | 398.538 | 399.402 | 401.018 | 406.578 | 412.306 | + 417.904 | 423.32 | 428.672 | 433.912 | 439.334 | 444.686 | 450.03 | 493.346 | + 494.21 | 495.074 | 495.938 | 496.802 | 497.666 | 498.528 | 499.392 | 500.256 | + 504.584 | 509.904 | 515.264 | 520.726 | 526.07 | 531.462 | 536.83 | 542.388 | + 547.78 | 553.172 | 593.352 | 594.216 | 595.08 | 595.944 | 596.808 | 597.672 | + 598.536 | 599.4 | 601.624 | 606.846 | 612.254 | 617.606 | 622.908 | 628.668 | + 633.98 | 639.244 | 644.586 | 649.834 | 693.358 | 694.222 | 695.086 | 695.95 | + 696.814 | 697.678 | 698.542 | 699.406 | 700.27 | 704.27 | 709.572 | 715.14 | + ------------------------------------------------------------------------------------------------------------------------ + + + gap of hw rx time, us: packets 128: + ------------------------------------------------------------------------------------------------------------------------ + 0 | 14.24 | 6.886 | 23.31 | 8.28 | 40.636 | 0.864 | 0.864 | + 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.862 | 0.864 | 5.256 | + 5.256 | 5.36 | 5.422 | 5.44 | 5.64 | 5.424 | 5.262 | 5.816 | + 43.356 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | + 0.864 | 5.174 | 5.296 | 5.528 | 5.288 | 5.334 | 5.376 | 5.784 | + 5.256 | 5.382 | 44.66 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | + 0.864 | 0.864 | 0.864 | 2.672 | 5.608 | 5.574 | 5.456 | 5.552 | + 5.39 | 5.432 | 5.32 | 5.352 | 5.318 | 41.428 | 0.864 | 0.864 | + 0.856 | 0.864 | 0.864 | 0.864 | 0.864 | 1.616 | 5.56 | 5.728 | + 5.598 | 5.416 | 5.352 | 5.24 | 5.422 | 5.352 | 5.344 | 43.316 | + 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 0.862 | 0.864 | 0.864 | + 4.328 | 5.32 | 5.36 | 5.462 | 5.344 | 5.392 | 5.368 | 5.558 | + 5.392 | 5.392 | 40.18 | 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | + 0.864 | 0.864 | 2.224 | 5.222 | 5.408 | 5.352 | 5.302 | 5.76 | + 5.312 | 5.264 | 5.342 | 5.248 | 43.524 | 0.864 | 0.864 | 0.864 | + 0.864 | 0.864 | 0.864 | 0.864 | 0.864 | 4 | 5.302 | 5.568 | + ------------------------------------------------------------------------------------------------------------------------ + max val(#42) = 44.66us + min val(#64) = 0.86us + peak-to-peak = 43.80us + mean +- RMS = 5.63 +- 9.39 us diff --git a/source/linux/Foundational_Components/Kernel/Kernel_Drivers/Network/CPSW-Ethernet.rst b/source/linux/Foundational_Components/Kernel/Kernel_Drivers/Network/CPSW-Ethernet.rst index 4ea3f45a4..33163a0c8 100644 --- a/source/linux/Foundational_Components/Kernel/Kernel_Drivers/Network/CPSW-Ethernet.rst +++ b/source/linux/Foundational_Components/Kernel/Kernel_Drivers/Network/CPSW-Ethernet.rst @@ -2,7 +2,7 @@ CPSW Ethernet ------------- .. contents:: :local: - :depth: 1 + :depth: 1 Introduction """""""""""" @@ -12,7 +12,7 @@ standard TSN features such as PTP, EST, CBS and IET. .. note:: - To operate in switch mode, at least two external ports are required. + To operate in switch mode, at least two external ports are required. Instances of the CPSW Subsystem """""""""""""""""""""""""""""""" @@ -81,9 +81,9 @@ The CPSW Ethernet Subsystem supports TSN features in the following configuration For further details regarding the TSN features and testing, refer :ref:`tsn_with_cpsw` .. toctree:: - :hidden: + :hidden: - CPSW2g - CPSW3g - CPSWng - CPSW-TSN + CPSW2g + CPSW3g + CPSWng + CPSW-TSN diff --git a/source/linux/Foundational_Components/Kernel/Kernel_Drivers/Network/CPSW-IET.rst b/source/linux/Foundational_Components/Kernel/Kernel_Drivers/Network/CPSW-IET.rst index 8bd13ace2..ff91423d9 100644 --- a/source/linux/Foundational_Components/Kernel/Kernel_Drivers/Network/CPSW-IET.rst +++ b/source/linux/Foundational_Components/Kernel/Kernel_Drivers/Network/CPSW-IET.rst @@ -17,35 +17,34 @@ Driver assumes highest priority h/w Queue as the express Queue and configures lo To enable IET FPE with MAC Verify, do -.. code-block:: console +.. code:: console - ethtool --set-priv-flags eth0 p0-rx-ptype-rrobin off - ethtool --set-mm eth0 pmac-enabled on tx-enabled on verify-enabled on verify-time 10 tx-min-frag-size 124 + ethtool --set-priv-flags eth0 p0-rx-ptype-rrobin off + ethtool --set-mm eth0 pmac-enabled on tx-enabled on verify-enabled on verify-time 10 tx-min-frag-size 124 To enable IET FPE with no MAC Verify (Force mode) -.. code-block:: console +.. code:: console - ethtool --set-priv-flags eth0 p0-rx-ptype-rrobin off - ethtool --set-mm eth0 pmac-enabled on tx-enabled on verify-enabled off tx-min-frag-size 124 + ethtool --set-priv-flags eth0 p0-rx-ptype-rrobin off + ethtool --set-mm eth0 pmac-enabled on tx-enabled on verify-enabled off tx-min-frag-size 124 To disable IET FPE and restore rrobin mode -.. code-block:: console +.. code:: console - - ethtool --set-priv-flags eth0 p0-rx-ptype-rrobin on + ethtool --set-priv-flags eth0 p0-rx-ptype-rrobin on .. rubric:: Example session to enable IET FPE with MAC Verify. :name: iet-mac-verify Assume 2 AM65x IDKs are connected back to back over MCU Ethernet port (typically eth0 interface. Example assumes 2 h/w queues configured. Q1 will be express queue and Q0 the preemption queue in this configuration. -.. code-block:: console +.. code:: console # bring down all interfaces associated with the same CPSW instance to update tx channels root@evm:~# ip link set dev eth0 down - [ 84.543137] am65-cpsw-nuss 46000000.ethernet eth0: Link is Down + [ 84.543137] am65-cpsw-nuss 46000000.ethernet eth0: Link is Down root@evm:~# ethtool -L eth0 tx 2 root@evm:~# ethtool -l eth0 Channel parameters for eth0: @@ -79,36 +78,36 @@ Assume 2 AM65x IDKs are connected back to back over MCU Ethernet port (typically Max verify time: 128 Verification status: SUCCEEDED root@evm:~# ip link set dev eth0 up - [ 409.666959] am65-cpsw-nuss 46000000.ethernet eth0: PHY [46000f00.mdio:00] driver [TI DP83867] (irq=POLL) - [ 409.676453] am65-cpsw-nuss 46000000.ethernet eth0: configuring for phy/rgmii-rxid link mode + [ 409.666959] am65-cpsw-nuss 46000000.ethernet eth0: PHY [46000f00.mdio:00] driver [TI DP83867] (irq=POLL) + [ 409.676453] am65-cpsw-nuss 46000000.ethernet eth0: configuring for phy/rgmii-rxid link mode .. rubric:: Example session to enable IET FPE with no MAC Verify (Force mode) :name: iet-no-mac-verify -.. code-block:: console - - root@evm:~# ip link set dev eth0 down - [ 394.590576] am65-cpsw-nuss 46000000.ethernet eth0: Link is Down - root@evm:~# ethtool --set-mm eth0 pmac-enabled on tx-enabled on verify-enabled off tx-min-frag-size 124 - root@evm:~# ethtool --show-mm eth0 - MAC Merge layer state for eth0: - pMAC enabled: on - TX enabled: on - TX active: on - TX minimum fragment size: 124 - RX minimum fragment size: 124 - Verify enabled: off - Verify time: 0 - Max verify time: 128 - Verification status: DISABLED - root@evm:~# - root@evm:~# ip link set dev eth0 up - root@evm:~# ip addr add 192.168.100.20/24 dev eth0 - [ 500.502660] TI DP83867 46000f00.mdio:00: attached PHY driver [TI DP83867] (mii_bus:phy_addr=46000f00.mdio:00, irq=POLL) - root@evm:~# [ 500.516232] am65-cpsw-nuss 46000000.ethernet eth0: Link is Down - root@evm:~# [ 552.738077] am65-cpsw-nuss 46000000.ethernet eth0: IET Enable Force mode - [ 552.744839] am65-cpsw-nuss 46000000.ethernet eth0: Link is Up - 1Gbps/Full - flow control off - [ 552.753434] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready +.. code:: console + + root@evm:~# ip link set dev eth0 down + [ 394.590576] am65-cpsw-nuss 46000000.ethernet eth0: Link is Down + root@evm:~# ethtool --set-mm eth0 pmac-enabled on tx-enabled on verify-enabled off tx-min-frag-size 124 + root@evm:~# ethtool --show-mm eth0 + MAC Merge layer state for eth0: + pMAC enabled: on + TX enabled: on + TX active: on + TX minimum fragment size: 124 + RX minimum fragment size: 124 + Verify enabled: off + Verify time: 0 + Max verify time: 128 + Verification status: DISABLED + root@evm:~# + root@evm:~# ip link set dev eth0 up + root@evm:~# ip addr add 192.168.100.20/24 dev eth0 + [ 500.502660] TI DP83867 46000f00.mdio:00: attached PHY driver [TI DP83867] (mii_bus:phy_addr=46000f00.mdio:00, irq=POLL) + root@evm:~# [ 500.516232] am65-cpsw-nuss 46000000.ethernet eth0: Link is Down + root@evm:~# [ 552.738077] am65-cpsw-nuss 46000000.ethernet eth0: IET Enable Force mode + [ 552.744839] am65-cpsw-nuss 46000000.ethernet eth0: Link is Up - 1Gbps/Full - flow control off + [ 552.753434] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready .. rubric:: IET FPE example :name: iep-fpe-testing @@ -121,116 +120,116 @@ Highest priority Queue is Express queue. I.e if there are 8 queues configured th So to test, need to have traffic at the preemption queue as well as at the express queue and use the above statistics counters to verify if fragmentation happens at the sender side and re-assembly at the receiver side. Below logs provide some example usage. -.. code-block:: console - - # At the Talker side - # Set up mqprio qdisc at eth0 - 2 Queues configured. Q0 - preemption queue and Q1 express queue - root@evm:~# tc qdisc replace dev eth0 handle 100: parent root mqprio num_tc 2 map 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 queues 1@0 - 1@1 hw 1 mode dcb fp P E - root@evm:~# tc -g class show dev eth0 - +---(100:ffe1) mqprio - | +---(100:2) mqprio - | - +---(100:ffe0) mqprio - +---(100:1) mqprio - # Enable classifier at net core - root@evm:~# tc qdisc add dev eth0 clsact - # Add tc filter rule to mark packet priority based on destination UDP port number - Port 5002 mapped to prio 2 - # From above mqprio settings, TC at index 2 is 0. So this TC packets go to Q0 - root@evm:~# tc filter add dev eth0 egress protocol ip prio 1 u32 match ip dport 5002 0xffff action skbedit priority 2 - [ 285.576105] u32 classifier - [ 285.578910] input device check on - [ 285.582640] Actions configured - # Add tc filter rule to map packets with UDP port number - Port 5003 to prio 3 - # From above mqprio settings, TC at index 3 is 1. So this TC packets go to Q1 - root@evm:~# tc filter add dev eth0 egress protocol ip prio 1 u32 match ip dport 5003 0xffff action skbedit priority 3 - root@evm:~# - root@evm:~# ip addr add 192.168.100.20/24 dev eth0 - - # At the Listener DUT, setup ip address and run iperf3 server session listening to port 5002 and 5003. - # ip addr add 192.168.100.30/24 dev eth0 - root@evm:~# iperf3 -s -i30 -p5002& - [1] 1224 - root@evm:~# iperf3 -s -i30 -p5003& - ----------------------------------------------------------- - Server listening on 5002 - ----------------------------------------------------------- - [2] 1225 - ----------------------------------------------------------- - Server listening on 5003 - ----------------------------------------------------------- - root@evm:~# - # At Listener DUT start iperf3 client session to port 5002 and 5003 - root@evm:~# iperf3 -c 192.168.100.30 -u -b200M -l1472 -u -t30 -i30 -p5002& - [1] 1050 - root@evm:~# iperf3 -c 192.168.100.30 -u -b50M -l1472 -u -t30 -i30 -p5003& - [2] 1051 - root@evm:~# - root@evm:~# warning: UDP block size 1472 exceeds TCP MSS 1448, may result in fragmentation / drops - warning: UDP block size 1472 exceeds TCP MSS 1448, may result in fragmentation / drops - Connecting to host 192.168.100.30, port 5003 - Connecting to host 192.168.100.30, port 5002 - [ 5] local 192.168.100.20 port 60646 connected to 192.168.100.30 port 5003 - [ 5] local 192.168.100.20 port 39515 connected to 192.168.100.30 port 5002 - - # Now at the Talker DUT, dump statistics counter for Q0 and Q1 as well as IET statistics - root@evm:~# ethtool -S eth0 | grep 'tx_pri1' - p0_tx_pri1: 0 - p0_tx_pri1_bcnt: 0 - p0_tx_pri1_drop: 0 - p0_tx_pri1_drop_bcnt: 0 - tx_pri1: 127389 - tx_pri1_bcnt: 193355263 - tx_pri1_drop: 0 - tx_pri1_drop_bcnt: 0 - root@evm:~# ethtool -S eth0 | grep 'tx_pri0' - p0_tx_pri0: 89 - p0_tx_pri0_bcnt: 19477 - p0_tx_pri0_drop: 0 - p0_tx_pri0_drop_bcnt: 0 - tx_pri0: 509615 - tx_pri0_bcnt: 773438803 - tx_pri0_drop: 0 - tx_pri0_drop_bcnt: 0 - root@evm:~# ethtool -I --show-mm eth0 - MAC Merge layer state for eth0: - pMAC enabled: on - TX enabled: on - TX active: on - TX minimum fragment size: 124 - RX minimum fragment size: 124 - Verify enabled: on - Verify time: 10 - Max verify time: 128 - Verification status: SUCCEEDED - Statistics: - MACMergeFrameAssErrorCount: 0 - MACMergeFrameSmdErrorCount: 0 - MACMergeFrameAssOkCount: 0 - MACMergeFragCountRx: 0 - MACMergeFragCountTx: 17952 - MACMergeHoldCount: 0 - - # As seen, MACMergeFragCountTx statistics counter increments at the Talker showing fragmentation at the Talker - # Also dump the statistics at the listener DUT - root@evm:~# ethtool -I --show-mm eth0 - MAC Merge layer state for eth0: - pMAC enabled: on - TX enabled: on - TX active: on - TX minimum fragment size: 124 - RX minimum fragment size: 124 - Verify enabled: on - Verify time: 10 - Max verify time: 128 - Verification status: SUCCEEDED - Statistics: - MACMergeFrameAssErrorCount: 0 - MACMergeFrameSmdErrorCount: 48 - MACMergeFrameAssOkCount: 14507 - MACMergeFragCountRx: 17952 - MACMergeFragCountTx: 0 - MACMergeHoldCount: 0 +.. code:: console + + # At the Talker side + # Set up mqprio qdisc at eth0 - 2 Queues configured. Q0 - preemption queue and Q1 express queue + root@evm:~# tc qdisc replace dev eth0 handle 100: parent root mqprio num_tc 2 map 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 queues 1@0 + 1@1 hw 1 mode dcb fp P E + root@evm:~# tc -g class show dev eth0 + +---(100:ffe1) mqprio + | +---(100:2) mqprio + | + +---(100:ffe0) mqprio + +---(100:1) mqprio + # Enable classifier at net core + root@evm:~# tc qdisc add dev eth0 clsact + # Add tc filter rule to mark packet priority based on destination UDP port number - Port 5002 mapped to prio 2 + # From above mqprio settings, TC at index 2 is 0. So this TC packets go to Q0 + root@evm:~# tc filter add dev eth0 egress protocol ip prio 1 u32 match ip dport 5002 0xffff action skbedit priority 2 + [ 285.576105] u32 classifier + [ 285.578910] input device check on + [ 285.582640] Actions configured + # Add tc filter rule to map packets with UDP port number - Port 5003 to prio 3 + # From above mqprio settings, TC at index 3 is 1. So this TC packets go to Q1 + root@evm:~# tc filter add dev eth0 egress protocol ip prio 1 u32 match ip dport 5003 0xffff action skbedit priority 3 + root@evm:~# + root@evm:~# ip addr add 192.168.100.20/24 dev eth0 + + # At the Listener DUT, setup ip address and run iperf3 server session listening to port 5002 and 5003. + # ip addr add 192.168.100.30/24 dev eth0 + root@evm:~# iperf3 -s -i30 -p5002& + [1] 1224 + root@evm:~# iperf3 -s -i30 -p5003& + ----------------------------------------------------------- + Server listening on 5002 + ----------------------------------------------------------- + [2] 1225 + ----------------------------------------------------------- + Server listening on 5003 + ----------------------------------------------------------- + root@evm:~# + # At Listener DUT start iperf3 client session to port 5002 and 5003 + root@evm:~# iperf3 -c 192.168.100.30 -u -b200M -l1472 -u -t30 -i30 -p5002& + [1] 1050 + root@evm:~# iperf3 -c 192.168.100.30 -u -b50M -l1472 -u -t30 -i30 -p5003& + [2] 1051 + root@evm:~# + root@evm:~# warning: UDP block size 1472 exceeds TCP MSS 1448, may result in fragmentation / drops + warning: UDP block size 1472 exceeds TCP MSS 1448, may result in fragmentation / drops + Connecting to host 192.168.100.30, port 5003 + Connecting to host 192.168.100.30, port 5002 + [ 5] local 192.168.100.20 port 60646 connected to 192.168.100.30 port 5003 + [ 5] local 192.168.100.20 port 39515 connected to 192.168.100.30 port 5002 + + # Now at the Talker DUT, dump statistics counter for Q0 and Q1 as well as IET statistics + root@evm:~# ethtool -S eth0 | grep 'tx_pri1' + p0_tx_pri1: 0 + p0_tx_pri1_bcnt: 0 + p0_tx_pri1_drop: 0 + p0_tx_pri1_drop_bcnt: 0 + tx_pri1: 127389 + tx_pri1_bcnt: 193355263 + tx_pri1_drop: 0 + tx_pri1_drop_bcnt: 0 + root@evm:~# ethtool -S eth0 | grep 'tx_pri0' + p0_tx_pri0: 89 + p0_tx_pri0_bcnt: 19477 + p0_tx_pri0_drop: 0 + p0_tx_pri0_drop_bcnt: 0 + tx_pri0: 509615 + tx_pri0_bcnt: 773438803 + tx_pri0_drop: 0 + tx_pri0_drop_bcnt: 0 + root@evm:~# ethtool -I --show-mm eth0 + MAC Merge layer state for eth0: + pMAC enabled: on + TX enabled: on + TX active: on + TX minimum fragment size: 124 + RX minimum fragment size: 124 + Verify enabled: on + Verify time: 10 + Max verify time: 128 + Verification status: SUCCEEDED + Statistics: + MACMergeFrameAssErrorCount: 0 + MACMergeFrameSmdErrorCount: 0 + MACMergeFrameAssOkCount: 0 + MACMergeFragCountRx: 0 + MACMergeFragCountTx: 17952 + MACMergeHoldCount: 0 + + # As seen, MACMergeFragCountTx statistics counter increments at the Talker showing fragmentation at the Talker + # Also dump the statistics at the listener DUT + root@evm:~# ethtool -I --show-mm eth0 + MAC Merge layer state for eth0: + pMAC enabled: on + TX enabled: on + TX active: on + TX minimum fragment size: 124 + RX minimum fragment size: 124 + Verify enabled: on + Verify time: 10 + Max verify time: 128 + Verification status: SUCCEEDED + Statistics: + MACMergeFrameAssErrorCount: 0 + MACMergeFrameSmdErrorCount: 48 + MACMergeFrameAssOkCount: 14507 + MACMergeFragCountRx: 17952 + MACMergeFragCountTx: 0 + MACMergeHoldCount: 0 # As seen, MACMergeFragCountRx and MACMergeFrameAssOkCount statistics counter increments at the Listener showing re-assembly at the Listener .. rubric:: Using IET together with EST @@ -261,15 +260,15 @@ upcoming sectionss. IET MAC Verification in ethtool --set-mm corresponds to: -.. code-block:: console +.. code:: console - verify-enabled + verify-enabled IET Frame Preemption in ethtool --set-mm corresponds to: -.. code-block:: console +.. code:: console - pmac-enabled + pmac-enabled IET in MAC mode --------------- @@ -283,149 +282,149 @@ Connect eth0 of AM625-SK to eth0 of J7VCL. 1. Create and run the following script on J7VCL: -.. code-block:: console +.. code:: sh - #!/bin/sh + #!/bin/sh - ifconfig eth0 down - ethtool -L eth0 tx 4 - ethtool --set-priv-flags eth0 p0-rx-ptype-rrobin off - ethtool --set-mm eth0 pmac-enabled on tx-enabled on verify-enabled on verify-time 10 tx-min-frag-size 124 - ifconfig eth0 up - sleep 5 + ifconfig eth0 down + ethtool -L eth0 tx 4 + ethtool --set-priv-flags eth0 p0-rx-ptype-rrobin off + ethtool --set-mm eth0 pmac-enabled on tx-enabled on verify-enabled on verify-time 10 tx-min-frag-size 124 + ifconfig eth0 up + sleep 5 - iperf3 -s -i30 -p5002& - iperf3 -s -i30 -p5003& + iperf3 -s -i30 -p5002& + iperf3 -s -i30 -p5003& 2. Create and run the following script on AM625-SK: -.. code-block:: console - - #!/bin/sh - - ifconfig eth0 down - ifconfig eth1 down - ethtool -L eth0 tx 4 - ethtool --set-priv-flags eth0 p0-rx-ptype-rrobin off - ethtool --set-mm eth0 pmac-enabled on tx-enabled on verify-enabled on verify-time 10 tx-min-frag-size 124 - ifconfig eth0 up - sleep 5 - - tc qdisc replace dev eth0 handle 100: parent root mqprio \ - num_tc 4 \ - map 0 1 2 3 \ - queues 1@0 1@1 1@2 1@3 \ - hw 1 \ - mode dcb \ - fp P P P E - - tc -g class show dev eth0 - tc qdisc add dev eth0 clsact - tc filter add dev eth0 egress protocol ip prio 1 u32 match ip dport 5002 0xffff action skbedit priority 2 - tc filter add dev eth0 egress protocol ip prio 1 u32 match ip dport 5003 0xffff action skbedit priority 3 - ip addr add 192.168.100.20/24 dev eth0 - sleep 2 +.. code:: sh + + #!/bin/sh + + ifconfig eth0 down + ifconfig eth1 down + ethtool -L eth0 tx 4 + ethtool --set-priv-flags eth0 p0-rx-ptype-rrobin off + ethtool --set-mm eth0 pmac-enabled on tx-enabled on verify-enabled on verify-time 10 tx-min-frag-size 124 + ifconfig eth0 up + sleep 5 + + tc qdisc replace dev eth0 handle 100: parent root mqprio \ + num_tc 4 \ + map 0 1 2 3 \ + queues 1@0 1@1 1@2 1@3 \ + hw 1 \ + mode dcb \ + fp P P P E + + tc -g class show dev eth0 + tc qdisc add dev eth0 clsact + tc filter add dev eth0 egress protocol ip prio 1 u32 match ip dport 5002 0xffff action skbedit priority 2 + tc filter add dev eth0 egress protocol ip prio 1 u32 match ip dport 5003 0xffff action skbedit priority 3 + ip addr add 192.168.100.20/24 dev eth0 + sleep 2 3. On J7VCL, run the following command: -.. code-block:: console +.. code:: console - ifconfig eth0 192.168.100.30 + ifconfig eth0 192.168.100.30 4. Now, run the following commands on AM625-SK: -.. code-block:: console +.. code:: console - iperf3 -c 192.168.100.30 -u -b200M -l1472 -u -t30 -i30 -p5002& - iperf3 -c 192.168.100.30 -u -b50M -l1472 -u -t30 -i30 -p5003& + iperf3 -c 192.168.100.30 -u -b200M -l1472 -u -t30 -i30 -p5002& + iperf3 -c 192.168.100.30 -u -b50M -l1472 -u -t30 -i30 -p5003& **Results:** On AM625-SK (Sender): -.. code-block:: console - - root@am62xx-evm:~# ethtool -S eth0 | grep tx_pri0 - p0_tx_pri0: 66 - p0_tx_pri0_bcnt: 12944 - p0_tx_pri0_drop: 0 - p0_tx_pri0_drop_bcnt: 0 - tx_pri0: 66 - tx_pri0_bcnt: 11540 - tx_pri0_drop: 0 - tx_pri0_drop_bcnt: 0 - root@am62xx-evm:~# ethtool -S eth0 | grep tx_pri2 - p0_tx_pri2: 0 - p0_tx_pri2_bcnt: 0 - p0_tx_pri2_drop: 0 - p0_tx_pri2_drop_bcnt: 0 - tx_pri2: 509514 - tx_pri2_bcnt: 773419566 - tx_pri2_drop: 0 - tx_pri2_drop_bcnt: 0 - root@am62xx-evm:~# ethtool -S eth0 | grep tx_pri3 - p0_tx_pri3: 0 - p0_tx_pri3_bcnt: 0 - p0_tx_pri3_drop: 0 - p0_tx_pri3_drop_bcnt: 0 - tx_pri3: 127389 - tx_pri3_bcnt: 193355280 - tx_pri3_drop: 0 - tx_pri3_drop_bcnt: 0 - root@am62xx-evm:~# ethtool -I --show-mm eth0 - MAC Merge layer state for eth0: - pMAC enabled: on - TX enabled: on - TX active: on - TX minimum fragment size: 124 - RX minimum fragment size: 124 - Verify enabled: on - Verify time: 10 - Max verify time: 128 - Verification status: SUCCEEDED - Statistics: - MACMergeFrameAssErrorCount: 0 - MACMergeFrameSmdErrorCount: 0 - MACMergeFrameAssOkCount: 0 - MACMergeFragCountRx: 0 - MACMergeFragCountTx: 112 - MACMergeHoldCount: 0 +.. code:: console + + root@am62xx-evm:~# ethtool -S eth0 | grep tx_pri0 + p0_tx_pri0: 66 + p0_tx_pri0_bcnt: 12944 + p0_tx_pri0_drop: 0 + p0_tx_pri0_drop_bcnt: 0 + tx_pri0: 66 + tx_pri0_bcnt: 11540 + tx_pri0_drop: 0 + tx_pri0_drop_bcnt: 0 + root@am62xx-evm:~# ethtool -S eth0 | grep tx_pri2 + p0_tx_pri2: 0 + p0_tx_pri2_bcnt: 0 + p0_tx_pri2_drop: 0 + p0_tx_pri2_drop_bcnt: 0 + tx_pri2: 509514 + tx_pri2_bcnt: 773419566 + tx_pri2_drop: 0 + tx_pri2_drop_bcnt: 0 + root@am62xx-evm:~# ethtool -S eth0 | grep tx_pri3 + p0_tx_pri3: 0 + p0_tx_pri3_bcnt: 0 + p0_tx_pri3_drop: 0 + p0_tx_pri3_drop_bcnt: 0 + tx_pri3: 127389 + tx_pri3_bcnt: 193355280 + tx_pri3_drop: 0 + tx_pri3_drop_bcnt: 0 + root@am62xx-evm:~# ethtool -I --show-mm eth0 + MAC Merge layer state for eth0: + pMAC enabled: on + TX enabled: on + TX active: on + TX minimum fragment size: 124 + RX minimum fragment size: 124 + Verify enabled: on + Verify time: 10 + Max verify time: 128 + Verification status: SUCCEEDED + Statistics: + MACMergeFrameAssErrorCount: 0 + MACMergeFrameSmdErrorCount: 0 + MACMergeFrameAssOkCount: 0 + MACMergeFragCountRx: 0 + MACMergeFragCountTx: 112 + MACMergeHoldCount: 0 On J7ES (Receiver): -.. code-block:: console - - root@j7200-evm:~# ethtool -I --show-mm eth0 - MAC Merge layer state for eth0: - pMAC enabled: on - TX enabled: on - TX active: off - TX minimum fragment size: 124 - RX minimum fragment size: 124 - Verify enabled: on - Verify time: 10 - Max verify time: 128 - Verification status: SUCCEEDED - Statistics: - MACMergeFrameAssErrorCount: 0 - MACMergeFrameSmdErrorCount: 0 - MACMergeFrameAssOkCount: 104 - MACMergeFragCountRx: 112 - MACMergeFragCountTx: 0 - MACMergeHoldCount: 0 +.. code:: console + + root@j7200-evm:~# ethtool -I --show-mm eth0 + MAC Merge layer state for eth0: + pMAC enabled: on + TX enabled: on + TX active: off + TX minimum fragment size: 124 + RX minimum fragment size: 124 + Verify enabled: on + Verify time: 10 + Max verify time: 128 + Verification status: SUCCEEDED + Statistics: + MACMergeFrameAssErrorCount: 0 + MACMergeFrameSmdErrorCount: 0 + MACMergeFrameAssOkCount: 104 + MACMergeFragCountRx: 112 + MACMergeFragCountTx: 0 + MACMergeHoldCount: 0 **Explanation:** -.. code-block:: console +.. code:: text - On AM625-SK, the higher priority traffic preempts the lower priority - traffic, thereby resulting in the fragmentation of frames of lower - priority. This can be seen in the MACMergeFragCountTx statistic on - AM625-SK. + On AM625-SK, the higher priority traffic preempts the lower priority + traffic, thereby resulting in the fragmentation of frames of lower + priority. This can be seen in the MACMergeFragCountTx statistic on + AM625-SK. - Similarly, on J7VCL, the received fragmented frames can be observed - in the MACMergeFragCountRx statistic, while the assembled frames can - be seen in the MACMergeFrameAssOkCount statistic. + Similarly, on J7VCL, the received fragmented frames can be observed + in the MACMergeFragCountRx statistic, while the assembled frames can + be seen in the MACMergeFrameAssOkCount statistic. J7VCL fragments frames and AM625-SK assembles them ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -436,107 +435,107 @@ Connect eth0 of J7VCL to eth0 of AM625-SK. 1. Create and run the following script on AM625-SK: -.. code-block:: console +.. code:: sh - #!/bin/sh + #!/bin/sh - ifconfig eth0 down - ifconfig eth1 down - ethtool -L eth0 tx 4 - ethtool --set-priv-flags eth0 p0-rx-ptype-rrobin off - ethtool --set-mm eth0 pmac-enabled on tx-enabled on verify-enabled on verify-time 10 tx-min-frag-size 124 - ifconfig eth0 up - sleep 5 + ifconfig eth0 down + ifconfig eth1 down + ethtool -L eth0 tx 4 + ethtool --set-priv-flags eth0 p0-rx-ptype-rrobin off + ethtool --set-mm eth0 pmac-enabled on tx-enabled on verify-enabled on verify-time 10 tx-min-frag-size 124 + ifconfig eth0 up + sleep 5 - iperf3 -s -i30 -p5002& - iperf3 -s -i30 -p5003& + iperf3 -s -i30 -p5002& + iperf3 -s -i30 -p5003& 2. Create and run the following script on J7VCL: -.. code-block:: console +.. code:: sh - #!/bin/sh + #!/bin/sh - ifconfig eth0 down - ethtool -L eth0 tx 4 - ethtool --set-priv-flags eth0 p0-rx-ptype-rrobin off - ethtool --set-mm eth0 pmac-enabled on tx-enabled on verify-enabled on verify-time 10 tx-min-frag-size 124 - ifconfig eth0 up - sleep 5 + ifconfig eth0 down + ethtool -L eth0 tx 4 + ethtool --set-priv-flags eth0 p0-rx-ptype-rrobin off + ethtool --set-mm eth0 pmac-enabled on tx-enabled on verify-enabled on verify-time 10 tx-min-frag-size 124 + ifconfig eth0 up + sleep 5 - tc qdisc replace dev eth0 handle 100: parent root mqprio \ - num_tc 4 \ - map 0 1 2 3 \ - queues 1@0 1@1 1@2 1@3 \ - hw 1 \ - mode dcb \ - fp P P P E + tc qdisc replace dev eth0 handle 100: parent root mqprio \ + num_tc 4 \ + map 0 1 2 3 \ + queues 1@0 1@1 1@2 1@3 \ + hw 1 \ + mode dcb \ + fp P P P E - tc -g class show dev eth0 - tc qdisc add dev eth0 clsact - tc filter add dev eth0 egress protocol ip prio 1 u32 match ip dport 5002 0xffff action skbedit priority 2 - tc filter add dev eth0 egress protocol ip prio 1 u32 match ip dport 5003 0xffff action skbedit priority 3 - ip addr add 192.168.100.20/24 dev eth0 - sleep 2 + tc -g class show dev eth0 + tc qdisc add dev eth0 clsact + tc filter add dev eth0 egress protocol ip prio 1 u32 match ip dport 5002 0xffff action skbedit priority 2 + tc filter add dev eth0 egress protocol ip prio 1 u32 match ip dport 5003 0xffff action skbedit priority 3 + ip addr add 192.168.100.20/24 dev eth0 + sleep 2 3. Run the following command on AM625-SK: -.. code-block:: console +.. code:: console - ifconfig eth0 192.168.100.30 + ifconfig eth0 192.168.100.30 4. Next, run the following commands on J7VCL: -.. code-block:: console +.. code:: console - iperf3 -c 192.168.100.30 -u -b200M -l1472 -u -t30 -i30 -p5002& - iperf3 -c 192.168.100.30 -u -b50M -l1472 -u -t30 -i30 -p5003& + iperf3 -c 192.168.100.30 -u -b200M -l1472 -u -t30 -i30 -p5002& + iperf3 -c 192.168.100.30 -u -b50M -l1472 -u -t30 -i30 -p5003& **Results:** On J7VCL (Sender): -.. code-block:: console - - root@j7200-evm:~# ethtool -S eth0 | grep tx_pri0 - p0_tx_pri0: 0 - p0_tx_pri0_bcnt: 0 - p0_tx_pri0_drop: 0 - p0_tx_pri0_drop_bcnt: 0 - tx_pri0: 63 - tx_pri0_bcnt: 11010 - tx_pri0_drop: 0 - tx_pri0_drop_bcnt: 0 - root@j7200-evm:~# ethtool -S eth0 | grep tx_pri1 - p0_tx_pri1: 0 - p0_tx_pri1_bcnt: 0 - p0_tx_pri1_drop: 0 - p0_tx_pri1_drop_bcnt: 0 - tx_pri1: 0 - tx_pri1_bcnt: 0 - tx_pri1_drop: 0 - tx_pri1_drop_bcnt: 0 - root@j7200-evm:~# ethtool -S eth0 | grep tx_pri2 - p0_tx_pri2: 0 - p0_tx_pri2_bcnt: 0 - p0_tx_pri2_drop: 0 - p0_tx_pri2_drop_bcnt: 0 - tx_pri2: 509514 - tx_pri2_bcnt: 773418133 - tx_pri2_drop: 0 - tx_pri2_drop_bcnt: 0 - root@j7200-evm:~# ethtool -I --show-mm eth0 - MAC Merge layer state for eth0: - pMAC enabled: on - TX enabled: on - TX active: on - TX minimum fragment size: 124 - RX minimum fragment size: 124 - Verify enabled: on - Verify time: 10 - Max verify time: 128 - Verification status: SUCCEEDED - Statistics: +.. code:: console + + root@j7200-evm:~# ethtool -S eth0 | grep tx_pri0 + p0_tx_pri0: 0 + p0_tx_pri0_bcnt: 0 + p0_tx_pri0_drop: 0 + p0_tx_pri0_drop_bcnt: 0 + tx_pri0: 63 + tx_pri0_bcnt: 11010 + tx_pri0_drop: 0 + tx_pri0_drop_bcnt: 0 + root@j7200-evm:~# ethtool -S eth0 | grep tx_pri1 + p0_tx_pri1: 0 + p0_tx_pri1_bcnt: 0 + p0_tx_pri1_drop: 0 + p0_tx_pri1_drop_bcnt: 0 + tx_pri1: 0 + tx_pri1_bcnt: 0 + tx_pri1_drop: 0 + tx_pri1_drop_bcnt: 0 + root@j7200-evm:~# ethtool -S eth0 | grep tx_pri2 + p0_tx_pri2: 0 + p0_tx_pri2_bcnt: 0 + p0_tx_pri2_drop: 0 + p0_tx_pri2_drop_bcnt: 0 + tx_pri2: 509514 + tx_pri2_bcnt: 773418133 + tx_pri2_drop: 0 + tx_pri2_drop_bcnt: 0 + root@j7200-evm:~# ethtool -I --show-mm eth0 + MAC Merge layer state for eth0: + pMAC enabled: on + TX enabled: on + TX active: on + TX minimum fragment size: 124 + RX minimum fragment size: 124 + Verify enabled: on + Verify time: 10 + Max verify time: 128 + Verification status: SUCCEEDED + Statistics: MACMergeFrameAssErrorCount: 0 MACMergeFrameSmdErrorCount: 0 MACMergeFrameAssOkCount: 0 @@ -546,20 +545,20 @@ On J7VCL (Sender): On AM625-SK (Receiver): -.. code-block:: console - - root@am62xx-evm:~# ethtool -I --show-mm eth0 - MAC Merge layer state for eth0: - pMAC enabled: on - TX enabled: on - TX active: on - TX minimum fragment size: 124 - RX minimum fragment size: 124 - Verify enabled: on - Verify time: 10 - Max verify time: 128 - Verification status: SUCCEEDED - Statistics: +.. code:: console + + root@am62xx-evm:~# ethtool -I --show-mm eth0 + MAC Merge layer state for eth0: + pMAC enabled: on + TX enabled: on + TX active: on + TX minimum fragment size: 124 + RX minimum fragment size: 124 + Verify enabled: on + Verify time: 10 + Max verify time: 128 + Verification status: SUCCEEDED + Statistics: MACMergeFrameAssErrorCount: 0 MACMergeFrameSmdErrorCount: 0 MACMergeFrameAssOkCount: 365 @@ -569,16 +568,16 @@ On AM625-SK (Receiver): **Explanation:** -.. code-block:: console +.. code:: text - On J7VCL, the higher priority traffic preempts the lower priority - traffic, thereby resulting in the fragmentation of frames of lower - priority. This can be seen in the MACMergeFragCountTx statistic on - J7VCL. + On J7VCL, the higher priority traffic preempts the lower priority + traffic, thereby resulting in the fragmentation of frames of lower + priority. This can be seen in the MACMergeFragCountTx statistic on + J7VCL. - Similarly, on AM625-SK, the received fragmented frames can be observed - in the MACMergeFragCountRx statistic, while the assembled frames can - be seen in the MACMergeFrameAssOkCount statistic. + Similarly, on AM625-SK, the received fragmented frames can be observed + in the MACMergeFragCountRx statistic, while the assembled frames can + be seen in the MACMergeFrameAssOkCount statistic. IET in Switch mode ------------------ @@ -609,142 +608,142 @@ Connect eth0 of J7VCL to eth0 of AM625-SK and eth0 of J7ES to eth2 of AM625-SK. 1. On AM625-SK, create and run the following script: -.. code-block:: console - - #!/bin/sh - - ifconfig eth0 down - ifconfig eth1 down - ethtool -L eth0 tx 4 - ethtool --set-priv-flags eth0 p0-rx-ptype-rrobin off - ethtool --set-mm eth0 pmac-enabled on tx-enabled on verify-enabled on verify-time 10 tx-min-frag-size 124 - ifconfig eth0 up - ifconfig eth1 up - sleep 5 - - devlink dev param set platform/8000000.ethernet name switch_mode value true cmode runtime - ip link add name br0 type bridge - ip link set dev br0 type bridge ageing_time 1000 - ip link set dev eth0 up - ip link set dev eth1 up - ip link set dev eth0 master br0 - ip link set dev eth1 master br0 - ip link set dev br0 up - ip link set dev br0 type bridge vlan_filtering 1 - bridge vlan add dev br0 vid 1 self - bridge vlan add dev br0 vid 1 pvid untagged self +.. code:: sh + + #!/bin/sh + + ifconfig eth0 down + ifconfig eth1 down + ethtool -L eth0 tx 4 + ethtool --set-priv-flags eth0 p0-rx-ptype-rrobin off + ethtool --set-mm eth0 pmac-enabled on tx-enabled on verify-enabled on verify-time 10 tx-min-frag-size 124 + ifconfig eth0 up + ifconfig eth1 up + sleep 5 + + devlink dev param set platform/8000000.ethernet name switch_mode value true cmode runtime + ip link add name br0 type bridge + ip link set dev br0 type bridge ageing_time 1000 + ip link set dev eth0 up + ip link set dev eth1 up + ip link set dev eth0 master br0 + ip link set dev eth1 master br0 + ip link set dev br0 up + ip link set dev br0 type bridge vlan_filtering 1 + bridge vlan add dev br0 vid 1 self + bridge vlan add dev br0 vid 1 pvid untagged self 2. On J7VCL, create and run the following script: -.. code-block:: console +.. code:: sh - #!/bin/sh + #!/bin/sh - ifconfig eth0 down - ethtool -L eth0 tx 4 - ethtool --set-priv-flags eth0 p0-rx-ptype-rrobin off - ethtool --set-mm eth0 pmac-enabled on tx-enabled on verify-enabled on verify-time 10 tx-min-frag-size 124 - ifconfig eth0 up - sleep 5 + ifconfig eth0 down + ethtool -L eth0 tx 4 + ethtool --set-priv-flags eth0 p0-rx-ptype-rrobin off + ethtool --set-mm eth0 pmac-enabled on tx-enabled on verify-enabled on verify-time 10 tx-min-frag-size 124 + ifconfig eth0 up + sleep 5 - tc qdisc replace dev eth0 handle 100: parent root mqprio \ - num_tc 4 \ - map 0 1 2 3 \ - queues 1@0 1@1 1@2 1@3 \ - hw 1 \ - mode dcb \ - fp P P P E + tc qdisc replace dev eth0 handle 100: parent root mqprio \ + num_tc 4 \ + map 0 1 2 3 \ + queues 1@0 1@1 1@2 1@3 \ + hw 1 \ + mode dcb \ + fp P P P E - tc -g class show dev eth0 - tc qdisc add dev eth0 clsact - tc filter add dev eth0 egress protocol ip prio 1 u32 match ip dport 5002 0xffff action skbedit priority 2 - tc filter add dev eth0 egress protocol ip prio 1 u32 match ip dport 5003 0xffff action skbedit priority 3 - ifconfig eth0 192.168.100.20 netmask 255.255.255.0 - sleep 2 + tc -g class show dev eth0 + tc qdisc add dev eth0 clsact + tc filter add dev eth0 egress protocol ip prio 1 u32 match ip dport 5002 0xffff action skbedit priority 2 + tc filter add dev eth0 egress protocol ip prio 1 u32 match ip dport 5003 0xffff action skbedit priority 3 + ifconfig eth0 192.168.100.20 netmask 255.255.255.0 + sleep 2 3. On J7ES (Receiver), run the following commands: -.. code-block:: console +.. code:: console - ifconfig eth0 192.168.3.102 - iperf3 -s -i30 -p5002& \ - iperf3 -s -i30 -p5003& + ifconfig eth0 192.168.3.102 + iperf3 -s -i30 -p5002& \ + iperf3 -s -i30 -p5003& 4. Then, on J7VCL (Sender), run the following commands: -.. code-block:: console +.. code:: console - iperf3 -c 192.168.3.102 -u -b200M -l1472 -u -t5 -i30 -p5002& - iperf3 -c 192.168.3.102 -u -b50M -l1472 -u -t5 -i30 -p5003& + iperf3 -c 192.168.3.102 -u -b200M -l1472 -u -t5 -i30 -p5002& + iperf3 -c 192.168.3.102 -u -b50M -l1472 -u -t5 -i30 -p5003& **Results:** On J7VCL (Sender): -.. code-block:: console - - root@j7200-evm:~/iet# ethtool -S eth0 | grep tx_pri0 - p0_tx_pri0: 0 - p0_tx_pri0_bcnt: 0 - p0_tx_pri0_drop: 0 - p0_tx_pri0_drop_bcnt: 0 - tx_pri0: 95 - tx_pri0_bcnt: 16582 - tx_pri0_drop: 0 - tx_pri0_drop_bcnt: 0 - root@j7200-evm:~/iet# ethtool -S eth0 | grep tx_pri2 - p0_tx_pri2: 0 - p0_tx_pri2_bcnt: 0 - p0_tx_pri2_drop: 0 - p0_tx_pri2_drop_bcnt: 0 - tx_pri2: 1019024 - tx_pri2_bcnt: 1546835971 - tx_pri2_drop: 0 - tx_pri2_drop_bcnt: 0 - root@j7200-evm:~/iet# ethtool -S eth0 | grep tx_pri3 - p0_tx_pri3: 0 - p0_tx_pri3_bcnt: 0 - p0_tx_pri3_drop: 0 - p0_tx_pri3_drop_bcnt: 0 - tx_pri3: 254780 - tx_pri3_bcnt: 386710678 - tx_pri3_drop: 0 - tx_pri3_drop_bcnt: 0 - root@j7200-evm:~/iet# ethtool -I --show-mm eth0 - MAC Merge layer state for eth0: - pMAC enabled: on - TX enabled: on - TX active: on - TX minimum fragment size: 124 - RX minimum fragment size: 124 - Verify enabled: on - Verify time: 10 - Max verify time: 128 - Verification status: SUCCEEDED - Statistics: - MACMergeFrameAssErrorCount: 0 - MACMergeFrameSmdErrorCount: 38 - MACMergeFrameAssOkCount: 0 - MACMergeFragCountRx: 0 - MACMergeFragCountTx: 1637 - MACMergeHoldCount: 0 +.. code:: console + + root@j7200-evm:~/iet# ethtool -S eth0 | grep tx_pri0 + p0_tx_pri0: 0 + p0_tx_pri0_bcnt: 0 + p0_tx_pri0_drop: 0 + p0_tx_pri0_drop_bcnt: 0 + tx_pri0: 95 + tx_pri0_bcnt: 16582 + tx_pri0_drop: 0 + tx_pri0_drop_bcnt: 0 + root@j7200-evm:~/iet# ethtool -S eth0 | grep tx_pri2 + p0_tx_pri2: 0 + p0_tx_pri2_bcnt: 0 + p0_tx_pri2_drop: 0 + p0_tx_pri2_drop_bcnt: 0 + tx_pri2: 1019024 + tx_pri2_bcnt: 1546835971 + tx_pri2_drop: 0 + tx_pri2_drop_bcnt: 0 + root@j7200-evm:~/iet# ethtool -S eth0 | grep tx_pri3 + p0_tx_pri3: 0 + p0_tx_pri3_bcnt: 0 + p0_tx_pri3_drop: 0 + p0_tx_pri3_drop_bcnt: 0 + tx_pri3: 254780 + tx_pri3_bcnt: 386710678 + tx_pri3_drop: 0 + tx_pri3_drop_bcnt: 0 + root@j7200-evm:~/iet# ethtool -I --show-mm eth0 + MAC Merge layer state for eth0: + pMAC enabled: on + TX enabled: on + TX active: on + TX minimum fragment size: 124 + RX minimum fragment size: 124 + Verify enabled: on + Verify time: 10 + Max verify time: 128 + Verification status: SUCCEEDED + Statistics: + MACMergeFrameAssErrorCount: 0 + MACMergeFrameSmdErrorCount: 38 + MACMergeFrameAssOkCount: 0 + MACMergeFragCountRx: 0 + MACMergeFragCountTx: 1637 + MACMergeHoldCount: 0 On AM625-SK (Switch): -.. code-block:: console - - root@am62xx-evm:~/iet# ethtool -I --show-mm eth0 - MAC Merge layer state for eth0: - pMAC enabled: on - TX enabled: on - TX active: on - TX minimum fragment size: 124 - RX minimum fragment size: 124 - Verify enabled: on - Verify time: 10 - Max verify time: 128 - Verification status: SUCCEEDED - Statistics: +.. code:: console + + root@am62xx-evm:~/iet# ethtool -I --show-mm eth0 + MAC Merge layer state for eth0: + pMAC enabled: on + TX enabled: on + TX active: on + TX minimum fragment size: 124 + RX minimum fragment size: 124 + Verify enabled: on + Verify time: 10 + Max verify time: 128 + Verification status: SUCCEEDED + Statistics: MACMergeFrameAssErrorCount: 0 MACMergeFrameSmdErrorCount: 0 MACMergeFrameAssOkCount: 610 @@ -761,145 +760,145 @@ Connect eth0 of AM625-SK to eth1 of J7VCL and eth0 of J7ES to eth2 of J7VCL. 1. On J7VCL, create and run the following script: -.. code-block:: console - - #!/bin/sh - - ifconfig eth0 down - ifconfig eth1 down - ifconfig eth2 down - ifconfig eth3 down - ifconfig eth4 down - ethtool -L eth1 tx 4 - ethtool --set-priv-flags eth1 p0-rx-ptype-rrobin off - ethtool --set-mm eth1 pmac-enabled on tx-enabled on verify-enabled on verify-time 10 tx-min-frag-size 124 - ifconfig eth1 up - ifconfig eth2 up - sleep 10 - - devlink dev param set platform/c000000.ethernet name switch_mode value true cmode runtime - ip link add name br0 type bridge - ip link set dev br0 type bridge ageing_time 1000 - ip link set dev eth1 up - ip link set dev eth2 up - ip link set dev eth1 master br0 - ip link set dev eth2 master br0 - ip link set dev br0 up - ip link set dev br0 type bridge vlan_filtering 1 - bridge vlan add dev br0 vid 1 self - bridge vlan add dev br0 vid 1 pvid untagged self +.. code:: sh + + #!/bin/sh + + ifconfig eth0 down + ifconfig eth1 down + ifconfig eth2 down + ifconfig eth3 down + ifconfig eth4 down + ethtool -L eth1 tx 4 + ethtool --set-priv-flags eth1 p0-rx-ptype-rrobin off + ethtool --set-mm eth1 pmac-enabled on tx-enabled on verify-enabled on verify-time 10 tx-min-frag-size 124 + ifconfig eth1 up + ifconfig eth2 up + sleep 10 + + devlink dev param set platform/c000000.ethernet name switch_mode value true cmode runtime + ip link add name br0 type bridge + ip link set dev br0 type bridge ageing_time 1000 + ip link set dev eth1 up + ip link set dev eth2 up + ip link set dev eth1 master br0 + ip link set dev eth2 master br0 + ip link set dev br0 up + ip link set dev br0 type bridge vlan_filtering 1 + bridge vlan add dev br0 vid 1 self + bridge vlan add dev br0 vid 1 pvid untagged self 2. On AM625-SK, create and run the following script: -.. code-block:: console +.. code:: sh - #!/bin/sh - #iet-setup-mqprio.sh + #!/bin/sh + #iet-setup-mqprio.sh - ifconfig eth0 down - ethtool -L eth0 tx 4 - ethtool --set-priv-flags eth0 p0-rx-ptype-rrobin off - ethtool --set-mm eth0 pmac-enabled on tx-enabled on verify-enabled on verify-time 10 tx-min-frag-size 124 - ifconfig eth0 up - sleep 10 + ifconfig eth0 down + ethtool -L eth0 tx 4 + ethtool --set-priv-flags eth0 p0-rx-ptype-rrobin off + ethtool --set-mm eth0 pmac-enabled on tx-enabled on verify-enabled on verify-time 10 tx-min-frag-size 124 + ifconfig eth0 up + sleep 10 - tc qdisc add dev eth0 handle 100: root mqprio \ - num_tc 4 \ - map 0 1 2 3 \ - queues 1@0 1@1 1@2 1@3 \ - hw 1 \ - mode dcb \ - fp P P P E + tc qdisc add dev eth0 handle 100: root mqprio \ + num_tc 4 \ + map 0 1 2 3 \ + queues 1@0 1@1 1@2 1@3 \ + hw 1 \ + mode dcb \ + fp P P P E - tc -g class show dev eth0 - tc qdisc add dev eth0 clsact - tc filter add dev eth0 egress protocol ip prio 1 u32 match ip dport 5002 0xffff action skbedit priority 2 - tc filter add dev eth0 egress protocol ip prio 1 u32 match ip dport 5003 0xffff action skbedit priority 3 - ip addr add 192.168.100.20/24 dev eth0 + tc -g class show dev eth0 + tc qdisc add dev eth0 clsact + tc filter add dev eth0 egress protocol ip prio 1 u32 match ip dport 5002 0xffff action skbedit priority 2 + tc filter add dev eth0 egress protocol ip prio 1 u32 match ip dport 5003 0xffff action skbedit priority 3 + ip addr add 192.168.100.20/24 dev eth0 3. On J7ES, run the following commands: -.. code-block:: console +.. code:: console - ifconfig eth0 192.168.100.30 - iperf3 -s -i30 -p5002& \ - iperf3 -s -i30 -p5003& + ifconfig eth0 192.168.100.30 + iperf3 -s -i30 -p5002& \ + iperf3 -s -i30 -p5003& 4. Then, on AM625-SK, run the following commands: -.. code-block:: console +.. code:: console - iperf3 -c 192.168.100.30 -u -b200M -l1472 -u -t30 -i30 -p5002& \ - iperf3 -c 192.168.100.30 -u -b50M -l1472 -u -t30 -i30 -p5003& + iperf3 -c 192.168.100.30 -u -b200M -l1472 -u -t30 -i30 -p5002& \ + iperf3 -c 192.168.100.30 -u -b50M -l1472 -u -t30 -i30 -p5003& **Results:** On AM625-SK (Sender): -.. code-block:: console - - root@am62xx-evm:~/iet2# ethtool -S eth0 | grep tx_pri0 - p0_tx_pri0: 79 - p0_tx_pri0_bcnt: 16681 - p0_tx_pri0_drop: 0 - p0_tx_pri0_drop_bcnt: 0 - tx_pri0: 82 - tx_pri0_bcnt: 14821 - tx_pri0_drop: 0 - tx_pri0_drop_bcnt: 0 - root@am62xx-evm:~/iet2# ethtool -S eth0 | grep tx_pri2 - p0_tx_pri2: 0 - p0_tx_pri2_bcnt: 0 - p0_tx_pri2_drop: 0 - p0_tx_pri2_drop_bcnt: 0 - tx_pri2: 509516 - tx_pri2_bcnt: 773422600 - tx_pri2_drop: 0 - tx_pri2_drop_bcnt: 0 - root@am62xx-evm:~/iet2# ethtool -S eth0 | grep tx_pri3 - p0_tx_pri3: 0 - p0_tx_pri3_bcnt: 0 - p0_tx_pri3_drop: 0 - p0_tx_pri3_drop_bcnt: 0 - tx_pri3: 127389 - tx_pri3_bcnt: 193355280 - tx_pri3_drop: 0 - tx_pri3_drop_bcnt: 0 - root@am62xx-evm:~/iet2# ethtool -I --show-mm eth0 - MAC Merge layer state for eth0: - pMAC enabled: on - TX enabled: on - TX active: on - TX minimum fragment size: 124 - RX minimum fragment size: 124 - Verify enabled: on - Verify time: 10 - Max verify time: 128 - Verification status: SUCCEEDED - Statistics: - MACMergeFrameAssErrorCount: 0 - MACMergeFrameSmdErrorCount: 57 - MACMergeFrameAssOkCount: 0 - MACMergeFragCountRx: 0 - MACMergeFragCountTx: 112392 - MACMergeHoldCount: 0 +.. code:: console + + root@am62xx-evm:~/iet2# ethtool -S eth0 | grep tx_pri0 + p0_tx_pri0: 79 + p0_tx_pri0_bcnt: 16681 + p0_tx_pri0_drop: 0 + p0_tx_pri0_drop_bcnt: 0 + tx_pri0: 82 + tx_pri0_bcnt: 14821 + tx_pri0_drop: 0 + tx_pri0_drop_bcnt: 0 + root@am62xx-evm:~/iet2# ethtool -S eth0 | grep tx_pri2 + p0_tx_pri2: 0 + p0_tx_pri2_bcnt: 0 + p0_tx_pri2_drop: 0 + p0_tx_pri2_drop_bcnt: 0 + tx_pri2: 509516 + tx_pri2_bcnt: 773422600 + tx_pri2_drop: 0 + tx_pri2_drop_bcnt: 0 + root@am62xx-evm:~/iet2# ethtool -S eth0 | grep tx_pri3 + p0_tx_pri3: 0 + p0_tx_pri3_bcnt: 0 + p0_tx_pri3_drop: 0 + p0_tx_pri3_drop_bcnt: 0 + tx_pri3: 127389 + tx_pri3_bcnt: 193355280 + tx_pri3_drop: 0 + tx_pri3_drop_bcnt: 0 + root@am62xx-evm:~/iet2# ethtool -I --show-mm eth0 + MAC Merge layer state for eth0: + pMAC enabled: on + TX enabled: on + TX active: on + TX minimum fragment size: 124 + RX minimum fragment size: 124 + Verify enabled: on + Verify time: 10 + Max verify time: 128 + Verification status: SUCCEEDED + Statistics: + MACMergeFrameAssErrorCount: 0 + MACMergeFrameSmdErrorCount: 57 + MACMergeFrameAssOkCount: 0 + MACMergeFragCountRx: 0 + MACMergeFragCountTx: 112392 + MACMergeHoldCount: 0 On J7VCL (Switch): -.. code-block:: console - - root@j7200-evm:~/iet2# ethtool -I --show-mm eth1 - MAC Merge layer state for eth1: - pMAC enabled: on - TX enabled: on - TX active: on - TX minimum fragment size: 124 - RX minimum fragment size: 124 - Verify enabled: on - Verify time: 10 - Max verify time: 128 - Verification status: SUCCEEDED - Statistics: +.. code:: console + + root@j7200-evm:~/iet2# ethtool -I --show-mm eth1 + MAC Merge layer state for eth1: + pMAC enabled: on + TX enabled: on + TX active: on + TX minimum fragment size: 124 + RX minimum fragment size: 124 + Verify enabled: on + Verify time: 10 + Max verify time: 128 + Verification status: SUCCEEDED + Statistics: MACMergeFrameAssErrorCount: 0 MACMergeFrameSmdErrorCount: 49 MACMergeFrameAssOkCount: 40745 @@ -912,9 +911,9 @@ CASE-2: Frame is preempted on Switch Egress Port and Assembled on Receiver .. important:: - For the following tests, all interfaces which are a part of the test - need to be a part of the same VLAN, since the switch needs to receive - priority of the frames in order to perform preemption. + For the following tests, all interfaces which are a part of the test + need to be a part of the same VLAN, since the switch needs to receive + priority of the frames in order to perform preemption. In addition to the Sender, the Switch's Host Port also transmits traffic of lower priority to the receiver. This is done to ensure a higher chance @@ -931,182 +930,182 @@ AM625-SK. 1. On AM625-SK, create and run the following script: -.. code-block:: console - - #!/bin/sh - #iet-setup-mqprio.sh - - ifconfig eth0 down - ifconfig eth1 down - ethtool -L eth1 tx 4 - ethtool --set-priv-flags eth1 p0-rx-ptype-rrobin off - ethtool --set-mm eth1 pmac-enabled on tx-enabled on verify-enabled on verify-time 10 tx-min-frag-size 124 - ifconfig eth0 up - ifconfig eth1 up - sleep 10 - - tc qdisc add dev eth1 handle 100: root mqprio \ - num_tc 4 \ - map 0 1 2 3 \ - queues 1@0 1@1 1@2 1@3 \ - hw 1 \ - mode dcb \ - fp P P P E - - tc -g class show dev eth1 - - - devlink dev param set platform/8000000.ethernet name switch_mode value true cmode runtime - ip link add name br0 type bridge - ip link set dev br0 type bridge ageing_time 1000 - ip link set dev eth0 up - ip link set dev eth1 up - ip link set dev eth0 master br0 - ip link set dev eth1 master br0 - ip link set dev br0 up - sleep 2 - - ip link set dev br0 type bridge vlan_filtering 1 - bridge vlan add dev br0 vid 100 self - bridge vlan add dev br0 vid 100 pvid tagged self - bridge vlan add dev eth0 vid 100 master - bridge vlan add dev eth1 vid 100 master - sleep 2 - - ip link add link br0 name br0.100 type vlan id 100 - ip link set br0.100 type vlan egress 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 - sleep 2 - - tc qdisc add dev br0.100 clsact - tc filter add dev br0.100 egress protocol ip prio 1 u32 match ip dport 5002 0xffff action skbedit priority 2 - sleep 2 +.. code:: sh + + #!/bin/sh + #iet-setup-mqprio.sh + + ifconfig eth0 down + ifconfig eth1 down + ethtool -L eth1 tx 4 + ethtool --set-priv-flags eth1 p0-rx-ptype-rrobin off + ethtool --set-mm eth1 pmac-enabled on tx-enabled on verify-enabled on verify-time 10 tx-min-frag-size 124 + ifconfig eth0 up + ifconfig eth1 up + sleep 10 + + tc qdisc add dev eth1 handle 100: root mqprio \ + num_tc 4 \ + map 0 1 2 3 \ + queues 1@0 1@1 1@2 1@3 \ + hw 1 \ + mode dcb \ + fp P P P E + + tc -g class show dev eth1 + + + devlink dev param set platform/8000000.ethernet name switch_mode value true cmode runtime + ip link add name br0 type bridge + ip link set dev br0 type bridge ageing_time 1000 + ip link set dev eth0 up + ip link set dev eth1 up + ip link set dev eth0 master br0 + ip link set dev eth1 master br0 + ip link set dev br0 up + sleep 2 + + ip link set dev br0 type bridge vlan_filtering 1 + bridge vlan add dev br0 vid 100 self + bridge vlan add dev br0 vid 100 pvid tagged self + bridge vlan add dev eth0 vid 100 master + bridge vlan add dev eth1 vid 100 master + sleep 2 + + ip link add link br0 name br0.100 type vlan id 100 + ip link set br0.100 type vlan egress 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 + sleep 2 + + tc qdisc add dev br0.100 clsact + tc filter add dev br0.100 egress protocol ip prio 1 u32 match ip dport 5002 0xffff action skbedit priority 2 + sleep 2 2. On J7ES, create and run the following script: -.. code-block:: console +.. code:: sh - #!/bin/sh - #iet-setup-mqprio.sh + #!/bin/sh + #iet-setup-mqprio.sh - ifconfig eth0 down - ethtool -L eth0 tx 4 - ethtool --set-priv-flags eth0 p0-rx-ptype-rrobin off - ethtool --set-mm eth0 pmac-enabled on tx-enabled on verify-enabled on verify-time 10 tx-min-frag-size 124 - ifconfig eth0 up - sleep 10 + ifconfig eth0 down + ethtool -L eth0 tx 4 + ethtool --set-priv-flags eth0 p0-rx-ptype-rrobin off + ethtool --set-mm eth0 pmac-enabled on tx-enabled on verify-enabled on verify-time 10 tx-min-frag-size 124 + ifconfig eth0 up + sleep 10 - ip link add link eth0 name eth0.100 type vlan id 100 - sleep 5 - ifconfig eth0.100 192.168.100.30 - iperf3 -s -i30 -p5001& - iperf3 -s -i30 -p5002& - iperf3 -s -i30 -p5003& + ip link add link eth0 name eth0.100 type vlan id 100 + sleep 5 + ifconfig eth0.100 192.168.100.30 + iperf3 -s -i30 -p5001& + iperf3 -s -i30 -p5002& + iperf3 -s -i30 -p5003& 3. On J7VCL, create and run the following script: -.. code-block:: console +.. code:: sh - #!/bin/sh - #iet-setup-mqprio.sh + #!/bin/sh + #iet-setup-mqprio.sh - ifconfig eth0 down - ethtool -L eth0 tx 4 - ethtool --set-priv-flags eth0 p0-rx-ptype-rrobin off - ethtool --set-mm eth0 pmac-enabled on tx-enabled on verify-enabled on verify-time 10 tx-min-frag-size 124 - ifconfig eth0 up - sleep 10 - ip link add link eth0 name eth0.100 type vlan id 100 - ip link set eth0.100 type vlan egress 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 - sleep 5 + ifconfig eth0 down + ethtool -L eth0 tx 4 + ethtool --set-priv-flags eth0 p0-rx-ptype-rrobin off + ethtool --set-mm eth0 pmac-enabled on tx-enabled on verify-enabled on verify-time 10 tx-min-frag-size 124 + ifconfig eth0 up + sleep 10 + ip link add link eth0 name eth0.100 type vlan id 100 + ip link set eth0.100 type vlan egress 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 + sleep 5 - tc qdisc add dev eth0.100 clsact - tc filter add dev eth0.100 egress protocol ip prio 1 u32 match ip dport 5003 0xffff action skbedit priority 3 - ifconfig eth0.100 192.168.100.20 netmask 255.255.255.0 - sleep 2 + tc qdisc add dev eth0.100 clsact + tc filter add dev eth0.100 egress protocol ip prio 1 u32 match ip dport 5003 0xffff action skbedit priority 3 + ifconfig eth0.100 192.168.100.20 netmask 255.255.255.0 + sleep 2 4. Run the following commands on AM625-SK: -.. code-block:: console +.. code:: console - ifconfig br0.100 192.168.100.10 - sleep 10 - iperf3 -c 192.168.100.30 -u -b100M -l1472 t30 -i30 -p5001& \ - iperf3 -c 192.168.100.30 -u -b100M -l1472 t30 -i30 -p5002& + ifconfig br0.100 192.168.100.10 + sleep 10 + iperf3 -c 192.168.100.30 -u -b100M -l1472 t30 -i30 -p5001& \ + iperf3 -c 192.168.100.30 -u -b100M -l1472 t30 -i30 -p5002& 5. Now, on J7VCL, run the following command: -.. code-block:: console +.. code:: console - iperf3 -c 192.168.100.30 -u -b50M -l1472 -t30 -i30 -p5003& + iperf3 -c 192.168.100.30 -u -b50M -l1472 -t30 -i30 -p5003& **Results:** On AM625-SK (Switch): -.. code-block:: console - - root@am62xx-evm:~/iet2# ethtool -S eth1 | grep tx_pri0 - p0_tx_pri0: 161 - p0_tx_pri0_bcnt: 30611 - p0_tx_pri0_drop: 0 - p0_tx_pri0_drop_bcnt: 0 - tx_pri0: 254911 - tx_pri0_bcnt: 387757114 - tx_pri0_drop: 0 - tx_pri0_drop_bcnt: 0 - root@am62xx-evm:~/iet2# ethtool -S eth1 | grep tx_pri2 - p0_tx_pri2: 0 - p0_tx_pri2_bcnt: 0 - p0_tx_pri2_drop: 0 - p0_tx_pri2_drop_bcnt: 0 - tx_pri2: 254764 - tx_pri2_bcnt: 387729583 - tx_pri2_drop: 0 - tx_pri2_drop_bcnt: 0 - root@am62xx-evm:~/iet2# ethtool -S eth1 | grep tx_pri3 - p0_tx_pri3: 0 - p0_tx_pri3_bcnt: 0 - p0_tx_pri3_drop: 0 - p0_tx_pri3_drop_bcnt: 0 - tx_pri3: 126634 - tx_pri3_bcnt: 192715723 - tx_pri3_drop: 0 - tx_pri3_drop_bcnt: 0 - root@am62xx-evm:~/iet2# ethtool -I --show-mm eth1 - MAC Merge layer state for eth1: - pMAC enabled: on - TX enabled: on - TX active: on - TX minimum fragment size: 124 - RX minimum fragment size: 124 - Verify enabled: on - Verify time: 10 - Max verify time: 128 - Verification status: SUCCEEDED - Statistics: - MACMergeFrameAssErrorCount: 0 - MACMergeFrameSmdErrorCount: 0 - MACMergeFrameAssOkCount: 0 - MACMergeFragCountRx: 0 - MACMergeFragCountTx: 35437 - MACMergeHoldCount: 0 +.. code:: console + + root@am62xx-evm:~/iet2# ethtool -S eth1 | grep tx_pri0 + p0_tx_pri0: 161 + p0_tx_pri0_bcnt: 30611 + p0_tx_pri0_drop: 0 + p0_tx_pri0_drop_bcnt: 0 + tx_pri0: 254911 + tx_pri0_bcnt: 387757114 + tx_pri0_drop: 0 + tx_pri0_drop_bcnt: 0 + root@am62xx-evm:~/iet2# ethtool -S eth1 | grep tx_pri2 + p0_tx_pri2: 0 + p0_tx_pri2_bcnt: 0 + p0_tx_pri2_drop: 0 + p0_tx_pri2_drop_bcnt: 0 + tx_pri2: 254764 + tx_pri2_bcnt: 387729583 + tx_pri2_drop: 0 + tx_pri2_drop_bcnt: 0 + root@am62xx-evm:~/iet2# ethtool -S eth1 | grep tx_pri3 + p0_tx_pri3: 0 + p0_tx_pri3_bcnt: 0 + p0_tx_pri3_drop: 0 + p0_tx_pri3_drop_bcnt: 0 + tx_pri3: 126634 + tx_pri3_bcnt: 192715723 + tx_pri3_drop: 0 + tx_pri3_drop_bcnt: 0 + root@am62xx-evm:~/iet2# ethtool -I --show-mm eth1 + MAC Merge layer state for eth1: + pMAC enabled: on + TX enabled: on + TX active: on + TX minimum fragment size: 124 + RX minimum fragment size: 124 + Verify enabled: on + Verify time: 10 + Max verify time: 128 + Verification status: SUCCEEDED + Statistics: + MACMergeFrameAssErrorCount: 0 + MACMergeFrameSmdErrorCount: 0 + MACMergeFrameAssOkCount: 0 + MACMergeFragCountRx: 0 + MACMergeFragCountTx: 35437 + MACMergeHoldCount: 0 On J7ES (Receiver): -.. code-block:: console - - root@j721e-evm:~/iet2# ethtool -I --show-mm eth0 - MAC Merge layer state for eth0: - pMAC enabled: on - TX enabled: on - TX active: on - TX minimum fragment size: 124 - RX minimum fragment size: 124 - Verify enabled: on - Verify time: 10 - Max verify time: 128 - Verification status: SUCCEEDED - Statistics: +.. code:: console + + root@j721e-evm:~/iet2# ethtool -I --show-mm eth0 + MAC Merge layer state for eth0: + pMAC enabled: on + TX enabled: on + TX active: on + TX minimum fragment size: 124 + RX minimum fragment size: 124 + Verify enabled: on + Verify time: 10 + Max verify time: 128 + Verification status: SUCCEEDED + Statistics: MACMergeFrameAssErrorCount: 0 MACMergeFrameSmdErrorCount: 89 MACMergeFrameAssOkCount: 28362 @@ -1124,182 +1123,182 @@ J7VCL. 1. Create and run the following script on J7VCL: -.. code-block:: console - - #!/bin/sh - - ifconfig eth1 down - ifconfig eth2 down - ifconfig eth3 down - ifconfig eth4 down - ethtool -L eth2 tx 4 - ethtool --set-priv-flags eth2 p0-rx-ptype-rrobin off - ethtool --set-mm eth2 pmac-enabled on tx-enabled on verify-enabled on verify-time 10 tx-min-frag-size 124 - ifconfig eth1 up - ifconfig eth2 up - sleep 5 - - tc qdisc replace dev eth2 handle 100: parent root mqprio \ - num_tc 4 \ - map 0 1 2 3 \ - queues 1@0 1@1 1@2 1@3 \ - hw 1 \ - mode dcb \ - fp P P P E - - tc -g class show dev eth2 - - devlink dev param set platform/c000000.ethernet name switch_mode value true cmode runtime - ip link add name br0 type bridge - ip link set dev br0 type bridge ageing_time 1000 - ip link set dev eth1 up - ip link set dev eth2 up - ip link set dev eth1 master br0 - ip link set dev eth2 master br0 - ip link set dev br0 up - sleep 2 - - ip link set dev br0 type bridge vlan_filtering 1 - bridge vlan add dev br0 vid 100 self - bridge vlan add dev br0 vid 100 pvid tagged self - bridge vlan add dev eth1 vid 100 master - bridge vlan add dev eth2 vid 100 master - sleep 2 - - ip link add link br0 name br0.100 type vlan id 100 - ip link set br0.100 type vlan egress 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 - sleep 2 - - tc qdisc add dev br0.100 clsact - tc filter add dev br0.100 egress protocol ip prio 1 u32 match ip dport 5002 0xffff action skbedit priority 2 - sleep 2 +.. code:: sh + + #!/bin/sh + + ifconfig eth1 down + ifconfig eth2 down + ifconfig eth3 down + ifconfig eth4 down + ethtool -L eth2 tx 4 + ethtool --set-priv-flags eth2 p0-rx-ptype-rrobin off + ethtool --set-mm eth2 pmac-enabled on tx-enabled on verify-enabled on verify-time 10 tx-min-frag-size 124 + ifconfig eth1 up + ifconfig eth2 up + sleep 5 + + tc qdisc replace dev eth2 handle 100: parent root mqprio \ + num_tc 4 \ + map 0 1 2 3 \ + queues 1@0 1@1 1@2 1@3 \ + hw 1 \ + mode dcb \ + fp P P P E + + tc -g class show dev eth2 + + devlink dev param set platform/c000000.ethernet name switch_mode value true cmode runtime + ip link add name br0 type bridge + ip link set dev br0 type bridge ageing_time 1000 + ip link set dev eth1 up + ip link set dev eth2 up + ip link set dev eth1 master br0 + ip link set dev eth2 master br0 + ip link set dev br0 up + sleep 2 + + ip link set dev br0 type bridge vlan_filtering 1 + bridge vlan add dev br0 vid 100 self + bridge vlan add dev br0 vid 100 pvid tagged self + bridge vlan add dev eth1 vid 100 master + bridge vlan add dev eth2 vid 100 master + sleep 2 + + ip link add link br0 name br0.100 type vlan id 100 + ip link set br0.100 type vlan egress 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 + sleep 2 + + tc qdisc add dev br0.100 clsact + tc filter add dev br0.100 egress protocol ip prio 1 u32 match ip dport 5002 0xffff action skbedit priority 2 + sleep 2 2. Create and run the following script on J7ES: -.. code-block:: console +.. code:: sh - #!/bin/sh - #iet-setup-mqprio.sh + #!/bin/sh + #iet-setup-mqprio.sh - ifconfig eth0 down - ethtool -L eth0 tx 4 - ethtool --set-priv-flags eth0 p0-rx-ptype-rrobin off - ethtool --set-mm eth0 pmac-enabled on tx-enabled on verify-enabled on verify-time 10 tx-min-frag-siz4 - ifconfig eth0 up - sleep 10 + ifconfig eth0 down + ethtool -L eth0 tx 4 + ethtool --set-priv-flags eth0 p0-rx-ptype-rrobin off + ethtool --set-mm eth0 pmac-enabled on tx-enabled on verify-enabled on verify-time 10 tx-min-frag-siz4 + ifconfig eth0 up + sleep 10 - ip link add link eth0 name eth0.100 type vlan id 100 - sleep 5 - ifconfig eth0.100 192.168.100.30 - iperf3 -s -i30 -p5001& - iperf3 -s -i30 -p5002& - iperf3 -s -i30 -p5003& + ip link add link eth0 name eth0.100 type vlan id 100 + sleep 5 + ifconfig eth0.100 192.168.100.30 + iperf3 -s -i30 -p5001& + iperf3 -s -i30 -p5002& + iperf3 -s -i30 -p5003& 3. Create and run the following script on AM625-SK: -.. code-block:: console +.. code:: sh - #!/bin/sh - #iet-setup-mqprio.sh + #!/bin/sh + #iet-setup-mqprio.sh - ifconfig eth0 down - ethtool -L eth0 tx 4 - ethtool --set-priv-flags eth0 p0-rx-ptype-rrobin off - ethtool --set-mm eth0 pmac-enabled on tx-enabled on verify-enabled on verify-time 10 tx-min-frag-size 124 - ifconfig eth0 up - sleep 10 - ip link add link eth0 name eth0.100 type vlan id 100 - ip link set eth0.100 type vlan egress 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 - sleep 5 + ifconfig eth0 down + ethtool -L eth0 tx 4 + ethtool --set-priv-flags eth0 p0-rx-ptype-rrobin off + ethtool --set-mm eth0 pmac-enabled on tx-enabled on verify-enabled on verify-time 10 tx-min-frag-size 124 + ifconfig eth0 up + sleep 10 + ip link add link eth0 name eth0.100 type vlan id 100 + ip link set eth0.100 type vlan egress 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 + sleep 5 - tc qdisc add dev eth0.100 clsact - tc filter add dev eth0.100 egress protocol ip prio 1 u32 match ip dport 5003 0xffff action skbedit p3 - ifconfig eth0.100 192.168.100.20 netmask 255.255.255.0 - sleep 2 + tc qdisc add dev eth0.100 clsact + tc filter add dev eth0.100 egress protocol ip prio 1 u32 match ip dport 5003 0xffff action skbedit p3 + ifconfig eth0.100 192.168.100.20 netmask 255.255.255.0 + sleep 2 4. Run the following commands on J7VCL: -.. code-block:: console +.. code:: console - ifconfig br0.100 192.168.100.10 - sleep 10 - iperf3 -c 192.168.100.30 -u -b100M -l1472 t30 -i30 -p5001& - iperf3 -c 192.168.100.30 -u -b100M -l1472 t30 -i30 -p5002& + ifconfig br0.100 192.168.100.10 + sleep 10 + iperf3 -c 192.168.100.30 -u -b100M -l1472 t30 -i30 -p5001& + iperf3 -c 192.168.100.30 -u -b100M -l1472 t30 -i30 -p5002& 5. Now, run the following command on AM625-SK: -.. code-block:: console +.. code:: console - iperf3 -c 192.168.100.30 -u -b50M -l1472 -t30 -i30 -p5003& + iperf3 -c 192.168.100.30 -u -b50M -l1472 -t30 -i30 -p5003& **Results:** On J7VCL (Switch): -.. code-block:: console - - root@j7200-evm:~/iet2# ethtool -S eth2 | grep tx_pri0 - p0_tx_pri0: 156 - p0_tx_pri0_bcnt: 29465 - p0_tx_pri0_drop: 0 - p0_tx_pri0_drop_bcnt: 0 - tx_pri0: 254971 - tx_pri0_bcnt: 387767517 - tx_pri0_drop: 0 - tx_pri0_drop_bcnt: 0 - root@j7200-evm:~/iet2# ethtool -S eth2 | grep tx_pri2 - p0_tx_pri2: 0 - p0_tx_pri2_bcnt: 0 - p0_tx_pri2_drop: 0 - p0_tx_pri2_drop_bcnt: 0 - tx_pri2: 254765 - tx_pri2_bcnt: 387729655 - tx_pri2_drop: 0 - tx_pri2_drop_bcnt: 0 - root@j7200-evm:~/iet2# ethtool -S eth2 | grep tx_pri3 - p0_tx_pri3: 0 - p0_tx_pri3_bcnt: 0 - p0_tx_pri3_drop: 0 - p0_tx_pri3_drop_bcnt: 0 - tx_pri3: 127385 - tx_pri3_bcnt: 193858727 - tx_pri3_drop: 0 - tx_pri3_drop_bcnt: 0 - root@j7200-evm:~/iet2# ethtool -I --show-mm eth2 - MAC Merge layer state for eth2: - pMAC enabled: on - TX enabled: on - TX active: on - TX minimum fragment size: 124 - RX minimum fragment size: 124 - Verify enabled: on - Verify time: 10 - Max verify time: 128 - Verification status: SUCCEEDED - Statistics: - MACMergeFrameAssErrorCount: 0 - MACMergeFrameSmdErrorCount: 1 - MACMergeFrameAssOkCount: 0 - MACMergeFragCountRx: 0 - MACMergeFragCountTx: 242 - MACMergeHoldCount: 0 +.. code:: console + + root@j7200-evm:~/iet2# ethtool -S eth2 | grep tx_pri0 + p0_tx_pri0: 156 + p0_tx_pri0_bcnt: 29465 + p0_tx_pri0_drop: 0 + p0_tx_pri0_drop_bcnt: 0 + tx_pri0: 254971 + tx_pri0_bcnt: 387767517 + tx_pri0_drop: 0 + tx_pri0_drop_bcnt: 0 + root@j7200-evm:~/iet2# ethtool -S eth2 | grep tx_pri2 + p0_tx_pri2: 0 + p0_tx_pri2_bcnt: 0 + p0_tx_pri2_drop: 0 + p0_tx_pri2_drop_bcnt: 0 + tx_pri2: 254765 + tx_pri2_bcnt: 387729655 + tx_pri2_drop: 0 + tx_pri2_drop_bcnt: 0 + root@j7200-evm:~/iet2# ethtool -S eth2 | grep tx_pri3 + p0_tx_pri3: 0 + p0_tx_pri3_bcnt: 0 + p0_tx_pri3_drop: 0 + p0_tx_pri3_drop_bcnt: 0 + tx_pri3: 127385 + tx_pri3_bcnt: 193858727 + tx_pri3_drop: 0 + tx_pri3_drop_bcnt: 0 + root@j7200-evm:~/iet2# ethtool -I --show-mm eth2 + MAC Merge layer state for eth2: + pMAC enabled: on + TX enabled: on + TX active: on + TX minimum fragment size: 124 + RX minimum fragment size: 124 + Verify enabled: on + Verify time: 10 + Max verify time: 128 + Verification status: SUCCEEDED + Statistics: + MACMergeFrameAssErrorCount: 0 + MACMergeFrameSmdErrorCount: 1 + MACMergeFrameAssOkCount: 0 + MACMergeFragCountRx: 0 + MACMergeFragCountTx: 242 + MACMergeHoldCount: 0 On J7ES (Receiver): -.. code-block:: console - - root@j721e-evm:~/iet2# ethtool -I --show-mm eth0 - MAC Merge layer state for eth0: - pMAC enabled: on - TX enabled: on - TX active: on - TX minimum fragment size: 124 - RX minimum fragment size: 124 - Verify enabled: on - Verify time: 10 - Max verify time: 128 - Verification status: SUCCEEDED - Statistics: +.. code:: console + + root@j721e-evm:~/iet2# ethtool -I --show-mm eth0 + MAC Merge layer state for eth0: + pMAC enabled: on + TX enabled: on + TX active: on + TX minimum fragment size: 124 + RX minimum fragment size: 124 + Verify enabled: on + Verify time: 10 + Max verify time: 128 + Verification status: SUCCEEDED + Statistics: MACMergeFrameAssErrorCount: 0 MACMergeFrameSmdErrorCount: 121 MACMergeFrameAssOkCount: 125 @@ -1312,9 +1311,9 @@ CASE-3: Frame is preempted on both Sender and Switch Egress Port .. important:: - For the following tests, all interfaces which are a part of the test - need to be a part of the same VLAN, since the switch needs to receive - priority of the frames in order to perform preemption. + For the following tests, all interfaces which are a part of the test + need to be a part of the same VLAN, since the switch needs to receive + priority of the frames in order to perform preemption. In addition to the Sender, the Switch's Host Port also transmits traffic of lower priority to the receiver. This is done to ensure a higher chance @@ -1333,145 +1332,145 @@ AM625-SK 1. Create and run the following script on AM625-SK: -.. code-block:: console - - #!/bin/sh - - ifconfig eth0 down - ifconfig eth1 down - ethtool -L eth0 tx 4 - ethtool --set-priv-flags eth0 p0-rx-ptype-rrobin off - ethtool --set-mm eth0 pmac-enabled on tx-enabled on verify-enabled on verify-time 10 tx-min-frag-size 124 - ethtool -L eth1 tx 4 - ethtool --set-priv-flags eth1 p0-rx-ptype-rrobin off - ethtool --set-mm eth1 pmac-enabled on tx-enabled on verify-enabled on verify-time 10 tx-min-frag-size 124 - ifconfig eth0 up - ifconfig eth1 up - sleep 5 - - tc qdisc replace dev eth1 handle 100: parent root mqprio \ - num_tc 4 \ - map 0 1 2 3 \ - queues 1@0 1@1 1@2 1@3 \ - hw 1 \ - mode dcb \ - fp P P P E - - tc -g class show dev eth1 - - devlink dev param set platform/8000000.ethernet name switch_mode value true cmode runtime - ip link add name br0 type bridge - ip link set dev br0 type bridge ageing_time 1000 - ip link set dev eth0 up - ip link set dev eth1 up - ip link set dev eth0 master br0 - ip link set dev eth1 master br0 - ip link set dev br0 up - sleep 2 - - ip link set dev br0 type bridge vlan_filtering 1 - bridge vlan add dev br0 vid 100 self - bridge vlan add dev br0 vid 100 pvid tagged self - bridge vlan add dev eth0 vid 100 master - bridge vlan add dev eth1 vid 100 master - sleep 2 - - ip link add link br0 name br0.100 type vlan id 100 - ip link set br0.100 type vlan egress 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 - sleep 2 - - tc qdisc add dev br0.100 clsact - tc filter add dev br0.100 egress protocol ip prio 1 u32 match ip dport 5002 0xffff action skbedit priority 2 - sleep 2 +.. code:: sh + + #!/bin/sh + + ifconfig eth0 down + ifconfig eth1 down + ethtool -L eth0 tx 4 + ethtool --set-priv-flags eth0 p0-rx-ptype-rrobin off + ethtool --set-mm eth0 pmac-enabled on tx-enabled on verify-enabled on verify-time 10 tx-min-frag-size 124 + ethtool -L eth1 tx 4 + ethtool --set-priv-flags eth1 p0-rx-ptype-rrobin off + ethtool --set-mm eth1 pmac-enabled on tx-enabled on verify-enabled on verify-time 10 tx-min-frag-size 124 + ifconfig eth0 up + ifconfig eth1 up + sleep 5 + + tc qdisc replace dev eth1 handle 100: parent root mqprio \ + num_tc 4 \ + map 0 1 2 3 \ + queues 1@0 1@1 1@2 1@3 \ + hw 1 \ + mode dcb \ + fp P P P E + + tc -g class show dev eth1 + + devlink dev param set platform/8000000.ethernet name switch_mode value true cmode runtime + ip link add name br0 type bridge + ip link set dev br0 type bridge ageing_time 1000 + ip link set dev eth0 up + ip link set dev eth1 up + ip link set dev eth0 master br0 + ip link set dev eth1 master br0 + ip link set dev br0 up + sleep 2 + + ip link set dev br0 type bridge vlan_filtering 1 + bridge vlan add dev br0 vid 100 self + bridge vlan add dev br0 vid 100 pvid tagged self + bridge vlan add dev eth0 vid 100 master + bridge vlan add dev eth1 vid 100 master + sleep 2 + + ip link add link br0 name br0.100 type vlan id 100 + ip link set br0.100 type vlan egress 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 + sleep 2 + + tc qdisc add dev br0.100 clsact + tc filter add dev br0.100 egress protocol ip prio 1 u32 match ip dport 5002 0xffff action skbedit priority 2 + sleep 2 2. Create and run the following script on J7ES: -.. code-block:: console +.. code:: sh - #!/bin/sh + #!/bin/sh - ifconfig eth0 down - ethtool -L eth0 tx 4 - ethtool --set-priv-flags eth0 p0-rx-ptype-rrobin off - ethtool --set-mm eth0 pmac-enabled on tx-enabled on verify-enabled on verify-time 10 tx-min-frag-size 124 - ifconfig eth0 up - sleep 5 + ifconfig eth0 down + ethtool -L eth0 tx 4 + ethtool --set-priv-flags eth0 p0-rx-ptype-rrobin off + ethtool --set-mm eth0 pmac-enabled on tx-enabled on verify-enabled on verify-time 10 tx-min-frag-size 124 + ifconfig eth0 up + sleep 5 - ip link add link eth0 name eth0.100 type vlan id 100 - sleep 5 - ifconfig eth0.100 192.168.100.30 - iperf3 -s -i30 -p5001& - iperf3 -s -i30 -p5002& - iperf3 -s -i30 -p5003& - iperf3 -s -i30 -p5004& - iperf3 -s -i30 -p5005& + ip link add link eth0 name eth0.100 type vlan id 100 + sleep 5 + ifconfig eth0.100 192.168.100.30 + iperf3 -s -i30 -p5001& + iperf3 -s -i30 -p5002& + iperf3 -s -i30 -p5003& + iperf3 -s -i30 -p5004& + iperf3 -s -i30 -p5005& 3. Create and run the following script on J7VCL: -.. code-block:: console +.. code:: sh - #!/bin/sh + #!/bin/sh - ifconfig eth0 down - ethtool -L eth0 tx 4 - ethtool --set-priv-flags eth0 p0-rx-ptype-rrobin off - ethtool --set-mm eth0 pmac-enabled on tx-enabled on verify-enabled on verify-time 10 tx-min-frag-size 124 - ifconfig eth0 up - sleep 5 + ifconfig eth0 down + ethtool -L eth0 tx 4 + ethtool --set-priv-flags eth0 p0-rx-ptype-rrobin off + ethtool --set-mm eth0 pmac-enabled on tx-enabled on verify-enabled on verify-time 10 tx-min-frag-size 124 + ifconfig eth0 up + sleep 5 - tc qdisc replace dev eth0 handle 100: parent root mqprio \ - num_tc 4 \ - map 0 1 2 3 \ - queues 1@0 1@1 1@2 1@3 \ - hw 1 \ - mode dcb \ - fp P P P E + tc qdisc replace dev eth0 handle 100: parent root mqprio \ + num_tc 4 \ + map 0 1 2 3 \ + queues 1@0 1@1 1@2 1@3 \ + hw 1 \ + mode dcb \ + fp P P P E - ip link add link eth0 name eth0.100 type vlan id 100 - ip link set eth0.100 type vlan egress 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 - sleep 5 + ip link add link eth0 name eth0.100 type vlan id 100 + ip link set eth0.100 type vlan egress 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 + sleep 5 - tc qdisc add dev eth0.100 clsact - tc filter add dev eth0.100 egress protocol ip prio 1 u32 match ip dport 5003 0xffff action skbedit priority 3 - tc filter add dev eth0.100 egress protocol ip prio 1 u32 match ip dport 5002 0xffff action skbedit priority 2 - ifconfig eth0.100 192.168.100.20 netmask 255.255.255.0 - sleep 2 + tc qdisc add dev eth0.100 clsact + tc filter add dev eth0.100 egress protocol ip prio 1 u32 match ip dport 5003 0xffff action skbedit priority 3 + tc filter add dev eth0.100 egress protocol ip prio 1 u32 match ip dport 5002 0xffff action skbedit priority 2 + ifconfig eth0.100 192.168.100.20 netmask 255.255.255.0 + sleep 2 4. Run the following commands on AM625-SK (Switch): -.. code-block:: console +.. code:: console - ifconfig br0.100 192.168.100.10 - sleep 10 - iperf3 -c 192.168.100.30 -u -b100M -l1472 t30 -i30 -p5001& \ - iperf3 -c 192.168.100.30 -u -b100M -l1472 t30 -i30 -p5002& + ifconfig br0.100 192.168.100.10 + sleep 10 + iperf3 -c 192.168.100.30 -u -b100M -l1472 t30 -i30 -p5001& \ + iperf3 -c 192.168.100.30 -u -b100M -l1472 t30 -i30 -p5002& 5. Now, run the following commands on J7VCL(Sender): -.. code-block:: console +.. code:: console - iperf3 -c 192.168.100.30 -u -b100M -l1472 -t30 -i30 -p5003& \ - iperf3 -c 192.168.100.30 -u -b50M -l1472 -t30 -i30 -p5004& \ - iperf3 -c 192.168.100.30 -u -b100M -l1472 -t30 -i30 -p5005& + iperf3 -c 192.168.100.30 -u -b100M -l1472 -t30 -i30 -p5003& \ + iperf3 -c 192.168.100.30 -u -b50M -l1472 -t30 -i30 -p5004& \ + iperf3 -c 192.168.100.30 -u -b100M -l1472 -t30 -i30 -p5005& **Results:** On J7VCL (Sender): -.. code-block:: console - - root@j7200-evm:~/iet2# ethtool -I --show-mm eth0 - MAC Merge layer state for eth0: - pMAC enabled: on - TX enabled: on - TX active: on - TX minimum fragment size: 124 - RX minimum fragment size: 124 - Verify enabled: on - Verify time: 10 - Max verify time: 128 - Verification status: SUCCEEDED - Statistics: +.. code:: console + + root@j7200-evm:~/iet2# ethtool -I --show-mm eth0 + MAC Merge layer state for eth0: + pMAC enabled: on + TX enabled: on + TX active: on + TX minimum fragment size: 124 + RX minimum fragment size: 124 + Verify enabled: on + Verify time: 10 + Max verify time: 128 + Verification status: SUCCEEDED + Statistics: MACMergeFrameAssErrorCount: 0 MACMergeFrameSmdErrorCount: 45 MACMergeFrameAssOkCount: 0 @@ -1481,20 +1480,20 @@ On J7VCL (Sender): On AM625-SK (Switch): -.. code-block:: console - - root@am62xx-evm:~/iet2# ethtool -I --show-mm eth0 - MAC Merge layer state for eth0: - pMAC enabled: on - TX enabled: on - TX active: on - TX minimum fragment size: 124 - RX minimum fragment size: 124 - Verify enabled: on - Verify time: 10 - Max verify time: 128 - Verification status: SUCCEEDED - Statistics: +.. code:: console + + root@am62xx-evm:~/iet2# ethtool -I --show-mm eth0 + MAC Merge layer state for eth0: + pMAC enabled: on + TX enabled: on + TX active: on + TX minimum fragment size: 124 + RX minimum fragment size: 124 + Verify enabled: on + Verify time: 10 + Max verify time: 128 + Verification status: SUCCEEDED + Statistics: MACMergeFrameAssErrorCount: 2 MACMergeFrameSmdErrorCount: 96 MACMergeFrameAssOkCount: 10420 @@ -1502,18 +1501,18 @@ On AM625-SK (Switch): MACMergeFragCountTx: 0 MACMergeHoldCount: 0 - root@am62xx-evm:~/iet2# ethtool -I --show-mm eth1 - MAC Merge layer state for eth1: - pMAC enabled: on - TX enabled: on - TX active: on - TX minimum fragment size: 124 - RX minimum fragment size: 124 - Verify enabled: on - Verify time: 10 - Max verify time: 128 - Verification status: SUCCEEDED - Statistics: + root@am62xx-evm:~/iet2# ethtool -I --show-mm eth1 + MAC Merge layer state for eth1: + pMAC enabled: on + TX enabled: on + TX active: on + TX minimum fragment size: 124 + RX minimum fragment size: 124 + Verify enabled: on + Verify time: 10 + Max verify time: 128 + Verification status: SUCCEEDED + Statistics: MACMergeFrameAssErrorCount: 0 MACMergeFrameSmdErrorCount: 0 MACMergeFrameAssOkCount: 0 @@ -1523,20 +1522,20 @@ On AM625-SK (Switch): On J7ES (Receiver): -.. code-block:: console - - root@j721e-evm:~/iet2# ethtool -I --show-mm eth0 - MAC Merge layer state for eth0: - pMAC enabled: on - TX enabled: on - TX active: on - TX minimum fragment size: 124 - RX minimum fragment size: 124 - Verify enabled: on - Verify time: 10 - Max verify time: 128 - Verification status: SUCCEEDED - Statistics: +.. code:: console + + root@j721e-evm:~/iet2# ethtool -I --show-mm eth0 + MAC Merge layer state for eth0: + pMAC enabled: on + TX enabled: on + TX active: on + TX minimum fragment size: 124 + RX minimum fragment size: 124 + Verify enabled: on + Verify time: 10 + Max verify time: 128 + Verification status: SUCCEEDED + Statistics: MACMergeFrameAssErrorCount: 0 MACMergeFrameSmdErrorCount: 76 MACMergeFrameAssOkCount: 30473 @@ -1554,145 +1553,145 @@ AM625-SK. 1. Create and run the following script on J7VCL: -.. code-block:: console - - #!/bin/sh - - ifconfig eth1 down - ifconfig eth2 down - ifconfig eth3 down - ifconfig eth4 down - ethtool -L eth1 tx 4 - ethtool --set-priv-flags eth1 p0-rx-ptype-rrobin off - ethtool --set-mm eth1 pmac-enabled on tx-enabled on verify-enabled on verify-time 10 tx-min-frag-size 124 - ethtool -L eth2 tx 4 - ethtool --set-priv-flags eth2 p0-rx-ptype-rrobin off - ethtool --set-mm eth2 pmac-enabled on tx-enabled on verify-enabled on verify-time 10 tx-min-frag-size 124 - ifconfig eth1 up - ifconfig eth2 up - sleep 5 - - tc qdisc replace dev eth2 handle 100: parent root mqprio \ - num_tc 4 \ - map 0 1 2 3 \ - queues 1@0 1@1 1@2 1@3 \ - hw 1 \ - mode dcb \ - fp P P P E - - tc -g class show dev eth2 - - devlink dev param set platform/c000000.ethernet name switch_mode value true cmode runtime - ip link add name br0 type bridge - ip link set dev br0 type bridge ageing_time 1000 - ip link set dev eth1 up - ip link set dev eth2 up - ip link set dev eth1 master br0 - ip link set dev eth2 master br0 - ip link set dev br0 up - sleep 2 - - ip link set dev br0 type bridge vlan_filtering 1 - bridge vlan add dev br0 vid 100 self - bridge vlan add dev br0 vid 100 pvid tagged self - bridge vlan add dev eth1 vid 100 master - bridge vlan add dev eth2 vid 100 master - sleep 2 - - ip link add link br0 name br0.100 type vlan id 100 - ip link set br0.100 type vlan egress 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 - sleep 2 - - tc qdisc add dev br0.100 clsact - tc filter add dev br0.100 egress protocol ip prio 1 u32 match ip dport 5002 0xffff action skbedit priority 2 - sleep 2 +.. code:: sh + + #!/bin/sh + + ifconfig eth1 down + ifconfig eth2 down + ifconfig eth3 down + ifconfig eth4 down + ethtool -L eth1 tx 4 + ethtool --set-priv-flags eth1 p0-rx-ptype-rrobin off + ethtool --set-mm eth1 pmac-enabled on tx-enabled on verify-enabled on verify-time 10 tx-min-frag-size 124 + ethtool -L eth2 tx 4 + ethtool --set-priv-flags eth2 p0-rx-ptype-rrobin off + ethtool --set-mm eth2 pmac-enabled on tx-enabled on verify-enabled on verify-time 10 tx-min-frag-size 124 + ifconfig eth1 up + ifconfig eth2 up + sleep 5 + + tc qdisc replace dev eth2 handle 100: parent root mqprio \ + num_tc 4 \ + map 0 1 2 3 \ + queues 1@0 1@1 1@2 1@3 \ + hw 1 \ + mode dcb \ + fp P P P E + + tc -g class show dev eth2 + + devlink dev param set platform/c000000.ethernet name switch_mode value true cmode runtime + ip link add name br0 type bridge + ip link set dev br0 type bridge ageing_time 1000 + ip link set dev eth1 up + ip link set dev eth2 up + ip link set dev eth1 master br0 + ip link set dev eth2 master br0 + ip link set dev br0 up + sleep 2 + + ip link set dev br0 type bridge vlan_filtering 1 + bridge vlan add dev br0 vid 100 self + bridge vlan add dev br0 vid 100 pvid tagged self + bridge vlan add dev eth1 vid 100 master + bridge vlan add dev eth2 vid 100 master + sleep 2 + + ip link add link br0 name br0.100 type vlan id 100 + ip link set br0.100 type vlan egress 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 + sleep 2 + + tc qdisc add dev br0.100 clsact + tc filter add dev br0.100 egress protocol ip prio 1 u32 match ip dport 5002 0xffff action skbedit priority 2 + sleep 2 2. Create and run the following script on J7ES: -.. code-block:: console +.. code:: console - ifconfig eth0 down - ethtool -L eth0 tx 4 - ethtool --set-priv-flags eth0 p0-rx-ptype-rrobin off - ethtool --set-mm eth0 pmac-enabled on tx-enabled on verify-enabled on verify-time 10 tx-min-frag-size 124 - ifconfig eth0 up - sleep 5 + ifconfig eth0 down + ethtool -L eth0 tx 4 + ethtool --set-priv-flags eth0 p0-rx-ptype-rrobin off + ethtool --set-mm eth0 pmac-enabled on tx-enabled on verify-enabled on verify-time 10 tx-min-frag-size 124 + ifconfig eth0 up + sleep 5 - ip link add link eth0 name eth0.100 type vlan id 100 - sleep 5 - ifconfig eth0.100 192.168.100.30 - iperf3 -s -i30 -p5001& - iperf3 -s -i30 -p5002& - iperf3 -s -i30 -p5003& - iperf3 -s -i30 -p5004& - iperf3 -s -i30 -p5005& + ip link add link eth0 name eth0.100 type vlan id 100 + sleep 5 + ifconfig eth0.100 192.168.100.30 + iperf3 -s -i30 -p5001& + iperf3 -s -i30 -p5002& + iperf3 -s -i30 -p5003& + iperf3 -s -i30 -p5004& + iperf3 -s -i30 -p5005& 3. Create and run the following script on J7VCL: -.. code-block:: console +.. code:: sh - #!/bin/sh + #!/bin/sh - ifconfig eth0 down - ethtool -L eth0 tx 4 - ethtool --set-priv-flags eth0 p0-rx-ptype-rrobin off - ethtool --set-mm eth0 pmac-enabled on tx-enabled on verify-enabled on verify-time 10 tx-min-frag-size 124 - ifconfig eth0 up - sleep 5 + ifconfig eth0 down + ethtool -L eth0 tx 4 + ethtool --set-priv-flags eth0 p0-rx-ptype-rrobin off + ethtool --set-mm eth0 pmac-enabled on tx-enabled on verify-enabled on verify-time 10 tx-min-frag-size 124 + ifconfig eth0 up + sleep 5 - tc qdisc replace dev eth0 handle 100: parent root mqprio \ - num_tc 4 \ - map 0 1 2 3 \ - queues 1@0 1@1 1@2 1@3 \ - hw 1 \ - mode dcb \ - fp P P P E + tc qdisc replace dev eth0 handle 100: parent root mqprio \ + num_tc 4 \ + map 0 1 2 3 \ + queues 1@0 1@1 1@2 1@3 \ + hw 1 \ + mode dcb \ + fp P P P E - ip link add link eth0 name eth0.100 type vlan id 100 - ip link set eth0.100 type vlan egress 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 - sleep 5 + ip link add link eth0 name eth0.100 type vlan id 100 + ip link set eth0.100 type vlan egress 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 + sleep 5 - tc qdisc add dev eth0.100 clsact - tc filter add dev eth0.100 egress protocol ip prio 1 u32 match ip dport 5003 0xffff action skbedit priority 3 - tc filter add dev eth0.100 egress protocol ip prio 1 u32 match ip dport 5002 0xffff action skbedit priority 2 - ifconfig eth0.100 192.168.100.20 netmask 255.255.255.0 - sleep 2 + tc qdisc add dev eth0.100 clsact + tc filter add dev eth0.100 egress protocol ip prio 1 u32 match ip dport 5003 0xffff action skbedit priority 3 + tc filter add dev eth0.100 egress protocol ip prio 1 u32 match ip dport 5002 0xffff action skbedit priority 2 + ifconfig eth0.100 192.168.100.20 netmask 255.255.255.0 + sleep 2 4. Run the following commands on AM625-SK: -.. code-block:: console +.. code:: console - ifconfig br0.100 192.168.100.10 - sleep 10 - iperf3 -c 192.168.100.30 -u -b100M -l1472 t30 -i30 -p5001& \ - iperf3 -c 192.168.100.30 -u -b100M -l1472 t30 -i30 -p5002& + ifconfig br0.100 192.168.100.10 + sleep 10 + iperf3 -c 192.168.100.30 -u -b100M -l1472 t30 -i30 -p5001& \ + iperf3 -c 192.168.100.30 -u -b100M -l1472 t30 -i30 -p5002& 5. Now, run the following commands on J7VCL: -.. code-block:: console +.. code:: console - iperf3 -c 192.168.100.30 -u -b100M -l1472 -t30 -i30 -p5003& \ - iperf3 -c 192.168.100.30 -u -b50M -l1472 -t30 -i30 -p5004& \ - iperf3 -c 192.168.100.30 -u -b100M -l1472 -t30 -i30 -p5005& + iperf3 -c 192.168.100.30 -u -b100M -l1472 -t30 -i30 -p5003& \ + iperf3 -c 192.168.100.30 -u -b50M -l1472 -t30 -i30 -p5004& \ + iperf3 -c 192.168.100.30 -u -b100M -l1472 -t30 -i30 -p5005& **Results:** On AM625-SK (Sender): -.. code-block:: console - - root@am62xx-evm:~/iet2# ethtool -I --show-mm eth0 - MAC Merge layer state for eth0: - pMAC enabled: on - TX enabled: on - TX active: on - TX minimum fragment size: 124 - RX minimum fragment size: 124 - Verify enabled: on - Verify time: 10 - Max verify time: 128 - Verification status: SUCCEEDED - Statistics: +.. code:: console + + root@am62xx-evm:~/iet2# ethtool -I --show-mm eth0 + MAC Merge layer state for eth0: + pMAC enabled: on + TX enabled: on + TX active: on + TX minimum fragment size: 124 + RX minimum fragment size: 124 + Verify enabled: on + Verify time: 10 + Max verify time: 128 + Verification status: SUCCEEDED + Statistics: MACMergeFrameAssErrorCount: 0 MACMergeFrameSmdErrorCount: 43 MACMergeFrameAssOkCount: 0 @@ -1702,20 +1701,20 @@ On AM625-SK (Sender): On J7VCL (Switch): -.. code-block:: console - - root@j7200-evm:~/iet2# ethtool -I --show-mm eth1 - MAC Merge layer state for eth1: - pMAC enabled: on - TX enabled: on - TX active: on - TX minimum fragment size: 124 - RX minimum fragment size: 124 - Verify enabled: on - Verify time: 10 - Max verify time: 128 - Verification status: SUCCEEDED - Statistics: +.. code:: console + + root@j7200-evm:~/iet2# ethtool -I --show-mm eth1 + MAC Merge layer state for eth1: + pMAC enabled: on + TX enabled: on + TX active: on + TX minimum fragment size: 124 + RX minimum fragment size: 124 + Verify enabled: on + Verify time: 10 + Max verify time: 128 + Verification status: SUCCEEDED + Statistics: MACMergeFrameAssErrorCount: 0 MACMergeFrameSmdErrorCount: 2 MACMergeFrameAssOkCount: 69784 @@ -1723,18 +1722,18 @@ On J7VCL (Switch): MACMergeFragCountTx: 0 MACMergeHoldCount: 0 - root@j7200-evm:~/iet2# ethtool -I --show-mm eth2 - MAC Merge layer state for eth2: - pMAC enabled: on - TX enabled: on - TX active: on - TX minimum fragment size: 124 - RX minimum fragment size: 124 - Verify enabled: on - Verify time: 10 - Max verify time: 128 - Verification status: SUCCEEDED - Statistics: + root@j7200-evm:~/iet2# ethtool -I --show-mm eth2 + MAC Merge layer state for eth2: + pMAC enabled: on + TX enabled: on + TX active: on + TX minimum fragment size: 124 + RX minimum fragment size: 124 + Verify enabled: on + Verify time: 10 + Max verify time: 128 + Verification status: SUCCEEDED + Statistics: MACMergeFrameAssErrorCount: 0 MACMergeFrameSmdErrorCount: 1 MACMergeFrameAssOkCount: 0 @@ -1744,20 +1743,20 @@ On J7VCL (Switch): On J7ES (Receiver): -.. code-block:: console - - root@j721e-evm:~/iet2# ethtool -I --show-mm eth0 - MAC Merge layer state for eth0: - pMAC enabled: on - TX enabled: on - TX active: on - TX minimum fragment size: 124 - RX minimum fragment size: 124 - Verify enabled: on - Verify time: 10 - Max verify time: 128 - Verification status: SUCCEEDED - Statistics: +.. code:: console + + root@j721e-evm:~/iet2# ethtool -I --show-mm eth0 + MAC Merge layer state for eth0: + pMAC enabled: on + TX enabled: on + TX active: on + TX minimum fragment size: 124 + RX minimum fragment size: 124 + Verify enabled: on + Verify time: 10 + Max verify time: 128 + Verification status: SUCCEEDED + Statistics: MACMergeFrameAssErrorCount: 31 MACMergeFrameSmdErrorCount: 3195 MACMergeFrameAssOkCount: 72757 diff --git a/source/linux/Foundational_Components/Kernel/Kernel_Drivers/Network/CPSW-PTP.rst b/source/linux/Foundational_Components/Kernel/Kernel_Drivers/Network/CPSW-PTP.rst index c3069ddde..a8535132a 100644 --- a/source/linux/Foundational_Components/Kernel/Kernel_Drivers/Network/CPSW-PTP.rst +++ b/source/linux/Foundational_Components/Kernel/Kernel_Drivers/Network/CPSW-PTP.rst @@ -20,76 +20,76 @@ enable support for SIOCSHWTSTAMP and SIOCGHWTSTAMP socket ioctls. The PTP exposes the PHC as a character device with standardized ioctls which usually can be found at path: -:: +.. code:: text - /dev/ptpN + /dev/ptpN Supported PTP hardware clock functionality: -:: +.. code:: text - Basic clock operations - - Set time - - Get time - - Shift the clock by a given offset atomically - - Adjust clock frequency + Basic clock operations + - Set time + - Get time + - Shift the clock by a given offset atomically + - Adjust clock frequency -:: +.. code:: text - Ancillary clock features - - Time stamp external events - - Periodic output signals configurable from user space - - Synchronization of the Linux system time via the PPS subsystem + Ancillary clock features + - Time stamp external events + - Periodic output signals configurable from user space + - Synchronization of the Linux system time via the PPS subsystem Supported parameters for SIOCSHWTSTAMP and SIOCGHWTSTAMP: -:: +.. code:: text - SIOCSHWTSTAMP - hwtstamp_config.flags = 0 - hwtstamp_config.tx_type - HWTSTAMP_TX_ON - enables hardware time stamping for outgoing packets - HWTSTAMP_TX_OFF - no outgoing packet will need hardware time stamping - hwtstamp_config.rx_filter - HWTSTAMP_FILTER_NONE - time stamp no incoming packet at all - HWTSTAMP_FILTER_ALL - time stamp any incoming packet + SIOCSHWTSTAMP + hwtstamp_config.flags = 0 + hwtstamp_config.tx_type + HWTSTAMP_TX_ON - enables hardware time stamping for outgoing packets + HWTSTAMP_TX_OFF - no outgoing packet will need hardware time stamping + hwtstamp_config.rx_filter + HWTSTAMP_FILTER_NONE - time stamp no incoming packet at all + HWTSTAMP_FILTER_ALL - time stamp any incoming packet CPTS PTP packet timestamping default configuration when enabled (SIOCSHWTSTAMP): -:: +.. code:: text - CPSW_PN_TS_CTL_REG - TS_MSG_TYPE_EN = 0xF (Sync, Delay_Req, Pdelay_Req, and Pdelay_Resp.) - TS_TX_ANNEX_F_EN = 1 - TS_TX_ANNEX_E_EN = 1 - TS_TX_ANNEX_D_EN = 1 - TS_TX_VLAN_LTYPE1_E = 1 + CPSW_PN_TS_CTL_REG + TS_MSG_TYPE_EN = 0xF (Sync, Delay_Req, Pdelay_Req, and Pdelay_Resp.) + TS_TX_ANNEX_F_EN = 1 + TS_TX_ANNEX_E_EN = 1 + TS_TX_ANNEX_D_EN = 1 + TS_TX_VLAN_LTYPE1_E = 1 -:: +.. code:: text - CPSW_PN_TS_CTL_LTYPE2_REG - TS_TTL_NONZERO = 1 - TS_320 = 1 - TS_319 = 1 - TS_132 = 1 - TS_131 = 1 - TS_130 = 1 - TS_129 = 1 - TS_107 = 1 - TS_LTYPE1 = 0x88F7 (ETH_P_1588) + CPSW_PN_TS_CTL_LTYPE2_REG + TS_TTL_NONZERO = 1 + TS_320 = 1 + TS_319 = 1 + TS_132 = 1 + TS_131 = 1 + TS_130 = 1 + TS_129 = 1 + TS_107 = 1 + TS_LTYPE1 = 0x88F7 (ETH_P_1588) -:: +.. code:: text - CPSW_PN_TS_SEQ_LTYPE_REG - TS_SEQ_ID_OFFSET = 0x1e - TS_LTYPE1 = 0x88F7 (ETH_P_1588) + CPSW_PN_TS_SEQ_LTYPE_REG + TS_SEQ_ID_OFFSET = 0x1e + TS_LTYPE1 = 0x88F7 (ETH_P_1588) -:: +.. code:: text - CPSW_PN_TS_VLAN_LTYPE_REG - TS_VLAN_LTYPE1 = 0x8100 (ETH_P_8021Q) + CPSW_PN_TS_VLAN_LTYPE_REG + TS_VLAN_LTYPE1 = 0x8100 (ETH_P_8021Q) For more information about PTP clock API and Network timestamping see Linux kernel documentation @@ -117,109 +117,109 @@ generation can be delayed (especially with low speed links) the ptp4l - create file ptp.cfg with content as below: -:: +.. code:: text - [global] - tx_timestamp_timeout 400 + [global] + tx_timestamp_timeout 400 - pass configuration file to ptp4l using "-f" option: -:: +.. code:: console - ptp4l -E -2 -H -i eth0 -l 6 -m -q -p /dev/ptpN -f ptp.cfg + ptp4l -E -2 -H -i eth0 -l 6 -m -q -p /dev/ptpN -f ptp.cfg - Slave Side Examples The following command can be used to run a ptp-over-L4 client on the evm in slave mode -:: +.. code:: console - ./ptp4l -E -4 -H -i eth0 -s -l 7 -m -q -p /dev/ptpN + ./ptp4l -E -4 -H -i eth0 -s -l 7 -m -q -p /dev/ptpN For ptp-over-L2 client, use the command -:: +.. code:: console - ./ptp4l -E -2 -H -i eth0 -s -l 7 -m -q -p /dev/ptpN + ./ptp4l -E -2 -H -i eth0 -s -l 7 -m -q -p /dev/ptpN - Master Side Examples ptp4l can also be run in master mode. For example, the following command starts a ptp4l-over-L2 master on an EVM using hardware timestamping, -:: +.. code:: console - ./ptp4l -E -2 -H -i eth0 -l 7 -m -q -p /dev/ptpN + ./ptp4l -E -2 -H -i eth0 -l 7 -m -q -p /dev/ptpN On a Linux PC which does not support hardware timestamping, the following command starts a ptp4l-over-L2 master using software timestamping. -:: +.. code:: console - ./ptp4l -E -2 -S -i eth0 -l 7 -m -q + ./ptp4l -E -2 -S -i eth0 -l 7 -m -q .. rubric:: Testing using testptp tool from Linux kernel :name: k3-testing-using-testptp-tool-from-linux-kernel - get the ptp clock time -:: +.. code:: console - # testptp -d /dev/ptpN -g - clock time: 1493255613.608918429 or Thu Apr 27 01:13:33 2017 + # testptp -d /dev/ptpN -g + clock time: 1493255613.608918429 or Thu Apr 27 01:13:33 2017 - query the ptp clock's capabilities -:: +.. code:: console - # testptp -d /dev/ptpN -c - capabilities: - 10000000 maximum frequency adjustment (ppb) - 0 programmable alarms - 4 external time stamp channels - 2 programmable periodic signals - 1 pulse per second - 0 programmable pins - 0 cross timestamping + # testptp -d /dev/ptpN -c + capabilities: + 10000000 maximum frequency adjustment (ppb) + 0 programmable alarms + 4 external time stamp channels + 2 programmable periodic signals + 1 pulse per second + 0 programmable pins + 0 cross timestamping - Sanity testing of cpts ref frequency Time difference between to testptp -g calls should be equal sleep time -:: +.. code:: console - # testptp -g -d /dev/ptpN && sleep 5 && testptp -g -d /dev/ptpN - clock time: 1493255884.565859901 or Thu Apr 27 01:18:04 2017 - clock time: 1493255889.611065421 or Thu Apr 27 01:18:09 2017 + # testptp -g -d /dev/ptpN && sleep 5 && testptp -g -d /dev/ptpN + clock time: 1493255884.565859901 or Thu Apr 27 01:18:04 2017 + clock time: 1493255889.611065421 or Thu Apr 27 01:18:09 2017 - shift the ptp clock time by 'val' seconds -:: +.. code:: console - # testptp -g -d /dev/ptpN && testptp -t 100 && testptp -g -d /dev/ptpN - clock time: 1493256107.640649117 or Thu Apr 27 01:21:47 2017 - time shift okay - clock time: 1493256207.678819093 or Thu Apr 27 01:23:27 2017 + # testptp -g -d /dev/ptpN && testptp -t 100 && testptp -g -d /dev/ptpN + clock time: 1493256107.640649117 or Thu Apr 27 01:21:47 2017 + time shift okay + clock time: 1493256207.678819093 or Thu Apr 27 01:23:27 2017 - set the ptp clock time to 'val' seconds -:: +.. code:: console - # testptp -g -d /dev/ptpN && testptp -T 1000000 && testptp -g -d /dev/ptpN - clock time: 1493256277.568238925 or Thu Apr 27 01:24:37 2017 - set time okay - clock time: 100.018944504 or Thu Jan 1 00:01:40 1970 + # testptp -g -d /dev/ptpN && testptp -T 1000000 && testptp -g -d /dev/ptpN + clock time: 1493256277.568238925 or Thu Apr 27 01:24:37 2017 + set time okay + clock time: 100.018944504 or Thu Jan 1 00:01:40 1970 - adjust the ptp clock frequency by 'val' ppb -:: +.. code:: console - # testptp -g -d /dev/ptpN && testptp -f 1000000 && testptp -g -d /dev/ptpN - clock time: 151.347795184 or Thu Jan 1 00:02:31 1970 - frequency adjustment okay - clock time: 151.386187454 or Thu Jan 1 00:02:31 1970 + # testptp -g -d /dev/ptpN && testptp -f 1000000 && testptp -g -d /dev/ptpN + clock time: 151.347795184 or Thu Jan 1 00:02:31 1970 + frequency adjustment okay + clock time: 151.386187454 or Thu Jan 1 00:02:31 1970 .. rubric:: Time stamping external events :name: k3-example-of-using-time-stamp-external-events @@ -242,59 +242,59 @@ GENF0 to HW4_TS_PUSH added. .. ifconfig:: CONFIG_part_variant in ('AM62AX','AM62X') - :: + .. code:: dts - #define TS_OFFSET(pa, val) (0x4+(pa)*4) (0x10000 | val) - ×ync_router { - pinctrl-names = "default"; - pinctrl-0 = <&cpsw_cpts>; + #define TS_OFFSET(pa, val) (0x4+(pa)*4) (0x10000 | val) + ×ync_router { + pinctrl-names = "default"; + pinctrl-0 = <&cpsw_cpts>; - /* Example of the timesync routing */ - cpsw_cpts: cpsw-cpts { - pinctrl-single,pins = < - /* pps [cpsw cpts genf0] in16 -> out13 [cpsw cpts hw4_push] */ - TS_OFFSET(13, 16) - >; - }; - }; + /* Example of the timesync routing */ + cpsw_cpts: cpsw-cpts { + pinctrl-single,pins = < + /* pps [cpsw cpts genf0] in16 -> out13 [cpsw cpts hw4_push] */ + TS_OFFSET(13, 16) + >; + }; + }; .. ifconfig:: CONFIG_part_variant in ('AM64X') - :: + .. code:: dts - #define TS_OFFSET(pa, val) (0x4+(pa)*4) (0x10000 | val) + #define TS_OFFSET(pa, val) (0x4+(pa)*4) (0x10000 | val) - ×ync_router { - pinctrl-names = "default"; - pinctrl-0 = <&cpsw_cpts>; + ×ync_router { + pinctrl-names = "default"; + pinctrl-0 = <&cpsw_cpts>; - /* Example of the timesync routing */ - cpsw_cpts: cpsw-cpts { - pinctrl-single,pins = < - /* pps [cpsw cpts genf0] in21 -> out33 [cpsw cpts hw4_push] */ - TS_OFFSET(33, 21) - >; - }; - }; + /* Example of the timesync routing */ + cpsw_cpts: cpsw-cpts { + pinctrl-single,pins = < + /* pps [cpsw cpts genf0] in21 -> out33 [cpsw cpts hw4_push] */ + TS_OFFSET(33, 21) + >; + }; + }; .. ifconfig:: CONFIG_part_variant in ('J721E','J7200','J721S2','J784S4','J742S2') - :: + .. code:: dts - #define TS_OFFSET(pa, val) (0x4+(pa)*4) (0x10000 | val) + #define TS_OFFSET(pa, val) (0x4+(pa)*4) (0x10000 | val) - ×ync_router { - pinctrl-names = "default"; - pinctrl-0 = <&cpsw_cpts>; + ×ync_router { + pinctrl-names = "default"; + pinctrl-0 = <&cpsw_cpts>; - /* Example of the timesync routing */ - cpsw_cpts: cpsw-cpts { - pinctrl-single,pins = < - /* pps [cpsw cpts genf0] in16 -> out25 [cpsw cpts hw4_push] */ - TS_OFFSET(25, 16) - >; - }; - }; + /* Example of the timesync routing */ + cpsw_cpts: cpsw-cpts { + pinctrl-single,pins = < + /* pps [cpsw cpts genf0] in16 -> out25 [cpsw cpts hw4_push] */ + TS_OFFSET(25, 16) + >; + }; + }; Similar approach can be used for routing the outputs of other timestamp generator functions (GENFy) as inputs to other Hardware Timestamping push inputs (HWx_TS_PUSH). @@ -306,73 +306,73 @@ The Input Sources for the Time Sync Router are documented at: .. ifconfig:: CONFIG_part_variant in ('AM62AX') - `Time Sync Router Input Sources for AM62AX `_ + `Time Sync Router Input Sources for AM62AX `_ .. ifconfig:: CONFIG_part_variant in ('AM62X') - `Time Sync Router Input Sources for AM62X `_ + `Time Sync Router Input Sources for AM62X `_ .. ifconfig:: CONFIG_part_variant in ('AM64X') - `Time Sync Router Input Sources for AM64X `_ + `Time Sync Router Input Sources for AM64X `_ .. ifconfig:: CONFIG_part_variant in ('J721E') - `Time Sync Router Input Sources for J721E `_ + `Time Sync Router Input Sources for J721E `_ .. ifconfig:: CONFIG_part_variant in ('J7200') - `Time Sync Router Input Sources for J7200 `_ + `Time Sync Router Input Sources for J7200 `_ .. ifconfig:: CONFIG_part_variant in ('J721S2') - `Time Sync Router Input Sources for J721S2 `_ + `Time Sync Router Input Sources for J721S2 `_ .. ifconfig:: CONFIG_part_variant in ('J784S4','J742S2') - `Time Sync Router Input Sources for J784S4 `_ + `Time Sync Router Input Sources for J784S4 `_ The Output Destinations for the Time Sync Router are documented at: .. ifconfig:: CONFIG_part_variant in ('AM62AX') - `Time Sync Router Output Destinations for AM62AX `_ + `Time Sync Router Output Destinations for AM62AX `_ .. ifconfig:: CONFIG_part_variant in ('AM62X') - `Time Sync Router Output Destinations for AM62X `_ + `Time Sync Router Output Destinations for AM62X `_ .. ifconfig:: CONFIG_part_variant in ('AM64X') - `Time Sync Router Output Destinations for AM64X `_ + `Time Sync Router Output Destinations for AM64X `_ .. ifconfig:: CONFIG_part_variant in ('J721E') - `Time Sync Router Output Destinations for J721E `_ + `Time Sync Router Output Destinations for J721E `_ .. ifconfig:: CONFIG_part_variant in ('J7200') - `Time Sync Router Output Destinations for J7200 `_ + `Time Sync Router Output Destinations for J7200 `_ .. ifconfig:: CONFIG_part_variant in ('J721S2') - `Time Sync Router Output Destinations for J721S2 `_ + `Time Sync Router Output Destinations for J721S2 `_ .. ifconfig:: CONFIG_part_variant in ('J784S4','J742S2') - `Time Sync Router Output Destinations for J784S4 `_ + `Time Sync Router Output Destinations for J784S4 `_ To test that the timestamping feature works with the above changes, execute the following -:: +.. code:: console - # testptp -d /dev/ptpN -p 500000000 -i 0 - # testptp -d /dev/ptpN -e 5 -i 3 - event index 2 at 384.250000025 - event index 2 at 384.750000025 - event index 2 at 385.250000025 - event index 2 at 385.750000025 - event index 2 at 386.250000025 + # testptp -d /dev/ptpN -p 500000000 -i 0 + # testptp -d /dev/ptpN -e 5 -i 3 + event index 2 at 384.250000025 + event index 2 at 384.750000025 + event index 2 at 385.250000025 + event index 2 at 385.750000025 + event index 2 at 386.250000025 The first command is used to specify that /dev/ptpN has to be used as the clock, with the output period ('p') being 500000000 nanoseconds (500 milliseconds) and the event index 'i' being 0 @@ -395,69 +395,69 @@ For example, route CPSWxG CPTS GENF1 output to HW3_TS_PUSH input .. ifconfig:: CONFIG_part_variant in ('AM62AX','AM62X') - :: + .. code:: dts - #define TS_OFFSET(pa, val) (0x4+(pa)*4) (0x10000 | val) + #define TS_OFFSET(pa, val) (0x4+(pa)*4) (0x10000 | val) - ×ync_router { - pinctrl-names = "default"; - pinctrl-0 = <&cpsw_cpts>; + ×ync_router { + pinctrl-names = "default"; + pinctrl-0 = <&cpsw_cpts>; - /* Example of timesync routing */ - cpsw_cpts: cpsw-cpts { - pinctrl-single,pins = < - /* pps [cpsw cpts genf1] in17 -> out12 [cpsw cpts hw3_push] */ - TS_OFFSET(12, 17) - >; - }; - }; + /* Example of timesync routing */ + cpsw_cpts: cpsw-cpts { + pinctrl-single,pins = < + /* pps [cpsw cpts genf1] in17 -> out12 [cpsw cpts hw3_push] */ + TS_OFFSET(12, 17) + >; + }; + }; .. ifconfig:: CONFIG_part_variant in ('AM64X') - :: + .. code:: dts - #define TS_OFFSET(pa, val) (0x4+(pa)*4) (0x10000 | val) - ×ync_router { - pinctrl-names = "default"; - pinctrl-0 = <&cpsw_cpts>; + #define TS_OFFSET(pa, val) (0x4+(pa)*4) (0x10000 | val) + ×ync_router { + pinctrl-names = "default"; + pinctrl-0 = <&cpsw_cpts>; - /* Example of timesync routing */ - cpsw_cpts: cpsw-cpts { - pinctrl-single,pins = < - /* pps [cpsw cpts genf1] in22 -> out32 [cpsw cpts hw3_push] */ - TS_OFFSET(32, 22) - >; - }; - }; + /* Example of timesync routing */ + cpsw_cpts: cpsw-cpts { + pinctrl-single,pins = < + /* pps [cpsw cpts genf1] in22 -> out32 [cpsw cpts hw3_push] */ + TS_OFFSET(32, 22) + >; + }; + }; .. ifconfig:: CONFIG_part_variant in ('J721E','J7200','J721S2','J784S4','J742S2') - :: + .. code:: dts - #define TS_OFFSET(pa, val) (0x4+(pa)*4) (0x10000 | val) + #define TS_OFFSET(pa, val) (0x4+(pa)*4) (0x10000 | val) - ×ync_router { - pinctrl-names = "default"; - pinctrl-0 = <&cpsw_cpts>; + ×ync_router { + pinctrl-names = "default"; + pinctrl-0 = <&cpsw_cpts>; - /* Example of timesync routing */ - cpsw_cpts: cpsw-cpts { - pinctrl-single,pins = < - /* pps [cpsw cpts genf1] in17 -> out24 [cpsw cpts hw3_push] */ - TS_OFFSET(24, 17) - >; - }; - }; + /* Example of timesync routing */ + cpsw_cpts: cpsw-cpts { + pinctrl-single,pins = < + /* pps [cpsw cpts genf1] in17 -> out24 [cpsw cpts hw3_push] */ + TS_OFFSET(24, 17) + >; + }; + }; 2. Inform the mapping to the CPSWxG driver, by using the "ti,pps" device-tree property in the cpts device-tree node present within the CPSWxG device-tree node: -:: +.. code:: dts &cpswx { - cpts@3d000 { - ti,pps = <2 1>; - }; + cpts@3d000 { + ti,pps = <2 1>; + }; }; The property "ti,pps" is of the form , where x and y correspond to the choice of @@ -465,14 +465,14 @@ HWx_TS_PUSH and GENFy. PPS can now be tested using testptp and ppstest tools:: - # ./testptp -d /dev/ptpX -P 1 - pps for system time request okay - # ./ppstest /dev/pps0 - trying PPS source "/dev/pps0" - found PPS source "/dev/pps0" - ok, found 1 source(s), now start fetching data... - source 0 - assert 198.000000700, sequence: 7 - clear 0.000000000, sequence: 0 - source 0 - assert 199.000000700, sequence: 8 - clear 0.000000000, sequence: 0 + # ./testptp -d /dev/ptpX -P 1 + pps for system time request okay + # ./ppstest /dev/pps0 + trying PPS source "/dev/pps0" + found PPS source "/dev/pps0" + ok, found 1 source(s), now start fetching data... + source 0 - assert 198.000000700, sequence: 7 - clear 0.000000000, sequence: 0 + source 0 - assert 199.000000700, sequence: 8 - clear 0.000000000, sequence: 0 .. note:: @@ -491,10 +491,10 @@ Setup 1. In both J7VCL and AM625-SK, create a config file named **ptp.cfg** whose contents are as follows: -:: +.. code:: text - [global] - tx_timestamp_timeout 400 + [global] + tx_timestamp_timeout 400 2. Install **ptp4l** if it is not already present on the boards. @@ -513,83 +513,83 @@ modified for different interface connections. 1. Run the following on J7VCL: -:: +.. code:: console - ptp4l -E -2 -H -i eth1 -l 6 -m -q -f ptp.cfg + ptp4l -E -2 -H -i eth1 -l 6 -m -q -f ptp.cfg 2. Run the following on AM625-SK: -:: +.. code:: console - ptp4l -E -2 -H -i eth0 -s -l 6 -m -q -f ptp.cfg + ptp4l -E -2 -H -i eth0 -s -l 6 -m -q -f ptp.cfg **Observed Outputs:** On J7VCL: -:: +.. code:: console - root@j7200-evm:~/TSN-PTP4L# ptp4l -E -2 -H -i eth1 -l 6 -m -q -f ptp.cfg - ptp4l[1827.484]: selected /dev/ptp2 as PTP clock - ptp4l[1827.561]: port 1 (eth1): INITIALIZING to LISTENING on INIT_COMPLETE - ptp4l[1827.561]: port 0 (/var/run/ptp4l): INITIALIZING to LISTENING on INIT_COMPLETE - ptp4l[1834.569]: port 1: announce timeout - ptp4l[1834.569]: port 1 (eth1): LISTENING to MASTER on ANNOUNCE_RECEIPT_TIMEOUT_EXPIRES - ptp4l[1834.569]: selected best master clock 70ff76.fffe.1d8c08 - ptp4l[1834.569]: selected local clock 70ff76.fffe.1d8c08 as best master - ptp4l[1834.569]: port 1: assuming the grand master role + root@j7200-evm:~/TSN-PTP4L# ptp4l -E -2 -H -i eth1 -l 6 -m -q -f ptp.cfg + ptp4l[1827.484]: selected /dev/ptp2 as PTP clock + ptp4l[1827.561]: port 1 (eth1): INITIALIZING to LISTENING on INIT_COMPLETE + ptp4l[1827.561]: port 0 (/var/run/ptp4l): INITIALIZING to LISTENING on INIT_COMPLETE + ptp4l[1834.569]: port 1: announce timeout + ptp4l[1834.569]: port 1 (eth1): LISTENING to MASTER on ANNOUNCE_RECEIPT_TIMEOUT_EXPIRES + ptp4l[1834.569]: selected best master clock 70ff76.fffe.1d8c08 + ptp4l[1834.569]: selected local clock 70ff76.fffe.1d8c08 as best master + ptp4l[1834.569]: port 1: assuming the grand master role On AM625-SK: -:: - - root@am62xx-evm:~# ptp4l -E -2 -H -i eth0 -s -l 6 -m -q -f ptp.cfg - ptp4l[1874.715]: selected /dev/ptp0 as PTP clock - ptp4l[1874.763]: port 1 (eth0): INITIALIZING to LISTENING on INIT_COMPLETE - ptp4l[1874.763]: port 0 (/var/run/ptp4l): INITIALIZING to LISTENING on INIT_COMPLETE - ptp4l[1875.717]: port 1: new foreign master 70ff76.fffe.1d8c08-1 - ptp4l[1879.717]: selected best master clock 70ff76.fffe.1d8c08 on port 1 - ptp4l[1879.717]: selected best master clock 70ff76.fffe.1d8c08 - ptp4l[1879.717]: port 1 (eth0): LISTENING to UNCALIBRATED on RS_SLAVE - ptp4l[1881.717]: master offset 1146408914 s0 freq +0 path delay -1582 - ptp4l[1882.717]: master offset 1146420591 s1 freq +11677 path delay -2965 - ptp4l[1883.717]: master offset -4307 s2 freq +7370 path delay -2965 - ptp4l[1883.717]: port 1 (eth0): UNCALIBRATED to SLAVE on MASTER_CLOCK_SELECTED - ptp4l[1884.717]: master offset -1385 s2 freq +9000 path delay -2965 - ptp4l[1885.717]: master offset -1480 s2 freq +8489 path delay -1582 - ptp4l[1886.717]: master offset -405 s2 freq +9120 path delay -851 - ptp4l[1887.717]: master offset 48 s2 freq +9452 path delay -121 - ptp4l[1888.717]: master offset 888 s2 freq +10306 path delay -121 - ptp4l[1889.717]: master offset 758 s2 freq +10442 path delay 3 - ptp4l[1890.718]: master offset 614 s2 freq +10526 path delay 3 - ptp4l[1891.717]: master offset -96 s2 freq +10000 path delay 479 - ptp4l[1892.718]: master offset 199 s2 freq +10266 path delay 479 - ptp4l[1893.718]: master offset 221 s2 freq +10348 path delay 497 - ptp4l[1894.718]: master offset 145 s2 freq +10338 path delay 519 - ptp4l[1895.718]: master offset 103 s2 freq +10340 path delay 519 - ptp4l[1896.718]: master offset 43 s2 freq +10311 path delay 529 - ptp4l[1897.718]: master offset 17 s2 freq +10297 path delay 529 - ptp4l[1898.718]: master offset 12 s2 freq +10298 path delay 529 - ptp4l[1899.718]: master offset 3 s2 freq +10292 path delay 529 - ptp4l[1900.718]: master offset -3 s2 freq +10287 path delay 529 - ptp4l[1901.718]: master offset 2 s2 freq +10291 path delay 529 - ptp4l[1902.718]: master offset -7 s2 freq +10283 path delay 529 - ptp4l[1903.718]: master offset 0 s2 freq +10288 path delay 528 - ptp4l[1904.718]: master offset -3 s2 freq +10285 path delay 528 - ptp4l[1905.718]: master offset -9 s2 freq +10278 path delay 526 - ptp4l[1906.718]: master offset 0 s2 freq +10284 path delay 525 - ptp4l[1907.718]: master offset 8 s2 freq +10292 path delay 524 - ptp4l[1908.718]: master offset 2 s2 freq +10288 path delay 524 - ptp4l[1909.718]: master offset 6 s2 freq +10293 path delay 524 - ptp4l[1910.718]: master offset -6 s2 freq +10283 path delay 524 - ptp4l[1911.718]: master offset 3 s2 freq +10290 path delay 523 - ptp4l[1912.718]: master offset 3 s2 freq +10291 path delay 523 - ptp4l[1913.718]: master offset 4 s2 freq +10293 path delay 523 - ptp4l[1914.719]: master offset -3 s2 freq +10287 path delay 523 - ptp4l[1915.719]: master offset 9 s2 freq +10298 path delay 522 - ptp4l[1916.718]: master offset 1 s2 freq +10293 path delay 523 - ptp4l[1917.719]: master offset 2 s2 freq +10294 path delay 523 - ptp4l[1918.719]: master offset -12 s2 freq +10281 path delay 523 +.. code:: console + + root@am62xx-evm:~# ptp4l -E -2 -H -i eth0 -s -l 6 -m -q -f ptp.cfg + ptp4l[1874.715]: selected /dev/ptp0 as PTP clock + ptp4l[1874.763]: port 1 (eth0): INITIALIZING to LISTENING on INIT_COMPLETE + ptp4l[1874.763]: port 0 (/var/run/ptp4l): INITIALIZING to LISTENING on INIT_COMPLETE + ptp4l[1875.717]: port 1: new foreign master 70ff76.fffe.1d8c08-1 + ptp4l[1879.717]: selected best master clock 70ff76.fffe.1d8c08 on port 1 + ptp4l[1879.717]: selected best master clock 70ff76.fffe.1d8c08 + ptp4l[1879.717]: port 1 (eth0): LISTENING to UNCALIBRATED on RS_SLAVE + ptp4l[1881.717]: master offset 1146408914 s0 freq +0 path delay -1582 + ptp4l[1882.717]: master offset 1146420591 s1 freq +11677 path delay -2965 + ptp4l[1883.717]: master offset -4307 s2 freq +7370 path delay -2965 + ptp4l[1883.717]: port 1 (eth0): UNCALIBRATED to SLAVE on MASTER_CLOCK_SELECTED + ptp4l[1884.717]: master offset -1385 s2 freq +9000 path delay -2965 + ptp4l[1885.717]: master offset -1480 s2 freq +8489 path delay -1582 + ptp4l[1886.717]: master offset -405 s2 freq +9120 path delay -851 + ptp4l[1887.717]: master offset 48 s2 freq +9452 path delay -121 + ptp4l[1888.717]: master offset 888 s2 freq +10306 path delay -121 + ptp4l[1889.717]: master offset 758 s2 freq +10442 path delay 3 + ptp4l[1890.718]: master offset 614 s2 freq +10526 path delay 3 + ptp4l[1891.717]: master offset -96 s2 freq +10000 path delay 479 + ptp4l[1892.718]: master offset 199 s2 freq +10266 path delay 479 + ptp4l[1893.718]: master offset 221 s2 freq +10348 path delay 497 + ptp4l[1894.718]: master offset 145 s2 freq +10338 path delay 519 + ptp4l[1895.718]: master offset 103 s2 freq +10340 path delay 519 + ptp4l[1896.718]: master offset 43 s2 freq +10311 path delay 529 + ptp4l[1897.718]: master offset 17 s2 freq +10297 path delay 529 + ptp4l[1898.718]: master offset 12 s2 freq +10298 path delay 529 + ptp4l[1899.718]: master offset 3 s2 freq +10292 path delay 529 + ptp4l[1900.718]: master offset -3 s2 freq +10287 path delay 529 + ptp4l[1901.718]: master offset 2 s2 freq +10291 path delay 529 + ptp4l[1902.718]: master offset -7 s2 freq +10283 path delay 529 + ptp4l[1903.718]: master offset 0 s2 freq +10288 path delay 528 + ptp4l[1904.718]: master offset -3 s2 freq +10285 path delay 528 + ptp4l[1905.718]: master offset -9 s2 freq +10278 path delay 526 + ptp4l[1906.718]: master offset 0 s2 freq +10284 path delay 525 + ptp4l[1907.718]: master offset 8 s2 freq +10292 path delay 524 + ptp4l[1908.718]: master offset 2 s2 freq +10288 path delay 524 + ptp4l[1909.718]: master offset 6 s2 freq +10293 path delay 524 + ptp4l[1910.718]: master offset -6 s2 freq +10283 path delay 524 + ptp4l[1911.718]: master offset 3 s2 freq +10290 path delay 523 + ptp4l[1912.718]: master offset 3 s2 freq +10291 path delay 523 + ptp4l[1913.718]: master offset 4 s2 freq +10293 path delay 523 + ptp4l[1914.719]: master offset -3 s2 freq +10287 path delay 523 + ptp4l[1915.719]: master offset 9 s2 freq +10298 path delay 522 + ptp4l[1916.718]: master offset 1 s2 freq +10293 path delay 523 + ptp4l[1917.719]: master offset 2 s2 freq +10294 path delay 523 + ptp4l[1918.719]: master offset -12 s2 freq +10281 path delay 523 AM625-SK as master clock and J7VCL as slave clock ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -602,73 +602,73 @@ modified for different interface connections. 1. Run the following on AM625-SK: -:: +.. code:: console - ptp4l -E -2 -H -i eth0 -l 6 -m -q -f ptp.cfg + ptp4l -E -2 -H -i eth0 -l 6 -m -q -f ptp.cfg 2. Run the following on J7VCL: -:: +.. code:: console - ptp4l -E -2 -H -i eth1 -s -l 6 -m -q -f ptp.cfg + ptp4l -E -2 -H -i eth1 -s -l 6 -m -q -f ptp.cfg **Observed Outputs:** On AM625-SK: -:: +.. code:: console - root@am62xx-evm:~# ptp4l -E -2 -H -i eth0 -l 6 -m -q -f ptp.cfg - ptp4l[2647.841]: selected /dev/ptp0 as PTP clock - ptp4l[2647.895]: port 1 (eth0): INITIALIZING to LISTENING on INIT_COMPLETE - ptp4l[2647.895]: port 0 (/var/run/ptp4l): INITIALIZING to LISTENING on INIT_COMPLETE - ptp4l[2655.009]: port 1: announce timeout - ptp4l[2655.010]: port 1 (eth0): LISTENING to MASTER on ANNOUNCE_RECEIPT_TIMEOUT_EXPIRES - ptp4l[2655.010]: selected best master clock f4844c.fffe.fc1151 - ptp4l[2655.010]: selected local clock f4844c.fffe.fc1151 as best master - ptp4l[2655.010]: port 1: assuming the grand master role + root@am62xx-evm:~# ptp4l -E -2 -H -i eth0 -l 6 -m -q -f ptp.cfg + ptp4l[2647.841]: selected /dev/ptp0 as PTP clock + ptp4l[2647.895]: port 1 (eth0): INITIALIZING to LISTENING on INIT_COMPLETE + ptp4l[2647.895]: port 0 (/var/run/ptp4l): INITIALIZING to LISTENING on INIT_COMPLETE + ptp4l[2655.009]: port 1: announce timeout + ptp4l[2655.010]: port 1 (eth0): LISTENING to MASTER on ANNOUNCE_RECEIPT_TIMEOUT_EXPIRES + ptp4l[2655.010]: selected best master clock f4844c.fffe.fc1151 + ptp4l[2655.010]: selected local clock f4844c.fffe.fc1151 as best master + ptp4l[2655.010]: port 1: assuming the grand master role On J7VCL: -:: - - root@j7200-evm:~/TSN-PTP4L# ptp4l -E -2 -H -i eth1 -s -l 6 -m -q -f ptp.cfg - ptp4l[2215.575]: selected /dev/ptp2 as PTP clock - ptp4l[2215.657]: port 1 (eth1): INITIALIZING to LISTENING on INIT_COMPLETE - ptp4l[2215.657]: port 0 (/var/run/ptp4l): INITIALIZING to LISTENING on INIT_COMPLETE - ptp4l[2215.787]: port 1: new foreign master f4844c.fffe.fc1151-1 - ptp4l[2219.787]: selected best master clock f4844c.fffe.fc1151 on port 1 - ptp4l[2219.787]: selected best master clock f4844c.fffe.fc1151 - ptp4l[2219.787]: port 1 (eth1): LISTENING to UNCALIBRATED on RS_SLAVE - ptp4l[2221.786]: master offset 15033 s0 freq +0 path delay -38 - ptp4l[2222.787]: master offset 16404 s2 freq +1371 path delay -38 - ptp4l[2222.787]: port 1 (eth1): UNCALIBRATED to SLAVE on MASTER_CLOCK_SELECTED - ptp4l[2223.787]: master offset 15861 s2 freq +17232 path delay 523 - ptp4l[2224.786]: master offset 27 s2 freq +6156 path delay 523 - ptp4l[2225.787]: master offset -4768 s2 freq +1369 path delay 523 - ptp4l[2226.787]: master offset -4758 s2 freq -51 path delay 523 - ptp4l[2227.787]: master offset -3322 s2 freq -43 path delay 520 - ptp4l[2228.787]: master offset -1895 s2 freq +388 path delay 520 - ptp4l[2229.787]: master offset -725 s2 freq +989 path delay 344 - ptp4l[2230.787]: master offset -334 s2 freq +1163 path delay 344 - ptp4l[2231.787]: master offset -253 s2 freq +1144 path delay 482 - ptp4l[2232.787]: master offset -11 s2 freq +1310 path delay 477 - ptp4l[2233.787]: master offset 39 s2 freq +1356 path delay 490 - ptp4l[2234.787]: master offset 43 s2 freq +1372 path delay 490 - ptp4l[2235.787]: master offset 39 s2 freq +1381 path delay 490 - ptp4l[2236.787]: master offset 31 s2 freq +1385 path delay 490 - ptp4l[2237.787]: master offset 13 s2 freq +1376 path delay 490 - ptp4l[2238.787]: master offset -3 s2 freq +1364 path delay 490 - ptp4l[2239.787]: master offset -3 s2 freq +1363 path delay 490 - ptp4l[2240.787]: master offset -10 s2 freq +1355 path delay 500 - ptp4l[2241.787]: master offset -26 s2 freq +1336 path delay 521 - ptp4l[2242.787]: master offset -14 s2 freq +1340 path delay 521 - ptp4l[2243.788]: master offset 18 s2 freq +1368 path delay 521 - ptp4l[2244.788]: master offset 13 s2 freq +1369 path delay 524 - ptp4l[2245.788]: master offset 17 s2 freq +1376 path delay 524 - ptp4l[2246.788]: master offset -6 s2 freq +1359 path delay 524 - ptp4l[2247.788]: master offset -19 s2 freq +1344 path delay 524 - ptp4l[2248.788]: master offset -6 s2 freq +1351 path delay 524 +.. code:: console + + root@j7200-evm:~/TSN-PTP4L# ptp4l -E -2 -H -i eth1 -s -l 6 -m -q -f ptp.cfg + ptp4l[2215.575]: selected /dev/ptp2 as PTP clock + ptp4l[2215.657]: port 1 (eth1): INITIALIZING to LISTENING on INIT_COMPLETE + ptp4l[2215.657]: port 0 (/var/run/ptp4l): INITIALIZING to LISTENING on INIT_COMPLETE + ptp4l[2215.787]: port 1: new foreign master f4844c.fffe.fc1151-1 + ptp4l[2219.787]: selected best master clock f4844c.fffe.fc1151 on port 1 + ptp4l[2219.787]: selected best master clock f4844c.fffe.fc1151 + ptp4l[2219.787]: port 1 (eth1): LISTENING to UNCALIBRATED on RS_SLAVE + ptp4l[2221.786]: master offset 15033 s0 freq +0 path delay -38 + ptp4l[2222.787]: master offset 16404 s2 freq +1371 path delay -38 + ptp4l[2222.787]: port 1 (eth1): UNCALIBRATED to SLAVE on MASTER_CLOCK_SELECTED + ptp4l[2223.787]: master offset 15861 s2 freq +17232 path delay 523 + ptp4l[2224.786]: master offset 27 s2 freq +6156 path delay 523 + ptp4l[2225.787]: master offset -4768 s2 freq +1369 path delay 523 + ptp4l[2226.787]: master offset -4758 s2 freq -51 path delay 523 + ptp4l[2227.787]: master offset -3322 s2 freq -43 path delay 520 + ptp4l[2228.787]: master offset -1895 s2 freq +388 path delay 520 + ptp4l[2229.787]: master offset -725 s2 freq +989 path delay 344 + ptp4l[2230.787]: master offset -334 s2 freq +1163 path delay 344 + ptp4l[2231.787]: master offset -253 s2 freq +1144 path delay 482 + ptp4l[2232.787]: master offset -11 s2 freq +1310 path delay 477 + ptp4l[2233.787]: master offset 39 s2 freq +1356 path delay 490 + ptp4l[2234.787]: master offset 43 s2 freq +1372 path delay 490 + ptp4l[2235.787]: master offset 39 s2 freq +1381 path delay 490 + ptp4l[2236.787]: master offset 31 s2 freq +1385 path delay 490 + ptp4l[2237.787]: master offset 13 s2 freq +1376 path delay 490 + ptp4l[2238.787]: master offset -3 s2 freq +1364 path delay 490 + ptp4l[2239.787]: master offset -3 s2 freq +1363 path delay 490 + ptp4l[2240.787]: master offset -10 s2 freq +1355 path delay 500 + ptp4l[2241.787]: master offset -26 s2 freq +1336 path delay 521 + ptp4l[2242.787]: master offset -14 s2 freq +1340 path delay 521 + ptp4l[2243.788]: master offset 18 s2 freq +1368 path delay 521 + ptp4l[2244.788]: master offset 13 s2 freq +1369 path delay 524 + ptp4l[2245.788]: master offset 17 s2 freq +1376 path delay 524 + ptp4l[2246.788]: master offset -6 s2 freq +1359 path delay 524 + ptp4l[2247.788]: master offset -19 s2 freq +1344 path delay 524 + ptp4l[2248.788]: master offset -6 s2 freq +1351 path delay 524 PTP with Transparent Clock (Switch mode) ---------------------------------------- @@ -677,11 +677,11 @@ Use the following ptp config file on the device that acts as the transparent clo **tc-ptp.cfg** -:: +.. code:: text - [global] - tx_timestamp_timeout 400 - clock_type E2E_TC + [global] + tx_timestamp_timeout 400 + clock_type E2E_TC On other devices, the existing ptp.cfg file can be used. @@ -698,209 +698,209 @@ connected to J7VCL's eth2. .. note:: - Since the PC uses Software Timestamping, the offset is relatively - large when compared to the previous section where only boards with - Hardware Timestamping capabilities were used. + Since the PC uses Software Timestamping, the offset is relatively + large when compared to the previous section where only boards with + Hardware Timestamping capabilities were used. **Steps:** 1. Enable switch mode on J7VCL by running the following commands: -:: - - devlink dev param set platform/c000000.ethernet name switch_mode value true cmode runtime - ip link add name br0 type bridge - ip link set dev br0 type bridge ageing_time 1000 - ip link set dev eth1 up - ip link set dev eth2 up - ip link set dev eth1 master br0 - ip link set dev eth2 master br0 - ip link set dev br0 up - ip link set dev br0 type bridge vlan_filtering 1 - bridge vlan add dev br0 vid 1 self - bridge vlan add dev br0 vid 1 pvid untagged self - # Ensure that multicast flooding is off - bridge link set dev eth1 mcast_flood off - bridge link set dev eth2 mcast_flood off +.. code:: console + + devlink dev param set platform/c000000.ethernet name switch_mode value true cmode runtime + ip link add name br0 type bridge + ip link set dev br0 type bridge ageing_time 1000 + ip link set dev eth1 up + ip link set dev eth2 up + ip link set dev eth1 master br0 + ip link set dev eth2 master br0 + ip link set dev br0 up + ip link set dev br0 type bridge vlan_filtering 1 + bridge vlan add dev br0 vid 1 self + bridge vlan add dev br0 vid 1 pvid untagged self + # Ensure that multicast flooding is off + bridge link set dev eth1 mcast_flood off + bridge link set dev eth2 mcast_flood off 2. On the PC, create the same ptp.cfg file mentioned earlier and run: -:: +.. code:: console - sudo ptp4l -E -2 -S -i enp2s0 -l 6 -m -q -f ptp.cfg + sudo ptp4l -E -2 -S -i enp2s0 -l 6 -m -q -f ptp.cfg enp2s0 is assumed to be the ethernet interface. Replace -S with -H if PC supports Hardware Timestamping. 3. On J7VCL, run: -:: +.. code:: console - ptp4l -E -2 -H -i eth1 -i eth2 -s -f tc-ptp.cfg --step_threshold=1 -m -q + ptp4l -E -2 -H -i eth1 -i eth2 -s -f tc-ptp.cfg --step_threshold=1 -m -q 4. On AM625-SK, run: -:: +.. code:: console - ptp4l -E -2 -H -i eth0 -s -l 6 -m -q -f ptp.cfg + ptp4l -E -2 -H -i eth0 -s -l 6 -m -q -f ptp.cfg **Observed Outputs:** On PC: -:: +.. code:: console - user@pc:~/TSN-PTP4L$ sudo ptp4l -E -2 -S -i enp2s0 -l 6 -m -q -f p.cfg - ptp4l[16750.478]: port 1: INITIALIZING to LISTENING on INITIALIZE - ptp4l[16750.478]: port 0: INITIALIZING to LISTENING on INITIALIZE - ptp4l[16750.478]: port 1: link up - ptp4l[16757.189]: port 1: LISTENING to MASTER on ANNOUNCE_RECEIPT_TIMEOUT_EXPIRES - ptp4l[16757.189]: selected best master clock b0227a.fffe.d8b7e3 - ptp4l[16757.189]: assuming the grand master role + user@pc:~/TSN-PTP4L$ sudo ptp4l -E -2 -S -i enp2s0 -l 6 -m -q -f p.cfg + ptp4l[16750.478]: port 1: INITIALIZING to LISTENING on INITIALIZE + ptp4l[16750.478]: port 0: INITIALIZING to LISTENING on INITIALIZE + ptp4l[16750.478]: port 1: link up + ptp4l[16757.189]: port 1: LISTENING to MASTER on ANNOUNCE_RECEIPT_TIMEOUT_EXPIRES + ptp4l[16757.189]: selected best master clock b0227a.fffe.d8b7e3 + ptp4l[16757.189]: assuming the grand master role On J7VCL: -:: - - root@j7200-evm:~/PTP# ptp4l -E -2 -H -i eth1 -i eth2 -s -f ptp.cfg --step_threshold=1 -q -m - ptp4l[602.896]: selected /dev/ptp2 as PTP clock - ptp4l[602.936]: port 1 (eth1): INITIALIZING to LISTENING on INIT_COMPLETE - ptp4l[602.968]: port 2 (eth2): INITIALIZING to LISTENING on INIT_COMPLETE - ptp4l[602.968]: port 0 (/var/run/ptp4l): INITIALIZING to LISTENING on INIT_COMPLETE - ptp4l[604.014]: port 1: new foreign master b0227a.fffe.d8b7e3-1 - ptp4l[608.014]: selected best master clock b0227a.fffe.d8b7e3 on port 1 - ptp4l[608.014]: selected best master clock b0227a.fffe.d8b7e3 - ptp4l[608.014]: foreign master not using PTP timescale - ptp4l[608.014]: running in a temporal vortex - ptp4l[608.014]: port 1 (eth1): LISTENING to UNCALIBRATED on RS_SLAVE - ptp4l[609.182]: selected best master clock b0227a.fffe.d8b7e3 on port 1 - ptp4l[609.182]: selected best master clock b0227a.fffe.d8b7e3 - ptp4l[609.182]: foreign master not using PTP timescale - ptp4l[609.182]: running in a temporal vortex - ptp4l[610.015]: master offset 4240878 s0 freq -29261 path delay 411528 - ptp4l[611.015]: master offset 4420049 s1 freq +149852 path delay 411528 - ptp4l[612.015]: master offset -217741 s2 freq -67889 path delay 411528 - ptp4l[612.015]: port 1 (eth1): UNCALIBRATED to SLAVE on MASTER_CLOCK_SELECTED - ptp4l[613.015]: master offset 19010 s2 freq +103540 path delay 411528 - ptp4l[614.015]: master offset -169233 s2 freq -79000 path delay 432761 - ptp4l[615.015]: master offset 74375 s2 freq +113838 path delay 432761 - ptp4l[615.965]: selected best master clock b0227a.fffe.d8b7e3 on port 1 - ptp4l[615.965]: selected best master clock b0227a.fffe.d8b7e3 - ptp4l[615.965]: foreign master not using PTP timescale - ptp4l[615.965]: running in a temporal vortex - ptp4l[616.015]: master offset -249811 s2 freq -188035 path delay 447928 - ptp4l[617.016]: master offset 255527 s2 freq +195312 path delay 429728 - ptp4l[618.016]: master offset -92188 s2 freq -105356 path delay 447928 - ptp4l[619.016]: master offset 279496 s2 freq +195312 path delay 429728 - ptp4l[620.016]: master offset -53619 s2 freq -94443 path delay 447928 - ptp4l[621.016]: master offset 258016 s2 freq +195312 path delay 447928 - ptp4l[622.016]: master offset -143222 s2 freq -195312 path delay 453994 - ptp4l[623.016]: master offset 355710 s2 freq +195312 path delay 453994 - ptp4l[623.037]: selected best master clock b0227a.fffe.d8b7e3 on port 1 - ptp4l[623.037]: selected best master clock b0227a.fffe.d8b7e3 - ptp4l[623.037]: foreign master not using PTP timescale - ptp4l[623.037]: running in a temporal vortex - ptp4l[624.016]: master offset -81029 s2 freq -137939 path delay 456066 - ptp4l[625.017]: master offset 399612 s2 freq +195312 path delay 456066 - ptp4l[626.017]: master offset -59174 s2 freq -140392 path delay 456066 - ptp4l[627.017]: master offset 535534 s2 freq +195312 path delay 372817 - ptp4l[628.017]: master offset 68957 s2 freq -30014 path delay 372817 - ptp4l[629.017]: master offset 469268 s2 freq +195312 path delay 372817 - ptp4l[630.017]: master offset 227264 s2 freq +148980 path delay 465639 - ptp4l[630.879]: selected best master clock b0227a.fffe.d8b7e3 on port 1 - ptp4l[630.879]: selected best master clock b0227a.fffe.d8b7e3 - ptp4l[630.879]: foreign master not using PTP timescale - ptp4l[630.879]: running in a temporal vortex - ptp4l[631.018]: master offset 188501 s2 freq +178397 path delay 416485 - ptp4l[632.017]: master offset -292192 s2 freq -195312 path delay 416485 - ptp4l[633.018]: master offset 392634 s2 freq +195312 path delay 322010 - ptp4l[634.017]: master offset -61040 s2 freq -14594 path delay 322010 - ptp4l[635.018]: master offset 318688 s2 freq +195312 path delay 322010 - ptp4l[636.018]: master offset -177868 s2 freq -149734 path delay 322010 - ptp4l[637.018]: master offset 371574 s2 freq +195312 path delay 320475 - ptp4l[637.827]: selected best master clock b0227a.fffe.d8b7e3 on port 1 - ptp4l[637.827]: selected best master clock b0227a.fffe.d8b7e3 - ptp4l[637.827]: foreign master not using PTP timescale - ptp4l[637.827]: running in a temporal vortex - ptp4l[638.018]: master offset 129834 s2 freq +104608 path delay 420138 - ptp4l[639.018]: master offset 71472 s2 freq +85196 path delay 420138 - ptp4l[640.019]: master offset 45549 s2 freq +80714 path delay 411496 - ptp4l[641.019]: master offset 15511 s2 freq +64341 path delay 411496 - ptp4l[642.019]: master offset -41550 s2 freq +11933 path delay 451793 - ptp4l[643.019]: master offset 3387 s2 freq +44405 path delay 441161 - ptp4l[644.019]: master offset 6207 s2 freq +48241 path delay 441161 - ptp4l[644.259]: selected best master clock b0227a.fffe.d8b7e3 on port 1 - ptp4l[644.259]: selected best master clock b0227a.fffe.d8b7e3 - ptp4l[644.259]: foreign master not using PTP timescale - ptp4l[644.259]: running in a temporal vortex - ptp4l[645.019]: master offset 11684 s2 freq +55581 path delay 437299 - ptp4l[646.019]: master offset 1653 s2 freq +49055 path delay 443743 - ptp4l[647.019]: master offset -6190 s2 freq +41708 path delay 447606 - ptp4l[648.019]: master offset 3011 s2 freq +49052 path delay 444569 - ptp4l[649.020]: master offset 3506 s2 freq +50450 path delay 447606 - ptp4l[650.020]: master offset -6195 s2 freq +41801 path delay 447606 - ptp4l[650.630]: selected best master clock b0227a.fffe.d8b7e3 on port 1 - ptp4l[650.630]: selected best master clock b0227a.fffe.d8b7e3 - ptp4l[650.630]: foreign master not using PTP timescale - ptp4l[650.630]: running in a temporal vortex - ptp4l[651.020]: master offset 3461 s2 freq +49598 path delay 442913 - ptp4l[652.020]: master offset 2104 s2 freq +49280 path delay 442913 +.. code:: console + + root@j7200-evm:~/PTP# ptp4l -E -2 -H -i eth1 -i eth2 -s -f ptp.cfg --step_threshold=1 -q -m + ptp4l[602.896]: selected /dev/ptp2 as PTP clock + ptp4l[602.936]: port 1 (eth1): INITIALIZING to LISTENING on INIT_COMPLETE + ptp4l[602.968]: port 2 (eth2): INITIALIZING to LISTENING on INIT_COMPLETE + ptp4l[602.968]: port 0 (/var/run/ptp4l): INITIALIZING to LISTENING on INIT_COMPLETE + ptp4l[604.014]: port 1: new foreign master b0227a.fffe.d8b7e3-1 + ptp4l[608.014]: selected best master clock b0227a.fffe.d8b7e3 on port 1 + ptp4l[608.014]: selected best master clock b0227a.fffe.d8b7e3 + ptp4l[608.014]: foreign master not using PTP timescale + ptp4l[608.014]: running in a temporal vortex + ptp4l[608.014]: port 1 (eth1): LISTENING to UNCALIBRATED on RS_SLAVE + ptp4l[609.182]: selected best master clock b0227a.fffe.d8b7e3 on port 1 + ptp4l[609.182]: selected best master clock b0227a.fffe.d8b7e3 + ptp4l[609.182]: foreign master not using PTP timescale + ptp4l[609.182]: running in a temporal vortex + ptp4l[610.015]: master offset 4240878 s0 freq -29261 path delay 411528 + ptp4l[611.015]: master offset 4420049 s1 freq +149852 path delay 411528 + ptp4l[612.015]: master offset -217741 s2 freq -67889 path delay 411528 + ptp4l[612.015]: port 1 (eth1): UNCALIBRATED to SLAVE on MASTER_CLOCK_SELECTED + ptp4l[613.015]: master offset 19010 s2 freq +103540 path delay 411528 + ptp4l[614.015]: master offset -169233 s2 freq -79000 path delay 432761 + ptp4l[615.015]: master offset 74375 s2 freq +113838 path delay 432761 + ptp4l[615.965]: selected best master clock b0227a.fffe.d8b7e3 on port 1 + ptp4l[615.965]: selected best master clock b0227a.fffe.d8b7e3 + ptp4l[615.965]: foreign master not using PTP timescale + ptp4l[615.965]: running in a temporal vortex + ptp4l[616.015]: master offset -249811 s2 freq -188035 path delay 447928 + ptp4l[617.016]: master offset 255527 s2 freq +195312 path delay 429728 + ptp4l[618.016]: master offset -92188 s2 freq -105356 path delay 447928 + ptp4l[619.016]: master offset 279496 s2 freq +195312 path delay 429728 + ptp4l[620.016]: master offset -53619 s2 freq -94443 path delay 447928 + ptp4l[621.016]: master offset 258016 s2 freq +195312 path delay 447928 + ptp4l[622.016]: master offset -143222 s2 freq -195312 path delay 453994 + ptp4l[623.016]: master offset 355710 s2 freq +195312 path delay 453994 + ptp4l[623.037]: selected best master clock b0227a.fffe.d8b7e3 on port 1 + ptp4l[623.037]: selected best master clock b0227a.fffe.d8b7e3 + ptp4l[623.037]: foreign master not using PTP timescale + ptp4l[623.037]: running in a temporal vortex + ptp4l[624.016]: master offset -81029 s2 freq -137939 path delay 456066 + ptp4l[625.017]: master offset 399612 s2 freq +195312 path delay 456066 + ptp4l[626.017]: master offset -59174 s2 freq -140392 path delay 456066 + ptp4l[627.017]: master offset 535534 s2 freq +195312 path delay 372817 + ptp4l[628.017]: master offset 68957 s2 freq -30014 path delay 372817 + ptp4l[629.017]: master offset 469268 s2 freq +195312 path delay 372817 + ptp4l[630.017]: master offset 227264 s2 freq +148980 path delay 465639 + ptp4l[630.879]: selected best master clock b0227a.fffe.d8b7e3 on port 1 + ptp4l[630.879]: selected best master clock b0227a.fffe.d8b7e3 + ptp4l[630.879]: foreign master not using PTP timescale + ptp4l[630.879]: running in a temporal vortex + ptp4l[631.018]: master offset 188501 s2 freq +178397 path delay 416485 + ptp4l[632.017]: master offset -292192 s2 freq -195312 path delay 416485 + ptp4l[633.018]: master offset 392634 s2 freq +195312 path delay 322010 + ptp4l[634.017]: master offset -61040 s2 freq -14594 path delay 322010 + ptp4l[635.018]: master offset 318688 s2 freq +195312 path delay 322010 + ptp4l[636.018]: master offset -177868 s2 freq -149734 path delay 322010 + ptp4l[637.018]: master offset 371574 s2 freq +195312 path delay 320475 + ptp4l[637.827]: selected best master clock b0227a.fffe.d8b7e3 on port 1 + ptp4l[637.827]: selected best master clock b0227a.fffe.d8b7e3 + ptp4l[637.827]: foreign master not using PTP timescale + ptp4l[637.827]: running in a temporal vortex + ptp4l[638.018]: master offset 129834 s2 freq +104608 path delay 420138 + ptp4l[639.018]: master offset 71472 s2 freq +85196 path delay 420138 + ptp4l[640.019]: master offset 45549 s2 freq +80714 path delay 411496 + ptp4l[641.019]: master offset 15511 s2 freq +64341 path delay 411496 + ptp4l[642.019]: master offset -41550 s2 freq +11933 path delay 451793 + ptp4l[643.019]: master offset 3387 s2 freq +44405 path delay 441161 + ptp4l[644.019]: master offset 6207 s2 freq +48241 path delay 441161 + ptp4l[644.259]: selected best master clock b0227a.fffe.d8b7e3 on port 1 + ptp4l[644.259]: selected best master clock b0227a.fffe.d8b7e3 + ptp4l[644.259]: foreign master not using PTP timescale + ptp4l[644.259]: running in a temporal vortex + ptp4l[645.019]: master offset 11684 s2 freq +55581 path delay 437299 + ptp4l[646.019]: master offset 1653 s2 freq +49055 path delay 443743 + ptp4l[647.019]: master offset -6190 s2 freq +41708 path delay 447606 + ptp4l[648.019]: master offset 3011 s2 freq +49052 path delay 444569 + ptp4l[649.020]: master offset 3506 s2 freq +50450 path delay 447606 + ptp4l[650.020]: master offset -6195 s2 freq +41801 path delay 447606 + ptp4l[650.630]: selected best master clock b0227a.fffe.d8b7e3 on port 1 + ptp4l[650.630]: selected best master clock b0227a.fffe.d8b7e3 + ptp4l[650.630]: foreign master not using PTP timescale + ptp4l[650.630]: running in a temporal vortex + ptp4l[651.020]: master offset 3461 s2 freq +49598 path delay 442913 + ptp4l[652.020]: master offset 2104 s2 freq +49280 path delay 442913 On AM625-SK: -:: - - root@am62xx-evm:~# ptp4l -E -2 -H -i eth0 -s -l 6 -m -q -f ptp.cfg - ptp4l[618.874]: selected /dev/ptp0 as PTP clock - ptp4l[618.927]: port 1 (eth0): INITIALIZING to LISTENING on INIT_COMPLETE - ptp4l[618.927]: port 0 (/var/run/ptp4l): INITIALIZING to LISTENING on INIT_COMPLETE - ptp4l[619.431]: port 1: new foreign master b0227a.fffe.d8b7e3-1 - ptp4l[623.431]: selected best master clock b0227a.fffe.d8b7e3 on port 1 - ptp4l[623.431]: selected best master clock b0227a.fffe.d8b7e3 - ptp4l[623.431]: foreign master not using PTP timescale - ptp4l[623.431]: running in a temporal vortex - ptp4l[623.431]: port 1 (eth0): LISTENING to UNCALIBRATED on RS_SLAVE - ptp4l[625.432]: master offset 4167996 s0 freq -15185 path delay 414520 - ptp4l[626.432]: master offset 4365478 s1 freq +182227 path delay 414520 - ptp4l[627.432]: master offset -235340 s2 freq -53113 path delay 414520 - ptp4l[627.432]: port 1 (eth0): UNCALIBRATED to SLAVE on MASTER_CLOCK_SELECTED - ptp4l[628.432]: master offset 33747 s2 freq +145372 path delay 376516 - ptp4l[629.432]: master offset -293346 s2 freq -171597 path delay 376516 - ptp4l[630.432]: master offset 228692 s2 freq +262438 path delay 338513 - ptp4l[631.432]: master offset -192552 s2 freq -90199 path delay 376516 - ptp4l[632.433]: master offset 159142 s2 freq +203730 path delay 376516 - ptp4l[633.433]: master offset -188770 s2 freq -96440 path delay 414520 - ptp4l[634.433]: master offset 176253 s2 freq +211952 path delay 376516 - ptp4l[635.433]: master offset -222145 s2 freq -133570 path delay 376516 - ptp4l[636.433]: master offset 306349 s2 freq +328281 path delay 298604 - ptp4l[637.433]: master offset -247846 s2 freq -134010 path delay 298604 - ptp4l[638.433]: master offset 242133 s2 freq +281616 path delay 298604 - ptp4l[639.433]: master offset -289587 s2 freq -177465 path delay 298604 - ptp4l[640.434]: master offset 291214 s2 freq +316460 path delay 279683 - ptp4l[641.434]: master offset -283245 s2 freq -170634 path delay 279683 - ptp4l[642.434]: master offset 294661 s2 freq +322298 path delay 256129 - ptp4l[643.434]: master offset 31931 s2 freq +147966 path delay 256129 - ptp4l[644.434]: master offset -41547 s2 freq +84068 path delay 256129 - ptp4l[645.434]: master offset -414538 s2 freq -301387 path delay 256129 - ptp4l[646.435]: master offset 299758 s2 freq +288547 path delay 251884 - ptp4l[647.434]: master offset -233796 s2 freq -155079 path delay 251884 - ptp4l[648.435]: master offset 282743 s2 freq +291321 path delay 268964 - ptp4l[649.435]: master offset -296428 s2 freq -203027 path delay 268964 - ptp4l[650.435]: master offset 318129 s2 freq +322601 path delay 268964 - ptp4l[651.435]: master offset 54329 s2 freq +154240 path delay 276656 - ptp4l[652.436]: master offset -40272 s2 freq +75938 path delay 276656 - ptp4l[653.436]: master offset -52185 s2 freq +51943 path delay 276656 - ptp4l[654.436]: master offset -124449 s2 freq -35976 path delay 361074 - ptp4l[655.436]: master offset -90327 s2 freq -39189 path delay 423913 - ptp4l[656.436]: master offset 8536 s2 freq +32576 path delay 423913 - ptp4l[657.436]: master offset 37342 s2 freq +63943 path delay 423175 - ptp4l[658.436]: master offset 15742 s2 freq +53545 path delay 444110 - ptp4l[659.436]: master offset 27596 s2 freq +70122 path delay 444110 - ptp4l[660.436]: master offset 13826 s2 freq +64631 path delay 446241 - ptp4l[661.437]: master offset 10467 s2 freq +65419 path delay 446241 - ptp4l[662.437]: master offset 11032 s2 freq +69124 path delay 446241 - ptp4l[663.437]: master offset -3933 s2 freq +57469 path delay 446241 - ptp4l[664.437]: master offset 735 s2 freq +60957 path delay 444278 +.. code:: console + + root@am62xx-evm:~# ptp4l -E -2 -H -i eth0 -s -l 6 -m -q -f ptp.cfg + ptp4l[618.874]: selected /dev/ptp0 as PTP clock + ptp4l[618.927]: port 1 (eth0): INITIALIZING to LISTENING on INIT_COMPLETE + ptp4l[618.927]: port 0 (/var/run/ptp4l): INITIALIZING to LISTENING on INIT_COMPLETE + ptp4l[619.431]: port 1: new foreign master b0227a.fffe.d8b7e3-1 + ptp4l[623.431]: selected best master clock b0227a.fffe.d8b7e3 on port 1 + ptp4l[623.431]: selected best master clock b0227a.fffe.d8b7e3 + ptp4l[623.431]: foreign master not using PTP timescale + ptp4l[623.431]: running in a temporal vortex + ptp4l[623.431]: port 1 (eth0): LISTENING to UNCALIBRATED on RS_SLAVE + ptp4l[625.432]: master offset 4167996 s0 freq -15185 path delay 414520 + ptp4l[626.432]: master offset 4365478 s1 freq +182227 path delay 414520 + ptp4l[627.432]: master offset -235340 s2 freq -53113 path delay 414520 + ptp4l[627.432]: port 1 (eth0): UNCALIBRATED to SLAVE on MASTER_CLOCK_SELECTED + ptp4l[628.432]: master offset 33747 s2 freq +145372 path delay 376516 + ptp4l[629.432]: master offset -293346 s2 freq -171597 path delay 376516 + ptp4l[630.432]: master offset 228692 s2 freq +262438 path delay 338513 + ptp4l[631.432]: master offset -192552 s2 freq -90199 path delay 376516 + ptp4l[632.433]: master offset 159142 s2 freq +203730 path delay 376516 + ptp4l[633.433]: master offset -188770 s2 freq -96440 path delay 414520 + ptp4l[634.433]: master offset 176253 s2 freq +211952 path delay 376516 + ptp4l[635.433]: master offset -222145 s2 freq -133570 path delay 376516 + ptp4l[636.433]: master offset 306349 s2 freq +328281 path delay 298604 + ptp4l[637.433]: master offset -247846 s2 freq -134010 path delay 298604 + ptp4l[638.433]: master offset 242133 s2 freq +281616 path delay 298604 + ptp4l[639.433]: master offset -289587 s2 freq -177465 path delay 298604 + ptp4l[640.434]: master offset 291214 s2 freq +316460 path delay 279683 + ptp4l[641.434]: master offset -283245 s2 freq -170634 path delay 279683 + ptp4l[642.434]: master offset 294661 s2 freq +322298 path delay 256129 + ptp4l[643.434]: master offset 31931 s2 freq +147966 path delay 256129 + ptp4l[644.434]: master offset -41547 s2 freq +84068 path delay 256129 + ptp4l[645.434]: master offset -414538 s2 freq -301387 path delay 256129 + ptp4l[646.435]: master offset 299758 s2 freq +288547 path delay 251884 + ptp4l[647.434]: master offset -233796 s2 freq -155079 path delay 251884 + ptp4l[648.435]: master offset 282743 s2 freq +291321 path delay 268964 + ptp4l[649.435]: master offset -296428 s2 freq -203027 path delay 268964 + ptp4l[650.435]: master offset 318129 s2 freq +322601 path delay 268964 + ptp4l[651.435]: master offset 54329 s2 freq +154240 path delay 276656 + ptp4l[652.436]: master offset -40272 s2 freq +75938 path delay 276656 + ptp4l[653.436]: master offset -52185 s2 freq +51943 path delay 276656 + ptp4l[654.436]: master offset -124449 s2 freq -35976 path delay 361074 + ptp4l[655.436]: master offset -90327 s2 freq -39189 path delay 423913 + ptp4l[656.436]: master offset 8536 s2 freq +32576 path delay 423913 + ptp4l[657.436]: master offset 37342 s2 freq +63943 path delay 423175 + ptp4l[658.436]: master offset 15742 s2 freq +53545 path delay 444110 + ptp4l[659.436]: master offset 27596 s2 freq +70122 path delay 444110 + ptp4l[660.436]: master offset 13826 s2 freq +64631 path delay 446241 + ptp4l[661.437]: master offset 10467 s2 freq +65419 path delay 446241 + ptp4l[662.437]: master offset 11032 s2 freq +69124 path delay 446241 + ptp4l[663.437]: master offset -3933 s2 freq +57469 path delay 446241 + ptp4l[664.437]: master offset 735 s2 freq +60957 path delay 444278 AM625-SK as transparent clock, PC as master clock and J7VCL as slave clock ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -917,138 +917,138 @@ connected to AM625-SK's eth1. 1. Enable switch mode on AM625-SK by running the following commands: -:: - - devlink dev param set platform/8000000.ethernet name switch_mode value true cmode runtime - ip link add name br0 type bridge - ip link set dev br0 type bridge ageing_time 1000 - ip link set dev eth0 up - ip link set dev eth1 up - ip link set dev eth0 master br0 - ip link set dev eth1 master br0 - ip link set dev br0 up - ip link set dev br0 type bridge vlan_filtering 1 - bridge vlan add dev br0 vid 1 self - bridge vlan add dev br0 vid 1 pvid untagged self - # Ensure that multicast flooding is off - bridge link set dev eth0 mcast_flood off - bridge link set dev eth1 mcast_flood off +.. code:: console + + devlink dev param set platform/8000000.ethernet name switch_mode value true cmode runtime + ip link add name br0 type bridge + ip link set dev br0 type bridge ageing_time 1000 + ip link set dev eth0 up + ip link set dev eth1 up + ip link set dev eth0 master br0 + ip link set dev eth1 master br0 + ip link set dev br0 up + ip link set dev br0 type bridge vlan_filtering 1 + bridge vlan add dev br0 vid 1 self + bridge vlan add dev br0 vid 1 pvid untagged self + # Ensure that multicast flooding is off + bridge link set dev eth0 mcast_flood off + bridge link set dev eth1 mcast_flood off 2. On the PC, create the same ptp.cfg file mentioned earlier and run: -:: +.. code:: console - sudo ptp4l -E -2 -S -i enp2s0 -l 6 -m -q -f ptp.cfg + sudo ptp4l -E -2 -S -i enp2s0 -l 6 -m -q -f ptp.cfg enp2s0 is assumed to be the ethernet interface. Replace -S with -H if PC supports Hardware Timestamping. 3. On AM625-SK, run: -:: +.. code:: console - ptp4l -E -2 -H -i eth0 -i eth1 -s -f tc-ptp.cfg --step_threshold=1 -m -q + ptp4l -E -2 -H -i eth0 -i eth1 -s -f tc-ptp.cfg --step_threshold=1 -m -q 4. On J7VCL, run: -:: +.. code:: console - ptp4l -E -2 -H -i eth1 -s -l 6 -m -q -f ptp.cfg + ptp4l -E -2 -H -i eth1 -s -l 6 -m -q -f ptp.cfg **Observed Outputs:** On PC: -:: +.. code:: console - user@pc:~/TSN-PTP4L$ sudo ptp4l -E -2 -S -i enp2s0 -l 6 -m -q -f ptp.cfg - ptp4l[18640.121]: port 1: INITIALIZING to LISTENING on INITIALIZE - ptp4l[18640.121]: port 0: INITIALIZING to LISTENING on INITIALIZE - ptp4l[18640.122]: port 1: link up - ptp4l[18647.795]: port 1: LISTENING to MASTER on ANNOUNCE_RECEIPT_TIMEOUT_EXPIRES - ptp4l[18647.795]: selected best master clock b0227a.fffe.d8b7e3 - ptp4l[18647.796]: assuming the grand master role + user@pc:~/TSN-PTP4L$ sudo ptp4l -E -2 -S -i enp2s0 -l 6 -m -q -f ptp.cfg + ptp4l[18640.121]: port 1: INITIALIZING to LISTENING on INITIALIZE + ptp4l[18640.121]: port 0: INITIALIZING to LISTENING on INITIALIZE + ptp4l[18640.122]: port 1: link up + ptp4l[18647.795]: port 1: LISTENING to MASTER on ANNOUNCE_RECEIPT_TIMEOUT_EXPIRES + ptp4l[18647.795]: selected best master clock b0227a.fffe.d8b7e3 + ptp4l[18647.796]: assuming the grand master role On AM625-SK: -:: - - root@am62xx-evm:~# ptp4l -E -2 -H -i eth0 -i eth1 -s -f ptp.cfg --step_threshold=1 -m -q - ptp4l[508.734]: selected /dev/ptp0 as PTP clock - ptp4l[508.768]: port 1 (eth0): INITIALIZING to LISTENING on INIT_COMPLETE - ptp4l[508.808]: port 2 (eth1): INITIALIZING to LISTENING on INIT_COMPLETE - ptp4l[508.808]: port 0 (/var/run/ptp4l): INITIALIZING to LISTENING on INIT_COMPLETE - ptp4l[510.134]: port 1: new foreign master b0227a.fffe.d8b7e3-1 - ptp4l[514.135]: selected best master clock b0227a.fffe.d8b7e3 on port 1 - ptp4l[514.135]: selected best master clock b0227a.fffe.d8b7e3 - ptp4l[514.135]: foreign master not using PTP timescale - ptp4l[514.135]: port 1 (eth0): LISTENING to UNCALIBRATED on RS_SLAVE - ptp4l[515.135]: master offset -1660108720858304691 s0 freq +0 path delay 145597 - ptp4l[515.404]: selected best master clock b0227a.fffe.d8b7e3 on port 1 - ptp4l[515.404]: selected best master clock b0227a.fffe.d8b7e3 - ptp4l[515.404]: foreign master not using PTP timescale - ptp4l[516.135]: master offset -1660108720858311656 s1 freq -6965 path delay 145597 - ptp4l[517.135]: master offset -2379 s2 freq -9344 path delay 145597 - ptp4l[517.135]: port 1 (eth0): UNCALIBRATED to SLAVE on MASTER_CLOCK_SELECTED - ptp4l[518.136]: master offset -12603 s2 freq -20282 path delay 145597 - ptp4l[519.136]: master offset 49256 s2 freq +37796 path delay 110374 - ptp4l[520.136]: master offset -59315 s2 freq -55998 path delay 173739 - ptp4l[521.136]: master offset -9282 s2 freq -23759 path delay 173739 - ptp4l[522.136]: master offset -34935 s2 freq -52197 path delay 215742 - ptp4l[523.136]: master offset 59415 s2 freq +31673 path delay 167165 - ptp4l[523.222]: selected best master clock b0227a.fffe.d8b7e3 on port 1 - ptp4l[523.222]: selected best master clock b0227a.fffe.d8b7e3 - ptp4l[523.222]: foreign master not using PTP timescale - ptp4l[524.136]: master offset 69431 s2 freq +59513 path delay 118589 - ptp4l[525.136]: master offset -34194 s2 freq -23283 path delay 156913 - ptp4l[526.136]: master offset -56535 s2 freq -55882 path delay 195237 - ptp4l[527.137]: master offset 24678 s2 freq +8371 path delay 163169 - ptp4l[528.137]: master offset 9448 s2 freq +544 path delay 163169 - ptp4l[529.137]: master offset 25778 s2 freq +19708 path delay 139827 - ptp4l[529.242]: selected best master clock b0227a.fffe.d8b7e3 on port 1 - ptp4l[529.242]: selected best master clock b0227a.fffe.d8b7e3 - ptp4l[529.242]: foreign master not using PTP timescale - ptp4l[530.137]: master offset 3067 s2 freq +4731 path delay 135917 - ptp4l[531.137]: master offset -8098 s2 freq -5514 path delay 135917 - ptp4l[532.137]: master offset -18361 s2 freq -18206 path delay 144642 - ptp4l[533.138]: master offset -6540 s2 freq -11894 path delay 144642 - ptp4l[534.137]: master offset -1649 s2 freq -8965 path delay 144642 - ptp4l[535.138]: master offset -13636 s2 freq -21446 path delay 159134 - ptp4l[536.138]: master offset 789 s2 freq -11112 path delay 159134 - ptp4l[536.208]: selected best master clock b0227a.fffe.d8b7e3 on port 1 - ptp4l[536.208]: selected best master clock b0227a.fffe.d8b7e3 - ptp4l[536.208]: foreign master not using PTP timescale +.. code:: console + + root@am62xx-evm:~# ptp4l -E -2 -H -i eth0 -i eth1 -s -f ptp.cfg --step_threshold=1 -m -q + ptp4l[508.734]: selected /dev/ptp0 as PTP clock + ptp4l[508.768]: port 1 (eth0): INITIALIZING to LISTENING on INIT_COMPLETE + ptp4l[508.808]: port 2 (eth1): INITIALIZING to LISTENING on INIT_COMPLETE + ptp4l[508.808]: port 0 (/var/run/ptp4l): INITIALIZING to LISTENING on INIT_COMPLETE + ptp4l[510.134]: port 1: new foreign master b0227a.fffe.d8b7e3-1 + ptp4l[514.135]: selected best master clock b0227a.fffe.d8b7e3 on port 1 + ptp4l[514.135]: selected best master clock b0227a.fffe.d8b7e3 + ptp4l[514.135]: foreign master not using PTP timescale + ptp4l[514.135]: port 1 (eth0): LISTENING to UNCALIBRATED on RS_SLAVE + ptp4l[515.135]: master offset -1660108720858304691 s0 freq +0 path delay 145597 + ptp4l[515.404]: selected best master clock b0227a.fffe.d8b7e3 on port 1 + ptp4l[515.404]: selected best master clock b0227a.fffe.d8b7e3 + ptp4l[515.404]: foreign master not using PTP timescale + ptp4l[516.135]: master offset -1660108720858311656 s1 freq -6965 path delay 145597 + ptp4l[517.135]: master offset -2379 s2 freq -9344 path delay 145597 + ptp4l[517.135]: port 1 (eth0): UNCALIBRATED to SLAVE on MASTER_CLOCK_SELECTED + ptp4l[518.136]: master offset -12603 s2 freq -20282 path delay 145597 + ptp4l[519.136]: master offset 49256 s2 freq +37796 path delay 110374 + ptp4l[520.136]: master offset -59315 s2 freq -55998 path delay 173739 + ptp4l[521.136]: master offset -9282 s2 freq -23759 path delay 173739 + ptp4l[522.136]: master offset -34935 s2 freq -52197 path delay 215742 + ptp4l[523.136]: master offset 59415 s2 freq +31673 path delay 167165 + ptp4l[523.222]: selected best master clock b0227a.fffe.d8b7e3 on port 1 + ptp4l[523.222]: selected best master clock b0227a.fffe.d8b7e3 + ptp4l[523.222]: foreign master not using PTP timescale + ptp4l[524.136]: master offset 69431 s2 freq +59513 path delay 118589 + ptp4l[525.136]: master offset -34194 s2 freq -23283 path delay 156913 + ptp4l[526.136]: master offset -56535 s2 freq -55882 path delay 195237 + ptp4l[527.137]: master offset 24678 s2 freq +8371 path delay 163169 + ptp4l[528.137]: master offset 9448 s2 freq +544 path delay 163169 + ptp4l[529.137]: master offset 25778 s2 freq +19708 path delay 139827 + ptp4l[529.242]: selected best master clock b0227a.fffe.d8b7e3 on port 1 + ptp4l[529.242]: selected best master clock b0227a.fffe.d8b7e3 + ptp4l[529.242]: foreign master not using PTP timescale + ptp4l[530.137]: master offset 3067 s2 freq +4731 path delay 135917 + ptp4l[531.137]: master offset -8098 s2 freq -5514 path delay 135917 + ptp4l[532.137]: master offset -18361 s2 freq -18206 path delay 144642 + ptp4l[533.138]: master offset -6540 s2 freq -11894 path delay 144642 + ptp4l[534.137]: master offset -1649 s2 freq -8965 path delay 144642 + ptp4l[535.138]: master offset -13636 s2 freq -21446 path delay 159134 + ptp4l[536.138]: master offset 789 s2 freq -11112 path delay 159134 + ptp4l[536.208]: selected best master clock b0227a.fffe.d8b7e3 on port 1 + ptp4l[536.208]: selected best master clock b0227a.fffe.d8b7e3 + ptp4l[536.208]: foreign master not using PTP timescale On J7VCL: -:: - - root@j7200-evm:~/PTP# ptp4l -E -2 -H -i eth1 -s -l 6 -m -q -f ptp.cfg - ptp4l[425.608]: selected /dev/ptp2 as PTP clock - ptp4l[425.677]: port 1 (eth1): INITIALIZING to LISTENING on INIT_COMPLETE - ptp4l[425.677]: port 0 (/var/run/ptp4l): INITIALIZING to LISTENING on INIT_COMPLETE - ptp4l[425.705]: port 1: new foreign master b0227a.fffe.d8b7e3-1 - ptp4l[429.705]: selected best master clock b0227a.fffe.d8b7e3 on port 1 - ptp4l[429.705]: selected best master clock b0227a.fffe.d8b7e3 - ptp4l[429.705]: foreign master not using PTP timescale - ptp4l[429.705]: port 1 (eth1): LISTENING to UNCALIBRATED on RS_SLAVE - ptp4l[431.706]: master offset -1660108807288380986 s0 freq +0 path delay 168950 - ptp4l[432.706]: master offset -1660108807288385730 s1 freq -4743 path delay 168950 - ptp4l[433.706]: master offset -18439 s2 freq -23182 path delay 168950 - ptp4l[433.706]: port 1 (eth1): UNCALIBRATED to SLAVE on MASTER_CLOCK_SELECTED - ptp4l[434.706]: master offset -12324 s2 freq -22598 path delay 168950 - ptp4l[435.706]: master offset -36594 s2 freq -50565 path delay 197305 - ptp4l[436.706]: master offset -17848 s2 freq -42798 path delay 211592 - ptp4l[437.706]: master offset 6950 s2 freq -23354 path delay 211592 - ptp4l[438.706]: master offset 34748 s2 freq +6529 path delay 190271 - ptp4l[439.706]: master offset 9819 s2 freq -7976 path delay 190271 - ptp4l[440.707]: master offset -12612 s2 freq -27461 path delay 202810 - ptp4l[441.706]: master offset -6574 s2 freq -25207 path delay 206237 - ptp4l[442.707]: master offset 4474 s2 freq -16131 path delay 202810 - ptp4l[443.707]: master offset 18718 s2 freq -545 path delay 186632 - ptp4l[444.707]: master offset -7992 s2 freq -21639 path delay 196330 - ptp4l[445.707]: master offset -4577 s2 freq -20622 path delay 196330 - ptp4l[446.707]: master offset -1473 s2 freq -18891 path delay 196330 - ptp4l[447.707]: master offset 15459 s2 freq -2401 path delay 180152 - ptp4l[448.707]: master offset 256 s2 freq -12966 path delay 180152 - ptp4l[449.707]: master offset -4951 s2 freq -18096 path delay 180152 +.. code:: console + + root@j7200-evm:~/PTP# ptp4l -E -2 -H -i eth1 -s -l 6 -m -q -f ptp.cfg + ptp4l[425.608]: selected /dev/ptp2 as PTP clock + ptp4l[425.677]: port 1 (eth1): INITIALIZING to LISTENING on INIT_COMPLETE + ptp4l[425.677]: port 0 (/var/run/ptp4l): INITIALIZING to LISTENING on INIT_COMPLETE + ptp4l[425.705]: port 1: new foreign master b0227a.fffe.d8b7e3-1 + ptp4l[429.705]: selected best master clock b0227a.fffe.d8b7e3 on port 1 + ptp4l[429.705]: selected best master clock b0227a.fffe.d8b7e3 + ptp4l[429.705]: foreign master not using PTP timescale + ptp4l[429.705]: port 1 (eth1): LISTENING to UNCALIBRATED on RS_SLAVE + ptp4l[431.706]: master offset -1660108807288380986 s0 freq +0 path delay 168950 + ptp4l[432.706]: master offset -1660108807288385730 s1 freq -4743 path delay 168950 + ptp4l[433.706]: master offset -18439 s2 freq -23182 path delay 168950 + ptp4l[433.706]: port 1 (eth1): UNCALIBRATED to SLAVE on MASTER_CLOCK_SELECTED + ptp4l[434.706]: master offset -12324 s2 freq -22598 path delay 168950 + ptp4l[435.706]: master offset -36594 s2 freq -50565 path delay 197305 + ptp4l[436.706]: master offset -17848 s2 freq -42798 path delay 211592 + ptp4l[437.706]: master offset 6950 s2 freq -23354 path delay 211592 + ptp4l[438.706]: master offset 34748 s2 freq +6529 path delay 190271 + ptp4l[439.706]: master offset 9819 s2 freq -7976 path delay 190271 + ptp4l[440.707]: master offset -12612 s2 freq -27461 path delay 202810 + ptp4l[441.706]: master offset -6574 s2 freq -25207 path delay 206237 + ptp4l[442.707]: master offset 4474 s2 freq -16131 path delay 202810 + ptp4l[443.707]: master offset 18718 s2 freq -545 path delay 186632 + ptp4l[444.707]: master offset -7992 s2 freq -21639 path delay 196330 + ptp4l[445.707]: master offset -4577 s2 freq -20622 path delay 196330 + ptp4l[446.707]: master offset -1473 s2 freq -18891 path delay 196330 + ptp4l[447.707]: master offset 15459 s2 freq -2401 path delay 180152 + ptp4l[448.707]: master offset 256 s2 freq -12966 path delay 180152 + ptp4l[449.707]: master offset -4951 s2 freq -18096 path delay 180152 diff --git a/source/linux/Foundational_Components/Kernel/Kernel_Drivers/Network/CPSW-Proxy-Client.rst b/source/linux/Foundational_Components/Kernel/Kernel_Drivers/Network/CPSW-Proxy-Client.rst index a569dffdd..504805ef4 100644 --- a/source/linux/Foundational_Components/Kernel/Kernel_Drivers/Network/CPSW-Proxy-Client.rst +++ b/source/linux/Foundational_Components/Kernel/Kernel_Drivers/Network/CPSW-Proxy-Client.rst @@ -229,14 +229,14 @@ Multicast MAC addresses can be added/deleted using the *ip maddr* command: .. code-block:: console - # Add Multicast address - ip maddr add dev + # Add Multicast address + ip maddr add dev - # Check if entry has been added successfully - ip maddr show dev + # Check if entry has been added successfully + ip maddr show dev - # Delete Multicast address - ip maddr del dev + # Delete Multicast address + ip maddr del dev TX QoS ^^^^^^ diff --git a/source/linux/Foundational_Components/Kernel/Kernel_Drivers/Network/CPSW-TSN-Tuning.rst b/source/linux/Foundational_Components/Kernel/Kernel_Drivers/Network/CPSW-TSN-Tuning.rst index 9e9d10596..77c9029e0 100644 --- a/source/linux/Foundational_Components/Kernel/Kernel_Drivers/Network/CPSW-TSN-Tuning.rst +++ b/source/linux/Foundational_Components/Kernel/Kernel_Drivers/Network/CPSW-TSN-Tuning.rst @@ -5,7 +5,7 @@ TSN Switch Tuning Guide ======================= .. contents:: :local: - :depth: 2 + :depth: 2 The size of each FIFO TX queue in CPSW is 2K Bytes by default and packets might have to be queued in the switch temporarily depending on the TSN @@ -15,9 +15,9 @@ is no packet loss. The following TSN features in switch mode can be tuned for optimizing the performance: - 1. EST (Enhanced Scheduler for Traffic) - 2. CBS (Credit Based Shaper) - 3. IET (Interspersing Express Traffic) + 1. EST (Enhanced Scheduler for Traffic) + 2. CBS (Credit Based Shaper) + 3. IET (Interspersing Express Traffic) Background @@ -49,14 +49,14 @@ priority which has the longest wait time of X microseconds. Also, the TX queue size is 2K Bytes = 2048 Bytes. The EST schedule would be as follows: -:: +.. code:: text - Priority 0 X0 microseconds - Priority 1 X1 microseconds - Priority 2 X2 microseconds - Priority . . microseconds - Priority . . microseconds - Priority n-1 Xn-1 microseconds + Priority 0 X0 microseconds + Priority 1 X1 microseconds + Priority 2 X2 microseconds + Priority . . microseconds + Priority . . microseconds + Priority n-1 Xn-1 microseconds Here, the Cycle-Time is X0+X1+...+Xn-1 And, X is the maximum of (Cycle-Time - Xj) over all j from 0 to n-1, @@ -64,46 +64,46 @@ which corresponds to the maximum time that one of all the n priorities has to wait for its turn. Then, to prevent packet drops, we require: -:: +.. code:: text - (Maximum-Wait-Time)*(Throughput) < Queue-Size + (Maximum-Wait-Time)*(Throughput) < Queue-Size - Or, - (X microseconds)*(Y Bytes/Second) < 2048 Bytes - (X*10^-6 Seconds)*(Y Bytes/Second) < 2048 Bytes - Thus, numerically, - X*Y < 2048000000 + Or, + (X microseconds)*(Y Bytes/Second) < 2048 Bytes + (X*10^-6 Seconds)*(Y Bytes/Second) < 2048 Bytes + Thus, numerically, + X*Y < 2048000000 Using the above condition, we can find out the maximum wait-time for different throughput as follows: -:: +.. code:: text - 1. Throughput of 10 Mbps (Y = 10*1024*1024/8 Bytes/Second) - => X*(10*1024*1024/8) < 2048000000 - => X < 2048000000*8/(10*1024*1024) - Thus, X < 1562.5 microseconds - If X is greater than this value, then there will be packet drops - for 10 Mbps throughput. - 2. Similarly, for 100 Mbps throughput, - => X < 156.25 microseconds - 3. And for 1000 Mbps throughput, - => X < 15.625 microseconds. + 1. Throughput of 10 Mbps (Y = 10*1024*1024/8 Bytes/Second) + => X*(10*1024*1024/8) < 2048000000 + => X < 2048000000*8/(10*1024*1024) + Thus, X < 1562.5 microseconds + If X is greater than this value, then there will be packet drops + for 10 Mbps throughput. + 2. Similarly, for 100 Mbps throughput, + => X < 156.25 microseconds + 3. And for 1000 Mbps throughput, + => X < 15.625 microseconds. We can also use the condition to derive the maximum throughput allowed for a given EST as follows: For example, consider an EST schedule as follows: -:: +.. code:: text - Priority-0 200 microseconds - Priority-1 300 microseconds - Here, Cycle-Time is 500 microseconds and X = 300 - Thus, - 300*Y < 2048000000 - Or, - => Y < 6826666 Bytes per second - => Y < 52 Mbps is the throughput limit to prevent packet drops. + Priority-0 200 microseconds + Priority-1 300 microseconds + Here, Cycle-Time is 500 microseconds and X = 300 + Thus, + 300*Y < 2048000000 + Or, + => Y < 6826666 Bytes per second + => Y < 52 Mbps is the throughput limit to prevent packet drops. Also, if Y has to increase, then X, and therefore Cycle-Time have to decrease for preventing packet drops. @@ -118,27 +118,27 @@ being filled quickly, again resulting in packet drops. For a CBS schedule where there are N priorities with the rate-limiting on each of these priorities being: -:: +.. code::text - X0, X1, .... XN-1 Bytes per second. + X0, X1, .... XN-1 Bytes per second. If the actual throughput of each of these priorities is: -:: +.. code::text - Y0, Y1, .... YN-1 Bytes per second, + Y0, Y1, .... YN-1 Bytes per second, and they are all greater than the rate-limits, then, the queues will fill up in: -:: +.. code::text - 2048/(Y0-X0), 2048/(Y1-X1), .... seconds. + 2048/(Y0-X0), 2048/(Y1-X1), .... seconds. In general, queue 'i' will fill up in: -:: +.. code:: text - 2048/(Yi-Xi) seconds + 2048/(Yi-Xi) seconds For example, consider N=2, with X0=300 Mbps, X1=400 Mbps, Y0=301 Mbps and Y1=410 Mbps. Y0 and Y1 are higher than X0 and X1 , thereby causing the switch to @@ -147,10 +147,10 @@ Thus, traffic accumulates at a rate of (Y0-X0) and (Y1-X1) on queues 0 and 1 and starts filling them up. For the example above, it would take: -:: +.. code:: text - 15.625 milliseconds to fill up queue 0, and - 1.5625 milliseconds to fill up queue 1, + 15.625 milliseconds to fill up queue 0, and + 1.5625 milliseconds to fill up queue 1, resulting in packet drops after that time on those queues if the existing throughput continues on those queues. @@ -167,13 +167,13 @@ starts filling up the queue, resulting in packet drops. If the low priority traffic is arriving at Y Bytes per second, it would fill up the queue in: -:: +.. code:: text - 2048/Y seconds. + 2048/Y seconds. For example, if low priority traffic is arriving at 100 Mbps, it would fill up the queue in: -:: +.. code:: text - 156.25 microseconds. + 156.25 microseconds. diff --git a/source/linux/Foundational_Components/Kernel/Kernel_Drivers/Network/CPSW-TSN.rst b/source/linux/Foundational_Components/Kernel/Kernel_Drivers/Network/CPSW-TSN.rst index f546a22db..4b27c410a 100644 --- a/source/linux/Foundational_Components/Kernel/Kernel_Drivers/Network/CPSW-TSN.rst +++ b/source/linux/Foundational_Components/Kernel/Kernel_Drivers/Network/CPSW-TSN.rst @@ -5,7 +5,7 @@ TSN with CPSW ============== .. contents:: :local: - :depth: 3 + :depth: 3 Introduction ============ @@ -18,10 +18,10 @@ TI Common Platform Ethernet Switch (CPSW) supports TSN features such as: 4. IET (Interspersing Express Traffic) [IEEE-802.3br, IEEE-802.1Qbu] .. note:: - All TSN features require CONFIG_TI_AM65_CPTS to be enabled. + All TSN features require CONFIG_TI_AM65_CPTS to be enabled. .. note:: - Switch based TSN features are supported only with CPSWxg for x >= 3. + Switch based TSN features are supported only with CPSWxg for x >= 3. Documentation and Testing ========================= @@ -30,12 +30,12 @@ The documentation for each of the TSN features along with the tests are present at: .. toctree:: - :maxdepth: 1 + :maxdepth: 1 - CPSW-PTP - CPSW-EST - CPSW-CBS - CPSW-IET + CPSW-PTP + CPSW-EST + CPSW-CBS + CPSW-IET Testing Details ================ @@ -55,6 +55,6 @@ Testing Details - For tuning the TSN features in Switch Mode, refer :ref:`tsn_tuning` .. toctree:: - :hidden: + :hidden: - CPSW-TSN-Tuning + CPSW-TSN-Tuning diff --git a/source/linux/Foundational_Components/Kernel/Kernel_Drivers/Network/CPSW.rst b/source/linux/Foundational_Components/Kernel/Kernel_Drivers/Network/CPSW.rst index 0d61d9cf8..37d2e1a7f 100644 --- a/source/linux/Foundational_Components/Kernel/Kernel_Drivers/Network/CPSW.rst +++ b/source/linux/Foundational_Components/Kernel/Kernel_Drivers/Network/CPSW.rst @@ -26,75 +26,65 @@ The driver supports the following features: To enable/disable Networking support, start the *Linux Kernel Configuration* tool: -:: +.. code:: console - $ make menuconfig - -| + $ make menuconfig Select *Device Drivers* from the main menu. -:: - - ... - ... - Power management options ---> - [*] Networking support ---> - Device Drivers ---> - File systems ---> - Kernel hacking ---> - ... - ... +.. code:: menuconfig -| + ... + ... + Power management options ---> + [*] Networking support ---> + Device Drivers ---> + File systems ---> + Kernel hacking ---> + ... + ... Select *Network device support* as shown below: -:: - - ... - ... - [*] Multiple devices driver support (RAID and LVM) ---> - < > Generic Target Core Mod (TCM) and ConfigFS Infrastructure ---- - [*]Network device support ---> - Input device support ---> - Character devices ---> - ... - ... +.. code:: menuconfig -| + ... + ... + [*] Multiple devices driver support (RAID and LVM) ---> + < > Generic Target Core Mod (TCM) and ConfigFS Infrastructure ---- + [*]Network device support ---> + Input device support ---> + Character devices ---> + ... + ... Select *Ethernet driver support* as shown below: -:: +.. code:: menuconfig - ... - ... - *** CAIF transport drivers *** - Distributed Switch Architecture drivers ---> - [*] Ethernet driver support ---> - -*- PHY Device support and infrastructure ---> - < > Micrel KS8995MA 5-ports 10/100 managed Ethernet switch - < > PPP (point-to-point protocol) support - ... - ... - -| + ... + ... + *** CAIF transport drivers *** + Distributed Switch Architecture drivers ---> + [*] Ethernet driver support ---> + -*- PHY Device support and infrastructure ---> + < > Micrel KS8995MA 5-ports 10/100 managed Ethernet switch + < > PPP (point-to-point protocol) support + ... + ... Select ** as shown here: -:: - - ... - [*] Texas Instruments (TI) devices - < > TI DaVinci EMAC Support - -*- TI DaVinci MDIO Support - -*- TI DaVinci CPDMA Support - -*- TI CPSW Switch Phy sel Support - <*> TI CPSW Switch Support - [ ] TI Common Platform Time Sync (CPTS) Support +.. code:: menuconfig -| + ... + [*] Texas Instruments (TI) devices + < > TI DaVinci EMAC Support + -*- TI DaVinci MDIO Support + -*- TI DaVinci CPDMA Support + -*- TI CPSW Switch Phy sel Support + <*> TI CPSW Switch Support + [ ] TI Common Platform Time Sync (CPTS) Support .. rubric:: **Module Build** :name: module-build @@ -107,16 +97,16 @@ places mentioned in the section above select module build (short-cut key Select ** as shown here: -:: +.. code:: menuconfig - ... - [*] Texas Instruments (TI) devices - < > TI DaVinci EMAC Support - TI DaVinci MDIO Support - TI DaVinci CPDMA Support - -*- TI CPSW Switch Phy sel Support - TI CPSW Switch Support - [ ] TI Common Platform Time Sync (CPTS) Support + ... + [*] Texas Instruments (TI) devices + < > TI DaVinci EMAC Support + TI DaVinci MDIO Support + TI DaVinci CPDMA Support + -*- TI CPSW Switch Phy sel Support + TI CPSW Switch Support + [ ] TI Common Platform Time Sync (CPTS) Support | @@ -132,9 +122,9 @@ each interrupt. To enable interrupt pacing, please execute below mentioned command using ethtool utility: -:: +.. code:: console - ethtool -C eth0 rx-usecs + ethtool -C eth0 rx-usecs | @@ -161,17 +151,17 @@ used for both RX/TX path. To configure descs\_pool\_size from kernel boot cmdline: -:: +.. code:: text - ti_cpsw.descs_pool_size=4096 + ti_cpsw.descs_pool_size=4096 | To configure descs\_pool\_size from cmdline: -:: +.. code:: text - insmod ti_cpsw descs_pool_size=4096 + insmod ti_cpsw descs_pool_size=4096 | @@ -181,9 +171,9 @@ total number of CPDMA channels and number of TX and RX channels. Number of CPPI Buffer Descriptors allocated for RX and TX path can be customized via ethtool '-G' command: -:: +.. code:: console - ethtool -G rx + ethtool -G rx | @@ -192,45 +182,45 @@ descriptors will be arranged for TX automatically. Defaults and limitations: -:: +.. code:: text - - minimum number of rx descriptors is max number of CPDMA channels (8) - to be able to set at least one CPPI Buffer Descriptor per channel - - maximum number of rx descriptors is (descs_pool_size - max number of CPDMA channels (8)) - - by default, descriptors will be split equally between RX/TX path - - any values passed in "tx" parameter will be ignored + - minimum number of rx descriptors is max number of CPDMA channels (8) + to be able to set at least one CPPI Buffer Descriptor per channel + - maximum number of rx descriptors is (descs_pool_size - max number of CPDMA channels (8)) + - by default, descriptors will be split equally between RX/TX path + - any values passed in "tx" parameter will be ignored | Examples: -:: - - # ethtool -g eth0 - Pre-set maximums: - RX: 7372 - RX Mini: 0 - RX Jumbo: 0 - TX: 0 - Current hardware settings: - RX: 4096 - RX Mini: 0 - RX Jumbo: 0 - TX: 4096 - - # ethtool -G eth0 rx 7372 - # ethtool -g eth0 - Ring parameters for eth0: - Pre-set maximums: - RX: 7372 - RX Mini: 0 - RX Jumbo: 0 - TX: 0 - Current hardware settings: - RX: 7372 - RX Mini: 0 - RX Jumbo: 0 - TX: 820 +.. code:: console + + # ethtool -g eth0 + Pre-set maximums: + RX: 7372 + RX Mini: 0 + RX Jumbo: 0 + TX: 0 + Current hardware settings: + RX: 4096 + RX Mini: 0 + RX Jumbo: 0 + TX: 4096 + + # ethtool -G eth0 rx 7372 + # ethtool -g eth0 + Ring parameters for eth0: + Pre-set maximums: + RX: 7372 + RX Mini: 0 + RX Jumbo: 0 + TX: 0 + Current hardware settings: + RX: 7372 + RX Mini: 0 + RX Jumbo: 0 + TX: 820 | @@ -243,23 +233,23 @@ VLAN will be subscribed to host port and the respective slave ports. **VLAN Add** -:: +.. code:: console - ip link add link eth0 name eth0.5 type vlan id 5 + ip link add link eth0 name eth0.5 type vlan id 5 - < or > + < or > - vconfig add eth0 5 + vconfig add eth0 5 **VLAN del** -:: +.. code:: console - ip link del eth0.5 + ip link del eth0.5 - < or > + < or > - vconfig rem eth0 5 + vconfig rem eth0 5 **IP assigning** @@ -267,26 +257,26 @@ IP address can be assigned to the VLAN interface either via udhcpc when a VLAN aware dhcp server is present or via static ip asigning using ip/ifconfig tools. -:: +.. code:: console - ip addr add 192.168.10.5/24 dev eth0.5 - ip link set dev eth0 up + ip addr add 192.168.10.5/24 dev eth0.5 + ip link set dev eth0 up - < or > + < or > - ifconfig eth0.5 192.168.10.5 + ifconfig eth0.5 192.168.10.5 Once VLAN is added, it will create a new entry in Ethernet interfaces like eth0.5, below is an example how it check the vlan interface -:: +.. code:: console - ip link show dev eth0.5 - ip addr show dev eth0.5 + ip link show dev eth0.5 + ip addr show dev eth0.5 - < or > + < or > - ifconfig eth0.5 + ifconfig eth0.5 .. rubric:: Packet Send/Receive :name: packet-sendreceive @@ -310,30 +300,30 @@ The following is the example to add and delete muliticast address Add Multicast address -:: +.. code:: text - struct ifreq ifr; - ifr.ifr_hwaddr.sa_data[0] = 0x01; - ifr.ifr_hwaddr.sa_data[1] = 0x80; - ifr.ifr_hwaddr.sa_data[2] = 0xC2; - ifr.ifr_hwaddr.sa_data[3] = 0x00; - ifr.ifr_hwaddr.sa_data[4] = 0x00; - ifr.ifr_hwaddr.sa_data[5] = 0x0E; - ioctl(sockfd, SIOCADDMULTI, &ifr); + struct ifreq ifr; + ifr.ifr_hwaddr.sa_data[0] = 0x01; + ifr.ifr_hwaddr.sa_data[1] = 0x80; + ifr.ifr_hwaddr.sa_data[2] = 0xC2; + ifr.ifr_hwaddr.sa_data[3] = 0x00; + ifr.ifr_hwaddr.sa_data[4] = 0x00; + ifr.ifr_hwaddr.sa_data[5] = 0x0E; + ioctl(sockfd, SIOCADDMULTI, &ifr); Delete Multicast address -:: +.. code:: text - struct ifreq ifr; - ifr.ifr_hwaddr.sa_data[0] = 0x01; - ifr.ifr_hwaddr.sa_data[1] = 0x80; - ifr.ifr_hwaddr.sa_data[2] = 0xC2; - ifr.ifr_hwaddr.sa_data[3] = 0x00; - ifr.ifr_hwaddr.sa_data[4] = 0x00; - ifr.ifr_hwaddr.sa_data[5] = 0x0E; - ioctl(sockfd, SIOCDELMULTI, &ifr); + struct ifreq ifr; + ifr.ifr_hwaddr.sa_data[0] = 0x01; + ifr.ifr_hwaddr.sa_data[1] = 0x80; + ifr.ifr_hwaddr.sa_data[2] = 0xC2; + ifr.ifr_hwaddr.sa_data[3] = 0x00; + ifr.ifr_hwaddr.sa_data[4] = 0x00; + ifr.ifr_hwaddr.sa_data[5] = 0x0E; + ioctl(sockfd, SIOCDELMULTI, &ifr); .. note:: This interface does not support VLANs. @@ -427,7 +417,7 @@ To allow Dual Emac interfaces to be added to the Linux Bridge one of following c Dual EMAC can be enabled with adding the entry dual\_emac to the cpsw device tree node as the reference patch below -:: +.. code:: dts diff --git a/arch/arm/boot/dts/am335x-evmsk.dts b/arch/arm/boot/dts/am335x-evmsk.dts index ac1f759..b50e9ef 100644 @@ -468,7 +458,7 @@ using either of the folloing command or through init scripts. The network interface IP address can be configured automatically (DHCP) depending on root file system or configured manually. Manual configuration: -:: +.. code:: console ip addr add 192.168.1.1/24 dev eth0 ip link set dev eth0 up @@ -500,7 +490,7 @@ set tx internal delay (rgmii-txid) which is required for AM335x devices. Please consult example DTS files for the AM437x and AM57x EVMs for respective PHY modes. -:: +.. code:: dts &mac { pinctrl-names = "default", "sleep"; @@ -547,37 +537,37 @@ through SIOCSWITCHCONFIG command. Userspace binary formats ---> -:: - - Power management options ---> - [*] Networking support ---> - Device Drivers ---> - File systems ---> - Kernel hacking ---> - -:: - - --- Networking support - Networking options ---> - [ ] Amateur Radio support ---> - <*> CAN bus subsystem support ---> - < > IrDA (infrared) subsystem support ---> - < > Bluetooth subsystem support ---> - < > RxRPC session sockets - -:: - - < > The RDS Protocol (EXPERIMENTAL) - < > The TIPC Protocol (EXPERIMENTAL) ---> - < > Asynchronous Transfer Mode (ATM) - < > Layer Two Tunneling Protocol (L2TP) ---> - < > 802.1d Ethernet Bridging - [ ] Distributed Switch Architecture support ---> - <*> 802.1Q VLAN Support - [*] GVRP (GARP VLAN Registration Protocol) support - < > DECnet Support - < > ANSI/IEEE 802.2 LLC type 2 Support - < > The IPX protocol +.. code:: menuconfig + + Power management options ---> + [*] Networking support ---> + Device Drivers ---> + File systems ---> + Kernel hacking ---> + +.. code:: menuconfig + + --- Networking support + Networking options ---> + [ ] Amateur Radio support ---> + <*> CAN bus subsystem support ---> + < > IrDA (infrared) subsystem support ---> + < > Bluetooth subsystem support ---> + < > RxRPC session sockets + +.. code:: menuconfig + + < > The RDS Protocol (EXPERIMENTAL) + < > The TIPC Protocol (EXPERIMENTAL) ---> + < > Asynchronous Transfer Mode (ATM) + < > Layer Two Tunneling Protocol (L2TP) ---> + < > 802.1d Ethernet Bridging + [ ] Distributed Switch Architecture support ---> + <*> 802.1Q VLAN Support + [*] GVRP (GARP VLAN Registration Protocol) support + < > DECnet Support + < > ANSI/IEEE 802.2 LLC type 2 Support + < > The IPX protocol | @@ -586,35 +576,35 @@ Userspace binary formats ---> Following is sample code for configuring the switch. -:: - - #include - ... - #include - int main(void) - { - struct net_switch_config cmd_struct; - struct ifreq ifr; - int sockfd; - strncpy(ifr.ifr_name, "eth0", IFNAMSIZ); - ifr.ifr_data = (char*)&cmd_struct; - if ((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) { - printf("Can't open the socket\n"); - return -1; - } - memset(&cmd_struct, 0, sizeof(struct net_switch_config)); - - ...//initialise cmd_struct with switch commands - - if (ioctl(sockfd, SIOCSWITCHCONFIG, &ifr) < 0) { - printf("Command failed\n"); - close(sockfd); - return -1; - } - printf("command success\n"); - close(sockfd); - return 0; - } +.. code:: c + + #include + ... + #include + int main(void) + { + struct net_switch_config cmd_struct; + struct ifreq ifr; + int sockfd; + strncpy(ifr.ifr_name, "eth0", IFNAMSIZ); + ifr.ifr_data = (char*)&cmd_struct; + if ((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) { + printf("Can't open the socket\n"); + return -1; + } + memset(&cmd_struct, 0, sizeof(struct net_switch_config)); + + ...//initialise cmd_struct with switch commands + + if (ioctl(sockfd, SIOCSWITCHCONFIG, &ifr) < 0) { + printf("Command failed\n"); + close(sockfd); + return -1; + } + printf("command success\n"); + close(sockfd); + return 0; + } .. rubric:: CONFIG\_SWITCH\_ADD\_MULTICAST :name: config_switch_add_multicast @@ -625,7 +615,7 @@ greater than zero then VLAN LLDP/Multicast is added. | -:: +.. code:: text cmd_struct.cmd = CONFIG_SWITCH_ADD_MULTICAST @@ -656,7 +646,7 @@ ioctl call returns success or failure. CONFIG\_SWITCH\_DEL\_MULTICAST is used to Delete a LLDP/Multicast address with or without VLAN ID. -:: +.. code:: text cmd_struct.cmd = CONFIG_SWITCH_DEL_MULTICAST @@ -679,9 +669,9 @@ ioctl call returns success or failure. CONFIG\_SWITCH\_ADD\_VLAN is used to add VLAN ID. -:: +.. code:: text - cmd_struct.cmd = CONFIG_SWITCH_ADD_VLAN + cmd_struct.cmd = CONFIG_SWITCH_ADD_VLAN +--------------------------+----------------------------+--------------------------+ | Parameter | Description | Range | @@ -723,7 +713,7 @@ ioctl call returns success or failure. CONFIG\_SWITCH\_DEL\_VLAN is used to delete VLAN ID. -:: +.. code:: text cmd_struct.cmd = CONFIG_SWITCH_DEL_VLAN @@ -745,7 +735,7 @@ ioctl call returns success or failure. CONFIG\_SWITCH\_ADD\_UNKNOWN\_VLAN\_INFO is used to set unknown VLAN Info. -:: +.. code:: text cmd_struct.cmd = CONFIG_SWITCH_ADD_UNKNOWN_VLAN_INFO @@ -787,9 +777,9 @@ ioctl call returns success or failure. CONFIG\_SWITCH\_SET\_PORT\_CONFIG is used to set Phy Config. -:: +.. code:: text - cmd_struct.cmd = CONFIG_SWITCH_SET_PORT_CONFIG + cmd_struct.cmd = CONFIG_SWITCH_SET_PORT_CONFIG +--------------------+----------------+--------------------------------------------------------------------------------------+ | Parameter | Description | Range | @@ -810,7 +800,7 @@ ioctl call returns success or failure. CONFIG\_SWITCH\_GET\_PORT\_CONFIG is used to get Phy Config. -:: +.. code:: text cmd_struct.cmd = CONFIG_SWITCH_GET_PORT_CONFIG @@ -833,7 +823,7 @@ On success "cmd\_struct.ecmd" holds port phy settings CONFIG\_SWITCH\_SET\_PORT\_STATE is used to set port status. -:: +.. code:: text cmd_struct.cmd = CONFIG_SWITCH_SET_PORT_STATE @@ -859,9 +849,9 @@ ioctl call returns success or failure. CONFIG\_SWITCH\_GET\_PORT\_STATE is used to set port status. -:: +.. code:: text - cmd_struct.cmd = CONFIG_SWITCH_GET_PORT_STATE + cmd_struct.cmd = CONFIG_SWITCH_GET_PORT_STATE +--------------------+---------------+---------+ | Parameter | Description | Range | @@ -886,7 +876,7 @@ ports. The MC/BC Rate limit feature filters of BC/MC packets per sec as following: -:: +.. code:: text number_of_packets/sec = (Fclk / ALE_PRESCALE) * port.BCAST/MCAST_LIMIT where: ALE_PRESCALE width is 19bit and min value 0x10. @@ -899,7 +889,7 @@ register. with Fclk = 125MHz and port.BCAST/MCAST\_LIMIT = 1 -:: +.. code:: text max number_of_packets/sec = (125MHz / 0x10) * 1 = 7 812 500 min number_of_packets/sec = (125MHz / 0xFFFFF) * 1 = 119 @@ -907,13 +897,13 @@ with Fclk = 125MHz and port.BCAST/MCAST\_LIMIT = 1 So port.BCAST/MCAST\_LIMIT can be selected to be 1 while ALE\_PRESCALE is calculated as: -:: +.. code:: text ALE_PRESCALE = Fclk / number_of_packets | -:: +.. code:: text cmd\_struct.cmd = CONFIG\_SWITCH\_RATELIMIT @@ -1011,301 +1001,289 @@ for am335x. .. rubric:: ethtool DEVNAME Display standard information about device :name: ethtool-devname-display-standard-information-about-device -:: - - # ethtool eth0 - Settings for eth0: - Supported ports: [ TP MII ] - Supported link modes: 10baseT/Half 10baseT/Full - 100baseT/Half 100baseT/Full - 1000baseT/Half 1000baseT/Full - Supported pause frame use: Symmetric - Supports auto-negotiation: Yes - Advertised link modes: 10baseT/Half 10baseT/Full - 100baseT/Half 100baseT/Full - 1000baseT/Half 1000baseT/Full - Advertised pause frame use: Symmetric - Advertised auto-negotiation: Yes - Link partner advertised link modes: 10baseT/Half 10baseT/Full - 100baseT/Half 100baseT/Full - 1000baseT/Full - Link partner advertised pause frame use: Symmetric - Link partner advertised auto-negotiation: Yes - Speed: 1000Mb/s - Duplex: Full - Port: MII - PHYAD: 1 - Transceiver: external - Auto-negotiation: on - Supports Wake-on: d - Wake-on: d - Current message level: 0x00000000 (0) - Link detected: yes" +.. code:: console + + # ethtool eth0 + Settings for eth0: + Supported ports: [ TP MII ] + Supported link modes: 10baseT/Half 10baseT/Full + 100baseT/Half 100baseT/Full + 1000baseT/Half 1000baseT/Full + Supported pause frame use: Symmetric + Supports auto-negotiation: Yes + Advertised link modes: 10baseT/Half 10baseT/Full + 100baseT/Half 100baseT/Full + 1000baseT/Half 1000baseT/Full + Advertised pause frame use: Symmetric + Advertised auto-negotiation: Yes + Link partner advertised link modes: 10baseT/Half 10baseT/Full + 100baseT/Half 100baseT/Full + 1000baseT/Full + Link partner advertised pause frame use: Symmetric + Link partner advertised auto-negotiation: Yes + Speed: 1000Mb/s + Duplex: Full + Port: MII + PHYAD: 1 + Transceiver: external + Auto-negotiation: on + Supports Wake-on: d + Wake-on: d + Current message level: 0x00000000 (0) + Link detected: yes" .. rubric:: ethtool -i\|--driver DEVNAME Show driver information :name: ethtool--i--driver-devname-show-driver-information -:: +.. code:: console - #ethtool -i eth0 - driver: cpsw - version: 1.0 - firmware-version: - expansion-rom-version: - bus-info: 48484000.ethernet - supports-statistics: yes - supports-test: no - supports-eeprom-access: no - supports-register-dump: yes - supports-priv-flags: no" + #ethtool -i eth0 + driver: cpsw + version: 1.0 + firmware-version: + expansion-rom-version: + bus-info: 48484000.ethernet + supports-statistics: yes + supports-test: no + supports-eeprom-access: no + supports-register-dump: yes + supports-priv-flags: no" .. rubric:: ethtool -P\|--show-permaddr DEVNAME Show permanent hardware address :name: ethtool--p--show-permaddr-devname-show-permanent-hardware-address -:: +.. code:: console - # ethtool -P eth0 - Permanent address: a0:f6:fd:a6:46:6e" + # ethtool -P eth0 + Permanent address: a0:f6:fd:a6:46:6e" .. rubric:: ethtool -s\|--change DEVNAME Change generic options :name: ethtool--s--change-devname-change-generic-options Below commands will be redirected to the phy driver: -:: +.. code:: text - [ speed %d ] - [ duplex half|full ] - [ autoneg on|off ] - [ wol p|u|m|b|a|g|s|d... ] - [ sopass %x:%x:%x:%x:%x:%x ] + [ speed %d ] + [ duplex half|full ] + [ autoneg on|off ] + [ wol p|u|m|b|a|g|s|d... ] + [ sopass %x:%x:%x:%x:%x:%x ] .. note:: CPSW driver do not perform any kind of WOL specific actions or configurations. -:: +.. code:: console - #ethtool -s eth0 duplex half speed 100 - [ 3550.892112] cpsw 48484000.ethernet eth0: Link is Down - [ 3556.088704] cpsw 48484000.ethernet eth0: Link is Up - 100Mbps/Half - flow control off + #ethtool -s eth0 duplex half speed 100 + [ 3550.892112] cpsw 48484000.ethernet eth0: Link is Down + [ 3556.088704] cpsw 48484000.ethernet eth0: Link is Up - 100Mbps/Half - flow control off Sets the driver message type flags by name or number -:: +.. code:: console - [ msglvl %d | msglvl type on|off ... ] - # ethtool -s eth0 msglvl drv off - # ethtool -s eth0 msglvl ifdown off - # ethtool -s eth0 msglvl ifup off - # ethtool eth0 - Current message level: 0x00000031 (49) - drv ifdown ifup + [ msglvl %d | msglvl type on|off ... ] + # ethtool -s eth0 msglvl drv off + # ethtool -s eth0 msglvl ifdown off + # ethtool -s eth0 msglvl ifup off + # ethtool eth0 + Current message level: 0x00000031 (49) + drv ifdown ifup .. rubric:: ethtool -r\|--negotiate DEVNAME Restart N-WAY negotiation :name: ethtool--r--negotiate-devname-restart-n-way-negotiation -:: +.. code:: console - # ethtool -r eth0 - [ 4338.167685] cpsw 48484000.ethernet eth0: Link is Down - [ 4341.288695] cpsw 48484000.ethernet eth0: Link is Up - 1Gbps/Full - flow control rx/tx" + # ethtool -r eth0 + [ 4338.167685] cpsw 48484000.ethernet eth0: Link is Down + [ 4341.288695] cpsw 48484000.ethernet eth0: Link is Up - 1Gbps/Full - flow control rx/tx" .. rubric:: ethtool -a\|--show-pause DEVNAME Show pause options :name: ethtool--a--show-pause-devname-show-pause-options -:: +.. code:: console - # ethtool -a eth0 - Pause parameters for eth0: - Autonegotiate: off - RX: off - TX: off + # ethtool -a eth0 + Pause parameters for eth0: + Autonegotiate: off + RX: off + TX: off .. rubric:: ethtool -A\|--pause DEVNAME Set pause options :name: ethtool--a--pause-devname-set-pause-options -:: +.. code:: console - # ethtool -A eth0 rx on tx on - cpsw 48484000.ethernet eth0: Link is Up - 1Gbps/Full - flow control rx/tx - # ethtool -a eth0 - Pause parameters for eth0: - Autonegotiate: off - RX: on - TX: on + # ethtool -A eth0 rx on tx on + cpsw 48484000.ethernet eth0: Link is Up - 1Gbps/Full - flow control rx/tx + # ethtool -a eth0 + Pause parameters for eth0: + Autonegotiate: off + RX: on + TX: on .. rubric:: ethtool -C\|--coalesce DEVNAME Set coalesce options :name: ethtool--c--coalesce-devname-set-coalesce-options -:: +.. code:: text - [rx-usecs N] + [rx-usecs N] -:: +.. code:: console - # ethtool -C eth0 rx-usecs 500 + # ethtool -C eth0 rx-usecs 500 .. rubric:: ethtool -c\|--show-coalesce DEVNAME Show coalesce options :name: ethtool--c--show-coalesce-devname-show-coalesce-options -:: - - # ethtool -c eth0 - Coalesce parameters for eth0: - Adaptive RX: off TX: off - stats-block-usecs: 0 - sample-interval: 0 - pkt-rate-low: 0 - pkt-rate-high: 0 - -:: - - rx-usecs: 0 - rx-frames: 0 - rx-usecs-irq: 0 - rx-frames-irq: 0 - -:: - - tx-usecs: 0 - tx-frames: 0 - tx-usecs-irq: 0 - tx-frames-irq: 0 - -:: - - rx-usecs-low: 0 - rx-frame-low: 0 - tx-usecs-low: 0 - tx-frame-low: 0 - -:: - - rx-usecs-high: 0 - rx-frame-high: 0 - tx-usecs-high: 0 - Tx-frame-high: 0 +.. code:: console + + # ethtool -c eth0 + Coalesce parameters for eth0: + Adaptive RX: off TX: off + stats-block-usecs: 0 + sample-interval: 0 + pkt-rate-low: 0 + pkt-rate-high: 0 + rx-usecs: 0 + rx-frames: 0 + rx-usecs-irq: 0 + rx-frames-irq: 0 + tx-usecs: 0 + tx-frames: 0 + tx-usecs-irq: 0 + tx-frames-irq: 0 + rx-usecs-low: 0 + rx-frame-low: 0 + tx-usecs-low: 0 + tx-frame-low: 0 + rx-usecs-high: 0 + rx-frame-high: 0 + tx-usecs-high: 0 + Tx-frame-high: 0 .. rubric:: ethtool -G\|--set-ring DEVNAME Set RX/TX ring parameters :name: ethtool--g--set-ring-devname-set-rxtx-ring-parameters Supported options: -:: +.. code:: text - [ rx N ] + [ rx N ] -:: +.. code:: console - # ethtool -G eth0 rx 8000 + # ethtool -G eth0 rx 8000 .. rubric:: ethtool -g\|--show-ring DEVNAME Query RX/TX ring parameters :name: ethtool--g--show-ring-devname-query-rxtx-ring-parameters -:: - - # ethtool -g eth0 - Ring parameters for eth0: - Pre-set maximums: - RX: 8184 - RX Mini: 0 - RX Jumbo: 0 - TX: 0 - Current hardware settings: - RX: 8000 - RX Mini: 0 - RX Jumbo: 0 - TX: 192 +.. code:: console + + # ethtool -g eth0 + Ring parameters for eth0: + Pre-set maximums: + RX: 8184 + RX Mini: 0 + RX Jumbo: 0 + TX: 0 + Current hardware settings: + RX: 8000 + RX Mini: 0 + RX Jumbo: 0 + TX: 192 .. rubric:: ethtool -d\|--register-dump DEVNAME Do a register dump :name: ethtool--d--register-dump-devname-do-a-register-dump This command will dump current ALE table -:: +.. code:: console - # ethtool -d eth0 - Offset Values - ------ ------ - 0x0000: 00 00 00 00 00 00 02 20 05 00 05 05 14 00 00 00 - 0x0010: ff ff 02 30 ff ff ff ff 01 00 00 00 da 74 02 30 - 0x0020: b9 83 48 ea 00 00 00 00 00 00 00 20 07 00 00 07 - 0x0030: 14 00 00 00 00 01 02 30 01 00 00 5e 0c 00 00 00 - 0x0040: 33 33 01 30 01 00 00 00 00 00 00 00 00 00 01 20 - 0x0050: 03 00 03 03 0c 00 00 00 ff ff 01 30 ff ff ff ff + # ethtool -d eth0 + Offset Values + ------ ------ + 0x0000: 00 00 00 00 00 00 02 20 05 00 05 05 14 00 00 00 + 0x0010: ff ff 02 30 ff ff ff ff 01 00 00 00 da 74 02 30 + 0x0020: b9 83 48 ea 00 00 00 00 00 00 00 20 07 00 00 07 + 0x0030: 14 00 00 00 00 01 02 30 01 00 00 5e 0c 00 00 00 + 0x0040: 33 33 01 30 01 00 00 00 00 00 00 00 00 00 01 20 + 0x0050: 03 00 03 03 0c 00 00 00 ff ff 01 30 ff ff ff ff | … .. rubric:: ethtool -S\|--statistics DEVNAME Show adapter statistics :name: ethtool--s--statistics-devname-show-adapter-statistics -:: - - # ethtool -S eth0 - NIC statistics: - Good Rx Frames: 24 - Broadcast Rx Frames: 12 - Multicast Rx Frames: 4 - Pause Rx Frames: 0 - Rx CRC Errors: 0 - Rx Align/Code Errors: 0 - Oversize Rx Frames: 0 - Rx Jabbers: 0 - Undersize (Short) Rx Frames: 0 - Rx Fragments: 1 - Rx Octets: 4290 - Good Tx Frames: 379 - Broadcast Tx Frames: 144 - Multicast Tx Frames: 228 - Pause Tx Frames: 0 - Deferred Tx Frames: 0 - Collisions: 0 - Single Collision Tx Frames: 0 - Multiple Collision Tx Frames: 0 - Excessive Collisions: 0 - Late Collisions: 0 - Tx Underrun: 0 - Carrier Sense Errors: 0 - Tx Octets: 72498 - Rx + Tx 64 Octet Frames: 30 - Rx + Tx 65-127 Octet Frames: 218 - Rx + Tx 128-255 Octet Frames: 0 - Rx + Tx 256-511 Octet Frames: 155 - Rx + Tx 512-1023 Octet Frames: 0 - Rx + Tx 1024-Up Octet Frames: 0 - Net Octets: 76792 - Rx Start of Frame Overruns: 0 - Rx Middle of Frame Overruns: 0 - Rx DMA Overruns: 0 - Rx DMA chan 0: head_enqueue: 2 - Rx DMA chan 0: tail_enqueue: 12114 - Rx DMA chan 0: pad_enqueue: 0 - Rx DMA chan 0: misqueued: 0 - Rx DMA chan 0: desc_alloc_fail: 0 - Rx DMA chan 0: pad_alloc_fail: 0 - Rx DMA chan 0: runt_receive_buf: 0 - Rx DMA chan 0: runt_transmit_bu: 0 - Rx DMA chan 0: empty_dequeue: 0 - Rx DMA chan 0: busy_dequeue: 14 - Rx DMA chan 0: good_dequeue: 21 - Rx DMA chan 0: requeue: 1 - Rx DMA chan 0: teardown_dequeue: 4095 - Tx DMA chan 0: head_enqueue: 378 - Tx DMA chan 0: tail_enqueue: 1 - Tx DMA chan 0: pad_enqueue: 0 - Tx DMA chan 0: misqueued: 1 - Tx DMA chan 0: desc_alloc_fail: 0 - Tx DMA chan 0: pad_alloc_fail: 0 - Tx DMA chan 0: runt_receive_buf: 0 - Tx DMA chan 0: runt_transmit_bu: 26 - Tx DMA chan 0: empty_dequeue: 379 - Tx DMA chan 0: busy_dequeue: 0 - Tx DMA chan 0: good_dequeue: 379 - Tx DMA chan 0: requeue: 0 - Tx DMA chan 0: teardown_dequeue: 0" +.. code:: console + + # ethtool -S eth0 + NIC statistics: + Good Rx Frames: 24 + Broadcast Rx Frames: 12 + Multicast Rx Frames: 4 + Pause Rx Frames: 0 + Rx CRC Errors: 0 + Rx Align/Code Errors: 0 + Oversize Rx Frames: 0 + Rx Jabbers: 0 + Undersize (Short) Rx Frames: 0 + Rx Fragments: 1 + Rx Octets: 4290 + Good Tx Frames: 379 + Broadcast Tx Frames: 144 + Multicast Tx Frames: 228 + Pause Tx Frames: 0 + Deferred Tx Frames: 0 + Collisions: 0 + Single Collision Tx Frames: 0 + Multiple Collision Tx Frames: 0 + Excessive Collisions: 0 + Late Collisions: 0 + Tx Underrun: 0 + Carrier Sense Errors: 0 + Tx Octets: 72498 + Rx + Tx 64 Octet Frames: 30 + Rx + Tx 65-127 Octet Frames: 218 + Rx + Tx 128-255 Octet Frames: 0 + Rx + Tx 256-511 Octet Frames: 155 + Rx + Tx 512-1023 Octet Frames: 0 + Rx + Tx 1024-Up Octet Frames: 0 + Net Octets: 76792 + Rx Start of Frame Overruns: 0 + Rx Middle of Frame Overruns: 0 + Rx DMA Overruns: 0 + Rx DMA chan 0: head_enqueue: 2 + Rx DMA chan 0: tail_enqueue: 12114 + Rx DMA chan 0: pad_enqueue: 0 + Rx DMA chan 0: misqueued: 0 + Rx DMA chan 0: desc_alloc_fail: 0 + Rx DMA chan 0: pad_alloc_fail: 0 + Rx DMA chan 0: runt_receive_buf: 0 + Rx DMA chan 0: runt_transmit_bu: 0 + Rx DMA chan 0: empty_dequeue: 0 + Rx DMA chan 0: busy_dequeue: 14 + Rx DMA chan 0: good_dequeue: 21 + Rx DMA chan 0: requeue: 1 + Rx DMA chan 0: teardown_dequeue: 4095 + Tx DMA chan 0: head_enqueue: 378 + Tx DMA chan 0: tail_enqueue: 1 + Tx DMA chan 0: pad_enqueue: 0 + Tx DMA chan 0: misqueued: 1 + Tx DMA chan 0: desc_alloc_fail: 0 + Tx DMA chan 0: pad_alloc_fail: 0 + Tx DMA chan 0: runt_receive_buf: 0 + Tx DMA chan 0: runt_transmit_bu: 26 + Tx DMA chan 0: empty_dequeue: 379 + Tx DMA chan 0: busy_dequeue: 0 + Tx DMA chan 0: good_dequeue: 379 + Tx DMA chan 0: requeue: 0 + Tx DMA chan 0: teardown_dequeue: 0" .. rubric:: ethtool --phy-statistics DEVNAME Show phy statistics :name: ethtool---phy-statistics-devname-show-phy-statistics @@ -1316,70 +1294,70 @@ This command will dump current ALE table Accessible when CPTS is enabled. -:: - - # ethtool -T eth0 - Time stamping parameters for eth0: - Capabilities: - hardware-transmit (SOF_TIMESTAMPING_TX_HARDWARE) - software-transmit (SOF_TIMESTAMPING_TX_SOFTWARE) - hardware-receive (SOF_TIMESTAMPING_RX_HARDWARE) - software-receive (SOF_TIMESTAMPING_RX_SOFTWARE) - software-system-clock (SOF_TIMESTAMPING_SOFTWARE) - hardware-raw-clock (SOF_TIMESTAMPING_RAW_HARDWARE) - PTP Hardware Clock: 0 - Hardware Transmit Timestamp Modes: - off (HWTSTAMP_TX_OFF) - on (HWTSTAMP_TX_ON) - Hardware Receive Filter Modes: - none (HWTSTAMP_FILTER_NONE) - ptpv2-event (HWTSTAMP_FILTER_PTP_V2_EVENT)" +.. code:: console + + # ethtool -T eth0 + Time stamping parameters for eth0: + Capabilities: + hardware-transmit (SOF_TIMESTAMPING_TX_HARDWARE) + software-transmit (SOF_TIMESTAMPING_TX_SOFTWARE) + hardware-receive (SOF_TIMESTAMPING_RX_HARDWARE) + software-receive (SOF_TIMESTAMPING_RX_SOFTWARE) + software-system-clock (SOF_TIMESTAMPING_SOFTWARE) + hardware-raw-clock (SOF_TIMESTAMPING_RAW_HARDWARE) + PTP Hardware Clock: 0 + Hardware Transmit Timestamp Modes: + off (HWTSTAMP_TX_OFF) + on (HWTSTAMP_TX_ON) + Hardware Receive Filter Modes: + none (HWTSTAMP_FILTER_NONE) + ptpv2-event (HWTSTAMP_FILTER_PTP_V2_EVENT)" .. rubric:: ethtool -L\|--set-channels DEVNAME Set Channels. :name: ethtool--l--set-channels-devname-set-channels. Supported options: -:: +.. code:: text - [ rx N ] - [ tx N ] + [ rx N ] + [ tx N ] Allows to control number of channels driver is allowed to work with at cpdma level. The maximum number of channels is 8 for rx and 8 for tx. In dual\_emac mode the h/w channels are shared between two interfaces and changing number on one interface changes number of channels on another. -:: +.. code:: console - # ethtool -L eth0 rx 6 tx 6 + # ethtool -L eth0 rx 6 tx 6 .. rubric:: ethtool-l\|--show-channels DEVNAME Query Channels :name: ethtool-l--show-channels-devname-query-channels -:: - - # ethtool -l eth0 - Channel parameters for eth0: - Pre-set maximums: - RX: 8 - TX: 8 - Other: 0 - Combined: 0 - Current hardware settings: - RX: 6 - TX: 6 - Other: 0 - Combined: 0 +.. code:: console + + # ethtool -l eth0 + Channel parameters for eth0: + Pre-set maximums: + RX: 8 + TX: 8 + Other: 0 + Combined: 0 + Current hardware settings: + RX: 6 + TX: 6 + Other: 0 + Combined: 0 .. rubric:: ethtool --show-eee DEVNAME Show EEE settings :name: ethtool---show-eee-devname-show-eee-settings -:: +.. code:: console - #ethtool --show-eee eth0 - EEE Settings for eth0: - EEE status: not supported + #ethtool --show-eee eth0 + EEE Settings for eth0: + EEE status: not supported .. rubric:: ethtool --set-eee DEVNAME Set EEE settings. :name: ethtool---set-eee-devname-set-eee-settings. @@ -1401,91 +1379,91 @@ improve network throughput on RT: assigned to CPUx, or RX can be assigne to CPU0 and TX to CPU1) using cpu affinity settings: -:: +.. code:: console - am57xx-evm:~# cat /proc/interrupts - 353: 518675 0 CBAR 335 Level 48484000.ethernet - 354: 1468516 0 CBAR 336 Level 48484000.ethernet + am57xx-evm:~# cat /proc/interrupts + 353: 518675 0 CBAR 335 Level 48484000.ethernet + 354: 1468516 0 CBAR 336 Level 48484000.ethernet assign both handlers to CPU1: -:: +.. code:: console - am57xx-evm:~#echo 2 > /proc/irq/354/smp_affinity - am57xx-evm:~#echo 2 > /proc/irq/353/smp_affinity + am57xx-evm:~#echo 2 > /proc/irq/354/smp_affinity + am57xx-evm:~#echo 2 > /proc/irq/353/smp_affinity before: -:: - - am57xx-evm:~# iperf -c 192.168.1.1 -w128K -d -i5 -t120 & cyclictest -n -m -Sp97 -q -D2m - ------------------------------------------------------------ - Server listening on TCP port 5001 - TCP window size: 256 KByte (WARNING: requested 128 KByte) - ------------------------------------------------------------ - ------------------------------------------------------------ - Client connecting to 192.168.1.1, TCP port 5001 - TCP window size: 256 KByte (WARNING: requested 128 KByte) - ------------------------------------------------------------ - [ 5] 0.0-120.0 sec 2.16 GBytes 154 Mbits/sec - [ 4] 0.0-120.0 sec 5.21 GBytes 373 Mbits/sec - T: 0 ( 1074) P:97 I:1000 C: 120000 Min: 8 Act: 9 Avg: 17 Max: 53 - T: 1 ( 1075) P:97 I:1500 C: 79982 Min: 8 Act: 9 Avg: 17 Max: 60 +.. code:: console + + am57xx-evm:~# iperf -c 192.168.1.1 -w128K -d -i5 -t120 & cyclictest -n -m -Sp97 -q -D2m + ------------------------------------------------------------ + Server listening on TCP port 5001 + TCP window size: 256 KByte (WARNING: requested 128 KByte) + ------------------------------------------------------------ + ------------------------------------------------------------ + Client connecting to 192.168.1.1, TCP port 5001 + TCP window size: 256 KByte (WARNING: requested 128 KByte) + ------------------------------------------------------------ + [ 5] 0.0-120.0 sec 2.16 GBytes 154 Mbits/sec + [ 4] 0.0-120.0 sec 5.21 GBytes 373 Mbits/sec + T: 0 ( 1074) P:97 I:1000 C: 120000 Min: 8 Act: 9 Avg: 17 Max: 53 + T: 1 ( 1075) P:97 I:1500 C: 79982 Min: 8 Act: 9 Avg: 17 Max: 60 after: -:: - - am57xx-evm:~# iperf -c 192.168.1.1 -w128K -d -i5 -t120 & cyclictest -n -m -Sp97 -q -D2m - ------------------------------------------------------------ - Server listening on TCP port 5001 - TCP window size: 256 KByte (WARNING: requested 128 KByte) - ------------------------------------------------------------ - ------------------------------------------------------------ - Client connecting to 192.168.1.1, TCP port 5001 - TCP window size: 256 KByte (WARNING: requested 128 KByte) - ------------------------------------------------------------ - [ 5] local 192.168.1.2 port 35270 connected with 192.168.1.1 port 5001 - [ 4] local 192.168.1.2 port 5001 connected with 192.168.1.1 port 55703 - [ ID] Interval Transfer Bandwidth - [ 5] 0.0-120.0 sec 4.58 GBytes 328 Mbits/sec - [ 4] 0.0-120.0 sec 4.88 GBytes 349 Mbits/sec - T: 0 ( 1080) P:97 I:1000 C: 120000 Min: 9 Act: 9 Avg: 17 Max: 38 - T: 1 ( 1081) P:97 I:1500 C: 79918 Min: 9 Act: 16 Avg: 14 Max: 37 +.. code:: console + + am57xx-evm:~# iperf -c 192.168.1.1 -w128K -d -i5 -t120 & cyclictest -n -m -Sp97 -q -D2m + ------------------------------------------------------------ + Server listening on TCP port 5001 + TCP window size: 256 KByte (WARNING: requested 128 KByte) + ------------------------------------------------------------ + ------------------------------------------------------------ + Client connecting to 192.168.1.1, TCP port 5001 + TCP window size: 256 KByte (WARNING: requested 128 KByte) + ------------------------------------------------------------ + [ 5] local 192.168.1.2 port 35270 connected with 192.168.1.1 port 5001 + [ 4] local 192.168.1.2 port 5001 connected with 192.168.1.1 port 55703 + [ ID] Interval Transfer Bandwidth + [ 5] 0.0-120.0 sec 4.58 GBytes 328 Mbits/sec + [ 4] 0.0-120.0 sec 4.88 GBytes 349 Mbits/sec + T: 0 ( 1080) P:97 I:1000 C: 120000 Min: 9 Act: 9 Avg: 17 Max: 38 + T: 1 ( 1081) P:97 I:1500 C: 79918 Min: 9 Act: 16 Avg: 14 Max: 37 2) make CPSW network interrupts handlers non threaded. This requires kernel modification as done in: -:: +.. code:: text - [drivers: net: cpsw: mark rx/tx irq as IRQF_NO_THREAD] + [drivers: net: cpsw: mark rx/tx irq as IRQF_NO_THREAD] See allso public discussion: -:: +.. code:: text https://www.spinics.net/lists/netdev/msg389697.html after: -:: - - am57xx-evm:~# iperf -c 192.168.1.1 -w128K -d -i5 -t120 & cyclictest -n -m -Sp97 -q - D2m - ------------------------------------------------------------ - Server listening on TCP port 5001 - TCP window size: 256 KByte (WARNING: requested 128 KByte) - ------------------------------------------------------------ - ------------------------------------------------------------ - Client connecting to 192.168.1.1, TCP port 5001 - TCP window size: 256 KByte (WARNING: requested 128 KByte) - ------------------------------------------------------------ - [ 5] local 192.168.1.2 port 33310 connected with 192.168.1.1 port 5001 - [ 4] local 192.168.1.2 port 5001 connected with 192.168.1.1 port 55704 - [ ID] Interval Transfer Bandwidth - [ 5] 0.0-120.0 sec 3.72 GBytes 266 Mbits/sec - [ 4] 0.0-120.0 sec 5.99 GBytes 429 Mbits/sec - T: 0 ( 1083) P:97 I:1000 C: 120000 Min: 8 Act: 9 Avg: 15 Max: 39 - T: 1 ( 1084) P:97 I:1500 C: 79978 Min: 8 Act: 10 Avg: 17 Max: 39 +.. code:: console + + am57xx-evm:~# iperf -c 192.168.1.1 -w128K -d -i5 -t120 & cyclictest -n -m -Sp97 -q - D2m + ------------------------------------------------------------ + Server listening on TCP port 5001 + TCP window size: 256 KByte (WARNING: requested 128 KByte) + ------------------------------------------------------------ + ------------------------------------------------------------ + Client connecting to 192.168.1.1, TCP port 5001 + TCP window size: 256 KByte (WARNING: requested 128 KByte) + ------------------------------------------------------------ + [ 5] local 192.168.1.2 port 33310 connected with 192.168.1.1 port 5001 + [ 4] local 192.168.1.2 port 5001 connected with 192.168.1.1 port 55704 + [ ID] Interval Transfer Bandwidth + [ 5] 0.0-120.0 sec 3.72 GBytes 266 Mbits/sec + [ 4] 0.0-120.0 sec 5.99 GBytes 429 Mbits/sec + T: 0 ( 1083) P:97 I:1000 C: 120000 Min: 8 Act: 9 Avg: 15 Max: 39 + T: 1 ( 1084) P:97 I:1500 C: 79978 Min: 8 Act: 10 Avg: 17 Max: 39 | @@ -1516,130 +1494,130 @@ enable support for SIOCSHWTSTAMP and SIOCGHWTSTAMP socket ioctls. The PTP exposes the PHC as a character device with standardized ioctls which usially can be found at path: -:: +.. code:: text - /dev/ptp0 + /dev/ptp0 Supported PTP hardware clock functionality: -:: +.. code:: text - Basic clock operations - - Set time - - Get time - - Shift the clock by a given offset atomically - - Adjust clock frequency + Basic clock operations + - Set time + - Get time + - Shift the clock by a given offset atomically + - Adjust clock frequency -:: +.. code:: text - Ancillary clock features - - Time stamp external events - NOTE. Current implementation supports ext events with max frequency 5HZ. + Ancillary clock features + - Time stamp external events + NOTE. Current implementation supports ext events with max frequency 5HZ. Supported parameters for SIOCSHWTSTAMP and SIOCGHWTSTAMP: -:: - - SIOCGHWTSTAMP - hwtstamp_config.flags = 0 - hwtstamp_config.tx_type - HWTSTAMP_TX_ON - HWTSTAMP_TX_OFF - hwtstamp_config.rx_filter - HWTSTAMP_FILTER_PTP_V2_EVENT - HWTSTAMP_FILTER_NONE - -:: - - SIOCSHWTSTAMP - hwtstamp_config.flags = 0 - hwtstamp_config.tx_type - HWTSTAMP_TX_ON - enables hardware time stamping for outgoing packets - HWTSTAMP_TX_OFF - no outgoing packet will need hardware time stamping - hwtstamp_config.rx_filter - HWTSTAMP_FILTER_NONE - time stamp no incoming packet at all - -:: - - HWTSTAMP_FILTER_PTP_V2_L4_EVENT - HWTSTAMP_FILTER_PTP_V2_L4_SYNC - HWTSTAMP_FILTER_PTP_V2_L4_DELAY_REQ - HWTSTAMP_FILTER_PTP_V2_L2_EVENT - HWTSTAMP_FILTER_PTP_V2_L2_SYNC - HWTSTAMP_FILTER_PTP_V2_L2_DELAY_REQ - HWTSTAMP_FILTER_PTP_V2_EVENT - HWTSTAMP_FILTER_PTP_V2_SYNC - HWTSTAMP_FILTER_PTP_V2_DELAY_REQ - - all above filters will enable timestamping of incoming PTP v2/802.AS1 - packets, any layer, any kind of event packet +.. code:: text + + SIOCGHWTSTAMP + hwtstamp_config.flags = 0 + hwtstamp_config.tx_type + HWTSTAMP_TX_ON + HWTSTAMP_TX_OFF + hwtstamp_config.rx_filter + HWTSTAMP_FILTER_PTP_V2_EVENT + HWTSTAMP_FILTER_NONE + +.. code:: text + + SIOCSHWTSTAMP + hwtstamp_config.flags = 0 + hwtstamp_config.tx_type + HWTSTAMP_TX_ON - enables hardware time stamping for outgoing packets + HWTSTAMP_TX_OFF - no outgoing packet will need hardware time stamping + hwtstamp_config.rx_filter + HWTSTAMP_FILTER_NONE - time stamp no incoming packet at all + +.. code:: text + + HWTSTAMP_FILTER_PTP_V2_L4_EVENT + HWTSTAMP_FILTER_PTP_V2_L4_SYNC + HWTSTAMP_FILTER_PTP_V2_L4_DELAY_REQ + HWTSTAMP_FILTER_PTP_V2_L2_EVENT + HWTSTAMP_FILTER_PTP_V2_L2_SYNC + HWTSTAMP_FILTER_PTP_V2_L2_DELAY_REQ + HWTSTAMP_FILTER_PTP_V2_EVENT + HWTSTAMP_FILTER_PTP_V2_SYNC + HWTSTAMP_FILTER_PTP_V2_DELAY_REQ + - all above filters will enable timestamping of incoming PTP v2/802.AS1 + packets, any layer, any kind of event packet CPTS PTP packet timestamping default configuration when enabled (SIOCSHWTSTAMP): CPSW SS CPSW\_VLAN\_LTYPE register: -:: +.. code:: text - TS_LTYPE2 = 0 - Time Sync LTYPE2 This is an Ethertype value to match for tx and rx time sync packets. - TS_LTYPE1 = 0x88F7 (ETH_P_1588) - Time Sync LTYPE1 This is an ethertype value to match for tx and rx time sync packets. + TS_LTYPE2 = 0 + Time Sync LTYPE2 This is an Ethertype value to match for tx and rx time sync packets. + TS_LTYPE1 = 0x88F7 (ETH_P_1588) + Time Sync LTYPE1 This is an ethertype value to match for tx and rx time sync packets. Port registers: Pn\_CONTROL Register: -:: - - Pn_TS_107 Port n Time Sync Destination IP Address 107 enable - 0 – disabled - Pn_TS_320 Port n Time Sync Destination Port Number 320 enable - 1 - Annex D (UDP/IPv4) time sync packet destination port - number 320 (decimal) is enabled. - Pn_TS_319 Port n Time Sync Destination Port Number 319 enable - 1 - Annex D (UDP/IPv4) time sync packet destination port - number 319 (decimal) is enabled. - Pn_TS_132 Port n Time Sync Destination IP Address 132 enable - 1 - Annex D (UDP/IPv4) time sync packet destination IP - address number 132 (decimal) is enabled. - Pn_TS_131 - Port 1 Time Sync Destination IP Address 131 enable - 1 - Annex D (UDP/IPv4) time sync packet destination IP - address number 131 (decimal) is enabled. - Pn_TS_130 Port n Time Sync Destination IP Address 130 enable - 1 - Annex D (UDP/IPv4) time sync packet destination IP - address number 130 (decimal) is enabled. - Pn_TS_129 Port n Time Sync Destination IP Address 129 enable - 1 - Annex D (UDP/IPv4) time sync packet destination IP - address number 129 (decimal) is enabled. - Pn_TS_TTL_NONZERO Port n Time Sync Time To Live Non-zero enable. - 1 = TTL may be any value. - Pn_TS_UNI_EN Port n Time Sync Unicast Enable - 0 – Unicast disabled - Pn_TS_ANNEX_F_EN Port n Time Sync Annex F enable - 1 – Annex F enabled - Pn_TS_ANNEX_E_EN Port n Time Sync Annex E enable - 0 – Annex E disabled - Pn_TS_ANNEX_D_EN Port n Time Sync Annex D enable - 1 - Annex D enabled RW 0x0 - Pn_TS_LTYPE2_EN Port n Time Sync LTYPE 2 enable - 0 - disabled - Pn_TS_LTYPE1_EN Port n Time Sync LTYPE 1 enable - 1 - enabled - Pn_TS_TX_EN Port n Time Sync Transmit Enable - 1 - enabled (if HWTSTAMP_TX_ON) - Pn_TS_RX_EN Port n Time Sync Receive Enable - 1 - Port 1 Receive Time Sync enabled (if HWTSTAMP_FILTER_PTP_V2_X) +.. code:: text + + Pn_TS_107 Port n Time Sync Destination IP Address 107 enable + 0 – disabled + Pn_TS_320 Port n Time Sync Destination Port Number 320 enable + 1 - Annex D (UDP/IPv4) time sync packet destination port + number 320 (decimal) is enabled. + Pn_TS_319 Port n Time Sync Destination Port Number 319 enable + 1 - Annex D (UDP/IPv4) time sync packet destination port + number 319 (decimal) is enabled. + Pn_TS_132 Port n Time Sync Destination IP Address 132 enable + 1 - Annex D (UDP/IPv4) time sync packet destination IP + address number 132 (decimal) is enabled. + Pn_TS_131 - Port 1 Time Sync Destination IP Address 131 enable + 1 - Annex D (UDP/IPv4) time sync packet destination IP + address number 131 (decimal) is enabled. + Pn_TS_130 Port n Time Sync Destination IP Address 130 enable + 1 - Annex D (UDP/IPv4) time sync packet destination IP + address number 130 (decimal) is enabled. + Pn_TS_129 Port n Time Sync Destination IP Address 129 enable + 1 - Annex D (UDP/IPv4) time sync packet destination IP + address number 129 (decimal) is enabled. + Pn_TS_TTL_NONZERO Port n Time Sync Time To Live Non-zero enable. + 1 = TTL may be any value. + Pn_TS_UNI_EN Port n Time Sync Unicast Enable + 0 – Unicast disabled + Pn_TS_ANNEX_F_EN Port n Time Sync Annex F enable + 1 – Annex F enabled + Pn_TS_ANNEX_E_EN Port n Time Sync Annex E enable + 0 – Annex E disabled + Pn_TS_ANNEX_D_EN Port n Time Sync Annex D enable + 1 - Annex D enabled RW 0x0 + Pn_TS_LTYPE2_EN Port n Time Sync LTYPE 2 enable + 0 - disabled + Pn_TS_LTYPE1_EN Port n Time Sync LTYPE 1 enable + 1 - enabled + Pn_TS_TX_EN Port n Time Sync Transmit Enable + 1 - enabled (if HWTSTAMP_TX_ON) + Pn_TS_RX_EN Port n Time Sync Receive Enable + 1 - Port 1 Receive Time Sync enabled (if HWTSTAMP_FILTER_PTP_V2_X) Pn\_TS\_SEQ\_MTYPE Register: -:: +.. code:: text - Pn_TS_SEQ_ID_OFFSET = 0x1E - Port n Time Sync Sequence ID Offset This is the number - of octets that the sequence ID is offset in the tx and rx - time sync message header. The minimum value is 6. RW 0x1E - Pn_TS_MSG_TYPE_EN = 0xF (Sync, Delay_Req, Pdelay_Req, and Pdelay_Resp.) - Port n Time Sync Message Type Enable - Each bit in this - field enables the corresponding message type in receive - and transmit time sync messages (Bit 0 enables message type 0 etc.). + Pn_TS_SEQ_ID_OFFSET = 0x1E + Port n Time Sync Sequence ID Offset This is the number + of octets that the sequence ID is offset in the tx and rx + time sync message header. The minimum value is 6. RW 0x1E + Pn_TS_MSG_TYPE_EN = 0xF (Sync, Delay_Req, Pdelay_Req, and Pdelay_Resp.) + Port n Time Sync Message Type Enable - Each bit in this + field enables the corresponding message type in receive + and transmit time sync messages (Bit 0 enables message type 0 etc.). For more information about PTP clock API and Network timestamping see Linux kernel documentation @@ -1669,108 +1647,108 @@ generation can be delayed (especially with low speed links) the ptp4l - create file ptp.cfg with content as below: -:: +.. code:: text - [global] - tx_timestamp_timeout 400 + [global] + tx_timestamp_timeout 400 - pass configuration file to ptp4l using "-f" option: -:: +.. code:: console - ptp4l -E -2 -H -i eth0 -l 6 -m -q -p /dev/ptp0 -f ptp.cfg + ptp4l -E -2 -H -i eth0 -l 6 -m -q -p /dev/ptp0 -f ptp.cfg - Slave Side Examples The following command can be used to run a ptp-over-L4 client on the evm in slave mode -:: +.. code:: console - ./ptp4l -E -4 -H -i eth0 -s -l 7 -m -q -p /dev/ptp0 + ./ptp4l -E -4 -H -i eth0 -s -l 7 -m -q -p /dev/ptp0 For ptp-over-L2 client, use the command -:: +.. code:: console - ./ptp4l -E -2 -H -i eth0 -s -l 7 -m -q -p /dev/ptp0 + ./ptp4l -E -2 -H -i eth0 -s -l 7 -m -q -p /dev/ptp0 - Master Side Examples ptp4l can also be run in master mode. For example, the following command starts a ptp4l-over-L2 master on an EVM using hardware timestamping, -:: +.. code:: console - ./ptp4l -E -2 -H -i eth0 -l 7 -m -q -p /dev/ptp0 + ./ptp4l -E -2 -H -i eth0 -l 7 -m -q -p /dev/ptp0 On a Linux PC which does not supoort hardware timestamping, the following command starts a ptp4l-over-L2 master using software timestamping. -:: +.. code:: console - ./ptp4l -E -2 -S -i eth0 -l 7 -m -q + ./ptp4l -E -2 -S -i eth0 -l 7 -m -q .. rubric:: Testing using testptp tool from Linux kernel :name: testing-using-testptp-tool-from-linux-kernel - get the ptp clock time -:: +.. code:: console - # testptp -g - clock time: 1493255613.608918429 or Thu Apr 27 01:13:33 2017 + # testptp -g + clock time: 1493255613.608918429 or Thu Apr 27 01:13:33 2017 - query the ptp clock's capabilities -:: +.. code:: console - # testptp -c - capabilities: - 1000000 maximum frequency adjustment (ppb) - 0 programmable alarms - 0 external time stamp channels - 0 programmable periodic signals - 0 pulse per second - 0 programmable pins + # testptp -c + capabilities: + 1000000 maximum frequency adjustment (ppb) + 0 programmable alarms + 0 external time stamp channels + 0 programmable periodic signals + 0 pulse per second + 0 programmable pins - Sanity testing of cpts ref frequency Time difference between to testptp -g calls should be equal sleep time -:: +.. code:: console - # testptp -g && sleep 5 && testptp -g - clock time: 1493255884.565859901 or Thu Apr 27 01:18:04 2017 - clock time: 1493255889.611065421 or Thu Apr 27 01:18:09 2017 + # testptp -g && sleep 5 && testptp -g + clock time: 1493255884.565859901 or Thu Apr 27 01:18:04 2017 + clock time: 1493255889.611065421 or Thu Apr 27 01:18:09 2017 - shift the ptp clock time by 'val' seconds -:: +.. code:: console - # testptp -g && testptp -t 100 && testptp -g - clock time: 1493256107.640649117 or Thu Apr 27 01:21:47 2017 - time shift okay - clock time: 1493256207.678819093 or Thu Apr 27 01:23:27 2017 + # testptp -g && testptp -t 100 && testptp -g + clock time: 1493256107.640649117 or Thu Apr 27 01:21:47 2017 + time shift okay + clock time: 1493256207.678819093 or Thu Apr 27 01:23:27 2017 - set the ptp clock time to 'val' seconds -:: +.. code:: console - # testptp -g && testptp -T 1000000 && testptp -g - clock time: 1493256277.568238925 or Thu Apr 27 01:24:37 2017 - set time okay - clock time: 100.018944504 or Thu Jan 1 00:01:40 1970 + # testptp -g && testptp -T 1000000 && testptp -g + clock time: 1493256277.568238925 or Thu Apr 27 01:24:37 2017 + set time okay + clock time: 100.018944504 or Thu Jan 1 00:01:40 1970 - adjust the ptp clock frequency by 'val' ppb -:: +.. code:: console - # testptp -g && testptp -f 1000000 && testptp -g - clock time: 151.347795184 or Thu Jan 1 00:02:31 1970 - frequency adjustment okay - clock time: 151.386187454 or Thu Jan 1 00:02:31 1970 + # testptp -g && testptp -f 1000000 && testptp -g + clock time: 151.347795184 or Thu Jan 1 00:02:31 1970 + frequency adjustment okay + clock time: 151.386187454 or Thu Jan 1 00:02:31 1970 .. rubric:: Example of using Time stamp external events on am335x :name: example-of-using-time-stamp-external-events-on-am335x @@ -1785,44 +1763,44 @@ It's required to rebuild kernel with below changes first: - declare support of HW\_TS\_PUSH inputs in DT "mac: ethernet@4a100000" node -:: +.. code:: dts - mac: ethernet@4a100000 { - ... - cpts-ext-ts-inputs = <4>; + mac: ethernet@4a100000 { + ... + cpts-ext-ts-inputs = <4>; - add PWM nodes in board file; -:: +.. code:: dts - pwm7: dmtimer-pwm { - compatible = "ti,omap-dmtimer-pwm"; - ti,timers = <&timer7>; - #pwm-cells = <3>; - }; + pwm7: dmtimer-pwm { + compatible = "ti,omap-dmtimer-pwm"; + ti,timers = <&timer7>; + #pwm-cells = <3>; + }; - build and boot new Kernel - enable Timer7 to trigger 1sec periodic pulses on CPTS HW4\_TS\_PUSH input pin: -:: +.. code:: console - # echo 1000000000 > /sys/class/pwm/pwmchip0/pwm0/period - # echo 500000000 > /sys/class/pwm/pwmchip0/pwm0/duty_cycle - # echo 1 > /sys/class/pwm/pwmchip0/pwm0/enable + # echo 1000000000 > /sys/class/pwm/pwmchip0/pwm0/period + # echo 500000000 > /sys/class/pwm/pwmchip0/pwm0/duty_cycle + # echo 1 > /sys/class/pwm/pwmchip0/pwm0/enable - read 'val' external time stamp events using testptp tool -:: +.. code:: console - # ./ptp/testptp -e 10 -i 3 - external time stamp request okay - event index 3 at 1493259028.376600798 - event index 3 at 1493259029.377170898 - event index 3 at 1493259030.377741039 - event index 3 at 1493259031.378311139 - event index 3 at 1493259032.378881279 + # ./ptp/testptp -e 10 -i 3 + external time stamp request okay + event index 3 at 1493259028.376600798 + event index 3 at 1493259029.377170898 + event index 3 at 1493259030.377741039 + event index 3 at 1493259031.378311139 + event index 3 at 1493259032.378881279 .. rubric:: Generating Pulse Per Second (PPS) signal syncronized to CPTS PTP clock :name: generating-pulse-per-second-signal-syncronized-to-cpts-ptp-clock @@ -1836,32 +1814,32 @@ second boundary of CPTS PTP clock. - It is required to boot kernel using pps specfic dtb. Like for am571-idk, am571x-idk-pps.dtb should be used. - `phc2pwm `__ inside linuxptp project can be used to generate this PPS signal. -:: +.. code:: console - # phc2pwm -h - usage: phc2pwm [options] + # phc2pwm -h + usage: phc2pwm [options] - -p [dev] Clock device to use - -e [id] PTP index for event/trigger - -w [id] PWM chip device id - -c [id] PWM channel id from PWM chip - -l [num] set the logging level to 'num' + -p [dev] Clock device to use + -e [id] PTP index for event/trigger + -w [id] PWM chip device id + -c [id] PWM channel id from PWM chip + -l [num] set the logging level to 'num' -h prints this message and exits - Boot the kernel and run the following commnd at linux prompt -:: - - # ./phc2pwm -p /dev/ptp0 -c 0 -e 3 -w 0 - Timestamp = 233000000009 - Timestamp = 234000000001 - Timestamp = 234999999996 - Timestamp = 235999999993 - Timestamp = 236999999995 - Timestamp = 237999999994 - Timestamp = 238999999995 - Timestamp = 240000000001 - Timestamp = 240999999996 - Timestamp = 241999999993 +.. code:: console + + # ./phc2pwm -p /dev/ptp0 -c 0 -e 3 -w 0 + Timestamp = 233000000009 + Timestamp = 234000000001 + Timestamp = 234999999996 + Timestamp = 235999999993 + Timestamp = 236999999995 + Timestamp = 237999999994 + Timestamp = 238999999995 + Timestamp = 240000000001 + Timestamp = 240999999996 + Timestamp = 241999999993 diff --git a/source/linux/Foundational_Components/Kernel/Kernel_Drivers/Network/CPSW2g.rst b/source/linux/Foundational_Components/Kernel/Kernel_Drivers/Network/CPSW2g.rst index fdaf9cab4..27e5a7ca4 100644 --- a/source/linux/Foundational_Components/Kernel/Kernel_Drivers/Network/CPSW2g.rst +++ b/source/linux/Foundational_Components/Kernel/Kernel_Drivers/Network/CPSW2g.rst @@ -4,7 +4,7 @@ CPSW2g Ethernet --------------- .. contents:: :local: - :depth: 3 + :depth: 3 Introduction ============ @@ -49,13 +49,13 @@ Driver Configuration The TI Processor SDK has |__PART_FAMILY_DEVICE_NAMES__| CPSW2g driver enabled by default. In case of custom builds, please ensure following configs are enabled. -:: +.. code:: Kconfig - CONFIG_TI_DAVINCI_MDIO - CONFIG_TI_K3_AM65_CPSW_NUSS - CONFIG_TI_K3_AM65_CPTS - CONFIG_TI_AM65_CPSW_TAS - CONFIG_PHY_TI_GMII_SEL + CONFIG_TI_DAVINCI_MDIO + CONFIG_TI_K3_AM65_CPSW_NUSS + CONFIG_TI_K3_AM65_CPTS + CONFIG_TI_AM65_CPSW_TAS + CONFIG_PHY_TI_GMII_SEL For further details regarding the above configs, refer: #. drivers/net/ethernet/ti/Kconfig diff --git a/source/linux/Foundational_Components/Kernel/Kernel_Drivers/Network/CPSW3g.rst b/source/linux/Foundational_Components/Kernel/Kernel_Drivers/Network/CPSW3g.rst index c9636416e..73ab24909 100644 --- a/source/linux/Foundational_Components/Kernel/Kernel_Drivers/Network/CPSW3g.rst +++ b/source/linux/Foundational_Components/Kernel/Kernel_Drivers/Network/CPSW3g.rst @@ -66,12 +66,12 @@ Supported platforms .. ifconfig:: CONFIG_part_variant in ('AM62AX') .. note:: - | The second CPSW MAC port of the CPSW3g instance on AM62A requires an Add-On card. - | Additionally, the device-tree overlay: - | **k3-am62a7-sk-ethernet-dc01.dtbo** - | has to be applied at U-Boot stage using the command: - | **setenv name_overlays ti/k3-am62a7-sk-ethernet-dc01.dtbo** - | to enable functionality of the second CPSW port in Linux. + | The second CPSW MAC port of the CPSW3g instance on AM62A requires an Add-On card. + | Additionally, the device-tree overlay: + | **k3-am62a7-sk-ethernet-dc01.dtbo** + | has to be applied at U-Boot stage using the command: + | **setenv name_overlays ti/k3-am62a7-sk-ethernet-dc01.dtbo** + | to enable functionality of the second CPSW port in Linux. ******************** Driver Configuration @@ -82,12 +82,12 @@ custom builds, please ensure following configs are enabled. .. code-block:: kconfig - CONFIG_TI_DAVINCI_MDIO - CONFIG_TI_K3_AM65_CPSW_NUSS - CONFIG_TI_K3_AM65_CPSW_SWITCHDEV - CONFIG_TI_K3_AM65_CPTS - CONFIG_TI_AM65_CPSW_TAS - CONFIG_PHY_TI_GMII_SEL + CONFIG_TI_DAVINCI_MDIO + CONFIG_TI_K3_AM65_CPSW_NUSS + CONFIG_TI_K3_AM65_CPSW_SWITCHDEV + CONFIG_TI_K3_AM65_CPTS + CONFIG_TI_AM65_CPSW_TAS + CONFIG_PHY_TI_GMII_SEL For further details regarding the above configs, refer: @@ -359,17 +359,17 @@ taking effect .. code-block:: console root@evm:~# ethtool -S eth1 | grep col - tx_collision_frames: 1796093 - tx_single_coll_frames: 0 - tx_mult_coll_frames: 3 - tx_excessive_collisions: 0 - tx_late_collisions: 0 + tx_collision_frames: 1796093 + tx_single_coll_frames: 0 + tx_mult_coll_frames: 3 + tx_excessive_collisions: 0 + tx_late_collisions: 0 root@evm:~# ethtool -S eth0 | grep col - tx_collision_frames: 3 - tx_single_coll_frames: 0 - tx_mult_coll_frames: 2002396 - tx_excessive_collisions: 52 - tx_late_collisions: 23 + tx_collision_frames: 3 + tx_single_coll_frames: 0 + tx_mult_coll_frames: 2002396 + tx_excessive_collisions: 52 + tx_late_collisions: 23 tx_collision_frames: Enet_Pn_TxCut Enet Port n Cut Thru with and without delay (full-duplex) tx_single_coll_frames: Enet_pn_TxCut_SAF Enet Port n Tx Store and Forward (full-duplex) diff --git a/source/linux/Foundational_Components/Kernel/Kernel_Drivers/Network/CPSWng-Native-Ethernet.rst b/source/linux/Foundational_Components/Kernel/Kernel_Drivers/Network/CPSWng-Native-Ethernet.rst index 859517696..7b47a5834 100644 --- a/source/linux/Foundational_Components/Kernel/Kernel_Drivers/Network/CPSWng-Native-Ethernet.rst +++ b/source/linux/Foundational_Components/Kernel/Kernel_Drivers/Network/CPSWng-Native-Ethernet.rst @@ -4,7 +4,7 @@ CPSWng Native Ethernet ---------------------- .. contents:: :local: - :depth: 2 + :depth: 2 Introduction """""""""""" @@ -13,27 +13,27 @@ The CPSWng ethernet subsystem can be controlled by the am65-cpsw-nuss driver in provide standard ethernet features such as MAC mode, Switch mode, VLAN and TSN features. .. note:: - By default, the native ethernet is configured to start in MAC mode. Switch mode can be - enabled on demand. Refer to the "Switch Mode" section of this page for further details - on switch mode configuration. + By default, the native ethernet is configured to start in MAC mode. Switch mode can be + enabled on demand. Refer to the "Switch Mode" section of this page for further details + on switch mode configuration. Driver Configuration """""""""""""""""""" Enable the following configs for Native Ethernet with CPSWng: -:: +.. code:: Kconfig - CONFIG_TI_K3_AM65_CPSW_NUSS - CONFIG_TI_K3_AM65_CPSW_SWITCHDEV - CONFIG_TI_K3_AM65_CPTS - CONFIG_TI_DAVINCI_MDIO - CONFIG_TI_AM65_CPSW_TAS - CONFIG_PHY_TI_GMII_SEL - CONFIG_PHY_J721E_WIZ - CONFIG_PHY_TI_GMII_SEL - CONFIG_PHY_CADENCE_TORRENT - CONFIG_PHY_CADENCE_SIERRA + CONFIG_TI_K3_AM65_CPSW_NUSS + CONFIG_TI_K3_AM65_CPSW_SWITCHDEV + CONFIG_TI_K3_AM65_CPTS + CONFIG_TI_DAVINCI_MDIO + CONFIG_TI_AM65_CPSW_TAS + CONFIG_PHY_TI_GMII_SEL + CONFIG_PHY_J721E_WIZ + CONFIG_PHY_TI_GMII_SEL + CONFIG_PHY_CADENCE_TORRENT + CONFIG_PHY_CADENCE_SIERRA .. _cpswng_native_eth_overlays: @@ -63,11 +63,11 @@ Currently, the following modes are supported in the SDK with the native ethernet +-----------+-------------------------------+-------------------------------------------+ .. note:: - | For enabling native ethernet, the am65-cpsw-nuss driver has to be included in the kernel build. - | The native ethernet features are enabled by applying device-tree overlays at U-Boot. - | To apply an overlay at U-Boot save the following command in the uEnv.txt file: - | **name_overlays="ti/"** - | where is the corresponding overlay file from the table above. + | For enabling native ethernet, the am65-cpsw-nuss driver has to be included in the kernel build. + | The native ethernet features are enabled by applying device-tree overlays at U-Boot. + | To apply an overlay at U-Boot save the following command in the uEnv.txt file: + | **name_overlays="ti/"** + | where is the corresponding overlay file from the table above. For RGMII mode, the GESI expansion card's overlay may be used. For QSGMII mode, the Quad Port Ethernet Expander daughter card's overlay may be used. @@ -89,8 +89,8 @@ All the SoCs listed above support Switch Mode when configured in QSGMII mode. The Switch mode can be enabled by configuring devlink driver parameter "switch_mode" to 1/true:: - devlink dev param set platform/c000000.ethernet \ - name switch_mode value true cmode runtime + devlink dev param set platform/c000000.ethernet \ + name switch_mode value true cmode runtime Above setting can be done regardless of the state of Port's netdev devices - UP/DOWN, but Port's netdev devices have to be in UP state @@ -106,27 +106,27 @@ All configuration is implemented via switchdev API. Bridge setup '''''''''''' -:: +.. code:: console - devlink dev param set platform/c000000.ethernet \ - name switch_mode value true cmode runtime + devlink dev param set platform/c000000.ethernet \ + name switch_mode value true cmode runtime - ip link add name br0 type bridge - ip link set dev br0 type bridge ageing_time 1000 - ip link set dev eth1 up - ip link set dev eth2 up - ip link set dev eth3 up - ip link set dev eth4 up - ip link set dev eth1 master br0 - ip link set dev eth2 master br0 - ip link set dev eth3 master br0 - ip link set dev eth4 master br0 + ip link add name br0 type bridge + ip link set dev br0 type bridge ageing_time 1000 + ip link set dev eth1 up + ip link set dev eth2 up + ip link set dev eth3 up + ip link set dev eth4 up + ip link set dev eth1 master br0 + ip link set dev eth2 master br0 + ip link set dev eth3 master br0 + ip link set dev eth4 master br0 - [*] ip link set dev br0 type bridge vlan_filtering 1 - [*] bridge vlan add dev br0 vid 1 self - [*] bridge vlan add dev br0 vid 1 pvid untagged self + [*] ip link set dev br0 type bridge vlan_filtering 1 + [*] bridge vlan add dev br0 vid 1 self + [*] bridge vlan add dev br0 vid 1 pvid untagged self - Note: Steps [*] are mandatory. + Note: Steps [*] are mandatory. .. Caution:: @@ -135,17 +135,17 @@ Bridge setup Turn On/Off Spanning Tree Protocol (STP) '''''''''''''''''''''''''''''''''''''''' -:: +.. code:: console - ip link set dev br0 type bridge stp_state 1/0 + ip link set dev br0 type bridge stp_state 1/0 VLAN configuration '''''''''''''''''' -:: +.. code:: console - bridge vlan add dev br0 vid 1 self <---- add VLAN as a Bridge Entry - bridge vlan add dev br0 vid 1 pvid untagged self <---- add cpu port to VLAN 1 + bridge vlan add dev br0 vid 1 self <---- add VLAN as a Bridge Entry + bridge vlan add dev br0 vid 1 pvid untagged self <---- add cpu port to VLAN 1 This step is mandatory for bridge/default_pvid. @@ -154,21 +154,21 @@ Adding extra VLANs 1. Untagged -:: +.. code:: console - bridge vlan add dev eth1 vid 100 pvid untagged master - bridge vlan add dev sw0p2 vid 100 pvid untagged master - bridge vlan add dev br0 vid 100 self <---- add VLAN as a Bridge Entry - bridge vlan add dev br0 vid 100 pvid untagged self <---- Add cpu port to VLAN100 + bridge vlan add dev eth1 vid 100 pvid untagged master + bridge vlan add dev sw0p2 vid 100 pvid untagged master + bridge vlan add dev br0 vid 100 self <---- add VLAN as a Bridge Entry + bridge vlan add dev br0 vid 100 pvid untagged self <---- Add cpu port to VLAN100 2. Tagged -:: +.. code:: console - bridge vlan add dev eth1 vid 100 master - bridge vlan add dev sw0p2 vid 100 master - bridge vlan add dev br0 vid 100 self <---- add VLAN as a Bridge Entry - bridge vlan add dev br0 vid 100 pvid tagged self <---- Add cpu port to VLAN100 + bridge vlan add dev eth1 vid 100 master + bridge vlan add dev sw0p2 vid 100 master + bridge vlan add dev br0 vid 100 self <---- add VLAN as a Bridge Entry + bridge vlan add dev br0 vid 100 pvid tagged self <---- Add cpu port to VLAN100 Forwarding Data Bases (FDBs) '''''''''''''''''''''''''''' @@ -180,8 +180,8 @@ as required. Manually adding FDBs:: - bridge fdb add aa:bb:cc:dd:ee:ff dev eth1 master vlan 100 - bridge fdb add aa:bb:cc:dd:ee:fe dev sw0p2 master <---- Add on all VLANs + bridge fdb add aa:bb:cc:dd:ee:ff dev eth1 master vlan 100 + bridge fdb add aa:bb:cc:dd:ee:fe dev sw0p2 master <---- Add on all VLANs Multicast Data Bases (MDBs) ''''''''''''''''''''''''''' @@ -192,8 +192,8 @@ bridge operation manually add MDB entries as required. Manually adding MDBs:: - bridge mdb add dev br0 port eth1 grp 239.1.1.1 permanent vid 100 - bridge mdb add dev br0 port eth1 grp 239.1.1.1 permanent <---- Add on all VLANs + bridge mdb add dev br0 port eth1 grp 239.1.1.1 permanent vid 100 + bridge mdb add dev br0 port eth1 grp 239.1.1.1 permanent <---- Add on all VLANs Multicast flooding '''''''''''''''''' @@ -202,7 +202,7 @@ CPU port mcast_flooding is always on Turning flooding on/off on switch ports:: - bridge link set dev eth1 mcast_flood on/off + bridge link set dev eth1 mcast_flood on/off TSN Features """""""""""" diff --git a/source/linux/Foundational_Components/Kernel/Kernel_Drivers/Network/CPSWng.rst b/source/linux/Foundational_Components/Kernel/Kernel_Drivers/Network/CPSWng.rst index 1343441e5..822256ccd 100644 --- a/source/linux/Foundational_Components/Kernel/Kernel_Drivers/Network/CPSWng.rst +++ b/source/linux/Foundational_Components/Kernel/Kernel_Drivers/Network/CPSWng.rst @@ -4,7 +4,7 @@ CPSWng Ethernet --------------- .. contents:: :local: - :depth: 1 + :depth: 1 Introduction """""""""""" @@ -51,8 +51,8 @@ configurations: #. CPSWng Native Ethernet Switch .. Caution:: - The two configurations are mutually exclusive. Only one of the two - can be enabled for a build. + The two configurations are mutually exclusive. Only one of the two + can be enabled for a build. .. ifconfig:: CONFIG_part_family in ('J7_family') @@ -104,7 +104,7 @@ This configuration supports MAC mode, Switch mode and TSN features on Linux. For further details, refer :ref:`cpsw3g` .. toctree:: - :hidden: + :hidden: - CPSW-Proxy-Client - CPSWng-Native-Ethernet + CPSW-Proxy-Client + CPSWng-Native-Ethernet diff --git a/source/linux/Foundational_Components/Kernel/Kernel_Drivers/Network/CPSWng_virt_mac.rst b/source/linux/Foundational_Components/Kernel/Kernel_Drivers/Network/CPSWng_virt_mac.rst index 879cff675..5a2f5e7c9 100644 --- a/source/linux/Foundational_Components/Kernel/Kernel_Drivers/Network/CPSWng_virt_mac.rst +++ b/source/linux/Foundational_Components/Kernel/Kernel_Drivers/Network/CPSWng_virt_mac.rst @@ -4,7 +4,7 @@ CPSWng virtual MAC (remoteproc) ------------------------------- .. contents:: :local: - :depth: 3 + :depth: 3 Introduction ============ @@ -32,7 +32,7 @@ This solution is illustrated below. Overall TI remoteproc/virtio/rpmsg/rpmsg-kdrv description is out of scope of this section. -:: +.. code:: text User space +------+ +--------------------+ethX +----------------------------------------+ @@ -147,25 +147,25 @@ Once started, the j721e-cpsw-virt-mac driver will wait for rpmsg_kdrv_switch dri Drivers initialization Linux kernel log example for Virtual MAC switch mode: -:: +.. code:: text - rpmsg-kdrv-eth-switch rpmsg-kdrv-1-mpu_1_0_ethswitch-device-0: Device info: permissions: 0FFFFFFF uart_id: 2 - rpmsg-kdrv-eth-switch rpmsg-kdrv-1-mpu_1_0_ethswitch-device-0: FW ver 0.2 (rev 0) 3/Oct/2021 SHA:31ed829b - j721e-cpsw-virt-mac main_r5fss_cpsw9g_virt_mac0: rpmsg attach_ext - rx_mtu:1522 features:00000003 tx_mtu[0]:2024 flow_idx:172 tx_cpsw_psil_dst_id:51712 mac_addr:70:ff:76:1d:92:c1 mac-only:0 - j721e-cpsw-virt-mac main_r5fss_cpsw9g_virt_mac0: virt_cpsw_nuss mac loaded - j721e-cpsw-virt-mac main_r5fss_cpsw9g_virt_mac0: rdev_features:00000003 rdev_mtu:1522 flow_id:172 tx_psil_dst_id:4A00 mac_only:0 - j721e-cpsw-virt-mac main_r5fss_cpsw9g_virt_mac0: local_mac_addr:00:00:00:00:00:00 rdev_mac_addr:70:ff:76:1d:92:c1 + rpmsg-kdrv-eth-switch rpmsg-kdrv-1-mpu_1_0_ethswitch-device-0: Device info: permissions: 0FFFFFFF uart_id: 2 + rpmsg-kdrv-eth-switch rpmsg-kdrv-1-mpu_1_0_ethswitch-device-0: FW ver 0.2 (rev 0) 3/Oct/2021 SHA:31ed829b + j721e-cpsw-virt-mac main_r5fss_cpsw9g_virt_mac0: rpmsg attach_ext - rx_mtu:1522 features:00000003 tx_mtu[0]:2024 flow_idx:172 tx_cpsw_psil_dst_id:51712 mac_addr:70:ff:76:1d:92:c1 mac-only:0 + j721e-cpsw-virt-mac main_r5fss_cpsw9g_virt_mac0: virt_cpsw_nuss mac loaded + j721e-cpsw-virt-mac main_r5fss_cpsw9g_virt_mac0: rdev_features:00000003 rdev_mtu:1522 flow_id:172 tx_psil_dst_id:4A00 mac_only:0 + j721e-cpsw-virt-mac main_r5fss_cpsw9g_virt_mac0: local_mac_addr:00:00:00:00:00:00 rdev_mac_addr:70:ff:76:1d:92:c1 Drivers initialization Linux kernel log example for Virtual MAC only mode: -:: +.. code:: text - rpmsg-kdrv-eth-switch rpmsg-kdrv-3-mpu_1_0_ethmac-device-1: Device info: permissions: 0FFFFFFF uart_id: 2 - rpmsg-kdrv-eth-switch rpmsg-kdrv-3-mpu_1_0_ethmac-device-1: FW ver 0.2 (rev 0) 3/Oct/2021 SHA:31ed829b - j721e-cpsw-virt-mac main-r5fss-cpsw9g-virt-mac1: rpmsg attach_ext - rx_mtu:1522 features:00000007 tx_mtu[0]:2024 flow_idx:173 tx_cpsw_psil_dst_id:51713 mac_addr:70:ff:76:1d:92:c2 mac-only:1 - j721e-cpsw-virt-mac main-r5fss-cpsw9g-virt-mac1: virt_cpsw_nuss mac loaded - j721e-cpsw-virt-mac main-r5fss-cpsw9g-virt-mac1: rdev_features:00000007 rdev_mtu:1522 flow_id:173 tx_psil_dst_id:4A01 mac_only:1 - j721e-cpsw-virt-mac main-r5fss-cpsw9g-virt-mac1: local_mac_addr:00:00:00:00:00:00 rdev_mac_addr:70:ff:76:1d:92:c2 + rpmsg-kdrv-eth-switch rpmsg-kdrv-3-mpu_1_0_ethmac-device-1: Device info: permissions: 0FFFFFFF uart_id: 2 + rpmsg-kdrv-eth-switch rpmsg-kdrv-3-mpu_1_0_ethmac-device-1: FW ver 0.2 (rev 0) 3/Oct/2021 SHA:31ed829b + j721e-cpsw-virt-mac main-r5fss-cpsw9g-virt-mac1: rpmsg attach_ext - rx_mtu:1522 features:00000007 tx_mtu[0]:2024 flow_idx:173 tx_cpsw_psil_dst_id:51713 mac_addr:70:ff:76:1d:92:c2 mac-only:1 + j721e-cpsw-virt-mac main-r5fss-cpsw9g-virt-mac1: virt_cpsw_nuss mac loaded + j721e-cpsw-virt-mac main-r5fss-cpsw9g-virt-mac1: rdev_features:00000007 rdev_mtu:1522 flow_id:173 tx_psil_dst_id:4A01 mac_only:1 + j721e-cpsw-virt-mac main-r5fss-cpsw9g-virt-mac1: local_mac_addr:00:00:00:00:00:00 rdev_mac_addr:70:ff:76:1d:92:c2 rpmsg_kdrv_switch driver """""""""""""""""""""""" @@ -218,7 +218,7 @@ The j721e-cpsw-virt-mac driver also starts/stops the TX UDMA channel. For RX side, the j721e-cpsw-virt-mac driver only performs UDMA RX flow initialization (including RX free descriptor and RX ring initialization). -:: +.. code:: text User space +------+ +--------------------+ethX +----------------------------------------+ @@ -272,21 +272,21 @@ To enable Linux CPSWng Virtual Client functionality at U-Boot, save the followin .. ifconfig:: CONFIG_part_variant in ('J721E') - .. code-block:: text + .. code-block:: text - name_overlays="ti/k3-j721e-evm-virt-mac-client.dtbo" + name_overlays="ti/k3-j721e-evm-virt-mac-client.dtbo" .. ifconfig:: CONFIG_part_variant in ('J7200') - .. code-block:: text + .. code-block:: text - name_overlays="ti/k3-j7200-evm-virt-mac-client.dtbo" + name_overlays="ti/k3-j7200-evm-virt-mac-client.dtbo" .. ifconfig:: CONFIG_part_variant in ('J784S4','J742S2') - .. code-block:: text + .. code-block:: text - name_overlays="ti/k3-j784s4-evm-virt-mac-client.dtbo" + name_overlays="ti/k3-j784s4-evm-virt-mac-client.dtbo" Driver Configuration ==================== @@ -294,7 +294,7 @@ Driver Configuration The |__SDK_FULL_NAME__| package has a |__PART_FAMILY_NAME__| rpmsg_kdrv_switch and j721e-cpsw-virt-mac drivers enabled by default and built as modules. In case of custom builds, please ensure following configs are enabled. -:: +.. code:: Kconfig CONFIG_RPMSG_KDRV CONFIG_RPMSG_KDRV_ETH_SWITCH @@ -310,28 +310,28 @@ Eth0 can be started by default or configured manually: *DHCP* -:: +.. code:: console - udhcpc -i ethX - ip link set dev ethX up + udhcpc -i ethX + ip link set dev ethX up *Manual IP address configuration* -:: +.. code:: console - ip addr add /24 dev ethX - ip link set dev ethX up + ip addr add /24 dev ethX + ip link set dev ethX up - < or > + < or > - ifconfig ethX netmask up + ifconfig ethX netmask up Set MAC address """"""""""""""" The j721e-cpsw-virt-mac supports changing the HW MAC address, but this operation can be performed only when the network device is inactive (down). -:: +.. code:: console ip link set dev ethX down ip link set dev ethX address @@ -346,15 +346,15 @@ Get driver information The CPSW0 interface can be identified by using ``ethtool -i|--driver`` command. It also provides some information about supported features. -:: +.. code:: console - # ethtool -i - ... + # ethtool -i + ... Display standard information about device/link ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -:: +.. code:: console # ethtool eth0 @@ -364,40 +364,40 @@ Display standard information about device/link Show permanent hardware address ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -:: +.. code:: console - # ethtool -P eth0 - Permanent address: a0:f6:fd:a6:46:6e" + # ethtool -P eth0 + Permanent address: a0:f6:fd:a6:46:6e" RX/TX checksum offload ^^^^^^^^^^^^^^^^^^^^^^ The driver enables RX checksum offload by default. The current status can be obtained by using "ethtool -k" command: -:: +.. code:: console - # ethtool -k - .... - rx-checksumming: on - tx-checksumming: off - tx-checksum-ipv4: off [fixed] - tx-checksum-ip-generic: off + # ethtool -k + .... + rx-checksumming: on + tx-checksumming: off + tx-checksum-ipv4: off [fixed] + tx-checksum-ip-generic: off It can be disabled/enabled by using "ethtool -K" command: -:: +.. code:: console - ethtool -K rx-checksum on|off - ethtool -K tx-checksum-ip-generic on|off + ethtool -K rx-checksum on|off + ethtool -K tx-checksum-ip-generic on|off .. note:: - TX checksum offload enablement is controlled by EthSwitch FW and current status provided to j721e-cpsw-virt-mac driver. + TX checksum offload enablement is controlled by EthSwitch FW and current status provided to j721e-cpsw-virt-mac driver. Driver testing ^^^^^^^^^^^^^^ -:: +.. code:: console # ethtool -t|--test ... @@ -415,24 +415,24 @@ Interrupt pacing The Interrupt pacing (IRQ coalescing) based on hrtimers for RX/TX data path separately can be enabled by ethtool commands (min value is 20us): -:: +.. code:: sh - # ethtool -C ethX tx-usecs N - # ethtool -C ethX rx-usecs N + # ethtool -C ethX tx-usecs N + # ethtool -C ethX rx-usecs N The Interrupt pacing (IRQ coalescing) configuration can be retrieved by commands: -:: +.. code:: console - # ethtool -c ethX + # ethtool -c ethX It is also possible to use standard Linux Net core hard irqs deferral feature which can be enabled by configuring: -:: +.. code:: console - /sys/class/net/ethX/ - gro_flush_timeout (in ns) - napi_defer_hard_irqs (number of retries) + /sys/class/net/ethX/ + gro_flush_timeout (in ns) + napi_defer_hard_irqs (number of retries) Enabling of hard IRQ will be deferred napi_defer_hard_irqs times with gro_flush_timeout timeout. @@ -447,16 +447,16 @@ The EthFW supports MC filtering which allows to offload MC addresses list to Eth The EthFW supports two logical types of MC addresses: - - *exclusive MC addresses* : such MC addresses will be exclusively directed to the Linux only through j721e-cpsw-virt-mac driver netdev. + - *exclusive MC addresses* : such MC addresses will be exclusively directed to the Linux only through j721e-cpsw-virt-mac driver netdev. - - *shared MC addresses* : such MC addresses belongs to statically configurable by EthFW MC addresses range. In this case MC packets will be delivered to Linux host by other means (i.e. shared memory based TAP interface) and not through j721e-cpsw-virt-mac driver netdev. - Shared MC addresses intended to be used when it's required to deliver MC packets to more then one CPU cores present on |__PART_FAMILY_NAME__| SoC. + - *shared MC addresses* : such MC addresses belongs to statically configurable by EthFW MC addresses range. In this case MC packets will be delivered to Linux host by other means (i.e. shared memory based TAP interface) and not through j721e-cpsw-virt-mac driver netdev. + Shared MC addresses intended to be used when it's required to deliver MC packets to more then one CPU cores present on |__PART_FAMILY_NAME__| SoC. - - *reserved MC addresses* : such MC addresses belongs to reserved, statically configurable by EthFW MC addresses range. - Reserved MC addresses intended to be consumed by EthFW itself only. + - *reserved MC addresses* : such MC addresses belongs to reserved, statically configurable by EthFW MC addresses range. + Reserved MC addresses intended to be consumed by EthFW itself only. - The j721e-cpsw-virt-mac driver doesn't distinguish between exclusive, shared and reserved MC addresses and offloads all requested MC addresses, but if MC address is shared or reserved - the offload operation become NOP from the j721e-cpsw-virt-mac driver point of view. + The j721e-cpsw-virt-mac driver doesn't distinguish between exclusive, shared and reserved MC addresses and offloads all requested MC addresses, but if MC address is shared or reserved - the offload operation become NOP from the j721e-cpsw-virt-mac driver point of view. .. note:: @@ -465,31 +465,31 @@ The EthFW supports two logical types of MC addresses: MC MAC addresses can be added/deleted using *ip maddr* command: -:: +.. code:: console - # Add MC address 239.255.1.4 - ip maddr add 01:00:5e:7f:01:04 dev ethX - ip maddr show dev ethX - 2: ethX - ... - link 01:00:5e:00:00:fb users 2 - link 01:00:5e:00:00:fc users 2 - link 01:00:5e:7f:01:03 users 2 - link 01:00:5e:7f:01:04 users 2 static - ^^^^ + # Add MC address 239.255.1.4 + ip maddr add 01:00:5e:7f:01:04 dev ethX + ip maddr show dev ethX + 2: ethX + ... + link 01:00:5e:00:00:fb users 2 + link 01:00:5e:00:00:fc users 2 + link 01:00:5e:7f:01:03 users 2 + link 01:00:5e:7f:01:04 users 2 static + ^^^^ - # Del MC address 239.255.1.4 - ip maddr del 01:00:5e:7f:01:04 dev eth0 + # Del MC address 239.255.1.4 + ip maddr del 01:00:5e:7f:01:04 dev eth0 or by using Linux socket IOCTL SIOCADDMULTI/SIOCDELMULTI: -:: +.. code:: console - ip route add 239.255.1.3 dev eth1 - iperf -s -B 239.255.1.3 -u& - ip maddr show dev ethX - 2: ethX - ... - link 01:00:5e:7f:01:03 users 2 - inet 239.255.1.3 - ^^^^ + ip route add 239.255.1.3 dev eth1 + iperf -s -B 239.255.1.3 -u& + ip maddr show dev ethX + 2: ethX + ... + link 01:00:5e:7f:01:03 users 2 + inet 239.255.1.3 + ^^^^ diff --git a/source/linux/Foundational_Components/Kernel/Kernel_Drivers/Network/_K3-CPSW-common.rst b/source/linux/Foundational_Components/Kernel/Kernel_Drivers/Network/_K3-CPSW-common.rst index e70cbd267..7fcaf8653 100644 --- a/source/linux/Foundational_Components/Kernel/Kernel_Drivers/Network/_K3-CPSW-common.rst +++ b/source/linux/Foundational_Components/Kernel/Kernel_Drivers/Network/_K3-CPSW-common.rst @@ -112,13 +112,13 @@ updating the :file:`am65-cpsw-nuss.c` driver with the following change: --- a/drivers/net/ethernet/ti/am65-cpsw-nuss.c +++ b/drivers/net/ethernet/ti/am65-cpsw-nuss.c @@ -1745,7 +1745,8 @@ static netdev_tx_t am65_cpsw_nuss_ndo_slave_xmit(struct sk_buff *skb, - cs_offset = cs_start + skb->csum_offset; - /* HW numerates bytes starting from 1 */ - psdata[2] = ((cs_offset + 1) << 24) | - - ((cs_start + 1) << 16) | (skb->len - cs_start); - + ((cs_start + 1) << 16) | (skb->len - cs_start) - + | BIT(15); // BIT(15) enables csum inversion for zero csum - dev_dbg(dev, "%s tx psdata:%#x\n", __func__, psdata[2]); + cs_offset = cs_start + skb->csum_offset; + /* HW numerates bytes starting from 1 */ + psdata[2] = ((cs_offset + 1) << 24) | + - ((cs_start + 1) << 16) | (skb->len - cs_start); + + ((cs_start + 1) << 16) | (skb->len - cs_start) + + | BIT(15); // BIT(15) enables csum inversion for zero csum + dev_dbg(dev, "%s tx psdata:%#x\n", __func__, psdata[2]); .. ifconfig:: CONFIG_part_variant in ('AM65X') @@ -171,12 +171,12 @@ like eth0.5, below is an example how it check the vlan interface ifconfig eth0.5 .... eth0.5 Link encap:Ethernet HWaddr 20:CD:39:2B:C7:BE - inet addr:192.168.10.5 Bcast:192.168.10.255 Mask:255.255.255.0 - UP BROADCAST RUNNING 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:0 - RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) + inet addr:192.168.10.5 Bcast:192.168.10.255 Mask:255.255.255.0 + UP BROADCAST RUNNING 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:0 + RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) *VLAN Packet Send/Receive*