Re: [PATCH v2 02/17] psp: base PSP device support

Willem de Bruijn
2025-06-26T17:20:48Z

Jakub Kicinski wrote:
> On Thu, 26 Jun 2025 10:25:11 -0400 Willem de Bruijn wrote:
> > Preferable over the following?
> >
> > struct psphdr {
> > u8 nexthdr;
> > u8 hdrlen;
> > u8 crypt_offset;
> >
> > u8 sample:1;
> > u8 drop:1;
> > u8 version:4;
> > u8 vc_present:1;
> > u8 reserved:1;
> >
> > __be32 spi;
> > __be64 iv;
> > __be64 vc[]; /* optional */
> > };
> >
> > I suppose that has an endianness issue requiring
> > variants with __LITTLE_ENDIAN_BITFIELD and
> > __BIG_ENDIAN_BITFIELD.
>
> Right, this part. Always gives me pause :(
>
> > > > This makes sense with a single physical device plus optional virtual
> > > > (vlan, bonding, ..) devices.
> > > >
> > > > It may also be possible for a single physical device (with single
> > > > device key) to present multiple PFs and/or VFs. In that case, will
> > > > there be multiple struct psp_dev, or will one PF be the "main".
> > >
> > > AFAIU we have no ability to represent multi-PCIe function devices
> > > in the kernel model today. So realistically I think psp_dev per
> > > function and then propagate the rotation events.
> >
> > IDPF does support multiple "vports" (num_alloc_vports), and with that
> > struct net_device, from a single BDF.
>
> Upstream? If yes then I'm very bad at reviewing code :D

I then don't think I want to focus your attention on this, but..

See use num_alloc_ports in idpf_init_task. Which keeps requeueing
itself until num_default_vports is reached. Which is a variable
received from the device in VIRTCHNL2_OP_GET_CAPS.