|
@@ -451,7 +451,8 @@ static struct ehea_cqe *ehea_proc_rwqes(struct net_device *dev,
|
|
|
processed_rq3++;
|
|
|
}
|
|
|
|
|
|
- if (cqe->status & EHEA_CQE_VLAN_TAG_XTRACT)
|
|
|
+ if ((cqe->status & EHEA_CQE_VLAN_TAG_XTRACT)
|
|
|
+ && port->vgrp)
|
|
|
vlan_hwaccel_receive_skb(skb, port->vgrp,
|
|
|
cqe->vlan_tag);
|
|
|
else
|
|
@@ -1910,10 +1911,7 @@ static void ehea_vlan_rx_register(struct net_device *dev,
|
|
|
goto out;
|
|
|
}
|
|
|
|
|
|
- if (grp)
|
|
|
- memset(cb1->vlan_filter, 0, sizeof(cb1->vlan_filter));
|
|
|
- else
|
|
|
- memset(cb1->vlan_filter, 0xFF, sizeof(cb1->vlan_filter));
|
|
|
+ memset(cb1->vlan_filter, 0, sizeof(cb1->vlan_filter));
|
|
|
|
|
|
hret = ehea_h_modify_ehea_port(adapter->handle, port->logical_port_id,
|
|
|
H_PORT_CB1, H_PORT_CB1_ALL, cb1);
|
|
@@ -1947,7 +1945,7 @@ static void ehea_vlan_rx_add_vid(struct net_device *dev, unsigned short vid)
|
|
|
}
|
|
|
|
|
|
index = (vid / 64);
|
|
|
- cb1->vlan_filter[index] |= ((u64)(1 << (vid & 0x3F)));
|
|
|
+ cb1->vlan_filter[index] |= ((u64)(0x8000000000000000 >> (vid & 0x3F)));
|
|
|
|
|
|
hret = ehea_h_modify_ehea_port(adapter->handle, port->logical_port_id,
|
|
|
H_PORT_CB1, H_PORT_CB1_ALL, cb1);
|
|
@@ -1982,7 +1980,7 @@ static void ehea_vlan_rx_kill_vid(struct net_device *dev, unsigned short vid)
|
|
|
}
|
|
|
|
|
|
index = (vid / 64);
|
|
|
- cb1->vlan_filter[index] &= ~((u64)(1 << (vid & 0x3F)));
|
|
|
+ cb1->vlan_filter[index] &= ~((u64)(0x8000000000000000 >> (vid & 0x3F)));
|
|
|
|
|
|
hret = ehea_h_modify_ehea_port(adapter->handle, port->logical_port_id,
|
|
|
H_PORT_CB1, H_PORT_CB1_ALL, cb1);
|