net: core: use eth_type_vlan in __netif_receive_skb_core
authorMenglong Dong <dong.menglong@zte.com.cn>
Mon, 11 Jan 2021 10:42:21 +0000 (02:42 -0800)
committerJakub Kicinski <kuba@kernel.org>
Thu, 14 Jan 2021 03:08:54 +0000 (19:08 -0800)
Replace the check for ETH_P_8021Q and ETH_P_8021AD in
__netif_receive_skb_core with eth_type_vlan.

Signed-off-by: Menglong Dong <dong.menglong@zte.com.cn>
Link: https://lore.kernel.org/r/20210111104221.3451-1-dong.menglong@zte.com.cn
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
net/core/dev.c

index e4d77c8..267c4a8 100644 (file)
@@ -5151,8 +5151,7 @@ another_round:
                skb_reset_mac_len(skb);
        }
 
-       if (skb->protocol == cpu_to_be16(ETH_P_8021Q) ||
-           skb->protocol == cpu_to_be16(ETH_P_8021AD)) {
+       if (eth_type_vlan(skb->protocol)) {
                skb = skb_vlan_untag(skb);
                if (unlikely(!skb))
                        goto out;
@@ -5236,8 +5235,7 @@ check_vlan_id:
                         * find vlan device.
                         */
                        skb->pkt_type = PACKET_OTHERHOST;
-               } else if (skb->protocol == cpu_to_be16(ETH_P_8021Q) ||
-                          skb->protocol == cpu_to_be16(ETH_P_8021AD)) {
+               } else if (eth_type_vlan(skb->protocol)) {
                        /* Outer header is 802.1P with vlan 0, inner header is
                         * 802.1Q or 802.1AD and vlan_do_receive() above could
                         * not find vlan dev for vlan id 0.