From nobody Tue Mar 3 05:11:13 2026 Received: from mail-pf1-f228.google.com (mail-pf1-f228.google.com [209.85.210.228]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 364C2383C9A for ; Mon, 2 Mar 2026 19:54:33 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.228 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772481275; cv=none; b=t78ztW1DB4ATIbvB/ed/qrL1nBoXstomNZMOTTy8EZeYr0LMavh5q8YLBj2JIx2FpB56uMFxMrIE+1mN6TKmuyq25hK5K4PuV9DdzC0eQLnAi31PPzir4PgB33szAtPHd2LRMqATaGuIE2s5+hOkt6sY4ZWZRqTEXdNsrQMUplk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772481275; c=relaxed/simple; bh=wWQCRkOW4iqit3j0Cj5I/waGyxA4vH1GLCmRkmFZ2qU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=V/PDkyfzi/yIwDv4v9fnE3lDrbt5iPhuoiD3NkhSpe/KLuChUhFdlnZIdFSnGoSZpSDZgr6aDnKkqxhxZEirajWVUeya2Zb2h5hG7Qt3k8/M9q7Zt/4MveSigEh2NbqZc0fbOq2nH7i6p+GNxaEgIj7E3egRHeivMRnXw/Irmls= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=broadcom.com; spf=fail smtp.mailfrom=broadcom.com; dkim=pass (1024-bit key) header.d=broadcom.com header.i=@broadcom.com header.b=NkC6y0UE; arc=none smtp.client-ip=209.85.210.228 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=broadcom.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=broadcom.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=broadcom.com header.i=@broadcom.com header.b="NkC6y0UE" Received: by mail-pf1-f228.google.com with SMTP id d2e1a72fcca58-82746ed8cb1so2462498b3a.3 for ; Mon, 02 Mar 2026 11:54:33 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772481272; x=1773086072; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:dkim-signature:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=jAaX3Kv2lAlE9d5YGhlxio3GXtW87/iaolDngHMpMnU=; b=Ea5EIDIdnWB/M7x4HuCImeyq3noxWmHIDFeanTUUpQYXNBe8P3RyigthsUoe0bCbtK mcppQx49SGi39vpid4tDyJ/3XDKcOgonCyUX3pEjhMXMXOa5//DiLWwjVGekj1TQ/nOg s0e2R2Z35qzhOEbqcjxJx7nOteZzw2f/BOCPfs5WaYFa8IOzYSmoDm6AfszKe8jgNRwI tiR3KFXvCf0wtnTRUHibZEoQRYwyU3dcejQXZlX7Yv2816BjnhQmVTMeEFuRvcASEMtG 0UFHpgwDEIfGO62t3LTURI+WX8YvYYFUsaLPPAF3e8HlQwakKxcUiH82x0i874QjMGuc /mjg== X-Forwarded-Encrypted: i=1; AJvYcCUPt7kZ9EW8j2SU7dkfIN79aK/EwpHaEym5dH1cSJlHiDQk0rXZBdcokWsJOMOni6aFeu+fBoVtQzZZw7c=@vger.kernel.org X-Gm-Message-State: AOJu0Yy0SMMexiFNnX3taWffPBi+e3oJYJ8h4G1JMfP88Zw4lS6TL3i0 FvGQucjEO/R0c0K+uiUYJUsU0cvh3Q4GbadQAvcauWZt95BehR/gkZGht35R1BXb+zjeu2RJeEF oKPuDrN5e4AhJ3J754ZjxTUSnUJZXKWluGw2+7QI9MpWwjt5PSMcYjKVgBQbu9Y1wqGO7AJX5dl Jm6dYE8FD2Px/gU0/Gp36e8fb1SrLDqHjo3jk30qMfuobi1kCITFXvECJt79b9yGYfa9aV7SBcq Lj7gL32tJiVMHiriNnwU0xdmOm/ X-Gm-Gg: ATEYQzzi6cPtwH168fQS1o7rAMHwUVSVH2LWpZDy8RVgjWlBz8uCU1nBhKLSae2W9A9 pieQrnEsgUbCl9AJ3rd60cTzsHAuxTm/E63XtO0/bWAButzbTDweNjPIsz/BmRzLVbYUysgXZrL z6/DCfqwK2iUClktm2OyyPG3iz4H2dSckIhb8+gWGRICbGUVp6tDHpglZ/dgQ8/Tvcf2xT+zyw2 iydMCY5aNfylg4GKDUI0izlDCBKpRo5FAnNXfb7WMxVHWciexpua1J5fnR4rALcWo9A60mj8INL 3pz+dAoe7Je3/BKXBaTBoWeL8RNC2NCdLwac1ING0GI5Lecp/6iubXERKBPruRK04Bpb2YYcNHi P6kel9QcukbNRPtax5tin9VrbMlMPK1W+l1Js0xHv/l45ZGRVxmbzqko+yNWmA/AV11qxQJL27R i1xe722lykGtjr3myMjZms54NmaglW2Smter7r145hUGwBYrXyUWN16bwE5tmdFzrETA== X-Received: by 2002:a17:90a:e7d1:b0:359:8d70:c4ed with SMTP id 98e67ed59e1d1-3598d70c65dmr3766045a91.7.1772481272340; Mon, 02 Mar 2026 11:54:32 -0800 (PST) Received: from smtp-us-east1-p01-i01-si01.dlp.protect.broadcom.com (address-144-49-247-103.dlp.protect.broadcom.com. [144.49.247.103]) by smtp-relay.gmail.com with ESMTPS id 98e67ed59e1d1-3598c04a8basm641255a91.6.2026.03.02.11.54.32 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 02 Mar 2026 11:54:32 -0800 (PST) X-Relaying-Domain: broadcom.com X-CFilter-Loop: Reflected Received: by mail-qk1-f198.google.com with SMTP id af79cd13be357-8cb37db8b79so3858805385a.3 for ; Mon, 02 Mar 2026 11:54:31 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; t=1772481271; x=1773086071; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=jAaX3Kv2lAlE9d5YGhlxio3GXtW87/iaolDngHMpMnU=; b=NkC6y0UEbLHtZpBJ1dvRrEfMWH6W1ywgEUTod6ef4BXd6avfBPO4CDmFpOfxp0KgrP xxvU3e7BWEtLQp6ea3ZCvNoQQH4ALfRaz4YAn45reopSpmC70B+DfvmDcuiJTX2d9O2W qb/u7bQ/ldkWs0fsAF7WLUx77A5Gp1R7KbAgo= X-Forwarded-Encrypted: i=1; AJvYcCUVuFyEVbM1z4kr+hpL3wEwqGDNM5N2n8Cgs+N82hGoIrEtjeuOe0AuaUYLIAzriJrLt1O1QXQemo/DpGI=@vger.kernel.org X-Received: by 2002:a05:620a:254b:b0:8b2:e058:de83 with SMTP id af79cd13be357-8cbc8d6f11cmr1666155085a.15.1772481271018; Mon, 02 Mar 2026 11:54:31 -0800 (PST) X-Received: by 2002:a05:620a:254b:b0:8b2:e058:de83 with SMTP id af79cd13be357-8cbc8d6f11cmr1666151785a.15.1772481270511; Mon, 02 Mar 2026 11:54:30 -0800 (PST) Received: from lvnvdb0691.lvn.broadcom.net ([192.19.161.250]) by smtp.gmail.com with ESMTPSA id af79cd13be357-8cbbf736cfasm1208049285a.49.2026.03.02.11.54.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 02 Mar 2026 11:54:30 -0800 (PST) From: Akhilesh Samineni To: davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com, andrew+netdev@lunn.ch, horms@kernel.org, willemb@google.com, daniel.zahka@gmail.com Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org, jayakrishnan.udayavarma@broadcom.com, ajit.khaparde@broadcom.com, kiran.kella@broadcom.com, akhilesh.samineni@broadcom.com, sachin.suman@broadcom.com Subject: [net-next 1/3] psp: Support resetting statistics on a device Date: Mon, 2 Mar 2026 11:53:50 -0800 Message-ID: <20260302195352.1015990-2-akhilesh.samineni@broadcom.com> X-Mailer: git-send-email 2.45.4 In-Reply-To: <20260302195352.1015990-1-akhilesh.samineni@broadcom.com> References: <20260302195352.1015990-1-akhilesh.samineni@broadcom.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-DetectorID-Processed: b00c1d49-9d2e-4205-b15f-d015386d3d5e Content-Type: text/plain; charset="utf-8" Drivers may need to reset per-device PSP statistics to zero. Add a reset-stats netlink command and a corresponding optional driver callback to support this. Signed-off-by: Akhilesh Samineni Reviewed-by: Kiran Kella Reviewed-by: Ajit Kumar Khaparde --- Documentation/netlink/specs/psp.yaml | 13 +++++++++++++ include/net/psp/types.h | 6 ++++++ include/uapi/linux/psp.h | 1 + net/psp/psp-nl-gen.c | 14 ++++++++++++++ net/psp/psp-nl-gen.h | 1 + net/psp/psp_nl.c | 24 ++++++++++++++++++++++++ 6 files changed, 59 insertions(+) diff --git a/Documentation/netlink/specs/psp.yaml b/Documentation/netlink/s= pecs/psp.yaml index f3a57782d2cf..e37ca142af54 100644 --- a/Documentation/netlink/specs/psp.yaml +++ b/Documentation/netlink/specs/psp.yaml @@ -272,6 +272,19 @@ operations: dump: reply: *stats-all =20 + - + name: reset-stats + doc: Reset device statistics. + attribute-set: dev + do: + request: + attributes: + - id + reply: + attributes: [] + pre: psp-device-get-locked + post: psp-device-unlock + mcast-groups: list: - diff --git a/include/net/psp/types.h b/include/net/psp/types.h index 25a9096d4e7d..7f9924e8ab0d 100644 --- a/include/net/psp/types.h +++ b/include/net/psp/types.h @@ -211,6 +211,12 @@ struct psp_dev_ops { * Stats must be filled in member-by-member, never memset the struct. */ void (*get_stats)(struct psp_dev *psd, struct psp_dev_stats *stats); + + /** + * @reset_stats: reset the statistics + */ + int (*reset_stats)(struct psp_dev *psd, struct netlink_ext_ack *extack); + }; =20 #endif /* __NET_PSP_H */ diff --git a/include/uapi/linux/psp.h b/include/uapi/linux/psp.h index a3a336488dc3..6e0c217a8366 100644 --- a/include/uapi/linux/psp.h +++ b/include/uapi/linux/psp.h @@ -74,6 +74,7 @@ enum { PSP_CMD_RX_ASSOC, PSP_CMD_TX_ASSOC, PSP_CMD_GET_STATS, + PSP_CMD_RESET_STATS, =20 __PSP_CMD_MAX, PSP_CMD_MAX =3D (__PSP_CMD_MAX - 1) diff --git a/net/psp/psp-nl-gen.c b/net/psp/psp-nl-gen.c index 22a48d0fa378..c8691f7a61ce 100644 --- a/net/psp/psp-nl-gen.c +++ b/net/psp/psp-nl-gen.c @@ -53,6 +53,11 @@ static const struct nla_policy psp_get_stats_nl_policy[P= SP_A_STATS_DEV_ID + 1] =3D [PSP_A_STATS_DEV_ID] =3D NLA_POLICY_MIN(NLA_U32, 1), }; =20 +/* PSP_CMD_RESET_STATS - do */ +static const struct nla_policy psp_reset_stats_nl_policy[PSP_A_DEV_ID + 1]= =3D { + [PSP_A_DEV_ID] =3D NLA_POLICY_MIN(NLA_U32, 1), +}; + /* Ops table for psp */ static const struct genl_split_ops psp_nl_ops[] =3D { { @@ -119,6 +124,15 @@ static const struct genl_split_ops psp_nl_ops[] =3D { .dumpit =3D psp_nl_get_stats_dumpit, .flags =3D GENL_CMD_CAP_DUMP, }, + { + .cmd =3D PSP_CMD_RESET_STATS, + .pre_doit =3D psp_device_get_locked, + .doit =3D psp_nl_reset_stats_doit, + .post_doit =3D psp_device_unlock, + .policy =3D psp_reset_stats_nl_policy, + .maxattr =3D PSP_A_DEV_ID, + .flags =3D GENL_CMD_CAP_DO, + }, }; =20 static const struct genl_multicast_group psp_nl_mcgrps[] =3D { diff --git a/net/psp/psp-nl-gen.h b/net/psp/psp-nl-gen.h index 599c5f1c82f2..67577c898f99 100644 --- a/net/psp/psp-nl-gen.h +++ b/net/psp/psp-nl-gen.h @@ -31,6 +31,7 @@ int psp_nl_rx_assoc_doit(struct sk_buff *skb, struct genl= _info *info); int psp_nl_tx_assoc_doit(struct sk_buff *skb, struct genl_info *info); int psp_nl_get_stats_doit(struct sk_buff *skb, struct genl_info *info); int psp_nl_get_stats_dumpit(struct sk_buff *skb, struct netlink_callback *= cb); +int psp_nl_reset_stats_doit(struct sk_buff *skb, struct genl_info *info); =20 enum { PSP_NLGRP_MGMT, diff --git a/net/psp/psp_nl.c b/net/psp/psp_nl.c index 6afd7707ec12..aa8960c8d4d1 100644 --- a/net/psp/psp_nl.c +++ b/net/psp/psp_nl.c @@ -277,6 +277,27 @@ int psp_nl_key_rotate_doit(struct sk_buff *skb, struct= genl_info *info) return err; } =20 +int psp_nl_reset_stats_doit(struct sk_buff *skb, struct genl_info *info) +{ + struct psp_dev *psd =3D info->user_ptr[0]; + struct sk_buff *rsp; + int err; + + if (!psd->ops->reset_stats) + return -EOPNOTSUPP; + + rsp =3D psp_nl_reply_new(info); + if (!rsp) + return -ENOMEM; + + err =3D psd->ops->reset_stats(psd, info->extack); + if (err) + goto err_free_rsp; + + return psp_nl_reply_send(rsp, info); + +err_free_rsp: + nlmsg_free(rsp); + return err; +} + /* Key etc. */ =20 int psp_assoc_device_get_locked(const struct genl_split_ops *ops, --=20 2.45.4