diff options
author | Russell King <rmk+kernel@arm.linux.org.uk> | 2014-03-12 17:45:57 +0000 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2014-10-17 14:35:48 +0100 |
commit | e8d8ba2f37b2f4fdf10e690e7e07ee9ff164e857 (patch) | |
tree | 4c5c03ad3823d5711c130fd1843b6cbdad882629 /drivers/net/ethernet/freescale/fec_main.c | |
parent | 932e908a07bb584119b7aee4280b95adf415f246 (diff) |
net:fec: extract and record vlan tag receive processing in one place
Rather than having the vlan tag processing scattered in multiple
different places, we can now localize the reading of the tag with
storing the tag in the skb. Group this code together.
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'drivers/net/ethernet/freescale/fec_main.c')
-rw-r--r-- | drivers/net/ethernet/freescale/fec_main.c | 14 |
1 files changed, 5 insertions, 9 deletions
diff --git a/drivers/net/ethernet/freescale/fec_main.c b/drivers/net/ethernet/freescale/fec_main.c index 791d6f519256..ab10480718a8 100644 --- a/drivers/net/ethernet/freescale/fec_main.c +++ b/drivers/net/ethernet/freescale/fec_main.c @@ -977,7 +977,6 @@ fec_enet_rx(struct net_device *ndev, int budget) ushort pkt_len; __u8 *data; int pkt_received = 0; - u16 vlan_tag; unsigned int index = fep->rx_next; #ifdef CONFIG_M532x @@ -1084,9 +1083,12 @@ fec_enet_rx(struct net_device *ndev, int budget) /* If this is a VLAN packet remove the VLAN Tag */ if (cbd_esc & BD_ENET_RX_VLAN) { /* Push and remove the vlan tag */ - struct vlan_hdr *vlan_header = + struct vlan_hdr *vlan = (struct vlan_hdr *) (data + ETH_HLEN); - vlan_tag = ntohs(vlan_header->h_vlan_TCI); + + __vlan_hwaccel_put_tag(skb, + htons(ETH_P_8021Q), + ntohs(vlan->h_vlan_TCI)); } { @@ -1118,12 +1120,6 @@ fec_enet_rx(struct net_device *ndev, int budget) } } - /* Handle received VLAN packets */ - if (cbd_esc & BD_ENET_RX_VLAN) - __vlan_hwaccel_put_tag(skb, - htons(ETH_P_8021Q), - vlan_tag); - napi_gro_receive(&fep->napi, skb); } |