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 at lab.ntt.co.jp> 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 at
gmail.com> 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
>