1. Environment
Platform: S32G3
Software:
* NXP RTD: SW32G_RTD_4.4_5.0.0_QLP04
* PFE firmware: 1.12.0
* Tool: libfci_cli
PFE is running in VLAN_BRIDGE mode.
---
2. Goal
I want to keep all external traffic untagged, while implementing port-based VLAN isolation only inside the PFE.
Desired behavior:
```
emac0 ↔ hif0 (internal VLAN 10)
emac1 ↔ hif1 (internal VLAN 20)
emac2 ↔ hif2 (internal VLAN 30)
```
That is,
* External PCs send/receive frames without VLAN tags
* VLAN is used only internally in the PFE for port-based traffic separation
* The purpose is to prevent unnecessary broadcast/flooding in a master/slave architecture
---
3. Current configuration
VLAN and Bridge Domain are configured as follows.
Key commands:
```sh
# Bridge Domain and interface configuration
libfci_cli bd-add --vlan 10
libfci_cli bd-add --vlan 20
libfci_cli bd-add --vlan 30
libfci_cli bd-update --vlan 10 --ucast-hit FORWARD --ucast-miss FLOOD --mcast-hit FORWARD --mcast-miss FLOOD
libfci_cli bd-update --vlan 20 --ucast-hit FORWARD --ucast-miss FLOOD --mcast-hit FORWARD --mcast-miss FLOOD
libfci_cli bd-update --vlan 30 --ucast-hit FORWARD --ucast-miss FLOOD --mcast-hit FORWARD --mcast-miss FLOOD
libfci_cli bd-insif --vlan 10 --i hif0 --tag OFF
libfci_cli bd-insif --vlan 10 --i emac0 --tag OFF
libfci_cli bd-insif --vlan 20 --i hif1 --tag OFF
libfci_cli bd-insif --vlan 20 --i emac1 --tag OFF
libfci_cli bd-insif --vlan 30 --i hif2 --tag OFF
libfci_cli bd-insif --vlan 30 --i emac2 --tag OFF
# PHY interface mode configuration
libfci_cli phyif-update --i emac0 -E --promisc OFF --mode VLAN_BRIDGE
libfci_cli phyif-update --i emac1 -E --promisc OFF --mode VLAN_BRIDGE
libfci_cli phyif-update --i emac2 -E --promisc OFF --mode VLAN_BRIDGE
libfci_cli phyif-update --i hif0 -E --promisc OFF --mode VLAN_BRIDGE
libfci_cli phyif-update --i hif1 -E --promisc OFF --mode VLAN_BRIDGE
libfci_cli phyif-update --i hif2 -E --promisc ON --mode VLAN_BRIDGE
libfci_cli bd-stent-add --vlan 10 --mac <MAC Address> --i hif0
libfci_cli bd-stent-update --vlan 10 --mac <MAC Address> --egress hif0
libfci_cli bd-stent-add --vlan 20 --mac <MAC Address> --i hif1
libfci_cli bd-stent-update --vlan 20 --mac <MAC Address> --egress hif1
libfci_cli bd-stent-add --vlan 30 --mac <MAC Address> --i hif2
libfci_cli bd-stent-update --vlan 30 --mac <MAC Address> --egress hif2
```
In summary:
- emac/hif pairs are assigned to each VLAN (10/20/30)
- All traffic is untagged externally
- VLAN is used only internally for separation
4. Problem
When untagged frames arrive from outside (e.g., PC → ping), the ingress counter for each domain remains zero.
```
domain 10 ingress: 0
domain 10 ingress: 0
domain 20 ingress: 0
```
That is, untagged frames are not mapped to internal VLANs, so the intended port-based separation does not work.
# libfci_cli bd-print
domain 01 [default]
phyifs (tagged) : ---
phyifs (untagged) : ---
ucast-hit action : 3 (DISCARD)
ucast-miss action : 3 (DISCARD)
mcast-hit action : 3 (DISCARD)
mcast-miss action : 3 (DISCARD)
ingress : 4173
ingress bytes : 560619
egress : 958
egress bytes : 234538
domain 00 [fallback]
phyifs (tagged) : ---
phyifs (untagged) : ---
ucast-hit action : 3 (DISCARD)
ucast-miss action : 3 (DISCARD)
mcast-hit action : 3 (DISCARD)
mcast-miss action : 3 (DISCARD)
ingress : 0
ingress bytes : 0
egress : 0
egress bytes : 0
domain 10
phyifs (tagged) : ---
phyifs (untagged) : emac0,hif0
ucast-hit action : 0 (FORWARD)
ucast-miss action : 1 (FLOOD)
mcast-hit action : 0 (FORWARD)
mcast-miss action : 1 (FLOOD)
ingress : 0
ingress bytes : 0
egress : 0
egress bytes : 0
domain 20
phyifs (tagged) : ---
phyifs (untagged) : emac1,hif1
ucast-hit action : 0 (FORWARD)
ucast-miss action : 1 (FLOOD)
mcast-hit action : 0 (FORWARD)
mcast-miss action : 1 (FLOOD)
ingress : 0
ingress bytes : 0
egress : 0
egress bytes : 0
domain 30
phyifs (tagged) : ---
phyifs (untagged) : emac2,hif2
ucast-hit action : 0 (FORWARD)
ucast-miss action : 1 (FLOOD)
mcast-hit action : 0 (FORWARD)
mcast-miss action : 1 (FLOOD)
ingress : 0
ingress bytes : 0
egress : 0
egress bytes : 0
Command successfully executed.
---
5. Question
Is it possible to keep external traffic untagged, and achieve VLAN-based isolation only inside the PFE?
* Map untagged ingress frames to a specific VLAN per port (PVID function)
* VLAN is used only inside the PFE
* External devices operate without VLAN tags
In other words,
```
ingress (untagged) → VLAN 10 -> egress (untagged)
ingress (untagged) → VLAN 20 -> egress (untagged)
ingress (untagged) → VLAN 30 -> egress (untagged)
```
is the desired behavior.
1. Does the PFE support port-based VLAN?
2. If yes, which firmware feature or configuration enables it?
3. Is it related to the vlan_conf or ingress_vlan features shown in fwfeat-print?