DESK-XZ7-L-AN-0005: Enabling dual Gigabit Ethernet support on BoraEVB/BoraXEVB

From DAVE Developer's Wiki
Jump to: navigation, search
Info Box


History
Issue Date Notes
2024/05/20 DESK-XZ7-L-1.1.0 release



Introduction[edit | edit source]

Petalinux 2021.2 allows to support dual Gigabit Ethernet configuration on BoraEVB and BoraXEVB. This application note describes how to implement such configuration, providing a reference design for Vivado 2021.2 and Petalinux configuration instructions.

Block diagram[edit | edit source]

Simplified block diagram of dual Ethernet configuration is shown in the following picture.


An-belk-006-bd.png


First Ethernet port refers to J8 connector of BoraEVB and BoraXEVB carrier board and is based on Zynq's Gigabit Ethernet Controller 0 (Gem0). This controller is mapped at physical address 0xE000B000.

Second Ethernet port refers to J9 connector of BoraEVB and BoraXEVB carrier board and is based on Zynq's Gigabit Ethernet Controller 1 (Gem1). This controller is mapped at physical address 0xE000C000.

The fundamental difference between the two interfaces is the PHY interfacing. In case of Gem0, PHY is mounted on Bora and BoraX SoM and it is interfaced directly to Processor Subsystem (PS) via MIO pads. In case of Gem1 instead, PHY is populated on BoraEVB and BoraXEVB (U9) and it is interfaced to Programmable Logic (PL). Thus it is necessary to enable EMIO routing and to instantiate a GMII to RGMII bridge in PL as per PHY's interface requirement. About MII bus (MDIO, MDC), two different busses are used:

  • Bora PHY is connected to the signals ETH_MDC and ETH_MDIO (available on BoraEVB at JP18.7 and JP18.9 respectively)
    • this MII bus is associated to gem0
  • BoraEVB PHY is connected to PL's IO_L9N_T1_DQS_34 (ETH1_MDC) and IO_L9P_T1_DQS_34 (ETH1_MDIO); these signals are available on BoraEVB at JP18.8 and JP18.10 respectively
    • this MII bus is associated to gem1
    • it is worth to remember that a virtual PHY (whose address is 8) is connected to this bus as well; this PHY is implemented in the GMII/RGMII bridge and it is used to configure the bridge at runtime, depending on operating parameters such as the Ethernet physical link speed.

Vivado design[edit | edit source]

The following picture shows the block diagram of the Vivado project:

An-belk-006-01.png

Bora + BoraEVB[edit | edit source]

On BoraEVB PHY1 is interfaced to Programmable Logic (PL) pads that belong to bank #34.

WARNING: due to a restraint introduced, from Vivado version 2017.1 onwards, the signal ETH1_TXCK can be routed only to a pad that is MRCC or SRCC input. As result from BELK 4.0.0 an hardware rework is needed on the BoraEVB board:

  • Remove R183
  • Remove R232
  • Connect R183.2 with R232.1

This rework prevents the use of the PL SDRAM onboard of the BoraEVB (by default this ram is not mounted).

Here is the pinout assignment for the PHY1 on BoraEVB:

PHY1 Signal BORA SOM Signal
ETH1_TXD0 IO_L24P_T3_34
ETH1_TXD1 IO_L24N_T3_34
ETH1_TXD2 IO_L23P_T3_34
ETH1_TXD3 IO_L23N_T3_34
ETH1_TXCK IO_L20P_T3_34
ETH1_TXCTL IO_L20N_T3_34
ETH1_RXD0 IO_L5N_T0_34
ETH1_RXD1 IO_L5P_T0_34
ETH1_RXD2 IO_L7N_T1_34
ETH1_RXD3 IO_L7P_T1_34
ETH1_RXCK IO_L4N_T0_34 IO_L13P_T1_MRCC_34
ETH1_RXCTL IO_L4P_T0_34
ETH1_MDC IO_L9N_T1_DQS_34
ETH1_MDIO IO_L9P_T1_DQS_34

Since bank #34 is powered at 3.3V (High Range I/O mode), RGMII duty cycle distortion specification is not matched. In case of carrier board designed for production environments, it is recommended to use a lower voltage levels and thus a different PL bank. For more details please see section I/O Standard and Placement of PG160 GMII to RGMII LogiCORE IP Product Guide and this page.

The Vivado project can also be build with the procedure explained here.

Borax + BoraXEVB[edit | edit source]

On BoraXEVB PHY1 is interfaced to Programmable Logic (PL) pads that belong to bank #13.

WARNING: due to a restraint introduced, from Vivado version 2017.1 onwards, the signal ETH1_TXCK can be routed only to a pad that is MRCC or SRCC input. As result from BXELK 2.0.0 an hardware rework is needed on the BoraXEVB board:

  • Remove RP84
  • Remove R232
  • Connect RP84.2 with R232.1

This rework prevents the use of the LVDS connector on BoraXEVB (J26).

Here is the pinout assignment for the PHY1 on BoraXEVB:

PHY1 Signal BORAX SOM Signal
ETH1_TXD0 IO_L19P_T3_13
ETH1_TXD1 IO_L19N_T3_VREF_13
ETH1_TXD2 IO_L20P_T3_13
ETH1_TXD3 IO_L20N_T3_13
ETH1_TXCK IO_L16P_T2_13
ETH1_TXCTL IO_L16N_T2_13
ETH1_RXD0 IO_L17P_T2_13
ETH1_RXD1 IO_L17N_T2_13
ETH1_RXD2 IO_L18P_T2_13
ETH1_RXD3 IO_L18N_T2_13
ETH1_RXCK IO_L15P_T2_DQS_13 IO_L12P_T1_MRCC_13
ETH1_RXCTL IO_L15N_T2_DQS_13
ETH1_MDC IO_L21N_T3_DQS_13
ETH1_MDIO IO_L21P_T3_DQS_13

I/O voltage of bank 13 must be set to 2.5V by configuring JP25 as shown in the following table.

Pins Setting
1-2 closed
3-4 open
5-6 closed
7-8 open
9-10 open
11-12 open

The Vivado project can also be build with the procedure explained here.

Enabling dual Ethernet configuration in Petalinux[edit | edit source]

To use dual Ethernet user needs to get the pre-built binaries:

Alternatively user can built image with dual Ethernet configuration on Petalinux by following this guide and build artifact for config_bora_ETH1 or config_borax_ETH1 configuration files. In this case user need to update project-spec/meta-user/recipes-bsp/device-tree/files/system-user.dtsi file as shown below.

