Commit 5f715c09 authored by Andrej Ota's avatar Andrej Ota Committed by David S. Miller

via-rhine: fix VLAN receive handling regression.

Because eth_type_trans() consumes ethernet header worth of bytes, a call
to read TCI from end of packet using rhine_rx_vlan_tag() no longer works
as it's reading from an invalid offset.

Tested to be working on PCEngines Alix board.

Fixes: 810f19bc ("via-rhine: add consistent memory barrier in vlan receive code.")
Signed-off-by: default avatarAndrej Ota <andrej@ota.si>
Acked-by: default avatarFrancois Romieu <romieu@fr.zoreil.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 7de88271
...@@ -2134,10 +2134,11 @@ static int rhine_rx(struct net_device *dev, int limit) ...@@ -2134,10 +2134,11 @@ static int rhine_rx(struct net_device *dev, int limit)
} }
skb_put(skb, pkt_len); skb_put(skb, pkt_len);
skb->protocol = eth_type_trans(skb, dev);
rhine_rx_vlan_tag(skb, desc, data_size); rhine_rx_vlan_tag(skb, desc, data_size);
skb->protocol = eth_type_trans(skb, dev);
netif_receive_skb(skb); netif_receive_skb(skb);
u64_stats_update_begin(&rp->rx_stats.syncp); u64_stats_update_begin(&rp->rx_stats.syncp);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment