On 10/28/25 1:00 AM, Daniel Zahka wrote: > From: Jakub Kicinski <[email protected]> > > Provide a driver api for reporting device statistics required by the > "Implementation Requirements" section of the PSP Architecture > Specification. Use a warning to ensure drivers report stats required > by the spec. > > Signed-off-by: Jakub Kicinski <[email protected]> > Signed-off-by: Daniel Zahka <[email protected]> > --- > Documentation/netlink/specs/psp.yaml | 55 ++++++++++++++++++++++++++++ > include/net/psp/types.h | 26 +++++++++++++ > include/uapi/linux/psp.h | 8 ++++ > net/psp/psp_main.c | 3 +- > net/psp/psp_nl.c | 22 ++++++++++- > 5 files changed, 112 insertions(+), 2 deletions(-) > > diff --git a/Documentation/netlink/specs/psp.yaml > b/Documentation/netlink/specs/psp.yaml > index 914148221384..f3a57782d2cf 100644 > --- a/Documentation/netlink/specs/psp.yaml > +++ b/Documentation/netlink/specs/psp.yaml > @@ -98,6 +98,61 @@ attribute-sets: > Number of times a socket's Rx got shut down due to using > a key which went stale (fully rotated out). > Kernel statistic. > + - > + name: rx-packets > + type: uint > + doc: | > + Number of successfully processed and authenticated PSP packets. > + Device statistic (from the PSP spec). > + - > + name: rx-bytes > + type: uint > + doc: | > + Number of successfully authenticated PSP bytes received, counting > from > + the first byte after the IV through the last byte of payload. > + The fixed initial portion of the PSP header (16 bytes) > + and the PSP trailer/ICV (16 bytes) are not included in this count. > + Device statistic (from the PSP spec). > + - > + name: rx-auth-fail > + type: uint > + doc: | > + Number of received PSP packets with unsuccessful authentication. > + Device statistic (from the PSP spec). > + - > + name: rx-error > + type: uint > + doc: | > + Number of received PSP packets with length/framing errors. > + Device statistic (from the PSP spec). > + - > + name: rx-bad > + type: uint > + doc: | > + Number of received PSP packets with miscellaneous errors > + (invalid master key indicated by SPI, unsupported version, etc.) > + Device statistic (from the PSP spec). > + - > + name: tx-packets > + type: uint > + doc: | > + Number of successfully processed PSP packets for transmission. > + Device statistic (from the PSP spec). > + - > + name: tx-bytes > + type: uint > + doc: | > + Number of successfully processed PSP bytes for transmit, counting > from > + the first byte after the IV through the last byte of payload. > + The fixed initial portion of the PSP header (16 bytes) > + and the PSP trailer/ICV (16 bytes) are not included in this count. > + Device statistic (from the PSP spec). > + - > + name: tx-error > + type: uint > + doc: | > + Number of PSP packets for transmission with errors. > + Device statistic (from the PSP spec). > > operations: > list: > diff --git a/include/net/psp/types.h b/include/net/psp/types.h > index 5b0ccaac3882..1aa3857a85c1 100644 > --- a/include/net/psp/types.h > +++ b/include/net/psp/types.h > @@ -150,6 +150,25 @@ struct psp_assoc { > u8 drv_data[] __aligned(8); > }; > > +struct psp_dev_stats { > + union { > + struct { > + u64 rx_packets; > + u64 rx_bytes; > + u64 rx_auth_fail; > + u64 rx_error; > + u64 rx_bad; > + u64 tx_packets; > + u64 tx_bytes; > + u64 tx_error; > + }; > + DECLARE_FLEX_ARRAY(u64, required); > + }; > + char required_end[0];
This makes static checker unhappy: /home/cocci/testing/include/net/psp/types.h:167:6-18: WARNING use flexible-array member instead (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-length-and-one-element-arrays) I think/guess the warning could be avoided using something alike the following (completely untested!!!): struct psp_dev_stats { struct_group(required, union { struct { u64 rx_packets; u64 rx_bytes; u64 rx_auth_fail; u64 rx_error; u64 rx_bad; u64 tx_packets; u64 tx_bytes; u64 tx_error; }; DECLARE_FLEX_ARRAY(u64, required); }; ); }; // ... const unsigned int required_cnt = sizeof(stats.required) / sizeof(u64);

