This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

AM5708: Issue PTP in bonding mode

Part Number: AM5708

Hi:

     I have a custom AM5708 based board with SDK6.02.

I have 2 ethernet ports, eth1 & eth2, managed by PRU2 and have configured them in bonding mode.

Briefly the issue happens when PTP is running over bonding redundancy mode. If I configure only bonding redundancy mode

I can see the pings from a PC over the active port so it is working fine. But if afterwards I run ptp then I get

some pings lost.

The setup is very simple:

  1. One switch with 4 cable ports
  2. PTP master connected to 1 switch port
  3. Linux PC connected to 1 switch port
  4. 2 redundancy ports of my custom board connected to 2 switch ports.

1.- I setup the scenario in bonding redundancy mode (start_lla.sh) in active-backup mode with SAME MAC addresses for eth1 and eth2:

LLA_PTP_issue.zip

A.-

  • All 4 cables are connected.
  • There is one parameter inside ptp configuration file (redundancy) that can take 3 values: 0, 1, and 2.

             With 0 and 2 the behavior is the same, 1 is for HSR.

  • I ping from PC and none request reply is lost. I run “tcpdump” over bond0, eth1, eth2

            I can see that if eth1 is connected (active) all the pings request-replay messages  in eth1 are in bond0

            If I disconnected eth1 and eth2 becomes active I see with “tcpdump” the same behavior as with eth1 but in eth2 port.

  • I see that TX packets are NOT increasing in the inactive port        

B.-

  • All 4 cables connected
  • Later on I run ptp “ptp4l -f ptp_pru.cfg “
  • There is one parameter inside ptp configuration file called “redundancy” that may take 3 values: 0, 1, and 2.

             With 0 and 2 the behavior is the same, 1 is for HSR.

  • I observe ping losses. After running “tcpdump” for bond0, eth1 and eth2 I can see that both eth1 and eth2 are receiving ping requests.

            If a ping request is receive in one port, the other port does not receive this request.

            When eth2 receives the ping requests these messages are NOT forwarded to bond0 and therefore there are not any replies, so ping losses.

            When eth1 receives the ping requeste then these messages are forwarded to bond0 and therefore there are the correspondent replies.

  • If I disconnected one of the 2 ports then it works fine.
  • I see that TX packets are increasing in the inactive port

C.-

  • All 4 cables connected
  • Later on I kill ptp task “ptp4l -f ptp_pru.cfg “.
  • In this case it works fine as in A.

 

2.- I setup the scenario in bonding redundancy mode (start_lla.sh) in active-backup mode with DIFFERENT MAC addresses for eth1 and eth2:

  • All 4 cables are connected.
  • In this case eth1 MAC address is different from eth2 MAC address.

            Bond0 MAC address assumes the MAC address of the active port (eth1 or eth2).

  • In this case the behavior with PTP is correct.

Our application requieres to work in the 1º scenario (2 identical MAC address).

Questions:

               1.- Can there be any configuration parameter that may affect PRU firmware?

                    My understanding is that PRU should block any incoming message from inactive port.

               2.- What is the correct value for “redundancy” parameter in the PTP configuration file?

               3.- Where can we get information about how to configure PTP over bonding?

 

Any suggestion will be welcome.

Regards

