2013/2/2 Michał Mirosław <mirqus@xxxxxxxxx>: > 2013/2/1 Vlad Yasevich <vyasevic@xxxxxxxxxx>: >> A user may designate a certain vlan as PVID. This means that >> any ingress frame that does not contain a vlan tag is assigned to >> this vlan and any forwarding decisions are made with this vlan in mind. > [...] >> struct net_port_vlans { >> u16 port_idx; >> + u16 pvid; > > I'm confused about the implementation. I would expect pvid field in > net_bridge_port and adding a tag if it isn't there on ingress path. > The rest would be just like without PVIDs. But here you pvid field to > net_port_vlans, and don't do anything with it in receive nor transmit > path. Does it work? What am I missing? Found the answer in next patch (you should merge #5 and #6). Still, the implementation looks overly complicated. If you force the packet to canonical form on ingress (keeping outer tag in skb->vlan_tci, and setting skb->vlan_tci = pvid if there is no tag) the code should get simpler. Best Regards, Michał Mirosław