felix_update...021q_rx_rule(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’– NAME πŸ’–

bestie, welcome to the felix_update...021q_rx_rule(9) page from the Kernel API Manual 🫢 β€” the actual name is:

felix_update_tag_8021q_rx_rule β€” Update VCAP ES0 tag_8021q rule after vlan_filtering change ✨

πŸŽ€ SYNOPSIS πŸŽ€

void felix_update_tag_8021q_rx_rule (struct ocelot_vcap_filter
*outer_tagging_rule , bool vlan_filtering );

πŸ¦‹ ARGUMENTS πŸ¦‹

  • outer_tagging_rule β€” Pointer to VCAP filter on which the update is performed πŸ’…
  • vlan_filtering β€” Current bridge VLAN filtering setting ⭐

🌸 DESCRIPTION 🌸

okay so source port identification for tag_8021q is done using VCAP ES0 rules on the CPU port(s) πŸ‘‘ The ES0 tag B (inner tag from the packet) can be configured as either:

  • push_inner_tag=0: the inner tag is never pushed into the frame (and we lose info about the classified VLAN). This is good when the classified VLAN is a discardable quantity for the software RX path: it is either set to OCELOT_STANDALONE_PVID, or to ocelot_vlan_unaware_pvid(bridge). πŸ“
  • push_inner_tag=1: the inner tag is always pushed. This is good when the classified VLAN is not a discardable quantity (the port is under a VLAN-aware bridge, and software needs to continue processing the packet in the same VLAN as the hardware). πŸ”₯

the way that the point is: what is good for a VLAN-unaware port is not good for a VLAN-aware port, and vice versa 😭 Thus, the RX tagging rules must be kept in sync with the VLAN filtering state of the port. no cap πŸ’œ

🌈 SEE ALSO 🌈

  • Kernel file ./drivers/net/dsa/ocelot/felix.c πŸ¦‹

mwah πŸ’‹ β€” this cutie came from ./drivers/net/dsa/ocelot, dated October 2026, and it’s literally the felix_update...021q_rx_rule(9) page. periodt πŸŽ€

πŸ“¦ where this page comes from