[Bridge] !vlan_enabled but programs pvid

Soohoon Lee soohoon at gmail.com
Wed Oct 24 04:45:33 UTC 2018


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
>


More information about the Bridge mailing list