I think NETIF_F_HW_VLAN_CTAG_FILTER is hardcoded in ixgbevf. ixgbevf_probe() netdev->features |= NETIF_F_HW_VLAN_CTAG_FILTER | Like I said in the second email, vlan support was disabled in host/ixgbe driver. I wonder if there's any mechanism to find whether vlan is enabled in the host/ixgbe from ixgbevf. Otherwise it has to try vlan setting and see if it fails or not to set/clear NETIF_F_HW_VLAN_CTAG_FILTER flag. On Wed, Oct 24, 2018 at 12:07 AM Toshiaki Makita <makita.toshiaki@xxxxxxxxxxxxx> wrote: > > On 2018/10/24 7:15, Soohoon Lee wrote: > > It's reproduced in XEN environment. > > And found that vlan support is disabled in ixgbe driver. > > > > So then my question again is what does vlan_enabled flag do? > > If vlan_enabled == 0 then the bridge driver shouldn't do any vlan thing? > > As I told you yesterday off-list, the problem looks like that ixgbevf is > advertising NETIF_F_HW_VLAN_CTAG_FILTER when it cannot do it. > > > > On Tue, Oct 23, 2018 at 11:22 AM Soohoon Lee <soohoon@xxxxxxxxx> wrote: > >> > >> Hi, I'm a bridge newbie. > >> > >> I found that vlan_enabled is 0 by default but the bridge still > >> programs PVID and it rejects adding interface if programming PVID > >> fails. > >> > >> I got this symptom since CentOS/RHEL 7.4 and this change is making the > >> difference. > >> > >> br_vlan.c: > >>> - if (p && p->br->vlan_enabled)) { > >>> + if (p) { > >> err = vlan_vid_add(dev, br->vlan_proto, vid); > >> > >> more details about the environment is > >> > >> AWS m4.xlarge with ixgbevf. > >> ixgbevf failed in this function when it tries to program PVID. > >> > >> drivers/net/ethernet/intel/ixgbevf/vf.c: > >> static s32 ixgbevf_set_vfta_vf(struct ixgbe_hw *hw, u32 vlan, u32 vind, > >> ... > >> err = ixgbevf_write_msg_read_ack(hw, msgbuf, msgbuf, > >> sizeof(msgbuf) / sizeof(u32)); > >> ... > >> if (msgbuf[0] != (IXGBE_VF_SET_VLAN | IXGBE_VT_MSGTYPE_ACK)) > >> > >> the msbuf has NACK in it. > >> > >> What would be a good fix for this? > >> > >> Thanks > >> Soohoon > > > > > > -- > Toshiaki Makita >