Hi Florian, On Fri, 23 Aug 2019 at 19:23, Florian Fainelli <f.faine...@gmail.com> wrote: > > On 8/22/19 4:44 PM, Vladimir Oltean wrote: > > On Fri, 23 Aug 2019 at 02:43, Vivien Didelot <vivien.dide...@gmail.com> > > wrote: > >> > >> Hi Vladimir, > >> > >> On Fri, 23 Aug 2019 01:06:58 +0300, Vladimir Oltean <olte...@gmail.com> > >> wrote: > >>> Hi Vivien, > >>> > >>> On 8/22/19 11:13 PM, Vivien Didelot wrote: > >>>> Currently dsa_port_vid_add returns 0 if the switch returns -EOPNOTSUPP. > >>>> > >>>> This function is used in the tag_8021q.c code to offload the PVID of > >>>> ports, which would simply not work if .port_vlan_add is not supported > >>>> by the underlying switch. > >>>> > >>>> Do not skip -EOPNOTSUPP in dsa_port_vid_add but only when necessary, > >>>> that is to say in dsa_slave_vlan_rx_add_vid. > >>>> > >>> > >>> Do you know why Florian suppressed -EOPNOTSUPP in 061f6a505ac3 ("net: > >>> dsa: Add ndo_vlan_rx_{add, kill}_vid implementation")? > >>> I forced a return value of -EOPNOTSUPP here and when I create a VLAN > >>> sub-interface nothing breaks, it just says: > >>> RTNETLINK answers: Operation not supported > >>> which IMO is expected. > >> > >> I do not know what you mean. This patch does not change the behavior of > >> dsa_slave_vlan_rx_add_vid, which returns 0 if -EOPNOTSUPP is caught. > >> > > > > Yes, but what's wrong with just forwarding -EOPNOTSUPP? > > It makes us fail adding the VLAN to the slave network device, which > sounds silly, if we can't offload it in HW, that's fine, we can still do > a SW VLAN instead, see net/8021q/vlan_core.c::vlan_add_rx_filter_info(). > > Maybe a more correct solution is to set the NETIF_F_HW_VLAN_CTAG_FILTER > feature bit only if we have the ability to offload, now that I think > about it. Would you want me to cook a patch doing that?
sja1105 doesn't support offloading NETIF_F_HW_VLAN_CTAG_FILTER even though it does support programming VLANs. Adding an offloaded VLAN sub-interface on a standalone switch port (vlan_filtering=0, uses dsa_8021q) would make the driver insert a VLAN entry whilst the TPID is ETH_P_DSA_8021Q. Maybe just let the driver set the netdev features, similar to how it does for the number of TX queues? > -- > Florian Regards, -Vladimir