[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <1425983442-21302-1-git-send-email-b38611@freescale.com>
Date: Tue, 10 Mar 2015 18:30:42 +0800
From: Fugang Duan <b38611@...escale.com>
To: <m.grzeschik@...gutronix.de>, <davem@...emloft.net>
CC: <netdev@...r.kernel.org>, <kernel@...gutronix.de>,
<b38611@...escale.com>
Subject: [PATCH] net: fec: fix receive VLAN CTAG HW acceleration issue
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 <m.grzeschik@...gutronix.de>
Signed-off-by: Fugang Duan <B38611@...escale.com>
---
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
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists