Hello @tartarter ,
Thank you for sharing your configuration.
At first, let me list the key manuals and tools useful for configuring the SJA1105PQRS switch (available on page https://www.nxp.com/products/SJA1105PQRS
- Documentation – UM11040: Software user manual for SJA1105P/Q/R/S (static configuration tables, register map, CGU overview).
- Documentation – AH1704: SJA1105PQRS Application Hints (clocking, RGMII/RMII specifics, example CGU setups, VLAN/L2 examples).
- Software – SJA1105X Configuration Tools (SJA1105X_CONFIG‑GENTOOL): Python-based package to generate static configuration streams/HEX and examples.
Additional open-source references (Linux userspace tooling & format reference):
What is wrong in your XML
- VLAN Lookup Table
- vmemb_port = 0x1 - only port 0 is a member of the VLAN. For interconnecting ports 2–3–4, the membership mask must include those ports (0x1C). For all 5 ports, use 0x1F. (Bitmask semantics are defined in the sja1105‑tool XML format and UM11040.)
- tag_port = 0x1 - egress tagging is enabled on port 0. For “normal” untagged traffic on egress, set tag_port = 0x0.
- L2 Forwarding Table
- The per‑port entries (indexes 0…4) have bc_domain = 0x0, which blocks broadcast/flood from each ingress port to all egress ports. Correct masks are “all except self”:
- port 0 → 0x1E, port 1 → 0x1D, port 2 → 0x1B, port 3 → 0x17, port 4 → 0x0F.
- reach_port and fl_domain should match the broadcast domain when you don’t intend any isolation.
- MAC Configuration Table
- retag = 0x1 - retagging is enabled; for plain, non‑VLAN operation it is safer to disable (retag = 0x0).
- vlanid = 0x22B (assigned pvid) is inconsistent with a single untagged VLAN setup; recommend pvid = 1 on all ports if you use one untagged VLAN.
- xMII Mode Parameters
- xmii_mode = [2 2 2 2 2] (RGMII) and phy_mac = [0 0 0 0 0] configure SJA1105 ports as MAC (switch drives external PHY) in RGMII mode - this matches the typical “switch - PHY” wiring.
Note on clocks (CGU): The static configuration alone is not sufficient - CGU must be configured (RGMII TX/RX clock sinks and, if needed, IDIV/PLL). Otherwise ports may output TXC, but the datapath will not operate correctly. CGU setup is not part of the static XML; it requires programming CGU registers as described in AH1704 (and earlier AH1601).
I recommend starting with basic L2 switching using the mandatory tables and a single untagged VLAN (e.g., VLAN ID 1 with tag_port = 0x0). This approach keeps the setup simple while ensuring the switch forwards ARP and unknown unicast via broadcast/flood domains. The Python SJA1105X_CONFIG‑GENTOOL examples use table field names that are identical to those in the UM11040 documentation and correspond to the sja1105-tool XML field names. So, the python tools might help you a lot.
At this point, I cannot provide XML tables - this goes beyond the scope of our complimentary service, moreover I do not have target hardware to validate the XML before sharing.
Please note that due to the upcoming Christmas holidays and scheduled vacation, I can provide next response after New Year.
Best regards,
Pavel