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? -- Florian