From nobody Fri Sep 25 06:47:40 2026 Received: from DB3PR0202CU003.outbound.protection.outlook.com (mail-northeuropeazon11010000.outbound.protection.outlook.com [52.101.84.0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8A57647988B; Tue, 15 Sep 2026 22:27:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.84.0 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789511267; cv=fail; b=HMDmQJy8vzZPxXdV0fPYyzpUvwZLgG7U/d9Az98ef+WhNAGDPIe5LKFIQGUEck1KnQZdobbk8Sls/tduGKDktpC978bvV+j0O+Y4XgKCe924i6ECGUxjvyy0yJ2VELoH6NhNk6Ddz4hr3UKf9N/ITFbgbq9u31eFvKC4kt/cBlM= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789511267; c=relaxed/simple; bh=yJCC7ONmLgv9lgT+V04OXG65I0WKgJ6dKlimDoaIpCs=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=DYXQvdnq44BegJZdi4N/5pwK2L/2tPQtIfSPyigC9BY+DnmSeRAsDa62ZhAdraG0mS4VL/88gyj0cYsPIz9awJkQfSAiJJsZCvhsmvPYATcTXF6FtfDwgY0v3X583Gnii12jsWyc5QuRHWwECNTPeyBlVkqYuhR9mrNJn4ZAySs= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com; spf=pass smtp.mailfrom=nxp.com; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b=Uc7a2Rqj; arc=fail smtp.client-ip=52.101.84.0 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b="Uc7a2Rqj" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=PgvKp2b+bl4+Yq6ALQoBA5FO//FnGboUTCjIMTp9IXBLmEVwzEmIl7Y5hpINjRSYoRzBX//WgmwtzfGXnwkoUlqya/g+X/8o/scb3ZlneZKQMM/vQZUFdyzhel9oqJL/L/+/NicdE/Zixu2djz0jF1JuhMdcwMD3DhSOuMo3AmsejOkKCrGPSFRjgC9OAGzEcqcqvAAtiqDf74P601A54hXduv5YGmMYq0DJobNEqt4sw6EQRD62ISy5kGqZ++7UCxS7qvKbY0TnGIlQzJMGYjXQIe4oIPW1CObXD/EvQSzDRqlgN14m1MPyiUckbpzfh7oH0AEHuM2QUJJOKuf5Xg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=XJ49xIsfaEAMoBUftFV2rtsZG0WDNYNhUdm7cLU9Fho=; b=VPrL8VWh8kXXHyNNn4TXtKwOFCOhdC4FpPwxCS0KdbSztq0Vy7M66k2dUqxPohUgYJHbbQYUAIRsPI2hIYLDzllNHC2zwTUdjmozM1joxpq+Uh8scmOLCvQSNFL4dPC3NTdOt2rm8YF/a7bGLiPX8XuNeR58hv301lI9RXVxCW0xGoZjFjVwMWk6nZFnQwy9UTZHxHkzCyle5jhc5H+uDVrXrneAb9T2DsnWh5Pt9BAlwpKCl81M0seMAQeN8QgaNwSa7WnbDDN/zNnHPf8kJvpch4aWsi5/a7/eEQBp5HbZrem2mT+5Q72dQwjM+dybCtRvmfakPfQiY6lTmkbfcg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=XJ49xIsfaEAMoBUftFV2rtsZG0WDNYNhUdm7cLU9Fho=; b=Uc7a2RqjGKyeNhHs1Hw+/ePa/uey3DOOEtSFUMbz1E3Neb+WqbiE4b67Ijg/e/a4ogZUhMxQ9k/eFXNO3MlBPPZYd3mepUdnotFZXY6UbGutJddPq4kkYC1iKrcBqx9X78hwk3SKi4GM+WzW0ajwHJQM7gX3cga/yZnLLgKZ+D5mHzEfcxnXrnrp7rVp3bXF1m8PsIU5xv4X78SuY3Qc3mirdcsOq/kQyEnvYJrh+oqCVcbCI4+EmJP5rTxkKtgDOpTeUYwThOnKAcaWaJKGyaHAJPjC+7R/oDAqxikYaBmr3sWPKooDHanbECWqthYizK3/ffEzz99SsAeY+snw0g== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from AM0PR04MB6900.eurprd04.prod.outlook.com (2603:10a6:208:17d::10) by DB9PR04MB8448.eurprd04.prod.outlook.com (2603:10a6:10:2bf::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.428.9; Tue, 15 Sep 2026 22:27:41 +0000 Received: from AM0PR04MB6900.eurprd04.prod.outlook.com ([fe80::7fda:8431:ca1b:b023]) by AM0PR04MB6900.eurprd04.prod.outlook.com ([fe80::7fda:8431:ca1b:b023%4]) with mapi id 15.21.0428.008; Tue, 15 Sep 2026 22:27:39 +0000 From: vladimir.oltean@nxp.com To: netdev@vger.kernel.org Cc: Zefir Kurtisi , Claudiu Manoil , Wei Fang , Clark Wang , Andrew Lunn , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Alexei Starovoitov , Daniel Borkmann , Jesper Dangaard Brouer , John Fastabend , Stanislav Fomichev , Simon Horman , Richard Cochran , Yangbo Lu , Ioana Ciornei , imx@lists.linux.dev, linux-kernel@vger.kernel.org, bpf@vger.kernel.org Subject: [PATCH v3 net 1/7] net: enetc: consistenly track dropped frames in enetc_xdp_xmit() Date: Wed, 16 Sep 2026 01:27:28 +0300 Message-ID: <20260915222735.1016937-2-vladimir.oltean@nxp.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260915222735.1016937-1-vladimir.oltean@nxp.com> References: <20260915222735.1016937-1-vladimir.oltean@nxp.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: AS4P251CA0012.EURP251.PROD.OUTLOOK.COM (2603:10a6:20b:5d2::13) To AM0PR04MB6900.eurprd04.prod.outlook.com (2603:10a6:208:17d::10) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AM0PR04MB6900:EE_|DB9PR04MB8448:EE_ X-MS-Office365-Filtering-Correlation-Id: 7b8deb0a-2b5d-4351-33f1-08df13788ce3 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|1800799024|376014|23010399003|19092799006|366016|22082099003|18002099003|10067099003|11063799006|56012099006; X-Microsoft-Antispam-Message-Info: 6EaUcXKwduZOAc2145AZ0g9v0qW3pLhIWV2lw6TImK9/sx4KLWRffOGifvBSQT6B0ogNfqP7pNBVY5J/EH8U5NyNVKA5+z87gEYvMIHSnpTKIJY9tUT5QkmVeguPsm4CLlrRFXr4X7KYEVooedDyxZBLZmPVIbn38pHm7fpIxoZli5CtcLWZQLDLALzpo1AdoVpV1qfdL+rpcSACCyeoABZK7kcw+0p49zBwNc+QeuUeT6Plhc95Fw2INB1joCFCTmoF+WnkT9WUUW1+nS0efyTtTXihjNd4GPmK5BMfe63P8INvZcxJ7ngJTijTiuDN3OFZcZ2Bl1cs1V9o+bkGP7vHh27Ft+pVh73eHZ3BFIC8B+rjvIWAgTXHqLKLJ+BpH6OuBt8t2k9Hu+OSiAb398YNG08qD82MpRNgtJqoTebvOGWjMtuZVKGxdFGr04MfrBgADMTyIE475kd89jSHCG8lKt0LMpdRUWl1HYAnXtFUt2by6iyOQ+a5hEKv7NCxGckKnYUXTFhYXpqcR9OfDa5iIz3GrESx0eZAcAkfKOpEeKH/E8mLkG8s4Qixg6MObzzLnJI3+5iMhx22DzChDan3f0mLiaaS/pjSIB1ing33sdM8dzlTL+DCOtHwkbXE7gROp+F7mHIV/45rMi5cpmyzwP3kE6qxSUkHxlUXPsk= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM0PR04MB6900.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(7416014)(1800799024)(376014)(23010399003)(19092799006)(366016)(22082099003)(18002099003)(10067099003)(11063799006)(56012099006);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?q+/z8/W6z7GWEaqUBKSgDsrUbZN7CakiHB6Va4YngBwdr4Hdw1RtUvJ2Kfwg?= =?us-ascii?Q?LTXoPvo5D7CGFRdl+Kjky3MEX3KleL3aIemG3UHXDER3sd0SVkOrEmbrAIVB?= =?us-ascii?Q?7ERhgEfmNBuPqTd6CHP2C14BwXFdb5rXDR3Urtn8IbrKeksZpwfepx+NP4Dq?= =?us-ascii?Q?s0RD7LD38WzzpKW/kiDdj8VNnLNRVXRndtMnzmLto/0lfZEM3GAnzj4frh0j?= =?us-ascii?Q?j0574Tw6WFxM0Mcsmz2ARg3JTLdtlze9D5u60ZbLraJzpiDm+Uazhpp7U265?= =?us-ascii?Q?j78CeIiyKmzoqYFZPcdYgLFVd8gUjjlqZrkJkQgivwudWfM3RddXj7ktgJI2?= =?us-ascii?Q?3v5yAvElARz8qgaICOytZkhwYxrkbZaeRK8x37ZK76cqVNn7zjz6eDIYlGf5?= =?us-ascii?Q?68T6YnNz60wZaptF0TeAS6UNU8ulUJsQ9J5kXp/lbH4feXHFb6+TSwwD6j8I?= =?us-ascii?Q?72M4rDS4+vVRPlNWh/SDiEwtbAcsUAC9dy72Y1O+OpRspuw95fCVcocNO3O/?= =?us-ascii?Q?H3171ZZZR4dlE4p5p4+SZj/FwBmc2SyKj8xiTKAUwG/zkEigs25EPkjADcqj?= =?us-ascii?Q?5M04YTAJLCYr9e+3VCZM5HFBGWLKzIcpSTQpR+cQIAgxzfmOoGroG1Ebhru8?= =?us-ascii?Q?SRCsCMW3DA+jWKG/MdLrYHFbBBmKNJG0PXuXJLWXw3BjHKDzlXS6YX7WcvFh?= =?us-ascii?Q?RbilwhbW+K5+MntDNEGlrSGtbCI2PZmUk+9kv66C+I4SSbOxC63qz+ZC2sRR?= =?us-ascii?Q?CQihxid66xkVwzSK1TqHNsvdiVdmeZr5f0ouD8H5+pAuiy1JN5bwgFOZzhNP?= =?us-ascii?Q?tBe5impAs9HDSCsSiFq8NjrWtNAwWAYy2hhHvvk0CWuQ2xrNh4FpDACsmAFq?= =?us-ascii?Q?X9s34W353wdlVJAnGRJ6z4qzmGJlhv4d9CNCR6n1r9fAeOrTyaCmxi3MAwKJ?= =?us-ascii?Q?xT1WYSOcPUUI+ub7E4dm4U1PTGoqGh98yfx5gf+MgvK1rpeTNzNiif6wnVIO?= =?us-ascii?Q?TwEEbmUU+gDpR7ostMcyox+UgpO8qkaTO1z1Z/2OK3iii0eOFOxHJgRiAA//?= =?us-ascii?Q?9sJ/lD2kBXCrZEmf0ZSsA3qDORi7Mvxr6aHSIJlEHy1nwzD0wW2wZQEPUpxS?= =?us-ascii?Q?qSQzNY/CQIJprelsq2S/6JUq1BfZgzgnSdnpZcbBdYDpzAfeyG+4prPp7LP1?= =?us-ascii?Q?CziPZA1S6C/zha12a03yu6PE0LXAQpUUp5d6VzgshD7+UB8GKsasbn8vJPep?= =?us-ascii?Q?gmJLcssbqZKkLQp8tsQ1KOHUrdfxJ9moiZxRoh+JLuSbNZOglst8iNMB54lT?= =?us-ascii?Q?9IpHj/RN83KnStZwljgEylgfHlx4joDRsYoqP4aRGPL41ox/Fc1mdfmJL4lB?= =?us-ascii?Q?mXNwzxWN+X5ZejhnMB4nJXPeSRRsDsWebO4dzHFbKjTYw5aR75n86YKyZKr/?= =?us-ascii?Q?HISsrdv3TSs6nHTcUSP1I5zzo3jOESq1sD9EmD6jHBjYxGNVTCV8x4SVwSp1?= =?us-ascii?Q?peLxXt4CApapJY2XYeFLDxN1Hl1LGYiB5Z2VMy5Qru8A6o2txE9dlS3D4xN8?= =?us-ascii?Q?K5H2TdrYTPdhxGLOXYeDJwGhNQl0tJrbb1YQ92ytrFg2pVgGRWIbqrpx6jGD?= =?us-ascii?Q?Usz8OHf6NtU/os1YiNXSH36mgyKnG7d4vzS28zvjBBouhJtlyw/cqDB/8Y/X?= =?us-ascii?Q?CO2vCexuuvDWr9x9YH51cJPkIy5FtbcV24VTcdaMvK9nXBhopI0OrVnv6CO9?= =?us-ascii?Q?XuSDrP+4ug=3D=3D?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7b8deb0a-2b5d-4351-33f1-08df13788ce3 X-MS-Exchange-CrossTenant-AuthSource: AM0PR04MB6900.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Sep 2026 22:27:39.2154 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: OVWeBTkf4CcBsngtEaM0GY3Ih8Sl6XrfkcuG6fRxbTzh7tr1D4ieObDlXzwDhUPdNo7KA6y/e4OlBJuAnZtqYg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB9PR04MB8448 Content-Type: text/plain; charset="utf-8" 2 distinct classes of problems: (a) failures in enetc_xdp_frame_to_xdp_tx_swbd(), as well as frames split across too many buffers, should be tracked by some drop counters, as they will not be transmitted. This is similar to how enetc_xdp_tx() increments xdp_tx_drops. (b) enetc_xdp_tx() failures increment xdp_tx_drops by 1, but that is not necessarily correct. Wei Fang points out that on .ndo_xdp_xmit() failure, bq_xmit_all() drops all remaining frames from the batch, not just the current one. So we should in any case increment the xdp_tx_drops counter by the remainder, not just by 1. A limitation that remains is that the xdp_tx_drops ethtool statistics counter tracks XDP_TX and XDP_REDIRECT drops in the same value. We should distinguish between these at some point, but that is an ABI change and is out of scope for a bug fix. Fixes: 9d2b68cc108d ("net: enetc: add support for XDP_REDIRECT") Signed-off-by: Vladimir Oltean --- v2->v3: patch is new; replaces: https://lore.kernel.org/netdev/20260406204122.167237-2-vladimir.oltean@nxp.= com/ --- drivers/net/ethernet/freescale/enetc/enetc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/ethernet/freescale/enetc/enetc.c b/drivers/net/eth= ernet/freescale/enetc/enetc.c index 80f0082f6c63..e7ecdf8ef67c 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc.c +++ b/drivers/net/ethernet/freescale/enetc/enetc.c @@ -1843,7 +1843,6 @@ int enetc_xdp_xmit(struct net_device *ndev, int num_f= rames, for (i =3D 0; i < xdp_tx_bd_cnt; i++) enetc_unmap_tx_buff(tx_ring, &xdp_redirect_arr[i]); - tx_ring->stats.xdp_tx_drops++; break; } =20 @@ -1854,6 +1853,7 @@ int enetc_xdp_xmit(struct net_device *ndev, int num_f= rames, enetc_update_tx_ring_tail(tx_ring); =20 tx_ring->stats.xdp_tx +=3D xdp_tx_frm_cnt; + tx_ring->stats.xdp_tx_drops +=3D num_frames - xdp_tx_frm_cnt; =20 enetc_unlock_mdio(); =20 --=20 2.43.0 From nobody Fri Sep 25 06:47:40 2026 Received: from OSPPR02CU001.outbound.protection.outlook.com (mail-norwayeastazon11013013.outbound.protection.outlook.com [40.107.159.13]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 2777017BCA; Tue, 15 Sep 2026 22:27:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.159.13 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789511266; cv=fail; b=jST47YmY8yi2dCLA7VOoWy1CjLFd8IDeXsfAboqk/fCH6WEhMQ1P0WXCh/qoerhfCeHzBCyZuJMKdpyvyfiHSd5/o4HywSFVF+KCp+xwUY/e+1e0Z/w12I9qoHBeTFdY1aOkgG1Qx61Wq4cr5X27BlmqnbXqCZbfGmgMNszIzHE= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789511266; c=relaxed/simple; bh=WMM08nhvPDdjc2AAx1kX4bCgxzknYFy/ENLA7RUnwWw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=Ohm9yKMQswGr7lZxCHPU9ws1wkxJHQnNUTrqH9lVabl/aILKAIA+BliKCrYLXzmZlFk33ISAXi/sUSc/4e6KnTnMCAmsKLsAg3uLKUXv79KQZqYwNZYcBSNs8SAtN/T7UHUOY5NurveWLkcn3cBG7VakkHOxujsAQx1tsJx/TCg= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com; spf=pass smtp.mailfrom=nxp.com; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b=FiWR9WjT; arc=fail smtp.client-ip=40.107.159.13 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b="FiWR9WjT" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=YZ3ytW8ImYID9YEgkth1mvPYvaYJamZu9mySP0XkVWo/PRzz1guFKDkArCNrOlp27B+O9kKwDdu8phddnznYHzyqDnd5DSsVdnwYxa97orVpTGr2CtD0vuhiOCH3d1nScB/9AnB3IeBUiX/gGssJ0GCsffT33AfJ0pfS4UfGcoyAbNeK3CDPvCqOVI2mzD3F92Jahla4fXv+iOSypvhGkRgipF4mvrAxxtPSU9FqOmrXsnAgb5Gr8V3uI12DeOUcTb0RIvPiwQGTtfGIQVZZLpv1t1IaICPDavrrRaYQV31KVTMdZOAmwVQos7QLLr8vLKSUYH1E5uuBoudc/JXjHQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=GI/5AZrPfnQJaDGg+WYF+yjAB6hXY/Ppa+EQFxTglkc=; b=R0wUzYTorFOMOrUht4AnwJkmlFpr2TJqKDfsgXPxzxWSIRJf3FMk0HFt1nLQE5D2nIY94Rsvw73+tOuhY8Xs0ztCJt/yDRHlleecmdmqDzMO+D7c7xReefDqNdru+sNnT4jiGesz7vCmeVRJHNmNgo0fdSG+zI77bqabgK5ciPxDcU2otNNMAnt3o0o905aLamwT3byoeEYYm7QiE/glRy0GHW24zWu/1LDtfQhfbVPBF4aOlVuQ3xkymtDbIqdR20vDd4wRpZ9M7CRwrYOEou2Wrg/wjQ74N3PqPtGymcwZnKSAUVs9gEQUWkH+OxidEu48B0/lvtPI3k2zOTHB+g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=GI/5AZrPfnQJaDGg+WYF+yjAB6hXY/Ppa+EQFxTglkc=; b=FiWR9WjT+iItl5Be4tvAKviLs1EEZo+HnHcAr8KVj+S331IKvbcQQc2ieltTWJypzG9y0J5vrs/s3em4j1cS87/DOo4nxG4hjNs+hFfrfxgxNbYbcnPFY5gbYwOisvXcLhr2z8aWsmyO+lEe+MjpFu9JOAkoQ/+0DDlVeB40MiAzxznvH9mnYBtTQV2XYF5sXvLpMQqqzAu8qAw7zZwvRY47Gx6RT76NmmWWj8Q2JTqEzebCX/xgOuuUmSlTGiuM/QJY1YUwJJ9acv0Ju+k7kKoLnsQ2T8+vgfORjfV+xVjd5ASkrVoCzo7ykif9kBNtrJDm/gOmu0jePER14g/gyA== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from AM0PR04MB6900.eurprd04.prod.outlook.com (2603:10a6:208:17d::10) by DB9PR04MB9380.eurprd04.prod.outlook.com (2603:10a6:10:368::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.428.9; Tue, 15 Sep 2026 22:27:41 +0000 Received: from AM0PR04MB6900.eurprd04.prod.outlook.com ([fe80::7fda:8431:ca1b:b023]) by AM0PR04MB6900.eurprd04.prod.outlook.com ([fe80::7fda:8431:ca1b:b023%4]) with mapi id 15.21.0428.008; Tue, 15 Sep 2026 22:27:41 +0000 From: vladimir.oltean@nxp.com To: netdev@vger.kernel.org Cc: Zefir Kurtisi , Claudiu Manoil , Wei Fang , Clark Wang , Andrew Lunn , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Alexei Starovoitov , Daniel Borkmann , Jesper Dangaard Brouer , John Fastabend , Stanislav Fomichev , Simon Horman , Richard Cochran , Yangbo Lu , Ioana Ciornei , imx@lists.linux.dev, linux-kernel@vger.kernel.org, bpf@vger.kernel.org Subject: [PATCH v3 net 2/7] net: enetc: ensure enetc_xdp_xmit() calls enetc_update_tx_ring_tail() Date: Wed, 16 Sep 2026 01:27:29 +0300 Message-ID: <20260915222735.1016937-3-vladimir.oltean@nxp.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260915222735.1016937-1-vladimir.oltean@nxp.com> References: <20260915222735.1016937-1-vladimir.oltean@nxp.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: AS4P251CA0010.EURP251.PROD.OUTLOOK.COM (2603:10a6:20b:5d2::12) To AM0PR04MB6900.eurprd04.prod.outlook.com (2603:10a6:208:17d::10) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AM0PR04MB6900:EE_|DB9PR04MB9380:EE_ X-MS-Office365-Filtering-Correlation-Id: 8a9d4d45-c5c1-4eae-4df9-08df13788e18 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|7416014|366016|19092799006|23010399003|6133799003|18002099003|22082099003|10067099003|56012099006|11063799006; X-Microsoft-Antispam-Message-Info: nyvJHoeLBS5iOBnWY2B2CaLNV2cMYtpN03zI8e8CxBk0/ERcj6bzHmhojfTzimoq/P+3ixV4wCis4zaDqN5qfe2bE73Q0hnsgIlXLvdmPT8sTi68In7tMW5CdDvRJaEB7aqkxlB/lMJo1hf01erEbnNVpriS99tJy8TF05jCU607u3thtLYAAU94ENTVQDPwebxq7B5N+zyCUfX8HDAIlQGDp3kMtLaNOpBXs5Uppvc4GclYItNlmDftDfKplhT5aY/XcPjKVEri0z2w1KwORiNbwr1GTmULVwMD3+ECLl812cAgPxUI54l/9Pj+507S9OPqDujjrlKr5ohFQiJNiCp/tevrKkAmjh2jzlL2aZtVI8aVssgNBDjrq1DkNgWwwT9ldLkStu5tZ2GGLZYsd2Y4J1Vwu7YlPD0Mx4xegWf3zR90qUssUibF3KnQibAwXlRCVhpNlpAH1YHW3kAmuim2NR/b1I0bmgYWATaH0raoRCnyx3Z3cQOIdFXEw6bviIAKgZCB5Pc4jxqcKzMeQ24hK+B9arTQ2bIhlj6eX9SOEc8Rb9Q8aspW4ralOcDfSPblb1Jfa50vDENkwK+GLVYM6/iD6C9o498DQMWdQcdDLB316W0bDiCzpSK0epLdrUubLu8dm8M6Oy1iwmN5x2VePjoBu6qzeAFK5dsAufo= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM0PR04MB6900.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(7416014)(366016)(19092799006)(23010399003)(6133799003)(18002099003)(22082099003)(10067099003)(56012099006)(11063799006);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?xB6tbt4fn73NmBpcwxQh2XQl7+UypxpU6ZEMmeVQy34JI5MFrRGBRyjtv6qF?= =?us-ascii?Q?TaEDLvbv+Ucd9F3XtoOuzDjdkZ77O1TYcqeOY5iB4RN9z4/qbagmyHjlZIzL?= =?us-ascii?Q?5IKukMtxittfXuRlRRFDUf4yzb8Il+AWieITkFIVXFW+dhZxMBeFCJ1vCTe2?= =?us-ascii?Q?0YzJaGwdf0y7KkX+dbyWHYnA9x+MWzGUjZP2khXD7JNsUIcNkc2mI2aCETkX?= =?us-ascii?Q?lydb0/L5BRN7GNehFsJwbXZ5t0Qy+WtHEhozCgAY4zmjX2xkVAZCrNdVOLRb?= =?us-ascii?Q?I87mfAZXZ41Nm7yL/BdFUCciqOeozsBBFYjfkfUq4mMTmaU5wX+L+eVfPdYi?= =?us-ascii?Q?V7R0tm4p96up+xrol+EoKFN9Ao1OLj9RYtTvxZnMnNZL5PS2tf4ST602Lcib?= =?us-ascii?Q?ToVGVXu3FQZPOMMshc/m6ddJpX/SxyN+ctUF2HgQnuRobSmV2+LKyq4hOYkn?= =?us-ascii?Q?+RBxFlApiLv+16n8Xia9u3/CuhtQ9AudM8MAoOtUUN/2fp457P49mR98Rkxk?= =?us-ascii?Q?XTHaDnkcLnjS3J2C/qW0dntU0QktDuQocU1tWVEApEWjAxYh3CsViDry9S0U?= =?us-ascii?Q?5Nx22feoCbInd6GFmfu+8RAqrYFnLjuDAQjo3yADzXl0DCiNzZ3zqDsXhNdd?= =?us-ascii?Q?mGT7Y+VWXa6iOJM9kv4dAPJLzTpy8aMhKq0LdetjB2WaDeYd9txCYCkj6b1l?= =?us-ascii?Q?fOejO8V8GeNrSD659V9HA7x6rE7FkNJ+PA3tIqYncFQNZ0PSa7erzijGLBXH?= =?us-ascii?Q?V7BJfyscUn28dZN993NjGO+FQAsH+M1fMKzzxjAeZN6Rr8KW1/pzu7du6CyJ?= =?us-ascii?Q?7VnwLPBBbGsix9IkGBnZGmoJj5MUF4Kc71Sv+F23VGbi5OJOt6UbwZkw0mB1?= =?us-ascii?Q?0RfSPH++kDRCqWf7W7tV9bJlWSD1Vo8tquGngTV8QOESdJr/wMLiScqiNaxp?= =?us-ascii?Q?V/9dDq4OhP19x1XhBSexTgrER3D5sWKamovYb8z+GRkaW3xKv5ObD4iTaqCr?= =?us-ascii?Q?wUkgvv7Fj9iL1g7vsuCQ8iyzHhzZQ5OagD6oCSm7+GqU//HfuRCX/9tI7Jpq?= =?us-ascii?Q?ExTs8hhu1exLOAxW0KxONp80Y6Z6QFgmugK6BOaKrtr4yuhd5fpSawYZDMim?= =?us-ascii?Q?cO2kxrgZqE4EBGevkiR6FH2Rh6thQmlm5yoNku729CpTB9Va5eKUN59aew6G?= =?us-ascii?Q?62bCYpYSoZU36TXgPs19EDl/MPGFKsLEhHOt4sBqc7IVImq0oC4+bvA+oGSE?= =?us-ascii?Q?CUuxcJUEaXWxMVgX0bS2Hv+RE75KPyRk0EKwQEtQrvsXPgcWkdL0T8N+E2tW?= =?us-ascii?Q?xEAGPssdlYKOUZ0pqq37UraPHk3Ti9EvWuvTBDKapuuY7b6XTDz0oGKq1qnj?= =?us-ascii?Q?WnzB9FE8n/lg35gCnA8FYIX6+p14WS64SC/KtfMlCQKKt2G4M9gQUsP98eJ+?= =?us-ascii?Q?5XH4ByNRqiJxpQzbAIEb+Gqbe/0WL7WtlcK1uSVtfnjXDVZgzvZwRrUszM5P?= =?us-ascii?Q?c0h9TbJmgEWHxhcwwcl8M1P9F3YS4NXKShX0FV1GuVF+rhia6N2HvZ3rEBfB?= =?us-ascii?Q?ilutPT9iEsW58020bEGliLUhlfdf0A0uC3Y6p6kMt81+MZzcfj4QXS/brA9F?= =?us-ascii?Q?3L1eUt+7v/SPZnr8Kt8CYRP7caRrku6RpDFpTTXPOeJA3UqwV6jDFs9gLhjC?= =?us-ascii?Q?JyvhzmTBM7GVVvKiHwFC2DPrCM2cMHIGs78XsbdXXrGxZ6Gda6sqtsNfzocW?= =?us-ascii?Q?LP6RPACgBg=3D=3D?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8a9d4d45-c5c1-4eae-4df9-08df13788e18 X-MS-Exchange-CrossTenant-AuthSource: AM0PR04MB6900.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Sep 2026 22:27:41.1963 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: HW0cWGMKSm4J0vJjhmyyEMWY2YTup4l1JhkeT/qrlt7fhOc4pYZ4Vu5XDbdkLvOweRYcXF9BamOJdTfQxtC/Gg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB9PR04MB9380 Content-Type: text/plain; charset="utf-8" enetc_xdp_xmit() keeps track of 3 numbers: - num_frames: total length of passed struct xdp_frame **frames array - xdp_tx_frm_cnt: number of frames successfully sent - k: index of currently sent frame from array With "k !=3D xdp_tx_frm_cnt", the intention was to detect an early break due to an inability to send a frame, and to trigger a TX doorbell anyway. However, that doesn't work because every time when the loop breaks, k and xdp_tx_frm_cnt are mathematically equal. The correct condition on which we should ring the doorbell is when at least one frame was sent, and either the caller required us to flush, or we couldn't enqueue the entire passed array. After updating the enetc_update_tx_ring_tail() calling condition, we can delete the 'xdp_tx_frm_cnt' variable, since it is equal to 'k' after the loop exits. Fixes: 9d2b68cc108d ("net: enetc: add support for XDP_REDIRECT") Signed-off-by: Vladimir Oltean --- v2->v3: delete redundant xdp_tx_frm_cnt variable v1->v2: patch is new --- drivers/net/ethernet/freescale/enetc/enetc.c | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/drivers/net/ethernet/freescale/enetc/enetc.c b/drivers/net/eth= ernet/freescale/enetc/enetc.c index e7ecdf8ef67c..c9c23e994f6d 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc.c +++ b/drivers/net/ethernet/freescale/enetc/enetc.c @@ -1813,7 +1813,6 @@ int enetc_xdp_xmit(struct net_device *ndev, int num_f= rames, struct skb_shared_info *shinfo; struct enetc_bdr *tx_ring; int xdp_tx_bd_cnt, i, k; - int xdp_tx_frm_cnt =3D 0; =20 if (unlikely(test_bit(ENETC_TX_DOWN, &priv->flags) || !netif_carrier_ok(ndev))) @@ -1845,19 +1844,17 @@ int enetc_xdp_xmit(struct net_device *ndev, int num= _frames, &xdp_redirect_arr[i]); break; } - - xdp_tx_frm_cnt++; } =20 - if (unlikely((flags & XDP_XMIT_FLUSH) || k !=3D xdp_tx_frm_cnt)) + if (unlikely(k && ((flags & XDP_XMIT_FLUSH) || k < num_frames))) enetc_update_tx_ring_tail(tx_ring); =20 - tx_ring->stats.xdp_tx +=3D xdp_tx_frm_cnt; - tx_ring->stats.xdp_tx_drops +=3D num_frames - xdp_tx_frm_cnt; + tx_ring->stats.xdp_tx +=3D k; + tx_ring->stats.xdp_tx_drops +=3D num_frames - k; =20 enetc_unlock_mdio(); =20 - return xdp_tx_frm_cnt; + return k; } EXPORT_SYMBOL_GPL(enetc_xdp_xmit); =20 --=20 2.43.0 From nobody Fri Sep 25 06:47:40 2026 Received: from OSPPR02CU001.outbound.protection.outlook.com (mail-norwayeastazon11013013.outbound.protection.outlook.com [40.107.159.13]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3594C4B7166; Tue, 15 Sep 2026 22:27:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.159.13 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789511269; cv=fail; b=IPGFyPdFOMpBNw6R3+YuGogoQKC+urWQq4QDL50D5R4XEkNkJPEa0pu3ih/X51HigrlnsaXebuvMM71Q9B8SaKrytuZxiYFMvn2Dok0Bu5f0Jz9oGSi7C9hUmF42yw+XZ0Qe6ksL92YjqQONdqift1ZgJe3HzgBcKs71tQJ2DPg= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789511269; c=relaxed/simple; bh=G93rVy9iEK0E1BVJ+ZdkILulL0YfGVDVGNVinbKPnCw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=cx/UWCj1vZoBmJTHdJeQWULvufT801txgf1w303/8kRriV/aSA1E5LT8lN8y7Im2fso9qI/zwpxx90VDSkhzHFuq/OeLG+i4lKpb8bmbLyc0Vhj0KxdI+MBNypSliapi0nKBmqgruROJzPYhx3ucOaa3yoNZro8p+xLEZRPwizc= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com; spf=pass smtp.mailfrom=nxp.com; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b=C/gpv3Ki; arc=fail smtp.client-ip=40.107.159.13 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b="C/gpv3Ki" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=f24cdCqmhPbmp5G2GIe3BryqMeUHWU8MEPDh4ec7ReO3r/v38YdOWbShGB77peqogz2etAKWo/5IBJfiNmGU6cuHeLK4emyUHyuhWJHT+ToiQ+oC4HsasuS9l1/NpVmizQHOdCMXQ/VgCEygGjEps2mp/1oN48+2z41jQzpAT/tRum9BgJP6AF50IvObHtsSBCYR2m+hbciQNVpR3M4Ric7AIzl2KbSWkEO0cZwzYrCanmQj3grAlFCVM8CjqWZDZBOoZ3hQVx5sk6QJqcfmTB5nZYH3bld0V24qO6ScUxoJz4jruzCCJXLp4lnZWD1J4qpzg09ft3zcKmj6qbejmQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=WwMsz6iyqq9s7KXMsV65K8z4X3J1VJ7vWjQWuErQehk=; b=HIbScHi9xAW5PJLZcpqO1jdgUfpzOV4MaSB1kV3h94D2MfNAlom5xFAT+J43fbHsfkyDApHCgKzbOeDnrNPYubqMQb5amQ+l7mMYBNZex0S8Fl8RW9VhqOExt7kIzUOQWBKrUaRJvhFFQaHDymyF1qV4Ev637QHy9GwSeL+HMYq9CbXSQ9cSvLM46QjawbjXWrW2sP589R9Rfw1+b/gTJVOiTIFxPX68hVdE/QSF8MZzl6ie+4TCGFr4rXlo5WFliS/4sX5/s3EzWln59hyIMuGFwN+6AKI7mHFvyIhL8SarxPtaZGBetErIqKf+57s6NuugyW+r/lJvduKflzoRgQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=WwMsz6iyqq9s7KXMsV65K8z4X3J1VJ7vWjQWuErQehk=; b=C/gpv3KioPkXmnLIFwjF1pE+GUKLQ5aCejyiWxIVWUgjpajTPqyf+viEd7BIHOFSUTXh8vPEp3NOLD0XqkpnNam81cf5JyXAGXlhJF9uOSX3+HonbRAFFQQuOgj1trSSaNlozi1N/ihIblS+cS3jllXfb45wDwkOFR406KnBcNJowrN1OTzB7M4tpjrzy7zkF7v/QZxM5V8pULU+IUp+4RJQE4yN+isYtM5DY/K3D/Um4JueGulg0tK98/b6gDmeCHwe4+Sk+rIVlzF7FqDhPYS6x+wElDYhGZk60a24az0mV3dVJ3tJNsWOhoq51SeON+XRXGVCwaFbaQK2rEDhyw== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from AM0PR04MB6900.eurprd04.prod.outlook.com (2603:10a6:208:17d::10) by DB9PR04MB9380.eurprd04.prod.outlook.com (2603:10a6:10:368::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.428.9; Tue, 15 Sep 2026 22:27:43 +0000 Received: from AM0PR04MB6900.eurprd04.prod.outlook.com ([fe80::7fda:8431:ca1b:b023]) by AM0PR04MB6900.eurprd04.prod.outlook.com ([fe80::7fda:8431:ca1b:b023%4]) with mapi id 15.21.0428.008; Tue, 15 Sep 2026 22:27:42 +0000 From: vladimir.oltean@nxp.com To: netdev@vger.kernel.org Cc: Zefir Kurtisi , Claudiu Manoil , Wei Fang , Clark Wang , Andrew Lunn , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Alexei Starovoitov , Daniel Borkmann , Jesper Dangaard Brouer , John Fastabend , Stanislav Fomichev , Simon Horman , Richard Cochran , Yangbo Lu , Ioana Ciornei , imx@lists.linux.dev, linux-kernel@vger.kernel.org, bpf@vger.kernel.org Subject: [PATCH v3 net 3/7] net: enetc: fix bogus TX ring consumer index after reinitialization Date: Wed, 16 Sep 2026 01:27:30 +0300 Message-ID: <20260915222735.1016937-4-vladimir.oltean@nxp.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260915222735.1016937-1-vladimir.oltean@nxp.com> References: <20260915222735.1016937-1-vladimir.oltean@nxp.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: AS4P251CA0008.EURP251.PROD.OUTLOOK.COM (2603:10a6:20b:5d2::16) To AM0PR04MB6900.eurprd04.prod.outlook.com (2603:10a6:208:17d::10) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AM0PR04MB6900:EE_|DB9PR04MB9380:EE_ X-MS-Office365-Filtering-Correlation-Id: 6d1345a6-20bf-4c44-7cad-08df13788f20 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|7416014|366016|19092799006|23010399003|6133799003|18002099003|22082099003|3023799007|10067099003|5023799004|56012099006|11063799006; X-Microsoft-Antispam-Message-Info: Yn0jttViagyG2vf2QpThClFUXC+SxsxJ7J2+a3npx1f8lSYj4uj1p+gLVmMqPPYDKMrUQ+Y6A3WPq0u+Pe6b6OsqW/4NzYNnXa6mIDtDJmTpDDKNVOQT+yHSxS6HnMaaUwLEmro0R1sctWg7ny7eqKIgKBa8k9TUNc5DaHzeiiuuzpu3/LuRVLAvWa+Z/hcY+Yt/x0YsEb+bRgXyIC5wkQSJlUY8vrEvPGYoUg0YUao1s++xt+0BBdzRehlC8Fu3cNGzuW6mdNWt3aEd2BEM1VrGeix7tljy3L44f4P6PCgQmmqqELCiDZNtFJtO1GCnLomIdE/1oKwF26JtWXiCsbKUdrXjQz6+xBXAfsBObhB0H7WSA+PXli/N7+dGhzjabI6LCDyivdhQxgelIFJ3AQdfQ/XW7Lo5iQBvDESOXYJIAQKtKAXRCwA2d+nFD7I0kWDrUiOAqhoIjVEhs1BNs8fmNZ9s9TgSGhlUI/r2hAgEQ/iaRHZ/iza0VWv285n8lJbHHoWioF6doEpZACWX9smuPwzkFW2Ba16px+sPWy0OLj6ofDHsCbZaXmgtQHoeNFLlTM7oAouDmwZY4Ro066VQTP3tDsB9oi023Xvln22vY1FDKUYSLt4O1GJu+vkT1+1q+mn7jGMfIUciApymtiyt3hHpr4bh3rrRCYpyLNQ= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM0PR04MB6900.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(7416014)(366016)(19092799006)(23010399003)(6133799003)(18002099003)(22082099003)(3023799007)(10067099003)(5023799004)(56012099006)(11063799006);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?fw9jGiCs5XP9mqyV7vKpUHzQn4EAztNxuzNqBS4XccMTKMKX+OC/Na7w0ydX?= =?us-ascii?Q?0+urgGyJmIguwQNqgfoRdON5VytUk6oenY8uO4zaPhkYsPsklKqWwjDSxIsb?= =?us-ascii?Q?f/A2aRYMEe4yr+vQuSUy1Cy4EcOJCHutsA48B1chV7jpo+tn2jnSLnrQdXI9?= =?us-ascii?Q?I2Sp8C/1NWCkQWW0a+Ai+XEjoqoMu9MHwwHWTNtmP+9TJsth5M58AafvWDbv?= =?us-ascii?Q?Ca3D6F9Jx4nPc8HOujMruJdjl6tvRuEwevQw2Lnlb+OIqdRBNv1Cv1dX+fTa?= =?us-ascii?Q?ifwWbzN0NEL0NKVxCStkEtM+ietciSYhQlbrAgHRTJ3ioUiyXs3SfwgS/Oyy?= =?us-ascii?Q?45bTJtILjfxytiXZpsgPzUnwcBNxif3Jg0v/oh7NXj22Y2N2HK+vOQfMjtxl?= =?us-ascii?Q?3Z613TnoRRzvVxHr9AbZRAKEXPcU3qVN2yYA5IJ7nNiy2u7aWWwnLytJ1csD?= =?us-ascii?Q?OJf1pzS5TXuMnk1tLc6k9BlnW42olwo4uW623iIEND+xCqudNoOF/sA/6Q+o?= =?us-ascii?Q?E7BArus7UD3Qzn7w4nZoa8xUr1Zk0W2LyA8Y1+DvDWYjfbw6Lu1V7djLxJf4?= =?us-ascii?Q?LSeBiAWR6SbKAmTZ5HtDMG/cPuYden/xXSN3OzP2umoBINdjMEDOAaBVwcx2?= =?us-ascii?Q?K4x++ZWjIg0vS24fxuuXC6lqBFjGe5s5ZyXtniatOzubTljsspm2pcZtCPWc?= =?us-ascii?Q?ezrHKWlKu/zmTRbWXQFwcHR99wg0KfyaS5TUBAFVUlKJjOLktjiPv6KNJ3N+?= =?us-ascii?Q?NUhm7Kcvc4l59KstVGV5ZShOr/HbXSgV9HuvyuLd5ZdS1hXxL/tr5fvAMQb8?= =?us-ascii?Q?LNIz7ONHlncdXvQL1DLAbtWDF01YhsGaZSYg05Xf6egjq+yj7YAdp5kjCHm0?= =?us-ascii?Q?LhPUulegFQlqcHhrrfl18Ska1yo8oQ7g5FmThLZP5CtOzKXscZ0FipSE4hJT?= =?us-ascii?Q?rwt70duJYEbr5KRJrke9agln6yjh4SEWw1KkSDx9tP5P19ds/14J6iBMJcKn?= =?us-ascii?Q?TaE7undAbSfrfZkDdk8Ec6SYwG9CH4T6hKkJNZnqm2RS1skKkJM4d9+psobW?= =?us-ascii?Q?bYBbG+LPgBU9KZtNHIlt9kSYGllzSxpWPt8VYuZaWFgiplg3On/d13RlE5oC?= =?us-ascii?Q?m70r+nu/Yw61popcEFyMOmqPOsERuLOnUYq/PdtTKqRYOeMafRXu5+YwN63t?= =?us-ascii?Q?UQJhzPLMfXst6iThiq8PnrPgWVLzE1UJk9AhJkZIoPmdblyj1TAOvB27lAPy?= =?us-ascii?Q?10or1Fbw5xp9hAwWT+bPFIjJEe1zqZS0qbm5CjP7N/ZzWJ0LoFXVekyuIGgN?= =?us-ascii?Q?S/bTmVmEbfwVxgunlBx1pARP2/TGbRBOVZC9DaqqFJM8tOnxr4ruhL1aMVAn?= =?us-ascii?Q?RoacObFWDEubR/7OXmRgYP4wVnavyYTmcIU/555pfQUieckWFk6mnDtPaQnw?= =?us-ascii?Q?CPR5uxdZpicfkBmjcJ01JaGRRx8laaAYRNACv0dvJCEH7aj16JkEgfeG1NEk?= =?us-ascii?Q?QDpKfGGLl0/P3Vqy2BOvzOZJUB3tTUECzu+ahbZv/0WDvU4oSS8Tj8ULKD7K?= =?us-ascii?Q?plk0JI0UBzpO29fvXEgbOYHHm38iekgZOYzp+kxw5IbmioBYAWf64Jk2SQY4?= =?us-ascii?Q?FrGSfmDD9Sh40f3rr6taDaR+cH8jL2hfpa6x31yztwBLdxxbbs4j6tqeI4Q3?= =?us-ascii?Q?N0CPGLGAdpfFbbzTs0+KH3WSNa/yQk5agk2zzBE0oL+klPog9sggKlBjmIG5?= =?us-ascii?Q?Ez8+X1NEyQ=3D=3D?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6d1345a6-20bf-4c44-7cad-08df13788f20 X-MS-Exchange-CrossTenant-AuthSource: AM0PR04MB6900.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Sep 2026 22:27:42.9423 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: WH2go9rdZ2+WZu6JDNu8C4q286wV/jbdAlAkY/x98ZKG58hr4GlRqUZl8MwqHX5Mt8cX1aSAXFqOwMTnnQJySA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB9PR04MB9380 Content-Type: text/plain; charset="utf-8" The TBCIR (Transmit Buffer Descriptor Ring Consumer Index) register has the BD index as the lower 16 bits, but the upper 16 bits contain this field: STAT_ID: Status identifier. Incremented each time the BDR_INDEX is updated and an error status bit was set for one of the processed BDs. Clears on read. If there was any transmit error prior to the ring reinitialization and this is the first time we re-read the TBCIR register, reading it will give us a value with non-zero upper bits, which is saved in bdr->next_to_clean. If subsequently NAPI gets invoked and enetc_clean_tx_ring() runs, this will dereference the &tx_ring->tx_swbd[] for the bogus (and huge) next_to_clean index, and will result in an out-of-bounds memory access. Other places like enetc_bd_ready_count() do mask out the upper bits, so let's do that here as well. Fixes: d4fd0404c1c9 ("enetc: Introduce basic PF and VF ENETC ethernet drive= rs") Reviewed-by: Wei Fang Signed-off-by: Vladimir Oltean --- v1->v3: none --- drivers/net/ethernet/freescale/enetc/enetc.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/net/ethernet/freescale/enetc/enetc.c b/drivers/net/eth= ernet/freescale/enetc/enetc.c index c9c23e994f6d..0216f7d08e19 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc.c +++ b/drivers/net/ethernet/freescale/enetc/enetc.c @@ -2627,7 +2627,8 @@ static void enetc_setup_txbdr(struct enetc_hw *hw, st= ruct enetc_bdr *tx_ring) * adjust sw indexes */ tx_ring->next_to_use =3D enetc_txbdr_rd(hw, idx, ENETC_TBPIR); - tx_ring->next_to_clean =3D enetc_txbdr_rd(hw, idx, ENETC_TBCIR); + tx_ring->next_to_clean =3D enetc_txbdr_rd(hw, idx, ENETC_TBCIR) & + ENETC_TBCIR_IDX_MASK; =20 if (tx_ring->next_to_use !=3D tx_ring->next_to_clean && !is_enetc_rev1(si)) { --=20 2.43.0 From nobody Fri Sep 25 06:47:41 2026 Received: from OSPPR02CU001.outbound.protection.outlook.com (mail-norwayeastazon11013013.outbound.protection.outlook.com [40.107.159.13]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id DB4734D8D98; Tue, 15 Sep 2026 22:27:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.159.13 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789511272; cv=fail; b=LRCYlPMlwaP0exgC76mz2X/mNDOLB8iuc/SVx0xjFSQlvid+77HuJeaOtwrv4vDXERn7/SE8KFTKS7vCDplCg98bvXTUFU1sV/JFDw7Jo9B7qO4CfBweSZE7MQMwClEA8872EwKpqUpAIpg5/yMZAUuxS2whKtSc7misS1NFUQU= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789511272; c=relaxed/simple; bh=ISlBHnvDTb7om0mUDJY626aw5ycnCuX9g8Z0DlQ9e2g=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=JbGmfZkep9M46gACV63ZRa2b6+L7XuC99mFJTqNWnJT6uLGg6J15snAx5SjXSsMoSgUchagHJaAd/VakmQMdR+fupUZV9N9y3hxbDipIIZC0GniQu5kn+r2krtPZuYK6JgUIiTTEJ+FzXXOxU+OFAqs3f2mj5HiNvUpCKRzlSwg= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com; spf=pass smtp.mailfrom=nxp.com; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b=TfyXuOZq; arc=fail smtp.client-ip=40.107.159.13 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b="TfyXuOZq" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=bpXWJMES5lb91ECHd4VINiwXzgKmyBg1XR4l2sZT4hwiebJwUNU+VuBKZaUoDKTMN+saG5NtC7assmluwzTSu4Dw6PEitHQvvwBoibgc98J5qBDoK0O3/c8SMp4J15yYdGgX2COyuz/vr7juhjSPlSf/3GCrJFf5XyWsVWGNoBfiiWqUcK5GDHizdVxgFEpdy1h9oZij8V2IdK6mjtAtzidpdJa+cqR9dL0NBU5sIlOr0nft8bKRdvRGZD0+Xl4YC6nJuWbqSfaVrD2L4iAApPR41IPUZaDNSxkyqXKsLxNBYP0NeMvJanEAwmMrY5Y+gneYobFhk2pvRQ0ls5EtJg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=CFgTMNhTRhGkRAa9FDrYSsVKcjgVTSmgM3YI/+U02Cc=; b=gWrDz4s7xIjRSZosXmm3aMbtO5CSte3FJEHMSm8EPYguzLfaCbPAppkRjr7GWKmVqVCg6QzSDqHys6t+qCSxFLMy8rDyQ+A7H3hBgwfdh7TzF3a0dwPNG1S156aas3ycwamfui3RfaXkSRy6sCrjsxcaqb7V25VKFs+nuRxUakx06GJctCmCmGOlx4sp4/5CSO5Y3YclLyaabw62Crv86NbME1Jqv2YkFbS6rshnEXG+gqoanAgTCM86x6Rg7Ti6yN2MqLZMCrkf085iS2e3wA411P4MFgQmyzjAVenRRNqs5Os0tlkvHl3vHbdmfk7BOBaDDyesGkx+GnoFYgLkWw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=CFgTMNhTRhGkRAa9FDrYSsVKcjgVTSmgM3YI/+U02Cc=; b=TfyXuOZqh9bOVIfDgu4GY4yKv5QFF0xZ1mXquVg+hgOT3Fsg+Lwf1JHq4keqvSMX719YNSspobpC6ya9mvAO6qXwzRIqYXhx4rz3AtNyPdmwB5xt92uL0T5ki2ugzW7l6fC1sZxbJz9oqy6ng3AQ7xQqdKvw8ZS8Uq7Tq66GfHBaI3eOxPLpdrFP7ns4jrKAlYxso36SjTuhJ9qk+JiBtGMxexWvBNZYOliFYOuU/w3IgmZpJKwDSlqp0i4aD+XZLmmXfSu9dKA10IdRic+T9k+XyebNENBlIRnWoklfO3Bkll7X19iMK9bXIkahsK6+ix9exKIF5mtJSmb/Geilgg== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from AM0PR04MB6900.eurprd04.prod.outlook.com (2603:10a6:208:17d::10) by DB9PR04MB9380.eurprd04.prod.outlook.com (2603:10a6:10:368::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.428.9; Tue, 15 Sep 2026 22:27:44 +0000 Received: from AM0PR04MB6900.eurprd04.prod.outlook.com ([fe80::7fda:8431:ca1b:b023]) by AM0PR04MB6900.eurprd04.prod.outlook.com ([fe80::7fda:8431:ca1b:b023%4]) with mapi id 15.21.0428.008; Tue, 15 Sep 2026 22:27:44 +0000 From: vladimir.oltean@nxp.com To: netdev@vger.kernel.org Cc: Zefir Kurtisi , Claudiu Manoil , Wei Fang , Clark Wang , Andrew Lunn , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Alexei Starovoitov , Daniel Borkmann , Jesper Dangaard Brouer , John Fastabend , Stanislav Fomichev , Simon Horman , Richard Cochran , Yangbo Lu , Ioana Ciornei , imx@lists.linux.dev, linux-kernel@vger.kernel.org, bpf@vger.kernel.org Subject: [PATCH v3 net 4/7] net: enetc: pad short frames in software Date: Wed, 16 Sep 2026 01:27:31 +0300 Message-ID: <20260915222735.1016937-5-vladimir.oltean@nxp.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260915222735.1016937-1-vladimir.oltean@nxp.com> References: <20260915222735.1016937-1-vladimir.oltean@nxp.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: AS4P251CA0012.EURP251.PROD.OUTLOOK.COM (2603:10a6:20b:5d2::13) To AM0PR04MB6900.eurprd04.prod.outlook.com (2603:10a6:208:17d::10) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AM0PR04MB6900:EE_|DB9PR04MB9380:EE_ X-MS-Office365-Filtering-Correlation-Id: 95ee2eb1-b802-4be5-8b00-08df13789040 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|7416014|366016|19092799006|23010399003|6133799003|18002099003|22082099003|10067099003|56012099006|11063799006; X-Microsoft-Antispam-Message-Info: psSpJEyuqCKIBxAe6ZrG9+SntwLyO0/GhYh0MaeOF2EUde3BZ8Sc09Pvb22a/Nu/Fj311fEHpiIqvyvRfDZRQIBGHr251or0jBumH5vqD4cx76Bh69DYo3s6z1/ymLQ+XAIasCN5Y9pMplwzFcVMaCSQp6Xy4OaP5LDG8yfdfpD1CyxjEpjYbI7yukHbsRooKoPsJLqdEsEKBSIx1gcFqR/1WY0e0UJ3CSNFbzmIarRCNVa32FxVZZWgz0O/HpUN6b0kQVzrdguePM73E1s+b1XLoGR0IWKqYRvY5w1zrNqw13uKFRSqvHSbar48g3CDz+QnhcKLj/KYeAieLGdDZskVpSfw2N3QgHcrotkZc8xHg8t+lUZJGYL+KMYHick4R45R1X4vqVoRSgEslDKfBSawrf7zCuduO8tETK84wjJ8yMwq4v6sF1Vyjh4HFvsxSPrnumxATPTExbxhsAALCmyllYBPE+7pYI4iYewaxM1ODgN3Qus3/70KR0yW2NsD7Idf5YtCZok359HcsvWw3MOCZulkFBWYtno/DugJ3T1skpU+3T7wbSLRAI9mTwOeAU5xNKXvbkr1L1wR1Yfb1ksx6ngmyxwrpKtHQBL4+pOfM1u2pWTuDUyWMHQdeqEpuZOugnJpajABWE2r6s5ce3dIUKtc02ctt/rJAFKMF8g= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM0PR04MB6900.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(7416014)(366016)(19092799006)(23010399003)(6133799003)(18002099003)(22082099003)(10067099003)(56012099006)(11063799006);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?U7UdYHUpcCpGVgdx+MFjcWE6ZWKU5uSBXXmmlB+1fac2F8/A86enpwYsvcYd?= =?us-ascii?Q?FKXO9bHNVEfdoKnlPrSBB3BVBh2/KH51o0fcwDTkupgFEtai3J8bZ7gPYaWr?= =?us-ascii?Q?ddDi9oh3fa4HPkZezLnrYDx9+fSJbbkPxzFnq3G76bHBlOPOMMLdj5uYfrLp?= =?us-ascii?Q?6CrohGWI5hNj24STlD6fSgBWLtiommNZQbf7Q5hPF7qv1M5geAX/VAR4CLup?= =?us-ascii?Q?LUklJhKJ7NK8Vq7TMck4XAhcAadTjVMuqS1AuuQxf0bVdnvKlbPWmeezddn4?= =?us-ascii?Q?HQA/VZdPNFmITSLf/eOSR/754NYe6PbwFEPIXjkZv23z3+l6ZrTaKhXP13/w?= =?us-ascii?Q?eZxglVK7P3W+hvyeelzIYPGwtArRkI6ot1qMEcTDrcx5fwVV0oVi8dO9/oHk?= =?us-ascii?Q?42BVphXEPv+BTw0NR59n4I7Ej74gZsN//siTiyXHy8tvDPZ4yKM4dxsT018q?= =?us-ascii?Q?0j2IpOLVudZFzBlZIAvolFzHdN+iO2zeD/bI8I/9Z8s4hpYBqybsiv/83QuS?= =?us-ascii?Q?EjlaIehAZsjZQ8boLeZSndNPpuezFGPeHcaRn+WqR35XWcYVWeUqxa80ZBYx?= =?us-ascii?Q?uyzfyOCqrmFcv9sllD/fWF++QKUBCEuob11JC1LqKqISqYv88ZKG/ESPTimC?= =?us-ascii?Q?hYvZRlZl9u6eIggOfzs1mBmt3ZrkppDHBWRwt8fsGDAFE+baytUzj4RzNawq?= =?us-ascii?Q?UaGtQHIoj6EOWolgz+1TJeWIB7hUucCPwfGMeEcuQlZAdK8RRnMYii3WmnGC?= =?us-ascii?Q?P3CTZ3vCo2y8tXV5zUKxPuZD2Cm+qPt4HhcwPA9HZ/MyXsL/Yi9rpTBsrYZg?= =?us-ascii?Q?wFRnOSSm8ZUKtP+Ni/QtZtrszZRtUsi19JY+lSa0LVly8ywuS7jP/qvGrblX?= =?us-ascii?Q?p3Ov4iUAsSPiU7tTCDJd1aNruq5T2zgX+SilEFTPwS3UWAJzp7UWdyeBtyod?= =?us-ascii?Q?oA57+YkHJDc7n3akEkkUnDiJpFWHVo/4i2Ph2RTDRjigpDxl6hOrBQbPTEnS?= =?us-ascii?Q?vBc26iPa6CPsg4KSTHQl12g9lEcPgs31jhjzuio5wocOtqW+GICPBfew5atL?= =?us-ascii?Q?tAGSQdJA53DWa7Hz4CZpNvAUvp7dCDKuAEF1ax+ejMV7lMStbyU6VS3X32YB?= =?us-ascii?Q?sim1iMYN8XoqGl2OIB6aMp85rfA8nJhM4YXpB8ECkMQkzHC2ZyAmNThbp437?= =?us-ascii?Q?MiNQNjyGrPcX4MbSMD5JWTV9mGQq10LaSgTMB/8bCIRFVMHlOjeV7ETDrVR+?= =?us-ascii?Q?zbu9XEPr28EcktkbYhjkYWuZ9c1X2dVRhatSmDVb4upMSA934oggGbPwz88b?= =?us-ascii?Q?VU/Vdn9sD/RXwsmlSUFEl9ke+b4w5iHzrmsDaOd11yKM2O8/J+hYWnB7YEeF?= =?us-ascii?Q?1+HcMUhRWXAgblMjqgGhQl0yBzhwCMFpyiWGsVU2mNaGqpCW85pJHc/d7MPW?= =?us-ascii?Q?dmDKTuZPwrCFFgI6HXBGdd2bqlDZCjheofgt/M+s8cv7Z67b6J8MR1giXwEU?= =?us-ascii?Q?Kvta+8zVLSYZCTm5uDh1/sPKCLnz8ePYnPqIq33fzIc1NxYa5rvmfC95lz8t?= =?us-ascii?Q?jQYqYTSb7T5jALHb8jsCxcc8ekVjof8EjtDskXYzDpPZM1jSnqZ6qilvjWJ8?= =?us-ascii?Q?nNAugp5djHp9h6x15SE6c8a+LK3K33jpWo8R0X20/Ep1rqmlV37r0wXmQQAK?= =?us-ascii?Q?f2qSgvfIPhgl/z5sGB/6n9+mz/l22HbtfqEd4D8uVCk+f3icqdD2Cc0xSbtE?= =?us-ascii?Q?rUCNKYzr3w=3D=3D?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 95ee2eb1-b802-4be5-8b00-08df13789040 X-MS-Exchange-CrossTenant-AuthSource: AM0PR04MB6900.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Sep 2026 22:27:44.7967 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: QM3NKTfJSrT/YLCPelYe/1O1MOh41jU8QeTvEasf7krZk3/uxv4de2sNBZtJk6sj8iLIbWl9a4VOdIr+r9Schw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB9PR04MB9380 Content-Type: text/plain; charset="utf-8" The ENETC does not support BUF_LEN or FRM_LEN in TX buffer descriptors less than 16. This is written in the reference manual of all SoCs supported by the driver: LS1028A, i.MX943, i.MX95 etc. Frames must not have a FRM_LEN that is less than 16 bytes. Frames of 0-15 bytes are not supported. (...) The first descriptor in a chain must not have a BUFF_LEN that is less than 16 bytes. I don't think proper attention was paid to this during development, we found the text at the end of a bug investigation. Therefore, the driver does not enforce this. But the frame length is out of the driver's control, and the network stack can actually send packets with skb->len smaller than that. The result is unpleasant, as will be explained below, so for simplicity sake, we just pad anything shorter than ETH_ZLEN. Zefir Kurtisi found a case where transmitting L2 WNM keep-alive frames through ENETC would soft-lockup the host through an IRQ storm. He later distilled this into a small enetc-killer.c user space program which sends a packet with MAC DA, MAC SA and EtherType IPv4 (14 octets in length) through an AF_PACKET raw socket. The IRQ storm is actually a curious effect of a chain of events. The hardware behaviour, when an invalid BD is put in its TX ring, is that it would transmit the packet as normal, update counters, raise completion interrupt as normal, but it would just not advance the consumer index of the ring (TBaCIR) to signify that the BD has been consumed and is available for software to free. The ring will also get its TBaSR[BUSY] bit persistently set to 1 afterwards. It deserves an explanation why the behaviour above would lead to an IRQ storm, since ENETC interrupts are message-based (MSI-X), and an unhandled interrupt would typically just be lost rather than retrigger itself as a wired interrupt would. NAPI processing in ENETC has 3 steps: I. the enetc_msix() hardirq handler disables RBaIER, TBaIER and sets softirq processing to the 'pending' state. II. the enetc_poll() softirq handler for the IRQ vector walks through the TX rings affine to that vector, checks which ones have a TBCIR updated since last time - enetc_bd_ready_count() - processes those completed frames, and clears pending interrupts in these updated TX rings by writing to TBaIDR. (I've excluded RX processing due to it being irrelevant). III. After the softirq handler does its round of checking all RX and TX rings for updates, it re-enables all interrupts in RBaIER and TBaIER that were previously disabled by the hardirq handler, and exits. Because the TX ring with the short frame is skipped at step II (TBCIR wasn't updated as part of HW malfunction), its pending IRQ is not cleared in TBaIDR by enetc_clean_tx_ring(). But because enetc_msix() disables TBaIER at step I and re-enables it at step III, another MSI will be fired upon re-enabling it. This is what completes the cycle and the driver goes back to step I. So the driver misinterprets the mixed signals it's getting from the hardware, and ends up causing a software-amplified IRQ storm. Fixes: d4fd0404c1c9 ("enetc: Introduce basic PF and VF ENETC ethernet drive= rs") Reported-by: Zefir Kurtisi Closes: https://lore.kernel.org/netdev/b3d9136c-2803-4203-b1ea-1f9e62de80a1= @gmail.com/ Tested-by: Zefir Kurtisi Reviewed-by: Wei Fang Signed-off-by: Vladimir Oltean --- v1->v3: none --- drivers/net/ethernet/freescale/enetc/enetc.c | 13 +++++++++++++ drivers/net/ethernet/freescale/enetc/enetc.h | 2 ++ 2 files changed, 15 insertions(+) diff --git a/drivers/net/ethernet/freescale/enetc/enetc.c b/drivers/net/eth= ernet/freescale/enetc/enetc.c index 0216f7d08e19..bbad942041f5 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc.c +++ b/drivers/net/ethernet/freescale/enetc/enetc.c @@ -1077,6 +1077,19 @@ netdev_tx_t enetc_xmit(struct sk_buff *skb, struct n= et_device *ndev) u8 udp, msgtype, twostep; u16 offset1, offset2; =20 + /* Hardware does not support transmit buffer descriptors with a total + * length of less than 16 bytes, or a first buffer size of less than + * 16 bytes. + */ + if (unlikely(skb_headlen(skb) < ENETC_MIN_BUFF_SIZE && + skb_linearize(skb))) { + dev_kfree_skb_any(skb); + return NETDEV_TX_OK; + } + + if (eth_skb_pad(skb)) + return NETDEV_TX_OK; + /* Mark tx timestamp type on enetc_cb->flag if requires */ if ((skb_shinfo(skb)->tx_flags & SKBTX_HW_TSTAMP) && (priv->active_offloads & ENETC_F_TX_TSTAMP_MASK)) diff --git a/drivers/net/ethernet/freescale/enetc/enetc.h b/drivers/net/eth= ernet/freescale/enetc/enetc.h index d1e9d9130057..a4e76060e94b 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc.h +++ b/drivers/net/ethernet/freescale/enetc/enetc.h @@ -22,6 +22,8 @@ #define ENETC_MAX_MTU (ENETC_MAC_MAXFRM_SIZE - \ (ETH_FCS_LEN + ETH_HLEN + VLAN_HLEN)) =20 +#define ENETC_MIN_BUFF_SIZE 16 + #define ENETC_CBD_DATA_MEM_ALIGN 64 =20 #define ENETC_MADDR_HASH_TBL_SZ 64 --=20 2.43.0 From nobody Fri Sep 25 06:47:41 2026 Received: from OSPPR02CU001.outbound.protection.outlook.com (mail-norwayeastazon11013013.outbound.protection.outlook.com [40.107.159.13]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9BF654AE12C; Tue, 15 Sep 2026 22:27:52 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.159.13 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789511274; cv=fail; b=Y/lkqRFbDnLwqbE2NyVFvOnzTk+yBqXYcL6teFw5NsKTVlc+cumPnwwIVn0Do8o7NmyMm/jgfjtskzZrwmZE1vUp/62vaRzSuaE+kGHvZUTrSwSVirDTG9lh3Mz2Fk2OeI9kYNLWlE5xsbzeZzPEIDZoL+6pOaFiKhUx+dAtQ+M= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789511274; c=relaxed/simple; bh=Xf48Kfy741qIVwvD72mmB83cEbj61t4N6qrUF4CLV04=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=gOZRS4mr4iUVJVgRmyqI4FxxJOfDSvHGlGlxw2hCWAL2JrV+mDeL97rJUWJuFY60wvdn9rSEjHfhlQpe2jalWY3G/Ss2+GMq1En23Vj4T1JD6+4XanBW4dPfKyCFd+lEbZe3O7iEHf0emJNEU8iIgpN29vNxRJy4mOjEsbOW4XU= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com; spf=pass smtp.mailfrom=nxp.com; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b=JGs3aQx/; arc=fail smtp.client-ip=40.107.159.13 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b="JGs3aQx/" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Nxno3gQpupv3dJkGf992NrckZPMConDWkn3QGZeAt45nEtQkl9bHqaQ5gNAhXt0t3nyl4JpPQX4zXm8Itkba4xAZtXwwqhZEFWD7vBdTlk4D/GzEgY+GKAPl274X1icpRSoWnUVXD6i0P8hB8gPjIb5eG8S19xdP0t9mTuOZe99ioEkBAqyGl3/rJKGAL1D3c3N5gDPKH+ajW4XWqTVgTwdKehGt/RoDXlK2UwpChDF0rd8A6LVlXHu5t9XBDvb8MViRBV7ksfk1B+qCI4QbbSnEENL8QKwH0PKKnLXBJMi1kJKfIcdrSU9kpkQHzgTKsTnErp5yok9rxInkapq0NA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=6xYyBxotID8EIiXoChhbm81Gitmm/J011zwlGYFFCBA=; b=LQ66PLiMmE/VLLu8KtaxYQI8ftF5nQfwZvD4PWPO7xPGhAAt696BJJKKVaJ4BmmWS79Jysr3iqsV8qTm07EqnunZ6hq5vpPrwmpCethStFg6ZCih2ZXKC1xlDCxp8ED3+vOuQGhe+1wUUgOmiaxJjIG5dxtb1TIazsQBwAONqqPduN2b1x3JaEGurPxIXAR+YOdsVn68m/q6F+86zCKfUfJaJZ03J+j6C79XrJ467rblBEJH+08BRyFQ2ki5pAq7cNv//IEEpCJuN1Vqe8AUNxuPtn/CxrWbtdRLffPaMx1IyDaLwxv3M7cOB8k5SHTTvf4762AxZOp6VMaZvYFMsw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=6xYyBxotID8EIiXoChhbm81Gitmm/J011zwlGYFFCBA=; b=JGs3aQx/wH586oj1NpCrxWg8FSJi0vqlkgKO6xl9mmz+a6+Q6rPiMHWllOzlir7ICP5P0/NbfmSW9lmRH7PPVQJbB+LXJwhxJg62w/GdfSdJJiofIZLYn71E5VW1W0y0mYWpPGGZyMt+euIYWYhX6Fyb8GTr/fZZBRrxiKyMVMHlJ7p3vHp/hN6VoWS0aKFeS3nd8n3kHpV7ORSH/qV/wrebwMuFmbXOAJW4DrYEmQBJ7Q4n+eFhZ/sifo1PrgAsEq/klM6fi61B7E3ahDXAyWUuuWG1SmV11+PtWnRPu9H7CT0ktk1SznhfrP0kt6wJVEHBKm6ihMvwji2iSEbaFw== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from AM0PR04MB6900.eurprd04.prod.outlook.com (2603:10a6:208:17d::10) by DB9PR04MB9380.eurprd04.prod.outlook.com (2603:10a6:10:368::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.428.9; Tue, 15 Sep 2026 22:27:46 +0000 Received: from AM0PR04MB6900.eurprd04.prod.outlook.com ([fe80::7fda:8431:ca1b:b023]) by AM0PR04MB6900.eurprd04.prod.outlook.com ([fe80::7fda:8431:ca1b:b023%4]) with mapi id 15.21.0428.008; Tue, 15 Sep 2026 22:27:46 +0000 From: vladimir.oltean@nxp.com To: netdev@vger.kernel.org Cc: Zefir Kurtisi , Claudiu Manoil , Wei Fang , Clark Wang , Andrew Lunn , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Alexei Starovoitov , Daniel Borkmann , Jesper Dangaard Brouer , John Fastabend , Stanislav Fomichev , Simon Horman , Richard Cochran , Yangbo Lu , Ioana Ciornei , imx@lists.linux.dev, linux-kernel@vger.kernel.org, bpf@vger.kernel.org Subject: [PATCH v3 net 5/7] net: enetc: pad short XDP frames coming from devmap Date: Wed, 16 Sep 2026 01:27:32 +0300 Message-ID: <20260915222735.1016937-6-vladimir.oltean@nxp.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260915222735.1016937-1-vladimir.oltean@nxp.com> References: <20260915222735.1016937-1-vladimir.oltean@nxp.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: AS4P251CA0005.EURP251.PROD.OUTLOOK.COM (2603:10a6:20b:5d2::10) To AM0PR04MB6900.eurprd04.prod.outlook.com (2603:10a6:208:17d::10) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AM0PR04MB6900:EE_|DB9PR04MB9380:EE_ X-MS-Office365-Filtering-Correlation-Id: e4b3a246-3aca-4dd2-338b-08df1378913f X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|7416014|366016|19092799006|23010399003|18002099003|22082099003|10067099003|56012099006|11063799006; X-Microsoft-Antispam-Message-Info: 54B/A2t8Xe0paepLOvJ6c6pMvNkraC/1CsKvTwpGp1PboufsmxAUKZHJcZepJDXUDvXKTn8uS7682yf0vMWwRNcn8AYXNv9hAQIiPwkf2zF5He1Jk3qV1yvlaf5RuLIfvUfeJbiRHcL08WTrFYPG8oMUZoMIeCxR4IMalaJhtWVjaAm82ryZWMfJ04y8L0qNnJtv9GoU75t4YDK3JjK23tuGycv5fuJGCcf0ILDtEJmDjEmw+YKSAqun+TQRnd5UL5Ez7KuAKKsKe7BXFCtmIZKaKSZ5gejq1TdCz88EHTRv5gDcKQZRCPYD8c55GlUWgNSRanwDOotx2G8Ztiw2v9nHbp6fh5dJ0mzeNy0jyK+5ucXnXKY8RldgoapFOmUJupLAEUWGd2SLvdaRlG1v6KUdDo7Cpgei7eoqgERgXiPi2wD6furt7FNKIhKX673dEBKtB4P+PZZGPG1j0OEV81LJQA+0MLR0h2Bf6ZIll9WSgJCZWlYhLUgUavYc20j4qXTlg+u++K87OYSlcYYLMCfIL+C6zr8bNJ9YPpC50jUpoC4rh2ZwRp3iZpiHKP6eMOGgd/ZMz/GDZZ4zuSi6ZuIAt8/1hKK+bi4uTsz8vJWRCqbWXEfJ/2fFEgtWGxSVCrS4GAslyX1QiutYUf8Wx2v0rwUjUpLz8b1wYvEdzG8= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM0PR04MB6900.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(7416014)(366016)(19092799006)(23010399003)(18002099003)(22082099003)(10067099003)(56012099006)(11063799006);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?O576wQFrgSGsRvcmxzTMFglHK3WkYJZhWAEZyVGuwipkdNA9vPr91YpSY/ga?= =?us-ascii?Q?yjI2hgSCf8jxeM2GW+Xxd4lAsMsGe00j08OBBA/mOGV9bTyD4qAG7YXodd+T?= =?us-ascii?Q?PbkzRDeV5e2leDeDZzUmAREac3PLU+6WU48IS3Q2AIiVDuYoLauR8PY5+A34?= =?us-ascii?Q?uYN7e/ebSXhJ2V50A2/AApVNQA2DP/c+BaIRMPi+HfjalINgbD8+89MzUHWy?= =?us-ascii?Q?8+nXS2l91mLpqjW/EiBwgFg9wFEjw9xhAjbYixilz/0wusuwjvFIKXtKCHpo?= =?us-ascii?Q?pIR/XwWsTIU7oz4GZbhJJs//flFf7922c1T4y0YUqmy9f0MowGM/T+jQCfIO?= =?us-ascii?Q?57hRVNfe2UXmLTjBqeijt0IP1tS9VaErOyIBpDezK4p5mV97Vy+wI/yzPEdf?= =?us-ascii?Q?TGYSikmJEcO+Cwo3pPaIAE2miJJ+ycUBrjI/Xv5JngOLDtafnCdoa06UJffT?= =?us-ascii?Q?RUz/W6y5QmuVxstpS0j3BL0w409DSTfYXw5aNX9X6LOwG6u2iOkMaX0sT3tt?= =?us-ascii?Q?woGurTuaU+FM0NW79mE0IGWJ0EZ/bLiCv9TT0xi7Pae92Vufs7VLWkEjtcrd?= =?us-ascii?Q?M52Z2P0yKeSzFV2vX4dkVwOL2mA03BrfMLPknv5HP4gIpEx9+NYLdAEQG+D6?= =?us-ascii?Q?ZNw653myQbuxp8VLo+rCIwLqF5NSssqYNoRP/k5+4I07ljARi31edCDdrbV/?= =?us-ascii?Q?REHZoLVcELTv69intjjRglCzww8QeuAdUefmgLFD4jFhwzsRd0nc+BUKP86d?= =?us-ascii?Q?UNlDHTFJMj/O9Q7sNAanXNrYY9LIbDYAhXuhZrzB6OPfecyvFN/sHklcBv4/?= =?us-ascii?Q?7AYdNs4thq/QIGgk3TkRzWP/t2mhAsdcqvuZA+7tL91iaufvM0REtvKpMlnq?= =?us-ascii?Q?k8Z+CSwCHQNAzTtMFJ9wMmnfh/eBl9ZRoWWr8pFhpRtO2lTni9KsKTqd+Awe?= =?us-ascii?Q?mtCcuTE5N/ynRSDlmF7utghLzJgztbLLODgmgfjMCmy/Z0oK5LtAp+pGP2HH?= =?us-ascii?Q?Fmxa/kLmP+8Jb61EigY99VPxh2/B6vTpz6DMnNOlObjw7DGZD6xpi6qDl9R2?= =?us-ascii?Q?YulLpIwYkQSrc2mSnMrO18s3V7KYttIr4nLslvbKTSx9fgSgKpQ76a9BA+yq?= =?us-ascii?Q?+xLeuF0wNQmlgHTb2wHf8d12veRfFeGXpjBA+eQTxDNdsRJ6NjqTDlmER8fn?= =?us-ascii?Q?F149NtAp7kXQanVkzrASrZmLHqo/8/FxkwNXr0ISaylDWdbovJuN3yXEAytR?= =?us-ascii?Q?1bXv+6e84g0TM5LvLwn0GejrfSY0T135OHJ3yiNgVuYZobPks74rLDqZsX9l?= =?us-ascii?Q?lVDtQ8/XIWIzsxDhviMVp1geqdy340gmiuNJyorZZh9ldK1Lo7He15Vkt4pA?= =?us-ascii?Q?9lunfMjPhl/IfUDo8LPukS7Tgq32bCOGHY8vRe3vB3LmG4SOqXoXdK67hseQ?= =?us-ascii?Q?NdPKotV/j7eUwPlTtzTQ8+iU9EzR0woRpvnN7B3CwOmZQ1X7LehSICoSh3oR?= =?us-ascii?Q?KPApTqJRZPSyFKEQ0ui6tTGO7FvLXNLiBeBBu63lrQQR97x7e8iZQJcPL0tJ?= =?us-ascii?Q?vvbTi1W1B387FuGEhSGbhZBWI3oIz+rSUstIJ4rxhq/T3OelMIDNdyVQ+2g3?= =?us-ascii?Q?Mdx7G3ke5MlpW88sHLsyQqnrRSFbZBjMXCHqiV2axX5YJ0OYOkgUY/ZoMsAE?= =?us-ascii?Q?jUmrPZTGemT0QbixcquTUbhx9guwuAU5552RFI4Q1R/yP1cnS3mkzwddptHV?= =?us-ascii?Q?s5w6Rr0mGQ=3D=3D?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: e4b3a246-3aca-4dd2-338b-08df1378913f X-MS-Exchange-CrossTenant-AuthSource: AM0PR04MB6900.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Sep 2026 22:27:46.4732 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: SDsjwHdgt7rX2kwMdVAKCIcfRwB8wfiPuNfRtqKI8EFncxd0AFg723ODB0gyGhCfeGSpoo1RNz/dUr7Mv4jnQg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB9PR04MB9380 Content-Type: text/plain; charset="utf-8" Similar to the skb path issue explained in the previous change, ENETC could end up transmitting short frames coming from XDP. The way in which this could happen is a bit contrived, but it involves XDP_REDIRECT from a veth interface pair. As for enetc_xmit(), there are two separate limitations for the overall FRM_LEN and for the head BUFF_LEN. For the head BUFF_LEN, we add a direct restriction in enetc_xdp_xmit(), and for the overall FRM_LEN, we introduce a xdp_frame_pad() best-effort generic helper which we call from the same place. This helper alters the frame, but that should be safe, because ndo_xdp_xmit() is the hand-off function where the XDP frames become the responsibility of the driver. AFAIU, struct xdp_frame doesn't have multiple copies. I say best-effort because xdp_frame_pad() can only expand the head buffer of an XDP frame. It cannot expand the last fragment of a multi-buffer XDP frame, because, unlike bpf_xdp_frags_increase_tail(), it lacks access to the rxq->frag_size, aka the capacity of the chunk of memory being pointed to by the fragment. So, if the frame happens to be less than minimum Ethernet size, but fragmented, callers of this function will have to drop it. Fixes: 9d2b68cc108d ("net: enetc: add support for XDP_REDIRECT") Signed-off-by: Vladimir Oltean --- v2->v3: none v1->v2: - handle multi-buffer frames instead of being unaware of their multi-buffer quality - add separate restriction for BUFF_LEN - increment drop counter --- drivers/net/ethernet/freescale/enetc/enetc.c | 14 +++++++++--- include/net/xdp.h | 23 ++++++++++++++++++++ 2 files changed, 34 insertions(+), 3 deletions(-) diff --git a/drivers/net/ethernet/freescale/enetc/enetc.c b/drivers/net/eth= ernet/freescale/enetc/enetc.c index bbad942041f5..8a9ba168eab1 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc.c +++ b/drivers/net/ethernet/freescale/enetc/enetc.c @@ -1838,15 +1838,23 @@ int enetc_xdp_xmit(struct net_device *ndev, int num= _frames, prefetchw(ENETC_TXBD(*tx_ring, tx_ring->next_to_use)); =20 for (k =3D 0; k < num_frames; k++) { - if (xdp_frame_has_frags(frames[k])) { - shinfo =3D xdp_get_shared_info_from_frame(frames[k]); + struct xdp_frame *xdpf =3D frames[k]; + + if (xdp_frame_has_frags(xdpf)) { + shinfo =3D xdp_get_shared_info_from_frame(xdpf); if (unlikely((shinfo->nr_frags + 1) > ENETC_MAX_SKB_FRAGS)) break; } =20 + if (unlikely(xdp_frame_pad(xdpf) || + xdpf->len < ENETC_MIN_BUFF_SIZE)) { + tx_ring->stats.xdp_tx_drops++; + break; + } + xdp_tx_bd_cnt =3D enetc_xdp_frame_to_xdp_tx_swbd(tx_ring, xdp_redirect_arr, - frames[k]); + xdpf); if (unlikely(xdp_tx_bd_cnt < 0)) break; =20 diff --git a/include/net/xdp.h b/include/net/xdp.h index aa742f413c35..276afc9aa21d 100644 --- a/include/net/xdp.h +++ b/include/net/xdp.h @@ -477,6 +477,29 @@ xdp_get_frame_len(const struct xdp_frame *xdpf) return len; } =20 +static inline int xdp_frame_pad(struct xdp_frame *xdpf) +{ + unsigned int total_len, pad; + void *sinfo; + + total_len =3D xdp_get_frame_len(xdpf); + if (likely(total_len >=3D ETH_ZLEN)) + return 0; + + if (unlikely(xdp_frame_has_frags(xdpf))) + return -EOPNOTSUPP; + + pad =3D ETH_ZLEN - total_len; + sinfo =3D xdp_get_shared_info_from_frame(xdpf); + if (unlikely(xdpf->data + xdpf->len + pad > sinfo)) + return -ENOMEM; + + memset(xdpf->data + xdpf->len, 0, pad); + xdpf->len +=3D pad; + + return 0; +} + int __xdp_rxq_info_reg(struct xdp_rxq_info *xdp_rxq, struct net_device *dev, u32 queue_index, unsigned int napi_id, u32 frag_size); --=20 2.43.0 From nobody Fri Sep 25 06:47:41 2026 Received: from OSPPR02CU001.outbound.protection.outlook.com (mail-norwayeastazon11013013.outbound.protection.outlook.com [40.107.159.13]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 307B74B7166; Tue, 15 Sep 2026 22:27:55 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.159.13 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789511277; cv=fail; b=SnXdYwvNvrIwM12ib9vUmfC/pbyllRRGysv2CTut1SGeIG458qQUf8RItNActZKUKwY4U12lxKaQ3H8wPSQl1lIxyWIgdc1n71eHIW3L2lGQh7SjMZAs3CDeJCmZ5zAdzRgTtI4MB/169/9iv9TMIsIOxiU94qmfQWhXnu3JBbQ= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789511277; c=relaxed/simple; bh=NLE4c53WtOGGkU1yPFgRILEGXtPy2sizyfc+qBvHdyU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=u/FY/3szEPUMjesWjigkTssuV3N64dTl5NCkqUwGMcvMbBwFTladg1RLjppu6Wo/p/tDMYNPIhSjNfdkhFELrq/qyg4w8b2rDU0kh+HCeMvm8Ns68A+UQyU6LZy9xM2+QMR7tOMSWUPcX0bvbGBN+3sADDryZMH890vG+u/W5Xw= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com; spf=pass smtp.mailfrom=nxp.com; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b=Xb9UaV0X; arc=fail smtp.client-ip=40.107.159.13 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b="Xb9UaV0X" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=QOC0V1lBqKWYN3q+fP63+Vm4WOmtSk6oq/8U82F7sZGLAu2Jz0b79oj7IFFBITUjj7IKFI3jDUs4s9Iy+ebWotKlInujQePUP13ENTxkBY8s0vvs3ODGT8QLhr4R8jbelAb14UCC7MCYVLLlm7dFsmqbhTL16iHaR9zY14lO2/8OKo1OspIMcH30on89ZQxyo4Q8Yyf7XDwOih5Mprkae5P/hboRI9MFmmrSDFQk3bY7mUwBelbeih88bGLuiFC0fmH//+ykrt2YXgC71Rba9nsrlv4wZrtPRuUcMDyik3++U++q6/pxs7SpfPIQIMoasolw9+UZrVhL9qBLtxvDNQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=/6p2VSiD4j6thoEutAQkWM4wLafFMLn9MsGPehqU/xw=; b=QL05LHPi4fHXJbJCGxxNCklajV8Nph0ExADAiGTcPblBd/phvgsQK03TEa3atRkFW8J5yA0KFDHHLEhQt09VNWkojq0H/FCeQxnulx/gBZxWmKKiTm0CyBWLTVJD8Iaalxf5AsHPzlioVgw5Jq0t5wObb3aKO97vrzuszZQBar/6yoJdj3hqIk6qodcOvTd9rRvXG2tKCVSo4cgyd1gzKf8gUeOfwQ3PBwzWILf1Dem1c4huxpMU9R9vAfay5xDA1dyXlBwbdRuFI0s9qXe8oPXbPX3HF6UYx4iL0PaSfQ2Cfs6UmyPqScRy2tzt+DQBuETWmVEHD/EmZcRNJrG8kQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=/6p2VSiD4j6thoEutAQkWM4wLafFMLn9MsGPehqU/xw=; b=Xb9UaV0XEDLnotpWaT/3mZulwO9uYzviKyGTqWqxn2uELvhkrorUFZ3gt+4MwyHirRuHMKn+KdMM41FACLq1fUPotCFpDg7rXkMqwWlUuICdh3pFAOaGRT0ZmNLyD6wdCnIL/B5cIcZs6AsfG5Cafw2hJNorp0RMgRKWrJGu2+2AjiDd+gPcDbAcdRrdREOaKTyGlUgRcqeGJ9XV4/NnIf+RFZAbwB1qaMH9uPf26m92veBVA2nt+m2K7wtfJ4sjwhyhZ2jH9vPaQQQwe+nt2MYWa2ZK45RqIu6UaGy41g0m8xLqSZSMuYCvx2yvld2y0tDmeAgNqu98PYGld1tkqw== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from AM0PR04MB6900.eurprd04.prod.outlook.com (2603:10a6:208:17d::10) by DB9PR04MB9380.eurprd04.prod.outlook.com (2603:10a6:10:368::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.428.9; Tue, 15 Sep 2026 22:27:48 +0000 Received: from AM0PR04MB6900.eurprd04.prod.outlook.com ([fe80::7fda:8431:ca1b:b023]) by AM0PR04MB6900.eurprd04.prod.outlook.com ([fe80::7fda:8431:ca1b:b023%4]) with mapi id 15.21.0428.008; Tue, 15 Sep 2026 22:27:48 +0000 From: vladimir.oltean@nxp.com To: netdev@vger.kernel.org Cc: Zefir Kurtisi , Claudiu Manoil , Wei Fang , Clark Wang , Andrew Lunn , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Alexei Starovoitov , Daniel Borkmann , Jesper Dangaard Brouer , John Fastabend , Stanislav Fomichev , Simon Horman , Richard Cochran , Yangbo Lu , Ioana Ciornei , imx@lists.linux.dev, linux-kernel@vger.kernel.org, bpf@vger.kernel.org Subject: [PATCH v3 net 6/7] net: enetc: linearize PTP event packets with one-step TX timestamping Date: Wed, 16 Sep 2026 01:27:33 +0300 Message-ID: <20260915222735.1016937-7-vladimir.oltean@nxp.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260915222735.1016937-1-vladimir.oltean@nxp.com> References: <20260915222735.1016937-1-vladimir.oltean@nxp.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: AS4P189CA0017.EURP189.PROD.OUTLOOK.COM (2603:10a6:20b:5db::7) To AM0PR04MB6900.eurprd04.prod.outlook.com (2603:10a6:208:17d::10) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AM0PR04MB6900:EE_|DB9PR04MB9380:EE_ X-MS-Office365-Filtering-Correlation-Id: f181763a-295d-4057-0d8e-08df1378923e X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|7416014|366016|19092799006|23010399003|18002099003|22082099003|10067099003|56012099006|11063799006; X-Microsoft-Antispam-Message-Info: FvRFZ0vxLmrBfIoQJGDaAI7PdIAZqePNQHYQjSAY+Mtbzmlkmz4qkyg5X3mOkODqnHqVzcXWXVX9k720rF2y0BXxVzhs17aMJFKO85qCiq8po5OjwegwZ3751bLlydMbbJFuIqL7nugtb2eRTLwPUai2SYRRGot2kZr5AtLZ8UVmYJsV5YCxZjTBCV776wprfhF2Cevqbf58Aa/bovkLsqnUAFyaQgsmt2EFDRfq8pvAh3axLXXUOkngiEtxlKZXKXz5cfRfaAoj6xsKv7ZK5jOOUOnrweczvi72uKXV9k47HdR98YjkLNDaOZ0cYrcZHdImhqkLw/W+nrM50FR4o1EvjcpVIpcs5YI3TBqEx3jcO7srWvVntm6Nv2fNVRF+idiXrHjW7N+nWJPrX35tibuwAHTuKJDvg7xB+jLiIPq3dn1QmRSJm14CRU4ehK3ccA327IuHWGqNr3CpFAUZ2psTo7xHclJrw71oFOFRsG61EEA+bV3nN/s65Q5I45SOtsT1HrAuIYp7vPZ3i1ShZn+wdxjV7K8GlSHyzHuT1qDN8efv+9q5aBIldpvwjv/jVDcoCCI3XAGQe/fFbjZemSm5fmsyebq+hjU+J9CU6Ws= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM0PR04MB6900.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(7416014)(366016)(19092799006)(23010399003)(18002099003)(22082099003)(10067099003)(56012099006)(11063799006);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?Pd+kNYOypS7q3EUTgP6I0m6iprSWdydZekCbdk7knDXCvHxd9LdFNLkP/LfL?= =?us-ascii?Q?E7AM16qLO8qjCfTkR7dxb05xJiY3Ff5Mpazn2myS8AwBlnFFh8aGKvO9zClK?= =?us-ascii?Q?3eLVngx0ELaYfbdxWYtAdjpWQVxCJJcpPOzsS+c1vBQgPUkaTike+w07yrBJ?= =?us-ascii?Q?zAZhgTcG2B5x8pcXb/m/qKC3Kznyy8Csk5MQqyiiWGRv2rTOIcajMAd29hvQ?= =?us-ascii?Q?ZRpbokyZ7Cic9uV7Ca+a792ZldnuMvlDN2Xg9bmkiy7TdY9cILk4sKm5469g?= =?us-ascii?Q?SuyIku1fq+YqM0JoyMeCu0CbHPHhoNYdNFN9YISZsK28F6aFjf5Ol/T2EC+t?= =?us-ascii?Q?xtYTluuPcBMoEDXCkz3aNGANv6Mo3QTF05IY9gp11Tx1/TfeXsDzWrsyxfFi?= =?us-ascii?Q?Ve1PakqrybzTBVytPVXKsf58pRAkZuxFlYoALBPGBuD3qNxZkku/VtZwK4zz?= =?us-ascii?Q?HBBrphPmpZ8x6opHg4v8oK2PAPOS1vVDQMPG/SOOmK3wfjdDwM1Dq8ajCQfo?= =?us-ascii?Q?UQv+vyhDs9iRDY8N+gUOyWHYxiV7spaz8xRdxGwgK6q6JqQIF4d8BoemZ+JL?= =?us-ascii?Q?R/CyKDgvbdZt5X3IIc8LQAUo1KVc6JVnPtE6ButhtWDpgLmX/+dbMRddTNwf?= =?us-ascii?Q?DgjniwOMydPKV7dEyUKb/poCbYG6ky17n6HV6hj67hJ+wKsTwKFHnvJfEFax?= =?us-ascii?Q?qXzEm1UaOk48vJgC36y0tepFbDUtq1wPEbMaiX0p9XrajJr3cXw6AbUQB8Pi?= =?us-ascii?Q?vHW+EuNVSpcxfqaV4c1rVHm/RhaVBiFXJ0C6lnHtqqLCkhFuooPlQ+Nz1h/O?= =?us-ascii?Q?FKtaTNAm/CnDzkMBBZRWmICvl7U138ScM+1FJ2CQKxNunZLpD8RuK5ixEBK0?= =?us-ascii?Q?6jzFitqHWjMTIOJrgD8EE3dIH1pWU1YZQzTMma03LhJBnyFqNHjMQHEnllxK?= =?us-ascii?Q?y1yg21RHbINnXZbAIrI+aReyrwn2UYdaIecFYVl48qJ2GEi/gW+MP0dyZb9N?= =?us-ascii?Q?nKEbIYbHe23PbBN5lYUDsCWr50CztpzvJEpeYCu5L5RSSLxbQxNccrxJxGIv?= =?us-ascii?Q?TX1vjwECOCm8IpNmt+/OoxsaSeFP1LsbWM1CRbVdPwavwNQvJvs35Q7ApBJk?= =?us-ascii?Q?EpcBL88EAMVtNcveh1Aa9aOmlw7vjLhdtikcVOy0c+RMJ9klGvBe/Upetewc?= =?us-ascii?Q?PqYkohJynibldEEn5Je4V+s+zjLmhRAnGRnd+n/d7Dm8i3DuqGE+9WjYOi9j?= =?us-ascii?Q?W4e+VJ66juan89fb4qpkygsnwXpoD1ovquA1RXJAeSDlZDA8AOrHQSLnCX8V?= =?us-ascii?Q?gSpdjvVVLAmce7XGC8LVJI726hRAnjNXdBzn+8/BICJpDborUsSG+Qy+LhvZ?= =?us-ascii?Q?j1Lvow0V3DjCkZP4NV52YenI2sIT+1Dm3l83BmVtuns6lEGHhoAZHi+z33w1?= =?us-ascii?Q?9AFiANdu6EtDVGvgDgIwTLkap7Tku91CGIQiksg9cOr9f5Gyd69NCT7VXJ2d?= =?us-ascii?Q?b9aBX802H5/zEVluCh+Z4I+4VOn3VFarAxPItwiODdSP/sIZPVZbTuQ0gx2q?= =?us-ascii?Q?0glNv+itUELlLjlbydmCR6gjqKfD2oR/wiBdugyabKTckBaVhX0S1BzJirIs?= =?us-ascii?Q?5dqtR4zbIemCzxvQgeGhvm+O+3hliqRxth6RDn+Dp+IQnPHHGmN/ad+r1xTq?= =?us-ascii?Q?qNTt2I1pfnEviAFxYBJ7M+4OujMTsT2fTN4ECMspJXeBtn/Nx0g9ZfyvKJDA?= =?us-ascii?Q?pDBc7bZmgQ=3D=3D?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: f181763a-295d-4057-0d8e-08df1378923e X-MS-Exchange-CrossTenant-AuthSource: AM0PR04MB6900.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Sep 2026 22:27:48.1450 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: gnsvH9etdtOXxnQywgplLp9RNbPYnUO7itjSzxPQ8NAZyS0vUUCm9KvgyvmchBcAuyCKW03WZF/JPX4nKhN0cQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB9PR04MB9380 Content-Type: text/plain; charset="utf-8" There are two distinct problems, solved with the same skb_linearize_cow() call. First, enetc_ptp_parse() uses ptp_parse_header(), which does not handle fragmented headers, and expects the entire area between skb_mac_header() and the end of the PTP header to be linear. When the driver fails to parse a fragmented PTP frame to find the offsets to the originTimestamp and correctionField, it falls back to two-step timestamping, which is technically not what user space asked for, and it may not be prepared to receive the timestamped packet through the socket error queue. The problem can be avoided relatively easily by linearizing packets with one-step timestamping requests prior to calling enetc_ptp_parse(). These are infrequent enough that this should not be a performance problem. The second problem is that later in the TX path of these packets, enetc_update_ptp_sync_msg() modifies them by writing to the originTimestamp field of the PTP header. This is not safe from drivers because they may not hold the only copy of the packet, unless something along the lines of skb_unshare() is used. Actually skb_linearize_cow() kills both birds with one stone, as it ensures the skb is linear and writable. Note that modifying ptp_parse_header() to tolerate nonlinear skbs was considered, but it wouldn't have saved us of the need to make it writable, so this is the simpler solution. Fixes: 7294380c5211 ("enetc: support PTP Sync packet one-step timestamping") Link: https://sashiko.dev/#/patchset/20260401172246.1075883-1-vladimir.olte= an%40nxp.com Signed-off-by: Vladimir Oltean --- v2->v3: - replace skb_linearize() with skb_linearize_cow(), - improve justification v1->v2: - patch is new --- drivers/net/ethernet/freescale/enetc/enetc.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/drivers/net/ethernet/freescale/enetc/enetc.c b/drivers/net/eth= ernet/freescale/enetc/enetc.c index 8a9ba168eab1..62cdcaab3f3f 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc.c +++ b/drivers/net/ethernet/freescale/enetc/enetc.c @@ -1099,6 +1099,11 @@ netdev_tx_t enetc_xmit(struct sk_buff *skb, struct n= et_device *ndev) =20 /* Fall back to two-step timestamp if not one-step Sync packet */ if (enetc_cb->flag & ENETC_F_TX_ONESTEP_SYNC_TSTAMP) { + if (unlikely(skb_linearize(skb))) { + dev_kfree_skb_any(skb); + return NETDEV_TX_OK; + } + if (enetc_ptp_parse(skb, &udp, &msgtype, &twostep, &offset1, &offset2) || msgtype !=3D PTP_MSGTYPE_SYNC || twostep !=3D 0) { --=20 2.43.0 From nobody Fri Sep 25 06:47:41 2026 Received: from OSPPR02CU001.outbound.protection.outlook.com (mail-norwayeastazon11013013.outbound.protection.outlook.com [40.107.159.13]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6C59F4BD79B; Tue, 15 Sep 2026 22:27:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.159.13 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789511281; cv=fail; b=FD4Qvp2Knd7e1sJvbTwT++uLRqfvpxe+sf9r0ynbzA4lPVpp0An5mGIZqfOv9JYVZdIAErD+ph0kyH/XUyYgtBedgSSprWoc+GjRyR9UNoYMSguu0zQvQZT1LQAPqWccgW+1pumG8lOi1u0yCJFjIZ8NL0AsHk+w+f/bBuVxbgU= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789511281; c=relaxed/simple; bh=+A6+qn8lFqpEXTIC0vRs6hYvfxyc87CqMpqJ48xYKiM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=NauaK15kHHapQtm/m4x5c6mP4MGw6Je6j2Y/lpeQq7Q7j49H65plpYxO9AIrxPlQEMpuDQY02bNyOWUovCNND0jHtBAc7qzdA0ZQEhGIFv/ev+ubU+x4MZ6rAJb9IQE11okyATlhdW3B0nzZgs6Vw4aS6SoQ9ERj1xqoiL8UvcE= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com; spf=pass smtp.mailfrom=nxp.com; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b=VeSRO4Nl; arc=fail smtp.client-ip=40.107.159.13 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b="VeSRO4Nl" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=SiNiNd4z92bjxTdyTWCSVN/Lu6BipXnfLjWINdZQfPs7VVwk9mgX4C4RSAC3WpxPcrSFy8iIA9mk9aVOYrF6Hb7b6AV3ujRmbpDfaLgIU8+TDguiw5e46mDJP1Kjj/h8/UUFUKs62K8biV9uFhtxkU4vvn8LIoM6OhQxCjqjhbDFNtsvctCPaEzwz0FElVGK39pNJIM6+1w2YxW/+V3j+U/IyP1pWvwFAbejGJW5INej6DqUyXhMkFSmxB5ujkqLuQydzfdYbgpru8MH+4qA8H6AWn7CjcOmnrf60hMcxSbwLBE4NZmwPyUR0coOAiGcCMeu1YuRuoDKpKx9jf8TDw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=HqEr2OuKigcHCvTxoki228jJPC0WZty4KscNXq5bJTI=; b=FE0JutKwL9RpaVAytkYgKNYYcwRg4GBqb1EG7dennCYsdFyZYQPSlRc7vKX/2qfwreziuTQDWgJj0yqLq4KsTZyX7HYt43csthzFzF/AeE9DwMPHDsFN+k8tBgbBpei0yhIC8fkketXzVF4s8l+2RGxwGdhaQZQ4bbRl4I4TyASuI6qjnFzKIuYFCqI+e6cFaFqMWyuj7pxrLhXe93hw9oPSAuvsvJbQlQIRD15Q8K/3CpazMWGYW5eVjYNAjxzT0ZuN/p6j5Fbl9XinsdpTI4S1ae3KpoI+6outVOH3zZ29Vr4yvdiT7LCtD8LExudbC7W2KZqcb+qnQL4OBDBrWw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=HqEr2OuKigcHCvTxoki228jJPC0WZty4KscNXq5bJTI=; b=VeSRO4NlYTJSfXknQWn7VGHgRy/7NAg/77hwrYbBxWc1myzPkUy4JgGd9DLD6kBs5J9lFRCVDw+pivSDTO32ZlkI8MdC3zC/2EH37D/P3UuGrM1/PNGd5UHk8SX21QvF2PYSG3mn/rNTe5YY3b7VcfNE3kJDDT8YHV7+AwzXAKAJYORBxhErezfLbpvxSYYxIde+ZLQFQCd2jUrOsLqRtQGs9wC4MDwKOcak7jlAdq+HIOFIMxgDIykZVcCNFtE2dhkZXFoIR+ZR2PG7PrT+Uvg0M1kPw2ADriSYzf1wCFANejj1SPdCE3NPsTZ1jl8THGypSp04PuPeKEgEWdhdtQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from AM0PR04MB6900.eurprd04.prod.outlook.com (2603:10a6:208:17d::10) by DB9PR04MB9380.eurprd04.prod.outlook.com (2603:10a6:10:368::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.428.9; Tue, 15 Sep 2026 22:27:50 +0000 Received: from AM0PR04MB6900.eurprd04.prod.outlook.com ([fe80::7fda:8431:ca1b:b023]) by AM0PR04MB6900.eurprd04.prod.outlook.com ([fe80::7fda:8431:ca1b:b023%4]) with mapi id 15.21.0428.008; Tue, 15 Sep 2026 22:27:49 +0000 From: vladimir.oltean@nxp.com To: netdev@vger.kernel.org Cc: Zefir Kurtisi , Claudiu Manoil , Wei Fang , Clark Wang , Andrew Lunn , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Alexei Starovoitov , Daniel Borkmann , Jesper Dangaard Brouer , John Fastabend , Stanislav Fomichev , Simon Horman , Richard Cochran , Yangbo Lu , Ioana Ciornei , imx@lists.linux.dev, linux-kernel@vger.kernel.org, bpf@vger.kernel.org Subject: [PATCH v3 net 7/7] net: enetc: drain and cancel one-step TX tstamp queue when going down Date: Wed, 16 Sep 2026 01:27:34 +0300 Message-ID: <20260915222735.1016937-8-vladimir.oltean@nxp.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260915222735.1016937-1-vladimir.oltean@nxp.com> References: <20260915222735.1016937-1-vladimir.oltean@nxp.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: AS4P189CA0018.EURP189.PROD.OUTLOOK.COM (2603:10a6:20b:5db::19) To AM0PR04MB6900.eurprd04.prod.outlook.com (2603:10a6:208:17d::10) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AM0PR04MB6900:EE_|DB9PR04MB9380:EE_ X-MS-Office365-Filtering-Correlation-Id: e26e8598-e198-4863-49c1-08df1378933b X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|7416014|366016|19092799006|23010399003|6133799003|18002099003|22082099003|10067099003|5023799004|56012099006|11063799006; X-Microsoft-Antispam-Message-Info: VkHUlRwVRPAKsoBsjeZ3nfaPezizMstXjJWs4mpBdEvDls2SGLojEcbTdLmOG19rNo6945luTh6CIy5gmmEekA9m9fFDLO1IEVD1atE7LeKaegCArxEyk+/H3cecx6lAEIzT7LGIq5fkGrzHTMywru85W/E7AUipNKIkydIpWbTuToD98dUw7R8dwanUiNKzlg8+Q/agWf8zg+4J9ReOcLpNGv3Q13XQPlfp4tqMXI/5MU9ozrJs4k5Fxi6B0ZtZGQRCrz3ntEcG5yPNFEfZcm0157mDPpzoR6oOlkyjJC5noMwNo+nw24TOZJszAzSw/Z3aCo/pLKRMUQG/VSTgx+kxcQ1QVk7wYHMSo1RLfXrl5evd1TydZCHFOAekohVcoIvUE+27tR41IYwWhI6bFP6Wy4Ez9AV02MaYfQE22aBBkO5Kswvqy5sE5iukuyruAIyIaEEfLgW9LTgbHspGlFWqXsqLCOQYNLiQ8mOgLF1SA/bW59iE/UiVYBALKbABKWzIXQA0Ub8chhH/cArf7G6nkd4kM3VJeNzYyTHf7Gmqy/dldkOezLRsBF3DZ4ElsE5foHqVYaCPWvvAiEn5U97gE0PpaEvwrK6kgeyUWIimMnkG6RRviezgoXGPeplKfAZO6PMOdPybhHmpuvRU96TY3iIDRWxlrPBdV7infxE= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM0PR04MB6900.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(7416014)(366016)(19092799006)(23010399003)(6133799003)(18002099003)(22082099003)(10067099003)(5023799004)(56012099006)(11063799006);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?toaOoJVJE3W9YYQIGxKwJIdNAB24oM/fC3HcAc8Og/UgvBIkLYTWbWtBz1YA?= =?us-ascii?Q?PLSE6gDvAqdt6qB9tlRg/ggrSmddJaiv4T0ko3X0/Acec15kgUOB1OIMvwf1?= =?us-ascii?Q?yxJUMaIunBNIpmI4tfnko4T6ifUxBXuE4dUcBkl+tH9DGGwqUpy4pL0cXqzN?= =?us-ascii?Q?Pa46nGK/qfMlV/xbJro+3dxCybSviyCnv6Tg97lS/CBufF5vDlcNMLQCPnIY?= =?us-ascii?Q?VC+e75zQJkKCkKidODvPwJydr8D4Dry/X1wvwYcNz++z2BBqh5YDbGorfIMi?= =?us-ascii?Q?J7FWnobprjyJFHyfcD3hz6WK3QRrhZ9Er/NCrbICXjSMnLgL7+LHO0Lz+K9H?= =?us-ascii?Q?kAoOj+R/I+hzMLE2kWjiHb8BntKQRuIkFxqPE9++Ih397sqBj07hWj4ltfSX?= =?us-ascii?Q?Y+nWtxgKW+MZgiklK1bzBz6YOISVlEbrrvHpVxHomWqV1ev245fli7Fe24LI?= =?us-ascii?Q?N/oiOa+4Hryod2HJtIg2HeapFhWzHJdQVN3zpN5n9HJYp2qHsUtWPItI7brq?= =?us-ascii?Q?Hx4Ctvak/cF+X+2rKns4orbpAh+/eJ9FTk1nw5vRxvv+uqPdLtkFWM1c4BSY?= =?us-ascii?Q?EtddVMATlMD7r35XDqg9qCwrPIjOmPr1PFmFXSs4FzaMMT/mddNhV23AeciD?= =?us-ascii?Q?nvPbk+Tfy1PrVj3Q4w/hnA3rquZjyBapuXaV3UnlxyjL6O7YLPqjituFJx8Q?= =?us-ascii?Q?NKMCCi93usXcf1jy4CJnKTe397wWKXNF90uoT37V6xw/3WjH1tt3g1Jwc6Ea?= =?us-ascii?Q?ZHnJcSa8h7wRpxt5z6hJzByQRPRxfUz9+bGK+cwLE0CwVi5nkzFK7ZVt5Zuy?= =?us-ascii?Q?CE6Sf5fluolPyniwkUxR7h3KVsGWJK42q7iorQfgwqPMnMwKzP1mPFSl9sfl?= =?us-ascii?Q?ZcwhsCrpniEflCesQmDMxrm/rM7fI/qXvN9CIYyGiS9FNYYRGMWlbtH6cGAs?= =?us-ascii?Q?mvi0mspRphYvF2vF8fcNtHas9O3OBHMAHJksOq34OTRi6taMYm8Y1G6rT1cC?= =?us-ascii?Q?TrxAk8qGgYXdswuuKa1SJLH7SOcYXcEwyJ3o1lurKptzjkJL7ipDJ4g/duO2?= =?us-ascii?Q?tjpjnxdl92X2NFtw+5Pa3iLJ4aa4mbcZoH/tOGIUSahbiIPbVf7uuPu7g2Yx?= =?us-ascii?Q?yf2kXASPOhr2X0ApFvycMO1ir9mDQ94l5bhadeUc0uS2q6viuOuJUrBvKimb?= =?us-ascii?Q?QzSuO5tiRUJiNl9WHQ7xWnhiKMYBN95EdcqJeDrpc3X+cn20kpKKCgJwBedU?= =?us-ascii?Q?XHcHgZcdOy6xgav7jZuJSGSo66ObGmf38hgvbNuqqJOUV4o2FksHZUpZZcAy?= =?us-ascii?Q?ZoEnXZyrc/tKxJ8VLse4oXtsnwhJzzRCkdfqK8aBL5rtJHIjWGMHPDMK/USr?= =?us-ascii?Q?x2QC9GgntvhSXrcXPHEZnNSnGx3fTKeupVXXoiExkSiLvTBvAaHFcDnNfBD2?= =?us-ascii?Q?nf5G+WwH/DDl7azf+XxWGTvxEsC5lm5M3rmO056ZzEg6d9sL0RRCWzLrKuXN?= =?us-ascii?Q?AK2e9y0+lhKXjLYnVvpGdoBKykDOI5pyeDIJN3f+NDPiYjk1/polgy1HuDSB?= =?us-ascii?Q?oiRcKBRjmQ4pWZ3nFMBck/nLGNiQA8UkP7M9dATed3jdPBTN/EBgoBCPIG0/?= =?us-ascii?Q?9tfbdqc53AQ8Lgn7Jm6IyCH9LP+6hXpftjrbbd3CFUTZz31ZIthwTOjJqNcU?= =?us-ascii?Q?WfgW7bFVDo1mclSeA7q5PMLrV3LKxaoWrcBeQXiVuBoQqfZXKFqGcjIKSilW?= =?us-ascii?Q?8TUGTX6bCw=3D=3D?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: e26e8598-e198-4863-49c1-08df1378933b X-MS-Exchange-CrossTenant-AuthSource: AM0PR04MB6900.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Sep 2026 22:27:49.8475 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: rt9zMySilmP/bFFIbQlNloWu98PUiM0YWs3jsioTb5GLXdCGFowGAKFau+LkzQEfHw+lqItN/EKKs0yB+TcG5g== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB9PR04MB9380 Content-Type: text/plain; charset="utf-8" The driver uses a work item on the system workqueue (priv->tx_onestep_tstamp) for deferred transmission of packets with one-step TX timestamping requests. The reason is that the MAC supports a single such packet in flight, but we cannot block the rate at which user space enqueues them. The problem is that the skb queue is never explicitly drained, and it can hold packets even after the interface goes down or (worse) the driver is unbound from the device. Especially the last point is critical, because the work item will attempt to use freed data structures of the netdev. The priv->tx_onestep_tstamp work item (enetc_tx_onestep_tstamp) processes one item from the priv->tx_skbs queue at a time, and gets rescheduled on each one-step PTP packet TX completion. If we cancelled the work item while NAPI was still enabled, there would be no guarantee that NAPI would not reenable it. So the cancellation needs to be after napi_disable(). Cancelling the work item waits for enetc_tx_onestep_tstamp() to finish sending the current packet if already scheduled. The packet will be put in the disabled TX BD ring, where nothing will happen with it until enetc_free_rxtx_rings() later reclaims its memory (*). However, priv->tx_skbs may contain more packets than just this one, and because NAPI is disabled, enetc_clean_tx_ring() is unable to take care of the rest. So we still have to clean up the remainder from the queue and reset the ENETC_TX_ONESTEP_TSTAMP_IN_PROGRESS flag back for use. On driver unbind, the problem should be solved by virtue of the fact that unregister_netdev() calls netif_close_many() and that triggers this same code path. (*) Even if we add a check for ENETC_TX_DOWN in enetc_tx_onestep_tstamp(), it is unavoidable that racing one-step PTP packets will be enqueued in a disabled TX ring. This is because the work item runs asynchronously and can miss that flag getting set. Think below: CPU A CPU B enetc_tx_onestep_tstamp() -> test_bit(ENETC_TX_DOWN) // says not down enetc_stop() -> set_bit(ENETC_TX_DOWN) -> enetc_wait_bdrs() // waits for the BDs in the // ring to be transmitted, // but the PTP frame is // still queued in software -> enetc_disable_tx_bdrs() -> enetc_start_xmit() So I don't see any point in adding an ENETC_TX_DOWN test in the work item. Fixes: 7294380c5211 ("enetc: support PTP Sync packet one-step timestamping") Reported-by: Wei Fang Signed-off-by: Vladimir Oltean --- v2->v3: patch is new --- drivers/net/ethernet/freescale/enetc/enetc.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/drivers/net/ethernet/freescale/enetc/enetc.c b/drivers/net/eth= ernet/freescale/enetc/enetc.c index 62cdcaab3f3f..892490ff1ebe 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc.c +++ b/drivers/net/ethernet/freescale/enetc/enetc.c @@ -3110,6 +3110,10 @@ void enetc_stop(struct net_device *ndev) napi_disable(&priv->int_vector[i]->napi); } =20 + cancel_work_sync(&priv->tx_onestep_tstamp); + skb_queue_purge(&priv->tx_skbs); + clear_bit_unlock(ENETC_TX_ONESTEP_TSTAMP_IN_PROGRESS, &priv->flags); + enetc_clear_interrupts(priv); } EXPORT_SYMBOL_GPL(enetc_stop); --=20 2.43.0