From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751916AbbJDUGO (ORCPT ); Sun, 4 Oct 2015 16:06:14 -0400 Received: from [212.18.48.35] ([212.18.48.35]:49909 "EHLO mta2.toshio.eu" rhost-flags-FAIL-FAIL-OK-OK) by vger.kernel.org with ESMTP id S1751679AbbJDUGM (ORCPT ); Sun, 4 Oct 2015 16:06:12 -0400 Authentication-Results: srv-fe-3.dom.ota.si (amavisd-new); dkim=pass (1024-bit key) reason="pass (just generated, assumed good)" header.d=ota.si From: Andrej Ota To: romieu@fr.zoreil.com Cc: linux-kernel@vger.kernel.org, davem@davemloft.net Subject: [PATCH] via-rhine: fix VLAN receive handling error in 4.2.x Date: Sun, 4 Oct 2015 22:05:08 +0200 In-Reply-To: <20151003214708.GA32210@electric-eye.fr.zoreil.com> References: <20151003214708.GA32210@electric-eye.fr.zoreil.com> Message-Id: <20151004200603.380C4F4DA@mta2.toshio.eu> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Fixes commit 810f19bcb862 ("via-rhine: add consistent memory barrier in vlan receive code.") which broke VLAN tag parsing on receive. Because eth_type_trans() consumes ethernet header worth of bytes, a call to read TCI from 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: 810f19bcb862 ("via-rhine: add consistent memory barrier in vlan receive code.") Signed-off-by: Andrej Ota --- drivers/net/ethernet/via/via-rhine.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/net/ethernet/via/via-rhine.c b/drivers/net/ethernet/via/via-rhine.c index a832637..2b7550c 100644 --- a/drivers/net/ethernet/via/via-rhine.c +++ b/drivers/net/ethernet/via/via-rhine.c @@ -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); -- 2.4.3