Message ID | 20241001073225.807419-4-dongml2@chinatelecom.cn (mailing list archive) |
---|---|
State | Superseded |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | net: vxlan: add skb drop reasons support | expand |
On Tue, Oct 01, 2024 at 03:32:16PM +0800, Menglong Dong wrote: > Introduce the function skb_vlan_inet_prepare_reason() and make > skb_vlan_inet_prepare an inline call to it. The drop reasons of it just > come from pskb_may_pull_reason. > > Signed-off-by: Menglong Dong <dongml2@chinatelecom.cn> Reviewed-by: Simon Horman <horms@kernel.org>
On Tue, 1 Oct 2024 15:32:16 +0800 Menglong Dong wrote: > -static inline bool skb_vlan_inet_prepare(struct sk_buff *skb, > - bool inner_proto_inherit) > +static inline enum skb_drop_reason > +skb_vlan_inet_prepare_reason(struct sk_buff *skb, bool inner_proto_inherit) this only has 5 callers, please convert them to expect a drop reason to be returned instead of adding a compatibility wrapper
On Sat, Oct 5, 2024 at 12:43 AM Jakub Kicinski <kuba@kernel.org> wrote: > > On Tue, 1 Oct 2024 15:32:16 +0800 Menglong Dong wrote: > > -static inline bool skb_vlan_inet_prepare(struct sk_buff *skb, > > - bool inner_proto_inherit) > > +static inline enum skb_drop_reason > > +skb_vlan_inet_prepare_reason(struct sk_buff *skb, bool inner_proto_inherit) > > this only has 5 callers, please convert them to expect a drop > reason to be returned instead of adding a compatibility wrapper Okay! > -- > pw-bot: cr
diff --git a/include/net/ip_tunnels.h b/include/net/ip_tunnels.h index 7fc2f7bf837a..d00d8835e789 100644 --- a/include/net/ip_tunnels.h +++ b/include/net/ip_tunnels.h @@ -465,13 +465,14 @@ static inline bool pskb_inet_may_pull(struct sk_buff *skb) return pskb_inet_may_pull_reason(skb) == SKB_NOT_DROPPED_YET; } -/* Variant of pskb_inet_may_pull(). +/* Variant of pskb_inet_may_pull_reason(). */ -static inline bool skb_vlan_inet_prepare(struct sk_buff *skb, - bool inner_proto_inherit) +static inline enum skb_drop_reason +skb_vlan_inet_prepare_reason(struct sk_buff *skb, bool inner_proto_inherit) { int nhlen = 0, maclen = inner_proto_inherit ? 0 : ETH_HLEN; __be16 type = skb->protocol; + enum skb_drop_reason reason; /* Essentially this is skb_protocol(skb, true) * And we get MAC len. @@ -492,11 +493,20 @@ static inline bool skb_vlan_inet_prepare(struct sk_buff *skb, /* For ETH_P_IPV6/ETH_P_IP we make sure to pull * a base network header in skb->head. */ - if (!pskb_may_pull(skb, maclen + nhlen)) - return false; + reason = pskb_may_pull_reason(skb, maclen + nhlen); + if (reason) + return reason; skb_set_network_header(skb, maclen); - return true; + + return SKB_NOT_DROPPED_YET; +} + +static inline bool skb_vlan_inet_prepare(struct sk_buff *skb, + bool inner_proto_inherit) +{ + return skb_vlan_inet_prepare_reason(skb, inner_proto_inherit) == + SKB_NOT_DROPPED_YET; } static inline int ip_encap_hlen(struct ip_tunnel_encap *e)
Introduce the function skb_vlan_inet_prepare_reason() and make skb_vlan_inet_prepare an inline call to it. The drop reasons of it just come from pskb_may_pull_reason. Signed-off-by: Menglong Dong <dongml2@chinatelecom.cn> --- v3: - fix some format problems, as Alexander advised --- include/net/ip_tunnels.h | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-)