diff --git a/project-spec/meta-user/recipes-bsp/device-tree/files/system-user.dtsi b/project-spec/meta-user/recipes-bsp/device-tree/files/system-user.dtsi
index f17536c..f94fb97 100644
--- a/project-spec/meta-user/recipes-bsp/device-tree/files/system-user.dtsi
+++ b/project-spec/meta-user/recipes-bsp/device-tree/files/system-user.dtsi
@@ -4,7 +4,7 @@
 // /include/ "openamp.dtsi"

 //To use eth1 on PL uncomment the following line
-// /include/ "eth1.dtsi"
+/include/ "eth1.dtsi"

 /include/ "bora.dtsi"

(END)


200px-Emblem-important.svg.png

In case of manual build with Petalinux, when user load xsa file, Petalinux make a series of device-tree in components/plnx_workspace/device-tree/device-tree, please check that this file are correct since this can have some error. This is an example

Bootlog for Bora

U-Boot 2021.01-desk-xz7-l-1.0.1 (Jan 12 2024 - 10:44:15 +0000)

CPU:   Zynq 7z020
Silicon: v3.1
Model: Bora
DRAM:  ECC disabled 1 GiB
Flash: 0 Bytes
NAND:  0 MiB
MMC:   mmc@e0100000: 0
Loading Environment from FAT... *** Warning - bad CRC, using default environment

In:    serial@e0001000
Out:   serial@e0001000
Err:   serial@e0001000
SF: Detected s25fl256s1 with page size 256 Bytes, erase size 64 KiB, total 32 MiB
SOM ConfigID CRC mismatch for 0x00ffffff (was 0xff000000, expected 0xd2fd1072) at block 2 (offset 96): using default
SF: Detected s25fl256s1 with page size 256 Bytes, erase size 64 KiB, total 32 MiB
SOM ConfigID#: ffffffff
SOM UniqueID#: 01234567:89abcdef
ds2431_readmem(): error in chip reset
ds2431_readmem(): error in reading buffer
ds2431_readmem(): error in chip reset
ds2431_readmem(): error in reading buffer
CB ConfigID#: ffffffff
CB UniqueID#: 00000000:00000000
SF: Detected s25fl256s1 with page size 256 Bytes, erase size 64 KiB, total 32 MiB
ethaddr#: 00:50:c2:1e:af:e0
Net:   
ZYNQ GEM: e000b000, mdio bus e000b000, phyaddr 7, interface rgmii-id
eth0: ethernet@e000b000
ZYNQ GEM: e000c000, mdio bus e000c000, phyaddr 6, interface rgmii-id
, eth1: ethernet@e000c000
Hit ENTER within 2 seconds to stop autoboot
switch to partitions #0, OK
mmc0 is current device
Scanning mmc 0:1...
Found U-Boot script /boot.scr
2709 bytes read in 13 ms (203.1 KiB/s)
## Executing script at 03000000
Trying to load boot images from mmc0
5670264 bytes read in 334 ms (16.2 MiB/s)
## Loading kernel from FIT Image at 10000000 ...
   Using 'conf-system-top.dtb' configuration
   Verifying Hash Integrity ... OK
   Trying 'kernel-1' kernel subimage
     Description:  Linux kernel
     Type:         Kernel Image
     Compression:  uncompressed
     Data Start:   0x100000f8
     Data Size:    5647032 Bytes = 5.4 MiB
     Architecture: ARM
     OS:           Linux
     Load Address: 0x00200000
     Entry Point:  0x00200000
     Hash algo:    sha256
     Hash value:   8190a3d693bca4da06460265eb066437a89fc51cde33121353a61c7e5b3c00b3
   Verifying Hash Integrity ... sha256+ OK
## Loading fdt from FIT Image at 10000000 ...
   Using 'conf-system-top.dtb' configuration
   Verifying Hash Integrity ... OK
   Trying 'fdt-system-top.dtb' fdt subimage
     Description:  Flattened Device Tree blob
     Type:         Flat Device Tree
     Compression:  uncompressed
     Data Start:   0x10562cbc
     Data Size:    21333 Bytes = 20.8 KiB
     Architecture: ARM
     Hash algo:    sha256
     Hash value:   ca66dec63afe593fa1a0678fdeb7baf9ec32a32e1e7c5a0af54f577d44baec01
   Verifying Hash Integrity ... sha256+ OK
   Booting using the fdt blob at 0x10562cbc
   Loading Kernel Image
   Loading Device Tree to 2fff7000, end 2ffff354 ... OK

Starting kernel ...

