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.

PROCESSOR-SDK-AM64X: PRU ethernet switch on linux for AM64

Part Number: PROCESSOR-SDK-AM64X

We have a requirement to have a 2 port ethernet switch in our AM64 design  that has 2 PRU connected ethernet ports.  The ports currenty operate in dual emac mode.  The TI e2e ticket [1] says that pru ethernet switch is  not supported as of sdk 08.02.  It doesn't make sense to me that this doesn't work  since its is supported on AM65x, and the AM65, AM64 use the same PRUs and PRU FW.

When will this be supported?

[1] e2e.ti.com/.../4208810

  • Hello Bruno,

    At this point in time, we do not support Ethernet switch on AM64x. You are correct that the PRU_ICSSGs are very similar between AM64x and AM65x, and that they use shared firmware - at this point it is a testing gap. I do not see any plans as of today to add official Linux support for AM64x PRU Ethernet switch.

    It does look like we support PRU Ethernet switch from R5F cores on AM64x:
    briefly mentioned here: https://software-dl.ti.com/mcu-plus-sdk/esd/AM64X/08_05_00_24/exports/docs/api_guide_am64x/DRIVERS_PRUICSS_PAGE.html 
    detailed information here: https://software-dl.ti.com/mcu-plus-sdk/esd/AM64X/08_05_00_24/exports/docs/api_guide_am64x/EXAMPLES_ENET_LAYER2_ICSSG.html

    Does that satisfy your design needs?

    Regards,
    Nick

  • Is there support for some kind of networking bridge to linux on the A53 cores?  I'm really looking for a 3 port switch like the cpsw3g with linux on A53 as one of the ports.

  • Hello Bruno,

    I am working on filing a requirement for adding AM64x Linux PRU Ethernet feature parity with AM65x (including adding switch support). That does not necessarily mean that the requirement will be approved, and I cannot comment on when it would be implemented if it is approved.

    Feel free to have your TI field representative reach out to me over email with any information that might help us get that requirement approved (e.g., opportunity size, timeframe of need, specific needs, etc).

    I will check on:

    1) your network bridge question

    2) with the understanding that a) it is not tested by TI, and b) I would not be able to provide any support if it didn't work: Do we tentatively expect that you could just run PRU Ethernet switch on AM64x with current driver and firmware? (or minimal driver modifications)

    Please ping me if I have not replied by Tuesday of next week.

    Regards,

    Nick

  • Also, just to double-check: is there a reason you could not use the CPSW peripheral as the Ethernet switch?

    Regards,

    Nick

  • We're try to keep the cost down on this device, so we have only the 2 eth ports.  We will have other variants of the device that will use the eth ports for other things that require PRU ICSSG.

  • Thanks Nick.  I will have our TI field rep contact you.

    We may be able to use the mcu_plus solution and make our own  simple bridge.  The is not ideal.

    I tried on the linux side by changing drivers/net/ethernet/ti/icssg_prueth.c to enable switch mode for am64:

     static const struct prueth_pdata am64x_icssg_pdata = {
            .fdqring_mode = K3_RINGACC_RING_MODE_RING,
    +       .switch_mode = 1,
     };
    
    but I ran into problems following the instructions here
    https://software-dl.ti.com/processor-sdk-linux/esd/AM65X/08_02_00_02/exports/docs/linux/Foundational_Components/PRU-ICSS/Linux_Drivers/PRU_ICSSG_Ethernet_Switch.html
    on the last step I get the following result:
    ~ # bridge vlan add dev br0 vid 1 pvid untagged self
    RTNETLINK answers: Operation not supported

    I've reached the limits of my capabilities here, in terms of time effeciency.

  • Doesn't the AM64 only have CPSW2G not CPSW3G?

  • Hello Bruno,

    Different CPSWs on different devices

    AM65x has CPSW2G (stands for 2 ports: one external gigabit port facing the Ethernet PHY, one internal gigabit port facing whichever core is controlling the CPSW).

    AM64x has CPSW3G (stands for 3 ports: two external gigabit ports facing two separate Ethernet PHYs, one internal gigabit port facing whichever core is controlling the CPSW). So each external facing port can transfer data at gigabit speeds, but the TOTAL throughput of both ports will be limited to 1Gbit by the single internal port going to the controlling core.

    Followup on your questions earlier

    Apparently any two ethernet ports can be set to do the switching in the Linux driver instead of offset to the hardware peripheral, even 1 PRU Ethernet port and 1 CPSW Ethernet port. I was provided the attached scripts that may be a helpful reference:

    am64x_switch_down.sh4375.am64x_cpsw_switch_on.sham64x_sw_switch_on.sh

    As far as the other question "Do we tentatively expect that you could just run PRU Ethernet switch on AM64x with current driver and firmware? (or minimal driver modifications)" the answer is it should be theoretically possible to get it running, but me and the other folks on the apps team don't know exactly what changes would need to be made.

    Regards,

    Nick

  • Thanks Nick,

    Our OTHER design is based on AM65, so get the AM64 vs. AM65 features crossed up.

    Thanks for the scripts I will  look into that.  We plan to drop  down to an AM64 device with only one A53 core, so there is some concern about performance and soft switching.

    I appreciate you exploring all the possibilities here.  I did contact our FAE about this.

  • Hello Bruno,

    No problem. I will continue moving forward with the requirement for PRU Ethernet feature parity between AM65x and AM64x even if you do not end up using PRU Ethernet switch in your design, since you are not the first customer to ask about this.

    I do not have any other actions identified for this thread at the moment - my first suggestion would be to take a look at CPSW hardware switching to see if it meets your design needs, since that is currently supported on AM64x.

    As an FYI, PRU Ethernet for AM64x / AM65x is still under active development. We have made some bug fixes since SDK 8.2, and we are still actively developing both PRU firmware and Linux driver patches for the SDK 8.6 releases (AM64x SDK 8.6 dropping within the next couple of weeks, AM65x SDK 8.6 scheduled sometime around the end of March). So if you see any Ethernet edge cases that are problems for your AM65x design, it might be worth it to check out the new AM65x SDK when it drops.

    Feel free to reply here with any followup questions, or create a new thread with any new questions.

    Regards,

    Nick