From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR01-HE1-obe.outbound.protection.outlook.com (mail-he1eur01on0076.outbound.protection.outlook.com [104.47.0.76]) by dpdk.org (Postfix) with ESMTP id 5204B1B2FF for ; Sun, 22 Oct 2017 07:50:02 +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=tbg4fhcvNeJYoMbXAuzYyPfTOy5nutKIll4CWDLw6heftciezmURZ5sZ8ANkfmodPma64zuQOgFLmPlTRuTyD3alyAZBosGOV5RmvQ167das5egFKIpouyuHzzCTKpm5JGS7QN9TwzmWwjrqS0knzk3RMgUGpXsw7H/dbocVi2Q= Received: from mellanox.com (37.142.13.130) by VI1PR0502MB3056.eurprd05.prod.outlook.com (2603:10a6:800:b3::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.156.4; Sun, 22 Oct 2017 05:49:59 +0000 From: Matan Azrad To: Matan Azrad Cc: stable@dpdk.org Date: Sun, 22 Oct 2017 05:49:17 +0000 Message-Id: <1508651357-31757-1-git-send-email-matan@mellanox.com> X-Mailer: git-send-email 1.8.3.1 MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [37.142.13.130] X-ClientProxiedBy: HE1PR0402CA0046.eurprd04.prod.outlook.com (2603:10a6:7:7c::35) To VI1PR0502MB3056.eurprd05.prod.outlook.com (2603:10a6:800:b3::17) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: cca15d9f-0df6-4cf5-a59f-08d51910bbb6 X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(48565401081)(4534020)(4602075)(4627075)(201703031133081)(201702281549075)(2017052603229); SRVR:VI1PR0502MB3056; X-Microsoft-Exchange-Diagnostics: 1; VI1PR0502MB3056; 3:0CWyFQtfPajyie+e66FRpv02z12EY1USkJ8saGQUywYk76pB+ZlXurktHDhLHjKmYyZnE7tOUVC2/9qbjpxZUEVVWqjcB1K2QVezQqNMesZNn/E77gGxV32eu3k35xoqUDswa4YY6sm40D5rDp+hrg+aW8+XUYPQDrJL3TA30KQiLQrU2SLWgOMbMws2m2wvNC2acdLXaM4i3DmDxwoEemCeNWh3N3WV+i57VPoXvGsM1yZcBa4mzG7sAdw1eBhV; 25:OK4QXYBUD7o9JCw20Th0m4y9b6a6uDBTEOHpfTmLYL5Ukqz+Oy2jOt4IsyJV9HCIHY2bkmRjRMcL+mZAkYUQ8H0DcsyNyfJiEaGQ+G9E/R/JYkuVk/WNkAjrzKsBqGoS6ikMoXvpqDBLjY5vmmEv4PHnZMP8bZ8kdySJkDP0NujA5zmDuZcoP/K3qfzD5KiPUW9RisNqmdCIOIhNmPrNos97JezwwgFgLFaDMAAwOGqUV2Ym7Lf3AiaeR7O8EEtNRfw2C1nwvSPG+RDJxteqvneF3s3r3l9epBpaiKGTh2e+ZRqwU1FlFAQM2/X2seqKWzys9fZDy8vXNaBIOWEU1A==; 31:hKTazBpMo6zH83GEUKz2j8hsg3I2BErQT6HN+Q7qJtwt7UBungLJWRHRsIVUc3AnDrTMgMmYK1VC+Cztdg88qtUAYQBhX541BlZZxphMZHeNj4bHhP/ZLAm23+Hwt/d1Ke8Jqz3LSe5t9pncbuQqynLBErVPJJpf46jlRqwHdZcsmvLMM6o5kzh6eGRtOMj9J7AfA5nT+Xbx4Q2sz4eB6qU0qOX4m2NkoIbzSXjIzQg= X-MS-TrafficTypeDiagnostic: VI1PR0502MB3056: Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=matan@mellanox.com; X-Microsoft-Exchange-Diagnostics: 1; VI1PR0502MB3056; 20:ohE9x56y7eBDIx4CXW2MgNAK8OYB/wcV7DgSyCx+Qq049i6rWAnqUfpDAFV1Ni9M9wJpGKncHSbMdk9B08+nGdUSWqO8YYEcAYsG7hYAZGvMKKgcqyFrVe9UOBDpH6rGKuJfmLrJSb4DI884lhLBNi6efRMRCU+4n1qjUW12WQnbR691oDZ9batFwSyXKEfrR+l8Ba3mI1jZfg6AC6NYV5ahN9g7xtR69uyNH7h1RGT5hIkI2QtUIC+QlWStAIhXnu1sTUgjHdEQzOp6ztcsK8raFVQAGdhAZ3H11RnCzUVtwR5iZIjrU8sU9VZ7M1clFtiT4b2qyqpbwFuntmYT8Pb9hoh+NKnLMhMILQXLq+WY16xisFuyHPkELXNNdkhpi+sU4BvQ8r9LR6MAJma0uirTwkMzIdpPp1fA604FtGyzve3EP4e6roYT5CnxR0Raj62bJBoJhBmM9j425ToGPJX8Pr0oyKunA5z3C9+c6/yWWbwclhiXqWpu7moI0EWZ; 4:5vCQamrMrm6aCXB/qjQ0qYR8vtqlBqju7iueo1H7h1oq3SRceEkFMYCYLWhST5vU9x2Z0vClMWyZ157+L7GaHEsZ9q+oOIBpY02nB66bl+dOKAETHBwncBcmERPE1tDPrQhJ9QrSimelp8WBcRaBgPGURSzL31loGmKKldyLddrTnj9+iyaJ/kHH3eGH64VcfL1Lu7Lh452Uy1UY3Jf5GCMnh7cMBGyhDh5Z0Lwz4pYBayC37JbHKlgNtMEG+2R+ 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)(100000703101)(100105400095)(93006095)(93001095)(10201501046)(3002001)(3231020)(6055026)(6041248)(20161123558100)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123560025)(20161123555025)(20161123564025)(20161123562025)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:VI1PR0502MB3056; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:VI1PR0502MB3056; X-Forefront-PRVS: 0468FE4A2B X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(6009001)(346002)(376002)(189002)(199003)(21086003)(50226002)(6666003)(33646002)(6862004)(189998001)(66066001)(5003940100001)(47776003)(7736002)(53936002)(106356001)(105586002)(305945005)(81156014)(69596002)(48376002)(50466002)(4720700003)(8936002)(101416001)(81166006)(25786009)(478600001)(50986999)(97736004)(68736007)(8676002)(6116002)(3846002)(37006003)(16586007)(36756003)(33026002)(7049001)(316002)(4326008)(6200100001)(55016002)(16526018)(86362001)(575784001)(2906002)(5660300001); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR0502MB3056; 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; VI1PR0502MB3056; 23:iIUV4ocm4fCZSDYgm9E4Uns0jk2jJLyHCmY8bgr?= =?us-ascii?Q?3aZSZiydg4X1P77MsOeud3Ap7xk5TCGYBDXxLi30W75uvLJNvnSQ0TV8vBML?= =?us-ascii?Q?N0gp5+JrF0pn0L90ArW6GETBf1c3QnayPseRcjJUivOCmKE6Qwy64O1udZay?= =?us-ascii?Q?qGkjZ71zTWrZcgjiskb8b8dw2d8hHRLql67TlUjinJ1kU/PcibWda9fh3HWH?= =?us-ascii?Q?FgZnyZ3tnkscTAe3BCXfGC2y0y2fpDbqXqlKTI9/qEJOTfc63I17CAxC4WV5?= =?us-ascii?Q?JeSAT7+Gr4Da0sgyh+JYVcpvPgxKe8ElB+O+YAH7z/C5JlKha6EIwMbw2J50?= =?us-ascii?Q?KRV25+LSjyJui/uCUIOGs3ORvZ9rcURuX3KG/XUALqC98FcFhakfurSV9KO+?= =?us-ascii?Q?SHqqd51zqtaRLmz7b3bxUZgO9WZjEBfgb4zGZzVopkSJZiugJhtg66VecRPZ?= =?us-ascii?Q?zQe2Xj9uvfWYLeLj2jc81VGa9pA1ZnfaNkWJ/iXyaK+vXikqNYVej6lxuS67?= =?us-ascii?Q?kfiVUFhLAp4wUfhve3u+YKdKYTc/xXJp2CH1JL3geK2bSN7IPgj7ZUX2i0Nf?= =?us-ascii?Q?ix5U4k/YYoaH/O8Pk5huDxnExNjsMz6CdccGbU/E5bQ0+4HZ0vaVKq/j7KvF?= =?us-ascii?Q?E4XiI33BAvKBXi70AApaM8rL7wEPXDwY2zSm1Y9ooBo8O4UQbPrrvlgiUPc/?= =?us-ascii?Q?oQAhhWEkUNRrHyGiSL5j/4x9FoxeuVEAQW+b3txHmXS2QkIyocFIcEsxGitb?= =?us-ascii?Q?3V2zTDsIbcXRueACJN3XCfdCKGx0UHFGI4wiW9ZLSWZl4U8TiuroZqbzlE5P?= =?us-ascii?Q?aa1LduKeM8AJ8/Kn1pNyretcDnuOm+DUfwwneD+Eiz1looO8qrJifAElG2IR?= =?us-ascii?Q?AGiTa6ylBJqwytfbYvbzjMzFgK+zwkQwj0ye4jC5iJE6oiHiuQWtmTIzam1a?= =?us-ascii?Q?12CjfvI6B1GIIO+EW/npbkAIMwxEGtMo5VXLjYYEomJdbyH4LHB7zb2G4p7J?= =?us-ascii?Q?bJJAuFgHONNaorAnRL+LrdrX2iF3j7F1RkX4qk0ybmFZxrhA4DShdpRZG+1+?= =?us-ascii?Q?8TVEYEkcmKyv+QzI1Ystu0EoRWIul4kBiJsH8FoVj/lwExUDk+mWklNcMb0O?= =?us-ascii?Q?aEaY4NNuFu2sepXX3S5XQWFstbDBMx2W1vyearGjkY+GOElf9Z9KrZQ=3D?= =?us-ascii?Q?=3D?= X-Microsoft-Exchange-Diagnostics: 1; VI1PR0502MB3056; 6:GMb4d6eZxquUJ1gP8Cz3EiYGN6phM4OgnJBmcb/czDMJZ/bd7OBEjcbMVY4Vpf14KApMBdn9Xxs2WhM4J/5QYZ3vX1/MVAP6xPkCIqEIqYQT6QD0JRZ2DeAEURjdeOLqQshLSmh6h7DfeSLYA7GlrWulHmiyVPL3JsGmLVFDjibveoFjVZ4aJ9guYKi5tQrGzJaraBM2zsyN1DT2kcvTJu5oO2vEU2QJYEE97qrKIdE5ZifsGU496GtE6fWb40C4c09mJQU6frauYRCgmDvOqpEFJQ/0Q2vU4RUsDtt4frhyTuhfx1QgKOADkciW3QttUX6hP8K12bWWfHCcNrUrEg==; 5:5jJbQreSuO16HnSEMjYc7wy8fod+XmpGKvmFEVNYQju7vwIhySR1MzkDD1aB+k7QEFKeI9lJvSr88pO52LJmdK7Bj7Khjbtr+V6ltX9txN70W9WCzI7HNK8cdApnXbNguDBDWm2fKlRPt6MOmu/gfw==; 24:PeEkPMDUjZ1ROp5XJ4loJ+g1wsYkCnPQ2i1jUle1WU6ChuFNqloYuxIflP0WkULAD2oALq1nfM+1YaGiJ1iJLVZp9LgFn4usBwBSciz58PU=; 7:Xw1FXKMSJHnD4LHecxVNclsZJMEZsc3V4sZTZm5Sh3KFNZ7mYlI7YXRavBza8W4Ge8CQ7X4LRchYrSuj75pdUsPUeg7Vhg//+BKU/Wv2tFZJcmPXmwDGB72GHrHB5Xx9npenAQGeH0J1Hwij9JEM+LdEnhPZlHfCHW5SldHZNQ90z7ap5yJ01jgFf+bRVpSyz+j8ObZfi/tgTK+Kcmu+0l9hr61W3gz/ozFtsOPEZiM= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Oct 2017 05:49:59.5554 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: cca15d9f-0df6-4cf5-a59f-08d51910bbb6 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0502MB3056 Subject: [dpdk-stable] [PATCH] net/failsafe: fix Rx clean race X-BeenThere: stable@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches for DPDK stable branches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 22 Oct 2017 05:50:02 -0000 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 --- 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 -- 1.8.3.1