Skip to content
  • Michal Schmidt's avatar
    bnx2x: allow adding VLANs while interface is down · a02cc9d3
    Michal Schmidt authored
    Since implementing VLAN filtering in commit 05cc5a39
    
    
    ("bnx2x: add vlan filtering offload") bnx2x refuses to add a VLAN while
    the interface is down:
    
      # ip link add link enp3s0f0 enp3s0f0_10 type vlan id 10
      RTNETLINK answers: Bad address
    
    and in dmesg (with bnx2x.debug=0x20):
      bnx2x: [bnx2x_vlan_rx_add_vid:12941(enp3s0f0)]Ignoring VLAN
      configuration the interface is down
    
    Other drivers have no problem with this.
    Fix this peculiar behavior in the following way:
     - Accept requests to add/kill VID regardless of the device state.
       Maintain the requested list of VIDs in the bp->vlan_reg list.
     - If the device is up, try to configure the VID list into the hardware.
       If we run out of VLAN credits or encounter a failure configuring an
       entry, fall back to accepting all VLANs.
       If we successfully configure all entries from the list, turn the
       fallback off.
     - Use the same code for reconfiguring VLANs during NIC load.
    
    Signed-off-by: default avatarMichal Schmidt <mschmidt@redhat.com>
    Acked-by: default avatarYuval Mintz <Yuval.Mintz@qlogic.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    a02cc9d3