On Tue, 22 Sep 2026 16:54:44 +0800 Hangbin Liu <[email protected]> wrote:
Hi Hangbin, please see below. > From: Hangbin Liu <[email protected]> > > Previously End.X only supported NEXT-C-SID, with a plain fallback to > input_action_end_x_core(). Add PSP End.X processing by reusing > end_flv8986_core(). > > Add SEG6_LOCAL_FLV8986_SUPP_OPS to SEG6_LOCAL_END_X_FLV_SUPP_OPS so > End.X advertises PSP flavor support. > > Signed-off-by: Hangbin Liu <[email protected]> > --- > net/ipv6/seg6_local.c | 12 ++++++++++-- > 1 file changed, 10 insertions(+), 2 deletions(-) > > diff --git a/net/ipv6/seg6_local.c b/net/ipv6/seg6_local.c > index 584e6aca3893..7462da1da362 100644 > --- a/net/ipv6/seg6_local.c > +++ b/net/ipv6/seg6_local.c > @@ -121,7 +121,8 @@ struct bpf_lwt_prog { > > #define SEG6_LOCAL_END_FLV_SUPP_OPS (SEG6_F_LOCAL_FLV_NEXT_CSID | \ > SEG6_LOCAL_FLV8986_SUPP_OPS) > -#define SEG6_LOCAL_END_X_FLV_SUPP_OPS SEG6_F_LOCAL_FLV_NEXT_CSID > +#define SEG6_LOCAL_END_X_FLV_SUPP_OPS (SEG6_F_LOCAL_FLV_NEXT_CSID | \ > + SEG6_LOCAL_FLV8986_SUPP_OPS) > This adds PSP to a mask that already had NEXT-C-SID. PSP alone then works through end_flv8986_core(). > struct seg6_flavors_info { > /* Flavor operations */ > @@ -841,12 +842,19 @@ static int input_action_end_x(struct sk_buff *skb, > struct seg6_local_lwt *slwt) > { > const struct seg6_flavors_info *finfo = &slwt->flv_info; > __u32 fops = finfo->flv_ops; > + int ret; > + > + if (!fops) > + return input_action_end_x_core(skb, slwt); > > /* check for the presence of NEXT-C-SID since it applies first */ > if (seg6_next_csid_enabled(fops)) > return end_x_next_csid_core(skb, slwt); > > - return input_action_end_x_core(skb, slwt); > + ret = end_flv8986_core(skb, slwt); > + if (ret) > + return ret; > + return input_action_end_x_finish(skb, slwt); > } > The problem is the combination with NEXT-C-SID: the NEXT-C-SID early return above is still taken, and neither branch of end_x_next_csid_core() applies PSP. So "End.X flavors next-csid,psp" becomes configurable and PSP is never applied. The same mask and the same early return are already in End, where the combination is accepted and PSP is not applied either. I will send a fix for that to net. For this patch I would handle the combination. On the selftest side, the combination of next-csid and psp is not covered yet. I am going to add coverage for it in any case with the End fix, and I would be glad to do it with you if you are interested: the same coverage would serve End.X too, if you decide to handle the combination there. Thanks, Andrea

