c72219b75f introduced tpacket_set_protocol that parses the Ethernet L2
header and sets skb->protocol if it's unset. It is no longer needed
since the introduction of packet_parse_headers. In case of SOCK_RAW and
unset skb->protocol, packet_parse_headers asks the driver to tell the
protocol number, and it's implemented for all Ethernet devices. As the
old function supported only Ethernet, no functionality is lost.

Signed-off-by: Maxim Mikityanskiy <maxi...@mellanox.com>
---
 net/packet/af_packet.c | 11 -----------
 1 file changed, 11 deletions(-)

diff --git a/net/packet/af_packet.c b/net/packet/af_packet.c
index cac4c1a3f807..8376bc1c1508 100644
--- a/net/packet/af_packet.c
+++ b/net/packet/af_packet.c
@@ -2413,15 +2413,6 @@ static void tpacket_destruct_skb(struct sk_buff *skb)
        sock_wfree(skb);
 }
 
-static void tpacket_set_protocol(const struct net_device *dev,
-                                struct sk_buff *skb)
-{
-       if (dev->type == ARPHRD_ETHER) {
-               skb_reset_mac_header(skb);
-               skb->protocol = eth_hdr(skb)->h_proto;
-       }
-}
-
 static int __packet_snd_vnet_parse(struct virtio_net_hdr *vnet_hdr, size_t len)
 {
        if ((vnet_hdr->flags & VIRTIO_NET_HDR_F_NEEDS_CSUM) &&
@@ -2492,8 +2483,6 @@ static int tpacket_fill_skb(struct packet_sock *po, 
struct sk_buff *skb,
                        return err;
                if (!dev_validate_header(dev, skb->data, hdrlen))
                        return -EINVAL;
-               if (!skb->protocol)
-                       tpacket_set_protocol(dev, skb);
 
                data += hdrlen;
                to_write -= hdrlen;
-- 
2.19.1

Reply via email to