|
@@ -2710,8 +2710,13 @@ static int gfar_process_frame(struct net_device *dev, struct sk_buff *skb,
|
|
/* Tell the skb what kind of packet this is */
|
|
/* Tell the skb what kind of packet this is */
|
|
skb->protocol = eth_type_trans(skb, dev);
|
|
skb->protocol = eth_type_trans(skb, dev);
|
|
|
|
|
|
- /* Set vlan tag */
|
|
|
|
- if (fcb->flags & RXFCB_VLN)
|
|
|
|
|
|
+ /*
|
|
|
|
+ * There's need to check for NETIF_F_HW_VLAN_RX here.
|
|
|
|
+ * Even if vlan rx accel is disabled, on some chips
|
|
|
|
+ * RXFCB_VLN is pseudo randomly set.
|
|
|
|
+ */
|
|
|
|
+ if (dev->features & NETIF_F_HW_VLAN_RX &&
|
|
|
|
+ fcb->flags & RXFCB_VLN)
|
|
__vlan_hwaccel_put_tag(skb, fcb->vlctl);
|
|
__vlan_hwaccel_put_tag(skb, fcb->vlctl);
|
|
|
|
|
|
/* Send the packet up the stack */
|
|
/* Send the packet up the stack */
|