From mboxrd@z Thu Jan 1 00:00:00 1970 From: Fugang Duan Subject: [PATCH] net: fec: fix receive VLAN CTAG HW acceleration issue Date: Tue, 10 Mar 2015 18:30:42 +0800 Message-ID: <1425983442-21302-1-git-send-email-b38611@freescale.com> Mime-Version: 1.0 Content-Type: text/plain Cc: , , To: , Return-path: Received: from mail-bn1on0147.outbound.protection.outlook.com ([157.56.110.147]:42777 "EHLO na01-bn1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751026AbbCJKgk (ORCPT ); Tue, 10 Mar 2015 06:36:40 -0400 Sender: netdev-owner@vger.kernel.org List-ID: The current driver support receive VLAN CTAG HW acceleration feature (NETIF_F_HW_VLAN_CTAG_RX) through software simulation. There calls the api .skb_copy_to_linear_data_offset() to skip the VLAN tag, but there have overlap between the two memory data point range. The patch just fix the issue. Reported-by: Michael Grzeschik Signed-off-by: Fugang Duan --- drivers/net/ethernet/freescale/fec_main.c | 4 +++- 1 files changed, 3 insertions(+), 1 deletions(-) diff --git a/drivers/net/ethernet/freescale/fec_main.c b/drivers/net/ethernet/freescale/fec_main.c index 9bb6220..c9b1dbb 100644 --- a/drivers/net/ethernet/freescale/fec_main.c +++ b/drivers/net/ethernet/freescale/fec_main.c @@ -1475,12 +1475,14 @@ fec_enet_rx_queue(struct net_device *ndev, int budget, u16 queue_id) /* Push and remove the vlan tag */ struct vlan_hdr *vlan_header = (struct vlan_hdr *) (data + ETH_HLEN); + unsigned char eth_hdr[12]; vlan_tag = ntohs(vlan_header->h_vlan_TCI); vlan_packet_rcvd = true; + memcpy(eth_hdr, data, 2 * ETH_ALEN); skb_copy_to_linear_data_offset(skb, VLAN_HLEN, - data, (2 * ETH_ALEN)); + eth_hdr, (2 * ETH_ALEN)); skb_pull(skb, VLAN_HLEN); } -- 1.7.8