From: Nicolas Dichtel Date: Wed, 23 Aug 2023 13:41:02 +0000 (+0200) Subject: net: handle ARPHRD_PPP in dev_is_mac_header_xmit() X-Git-Tag: v6.6.17~4098^2^2~14 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=a4f39c9f14a634e4cd35fcd338c239d11fcc73fc;p=platform%2Fkernel%2Flinux-rpi.git net: handle ARPHRD_PPP in dev_is_mac_header_xmit() The goal is to support a bpf_redirect() from an ethernet device (ingress) to a ppp device (egress). The l2 header is added automatically by the ppp driver, thus the ethernet header should be removed. CC: stable@vger.kernel.org Fixes: 27b29f63058d ("bpf: add bpf_redirect() helper") Signed-off-by: Nicolas Dichtel Tested-by: Siwar Zitouni Reviewed-by: Guillaume Nault Signed-off-by: David S. Miller --- diff --git a/include/linux/if_arp.h b/include/linux/if_arp.h index 1ed5244..10a1e81 100644 --- a/include/linux/if_arp.h +++ b/include/linux/if_arp.h @@ -53,6 +53,10 @@ static inline bool dev_is_mac_header_xmit(const struct net_device *dev) case ARPHRD_NONE: case ARPHRD_RAWIP: case ARPHRD_PIMREG: + /* PPP adds its l2 header automatically in ppp_start_xmit(). + * This makes it look like an l3 device to __bpf_redirect() and tcf_mirred_init(). + */ + case ARPHRD_PPP: return false; default: return true;