forked from luck/tmp_suning_uos_patched
gianfar: prevent buggy hw rx vlan tagging
On some buggy chips, "vlan tag present" flag is set which causes packet loss. Fix this by checking if rx vlan accel is enabled in features. Reported-by: Michael Guntsche <mguntsche@gmail.com> Signed-off-by: Jiri Pirko <jpirko@redhat.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
6a27cdeddf
commit
32f7fd44ce
|
@ -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 */
|
||||
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);
|
||||
|
||||
/* Send the packet up the stack */
|
||||
|
|
Loading…
Reference in New Issue
Block a user