|
@@ -879,11 +879,15 @@ static int be_vlan_add_vid(struct net_device *netdev, u16 vid)
|
|
|
struct be_adapter *adapter = netdev_priv(netdev);
|
|
|
int status = 0;
|
|
|
|
|
|
- if (!be_physfn(adapter)) {
|
|
|
+ if (!lancer_chip(adapter) && !be_physfn(adapter)) {
|
|
|
status = -EINVAL;
|
|
|
goto ret;
|
|
|
}
|
|
|
|
|
|
+ /* Packets with VID 0 are always received by Lancer by default */
|
|
|
+ if (lancer_chip(adapter) && vid == 0)
|
|
|
+ goto ret;
|
|
|
+
|
|
|
adapter->vlan_tag[vid] = 1;
|
|
|
if (adapter->vlans_added <= (adapter->max_vlans + 1))
|
|
|
status = be_vid_config(adapter);
|
|
@@ -901,11 +905,15 @@ static int be_vlan_rem_vid(struct net_device *netdev, u16 vid)
|
|
|
struct be_adapter *adapter = netdev_priv(netdev);
|
|
|
int status = 0;
|
|
|
|
|
|
- if (!be_physfn(adapter)) {
|
|
|
+ if (!lancer_chip(adapter) && !be_physfn(adapter)) {
|
|
|
status = -EINVAL;
|
|
|
goto ret;
|
|
|
}
|
|
|
|
|
|
+ /* Packets with VID 0 are always received by Lancer by default */
|
|
|
+ if (lancer_chip(adapter) && vid == 0)
|
|
|
+ goto ret;
|
|
|
+
|
|
|
adapter->vlan_tag[vid] = 0;
|
|
|
if (adapter->vlans_added <= adapter->max_vlans)
|
|
|
status = be_vid_config(adapter);
|