PROCESSOR-SDK-AM64X: AM64X TSN Enhancements for Scheduled Traffic (EST)

Part Number: PROCESSOR-SDK-AM64X

Tool/software:

Hi,
When I was trying the Enhancements for Scheduled Traffic (EST) example on this page: software-dl.ti.com/.../CPSW-EST.html

I use two AM64x EVMs to run the iperf server and iperf client. Also, on the iperf server, tcpdump is used to capture Wireshark trace. 
With this command:
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
   
I was unable to get the periodic burst of frames every 500 micro seconds as described in the example. The Wireshark trace shows about the right number of frames per 500 micro seconds, but are evenly spread out.

Questions:
1. How do I get periodic burst of frames every 500 micro seconds? Is an RT-Linux kernel required?
2. Sometimes I observed "Error: Invalid interval for schedule entry." when running tc qdisc command. Is there a valid range for schedule entry in tc qdisc taprio?

Thank you for your help!

  • Hello Matt,

    I'm not sure if this will exactly help address your questions but it should give you some more information on what can be done to examine the impact/behavior of your EST configuration:  [FAQ] How to set up Enhancements for Scheduled Traffic (EST) / Time Aware Shaper (TAS) in Linux? 

    When I was trying the Enhancements for Scheduled Traffic (EST) example on this page: software-dl.ti.com/.../CPSW-EST.html

     Were you first able to replicate exactly the example EST configuration and see the expected output based on the documentation?

    Is an RT-Linux kernel required?

    I would recommend using RT-Linux if you are planning on running an effective EST configuration.

    2. Sometimes I observed "Error: Invalid interval for schedule entry." when running tc qdisc command. Is there a valid range for schedule entry in tc qdisc taprio?

    How frequent do you see this message? Do you have a reproducible sequence that results in this output?

    -Daolin

  • Hi Daolin,

    Thank you for the information.

    Let me go through the FAQ you provided and try some more, then get back to you.

    Thank you for your help!

  • Hi Daolin,

    I read through the FAQ and have a question:

    The FAQ says the TC1 bandwidth is 1 frame/ms ~= 1400 bytes/ms

    So in the "How to Analyze EST/TAS Results" section, is the unit of Y axis "Number of bytes" in histogram graphs?

    For example, in the first histogram graph, the first bar Y value is 1536. If the axis unit is "Number of Packets", shouldn't the first bar Y value around 1?

    I am probably still missing something, can you please explain or elaborate?

    Thank you!

  • Hi Matt,

    Apologies for the delayed response as I was out of office last week.

    "How to Analyze EST/TAS Results" section, is the unit of Y axis "Number of bytes" in histogram graphs?

    The Y axis of the histogram plots should be Number of Packets. The goal was to show that all the packets that were TC1 packets were transmitted exactly a time interval <= 0.001 seconds (1ms) between each packet since that is the cycle time we configured the EST for.

    For example, in the first histogram graph, the first bar Y value is 1536. If the axis unit is "Number of Packets", shouldn't the first bar Y value around 1?

    Remember, the X axis is displaying time interval between each TC1 packet. So there could be a >1 Number of Packets for a given time interval. In fact, we expect that all if not most of all TC1 packets that were transmitted are <=0.001 time interval between each TC1 packet. The 1536 indicates there were 1536 TC1 packets out of the total number of TC1 packets that were detected per 0.001 seconds (1ms).

    I hope this helps clarify things. Let me know if you have follow up questions.

    -Daolin

  • Hi Daolin,

    Thank you for the explanation. This makes more sense to me now. I will try these on the RT kernel and ask follow-up questions if needed.

    Thank you!