Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -2134,10 +2134,11 @@ static int rhine_rx(struct net_device *dev, int limit)
			}

			skb_put(skb, pkt_len);
			skb->protocol = eth_type_trans(skb, dev);

			rhine_rx_vlan_tag(skb, desc, data_size);

			skb->protocol = eth_type_trans(skb, dev);

			netif_receive_skb(skb);

			u64_stats_update_begin(&rp->rx_stats.syncp);