Subject: Re: [PATCH net 4/4] selftests: drv-net: rss_ctx: test RSS contexts persist after ifdown/up

From: Jakub Kicinski <[email-masked]>
Date: Wed, 4 Feb 2026 18:09:02 -0800

On Wed, 4 Feb 2026 21:45:12 +0530 Pavan Chebbi wrote:
> > > +
> > > +    for ctx_id in ctx_ids:
> > > +        try:
> > > +            data = get_rss(cfg, context=ctx_id)
> > > +            _rss_key_check(cfg, data=data, context=ctx_id)
> > > +            persisted_contexts.append(ctx_id)
> > > +        except CmdExitFailure:
> > > +            missing_contexts.append(ctx_id)
> > > +            ksft_pr(f"Context {ctx_id} is missing after ifup")  
> >
> > You can use netlink to get them all
> >
> > ctxs = cfg.ethnl.rss_get({}, dump=True)  
> 
> Jakub, maybe it's a rookie question but I am having trouble getting
> the netlink call to work.
> Not sure if my analysis is right but it looks like I don't have the
> right schema..
> It appears like the decode does not ignore unsupported ethnl options?
> I always get the error:
> 
> # Error decoding 'input-xfrm' from 'rss'
> 
> with the below call stack:
> 
> # # Exception| Traceback (most recent call last):
> # # Exception|   File "/tmp/ksft-net-drv/net/lib/py/ksft.py", line
> 319, in ksft_run
> # # Exception|     func(*args)
> # # Exception|   File "/tmp/ksft-net-drv/drivers/net/hw/./rss_ctx.py",
> line 395, in test_rss_context_dump
> # # Exception|     ctxs = cfg.ethnl.rss_get({}, dump=True)
> # # Exception|   File
> "/tmp/ksft-net-drv/net/lib/ynl/pyynl/lib/ynl.py", line 1159, in _op
> # # Exception|     return self._ops(ops)[0]
> # # Exception|   File
> "/tmp/ksft-net-drv/net/lib/ynl/pyynl/lib/ynl.py", line 1146, in _ops
> # # Exception|     rsp_msg = self._decode(decoded.raw_attrs, op.attr_set.name)
> # # Exception|   File
> "/tmp/ksft-net-drv/net/lib/ynl/pyynl/lib/ynl.py", line 814, in _decode
> # # Exception|     decoded = self._decode_enum(decoded, attr_spec)
> # # Exception|   File
> "/tmp/ksft-net-drv/net/lib/ynl/pyynl/lib/ynl.py", line 672, in
> _decode_enum
> # # Exception|     value.add(self._get_enum_or_unknown(enum, i))
> # # Exception|   File
> "/tmp/ksft-net-drv/net/lib/ynl/pyynl/lib/ynl.py", line 662, in
> _get_enum_or_unknown
> # # Exception|     raise error
> # # Exception|   File
> "/tmp/ksft-net-drv/net/lib/ynl/pyynl/lib/ynl.py", line 657, in
> _get_enum_or_unknown
> # # Exception|     name = enum.entries_by_val[raw].name
> # # Exception| KeyError: 2
> 
> Do you think I am missing some config?

Ah! I think you run into what I recently fixed in net.
Could you try with 1c172febdf065375 cherry-picked to your tree?
It's sitting in net, hasn't reached net-next yet.
Sorry about that..