Message ID | 20240830020001.79377-5-dongml2@chinatelecom.cn (mailing list archive) |
---|---|
State | Superseded |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | net: vxlan: add skb drop reasons support | expand |
From: Menglong Dong <menglong8.dong@gmail.com> Date: Fri, 30 Aug 2024 09:59:53 +0800 > 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> > --- > include/net/ip_tunnels.h | 21 +++++++++++++++------ > 1 file changed, 15 insertions(+), 6 deletions(-) > > diff --git a/include/net/ip_tunnels.h b/include/net/ip_tunnels.h > index 7fc2f7bf837a..90f8d1510a76 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,19 @@ 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; An empty newline before the return as we usually do? > +} > + > +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; This line must be aligned to skb_vlan_blah, IOW you need 7 spaces, not 1 tab here. > } > > static inline int ip_encap_hlen(struct ip_tunnel_encap *e) Thanks, Olek
On Fri, Aug 30, 2024 at 10:47 PM Alexander Lobakin <aleksander.lobakin@intel.com> wrote: > > From: Menglong Dong <menglong8.dong@gmail.com> > Date: Fri, 30 Aug 2024 09:59:53 +0800 > > > 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> > > --- > > include/net/ip_tunnels.h | 21 +++++++++++++++------ > > 1 file changed, 15 insertions(+), 6 deletions(-) > > > > diff --git a/include/net/ip_tunnels.h b/include/net/ip_tunnels.h > > index 7fc2f7bf837a..90f8d1510a76 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,19 @@ 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; > > An empty newline before the return as we usually do? > > > +} > > + > > +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; > > This line must be aligned to skb_vlan_blah, IOW you need 7 spaces, not 1 > tab here. > Okay! I'll follow your advice of the format in this series. Thanks! Menglong Dong > > } > > > > static inline int ip_encap_hlen(struct ip_tunnel_encap *e) > > Thanks, > Olek
diff --git a/include/net/ip_tunnels.h b/include/net/ip_tunnels.h index 7fc2f7bf837a..90f8d1510a76 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,19 @@ 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> --- include/net/ip_tunnels.h | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-)