[    0.000000] Booting Linux on physical CPU 0x0
[    0.000000] Linux version 5.10.0-xilinx-v2021.2 (oe-user@oe-host) (arm-xilinx-linux-gnueabi-gcc (GCC) 10.2.0, GNU ld (GNU Binutils) 2.35.1) #1 SMP PREEMPT Tue Oct 12 09:30:57 UTC 2021
[    0.000000] CPU: ARMv7 Processor [413fc090] revision 0 (ARMv7), cr=18c5387d
[    0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
[    0.000000] OF: fdt: Machine model: Bora
[    0.000000] earlycon: cdns0 at MMIO 0xe0001000 (options '115200n8')
[    0.000000] printk: bootconsole [cdns0] enabled
[    0.000000] Memory policy: Data cache writealloc
[    0.000000] cma: Reserved 16 MiB at 0x3f000000
[    0.000000] Zone ranges:
[    0.000000]   Normal   [mem 0x0000000000000000-0x000000002fffffff]
[    0.000000]   HighMem  [mem 0x0000000030000000-0x000000003fffffff]
[    0.000000] Movable zone start for each node
[    0.000000] Early memory node ranges
[    0.000000]   node   0: [mem 0x0000000000000000-0x000000003fffffff]
[    0.000000] Initmem setup node 0 [mem 0x0000000000000000-0x000000003fffffff]
[    0.000000] percpu: Embedded 20 pages/cpu s49484 r8192 d24244 u81920
[    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 260416
[    0.000000] Kernel command line: console=ttyPS0,115200 earlycon root=/dev/mmcblk0p2 rw rootwait
[    0.000000] Dentry cache hash table entries: 131072 (order: 7, 524288 bytes, linear)
[    0.000000] Inode-cache hash table entries: 65536 (order: 6, 262144 bytes, linear)
[    0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off
[    0.000000] Memory: 1007172K/1048576K available (9216K kernel code, 773K rwdata, 2352K rodata, 1024K init, 181K bss, 25020K reserved, 16384K cma-reserved, 245760K highmem)
[    0.000000] ftrace: allocating 34293 entries in 67 pages
[    0.000000] ftrace: allocated 67 pages with 3 groups
[    0.000000] rcu: Preemptible hierarchical RCU implementation.
[    0.000000] rcu: 	RCU event tracing is enabled.
[    0.000000] rcu: 	RCU restricting CPUs from NR_CPUS=4 to nr_cpu_ids=2.
[    0.000000] 	Trampoline variant of Tasks RCU enabled.
[    0.000000] 	Rude variant of Tasks RCU enabled.
[    0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 10 jiffies.
[    0.000000] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=2
[    0.000000] NR_IRQS: 16, nr_irqs: 16, preallocated irqs: 16
[    0.000000] efuse mapped to (ptrval)
[    0.000000] slcr mapped to (ptrval)
[    0.000000] GIC physical location is 0xf8f01000
[    0.000000] L2C: platform modifies aux control register: 0x72360000 -> 0x72760000
[    0.000000] L2C: DT/platform modifies aux control register: 0x72360000 -> 0x72760000
[    0.000000] L2C-310 erratum 769419 enabled
[    0.000000] L2C-310 enabling early BRESP for Cortex-A9
[    0.000000] L2C-310 full line of zeros enabled for Cortex-A9
[    0.000000] L2C-310 ID prefetch enabled, offset 1 lines
[    0.000000] L2C-310 dynamic clock gating enabled, standby mode enabled
[    0.000000] L2C-310 cache controller enabled, 8 ways, 512 kB
[    0.000000] L2C-310: CACHE_ID 0x410000c8, AUX_CTRL 0x76760001
[    0.000000] random: get_random_bytes called from start_kernel+0x308/0x4fc with crng_init=0
[    0.000000] zynq_clock_init: clkc starts at (ptrval)
[    0.000000] Zynq clock init
[    0.000012] sched_clock: 64 bits at 333MHz, resolution 3ns, wraps every 4398046511103ns
[    0.005062] clocksource: arm_global_timer: mask: 0xffffffffffffffff max_cycles: 0x4ce07af025, max_idle_ns: 440795209040 ns
[    0.015994] Switching to timer-based delay loop, resolution 3ns
[    0.022656] Console: colour dummy device 80x30
[    0.026236] Calibrating delay loop (skipped), value calculated using timer frequency.. 666.66 BogoMIPS (lpj=3333333)
[    0.036652] pid_max: default: 32768 minimum: 301
[    0.041472] Mount-cache hash table entries: 2048 (order: 1, 8192 bytes, linear)
[    0.048423] Mountpoint-cache hash table entries: 2048 (order: 1, 8192 bytes, linear)
[    0.057226] CPU: Testing write buffer coherency: ok
[    0.060867] CPU0: Spectre v2: using BPIALL workaround
[    0.066140] CPU0: thread -1, cpu 0, socket 0, mpidr 80000000
[    0.072296] Setting up static identity map for 0x100000 - 0x100060
[    0.077750] rcu: Hierarchical SRCU implementation.
[    0.083457] smp: Bringing up secondary CPUs ...
[    0.087918] CPU1: thread -1, cpu 1, socket 0, mpidr 80000001
[    0.087931] CPU1: Spectre v2: using BPIALL workaround
[    0.097504] smp: Brought up 1 node, 2 CPUs
[    0.101374] SMP: Total of 2 processors activated (1333.33 BogoMIPS).
[    0.107709] CPU: All CPU(s) started in SVC mode.
[    0.113071] devtmpfs: initialized
[    0.121279] VFP support v0.3: implementor 41 architecture 3 part 30 variant 9 rev 4
[    0.123929] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
[    0.133064] futex hash table entries: 512 (order: 3, 32768 bytes, linear)
[    0.141155] pinctrl core: initialized pinctrl subsystem
[    0.146253] NET: Registered protocol family 16
[    0.151798] DMA: preallocated 256 KiB pool for atomic coherent allocations
[    0.157633] thermal_sys: Registered thermal governor 'step_wise'
[    0.158018] cpuidle: using governor ladder
[    0.166087] cpuidle: using governor menu
[    0.184867] hw-breakpoint: found 5 (+1 reserved) breakpoint and 1 watchpoint registers.
[    0.187217] hw-breakpoint: maximum watchpoint size is 4 bytes.
[    0.193192] zynq-ocm f800c000.ocmc: ZYNQ OCM pool: 256 KiB @ 0x(ptrval)
[    0.200417] e0000000.serial: ttyPS1 at MMIO 0xe0000000 (irq = 34, base_baud = 3125000) is a xuartps
[    0.209253] e0001000.serial: ttyPS0 at MMIO 0xe0001000 (irq = 35, base_baud = 3125000) is a xuartps
[    0.223045] printk: console [ttyPS0] enabled
[    0.223045] printk: console [ttyPS0] enabled
[    0.227335] printk: bootconsole [cdns0] disabled
[    0.227335] printk: bootconsole [cdns0] disabled
[    0.254192] vgaarb: loaded
[    0.257386] SCSI subsystem initialized
[    0.261533] usbcore: registered new interface driver usbfs
[    0.267095] usbcore: registered new interface driver hub
[    0.272556] usbcore: registered new device driver usb
[    0.277873] mc: Linux media interface: v0.10
[    0.282235] videodev: Linux video capture interface: v2.00
[    0.287780] pps_core: LinuxPPS API ver. 1 registered
[    0.292776] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
[    0.301948] PTP clock support registered
[    0.305929] EDAC MC: Ver: 3.0.0
[    0.309737] FPGA manager framework
[    0.313475] Advanced Linux Sound Architecture Driver Initialized.
[    0.320772] clocksource: Switched to clocksource arm_global_timer
[    0.621812] NET: Registered protocol family 2
[    0.627041] tcp_listen_portaddr_hash hash table entries: 512 (order: 0, 6144 bytes, linear)
[    0.635484] TCP established hash table entries: 8192 (order: 3, 32768 bytes, linear)
[    0.643329] TCP bind hash table entries: 8192 (order: 4, 65536 bytes, linear)
[    0.650604] TCP: Hash tables configured (established 8192 bind 8192)
[    0.657150] UDP hash table entries: 512 (order: 2, 16384 bytes, linear)
[    0.663878] UDP-Lite hash table entries: 512 (order: 2, 16384 bytes, linear)
[    0.671222] NET: Registered protocol family 1
[    0.676423] RPC: Registered named UNIX socket transport module.
[    0.682380] RPC: Registered udp transport module.
[    0.687081] RPC: Registered tcp transport module.
[    0.691792] RPC: Registered tcp NFSv4.1 backchannel transport module.
[    0.698259] PCI: CLS 0 bytes, default 64
[    0.702818] hw perfevents: no interrupt-affinity property for /pmu@f8891000, guessing.
[    0.711061] hw perfevents: enabled with armv7_cortex_a9 PMU driver, 7 counters available
[    0.721091] workingset: timestamp_bits=14 max_order=18 bucket_order=4
[    0.728983] jffs2: version 2.2. (NAND) (SUMMARY)   2001-2006 Red Hat, Inc.
[    0.736453] bounce: pool size: 64 pages
[    0.740312] io scheduler mq-deadline registered
[    0.744867] io scheduler kyber registered
[    0.749457] zynq-pinctrl 700.pinctrl: zynq pinctrl initialized
[    0.758787] dma-pl330 f8003000.dmac: Loaded driver for PL330 DMAC-241330
[    0.765537] dma-pl330 f8003000.dmac: 	DBUFF-128x8bytes Num_Chans-8 Num_Peri-4 Num_Events-16
[    0.787999] brd: module loaded
[    0.803031] loop: module loaded
[    0.808398] spi-nor spi0.0: found s25fl256s1, expected s25fl128s1
[    0.814739] spi-nor spi0.0: s25fl256s1 (32768 Kbytes)
[    0.819830] 1 fixed-partitions partitions found on MTD device spi0.0
[    0.826227] Creating 1 MTD partitions on "spi0.0":
[    0.831020] 0x000000000000-0x000002000000 : "boot"
[    0.840168] libphy: Fixed MDIO Bus: probed
[    0.846232] CAN device driver interface
[    0.853108] libphy: MACB_mii_bus: probed
[    0.888086] macb e000b000.ethernet eth0: Cadence GEM rev 0x00020118 at 0xe000b000 irq 37 (00:50:c2:1e:af:e0)
[    0.899756] libphy: MACB_mii_bus: probed
[    0.938422] macb e000c000.ethernet eth1: Cadence GEM rev 0x00020118 at 0xe000c000 irq 38 (00:50:c2:1e:af:cd)
[    0.948644] e1000e: Intel(R) PRO/1000 Network Driver
[    0.953609] e1000e: Copyright(c) 1999 - 2015 Intel Corporation.
[    0.960596] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[    0.967154] ehci-pci: EHCI PCI platform driver
[    0.971758] usbcore: registered new interface driver usb-storage
[    0.978905] ULPI transceiver vendor/product ID 0x0424/0x0006
[    0.984563] Found SMSC USB331x ULPI transceiver.
[    0.989223] ULPI integrity check: passed.
[    0.995781] i2c /dev entries driver
[    1.003286] rtc-ds3232 0-0068: registered as rtc0
[    1.008331] rtc-ds3232 0-0068: setting system clock to 2024-01-31T19:06:40 UTC (1706728000)
[    1.017002] cdns-i2c e0004000.i2c: 400 kHz mmio e0004000 irq 31
[    1.025870] cdns-wdt f8005000.watchdog: Xilinx Watchdog Timer with timeout 10s
[    1.033522] EDAC MC: ECC not enabled
[    1.038077] cpufreq: cpufreq_online: CPU0: Running at unlisted initial frequency: 666666 KHz, changing to: 666667 KHz
[    1.049126] Xilinx Zynq CpuIdle Driver started
[    1.054242] sdhci: Secure Digital Host Controller Interface driver
[    1.060416] sdhci: Copyright(c) Pierre Ossman
[    1.064799] sdhci-pltfm: SDHCI platform and OF driver helper
[    1.071380] ledtrig-cpu: registered to indicate activity on CPUs
[    1.077765] clocksource: ttc_clocksource: mask: 0xffff max_cycles: 0xffff, max_idle_ns: 537538477 ns
[    1.087051] timer #0 at (ptrval), irq=51
[    1.091425] usbcore: registered new interface driver usbhid
[    1.097039] usbhid: USB HID core driver
[    1.100573] mmc0: SDHCI controller on e0100000.mmc [e0100000.mmc] using ADMA
[    1.104405] fpga_manager fpga0: Xilinx Zynq FPGA Manager registered
[    1.116372] NET: Registered protocol family 10
[    1.122668] Segment Routing with IPv6
[    1.126464] sit: IPv6, IPv4 and MPLS over IPv4 tunneling driver
[    1.133339] NET: Registered protocol family 17
[    1.137829] can: controller area network core
[    1.142401] NET: Registered protocol family 29
[    1.146875] can: raw protocol
[    1.149860] can: broadcast manager protocol
[    1.154111] can: netlink gateway - max_hops=1
[    1.158847] Registering SWP/SWPB emulation handler
[    1.176150] mmc0: new high speed SDHC card at address aaaa
[    1.180252] of-fpga-region fpga-full: FPGA Region probed
[    1.182729] mmcblk0: mmc0:aaaa SA16G 14.8 GiB 
[    1.192192] of_cfs_init
[    1.194759] of_cfs_init: OK
[    1.197933] ALSA device list:
[    1.201608]   No soundcards found.
[    1.208498]  mmcblk0: p1 p2
[    1.263622] random: fast init done
[    1.353219] EXT4-fs (mmcblk0p2): recovery complete
[    1.356643] EXT4-fs (mmcblk0p2): mounted filesystem with ordered data mode. Opts: (null)
[    1.360809] VFS: Mounted root (ext4 filesystem) on device 179:2.
[    1.363988] devtmpfs: mounted
[    1.371377] Freeing unused kernel memory: 1024K
[    1.373999] Run /sbin/init as init process
INIT: version 2.97 booting
[    1.764129] FAT-fs (mmcblk0p1): Volume was not properly unmounted. Some data may be corrupt. Please run fsck.
Starting udev
[    1.969022] udevd[87]: starting version 3.2.9
[    1.980915] random: udevd: uninitialized urandom read (16 bytes read)
[    1.985601] random: udevd: uninitialized urandom read (16 bytes read)
[    1.993148] random: udevd: uninitialized urandom read (16 bytes read)
[    2.041203] udevd[88]: starting eudev-3.2.9
[    2.548275] EXT4-fs (mmcblk0p2): re-mounted. Opts: (null)
bootlogd: /dev/ttyPS0INIT: Entering runlevel: 5
Configuring network interfaces... udhcpc: started, v1.32.0
udhcpc: sending discover
udhcpc: sending discover
udhcpc: sending discover
udhcpc: no lease, forking to background
done.
Starting system message bus: dbus.
Starting haveged: haveged: command socket is listening at fd 3
haveged: haveged starting up


Starting Dropbear SSH server: dropbear.
Starting rpcbind daemon...done.
starting statd: done
Starting atd: OK
Starting internet superserver: inetd.
NFS daemon support not enabled in kernel
Starting system log daemon...0
Jan 31 19:07:04 bora kernel: [    0.000000] L2C: platform modifies aux control register: 0x72360000 -> 0x72760000
Jan 31 19:07:04 bora kernel: [    0.000000] L2C: DT/platform modifies aux control register: 0x72360000 -> 0x72760000
Jan 31 19:07:04 bora kernel: [    0.702818] hw perfevents: no interrupt-affinity property for /pmu@f8891000, guessing.
Jan 31 19:07:04 bora kernel: [    0.808398] spi-nor spi0.0: found s25fl256s1, expected s25fl128s1
Jan 31 19:07:04 bora kernel: [    1.764129] FAT-fs (mmcblk0p1): Volume was not properly unmounted. Some data may be corrupt. Please run fsck.
Jan 31 19:07:04 bora kernel: [    3.551250] urandom_read: 2 callbacks suppressed
Starting internet superserver: xinetd.
Starting crond: OK
Starting tcf-agent: OK

PetaLinux 2021.2 bora ttyPS0

root@bora:~#

Bootlog for BoraX

U-Boot 2021.01-desk-xz7-l-1.0.1 (Jan 12 2024 - 10:44:15 +0000)

CPU:   Zynq 7z030
Silicon: v3.1
Model: Bora
DRAM:  ECC disabled 1 GiB
Flash: 0 Bytes
NAND:  0 MiB
MMC:   mmc@e0100000: 0
Loading Environment from FAT... *** Warning - bad CRC, using default environment

In:    serial@e0001000
Out:   serial@e0001000
Err:   serial@e0001000
SF: Detected s25fl128s with page size 256 Bytes, erase size 64 KiB, total 16 MiB
SF: Detected s25fl128s with page size 256 Bytes, erase size 64 KiB, total 16 MiB
SOM ConfigID#: 00000004
SOM UniqueID#: 2a0e92c4:03193a4b
CB ConfigID#: ffffffff
CB UniqueID#: ffffffff:ffffffff
SF: Detected s25fl128s with page size 256 Bytes, erase size 64 KiB, total 16 MiB
Warning: MAC addr not found in SPI NOR at block 8
Net:   
ZYNQ GEM: e000b000, mdio bus e000b000, phyaddr 7, interface rgmii-id

Warning: ethernet@e000b000 (eth0) using random MAC address - 4a:f2:af:92:ad:4f
eth0: ethernet@e000b000
ZYNQ GEM: e000c000, mdio bus e000c000, phyaddr 6, interface rgmii-id
, eth1: ethernet@e000c000
Hit ENTER within 2 seconds to stop autoboot
switch to partitions #0, OK
mmc0 is current device
Scanning mmc 0:1...
Found U-Boot script /boot.scr
2709 bytes read in 13 ms (203.1 KiB/s)
## Executing script at 03000000
Trying to load boot images from mmc0
5670204 bytes read in 334 ms (16.2 MiB/s)
## Loading kernel from FIT Image at 10000000 ...
   Using 'conf-system-top.dtb' configuration
   Verifying Hash Integrity ... OK
   Trying 'kernel-1' kernel subimage
     Description:  Linux kernel
     Type:         Kernel Image
     Compression:  uncompressed
     Data Start:   0x100000f8
     Data Size:    5647032 Bytes = 5.4 MiB
     Architecture: ARM
     OS:           Linux
     Load Address: 0x00200000
     Entry Point:  0x00200000
     Hash algo:    sha256
     Hash value:   8190a3d693bca4da06460265eb066437a89fc51cde33121353a61c7e5b3c00b3
   Verifying Hash Integrity ... sha256+ OK
## Loading fdt from FIT Image at 10000000 ...
   Using 'conf-system-top.dtb' configuration
   Verifying Hash Integrity ... OK
   Trying 'fdt-system-top.dtb' fdt subimage
     Description:  Flattened Device Tree blob
     Type:         Flat Device Tree
     Compression:  uncompressed
     Data Start:   0x10562cbc
     Data Size:    21273 Bytes = 20.8 KiB
     Architecture: ARM
     Hash algo:    sha256
     Hash value:   9ca6d3085c01438bbdf5f78c59d7aad243c0c70e45a58f82304870dde7be0f92
   Verifying Hash Integrity ... sha256+ OK
   Booting using the fdt blob at 0x10562cbc
   Loading Kernel Image
   Loading Device Tree to 2fff7000, end 2ffff318 ... OK

Starting kernel ...

[    0.000000] Booting Linux on physical CPU 0x0
[    0.000000] Linux version 5.10.0-xilinx-v2021.2 (oe-user@oe-host) (arm-xilinx-linux-gnueabi-gcc (GCC) 10.2.0, GNU ld (GNU Binutils) 2.35.1) #1 SMP PREEMPT Tue Oct 12 09:30:57 UTC 2021
[    0.000000] CPU: ARMv7 Processor [413fc090] revision 0 (ARMv7), cr=18c5387d
[    0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
[    0.000000] OF: fdt: Machine model: Bora
[    0.000000] earlycon: cdns0 at MMIO 0xe0001000 (options '115200n8')
[    0.000000] printk: bootconsole [cdns0] enabled
[    0.000000] Memory policy: Data cache writealloc
[    0.000000] cma: Reserved 16 MiB at 0x3f000000
[    0.000000] Zone ranges:
[    0.000000]   Normal   [mem 0x0000000000000000-0x000000002fffffff]
[    0.000000]   HighMem  [mem 0x0000000030000000-0x000000003fffffff]
[    0.000000] Movable zone start for each node
[    0.000000] Early memory node ranges
[    0.000000]   node   0: [mem 0x0000000000000000-0x000000003fffffff]
[    0.000000] Initmem setup node 0 [mem 0x0000000000000000-0x000000003fffffff]
[    0.000000] percpu: Embedded 20 pages/cpu s49484 r8192 d24244 u81920
[    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 260416
[    0.000000] Kernel command line: console=ttyPS0,115200 earlycon root=/dev/mmcblk0p2 rw rootwait
[    0.000000] Dentry cache hash table entries: 131072 (order: 7, 524288 bytes, linear)
[    0.000000] Inode-cache hash table entries: 65536 (order: 6, 262144 bytes, linear)
[    0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off
[    0.000000] Memory: 1007172K/1048576K available (9216K kernel code, 773K rwdata, 2352K rodata, 1024K init, 181K bss, 25020K reserved, 16384K cma-reserved, 245760K highmem)
[    0.000000] ftrace: allocating 34293 entries in 67 pages
[    0.000000] ftrace: allocated 67 pages with 3 groups
[    0.000000] rcu: Preemptible hierarchical RCU implementation.
[    0.000000] rcu: 	RCU event tracing is enabled.
[    0.000000] rcu: 	RCU restricting CPUs from NR_CPUS=4 to nr_cpu_ids=2.
[    0.000000] 	Trampoline variant of Tasks RCU enabled.
[    0.000000] 	Rude variant of Tasks RCU enabled.
[    0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 10 jiffies.
[    0.000000] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=2
[    0.000000] NR_IRQS: 16, nr_irqs: 16, preallocated irqs: 16
[    0.000000] efuse mapped to (ptrval)
[    0.000000] slcr mapped to (ptrval)
[    0.000000] GIC physical location is 0xf8f01000
[    0.000000] L2C: platform modifies aux control register: 0x72360000 -> 0x72760000
[    0.000000] L2C: DT/platform modifies aux control register: 0x72360000 -> 0x72760000
[    0.000000] L2C-310 erratum 769419 enabled
[    0.000000] L2C-310 enabling early BRESP for Cortex-A9
[    0.000000] L2C-310 full line of zeros enabled for Cortex-A9
[    0.000000] L2C-310 ID prefetch enabled, offset 1 lines
[    0.000000] L2C-310 dynamic clock gating enabled, standby mode enabled
[    0.000000] L2C-310 cache controller enabled, 8 ways, 512 kB
[    0.000000] L2C-310: CACHE_ID 0x410000c8, AUX_CTRL 0x76760001
[    0.000000] random: get_random_bytes called from start_kernel+0x308/0x4fc with crng_init=0
[    0.000000] zynq_clock_init: clkc starts at (ptrval)
[    0.000000] Zynq clock init
[    0.000012] sched_clock: 64 bits at 333MHz, resolution 3ns, wraps every 4398046511103ns
[    0.005050] clocksource: arm_global_timer: mask: 0xffffffffffffffff max_cycles: 0x4ce07af025, max_idle_ns: 440795209040 ns
[    0.015983] Switching to timer-based delay loop, resolution 3ns
[    0.022643] Console: colour dummy device 80x30
[    0.026224] Calibrating delay loop (skipped), value calculated using timer frequency.. 666.66 BogoMIPS (lpj=3333333)
[    0.036639] pid_max: default: 32768 minimum: 301
[    0.041458] Mount-cache hash table entries: 2048 (order: 1, 8192 bytes, linear)
[    0.048412] Mountpoint-cache hash table entries: 2048 (order: 1, 8192 bytes, linear)
[    0.057224] CPU: Testing write buffer coherency: ok
[    0.060855] CPU0: Spectre v2: using BPIALL workaround
[    0.066129] CPU0: thread -1, cpu 0, socket 0, mpidr 80000000
[    0.072288] Setting up static identity map for 0x100000 - 0x100060
[    0.077732] rcu: Hierarchical SRCU implementation.
[    0.083441] smp: Bringing up secondary CPUs ...
[    0.087904] CPU1: thread -1, cpu 1, socket 0, mpidr 80000001
[    0.087919] CPU1: Spectre v2: using BPIALL workaround
[    0.097495] smp: Brought up 1 node, 2 CPUs
[    0.101362] SMP: Total of 2 processors activated (1333.33 BogoMIPS).
[    0.107698] CPU: All CPU(s) started in SVC mode.
[    0.113055] devtmpfs: initialized
[    0.121230] VFP support v0.3: implementor 41 architecture 3 part 30 variant 9 rev 4
[    0.123884] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
[    0.133020] futex hash table entries: 512 (order: 3, 32768 bytes, linear)
[    0.141113] pinctrl core: initialized pinctrl subsystem
[    0.146212] NET: Registered protocol family 16
[    0.151748] DMA: preallocated 256 KiB pool for atomic coherent allocations
[    0.157592] thermal_sys: Registered thermal governor 'step_wise'
[    0.157987] cpuidle: using governor ladder
[    0.166042] cpuidle: using governor menu
[    0.184818] hw-breakpoint: found 5 (+1 reserved) breakpoint and 1 watchpoint registers.
[    0.187171] hw-breakpoint: maximum watchpoint size is 4 bytes.
[    0.193146] zynq-ocm f800c000.ocmc: ZYNQ OCM pool: 256 KiB @ 0x(ptrval)
[    0.200381] e0000000.serial: ttyPS1 at MMIO 0xe0000000 (irq = 34, base_baud = 3125000) is a xuartps
[    0.209208] e0001000.serial: ttyPS0 at MMIO 0xe0001000 (irq = 35, base_baud = 3125000) is a xuartps
[    0.222999] printk: console [ttyPS0] enabled
[    0.222999] printk: console [ttyPS0] enabled
[    0.227289] printk: bootconsole [cdns0] disabled
[    0.227289] printk: bootconsole [cdns0] disabled
[    0.254178] vgaarb: loaded
[    0.257373] SCSI subsystem initialized
[    0.261502] usbcore: registered new interface driver usbfs
[    0.267068] usbcore: registered new interface driver hub
[    0.272522] usbcore: registered new device driver usb
[    0.277841] mc: Linux media interface: v0.10
[    0.282197] videodev: Linux video capture interface: v2.00
[    0.287745] pps_core: LinuxPPS API ver. 1 registered
[    0.292739] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
[    0.301919] PTP clock support registered
[    0.305902] EDAC MC: Ver: 3.0.0
[    0.309711] FPGA manager framework
[    0.313447] Advanced Linux Sound Architecture Driver Initialized.
[    0.320748] clocksource: Switched to clocksource arm_global_timer
[    0.622849] NET: Registered protocol family 2
[    0.628039] tcp_listen_portaddr_hash hash table entries: 512 (order: 0, 6144 bytes, linear)
[    0.636490] TCP established hash table entries: 8192 (order: 3, 32768 bytes, linear)
[    0.644336] TCP bind hash table entries: 8192 (order: 4, 65536 bytes, linear)
[    0.651609] TCP: Hash tables configured (established 8192 bind 8192)
[    0.658151] UDP hash table entries: 512 (order: 2, 16384 bytes, linear)
[    0.664885] UDP-Lite hash table entries: 512 (order: 2, 16384 bytes, linear)
[    0.672269] NET: Registered protocol family 1
[    0.677444] RPC: Registered named UNIX socket transport module.
[    0.683401] RPC: Registered udp transport module.
[    0.688118] RPC: Registered tcp transport module.
[    0.692817] RPC: Registered tcp NFSv4.1 backchannel transport module.
[    0.699282] PCI: CLS 0 bytes, default 64
[    0.703842] hw perfevents: no interrupt-affinity property for /pmu@f8891000, guessing.
[    0.712091] hw perfevents: enabled with armv7_cortex_a9 PMU driver, 7 counters available
[    0.722139] workingset: timestamp_bits=14 max_order=18 bucket_order=4
[    0.730067] jffs2: version 2.2. (NAND) (SUMMARY)   2001-2006 Red Hat, Inc.
[    0.737527] bounce: pool size: 64 pages
[    0.741382] io scheduler mq-deadline registered
[    0.745945] io scheduler kyber registered
[    0.750527] zynq-pinctrl 700.pinctrl: zynq pinctrl initialized
[    0.759836] dma-pl330 f8003000.dmac: Loaded driver for PL330 DMAC-241330
[    0.766585] dma-pl330 f8003000.dmac: 	DBUFF-128x8bytes Num_Chans-8 Num_Peri-4 Num_Events-16
[    0.789137] brd: module loaded
[    0.804202] loop: module loaded
[    0.812318] random: fast init done
[    0.920538] spi-nor spi0.0: trying to lock already unlocked area
[    0.926567] spi-nor spi0.0: s25fl128s1 (16384 Kbytes)
[    0.940091] libphy: Fixed MDIO Bus: probed
[    0.946140] CAN device driver interface
[    0.953046] libphy: MACB_mii_bus: probed
[    0.988067] macb e000b000.ethernet eth0: Cadence GEM rev 0x00020118 at 0xe000b000 irq 37 (4a:f2:af:92:ad:4f)
[    0.999746] libphy: MACB_mii_bus: probed
[    1.038420] macb e000c000.ethernet eth1: Cadence GEM rev 0x00020118 at 0xe000c000 irq 38 (00:50:c2:1e:af:cd)
[    1.048640] e1000e: Intel(R) PRO/1000 Network Driver
[    1.053600] e1000e: Copyright(c) 1999 - 2015 Intel Corporation.
[    1.060581] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[    1.067139] ehci-pci: EHCI PCI platform driver
[    1.071742] usbcore: registered new interface driver usb-storage
[    1.078900] ULPI transceiver vendor/product ID 0x0424/0x0006
[    1.084554] Found SMSC USB331x ULPI transceiver.
[    1.089218] ULPI integrity check: passed.
[    1.094028] ci_hdrc ci_hdrc.0: EHCI Host Controller
[    1.095813] i2c /dev entries driver
[    1.099058] ci_hdrc ci_hdrc.0: new USB bus registered, assigned bus number 1
[    1.106460] rtc-ds3232 0-0068: registered as rtc0
[    1.114531] rtc-ds3232 0-0068: setting system clock to 2018-03-09T13:09:55 UTC (1520600995)
[    1.123209] cdns-i2c e0004000.i2c: 400 kHz mmio e0004000 irq 31
[    1.132126] cdns-wdt f8005000.watchdog: Xilinx Watchdog Timer with timeout 10s
[    1.137939] ci_hdrc ci_hdrc.0: USB 2.0 started, EHCI 1.00
[    1.139731] EDAC MC: ECC not enabled
[    1.145082] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 5.10
[    1.149493] cpufreq: cpufreq_online: CPU0: Running at unlisted initial frequency: 666666 KHz, changing to: 666667 KHz
[    1.156756] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    1.167647] Xilinx Zynq CpuIdle Driver started
[    1.174640] usb usb1: Product: EHCI Host Controller
[    1.179669] sdhci: Secure Digital Host Controller Interface driver
[    1.183900] usb usb1: Manufacturer: Linux 5.10.0-xilinx-v2021.2 ehci_hcd
[    1.183909] usb usb1: SerialNumber: ci_hdrc.0
[    1.184709] hub 1-0:1.0: USB hub found
[    1.190110] sdhci: Copyright(c) Pierre Ossman
[    1.190116] sdhci-pltfm: SDHCI platform and OF driver helper
[    1.215063] ledtrig-cpu: registered to indicate activity on CPUs
[    1.215135] hub 1-0:1.0: 1 port detected
[    1.221355] clocksource: ttc_clocksource: mask: 0xffff max_cycles: 0xffff, max_idle_ns: 537538477 ns
[    1.234347] timer #0 at (ptrval), irq=51
[    1.238347] mmc0: SDHCI controller on e0100000.mmc [e0100000.mmc] using ADMA
[    1.238723] usbcore: registered new interface driver usbhid
[    1.251117] usbhid: USB HID core driver
[    1.258746] fpga_manager fpga0: Xilinx Zynq FPGA Manager registered
[    1.267405] NET: Registered protocol family 10
[    1.273471] Segment Routing with IPv6
[    1.277329] sit: IPv6, IPv4 and MPLS over IPv4 tunneling driver
[    1.284302] NET: Registered protocol family 17
[    1.288757] can: controller area network core
[    1.293218] NET: Registered protocol family 29
[    1.297716] can: raw protocol
[    1.300711] can: broadcast manager protocol
[    1.304950] can: netlink gateway - max_hops=1
[    1.309769] Registering SWP/SWPB emulation handler
[    1.325712] mmc0: new high speed SDHC card at address aaaa
[    1.333074] mmcblk0: mmc0:aaaa SA16G 14.8 GiB 
[    1.336131] of-fpga-region fpga-full: FPGA Region probed
[    1.343606] of_cfs_init
[    1.346174] of_cfs_init: OK
[    1.349340] ALSA device list:
[    1.352433]  mmcblk0: p1 p2
[    1.355416]   No soundcards found.
[    1.454839] EXT4-fs (mmcblk0p2): recovery complete
[    1.458320] EXT4-fs (mmcblk0p2): mounted filesystem with ordered data mode. Opts: (null)
[    1.462467] VFS: Mounted root (ext4 filesystem) on device 179:2.
[    1.467178] devtmpfs: mounted
[    1.476048] Freeing unused kernel memory: 1024K
[    1.481011] Run /sbin/init as init process
INIT: version 2.97 booting
[    1.870432] FAT-fs (mmcblk0p1): Volume was not properly unmounted. Some data may be corrupt. Please run fsck.
Starting udev
[    2.087518] udevd[88]: starting version 3.2.9
[    2.107994] random: udevd: uninitialized urandom read (16 bytes read)
[    2.115465] random: udevd: uninitialized urandom read (16 bytes read)
[    2.123022] random: udevd: uninitialized urandom read (16 bytes read)
[    2.169975] udevd[89]: starting eudev-3.2.9
[    2.320852] usb 1-1: new high-speed USB device number 2 using ci_hdrc
[    2.531969] usb 1-1: New USB device found, idVendor=0781, idProduct=557d, bcdDevice= 1.00
[    2.540216] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[    2.547604] usb 1-1: Product: Cruzer Force
[    2.551737] usb 1-1: Manufacturer: SanDisk
[    2.555870] usb 1-1: SerialNumber: 03021401121621082422
[    2.562730] usb-storage 1-1:1.0: USB Mass Storage device detected
[    2.575582] scsi host0: usb-storage 1-1:1.0
[    2.733402] EXT4-fs (mmcblk0p2): re-mounted. Opts: (null)
bootlogd: /dev/ttyPS0INIT: Entering runlevel: 5
Configuring network interfaces... [    3.621143] usb 1-1: Get one byte OTG status failed
RTNETLINK answers: File exists
Starting system message bus: dbus.
Starting haveged: haveged: command socket is listening at fd 3
haveged: haveged starting up


Starting Dropbear SSH server: dropbear.
Starting rpcbind daemon...done.
starting statd: done
Starting atd: OK
Starting internet superserver: inetd.
NFS daemon support not enabled in kernel
Starting system log daemon...0
Mar  9 13:10:00 borax kernel: [    0.000000] L2C: platform modifies aux control register: 0x72360000 -> 0x72760000
Mar  9 13:10:00 borax kernel: [    0.000000] L2C: DT/platform modifies aux control register: 0x72360000 -> 0x72760000
Mar  9 13:10:00 borax kernel: [    0.703842] hw perfevents: no interrupt-affinity property for /pmu@f8891000, guessing.
Mar  9 13:10:00 borax kernel: [    0.920538] spi-nor spi0.0: trying to lock already unlocked area
Mar  9 13:10:00 borax kernel: [    1.870432] FAT-fs (mmcblk0p1): Volume was not properly unmounted. Some data may be corrupt. Please run fsck.
Mar  9 13:10:00 borax kernel: [    3.482859] urandom_read: 2 callbacks suppressed
Mar  9 13:10:00 borax kernel: [    3.621143] usb 1-1: Get one byte OTG status failed
Starting internet superserver: xinetd.
Starting crond: OK
Starting tcf-agent: OK

PetaLinux 2021.2 borax ttyPS0


root@borax:~#

Performance tests[edit | edit source]

To test the performances of the second Ethernet interface iperf3 based tests have been executed.

After boot your board, user need to update network configuration file, for more info see dedicate page, below there is an example

root@bora:~# cat /etc/network/interfaces
# /etc/network/interfaces -- configuration file for ifup(8), ifdown(8)

# The loopback interface
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
 address 192.168.0.89
 netmask 255.255.255.0
 gateway 192.168.0.1

auto eth1
iface eth1 inet static
 address 192.168.11.89
 netmask 255.255.255.0
 gateway 192.168.11.1
root@bora:~#
root@bora:~#

On the linux host machine user need to apply a new ethernet connection with correct subnet, for example sudo ifconfig ethX:0 192.168.11.99 and perform iperf3 application in server mode:

bash# iperf3 -s

Here are the results of the test on the two Ethernet interfaces:

root@bora:~# iperf3 -c 192.168.0.99 -f m -V
iperf 3.9
Linux bora 5.10.0-xilinx-v2021.2 #1 SMP PREEMPT Tue Oct 12 09:30:57 UTC 2021 armv7l
Control connection MSS 1448
Time: Wed, 31 Jan 2024 19:41:30 GMT
Connecting to host 192.168.0.99, port 5201
      Cookie: 4szclnvtqbc7isrylyok5ijc2i37thxxbtkg
      TCP MSS: 1448 (default)
[  5] local 192.168.0.89 port 39004 connected to 192.168.0.99 port 5201
Starting Test: protocol: TCP, 1 streams, 131072 byte blocks, omitting 0 seconds, 10 second test, tos 0
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.01   sec  82.2 MBytes   683 Mbits/sec   25    315 KBytes
[  5]   1.01-2.00   sec  84.5 MBytes   715 Mbits/sec    0    315 KBytes
[  5]   2.00-3.00   sec  86.2 MBytes   720 Mbits/sec    0    315 KBytes
[  5]   3.00-4.00   sec  83.3 MBytes   701 Mbits/sec    0    317 KBytes
[  5]   4.00-5.01   sec  85.3 MBytes   711 Mbits/sec    0    317 KBytes
[  5]   5.01-6.01   sec  84.8 MBytes   712 Mbits/sec    0    318 KBytes
[  5]   6.01-7.01   sec  86.6 MBytes   725 Mbits/sec    0    341 KBytes
[  5]   7.01-8.01   sec  86.2 MBytes   725 Mbits/sec    0    341 KBytes
[  5]   8.01-9.01   sec  86.2 MBytes   724 Mbits/sec    0    341 KBytes
[  5]   9.01-10.00  sec  86.1 MBytes   724 Mbits/sec    0    361 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
Test Complete. Summary Results:
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec   852 MBytes   714 Mbits/sec   25             sender
[  5]   0.00-9.98   sec   852 MBytes   716 Mbits/sec                  receiver
CPU Utilization: local/sender 95.9% (0.2%u/95.7%s), remote/receiver 53.8% (1.7%u/52.0%s)
snd_tcp_congestion cubic
rcv_tcp_congestion cubic

iperf Done.
root@bora:~# iperf3 -c 192.168.11.99 -f m -V
iperf 3.9
Linux bora 5.10.0-xilinx-v2021.2 #1 SMP PREEMPT Tue Oct 12 09:30:57 UTC 2021 armv7l
Control connection MSS 1448
Time: Wed, 31 Jan 2024 19:40:56 GMT
Connecting to host 192.168.11.99, port 5201
      Cookie: kziphcmivfkni7l2wvr2ep32uescp5jemjcg
      TCP MSS: 1448 (default)
[  5] local 192.168.11.89 port 45522 connected to 192.168.11.99 port 5201
Starting Test: protocol: TCP, 1 streams, 131072 byte blocks, omitting 0 seconds, 10 second test, tos 0
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.01   sec  86.1 MBytes   712 Mbits/sec    0    532 KBytes
[  5]   1.01-2.01   sec  85.0 MBytes   717 Mbits/sec    0    583 KBytes
[  5]   2.01-3.01   sec  86.0 MBytes   721 Mbits/sec   34    708 KBytes
[  5]   3.01-4.01   sec  88.8 MBytes   746 Mbits/sec    0    799 KBytes
[  5]   4.01-5.01   sec  88.4 MBytes   741 Mbits/sec    1    638 KBytes
[  5]   5.01-6.01   sec  87.4 MBytes   732 Mbits/sec    0    734 KBytes
[  5]   6.01-7.01   sec  88.8 MBytes   747 Mbits/sec    0    822 KBytes
[  5]   7.01-8.01   sec  88.8 MBytes   738 Mbits/sec    3    666 KBytes
[  5]   8.01-9.01   sec  88.8 MBytes   746 Mbits/sec    0    761 KBytes
[  5]   9.01-10.00  sec  86.5 MBytes   734 Mbits/sec    1    595 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
Test Complete. Summary Results:
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec   874 MBytes   733 Mbits/sec   39             sender
[  5]   0.00-10.00  sec   872 MBytes   731 Mbits/sec                  receiver
CPU Utilization: local/sender 90.0% (0.7%u/89.4%s), remote/receiver 27.3% (1.0%u/26.2%s)
snd_tcp_congestion cubic
rcv_tcp_congestion cubic

iperf Done.