From patchwork Mon Mar 9 16:55:53 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Grzeschik X-Patchwork-Id: 448107 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id E504E14012F for ; Tue, 10 Mar 2015 03:56:14 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752812AbbCIQ4K (ORCPT ); Mon, 9 Mar 2015 12:56:10 -0400 Received: from metis.ext.pengutronix.de ([92.198.50.35]:36501 "EHLO metis.ext.pengutronix.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751400AbbCIQ4I (ORCPT ); Mon, 9 Mar 2015 12:56:08 -0400 Received: from dude.hi.pengutronix.de ([2001:67c:670:100:1d::7]) by metis.ext.pengutronix.de with esmtp (Exim 4.72) (envelope-from ) id 1YV0yJ-0000ib-Be; Mon, 09 Mar 2015 17:56:03 +0100 Received: from mgr by dude.hi.pengutronix.de with local (Exim 4.84) (envelope-from ) id 1YV0yI-0003qg-To; Mon, 09 Mar 2015 17:56:02 +0100 From: Michael Grzeschik To: B38611@freescale.com Cc: davem@davemloft.net, Frank.Li@freescale.com, netdev@vger.kernel.org, kernel@pengutronix.de Subject: [PATCH] net: fec: fix rxvlan feature Date: Mon, 9 Mar 2015 17:55:53 +0100 Message-Id: <1425920153-13319-1-git-send-email-m.grzeschik@pengutronix.de> X-Mailer: git-send-email 2.1.4 X-SA-Exim-Connect-IP: 2001:67c:670:100:1d::7 X-SA-Exim-Mail-From: mgr@pengutronix.de X-SA-Exim-Scanned: No (on metis.ext.pengutronix.de); SAEximRunCond expanded to false X-PTX-Original-Recipient: netdev@vger.kernel.org Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org The patch 1b7bde6d659d30f171259cc2dfba8e5dab34e735 "net: fec: implement rx_copybreak to improve rx performance" changed the code path for the vlan check in fec_enet_rx_queue: @@ -1417,62 +1486,48 @@ fec_enet_rx_queue(struct net_device *ndev, int budget, u16 queue_id) /* If this is a VLAN packet remove the VLAN Tag */ vlan_packet_rcvd = false; if ((ndev->features & NETIF_F_HW_VLAN_CTAG_RX) && fep->bufdesc_ex && (ebdp->cbd_esc & BD_ENET_RX_VLAN)) { /* Push and remove the vlan tag */ struct vlan_hdr *vlan_header = (struct vlan_hdr *) (data + ETH_HLEN); vlan_tag = ntohs(vlan_header->h_vlan_TCI); - pkt_len -= VLAN_HLEN; vlan_packet_rcvd = true; + + skb_copy_to_linear_data_offset(skb, VLAN_HLEN, + data, (2 * ETH_ALEN)); + skb_pull(skb, VLAN_HLEN); } With the call of skb_copy_to_linear_data_offset the code here is doing more than previously and is breaking the rxvlan feature. This patch removes this call to fix it. Signed-off-by: Michael Grzeschik --- drivers/net/ethernet/freescale/fec_main.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/drivers/net/ethernet/freescale/fec_main.c b/drivers/net/ethernet/freescale/fec_main.c index 9bb6220..77dd539 100644 --- a/drivers/net/ethernet/freescale/fec_main.c +++ b/drivers/net/ethernet/freescale/fec_main.c @@ -1479,8 +1479,6 @@ fec_enet_rx_queue(struct net_device *ndev, int budget, u16 queue_id) vlan_packet_rcvd = true; - skb_copy_to_linear_data_offset(skb, VLAN_HLEN, - data, (2 * ETH_ALEN)); skb_pull(skb, VLAN_HLEN); }