From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id C2CAEC531DC for ; Tue, 20 Aug 2024 14:46:58 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:MIME-Version: Content-Transfer-Encoding:Content-Type:In-Reply-To:From:References:CC:To: Subject:Date:Message-ID:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=6JR9SNGnUOC3zYnyjaaTWUVRPIDY9UQ9bOBuYMy3Vfc=; b=Ts9NVLnP89vEZtsdhW0ZuEA0CY qs0DtsCbos7LxzfDrl/NqodZLodTqiUULf5xDyXZ5HtfgodQ+gsy58dJe1NRrRbksK7o8uNMJxKQb AbkNVPQJWm89gC6h02Tfza/8Qra75xi7aGF8f8ZrCV/WHcCwgl/gpvMal5TIx0AMuFl5BUbkuk5PG cEv+mQGYyd8to46z/SSo61R7n4KIl2MnunCjNedmVDZGOv7+glnnAHYRtA2/XUOV1CVeZ6wkzEV6A yQ2jB2cApAG2eZoeZ4IzKHJQpNPNNPo5jAwPkjVUjHUAsCH2lbK9LOCIJx3o4bcHHOeSq3BXXOFKf O+z7d9GA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1sgQ8F-00000005d9F-3and; Tue, 20 Aug 2024 14:46:47 +0000 Received: from mgamail.intel.com ([192.198.163.10]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1sgPyS-00000005a72-0L2Q for linux-arm-kernel@lists.infradead.org; Tue, 20 Aug 2024 14:36:41 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1724164600; x=1755700600; h=message-id:date:subject:to:cc:references:from: in-reply-to:content-transfer-encoding:mime-version; bh=FFqOsyXp1IpmS/xMB4wHRtVe10DW/nZeilHQrDeaftc=; b=H/tXLGOJDcNlcgVCzXTJYHCAc58UoK1YH86blr//dZXuX15bBqU71qLL Mz2IU90j66L8MCug0TeTptmLLgy6U6H523QCLTKHjcwKdEqR+NdY1nrIh WKG358oZtXENN6XQZcaxIL+boejGSYYeeQWxS4d52qo7LK7NcAynaxOtD bXxB01j63DUvlt7/KuQ9/tBEjqA/+wMyxD0QNLTQXS+YAF+P9SCsBS+kU 9IXhS6HfwUOhs+edRmsLNhP5aaVJ/pgq6deyK63wVuXeQuEq6k042O+Cq fbiGtOYj0Z1GFImtSHGvUGqVztMLeeQa4XKUzE5evy1KOOC22zIoVxVsU g==; X-CSE-ConnectionGUID: DoLA0W5DT66Bpgj/bmMJgg== X-CSE-MsgGUID: TbOCaP03Slej7TDRVB7ivA== X-IronPort-AV: E=McAfee;i="6700,10204,11170"; a="33886378" X-IronPort-AV: E=Sophos;i="6.10,162,1719903600"; d="scan'208";a="33886378" Received: from fmviesa004.fm.intel.com ([10.60.135.144]) by fmvoesa104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Aug 2024 07:36:38 -0700 X-CSE-ConnectionGUID: za9xUFtZTW+702BivASdUg== X-CSE-MsgGUID: c6MOAK7hSeOdIlcZ3SwpTA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.10,162,1719903600"; d="scan'208";a="65430289" Received: from fmsmsx603.amr.corp.intel.com ([10.18.126.83]) by fmviesa004.fm.intel.com with ESMTP/TLS/AES256-GCM-SHA384; 20 Aug 2024 07:36:37 -0700 Received: from fmsmsx611.amr.corp.intel.com (10.18.126.91) by fmsmsx603.amr.corp.intel.com (10.18.126.83) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Tue, 20 Aug 2024 07:36:37 -0700 Received: from fmsmsx610.amr.corp.intel.com (10.18.126.90) by fmsmsx611.amr.corp.intel.com (10.18.126.91) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Tue, 20 Aug 2024 07:36:36 -0700 Received: from fmsedg601.ED.cps.intel.com (10.1.192.135) by fmsmsx610.amr.corp.intel.com (10.18.126.90) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39 via Frontend Transport; Tue, 20 Aug 2024 07:36:36 -0700 Received: from NAM11-DM6-obe.outbound.protection.outlook.com (104.47.57.173) by edgegateway.intel.com (192.55.55.70) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.39; Tue, 20 Aug 2024 07:36:36 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ed4kcIrxyoIek+xd0juhFEZm0gt+UZa7/nnMLAg2s0HLHkp06BvVwHapuaHfkR6RlSFQQZieeQSVa/2p0cTWom9PcxbrhsDbvkNL5wJLV/3Nmztq21RQFf+A8TM55jH0nfQmTeqAPC95XSghjYrkb+1u4vNxcnqVpMyGkY4v2EafnF1iEUvwIrlp3FZ5nfe9GAE/0WMN2DZAg4MutKCGTpPHRaDpEDOnV47Bj5WFtfIx3Po54UT7yj77YrmCjHm12sTPjmzCuX9xifmhgXujcCSu+p0nS21lDpM2vroyX31CaEr5+KKSRaNitNitOsTC/VvUBNevwvLFHrTubZDhHA== 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=6JR9SNGnUOC3zYnyjaaTWUVRPIDY9UQ9bOBuYMy3Vfc=; b=knGgpVbFxFNqB7T5skURzCcNoaHDFXnC/0sk4RyqVuzqGuwp27ao6KjtJcI/SbGN1apqr2dphQTjkrEFTL1WjTWfzxSBLRMa6lvXUVEWuFu2ZX/Jl1g/59Up3vthAP0a1Cafft7byrvmDhK5XRWmM2xkCvvxYOkkYp/BkBQvWO1T1S5donBazoMB7dEk2x+D9kigHxopAdKmAI0ZH39yeIGmAziv36GaTWJeqEevPZaNWS9tYbQ49yI4VbzfmCFqtSqbmc5E2k0U0sD4Pu8D5Oy1FUBPQzGTFRREMaytwzpjhd2z/vBcuCOOURKU5+bIur6hFKMuLgMvMtMsx6a4FQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; Received: from DS0PR11MB8718.namprd11.prod.outlook.com (2603:10b6:8:1b9::20) by PH7PR11MB7124.namprd11.prod.outlook.com (2603:10b6:510:20f::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7875.21; Tue, 20 Aug 2024 14:36:34 +0000 Received: from DS0PR11MB8718.namprd11.prod.outlook.com ([fe80::4b3b:9dbe:f68c:d808]) by DS0PR11MB8718.namprd11.prod.outlook.com ([fe80::4b3b:9dbe:f68c:d808%5]) with mapi id 15.20.7875.019; Tue, 20 Aug 2024 14:36:33 +0000 Message-ID: <29ccab1d-cf8b-4a5d-8d9a-54535925f71b@intel.com> Date: Tue, 20 Aug 2024 16:36:26 +0200 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH net-next v4 3/7] net: stmmac: refactor FPE verification process To: Furong Xu <0x1207@gmail.com> CC: Serge Semin , Andrew Lunn , Vladimir Oltean , "David S. Miller" , Alexandre Torgue , Jose Abreu , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Maxime Coquelin , Joao Pinto , , , , , References: From: Alexander Lobakin Content-Language: en-US In-Reply-To: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 7bit X-ClientProxiedBy: MI1P293CA0027.ITAP293.PROD.OUTLOOK.COM (2603:10a6:290:3::7) To DS0PR11MB8718.namprd11.prod.outlook.com (2603:10b6:8:1b9::20) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS0PR11MB8718:EE_|PH7PR11MB7124:EE_ X-MS-Office365-Filtering-Correlation-Id: e40d63fb-c27e-4f31-7aeb-08dcc1257d15 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|376014|7416014; X-Microsoft-Antispam-Message-Info: =?utf-8?B?K2kvNmJ5eTZsRzZYWExmampkRWE0OTNUSWVmNW53UnNBMXorclhuS3p0MnY4?= =?utf-8?B?aGpZeVprbFpwMVVUSHBINTFHK1hRTzVybHBJSzFSZVdISSt5NmRORlRJdFg0?= =?utf-8?B?QjZZSWUwRVpUQzdjMjJoci9FQmRaU3FLWTI4bnZTcXB1RUZ3N0dZZkRSaldQ?= =?utf-8?B?TUhsOW01UGhiYjVaN1QySlUyMlpoQ0cyUGZFSVVkUmVHSE5UVVAzSkVwcVZw?= =?utf-8?B?L1RETHBDNzJ0RkR5bXdxUXRsZUo2YXcxZjAyK1RBN2I4bjhodk1sYWRIVEsy?= =?utf-8?B?U0k0ckF4YjQrZFhCanQxZTRITGJwZHZSSWZLLzR6TlB0VmtOS3ZqL1phNE9n?= =?utf-8?B?SlNlOUdIemE1ekNTekdLNEF4Q1gyd1Qza3FiaUpwb04yakx6SExEL0ZsdXh3?= =?utf-8?B?OWxGU3gyTGwyTHhLUkt4WDc1QmtUK1BjTlJlK1RybGZNNG5KbXZVQ1JtNU1L?= =?utf-8?B?NVM0eDVlNkJkMDdIeno5MzBDcHhvWDhqd1IzRThpcFJLSHl1ZlArc0tNVmFV?= =?utf-8?B?bUt3MTRsNlE5amo5WkNhSHZva2hXbUVpRzNaWnhuU2xQOHMvcE1HeDl0ZU96?= =?utf-8?B?eGNkR1JONGVwblNWYlpocWJMZVZQZ2NoN1haRmozQWpNSEUyV25EN2NkZWJZ?= =?utf-8?B?SHRZMlE4a29tTENvRis4Y0VBbnlkMTgza0ZRZnoyaEdOalorL1p2TTF6UlFu?= =?utf-8?B?ZzQweTJTNmVFeW9kM1Q2SWRoZGdjcWVvbHhyVDJnTS9Bbm5RRnBoeDRSTE51?= =?utf-8?B?QXp3ejFLWnR2YnB5bE1qeEJteFJXRDdVcTZjUDBXOUpueFdVcU9TVEFjcnlx?= =?utf-8?B?V1pETUFYbytNL2h4S29VMjdIbFdmNFN4OThsdFY2VVBiTkw2YmtlVXpyTVE5?= =?utf-8?B?NXEzdE10YURjeVptYXR1b09yQ3RkdmoyT0tQVkN3Z0kxUGt1M3lMRUZjMEVN?= =?utf-8?B?NjI5ZnRXOERHVlpDNXoyUGZHSng3a1orcVg3QUNUUmFPdmhxMDlMWWJ3WHpq?= =?utf-8?B?SjhXWjZlZ1JubUM5TFR3bkxZZ2x5Y0loeWR1ZWRhZk9KVVlwSVJCNkw1UDhK?= =?utf-8?B?TnRGRkNoSEo4d3NBWXllblVYbktjaWRYOE80dWFqamtRcnVZdzhPUkd4LzJz?= =?utf-8?B?TjVhVVpzeHpqRFZhckRuRDNyclVoTGJuTU4rQndiaHJUc3VBZW9wT01aM1lo?= =?utf-8?B?RjFFTXRwK0dWQWpXbWxSSjZKT21ja1hDK0ZOQ1dmTFBPd01sd2VlUjRvZ1Nk?= =?utf-8?B?ckRpeVFwZVZwRjZIeDB5SUNsOUpZTzZBT3pBZll0WVBSaHlYUS9FblBUcU93?= =?utf-8?B?VHdCeXkwTC9Rd0daR3hUWlFaY2dmYkhFY0hEcHdTeDhVSncva2hCZDRDV1pv?= =?utf-8?B?MTVFT2d6TXdqK3hqNjVrblNyM1FLT3puK1liUXZncGloUVZlMFFHQnB5dThq?= =?utf-8?B?WXlwd2NrV3FaTTlZVWJmN3J6d09MTC9VYjlSYzFXUFpMTlRqZ3BITGlsRG9S?= =?utf-8?B?dWpnMnA5S0MwMFN0OHVMb2NROXkrbU81MHo2WUdkdkJmRzJjSW1sY1NoWDNz?= =?utf-8?B?NlptSkNiaHNQQzdGUWFnOWZWMy8rZVJONi91M2NEMk81WnlMWDRNdEFjcWRi?= =?utf-8?B?Z1VDbUZ6M2ZNSW04WFdJNjY5Y0gxbnBZbXRHc3dKYXpIc2J2SHBhNndHam5l?= =?utf-8?B?Vi80ejVpeXNLM2tYOUVpcmw0aTZWOTU0cE4ySnF5NWMxc1dRK3J6c1kyZXVE?= =?utf-8?B?S1h3eDRDeFArQ1RvMG5QMm5VTTFHU2pMUXRaaGc3V2poUS9VbGtiNmJCWC9n?= =?utf-8?B?V0FHZmc0YkZPQ1ZYMTU4UT09?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS0PR11MB8718.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(376014)(7416014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?SndkYmM4VHdrM05raldpYlNpQlI3Ujk0S2MvWEZ4WDZxSzBUeVV3NGdFaDMw?= =?utf-8?B?WFNqRHdXWnJDY2dqQ2lHdVBhZTk5T09QWGNNK0tSRlBWNjRmOXhoVmJvWTQ3?= =?utf-8?B?Q2NGeDRIV25ESUpoOFpaRWZsc2lPaVdHQTNRa1RIRkRxYjUxRUVMcEl2M1pz?= =?utf-8?B?TTFkWHRUWkVMUEljRFRtQTlKY0c2YVlsK3BOTm5ISCtUWnBtaDVUVTgzQWk5?= =?utf-8?B?bVIreDBlYUdGN2hvRFdxZEN3eVFRRE9VV1BKT01ZcGY5b0w5ZXhldmZTUGxW?= =?utf-8?B?UVg4Mk8rMXVSTE1WWlRVczJHK2JWMDMxRXh2ZGxwYzR6QjRzMlcra2FKdWpG?= =?utf-8?B?TWZndlVaNVNQbUVDWWpzazlVU0xYUDkweGZuMDA0UHFqZ2hVK21obmthZGJh?= =?utf-8?B?ejF1VXFSVVV4a05aNnNHYnNjY3JsL3ZjUWFaZ3RSdnBGenJtNGh6VjJFY0Y1?= =?utf-8?B?SFpGeWxVS0V3N01sU2JLVERObGc3ZDg1SXpGNnVoanJaUk5jU0FoSDhlcVBB?= =?utf-8?B?OGhnOVJDYk0rdGVBZDNiZmJtR2xmTU5tUzNKN0pZbmRsYkk5a0hJdnZ6VXJM?= =?utf-8?B?N1p0dElSNE9Ld2g0b2N2WmdhOEdCb3AxMGxYcTFXSFFHM2V2Wmp4TVpoR2Rt?= =?utf-8?B?dXFYdmNtdTNsV0JjZmI2clVLS0hyKzhhMGNLSDJCdlNRYmFsRm5UMVdYenlw?= =?utf-8?B?NG92c3h4RlBMdnV1ZUZrdGdodVZxMzFmaExMckJLOTFWMlJpRTZNUXYyWDR4?= =?utf-8?B?cUorWk1MT1VlcHFBUGExaFc5VlhHUER0ODZ2SGltbTFrUjdERGhtQ1BGS0FS?= =?utf-8?B?R0lkaDZqRy9qdlkrWi9xODBFT1JxeC9jUTRXdTRvbm1ObDlteFB5RFQvSWRQ?= =?utf-8?B?OXVIdzQ5UjdlbEltS3I1bDVCTmFBamUzK1VrT2JGdlY0UWJLZmlVOEdQd3BZ?= =?utf-8?B?cGg1VHpEL0hEQlU0aWtJR2RtNnFQUDc0MVVBTEhTMElSbmZaUFlBWjBWVjI0?= =?utf-8?B?QW5pWUJTdmk5amhFVldsYThNMmhld3RGWVB2ME9lc2ZySGpuNjFlN0RWTVY3?= =?utf-8?B?Ly81QVVXdGNUK2RlamNwdkRWcysySi9INEcxTUs4ZDFodUEwem1Qbmxuc0F5?= =?utf-8?B?THpsRENxTm5RYmhrTUw5S1RhZTFBYXRtaktyZjB0MTYyY29xM1JZcmVSd0dk?= =?utf-8?B?dFNBeGRYenVsejk4a2x5UXRURjlIOE5mQkVqcWZaMVFzRnpyd0h5M1JNRWlX?= =?utf-8?B?TEdpY3VLQTVqWTlqZERXc2RDV3RSczBXcXk3VUZWc0dIUjhMUDArNFF3UHFm?= =?utf-8?B?d3lOdmNLT21EeXFiNE5qeVhXd3BxQkYyd3NNblNxWG5jZzdEQ1BBbTYvT2kv?= =?utf-8?B?ZEVWTjVvUFRJekQrSnRlYWtKcHBCUElHek5aUWFKOE9VUU1Lellja09abk9U?= =?utf-8?B?N2V3WU5YYTlDMTkrUVJkK0NRTW9GVHJvL3lvc3NEQThtY3dzSVZybHErTEhH?= =?utf-8?B?aUMvNWtFQjZyRTM5Q05veFNUZm9qdlZVcTJyMmlOWmV0SVJqUFlDbUtjSENz?= =?utf-8?B?d2Vaa2xHUG1VZXBRaVhQZEFuaFhsbVU1Vk5Yck55emkzK3BleHk5MUF6dDNS?= =?utf-8?B?aWhodVZmZEgvRm1KM0N1WHhzSXE5OHhpemtYcm5EU2VhbHJRWVd0NjJUeW4z?= =?utf-8?B?Qjllcmwwb3U0b0lyVDBHSmRJT2FVOGZrK281WXBibEtUWWpvU1ozTzBUM09U?= =?utf-8?B?eitMV0tXaVdvMXNRRUpSY2NDUnljalprWGtaOE8vckc0cVJNQ0hhTWJ1TWR6?= =?utf-8?B?OW5yaks2eW9oM2s2MHI4OGNmeE5ZemZLZVI2RHA1Y0FwNW0zWUZCaWhJS3VD?= =?utf-8?B?aW9EeEQ0TXJjNnRTK2l4dVZhZCtyaWtIeGxVRWhkR3puT1lNZk9BaVJvQjJK?= =?utf-8?B?a1lMWWplQkVTWUJLSytnMWFuNnV5QXhEazJ1eHlHSXpSN2xuN1IvWWxEL01O?= =?utf-8?B?aFBrWlZZdnErM1F4Q3RxeFQ5Uk9nY1pLWVNaVnlTT2NVRmlONDJSYmJBd25Z?= =?utf-8?B?eTJxNDA1QUU4b2N6bTdETjQycFpFU05vblBJOFluTEpsTWc5aGV5YWZSMEdR?= =?utf-8?B?bGNKRjlYbVcrUWpjNUNZczA2MHNGRzJMMDZOYXNJaTNHZmIyVjFmOERXS25U?= =?utf-8?B?OWc9PQ==?= X-MS-Exchange-CrossTenant-Network-Message-Id: e40d63fb-c27e-4f31-7aeb-08dcc1257d15 X-MS-Exchange-CrossTenant-AuthSource: DS0PR11MB8718.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Aug 2024 14:36:33.8473 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: dpBTvGZfD5lMNUBbGZmIfxrVR2fbihYnMxmNz0RBs5R+nr3gEclAJT6c37z6CbpPDRxYhlLV7qyZ/LRRdn4z5LrtZUCfu90jp3MJ4iAcf50= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR11MB7124 X-OriginatorOrg: intel.com X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240820_073640_311385_1AF15E13 X-CRM114-Status: GOOD ( 20.89 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org From: Furong Xu <0x1207@gmail.com> Date: Tue, 20 Aug 2024 17:38:31 +0800 > Drop driver defined stmmac_fpe_state, and switch to common > ethtool_mm_verify_status for local TX verification status. > > Local side and remote side verification processes are completely > independent. There is no reason at all to keep a local state and > a remote state. > > Add a spinlock to avoid races among ISR, workqueue, link update > and register configuration. > > Signed-off-by: Furong Xu <0x1207@gmail.com> > --- > drivers/net/ethernet/stmicro/stmmac/stmmac.h | 21 +-- > .../net/ethernet/stmicro/stmmac/stmmac_main.c | 172 ++++++++++-------- > .../net/ethernet/stmicro/stmmac/stmmac_tc.c | 6 - > 3 files changed, 102 insertions(+), 97 deletions(-) > > diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac.h b/drivers/net/ethernet/stmicro/stmmac/stmmac.h > index 458d6b16ce21..407b59f2783f 100644 > --- a/drivers/net/ethernet/stmicro/stmmac/stmmac.h > +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac.h > @@ -146,14 +146,6 @@ struct stmmac_channel { > u32 index; > }; > > -/* FPE link state */ > -enum stmmac_fpe_state { > - FPE_STATE_OFF = 0, > - FPE_STATE_CAPABLE = 1, > - FPE_STATE_ENTERING_ON = 2, > - FPE_STATE_ON = 3, > -}; > - > /* FPE link-partner hand-shaking mPacket type */ > enum stmmac_mpacket_type { > MPACKET_VERIFY = 0, > @@ -166,11 +158,16 @@ enum stmmac_fpe_task_state_t { > }; > > struct stmmac_fpe_cfg { > - bool enable; /* FPE enable */ > - bool hs_enable; /* FPE handshake enable */ > - enum stmmac_fpe_state lp_fpe_state; /* Link Partner FPE state */ > - enum stmmac_fpe_state lo_fpe_state; /* Local station FPE state */ > + /* Serialize access to MAC Merge state between ethtool requests > + * and link state updates. > + */ > + spinlock_t lock; > + > u32 fpe_csr; /* MAC_FPE_CTRL_STS reg cache */ > + u32 verify_time; /* see ethtool_mm_state */ > + bool pmac_enabled; /* see ethtool_mm_state */ > + bool verify_enabled; /* see ethtool_mm_state */ > + enum ethtool_mm_verify_status status; Why not embed ðtool_mm_state here then? > }; > > struct stmmac_tc_entry { > diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c > index 3072ad33b105..6ae95f20b24f 100644 > --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c > +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c > @@ -969,17 +969,21 @@ static void stmmac_mac_config(struct phylink_config *config, unsigned int mode, > static void stmmac_fpe_link_state_handle(struct stmmac_priv *priv, bool is_up) > { > struct stmmac_fpe_cfg *fpe_cfg = &priv->fpe_cfg; > - enum stmmac_fpe_state *lo_state = &fpe_cfg->lo_fpe_state; > - enum stmmac_fpe_state *lp_state = &fpe_cfg->lp_fpe_state; > - bool *hs_enable = &fpe_cfg->hs_enable; > + unsigned long flags; > + > + spin_lock_irqsave(&priv->fpe_cfg.lock, flags); > + > + if (!fpe_cfg->pmac_enabled) > + goto __unlock_out; > > - if (is_up && *hs_enable) { > + if (is_up && fpe_cfg->verify_enabled) > stmmac_fpe_send_mpacket(priv, priv->ioaddr, fpe_cfg, > MPACKET_VERIFY); > - } else { > - *lo_state = FPE_STATE_OFF; > - *lp_state = FPE_STATE_OFF; > - } > + else > + fpe_cfg->status = ETHTOOL_MM_VERIFY_STATUS_DISABLED; > + > +__unlock_out: Why underscores? > + spin_unlock_irqrestore(&priv->fpe_cfg.lock, flags); > } > > static void stmmac_mac_link_down(struct phylink_config *config, > @@ -4091,11 +4095,25 @@ static int stmmac_release(struct net_device *dev) > > stmmac_release_ptp(priv); > > - pm_runtime_put(priv->device); > - > - if (priv->dma_cap.fpesel) > + if (priv->dma_cap.fpesel) { > stmmac_fpe_stop_wq(priv); > > + /* stmmac_ethtool_ops.begin() guarantees that all ethtool > + * requests to fail with EBUSY when !netif_running() > + * > + * Prepare some params here, then fpe_cfg can keep consistent > + * with the register states after a SW reset by __stmmac_open(). > + */ > + priv->fpe_cfg.pmac_enabled = false; > + priv->fpe_cfg.verify_enabled = false; > + priv->fpe_cfg.status = ETHTOOL_MM_VERIFY_STATUS_DISABLED; > + > + /* Reset MAC_FPE_CTRL_STS reg cache */ > + priv->fpe_cfg.fpe_csr = 0; > + } > + > + pm_runtime_put(priv->device); > + > return 0; > } > > @@ -5979,44 +5997,34 @@ static int stmmac_set_features(struct net_device *netdev, > static void stmmac_fpe_event_status(struct stmmac_priv *priv, int status) > { > struct stmmac_fpe_cfg *fpe_cfg = &priv->fpe_cfg; > - enum stmmac_fpe_state *lo_state = &fpe_cfg->lo_fpe_state; > - enum stmmac_fpe_state *lp_state = &fpe_cfg->lp_fpe_state; > - bool *hs_enable = &fpe_cfg->hs_enable; > > - if (status == FPE_EVENT_UNKNOWN || !*hs_enable) > - return; > + spin_lock(&priv->fpe_cfg.lock); Is this ISR, so that you used the non-IRQ-safe variant? > > - /* If LP has sent verify mPacket, LP is FPE capable */ > - if ((status & FPE_EVENT_RVER) == FPE_EVENT_RVER) { > - if (*lp_state < FPE_STATE_CAPABLE) > - *lp_state = FPE_STATE_CAPABLE; > + if (!fpe_cfg->pmac_enabled || status == FPE_EVENT_UNKNOWN) > + goto __unlock_out; [...] > -#define SEND_VERIFY_MPAKCET_FMT "Send Verify mPacket lo_state=%d lp_state=%d\n" > -static void stmmac_fpe_lp_task(struct work_struct *work) > +static void stmmac_fpe_verify_task(struct work_struct *work) > { > struct stmmac_priv *priv = container_of(work, struct stmmac_priv, > fpe_task); > struct stmmac_fpe_cfg *fpe_cfg = &priv->fpe_cfg; > - enum stmmac_fpe_state *lo_state = &fpe_cfg->lo_fpe_state; > - enum stmmac_fpe_state *lp_state = &fpe_cfg->lp_fpe_state; > - bool *hs_enable = &fpe_cfg->hs_enable; > - bool *enable = &fpe_cfg->enable; > - int retries = 20; > - > - while (retries-- > 0) { > - /* Bail out immediately if FPE handshake is OFF */ > - if (*lo_state == FPE_STATE_OFF || !*hs_enable) > + int verify_limit = 3; /* defined by 802.3 */ If it's a generic/IEEE definition, then either put it somewhere in the generic headers or at least make a definition from it, doesn't open-code directly. > + unsigned long flags; > + u32 sleep_ms; > + > + spin_lock(&priv->fpe_cfg.lock); > + sleep_ms = fpe_cfg->verify_time; > + spin_unlock(&priv->fpe_cfg.lock); > + > + while (1) { > + /* The initial VERIFY was triggered by linkup event or > + * stmmac_set_mm(), sleep then check MM_VERIFY_STATUS. > + */ > + msleep(sleep_ms); > + > + if (!netif_running(priv->dev)) > break; > > - if (*lo_state == FPE_STATE_ENTERING_ON && > - *lp_state == FPE_STATE_ENTERING_ON) { > - stmmac_fpe_configure(priv, priv->ioaddr, > - fpe_cfg, > - priv->plat->tx_queues_to_use, > - priv->plat->rx_queues_to_use, > - *enable); > + spin_lock_irqsave(&priv->fpe_cfg.lock, flags); > > - netdev_info(priv->dev, "configured FPE\n"); > + if (fpe_cfg->status == ETHTOOL_MM_VERIFY_STATUS_DISABLED || > + fpe_cfg->status == ETHTOOL_MM_VERIFY_STATUS_SUCCEEDED || > + !fpe_cfg->pmac_enabled || !fpe_cfg->verify_enabled) { > + spin_unlock_irqrestore(&priv->fpe_cfg.lock, flags); > + break; > + } > > - *lo_state = FPE_STATE_ON; > - *lp_state = FPE_STATE_ON; > - netdev_info(priv->dev, "!!! BOTH FPE stations ON\n"); > + if (verify_limit == 0) { > + fpe_cfg->verify_enabled = false; > + fpe_cfg->status = ETHTOOL_MM_VERIFY_STATUS_FAILED; > + stmmac_fpe_configure(priv, priv->ioaddr, fpe_cfg, > + priv->plat->tx_queues_to_use, > + priv->plat->rx_queues_to_use, > + false); > + spin_unlock_irqrestore(&priv->fpe_cfg.lock, flags); > break; > } > > - if ((*lo_state == FPE_STATE_CAPABLE || > - *lo_state == FPE_STATE_ENTERING_ON) && > - *lp_state != FPE_STATE_ON) { > - netdev_info(priv->dev, SEND_VERIFY_MPAKCET_FMT, > - *lo_state, *lp_state); > - stmmac_fpe_send_mpacket(priv, priv->ioaddr, > - fpe_cfg, > + if (fpe_cfg->status == ETHTOOL_MM_VERIFY_STATUS_VERIFYING) > + stmmac_fpe_send_mpacket(priv, priv->ioaddr, fpe_cfg, > MPACKET_VERIFY); > - } > - /* Sleep then retry */ > - msleep(500); > + > + sleep_ms = fpe_cfg->verify_time; > + > + spin_unlock_irqrestore(&priv->fpe_cfg.lock, flags); > + > + verify_limit--; Are these 3 empty newlines needed? I'd remove at least some of them. > } > > clear_bit(__FPE_TASK_SCHED, &priv->fpe_task_state); > @@ -7535,8 +7550,8 @@ int stmmac_dvr_probe(struct device *device, > > INIT_WORK(&priv->service_task, stmmac_service_task); > > - /* Initialize Link Partner FPE workqueue */ > - INIT_WORK(&priv->fpe_task, stmmac_fpe_lp_task); > + /* Initialize FPE verify workqueue */ > + INIT_WORK(&priv->fpe_task, stmmac_fpe_verify_task); > > /* Override with kernel parameters if supplied XXX CRS XXX > * this needs to have multiple instances > @@ -7702,6 +7717,12 @@ int stmmac_dvr_probe(struct device *device, > > mutex_init(&priv->lock); > > + spin_lock_init(&priv->fpe_cfg.lock); > + priv->fpe_cfg.pmac_enabled = false; I think it's kzalloc()'d? If so, why initialize booleans to false? > + priv->fpe_cfg.verify_time = 128; /* ethtool_mm_state.max_verify_time */ Same as verify_limit above, make it a definition, don't open-code. > + priv->fpe_cfg.verify_enabled = false; > + priv->fpe_cfg.status = ETHTOOL_MM_VERIFY_STATUS_DISABLED; > + > /* If a specific clk_csr value is passed from the platform > * this means that the CSR Clock Range selection cannot be > * changed at run-time and it is fixed. Viceversa the driver'll try to > @@ -7875,15 +7896,8 @@ int stmmac_suspend(struct device *dev) > } > rtnl_unlock(); > > - if (priv->dma_cap.fpesel) { > - /* Disable FPE */ > - stmmac_fpe_configure(priv, priv->ioaddr, > - &priv->fpe_cfg, > - priv->plat->tx_queues_to_use, > - priv->plat->rx_queues_to_use, false); > - > + if (priv->dma_cap.fpesel) > stmmac_fpe_stop_wq(priv); > - } > > priv->speed = SPEED_UNKNOWN; > return 0; > diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_tc.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_tc.c > index b0cc45331ff7..783829a6479c 100644 > --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_tc.c > +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_tc.c > @@ -1063,11 +1063,6 @@ static int tc_taprio_configure(struct stmmac_priv *priv, > return -EOPNOTSUPP; > } > > - /* Actual FPE register configuration will be done after FPE handshake > - * is success. > - */ > - priv->fpe_cfg.enable = fpe; > - > ret = stmmac_est_configure(priv, priv, priv->est, > priv->plat->clk_ptp_rate); > mutex_unlock(&priv->est_lock); > @@ -1094,7 +1089,6 @@ static int tc_taprio_configure(struct stmmac_priv *priv, > mutex_unlock(&priv->est_lock); > } > > - priv->fpe_cfg.enable = false; > stmmac_fpe_configure(priv, priv->ioaddr, > &priv->fpe_cfg, > priv->plat->tx_queues_to_use, Thanks, Olek