From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR02-VE1-obe.outbound.protection.outlook.com (mail-eopbgr20052.outbound.protection.outlook.com [40.107.2.52]) by dpdk.org (Postfix) with ESMTP id BF4EF293C; Tue, 22 May 2018 14:39: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:X-MS-Exchange-SenderADCheck; bh=GpZ/lnHQSyf1eR474Pqte63j/rIBAWdDDdwJJwuyEfw=; b=jG6ILORYIMxRJIqJm4Jm+ORN5HpchKYgLx1cvGj3K/cxi/vMbKND4k3B9ROxVEmRQaUvu4E+cpzD3yboCRrT9quO3sohaXJDK+8cHW1OfHqPJHPZenHW728rVFo5arDyG7jUW8ExvelClV1y5yi1a/vbfsQRrRjuBi11zUukwP4= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=matan@mellanox.com; Received: from mellanox.com (37.142.13.130) by VI1PR0501MB2605.eurprd05.prod.outlook.com (2603:10a6:800:6a::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.776.11; Tue, 22 May 2018 12:39:00 +0000 From: Matan Azrad To: Gaetan Rivet Cc: dev@dpdk.org, Ophir Munk , stable@dpdk.org Date: Tue, 22 May 2018 12:38:46 +0000 Message-Id: <1526992727-10459-1-git-send-email-matan@mellanox.com> X-Mailer: git-send-email 1.9.5 In-Reply-To: <1526932084-1120-1-git-send-email-matan@mellanox.com> References: <1526932084-1120-1-git-send-email-matan@mellanox.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [37.142.13.130] X-ClientProxiedBy: VI1P189CA0030.EURP189.PROD.OUTLOOK.COM (2603:10a6:802:2a::43) To VI1PR0501MB2605.eurprd05.prod.outlook.com (2603:10a6:800:6a::17) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(5600026)(48565401081)(4534165)(4627221)(201703031133081)(201702281549075)(2017052603328)(7153060)(7193020); SRVR:VI1PR0501MB2605; X-Microsoft-Exchange-Diagnostics: 1; VI1PR0501MB2605; 3:tKq+IJt/PtdvQoVgUU8I27u4GDkR46GC4Cd3Fqkv7udXb/tsIwwj7okeVCX2wq5wFIzgjfMNyTdJCIE6OWa8uHJMTEzqRsMmt6tQvgNuCZpYvi/aNEY9Jc+UBa6PWaKPhBGQzL/Ft42z7om6rMxDN5PTHlH9IceNpBScD3LM+kNZoNfWuzWTvfPwp8Gh8uizlg962s/OB2iBrF2n622NzbbfufdG28d4H2kVXHc3t0xopRgyAMjty0CYJNIY9RaF; 25:eyF801/g2qcw1YrD+nox2qGi4hTOuYICSkMUV/Xj8LvKMoSNyyEPjRrjUHYyDS8PIL36zz5eI8fv6A6VJvTZ08MKTYEdHIVJjqtugPTzUbNNLzApp5aD/ND6ZN06LkSU4cMmRGRO0+lBmDYqVOUQlGU6ttjN8nmFtGc0wCj4oVM58DRuWglB9tTSALe9R2sBmyrWJWyx48hCAkq56SU5h9YQhvV2CLoi/h1Dm6zWXIpl0iIfm09hH82+z6VKDA1jckqP5gfIX3omErjMUL1oCLTp455u5ST7DpsLoUPhmoZSTf1oOESJa0fjuT3vVnUX4a+zbYlzK+WlbBVTdw+KbQ==; 31:760TH8vB69I6bkc2bZZzydTfhKqbUJMSu0U/ZfpgryafNWhOv7kqpXMk8htkGjl0u9ANgWVm26ltqe+Ide+yfTAGyI54GK8CB/Z10WOUyhzAHeMWFYjkTQyraoFHEhK4I71rTWhKtVztRhPhDrgVpXncITuu4Z1UjJey5PONuN533DHexUEItachQLOtlJesKRtg5WDdW+PjJV5CR+niXGpr5C6ijCIYKXACFhnoRgI= X-MS-TrafficTypeDiagnostic: VI1PR0501MB2605: X-Microsoft-Exchange-Diagnostics: 1; VI1PR0501MB2605; 20:vwgFHk1lnaGmGk2n+DTRKKc99UQ1h9aTJ/CfRZdLRjvbRHh8Ur5yhbdj1ehElm5m/9IXPdauCMuhhNbToLT5iBxui8srlS/uvcwgR9fQTIGmt3R9+7EgP0PQSazySp94c3UUoXBp0B3I4NLBrvXGGFnz3TBvsPsPiU0nLzZYnmjKMyP91otwiBpObCS6bouO8uN66x1Ge9Mwc0PIWxue69setuP3VMov7m0/vcFesoS6CVwZ3PmzW7scdhYwA6fu+vsFzIzC7P6WhwER5gU43ypSWkBXDX/LzQxqYFQt7nWqS6dh6R7gUk4mgg+Hg42OaWQzB3sW/mcD7qLaWRuW9COI3cAe4IxsowAC7EKG2mVZvmJbbjxRLcjn7hZO3/bwpWeawcsBhGovt4I71qX9lgnGAuE7G3CVlNFASRySwD02JrPqdECmNDsHZoIPsN/VFl80jtczWvDwjKndsMgrimy5clKViQxyU9cqDCpYpRctD99R78P8SCu0C3/Rl6bh; 4:6eUCTg0YnvtqMtQn39AJG14O1SAZON/J4yvR8o2YSZf7C07/AYwIdWWhdgQUMvi7jdI8LZs5v1chQ4Cqe+r7FwFgkfnI/9f76JHAN8U+21+fUlSv+fTCP2oV9HlEIPzou4FjQOdyYSMq2goUhQzJUHtqQjzX+ad2X5OEV3G2ZA5SYFhsZKgGFRYMnEV5t3D8QKKhRNN0cVJwJOAbwuZds7nMvn45G4PC/m+sVap4mx9gbYdO3c85DQnf7/DGVoM+Q5hK2PMAbJD+Bzc30vgyfQ== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(3231254)(944501410)(52105095)(93006095)(93001095)(10201501046)(3002001)(6055026)(149027)(150027)(6041310)(20161123564045)(20161123558120)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(20161123560045)(6072148)(201708071742011)(7699016); SRVR:VI1PR0501MB2605; BCL:0; PCL:0; RULEID:; SRVR:VI1PR0501MB2605; X-Forefront-PRVS: 0680FADD48 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(376002)(39380400002)(396003)(366004)(39860400002)(346002)(199004)(189003)(2616005)(33026002)(316002)(68736007)(69596002)(50466002)(106356001)(48376002)(6916009)(105586002)(2906002)(16586007)(36756003)(956004)(476003)(76176011)(6666003)(5660300001)(52116002)(7696005)(486006)(51416003)(478600001)(66066001)(81166006)(97736004)(55016002)(81156014)(186003)(4326008)(6116002)(3846002)(25786009)(386003)(7736002)(8936002)(53936002)(47776003)(50226002)(16526019)(305945005)(11346002)(86362001)(446003)(21086003)(8676002)(26005)(59450400001); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR0501MB2605; H:mellanox.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; Received-SPF: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; VI1PR0501MB2605; 23:jYLkLLPMwqsPf0KjNQmhlYV6HzrK26gmE/zaugk?= =?us-ascii?Q?jupU6kbEGOkKNubuvoJK5GsunaTD+YqGCGm5upUtzqbGvUfVlOgW1+LGFFL0?= =?us-ascii?Q?bNKLcSnakbTc59NYrFA2qQoY5jNvBH1l+t3ILxpHWNT4qXCXMpCRlxW7epSV?= =?us-ascii?Q?sphUeQ++ixtyOG8u9jNKMjD4r+SOAcBC07zcNjAbS5zfTZ/ay/MFwNJtP8fn?= =?us-ascii?Q?AjNtVi08sOCzAuv78uh3drRrsirLPPp/rcrV8a+ovgPRAPSL0cSGrvpNK8j4?= =?us-ascii?Q?jd7i/aKdvyB7CRdJHYZ/Fo1yTTieAFH3/DGKcdLzVQ3Nk5mVrzcxpRmZ097C?= =?us-ascii?Q?AH2esSi5wU2s/JnPbapDciOze8g+K61qfsM6u2T6Qg6DBsDWUUeKfjWg2FLJ?= =?us-ascii?Q?tTteBxIF5K2mRtiEUJZy3Iz1moa3m8/EEVbytNbl2iklodj0tgca+mvQZsAr?= =?us-ascii?Q?QUYDkmvDdWivisTi8XbtS2Bx25ffw7yX41WvFA2oQQgkegEzk3oclWX/s1Up?= =?us-ascii?Q?7+0DFrBTRm0y20k5c+Q+Lj5yyQbMRqB2f9LjluH4sSmd42XbhUTWcW/SHjmM?= =?us-ascii?Q?vaBBHRnUpmp26/x5HZFo/n0ogHpVZjpUSF/82OvOBkbOi1qORTqE71t3lYiH?= =?us-ascii?Q?XrQKjP7y9IYoRa1eWTIYWUhWSSHCANQz1cD+yyKoDcti76WvPTq360D34pmo?= =?us-ascii?Q?F7OBoghGfu4Z17GtcEC2TeboOs+lvEYHZJJgcGR4HKTeH84NdgniHgRB3NOY?= =?us-ascii?Q?a/jOH4H2z6bRSdTfUVRghznZknbiYp/Ca7HST/TaGvXTevYW2wvhB5EifT9L?= =?us-ascii?Q?QppE6zRQ3VvHOZXka+FIvojyCsEu65Up7EhiIOGj8K6EbSLP+1w5gjMFutVX?= =?us-ascii?Q?fuz9ucyVDOYOHmvUzG13yZweJ7hrZ9XbHpeXLvVTgFN0fpzSaJvsHeeUccvy?= =?us-ascii?Q?CqCUrEhh8hp4qm3yE+v65DoxeuwfN85TKUh+iRZ6nwLzzUDfOtJiaKrqVCue?= =?us-ascii?Q?SbM9KaeeZDYLPhX3LQk7qJeuwroN1vv7OsV9jjE16KpotS9s0NKgGfXI9ADj?= =?us-ascii?Q?Hin0E0Az7CAMv58Dzi35wh927vG0kyQz8Y6F9DRdboc5i0m8dNv5z6puP63Z?= =?us-ascii?Q?AVXHSsWs9UIibYGTkT1b7CyeEC4lOh0JKp/2BLcSPEQAKAOR384UlcB8E3gz?= =?us-ascii?Q?T61k7/ZdR1e2wxOF73Yy/RAPTFACZ+97gP7ossmf+fIrhklQZ7G2EHp113p2?= =?us-ascii?Q?9gYJiCQ03LDQrmjHAgkk=3D?= X-Microsoft-Antispam-Message-Info: HaEK6RRBlrhhA3P4d8jQJLIdAUN10bqqbN4aUMpk/6QyMoOmcJz2bMJEBt8YJlmaoJkmR6dHAMzjL0gRGjQuQgy9PNEUkgt5jMTLzGKWqaQ6w4xmr/nvKwGffDnhXa/9antv0A001wuU00MGtig7f5Stlp16p8qTPvPY7d+Un9fntsDXK3thEK/kz5IjN8nT X-Microsoft-Exchange-Diagnostics: 1; VI1PR0501MB2605; 6:N4Nqrrp/vbnQkCcRGG77FZNqdnGgMFvI4Ka/gDdD5CtZEQCJpAM5sdu/cqq0tRbfFgoV8XhxHxRuhqikWuCvXox8qW46bLbi/ihRS/B43JIUqDIwOMdXMp2r3MTP8mWVIFfqW0Tt+mHpEqQa0YNQzVgkRIqxZDAb2m962plwCggwPNhIooJG4xxQrsltfw+x2du8fGaihkKsGZWNAyMz88mrt0bFisd38AK0aLmw8TE0VS9AerQhmFUDFxZwuRiNP73LvsYODSzMseY5+hWlmQcXS0GF+lyoM9f4klQ0wQeb+hXFXOxeGO6wHAFpthzEV1nM3axA+dipfBHcQgNDO6d1iV1ivbxYHBsNeoL0UljqZHkOG/+xPitRHnhEZ0HUxznXr7xMVofpn7ZulKsJgIWOEvu0ltl0I7JFxC+uCgUF7fBFZW/nzieqMUXROONlAwWgj+edMb5KPO2VCk/JEQ==; 5:oOeDa7PcMWcWf2EQrmGzlCS73+pJaFGm1QTsu2PwVC/H2tzGC8KpH9qRcixFHBE5TWsP09azEJAUAFTuky5I5mz8DPEie6W+hlaigcVjZMo+AXqCI86wN6dmXAwDiezE7ptHVQ2KXyRoaW0P+QkiotItMneClTXii0W6R20oLAc=; 24:zJs1gZ395oObpSOdRSLeaYuGLMndRT9lJWS3/aAbBHJd8rywArsntXKOXUZPEGWrMaWK8uPQ1ngjq9IjBAAB/E2zWxUCr1Iroki012pELaU= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; VI1PR0501MB2605; 7:nwrG2DdwUS011taOONb7HlJfRaY/6LZPFrYK9XgBY5oIJmzdseY6NZNUbApj+lByk15EOQPyKe2WrU3cLyPRR51wqzvQO/zQMSsRoaLI9Yu5nzWq7LcKTmpOWJT00naPzw9Sc1UROXpsDlJ/XuiBlbOqHeY2rMO3U+gbUYlIwLEYJEUIH2v2qTmRI6T1qMXegz10RP3gSCRTVJ4XES2c4gJkW/i6h8uMoovkEae4aQFRBEebWtfIonC5Al0wqvcO X-MS-Office365-Filtering-Correlation-Id: 9227ed9a-c0df-4fd1-b683-08d5bfe0ff18 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 May 2018 12:39:00.9932 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 9227ed9a-c0df-4fd1-b683-08d5bfe0ff18 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0501MB2605 Subject: [dpdk-dev] [PATCH v3 1/2] net/failsafe: fix removed sub-device cleanup 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: , X-List-Received-Date: Tue, 22 May 2018 12:39:03 -0000 The fail-safe PMD registers to RMV event for each removable sub-device port in order to cleanup the sub-device resources and switch the Tx sub-device directly when it is plugged-out. During removal time, the fail-safe PMD stops and closes the sub-device but it doesn't unregister the LSC and RMV callbacks of the sub-device port. It can lead the callbacks to be called for a port which is no more associated with the fail-safe sub-device, because there is not a guarantee that a sub-device gets the same port ID for each plug-in process. This port, for example, may belong to another sub-device of a different fail-safe device. Unregister the LSC and RMV callbacks for sub-devices which are not used. Fixes: 598fb8aec6f6 ("net/failsafe: support device removal") Cc: stable@dpdk.org Signed-off-by: Matan Azrad --- V2: Improve the commit log and add code comments for the new sub-dev fields (Ophir suggestion). V3: Add warning message if a sub-device event callback unregistration fails (Ophir + Gaetan suggestion). drivers/net/failsafe/failsafe_ether.c | 30 ++++++++++++++++++++++++++++++ drivers/net/failsafe/failsafe_ops.c | 5 +++++ drivers/net/failsafe/failsafe_private.h | 5 +++++ 3 files changed, 40 insertions(+) diff --git a/drivers/net/failsafe/failsafe_ether.c b/drivers/net/failsafe/failsafe_ether.c index 733e95d..5b5cb3b 100644 --- a/drivers/net/failsafe/failsafe_ether.c +++ b/drivers/net/failsafe/failsafe_ether.c @@ -260,6 +260,7 @@ sdev->state = DEV_ACTIVE; /* fallthrough */ case DEV_ACTIVE: + failsafe_eth_dev_unregister_callbacks(sdev); rte_eth_dev_close(PORT_ID(sdev)); sdev->state = DEV_PROBED; /* fallthrough */ @@ -321,6 +322,35 @@ } void +failsafe_eth_dev_unregister_callbacks(struct sub_device *sdev) +{ + int ret; + + if (sdev == NULL) + return; + if (sdev->rmv_callback) { + ret = rte_eth_dev_callback_unregister(PORT_ID(sdev), + RTE_ETH_EVENT_INTR_RMV, + failsafe_eth_rmv_event_callback, + sdev); + if (ret) + WARN("Failed to unregister RMV callback for sub_device" + " %d", SUB_ID(sdev)); + sdev->rmv_callback = 0; + } + if (sdev->lsc_callback) { + ret = rte_eth_dev_callback_unregister(PORT_ID(sdev), + RTE_ETH_EVENT_INTR_LSC, + failsafe_eth_lsc_event_callback, + sdev); + if (ret) + WARN("Failed to unregister LSC callback for sub_device" + " %d", SUB_ID(sdev)); + sdev->lsc_callback = 0; + } +} + +void failsafe_dev_remove(struct rte_eth_dev *dev) { struct sub_device *sdev; diff --git a/drivers/net/failsafe/failsafe_ops.c b/drivers/net/failsafe/failsafe_ops.c index d04277b..e0570b6 100644 --- a/drivers/net/failsafe/failsafe_ops.c +++ b/drivers/net/failsafe/failsafe_ops.c @@ -146,6 +146,8 @@ if (ret) WARN("Failed to register RMV callback for sub_device %d", SUB_ID(sdev)); + else + sdev->rmv_callback = 1; } dev->data->dev_conf.intr_conf.rmv = 0; if (lsc_interrupt) { @@ -156,6 +158,8 @@ if (ret) WARN("Failed to register LSC callback for sub_device %d", SUB_ID(sdev)); + else + sdev->lsc_callback = 1; } dev->data->dev_conf.intr_conf.lsc = lsc_enabled; sdev->state = DEV_ACTIVE; @@ -282,6 +286,7 @@ PRIV(dev)->state = DEV_ACTIVE - 1; FOREACH_SUBDEV_STATE(sdev, i, dev, DEV_ACTIVE) { DEBUG("Closing sub_device %d", i); + failsafe_eth_dev_unregister_callbacks(sdev); rte_eth_dev_close(PORT_ID(sdev)); sdev->state = DEV_ACTIVE - 1; } diff --git a/drivers/net/failsafe/failsafe_private.h b/drivers/net/failsafe/failsafe_private.h index 7e6a3f8..886af86 100644 --- a/drivers/net/failsafe/failsafe_private.h +++ b/drivers/net/failsafe/failsafe_private.h @@ -119,6 +119,10 @@ struct sub_device { volatile unsigned int remove:1; /* flow isolation state */ int flow_isolated:1; + /* RMV callback registration state */ + unsigned int rmv_callback:1; + /* LSC callback registration state */ + unsigned int lsc_callback:1; }; struct fs_priv { @@ -211,6 +215,7 @@ uint16_t failsafe_tx_burst_fast(void *txq, /* ETH_DEV */ int failsafe_eth_dev_state_sync(struct rte_eth_dev *dev); +void failsafe_eth_dev_unregister_callbacks(struct sub_device *sdev); void failsafe_dev_remove(struct rte_eth_dev *dev); void failsafe_stats_increment(struct rte_eth_stats *to, struct rte_eth_stats *from); -- 1.9.5