Version 5 (modified by 22 months ago) ( diff ) | ,
---|
Venice Ethernet
Venice Ethernet device mapping:
Board | Connector | Silkscreen | U-Boot | Linux | MAC/Phy | Notes |
---|---|---|---|---|---|---|
GW740x | J21 | Eth#0 | eth1 | eth1 | IMX8MP EQOS RGMII GPY111 | 802.3at class5 PoE |
- | - | eth0 | eth0 | IMX8MP FEC RGMII KSZ9477 Port5 | cpu uplink | |
J22 | Eth#1 | lan1 | lan1 | KSZ9477 Port1 | Passive 8-60V PoE | |
J22 | Eth#2 | lan2 | lan2 | KSZ9477 Port2 | ||
J23 | Eth#3 | lan3 | lan3 | KSZ9477 Port3 | ||
J23 | Eth#4 | lan4 | lan4 | KSZ9477 Port4 | ||
J24 | Eth#5 | lan5 | lan5 | KSZ9477 Port5 | ||
GW730x | J20 | Eth#0 | eth0 | eth0 | IMX8MM FEC RGMII GPY111 | 802.3at class4 PoE |
J21 | Eth#1 | eth1 | eth1 / enp6s0 | PCI LAN7430 or 88E8057 | Passive 8-60V PoE | |
GW720x | J17 | eth0 | eth0 | IMX8MM FEC RGMII GPY111 | 802.3at class4 PoE | |
J17 | eth1 | eth1 / enp5s0 | PCI LAN7430 or 88E8057 | Passive 8-60V PoE | ||
GW710x | J16 | Ethernet | eth0 | eth0 | IMX8MM FEC RGMII GPY111 | Passive 8-60V PoE |
- Port ordering above is from leftmost RJ45 on board when viewing the front-panel
- If 'net.ifnames=0' kernel parameter is specified network interfaces on enumerated busses such as pci/usb are numbered sequentially (ie eth1 instead of enp6s0). See Predictable Interface Names for details
- Bootloader variable example:
u-boot=> print bootargs bootargs=net.ifnames=0 u-boot=>
- Bootloader variable example:
- For boards like the GW740x which have a multi-port GbE switch, bandwidth is shared across the downstream ports
GW740x Ethernet Notes
The GW740x has 6 RJ45's on the front panel. When looking at the board from the front with the user LED and barrel jack on the left these ports are: eth0 (IMX8MM EQOS MAC + GPY111 RGMII PHY) lan1 (KSZ9477 switch port from IMX8MM FEC MAC (eth1) CPU uplink) lan2 (KSZ9477 switch port from IMX8MM FEC MAC (eth1) CPU uplink) lan3 (KSZ9477 switch port from IMX8MM FEC MAC (eth1) CPU uplink) lan4 (KSZ9477 switch port from IMX8MM FEC MAC (eth1) CPU uplink) lan5 (KSZ9477 switch port from IMX8MM FEC MAC (eth1) CPU uplink)
In U-Boot use the 'net list' command to show the available network devices as well as the 'eth' interface name and the device name that can be used to specify the active device in U-Boot. Either name can be set to the 'ethact' env variable to specify the active device and only 1 device is active at a time for U-Boot network commands.
Note that from the CPU's perspective 'eth1' is the CPU uplink device to the KSZ9477 switch so it is never used by itself.
Example: # list network devs in U-Boot u-boot=> net list eth2 : lan1 00:d0:12:d3:f7:8e eth3 : lan2 00:d0:12:d3:f7:8f eth4 : lan3 00:d0:12:d3:f7:90 eth5 : lan4 00:d0:12:d3:f7:91 eth6 : lan5 00:d0:12:d3:f7:92 eth1 : ethernet@30be0000 00:d0:12:d3:f7:8d eth0 : ethernet@30bf0000 00:d0:12:d3:f7:8c active # specify eth0 (the 1st RJ45) (this is also the default) setenv ethact eth0 # specify lan1 (the 2nd RJ45) setenv ethact lan1 # or eth2 if you want but that is a U-Boot only name # save env if you want this to persist in U-Boot across boots saveenv
For Linux, specifically our kernel and BSP you will see the device naming above: eth0 (IMX8MM EQOS MAC + GPY111 RGMII PHY) lan1 (KSZ9477 switch port from IMX8MM FEC MAC (eth1) CPU uplink) lan2 (KSZ9477 switch port from IMX8MM FEC MAC (eth1) CPU uplink) lan3 (KSZ9477 switch port from IMX8MM FEC MAC (eth1) CPU uplink) lan4 (KSZ9477 switch port from IMX8MM FEC MAC (eth1) CPU uplink) lan5 (KSZ9477 switch port from IMX8MM FEC MAC (eth1) CPU uplink)
In Linux 5.12+ you do not need to bring up the CPU uplink port to the switch (eth1) as it will be brought up whenever any of the downstream ports are brought up. Modern Linux DSA (Distributed Switch Architecture) provides more or less full interface devices for the ports on the switch thus you can have IP configuration, VLAN etc, on the individual ports.
Additionally our BSP is pre-configured to bring up eth0 with DHCP so if you have the first RJ45 plugged into your network you should see 'eth0' properly configured for networking. If you want to use the 2nd RJ45 it would be 'lan1', etc.
For Linux here are some gory details that you should be aware of if you stray from our kernel/BSP: In Linux things can be a bit more complicated depending on if you have systemd/udev changing device names or not. Linux will register on-board network devices as 'eth%d' starting at 0 and incrementing in the order the device is registered which depends greatly on the kernel (linking order, modules vs static drivers etc) and the kernel makes NO attempt to make this consistent across reboots. Therefore there is a concept in Linux where a userspace process like systemd/udev will rename the network interfaces as they get registered to use bus/port/path specific names that are consistent across boots. This produces pretty confusing names to most users so we disable this feature in our default build by passing 'net.ifnames=0' on the kernel command line which confusing enough is not at all a kernel option but systemd/udev parses the kernel cmdline to look for this. To make things worse DSA drivers (which modern switch devices are) get their port names from device-tree so Linux will name those 'lan1', 'lan2'. And to make things really worse because the IMX8MM FEC and EQOS network devices are different MAC's (both inside the IMX8MP) they have different drivers and those drivers can register in either order so eth0/eth1 can flip around across boots. I added a kernel patch (a controversial one that will never make it upstream) to our kernel to avoid this and make them consistent.
Linux 5.12 DSA drivers will bring up the cpu port interface automatically which is why one may see eth1 up after bringing up any of the lan ports.