From patchwork Sun Oct 22 05:51:08 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Matan Azrad X-Patchwork-Id: 30661 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 20B8C1B314; Sun, 22 Oct 2017 07:51:43 +0200 (CEST) Received: from EUR01-DB5-obe.outbound.protection.outlook.com (mail-db5eur01on0043.outbound.protection.outlook.com [104.47.2.43]) by dpdk.org (Postfix) with ESMTP id 7FC4C1B2EE; Sun, 22 Oct 2017 07:51:41 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=h9cyQSt9uL6eHbTE2kjeJZYn+aK56MJt5pIh4e8jVpc=; b=XZ2WXETi1dU2Q2/coF1k6Wf8sCSWW8gptoe04B6zlJT809ZL3QNxmQj24xa4qTYJbzQZclg6gTd06myoiQG/bkbH2wVKshnKIpK1zsZ7s/V9+LYqmolVeo8Ea/bG23ggZBdW9hUgO21P/I5Nzw1A/nxlZhC1KkvX99luNtLgu8k= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=matan@mellanox.com; Received: from mellanox.com (37.142.13.130) by DB6PR0502MB3048.eurprd05.prod.outlook.com (2603:10a6:4:9f::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.77.7; Sun, 22 Oct 2017 05:51:37 +0000 From: Matan Azrad To: Gaetan Rivet Cc: dev@dpdk.org, stable@dpdk.org Date: Sun, 22 Oct 2017 05:51:08 +0000 Message-Id: <1508651468-31866-1-git-send-email-matan@mellanox.com> X-Mailer: git-send-email 1.8.3.1 MIME-Version: 1.0 X-Originating-IP: [37.142.13.130] X-ClientProxiedBy: AM5PR0502CA0023.eurprd05.prod.outlook.com (2603:10a6:203:91::33) To DB6PR0502MB3048.eurprd05.prod.outlook.com (2603:10a6:4:9f::8) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 1b93e268-f2d9-4175-6d76-08d51910f64c X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(48565401081)(4534020)(4602075)(4627075)(201703031133081)(201702281549075)(2017052603199); SRVR:DB6PR0502MB3048; X-Microsoft-Exchange-Diagnostics: 1; DB6PR0502MB3048; 3:SH00vkSNYclhv7AC31Kl5q/Zui5QAsszl3NAjvTvXT44b2/Pq6JWpznoGzvqSxts9iy3I+kmOjpspW3U/6AJ5kRIq+6glxUkzP4oz14xCumGTxnSj10b6vzHHt1l1kYzF6BaiUEy2yePWPbE6zejaFk2z12wyhqJaWcPed86r2rYspz2l8SOUY308ysASHcz25wCHoCVLInkwD9/fGR/eu15yCkjCFH1Eo4DX+qOw4+wVSOtjMTuYdZt7LsYHnE/; 25:574bD5WC08vImOALNpuDzOGTTy8Da+zYzckbRJbldFyTWHX1AAX/g/0CwdJnt8ex3BQ2vD9Ofm6z7tqq8O7m3wcco0dOTGflHptzGLzCwVj2HkJRpCPyqJA5YzUMrshco5zFNL0lKKe3DkBJskKue/VU3uHCNfQbH8xzeG0VSIibwRaYvMDtlHl1ePBCAkCH789bPUUflgtSY8ftF/xX9rzBEN5au/0IKYACbjBr4+vhm6eKuNaIfjdF/9TWbs/rnAaUXgf5bUeG6fBKVQYluuLE/5hQ/8Hi+B1L9WD+83Zqm7tdzI4b1j/gSFzGMKV0jp4j8GJAg9kzHoqwn4AFYg==; 31:FKVGe4zvZGwPY7riNsiyFJnej5vowrCAlK09/kW5+GogjkrsAdPubn/A8cFy3lGNNR7i1jifB+1HCHqQHN26waOzlp/tpjyKVFHftI+3X3rb5TEWO+0Amx5DMb7mWiHmgyDsWJCtzr/VvJzXltYbecEz+RR2JXgwHbAabzd22gJopUdkjagc8dvHicwSSVIPpC591zx75rNlwLAyRkE5YyMwTQHoj415LfD3DIdSrI0= X-MS-TrafficTypeDiagnostic: DB6PR0502MB3048: X-Microsoft-Exchange-Diagnostics: 1; DB6PR0502MB3048; 20:RpKeJjH0WuSMP8uWJCMV3hh9VKCsptB/1fyrIs5/x22vkprQfdTZ+Xcmm5ijPNDx+h0FRT/GNG2QhCVzsVt6voXtj/MIzPnt3em5JAupS7Y6D/08dSyxrif8Bf8z4L8YC3Cev2jlS7v4reRmH+ZVPGXCsYI5yfpDBCY2sx2vP8jFyycyj4Cs8t2y2IxNHwEeos5HqQAzqxffHVqQUeygIVf8leYMlEroGGxCbnetHugn7Crl9qwyH0VnW3fQifE9ySKbCSzfuHL8lg0mtimh9H1wNstvxJmtedDcNSsgZ/F999qWysbQWiv5BsDyV5BUs9w/wtu65G/b24a+RZcEnsp3dqNbjP24TpZVs9UVW0Qfx4A4N9Fj0XieOVVzXI7xN9Z7O7CnP4s0UrMcmhM41m9X37XuNwK5eGSrt5cUiPOopf2s+0KjIsIAHE8viui/ACZcf/Ku4J8GRqobq5eAWGwLE4+E6+8EQQGB0bp29a8L5BK6C4Q3ZNtp6cdqMbsY; 4:z9K2FssujcjzlD6ksphdyAsUrq82svEdKc4xOjUs41V3C8+2SO+zEtk7f1HxIvu2WAepF5arThPgQ5f24I9q+kYRsezndnfOHdWPVX2xRyVzEW4vLu25X10SfeT4DTBTrdFbR14BEXh5P3U/1gA0ywa+8uk/rATgxJa6WLugD05vow5zo6e9fPEkF+tkW+o+gGLRqiFCri3B+7aLxIn4JdrLG+PBojB5uTuamnp9GpC27/Xz1/HdOvHc1KInjS8I X-Exchange-Antispam-Report-Test: UriScan:; X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(2401047)(8121501046)(5005006)(93006095)(93001095)(10201501046)(3231020)(3002001)(100000703101)(100105400095)(6055026)(6041248)(20161123558100)(20161123555025)(20161123560025)(20161123564025)(20161123562025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:DB6PR0502MB3048; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:DB6PR0502MB3048; X-Forefront-PRVS: 0468FE4A2B X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(6009001)(346002)(376002)(189002)(199003)(50986999)(4326008)(21086003)(7736002)(305945005)(68736007)(33646002)(105586002)(478600001)(97736004)(69596002)(6116002)(55016002)(3846002)(36756003)(81166006)(81156014)(8676002)(33026002)(53936002)(101416001)(8936002)(2906002)(47776003)(25786009)(106356001)(5003940100001)(50466002)(16526018)(48376002)(50226002)(189998001)(6666003)(5660300001)(16586007)(6916009)(316002)(4720700003)(86362001)(66066001)(575784001); DIR:OUT; SFP:1101; SCL:1; SRVR:DB6PR0502MB3048; H:mellanox.com; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; Received-SPF: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DB6PR0502MB3048; 23:DF96et9vFcv//D0ef4+mrtw+jXH4QLVaqGe1K8A?= 436Cd+Fbu241/YssA+z8U7VPjcQWoHGwX9+moghqq+pqHuLA4Nt+li2gyl1eXmvGv49o8dkkS9dYoiyGhAXtZIA+iW+uBWdqB3NS/WBicfzrvygEniyXrfK6g95i6MPlih3g6bKj6z06R0Icftmf1X5Uf4XQ3XHT8vYkxDCqaWCOHwj0YBnYd0sueSpZn96qs7MNavi9TxbxQe2L0g46evP6EvzdQ0JpwME/jJZP6YWETBT9aOj526nHJDEcnMJK44J7ERjGaMUpdXQfaw83EaXePSBaUFACL7fZQwcAt8HkZiQoR58vWghla82QW8+fOYI/J6d0LLktFxErbci/UpOPpOJRHvKjMxYJr/u9SZ94wDDaguEjsZx3OVh4T10ILUPbycA2aSrrWIcAU4plZkJ+5z1A3Ze8Pavi8kQmJptZsETmW2X6KBgrddxGvVCLa5GWV/qIcXbo3ZmXv75fLJkjwzuJVlOnWOKTMwYmlqwA+yVnx5DF4xpj2Wo/aH8YSMQIykX0reyHh6eGQqVDaOxUrAusV5Mt9ainwDISA1VaM2qHe6WfpLpUegsBKEOah0qj4vEjsgjw7nh97EtCs8TMMP44EU/qVoNDzDcM5SeP9PbplR9GPSqxfqxl7Q5d//NV2y1pN4hiC42w+gs6K0nAeblDYNAm0iLi6FubXqwiB1cJVvnqUOwJ3JUEEPdVUmZzEg1uOLfVyrT924rWYrPJdy+onEtdiI7Q2AMOYuNL3et4x8FaKqeRkqO7/+JtOdBqHN0+8Qu4JkHe5nDasjjt7RKLdVFfgP/n/T73R+XjWaS7TDSuzl9ThvhIL5GkBehg8pAjyvZCPayENnyCwUtNszDk5o116Sg9eSG1HWs7J2a2XMzSvdBqtPbwBM2A1fjn5PYpUx40irFSSgoTQH5pJ3W2qoMzc6ZKdOd70np9t3zmAOPS7+w+tfh/bzsUwq15K6ALHcZsGT5FTDjEyNJGcEsFUYA/lJA5KauhXpcFsIAWrhzeTWl7cBB3Sn8Xf78qtcF8ZYeD4Li6H96RU9jIEEYGUXrp5widBkELJOxKGfA== X-Microsoft-Exchange-Diagnostics: 1; DB6PR0502MB3048; 6:K+n8JwUwyLqxmmBHRnLXVf0ELx+g66T2Gaj2w6exeiIzatTAnP2EqzFRk+5bHSEuo2P+DEaAQQcbgWG33j4VeMkgnhCdc0Vz9y5mVW5nLBYXgO8kAq6ht3EDfv/a5O7DpIJfa5Qz1iUNI+LandTVymaXaF26OEA0yU4dWjbETA3V8VBkAfHkogasiohpctUUsHhxDDMXd+GU3tE1Y0hvaoaKEl7iokT+ApJSakt4D9jiq7dqvi0XuBEHYR88AhSv+GwMebo+JmY+RTkXxnZhOKoWm1JpSDjjXdRlNxOVCyo58uO/DbHfGufQ08EBFncY/3FKLi2ZjgSe7uXacl6+pw==; 5:1+wtYmzzgnZ+erQh7hSP+XyUka3Meak9B0vegA+7100UXWyOG3ofwgR8AO9fmO63scE4lPc26zPpLyePbtQyFywyQqSZ2Z1rsQXM7XtuhdNFeqM2Pikc5kdEFuoXMrIL4TdgZIRMKWg+qevQXQaqXg==; 24:wcjzbPx9nWjkaejAIRg1B3aDvG9WrTivaaKvAsNq0ugaElIF1sHwLTOvqDwZ5rsUi1nIaOk6OCjCVEvzFeVBEaSQazyLOaY/k66qtHAFeRI=; 7:QCLw2fTGHWgscfrhISBK+ZFKCNK5r1E4rOIV6TQdmiWL0w5MJqJ4xkaFZJPEqcCf1K/LFCWfynADIJ6MybHN1zjPgYlvnTSFRH8r9JNeGoizQ3V+N7ivKWGgOtPLPm01ZfQACs/bmuZZXt6afs/IG+bgWK7TRRcaB/2+n0SvreNbpl3o8cWxn0F0gT3hIiq3omiq95onB2aMZljgvHmlzkCWMQj3/SieObPvUlJQjR4= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Oct 2017 05:51:37.8761 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB6PR0502MB3048 Subject: [dpdk-dev] [PATCH] net/failsafe: fix Rx clean race X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" In case of plug out, the RMV interrupt callback sets the remove flag of the removed sub-device. The next hotplug alarm cycle should read this flag and if the data path are clean it should remove the sub-device. In case of fail-safe RX burst calling from application, fail-afe tries to call to all STARTED sub-device rx_burst functions. The remove flag is not checked here and fail-safe may call to the removed sub-device rx_burst function. The above 2 cases run in different threads and there is a race between the removed sub-device RX clean check to the removed sub-device rx_burst call makes the sub device RX unclean. If the application calls to rx_burst in loop, the probability to get RX clean is not enough, especially when there are few sub-devices or if the rx_burst function of the removed sub-device takes a lot of time. Each time the sub-device data path is unclean, the second oportunity to check it again should be only in the hotplug alarm next cycle; the default time between cycles is 2 seconds. In this loop when fail-safe tries to remove the sub-device, the sub-device may appear back and fail-safe cannot plug it in back until the removal process is completted. In this time fail-safe may lose the primary sub-device services and may hurt application performance. This patch adds a remove flag check in safe rx_burst function. By this way, at most one more hotplug alarm cycle is necessary to get the sub-device clean for actual removal. Fixes: 72a57bfd9a0e ("net/failsafe: add fast burst functions") Cc: stable@dpdk.org Signed-off-by: Matan Azrad Acked-by: Gaetan Rivet --- drivers/net/failsafe/failsafe_rxtx.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/net/failsafe/failsafe_rxtx.c b/drivers/net/failsafe/failsafe_rxtx.c index 7311421..70157c8 100644 --- a/drivers/net/failsafe/failsafe_rxtx.c +++ b/drivers/net/failsafe/failsafe_rxtx.c @@ -43,7 +43,8 @@ { return (ETH(sdev) == NULL) || (ETH(sdev)->rx_pkt_burst == NULL) || - (sdev->state != DEV_STARTED); + (sdev->state != DEV_STARTED) || + (sdev->remove != 0); } static inline int