Re: [PATCH net-next 2/5] seg6: add RFC8986 flavor support for End.X
From: Andrea Mayer
Date: Wed Sep 23 2026 - 12:25:07 EST
On Tue, 22 Sep 2026 16:54:44 +0800
Hangbin Liu <hangbin.liu@xxxxxxxxx> wrote:
Hi Hangbin,
please see below.
> From: Hangbin Liu <liuhangbin@xxxxxxxxxx>
>
> 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 <liuhangbin@xxxxxxxxxx>
> ---
> 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