From nobody Sun Feb 8 13:45:28 2026 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (mail-dm6nam12on2069.outbound.protection.outlook.com [40.107.243.69]) (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 4659A800; Mon, 21 Apr 2025 14:05:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.243.69 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745244324; cv=fail; b=pBhSA6iXU2zwZC0L0Q4ELrZlObrSkMCKaElIdbIzrSPXtZZ+4QC4W1ujreM3bJUjQtAzL4bYpN3almXda47y5Ou4Y1+ksPviCdeYl5x6fWvbXh1ccaSKP6N4FkY+62UN2mG18Gve+bvSDqKFP2Muh6bV5nl+3amxoLPF08TnBlo= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745244324; c=relaxed/simple; bh=131oWNqP/6BERAsIG0Px/y32dWwqC3tgzPxf1i8Lmpc=; h=From:To:CC:Subject:Date:Message-ID:MIME-Version:Content-Type; b=rwiRJhA0n5HqNVQv1ViaN7CRnIUqyK3T3/xOf22jmuFFVo06hvlv3lVREOlhqC3hrMhldxqTfy60EUxVoUEJkg+a1DOXr/yqH5rS8jDqS0zC9KjWfx2PRKFGhi9FH0t+88iXFaR6Lq1ZV9yb63txmNvqHoMsR1DvfBHbZ1zNu+0= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com; spf=fail smtp.mailfrom=amd.com; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=J3/F5zOA; arc=fail smtp.client-ip=40.107.243.69 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=amd.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="J3/F5zOA" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=iNLKEnjLC+HPlNFv+ulG6w2qM+8duinqlWeHb/kxTbOJRGoJNDYa7rrCTvUhcQEh/cflNjcraDR/Y0NOJWbtqgYseyLuO7cya1JqVipOUUjQVY5+5Bcu32CO8mqFtzrJfXyeu90wm+zxbwE5q9OnmkZHZP/KHhh9yuaQBZeXFGRhL/7cgOKxcLEiSID+5NDGhIf2mmkG5F1BQdFHZ5wkdtqfJFwXAzSkPGV7/EKLOANG1/AD283MENdNehf4u5sngMJWVYVyQJzBe5YJkOQrGePIuaoKA24SINg+azvBn0ihc8FnAviLVaJSpYAPipiI6vSwvHvjNESvoiVNEEmYaQ== 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=RYGrHX8PRgiqcNOdoCT8xeROUlKlwYqcNmo7kgeR3IA=; b=b5i2eXHZfma4ZsPO94uAw0XO9V+81Xh0ZdX+Mb+YVPrGhE0x/1b2CUWiGNql5DW6BNKGMc1FNczfsw7PhdubbKYrJ0wE8vXFWMzrUtYf+mKbAOPpslMeE4C5gttqGE1nmNRjDecTpCaxdRTwP3OZ+ddlLyLxw27moxLXV5v3iZhaRRlTGRwBrjYVHDzthzGkDI5nejvrzYKotUKG7FLe7MZgC9ng2A7/tS2NKezZikOZc85ng2LQoonKhXanHWSLHrvkiE5/qubiweuLRf7vnn5mZrW68DiwT2/ifcaWtEw8Wqw8raAewpJSFN7/yS7eChwgAs6UN4qZG9y8Por69w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=lunn.ch smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=RYGrHX8PRgiqcNOdoCT8xeROUlKlwYqcNmo7kgeR3IA=; b=J3/F5zOAlysPYCvGU9o9akeul8RcCKiFBB+CnSjnGVjC0sE0dvjPAcin0jqFX5UraNF0oL22ctcvXoFEd1EENe+9g44AIo3mqnwb4AF2zA3FgKXtnEQ8n83VaNEDw2c7fBrZ3nD1UgQxALFvtOBY0NI1A2Sg4ddWsweXcrwohqc= Received: from PH8PR22CA0018.namprd22.prod.outlook.com (2603:10b6:510:2d1::24) by CYYPR12MB8655.namprd12.prod.outlook.com (2603:10b6:930:c4::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8632.32; Mon, 21 Apr 2025 14:05:16 +0000 Received: from SN1PEPF000397B2.namprd05.prod.outlook.com (2603:10b6:510:2d1:cafe::1c) by PH8PR22CA0018.outlook.office365.com (2603:10b6:510:2d1::24) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8655.35 via Frontend Transport; Mon, 21 Apr 2025 14:05:16 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by SN1PEPF000397B2.mail.protection.outlook.com (10.167.248.56) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.8655.12 via Frontend Transport; Mon, 21 Apr 2025 14:05:15 +0000 Received: from airavat.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Mon, 21 Apr 2025 09:05:10 -0500 From: Vishal Badole To: , , , , , , , , CC: , Vishal Badole , Subject: [PATCH net V2] amd-xgbe: Fix to ensure dependent features are toggled with RX checksum offload Date: Mon, 21 Apr 2025 19:34:38 +0530 Message-ID: <20250421140438.2751080-1-Vishal.Badole@amd.com> X-Mailer: git-send-email 2.34.1 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-ClientProxiedBy: SATLEXMB04.amd.com (10.181.40.145) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SN1PEPF000397B2:EE_|CYYPR12MB8655:EE_ X-MS-Office365-Filtering-Correlation-Id: 3e4222eb-169d-4bf7-0d67-08dd80dd8a58 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|36860700013|82310400026|376014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?ywFPLsxCuU4yjh6H9auh3tBLC+On5CQrBAR5f/PE8Sywmd5OlB8VVta1U/6r?= =?us-ascii?Q?WX0069z44JSkiekhPboI4hDVRIuFGIhgPwV3v4x7wr3d+qG1+DQpff7zJrF9?= =?us-ascii?Q?UguPEh1xDiq6S5wTxgTd8yuy/ZMvJ3v8HH1FHl9t+sQRemaliAN2dt5XBBhD?= =?us-ascii?Q?EGkSctCN3jfGmGln3il01ZZSRYRjpwcpzUdGrN3KQNvrA32dbTpeCrD3UPed?= =?us-ascii?Q?IirkOIUAqplE5Y7mNuVeYJ+O/Rtw2pxJP+tFzU7GFmri9xxs44R6REkYvow7?= =?us-ascii?Q?yTbM5KhrqG5p6xbLlSC0wUGiZuyCNLbpC6jDBJxPi1SnYo7iO1FfVfB9KjyL?= =?us-ascii?Q?Wt/SdikOGroFPECYu7gp+z0gz0dujCVfuZIhFWHHZlz/M3IPZHm/vq4e04tz?= =?us-ascii?Q?6CCobd7o97AehsbLybCjZ1MRBvOF02Wqnr81BqexU2z1jq426yMliNVwkvBH?= =?us-ascii?Q?BAj2T7lk3dx0a05AzDTv6ZYP/BVkgOvpkxYYI+HFukHYDaGib3VBP/K/8TH6?= =?us-ascii?Q?W5obRwxs5C+184aiNJRWI8snxtI/puqCBfT9HU/b/G6yI2ig7r7mc8p/299t?= =?us-ascii?Q?ovwxPs4a58pgw2EneL7vat0ojpxTtDvDgSjZlaNky/7ZEZ/oyfWFh5PuP/8P?= =?us-ascii?Q?kAsQr/EPfSkVaF4N5I5pjQm96pVpZ5d3K1uIbnf/EL4wFyBTfyuO6JTlNO/9?= =?us-ascii?Q?Q1kyGVJKi+mxEWItSa4zmFqJRVrs6uY6B7eFfBoTegZmCuZYTt/ThNE9yDW5?= =?us-ascii?Q?9VyQvIFj02LxXDY9VRY70PrT9PYxbQLDFEJ18xlwzLjhe5D99qARjnxu1o5R?= =?us-ascii?Q?Upi7/ulYG7whZjMsr9HzJIU9G6bwJdUp9JPqQMHPLLQzoPozaWbR6GQs6rs7?= =?us-ascii?Q?yFf5Mx+U2gitJXPPtC7cgEYp4CKDN8l9cZeMqqbH2Io+tOZxtJwujTiLEmaa?= =?us-ascii?Q?mNopO1pR+wNMHyB7EvlDmHx1qDXQVsOG5okJabts4sm5M9NW6Hrg/EIZTucF?= =?us-ascii?Q?SrBGsyWqPjxsyP710Af8cFK1PdVupqCbpBLCf12VtGqg2JWYadqo2EnMLKyb?= =?us-ascii?Q?RQwK3PXcIbfKwFowigahCXBKKYHX6so3OuLUMIycKEk+tCk6u1dAHu68WLCU?= =?us-ascii?Q?ph2G80EJ06cAvpubAXVqPvnJfboneOCaQPxozLtGeQF/WVbqorIToi0OzJ0H?= =?us-ascii?Q?3toSAinKgBU1SIY9IjWt6T2L37Pfc1wiJ1tVlMGCZJZB4+eq0G0G44M6CpM4?= =?us-ascii?Q?/xQ1ZJxt2V135z5bfTE9bWjXLMF8zQLvJ4BltWCVS5Z+cHBydf38/grYYakO?= =?us-ascii?Q?G8W6wwjHJD9q0Q7dcvG8VgHAbd59LSPGIwfduogtrUwxLVPgAiHJdc3Xp+Gz?= =?us-ascii?Q?+5wxznpKDJnox/SZXdMwZO5wk22ZAKD4kUVdpnurvmI9I5r7f6UmAx3HO8vr?= =?us-ascii?Q?/qi6NYdnT/c+i+M0hJb4VzJOOcRWpralgU1VGquL5DpzXGzNrdg5qcjftrRv?= =?us-ascii?Q?UV9EA8ll4kO2XA/EueLXG0Rqe1aaXPVcL6e6?= X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(1800799024)(36860700013)(82310400026)(376014);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Apr 2025 14:05:15.3163 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 3e4222eb-169d-4bf7-0d67-08dd80dd8a58 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: SN1PEPF000397B2.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CYYPR12MB8655 Content-Type: text/plain; charset="utf-8" According to the XGMAC specification, enabling features such as Layer 3 and Layer 4 Packet Filtering, Split Header, Receive Side Scaling (RSS), and Virtualized Network support automatically selects the IPC Full Checksum Offload Engine on the receive side. When RX checksum offload is disabled, these dependent features must also be disabled to prevent abnormal behavior caused by mismatched feature dependencies. Ensure that toggling RX checksum offload (disabling or enabling) properly disables or enables all dependent features, maintaining consistent and expected behavior in the network device. v1->v2: ------- - Combine 2 patches into a single patch - Update the "Fix: tag" - Add necessary changes to support earlier versions of the hardware as well Cc: stable@vger.kernel.org Fixes: 1a510ccf5869 ("amd-xgbe: Add support for VXLAN offload capabilities") Signed-off-by: Vishal Badole --- drivers/net/ethernet/amd/xgbe/xgbe-desc.c | 9 +++++++-- drivers/net/ethernet/amd/xgbe/xgbe-dev.c | 24 +++++++++++++++++++++-- drivers/net/ethernet/amd/xgbe/xgbe-drv.c | 21 ++++++++++++++++++-- drivers/net/ethernet/amd/xgbe/xgbe.h | 4 ++++ 4 files changed, 52 insertions(+), 6 deletions(-) diff --git a/drivers/net/ethernet/amd/xgbe/xgbe-desc.c b/drivers/net/ethern= et/amd/xgbe/xgbe-desc.c index 230726d7b74f..d41b58fad37b 100644 --- a/drivers/net/ethernet/amd/xgbe/xgbe-desc.c +++ b/drivers/net/ethernet/amd/xgbe/xgbe-desc.c @@ -373,8 +373,13 @@ static int xgbe_map_rx_buffer(struct xgbe_prv_data *pd= ata, } =20 /* Set up the header page info */ - xgbe_set_buffer_data(&rdata->rx.hdr, &ring->rx_hdr_pa, - XGBE_SKB_ALLOC_SIZE); + if (pdata->netdev->features & NETIF_F_RXCSUM) { + xgbe_set_buffer_data(&rdata->rx.hdr, &ring->rx_hdr_pa, + XGBE_SKB_ALLOC_SIZE); + } else { + xgbe_set_buffer_data(&rdata->rx.hdr, &ring->rx_hdr_pa, + pdata->rx_buf_size); + } =20 /* Set up the buffer page info */ xgbe_set_buffer_data(&rdata->rx.buf, &ring->rx_buf_pa, diff --git a/drivers/net/ethernet/amd/xgbe/xgbe-dev.c b/drivers/net/etherne= t/amd/xgbe/xgbe-dev.c index 7a923b6e83df..d0a35aab7355 100644 --- a/drivers/net/ethernet/amd/xgbe/xgbe-dev.c +++ b/drivers/net/ethernet/amd/xgbe/xgbe-dev.c @@ -321,6 +321,18 @@ static void xgbe_config_sph_mode(struct xgbe_prv_data = *pdata) XGMAC_IOWRITE_BITS(pdata, MAC_RCR, HDSMS, XGBE_SPH_HDSMS_SIZE); } =20 +static void xgbe_disable_sph_mode(struct xgbe_prv_data *pdata) +{ + unsigned int i; + + for (i =3D 0; i < pdata->channel_count; i++) { + if (!pdata->channel[i]->rx_ring) + break; + + XGMAC_DMA_IOWRITE_BITS(pdata->channel[i], DMA_CH_CR, SPH, 0); + } +} + static int xgbe_write_rss_reg(struct xgbe_prv_data *pdata, unsigned int ty= pe, unsigned int index, unsigned int val) { @@ -3750,8 +3762,12 @@ static int xgbe_init(struct xgbe_prv_data *pdata) xgbe_config_tx_coalesce(pdata); xgbe_config_rx_buffer_size(pdata); xgbe_config_tso_mode(pdata); - xgbe_config_sph_mode(pdata); - xgbe_config_rss(pdata); + + if (pdata->netdev->features & NETIF_F_RXCSUM) { + xgbe_config_sph_mode(pdata); + xgbe_config_rss(pdata); + } + desc_if->wrapper_tx_desc_init(pdata); desc_if->wrapper_rx_desc_init(pdata); xgbe_enable_dma_interrupts(pdata); @@ -3910,5 +3926,9 @@ void xgbe_init_function_ptrs_dev(struct xgbe_hw_if *h= w_if) hw_if->disable_vxlan =3D xgbe_disable_vxlan; hw_if->set_vxlan_id =3D xgbe_set_vxlan_id; =20 + /* For Split Header*/ + hw_if->enable_sph =3D xgbe_config_sph_mode; + hw_if->disable_sph =3D xgbe_disable_sph_mode; + DBGPR("<--xgbe_init_function_ptrs\n"); } diff --git a/drivers/net/ethernet/amd/xgbe/xgbe-drv.c b/drivers/net/etherne= t/amd/xgbe/xgbe-drv.c index f249f89fec38..4d290ec934a8 100755 --- a/drivers/net/ethernet/amd/xgbe/xgbe-drv.c +++ b/drivers/net/ethernet/amd/xgbe/xgbe-drv.c @@ -2267,6 +2267,16 @@ static netdev_features_t xgbe_fix_features(struct ne= t_device *netdev, } } =20 + if (features & NETIF_F_RXCSUM) { + netdev_notice(netdev, + "forcing receive hashing on\n"); + features |=3D NETIF_F_RXHASH; + } else { + netdev_notice(netdev, + "forcing receive hashing off\n"); + features &=3D ~NETIF_F_RXHASH; + } + return features; } =20 @@ -2290,10 +2300,17 @@ static int xgbe_set_features(struct net_device *net= dev, if (ret) return ret; =20 - if ((features & NETIF_F_RXCSUM) && !rxcsum) + if ((features & NETIF_F_RXCSUM) && !rxcsum) { + hw_if->enable_sph(pdata); + hw_if->enable_vxlan(pdata); hw_if->enable_rx_csum(pdata); - else if (!(features & NETIF_F_RXCSUM) && rxcsum) + schedule_work(&pdata->restart_work); + } else if (!(features & NETIF_F_RXCSUM) && rxcsum) { + hw_if->disable_sph(pdata); + hw_if->disable_vxlan(pdata); hw_if->disable_rx_csum(pdata); + schedule_work(&pdata->restart_work); + } =20 if ((features & NETIF_F_HW_VLAN_CTAG_RX) && !rxvlan) hw_if->enable_rx_vlan_stripping(pdata); diff --git a/drivers/net/ethernet/amd/xgbe/xgbe.h b/drivers/net/ethernet/am= d/xgbe/xgbe.h index db73c8f8b139..92b61a318f66 100755 --- a/drivers/net/ethernet/amd/xgbe/xgbe.h +++ b/drivers/net/ethernet/amd/xgbe/xgbe.h @@ -902,6 +902,10 @@ struct xgbe_hw_if { void (*enable_vxlan)(struct xgbe_prv_data *); void (*disable_vxlan)(struct xgbe_prv_data *); void (*set_vxlan_id)(struct xgbe_prv_data *); + + /* For Split Header */ + void (*enable_sph)(struct xgbe_prv_data *pdata); + void (*disable_sph)(struct xgbe_prv_data *pdata); }; =20 /* This structure represents implementation specific routines for an --=20 2.34.1