Billa

  • Issue seems to be : Linux bonding module (in fail_over_mac mode 0) does not work properly with PRU. Issue is easily seen or triggered when PTP is enabled.

     

    For more details, search for fail_over_mac in the bonding.txt:

    https://www.kernel.org/doc/Documentation/networking/bonding.txt

     

    In mode 0, both slave interfaces (eth1 and eth2) take same MAC address as bond0. When MAC address of eth1 and eth2 are the same, PRU is not forwarding all Rx frames (ping in our test) to currently active interface (say eth1). Some frames are forwarded to backup interface (eth2).  This results in loss of frames on bond0.

     

    In mode 1, both slave interfaces (eth1 and eth2) are assigned different MAC address and bond0 takes MAC address of active interface. In this case, PRU is forwarding  all Rx frames to correct interface.

     

    We want to use mode 0, as in mode 1 failover take some time while switch learns new MAC address (gratuitous ARPs etc.)

  • Hi

        After some investigation I have found out that "ptp4l" is causing the issue.

    In principle we have a logic interface called "bond0" and the 2 physical interfaces "eth1" and "eth2".

    Any user application in general does not access directly to "eth1" or "eth2", but in case of "ptp4l" application (in our case configured as slave only) happens that it sends p2p delay request messages directly over "eth1" and "eth2", not over "bond0", because "ptp4l" needs to get the hardware timestamp for each message in their respective ports ("eth1" and "eth2").

    Attached are the ptp messaging captured files on the inactive ports, so it means that even if the port is not active, ptp4l is sending messages over this port.

    Just as a curiosity I have seen in files that for "eth1" & "eth2" "ptp4l" is sending the p2p delay requests every 125 msec with "SourcePortID" equals to 2 & 3 respectively, but in both cases every 1 second there is a p2p delay request with "SourcePortID=1".

    Regards

    Billa

    
    
    �M<+��������6Intel(R) Core(TM) i5-6300U CPU @ 2.40GHz (with SSE4.2)Linux 5.4.0-72-genericKDumpcap (Wireshark) 2.6.10 (Git v2.6.10 packaged as 2.6.10-1~ubuntu18.04.0)�L	enp0s31f6		Linux 5.4.0-72-genericLLUty�,�**�������LȃAF�LȃAF
    #�
     L�Uty���bb��ޭ�LȃAFETp�@@����$���$��
    �ze
    �`P� !"#$%&'()*+,-./01234567�LVty��3**�������LȃAF�LȃAF
    #�
     L�Vty�̸3bb��ޭ�LȃAFETq�@@�K��$���$�ڷ
    �zf�`8(	 !"#$%&'()*+,-./01234567�LVty~�:R**�������LȃAF�LȃAF
    #�
     L�Vty�ľpbb��ޭ�LȃAFETr	@@����$���$��Y
    �zg�`I�	 !"#$%&'()*+,-./01234567�LVty-~&z**�������LȃAF�LȃAF
    #�
     L|Vty���ZZ33��ޭ��`$�:�����ޭ|LVty�*E�**�������LȃAF�LȃAF
    #�
     L|Vty4��ZZ33��ޭ��`$�:�����ޭ|xVty��VV33�ޭ��ޭ��` :���ޭ�,�������ޭ�}�QX�x�Vty�ʭbb��ޭ�LȃAFETs@@����$���$�V�
    �zh�`��	 !"#$%&'()*+,-./01234567�\Vty��ӭ<<��������ޭ��ޭ��$���$�\LVtyXLԭ**��ޭ�LȃAF�LȃAF��$���ޭ��$�L�Vty�ڭbb�LȃAF��ޭET�@�'��$���$�^�
    �zh�`��	 !"#$%&'()*+,-./01234567�LVty��R�**�������LȃAF�LȃAF
    #�
     LLVty�N�**�������LȃAF�LȃAF
    #�
     L|Vty&wR�ZZ33��ޭ��`$������ޭ�:����ޭ|hVty�wR�FF33��ޭ��`:�������ޭ��6
    ��ޭh�Vty4�}�bb��ޭ�LȃAFETs~@@�O��$���$��
    �zi�`��	 !"#$%&'()*+,-./01234567��Vty�J��bb�LȃAF��ޭET�@���$���$�&�
    �zi�`��	 !"#$%&'()*+,-./01234567�LVty��[�**�������LȃAF�LȃAF
    #�
     LVty������33��LȃAF��`;7����I9�|�T�y�������	_nfs_tcplocal_ipp�_ipps�_ftp�_webdav�_webdavs�	_sftp-ssh�_smb�_afpovertcp��p�PC929�p�VtyՊ����^��LȃAFE���@�u�
    #�������	_nfs_tcplocal_ipp�_ipps�_ftp�_webdav�_webdavs�	_sftp-ssh�_smb�_afpovertcp��p�PC929�p�|Vty9���ZZ33��ޭ��`$������ޭ�:����ޭ|LWtybZ	**�������LȃAF�LȃAF
    #�
     L�WtyT��%bb��ޭ�LȃAFETs�@@����$���$�ҹ
    �zj�`;"
     !"#$%&'()*+,-./01234567��Wty���%bb�LȃAF��ޭET��@����$���$�ڹ
    �zj�`;"
     !"#$%&'()*+,-./01234567�LWtyf`F**�������LȃAF�LȃAF
    #�
     L�Wty�J�bbb��ޭ�LȃAFETtL@@����$���$�$[
    �zk�`�
     !"#$%&'()*+,-./01234567��Wty0�cbb�LȃAF��ޭET�#@Ϊ��$���$�,[
    �zk�`�
     !"#$%&'()*+,-./01234567�LWtyX�f�**�������LȃAF�LȃAF
    #�
     L�Wty��bb��ޭ�LȃAFETtQ@@�|��$���$�;�
    �zl�`��
     !"#$%&'()*+,-./01234567��Wty|e�bb�LȃAF��ޭET�z@�S��$���$�C�
    �zl�`��
     !"#$%&'()*+,-./01234567�LWty<j�**�������LȃAF�LȃAF
    #�
     LLWty[Dt�**�������LȃAF�LȃAF
    #�
     LhWty���FF33��ޭ��`:�������ޭ��6
    ��ޭhLWty��%�**��ޭ�LȃAF�LȃAF��$���$�L\Wty��.�<<�LȃAF��ޭ��ޭ��$��LȃAF��$�\�Wty��bb��ޭ�LȃAFETt�@@����$���$�~�
    �zm�`�; !"#$%&'()*+,-./01234567��Wty)x�bb�LȃAF��ޭET��@����$���$���
    �zm�`�; !"#$%&'()*+,-./01234567�LWty�� �**�������LȃAF�LȃAF
    #�
     LLWty(�z�**�������LȃAF�LȃAF
    #�
     L�Xty��Qbb��ޭ�LȃAFETuo@@�^��$���$�0
    �zn�`�� !"#$%&'()*+,-./01234567��Xtyq�Zbb�LȃAF��ޭET��@����$���$�0
    �zn�`�� !"#$%&'()*+,-./01234567�LXty)(-**�������LȃAF�LȃAF
    #�
     LLXtyf@�:**�������LȃAF�LȃAF
    #�
     L�Xty9"Wbb��ޭ�LȃAFETu�@@�B��$���$���
    �zo�`� !"#$%&'()*+,-./01234567��Xty��,Wbb�LȃAF��ޭET�@ʹ��$���$���
    �zo�`� !"#$%&'()*+,-./01234567�LXty�d�w**�������LȃAF�LȃAF
    #�
     L�Xty]Вbb��ޭ�LȃAFETu�@@���$���$���
    �zp�`� !"#$%&'()*+,-./01234567��Xty��ؒbb�LȃAF��ޭET�"@ͫ��$���$��
    �zp�`� !"#$%&'()*+,-./01234567�LXty�R��**�������LȃAF�LȃAF
    #�
     L�Xty�}K�bb��ޭ�LȃAFETu�@@����$���$�}�
    �zq�`�5 !"#$%&'()*+,-./01234567��XtyT�bb�LȃAF��ޭET�y@�T��$���$���
    �zq�`�5 !"#$%&'()*+,-./01234567�LXty���**�������LȃAF�LȃAF
    #�
     LLXtyY"��**�������LȃAF�LȃAF
    #�
     L�Yty�BTbb��ޭ�LȃAFETv�@@���$���$��@
    �zr�`7� !"#$%&'()*+,-./01234567��Yty�n]bb�LȃAF��ޭET�@�B��$���$��@
    �zr�`7� !"#$%&'()*+,-./01234567�LYty���(**�������LȃAF�LȃAF
    #�
     LLYty�ڪ.**�������LȃAF�LȃAF
    #�
     L�Ytyej]Ibb��ޭ�LȃAFETw@@�N��$���$���
    �zs�`� !"#$%&'()*+,-./01234567��Yty�eIbb�LȃAF��ޭET��@���$���$��
    �zs�`� !"#$%&'()*+,-./01234567�LYty���e**�������LȃAF�LȃAF
    #�
     LLYty�%�k**�������LȃAF�LȃAF
    #�
     L�YtygIf�bb��ޭ�LȃAFETw�@@���$���$�E�
    �zt�`�N
     !"#$%&'()*+,-./01234567��Ytypeo�bb�LȃAF��ޭET� @̭��$���$�M�
    �zt�`�N
     !"#$%&'()*+,-./01234567�hYty-
    ��FF33��ޭ��`:�������ޭ��6
    ��ޭhLYty�;��**�������LȃAF�LȃAF
    #�
     L�Yty9���bb��ޭ�LȃAFETx�@@���$���$�
    �zu�`��
     !"#$%&'()*+,-./01234567��Yty��bb�LȃAF��ޭET�8@̕��$���$�
    �zu�`��
     !"#$%&'()*+,-./01234567�LYtyK���**�������LȃAF�LȃAF
    #�
     L�Zty��tbb��ޭ�LȃAFETy�@@���$���$���
    �zv�`V	 !"#$%&'()*+,-./01234567��Zty�5ybb�LȃAF��ޭET�y@�T��$���$���
    �zv�`V	 !"#$%&'()*+,-./01234567�LZty�\�"**�������LȃAF�LȃAF
    #�
     LLZty0k�$**�������LȃAF�LȃAF
    #�
     L�Zty��=bb��ޭ�LȃAFETz�@@�6��$���$�g
    �zw�`�g !"#$%&'()*+,-./01234567��Zty�s�=bb�LȃAF��ޭET�@�"��$���$�g
    �zw�`�g !"#$%&'()*+,-./01234567�LZty�.�_**�������LȃAF�LȃAF
    #�
     LLZty�\�a**�������LȃAF�LȃAF
    #�
     L�Ztye��zbb��ޭ�LȃAFETz�@@����$���$�e
    �zx �`�� !"#$%&'()*+,-./01234567��Ztyg�zbb�LȃAF��ޭET�@���$���$�m
    �zx �`�� !"#$%&'()*+,-./01234567�LZty1_�**�������LȃAF�LȃAF
    #�
     LLZty�ƞ**�������LȃAF�LȃAF
    #�
     L�Ztyf���bb��ޭ�LȃAFETz�@@����$���$��
    �zy!�`
    # !"#$%&'()*+,-./01234567��ZtyZU��bb�LȃAF��ޭET��@����$���$��
    �zy!�`
    # !"#$%&'()*+,-./01234567�LZtyZ��**�������LȃAF�LȃAF
    #�
     L�Zty�U��bb��ޭ�LȃAFET{�@@����$���$��
    �zz#�`�> !"#$%&'()*+,-./01234567��Zty]��bb�LȃAF��ޭET�@˺��$���$��
    �zz#�`�> !"#$%&'()*+,-./01234567�L[tyl0�**�������LȃAF�LȃAF
    #�
     L�[ty1bb��ޭ�LȃAFET|~@@�O��$���$�s.
    �z{$�`�� !"#$%&'()*+,-./01234567��[ty��1bb�LȃAF��ޭET�C@ˊ��$���$�{.
    �z{$�`�� !"#$%&'()*+,-./01234567�L[ty���S**�������LȃAF�LȃAF
    #�
     LL[ty�qT**�������LȃAF�LȃAF
    #�
     L�[ty=�nbb��ޭ�LȃAFET}y@@�T��$���$���
    �z|%�`_� !"#$%&'()*+,-./01234567��[tyf��nbb�LȃAF��ޭET�@�:��$���$���
    �z|%�`_� !"#$%&'()*+,-./01234567�L[ty:�**�������LȃAF�LȃAF
    #�
     LL[tytu�**�������LȃAF�LȃAF
    #�
     L�[ty����bb��ޭ�LȃAFET~@@���$���$��p
    �z}&�`X !"#$%&'()*+,-./01234567��[tyeT��bb�LȃAF��ޭET�@���$���$��p
    �z}&�`X !"#$%&'()*+,-./01234567�L[ty�o�**�������LȃAF�LȃAF
    #�
     LL[tyv��**�������LȃAF�LȃAF
    #�
     L�[ty�%��bb��ޭ�LȃAFET~�@@����$���$�!
    �z~'�`� !"#$%&'()*+,-./01234567��[ty����bb�LȃAF��ޭET��@�
    ��$���$�)
    �z~'�`� !"#$%&'()*+,-./01234567�L\ty\J**�������LȃAF�LȃAF
    #�
     L�\ty�w�%bb��ޭ�LȃAFET�@@�!��$���$�v�
    �z(�`� !"#$%&'()*+,-./01234567��\tyg��%bb�LȃAF��ޭET��@����$���$�~�
    �z(�`� !"#$%&'()*+,-./01234567�L\ty��H**�������LȃAF�LȃAF
    #�
     L�\ty�r�bbb��ޭ�LȃAFET�Q@@�|��$���$��T
    �z�)�`Hq !"#$%&'()*+,-./01234567��\ty�K�bbb�LȃAF��ޭET�;@ʒ��$���$��T
    �z�)�`Hq !"#$%&'()*+,-./01234567�L\ty�w�**�������LȃAF�LȃAF
    #�
     LL\tyU:&�**�������LȃAF�LȃAF
    #�
     L�\ty�Nڟbb��ޭ�LȃAFET��@@����$���$���
    �z�*�`� !"#$%&'()*+,-./01234567��\tyb��bb�LȃAF��ޭET�L@ʁ��$���$��
    �z�*�`� !"#$%&'()*+,-./01234567�L\ty�v�**�������LȃAF�LȃAF
    #�
     LL\ty��1�**�������LȃAF�LȃAF
    #�
     L�\ty���bb��ޭ�LȃAFET�A@@���$���$�"�
    �z�+�`�, !"#$%&'()*+,-./01234567��\tyW���bb�LȃAF��ޭET�@�E��$���$�*�
    �z�+�`�, !"#$%&'()*+,-./01234567�L\ty"�**�������LȃAF�LȃAF
    #�
     LL\ty\b8�**�������LȃAF�LȃAF
    #�
     L�]tyl|�bb��ޭ�LȃAFET��@@�4��$���$�D8
    �z�,�`�� !"#$%&'()*+,-./01234567��]ty���bb�LȃAF��ޭET�@�#��$���$�L8
    �z�,�`�� !"#$%&'()*+,-./01234567�L]tyJ�@<**�������LȃAF�LȃAF
    #�
     L�]ty�?�Vbb��ޭ�LȃAFET�@@���$���$���
    �z�-�`w� !"#$%&'()*+,-./01234567��]ty���Vbb�LȃAF��ޭET��@����$���$���
    �z�-�`w� !"#$%&'()*+,-./01234567�L]ty��Ly**�������LȃAF�LȃAF
    #�
     Lh]ty
    �a�FF33��ޭ��`:�������ޭ��6
    ��ޭh�]tyV��bb��ޭ�LȃAFET��@@���$���$��z
    �z�.�`=F !"#$%&'()*+,-./01234567��]ty�[	�bb�LȃAF��ޭET�?@Ɏ��$���$��z
    �z�.�`=F !"#$%&'()*+,-./01234567�L]ty1>a�**�������LȃAF�LȃAF
    #�
     LL]ty�)S�**�������LȃAF�LȃAF
    #�
     L�]ty
    �bb��ޭ�LȃAFET�k@@�b��$���$�
    �z�/�`� !"#$%&'()*+,-./01234567��]ty���bb�LȃAF��ޭET�|@�Q��$���$�
    �z�/�`� !"#$%&'()*+,-./01234567�L]ty6�**�������LȃAF�LȃAF
    #�
     LL]ty�Y�**�������LȃAF�LȃAF
    #�
     Ld]tyR��DD����ޭ��6
    ����ޭdd^ty��DD����ޭ��6
    ����ޭdd^ty�~DD����ޭ��6
    ����ޭd�^ty�Cbb��ޭ�LȃAFET��@@�0��$���$�<�
    �z�0�`� !"#$%&'()*+,-./01234567��^ty�abb�LȃAF��ޭET�@�"��$���$�D�
    �z�0�`� !"#$%&'()*+,-./01234567�d^ty�O�DD����ޭ��6
    ����ޭdd^ty��hDD����ޭ��6
    ����ޭdd^tyG��DD����ޭ��6
    ����ޭdL^tyPJ#**�������LȃAF�LȃAF
    #�
     Ld^ty�!T%DD����ޭ��6
    ����ޭdd^ty��#)DD����ޭ��6
    ����ޭdd^ty���,DD����ޭ��6
    ����ޭdL^tyR�c0**�������LȃAF�LȃAF
    #�
     Ld^tyѯ@4DD����ޭ��6
    ����ޭdd^ty�5�;DD����ޭ��6
    ����ޭ	dd^ty�3,CDD����ޭ��6
    ����ޭ
    dd^ty�p�JDD����ޭ��6
    ����ޭd�^ty�Kbb��ޭ�LȃAFET��@@����$���$��^
    �z�1�`i_ !"#$%&'()*+,-./01234567��^ty>F#Kbb�LȃAF��ޭET�@� ��$���$��^
    �z�1�`i_ !"#$%&'()*+,-./01234567�d^ty��RDD����ޭ��6
    ����ޭdd^ty�G�YDD����ޭ��6
    ����ޭ
    dd^ty�aDD����ޭ��6
    ����ޭdd^ty���dDD����ޭ��6
    ����ޭdd^ty��whDD����ޭ��6
    ����ޭdL^ty`�mm**�������LȃAF�LȃAF
    #�
     Ld^ty���oDD����ޭ��6
    ����ޭdd^ty:�awDD����ޭ��6
    ����ޭdd^tyA��~DD����ޭ��6
    ����ޭdd^ty�J�DD����ޭ��6
    ����ޭd�^ty�� �bb��ޭ�LȃAFET��@@����$���$�x
    �z�2�`z� !"#$%&'()*+,-./01234567��^ty9�%�bb�LȃAF��ޭET��@����$���$��
    �z�2�`z� !"#$%&'()*+,-./01234567�d^ty}��DD����ޭ��6
    ����ޭdd^tyF�3�DD����ޭ��6
    ����ޭdd^ty͛��DD����ޭ��6
    ����ޭdd^ty�^�DD����ޭ��6
    ����ޭdd^ty��DD����ޭ��6
    ����ޭdL^ty��v�**�������LȃAF�LȃAF
    #�
     Ld^ty���DD����ޭ��6
    ����ޭdd^tyL�	�DD����ޭ��6
    ����ޭdd^tyƀ�DD����ޭ��6
    ����ޭdd^ty�-��DD����ޭ��6
    ����ޭd�^ty�$+�bb��ޭ�LȃAFET�6@@���$���$�,�
    �z�3�`� !"#$%&'()*+,-./01234567��^ty%5�bb�LȃAF��ޭET�"@ȫ��$���$�4�
    �z�3�`� !"#$%&'()*+,-./01234567�d^ty��k�DD����ޭ��6
    ����ޭdd^ty����DD����ޭ��6
    ����ޭdL^ty"n��**�������LȃAF�LȃAF
    #�
     Ld^ty��T�DD����ޭ��6
    ����ޭdd^ty9���DD����ޭ��6
    ����ޭdd^ty����DD����ޭ��6
    ����ޭdd^ty]>�DD����ޭ��6
    ����ޭ dL^ty�Z�**�������LȃAF�LȃAF
    #�
     Ld^ty'��DD����ޭ��6
    ����ޭ!dd^ty�*�DD����ޭ��6
    ����ޭ"dd^ty�l��DD����ޭ��6
    ����ޭ#d�_ty��3bb��ޭ�LȃAFET�T@@�y��$���$��B
    �z�4�`x !"#$%&'()*+,-./01234567��_ty� :bb�LȃAF��ޭET�*@ȣ��$���$��B
    �z�4�`x !"#$%&'()*+,-./01234567�d_tyk�DD����ޭ��6
    ����ޭ$dd_ty���DD����ޭ��6
    ����ޭ%dL_ty�v**�������LȃAF�LȃAF
    #�
     Ld_tyGyDD����ޭ��6
    ����ޭ&dd_ty{�DD����ޭ��6
    ����ޭdd_tyfxDD����ޭ��6
    ����ޭ'dd_ty�y�"DD����ޭ��6
    ����ޭ(dL_tyr�$**�������LȃAF�LȃAF
    #�
     Ld_tykc*DD����ޭ��6
    ����ޭ)dd_ty�q�1DD����ޭ��6
    ����ޭ*dd_ty`	O9DD����ޭ��6
    ����ޭ+d�_ty�*>?bb��ޭ�LȃAFET��@@�4��$���$���
    �z�5�`� !"#$%&'()*+,-./01234567��_tyL�C?bb�LȃAF��ޭET�:@ȓ��$���$���
    �z�5�`� !"#$%&'()*+,-./01234567�d_ty���@DD����ޭ��6
    ����ޭ,dd_ty�C8HDD����ޭ��6
    ����ޭ-dL_ty��~N**�������LȃAF�LȃAF
    #�
     Ld_ty賮ODD����ޭ��6
    ����ޭ.dd_ty[$2SDD����ޭ��6
    ����ޭdd_ty̫ WDD����ޭ��6
    ����ޭ/dd_tyr�^DD����ޭ��6
    ����ޭ0dL_ty
    S�a**�������LȃAF�LȃAF
    #�
     Ld_ty�fDD����ޭ��6
    ����ޭ1dd_ty�a�mDD����ޭ��6
    ����ޭ2dd_tyq��tDD����ޭ��6
    ����ޭ3dL_ty]�B|**��ޭ�LȃAF�LȃAF��$���$�L�_ty
    D|bb��ޭ�LȃAFET��@@�
    ��$���$���
    �z�6�`a3 !"#$%&'()*+,-./01234567�\_ty{�H|<<�LȃAF��ޭ��ޭ��$��LȃAF��$�\�_ty��H|bb�LȃAF��ޭET�F@ȇ��$���$���
    �z�6�`a3 !"#$%&'()*+,-./01234567�d_ty`�k|DD����ޭ��6
    ����ޭ4dd_ty�[�DD����ޭ��6
    ����ޭ5dd_ty��U�DD����ޭ��6
    ����ޭ6dl��qJfCounters provided by dumpcap��Iz�c��HpJf�l
    
    
    �M<+��������6Intel(R) Core(TM) i5-6300U CPU @ 2.40GHz (with SSE4.2)Linux 5.4.0-72-genericKDumpcap (Wireshark) 2.6.10 (Git v2.6.10 packaged as 2.6.10-1~ubuntu18.04.0)�L	enp0s31f6		Linux 5.4.0-72-genericLdoty�~m�DD����ޭ��6
    ����ޭ�dLoty�_=�**�������LȃAF�LȃAF
    #�
     Ldoty<��DD����ޭ��6
    ����ޭ�ddotyC,Y�DD����ޭ��6
    ����ޭ�ddoty�͢DD����ޭ��6
    ����ޭ�d`oty�Bݤ>>33�LȃAF��`��:���I9�|�T�y���`dotyHB�DD����ޭ��6
    ����ޭ�ddotyB�DD����ޭ��6
    ����ޭGd�oty�ðbb��ޭ�LȃAFET�1@@Ĝ��$���$��Z
    �z�|�`� !"#$%&'()*+,-./01234567��oty�%Ͱbb�LȃAF��ޭET��@�	��$���$��Z
    �z�|�`� !"#$%&'()*+,-./01234567�doty󛳱DD����ޭ��6
    ����ޭ�ddoty�R-�DD����ޭ��6
    ����ޭ�dLoty�Y4�**�������LȃAF�LȃAF
    #�
     Ldoty�`��DD����ޭ��6
    ����ޭ�ddoty�%�DD����ޭ��6
    ����ޭ�dLoty�]N�**�������LȃAF�LȃAF
    #�
     Ldoty�c��DD����ޭ��6
    ����ޭ�ddoty��DD����ޭ��6
    ����ޭ�ddoty׈w�DD����ޭ��6
    ����ޭ�ddoty���DD����ޭ��6
    ����ޭ�ddotyr��DD����ޭ��6
    ����ޭHddoty��a�DD����ޭ��6
    ����ޭ�d�oty���bb��ޭ�LȃAFET��@@�E��$���$�8�
    �z�}�`rw !"#$%&'()*+,-./01234567��oty6���bb�LȃAF��ޭET�@����$���$�@�
    �z�}�`rw !"#$%&'()*+,-./01234567�doty���DD����ޭ��6
    ����ޭ�dLoty�$�**�������LȃAF�LȃAF
    #�
     LdotyX�M�DD����ޭ��6
    ����ޭ�ddpty�"�DD����ޭ��6
    ����ޭ�ddpty_9DD����ޭ��6
    ����ޭ�dLpty'�O**�������LȃAF�LȃAF
    #�
     Ldpty�ͬDD����ޭ��6
    ����ޭ�ddptyt#DD����ޭ��6
    ����ޭ�ddpty��!DD����ޭ��6
    ����ޭ�ddptyR';&DD����ޭ��6
    ����ޭIddpty��
    )DD����ޭ��6
    ����ޭ�d�pty	Kz)bb��ޭ�LȃAFET� @@í��$���$�0�
    �z�~�`y| !"#$%&'()*+,-./01234567��pty�S�)bb�LȃAF��ޭET�=@����$���$�8�
    �z�~�`y| !"#$%&'()*+,-./01234567�dpty���0DD����ޭ��6
    ����ޭ�ddptyNc�7DD����ޭ��6
    ����ޭ�dLpty�r-8**�������LȃAF�LȃAF
    #�
     LdptyAq?DD����ޭ��6
    ����ޭ�ddptytw�FDD����ޭ��6
    ����ޭ�dLpty�HXI**�������LȃAF�LȃAF
    #�
     Ldpty�YNDD����ޭ��6
    ����ޭ�ddptyv��UDD����ޭ��6
    ����ޭ�ddpty�(E]DD����ޭ��6
    ����ޭ�ddptym�aDD����ޭ��6
    ����ޭJddpty��dDD����ޭ��6
    ����ޭ�d�ptyMl�ebb��ޭ�LȃAFET��@@����$���$���
    �z��`� !"#$%&'()*+,-./01234567��pty8$fbb�LȃAF��ޭET�@�D��$���$���
    �z��`� !"#$%&'()*+,-./01234567�dpty�{-lDD����ޭ��6
    ����ޭ�ddpty�ͤsDD����ޭ��6
    ����ޭ�ddpty�={DD����ޭ��6
    ����ޭ�ddpty��DD����ޭ��6
    ����ޭ�dLpty=3c�**�������LȃAF�LȃAF
    #�
     LdptyB��DD����ޭ��6
    ����ޭ�ddpty��x�DD����ޭ��6
    ����ޭ�ddpty��DD����ޭ��6
    ����ޭ�ddpty��v�DD����ޭ��6
    ����ޭKddpty��c�DD����ޭ��6
    ����ޭ�d�pty�e��bb��ޭ�LȃAFET��@@�0��$���$��\
    �zՀ�`� !"#$%&'()*+,-./01234567��pty:��bb�LȃAF��ޭET�@�"��$���$�]
    �zՀ�`� !"#$%&'()*+,-./01234567�dpty uקDD����ޭ��6
    ����ޭ�ddpty3(O�DD����ޭ��6
    ����ޭ�ddpty��öDD����ޭ��6
    ����ޭ�ddpty"�:�DD����ޭ��6
    ����ޭ�dLpty_�j�**�������LȃAF�LȃAF
    #�
     Ldpty�۫�DD����ޭ��6
    ����ޭ�ddptyJ@%�DD����ޭ��6
    ����ޭddpty!Ӗ�DD����ޭ��6
    ����ޭddptykP�DD����ޭ��6
    ����ޭLddpty���DD����ޭ��6
    ����ޭd�pty"�bb��ޭ�LȃAFET��@@����$���$�H�
    �zց�`]q !"#$%&'()*+,-./01234567��ptyB��bb�LȃAF��ޭET��@����$���$�P�
    �zց�`]q !"#$%&'()*+,-./01234567�dpty ���DD����ޭ��6
    ����ޭdLpty�1��**�������LȃAF�LȃAF
    #�
     Ldpty���DD����ޭ��6
    ����ޭdptyG����33��LȃAF��`;7����I9�|�T�y�������	_nfs_tcplocal_ipp�_ipps�_ftp�_webdav�_webdavs�	_sftp-ssh�_smb�_afpovertcp��p�PC929�p�pty�����^��LȃAFE�,�@�?�
    #�������	_nfs_tcplocal_ipp�_ipps�_ftp�_webdav�_webdavs�	_sftp-ssh�_smb�_afpovertcp��p�PC929�p�dpty��l�DD����ޭ��6
    ����ޭddpty���DD����ޭ��6
    ����ޭdLqty��p**�������LȃAF�LȃAF
    #�
     Ldqty�+ZDD����ޭ��6
    ����ޭddqty-[�DD����ޭ��6
    ����ޭddqty�EDD����ޭ��6
    ����ޭ	dl��<�jCounters provided by dumpcap���_j���;�jUl

  • Hi:

        I reproduced the issue in the IDK over eth2 & eth3 ports.

    Attached are the configuration files for bonding mode apn ptp4l.

    Regards

    Billaptp_lla.zip

  • Hi:

      There is another side effect: PTP "sync" messages are entering the inactive port

    This means that these messages go up to the PTP stack and as a result of this the device synchronizes over the inactive port.

    As a workaround I am trying to remove PTP "sync" multicast address  01:1b:19:00:00:00 from the inactive port with ip command

               # ip maddress del 01:1b:19:00:00:00 dev eth1

    but it does not work because this address is not set statically and therefore can be removed in this way. Only static multicast address can be added or deleted with "ip maddress" command.

    how acn I remove oradd dynamically this multicast address on an ethernet interface? 

    Regards

    Billa

  • Hi Billa,

    Apologies for the delay in acknowledging this issue. I will examine this and come back on Monday.

    Regards

    Vineet

  • Hi Billa,

    See my responses

    > Can there be any configuration parameter that may affect PRU firmware?

    Only ingress and egress latency values are configured inside firmware, rest are for driver, ptp4l

    >What is the correct value for “redundancy” parameter in the PTP configuration file?

    Redundancy should be 1 for HSR and 2 for PRP. I haven't used redundancy value of 0 ever. Bonding mode + PTP has not been tested or claimed to be supported. I am checking internally on it.

    > My understanding is that PRU should block any incoming message from inactive port.

    How are you making the port inactive ? PRU supports disabling a port in which case no packets will be received by the PRU.

    >Where can we get information about how to configure PTP over bonding?

    I am checking internally, we haven't tested this.

    What is your kernel and ptp4l version ? We recently made some patch updates to ptp4l and will have to check if those are applicable to you.

    Regards

    Vineet

  • I checked the PCAP files and it appears that ptp4l is treating bond0 as a separate interface from the two physical interfaces and that's why you see an Delay Request message with SourcePortID of 1 and a separate sequence ID, this is an issue.

    >In mode 0, both slave interfaces (eth1 and eth2) take same MAC address as bond0. When MAC address of eth1 and eth2 are the same, PRU is not forwarding all Rx frames (ping in our test) to currently active interface (say eth1). Some frames are forwarded to backup interface (eth2).  This results in loss of frames on bond0.

    Yes, this is not a tested mode. I am checking internally on the limitations.

    Regards

    Vineet

  • I will reply on the multicast question along with information on bonding mode support.

    Regards

    Vineet

  • Hi Vineet:

         The ptp4l version is:

              00021-g8e3dcb0-dirty

        The kernel version:

                    Linux version 4.19.79-rt28-g5baf382c8.

    Regarding how to make the inactive a port, my understanding is that bond0 is in charge of it.

    Regards

    Billa

  • Hi Billa,

    I checked internally and unfortunately we neither support nor test bonding mode (with or without PTP) so it's expected that it will not work. There is currently no plan to add support for this feature.

    We would also recommend that you check ptp4l and bonding mode questions on this mailing list. https://sourceforge.net/p/linuxptp/mailman/

    I will provide an update on the multicast feature shortly. If you are blocked on bonding mode support, then let's take support questions over email.

    Regards

    Vineet

  • Hi Vineet:

        Could you clarify your statement about "we neither support nor test bonding mode (without PTP)? Do you mean that TI does not warranty that bonding mode works properly even without PTP?

    Regards

    Billa

  • Hi Billa,

    > Do you mean that TI does not warranty that bonding mode works properly even without PTP?

    TI : That's correct, bonding mode is not tested in SDK so behavior cannot be guaranteed.

    Regards

    Vineet

  • Hi,

    I checked on the command to add MC addresses to static table. Here it is

    Command to add or remove IP address: ip maddr <add/del> <MC addr> dev <ethx>

    Command to show IP's for a device : ip maddr show dev <ethx>

    Regards

    Vineet

  • Hi:

       I already tried with those commands and they only work if the multicast addresses are static. That is not our case

    Regards

    Billa

  • Hi Billa,

    Thanks for your patience.  We just aligned on this issue internally.  We are going to create a setup similar to yours so we can reproduce the issue on our side.  We can try your workaround (and see about solving the dynamic multicast issue), or perhaps we'll see a different solution once we dig into it.

    Note that our India team is severely impacted by the covid crisis happening there right now.  That's going to slow things down unfortunately.  Our rough expectation is that given the complexity of the setup and some of the covid-related slowdowns that it will take us a week before we are able to provide substantial updates.

    If we come across the necessary info related to your dynamic multicast question, we can post that info sooner for you to try out, but it will be a week or so for us to setup and debug on our side.

    Best regards,
    Brad

  • Hi Billa,

    Sorry for the delay, we are facing some challenges due to the ongoing situation in India.

    We internally aligned on the issue:
    The documentation regarding bonding only showcases how the feature can be used to test multiple ethernet interfaces on the SoC. It is expected to work with PRU Ethernet ports. TI does not explicitly test this default Linux kernel feature and/or add additional custom changes for this. If there is something that isn’t working, you will have to work with Linux Community.
     
    PTP + Bonding mode is not supported by TI. However there are a few suggestions you can try  eg. https://sourceforge.net/p/linuxptp/mailman/message/35910082/
    Also I found an older E2E thread from you mentioning that PTP + Bonding (mode 0) is working for you. Can you clarify ?
     
    Regarding dynamic multicast support, there is no easy way to remove the entry for PTP multicast MAC 01:1b:19:00:00:00.

    Note: This is not supported by Linux Kernel Networking Core implementation. If this is required, you need to look into this internally and TI cannot support .

    Regards
    Vineet