From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR01-DB5-obe.outbound.protection.outlook.com (mail-db5eur01on0082.outbound.protection.outlook.com [104.47.2.82]) by dpdk.org (Postfix) with ESMTP id 1845D200 for ; Tue, 5 Jun 2018 02:12:23 +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=sjdO4qK4m/mEK3efwNm2bpLwGxeNAqYzIrRs3SOq7vs=; b=mobvbkV/VwEJo92tVamps+bBN2FWy+tcJ0XSrk9lT1VXonLmNB9IkRsxTMIk4QI9k+izwoiuCEjOGKB6xJpTuo41tcqu61FyF6JGvaahqWoM+m8EEvSjuF4N5mamgKY9oFvL+QrzsiDWUgDEHbm2uagyBug9PgaJdwbQ3dlEPUk= Received: from mellanox.com (209.116.155.178) by AM5PR0501MB2036.eurprd05.prod.outlook.com (2603:10a6:203:1a::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.820.11; Tue, 5 Jun 2018 00:12:15 +0000 From: Yongseok Koh To: yliu@fridaylinux.org Cc: stable@dpdk.org, shahafs@mellanox.com, adrien.mazarguil@6wind.com, nelio.laranjeiro@6wind.com, Moti Haimovsky Date: Mon, 4 Jun 2018 17:10:35 -0700 Message-Id: <20180605001129.13184-14-yskoh@mellanox.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20180605001129.13184-1-yskoh@mellanox.com> References: <20180605001129.13184-1-yskoh@mellanox.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [209.116.155.178] X-ClientProxiedBy: CO1PR15CA0060.namprd15.prod.outlook.com (2603:10b6:101:1f::28) To AM5PR0501MB2036.eurprd05.prod.outlook.com (2603:10a6:203:1a::22) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(48565401081)(5600026)(4534165)(4627221)(201703031133081)(201702281549075)(2017052603328)(7153060)(7193020); SRVR:AM5PR0501MB2036; X-Microsoft-Exchange-Diagnostics: 1; AM5PR0501MB2036; 3:nzUoXvuuhZsl6W/5JBb0oo/pOhtJYgAxBFa2Y4DvfvKX2/FaF3GX3a/bt2mJYjj7Bt0DgNh1Jzo4Yvzzx9JahiTk85RbjCn6rdI/D0jLoVEVLJOZlZLENa8PNiXjnikVydzR3G7OvwOss3KhYil5862szglVUT3Iu6EWQXgSDCeN6s71+wJXz9SlUZEt31i0OXI/YB1zaydicf+lbEJ8/0nYAaR1BWPQd43xf3nMcvuljshna4SQDZu/1KgR2Rq5; 25:XYPIqEzw1mvEbhKk7Z5tfTnNtuggVCjUMWi2Bsj5RXfVi/qJ5sdRPmqgoKdCtE7HCBFOkfoe6mTeV5DnxaUYsRhr6izQ+pfSrTzL8AB2UjKSB5xoNL26ZmjzlwM9bEAlGrlV5zBZfcEx+M8f11vHI2I3PW+PWNziQ6Ix+2u9CCIdjM+jsKBbAHhBMs9Tctak1i1TkP52b6Fa1F+BtC7jrCFdWzmdDDASigp5pAQFsO3d8HKgsFmgGSkD8oPqdKXBEcGt5n5Ejecs9YwKedFjBwxVJK1B2Dc6zllv6uPNCP9y/QCSIQOK1u6P2X5ajj+cyy13eFk3IETlE+pGI/vQYw==; 31:kVe9ssmI0jQtgtQgcJmkIHaM3NmxMe9it2cQ57f7jr9I/MBbp6GrpZrqZsq2yrMFomDf9GQcH/f/Hbd2FULebsJfwU2DAZuJWPjxO/An2k4d/1g2/Pdx4CZrtWjnIyAfWwkc4YSVZXbjo7OLAEhUow0Izym+Tp+hBHtUqE+sVwOmOjd/QFusVtb6tYmSquAIL4IDSbJg8joe7rxZcsnHUAWCme57B2/BrBQugATyfAo= X-MS-TrafficTypeDiagnostic: AM5PR0501MB2036: Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=yskoh@mellanox.com; X-LD-Processed: a652971c-7d2e-4d9b-a6a4-d149256f461b,ExtAddr X-Microsoft-Exchange-Diagnostics: 1; AM5PR0501MB2036; 20:1J9gtur7MTY6qC1YyN8zm43TP9wE4eHkUrvCAIaVpaomNcUFMfycFUJ5/nDInc0YEUfY7DG9c3WCEDEZEWya4rfi1zRN6XZv/BzzVEPlfFj2q80fiazWCGebQG8otEnw06u+bGQg2AOaKKRgLUp/Jbvj1gR22mhArxIfjX0wEsPdI1oqnhYUhj0nwTMeE/S/sLOlJSrABcaI7jQ7gIWhUOwtzTr8iMn1JPwP/r16/Hz2IRt9eWRrSqk6kyPM+9s8sbQ4CRaromcgvNCLPlJ03Gu7KCPkNDHfRhdbazJpt1/eNP/OIxG+Y7z6KKVY1rxhiHTx431VrHMUslBb75ge1ID/vBZp74RNqonjBEIfSTGIFQMEo06bgjSo2Tnt3iakjeCk9vsixwduOyE39DQ8deOleucDQicKmThgyKbJX6Xld/J/KvTiMVUawA0/pe0c7Eat3XUPKUUUbhhewsvuqpOkRaGBG9V+F3r2yCTS9XXP9Y3KTxo+2VcxBy5lR09F; 4:len8lH04WtyT8qc2b5V0n312UT4R8zCbCdvDPokuMOxICf4k0wp8fsT2I0bPDyiPH0th1B1UJ4BWtBHOrFBSDm+NLTKKsuH+2l9Sug83r8C/rRiDcO/WEEhrXHzkI+hs8ceZeAEDst4e7FeI/iIEkPhZ75kPTS89qCWCQffD5jg5jmQ3hv/MpsXEEjtHFIounFr76DwnIrexsZizpo2pB2dh5uq1MJjGWdTWTULUALBuVWx1BQlSrNhtfba7Yy+l5WgySwboKlHjyx2yWByAww== 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)(5005006)(8121501046)(93006095)(93001095)(3231254)(944501410)(52105095)(10201501046)(3002001)(6055026)(149027)(150027)(6041310)(20161123560045)(20161123564045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(20161123558120)(6072148)(201708071742011)(7699016); SRVR:AM5PR0501MB2036; BCL:0; PCL:0; RULEID:; SRVR:AM5PR0501MB2036; X-Forefront-PRVS: 0694C54398 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(39380400002)(366004)(396003)(39860400002)(346002)(376002)(189003)(199004)(478600001)(81156014)(76176011)(51416003)(7696005)(956004)(2361001)(50226002)(305945005)(2616005)(50466002)(47776003)(486006)(97736004)(5660300001)(6666003)(2351001)(106356001)(8936002)(186003)(81166006)(52116002)(6116002)(476003)(6916009)(386003)(446003)(11346002)(66066001)(26005)(3846002)(8676002)(16526019)(1076002)(25786009)(21086003)(86362001)(575784001)(53936002)(107886003)(4326008)(2906002)(316002)(55016002)(36756003)(48376002)(105586002)(69596002)(68736007)(7736002)(16586007); DIR:OUT; SFP:1101; SCL:1; SRVR:AM5PR0501MB2036; H:mellanox.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; Received-SPF: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; AM5PR0501MB2036; 23:CwJOCDDXpYswfMs6A+7/TmxszTxbd7S5klN14o+?= =?us-ascii?Q?KOY6qHdrIcP88+lgdMnwKY9tDjqxsOUqXGddOZFTbPvrLvEQ7HO1s8WJb4oB?= =?us-ascii?Q?AHFpN85joy9FldXPXh+CA4J0G1Zlp2oAIQMVbFQPQoCw7cU5zyZ2IbG+9CG2?= =?us-ascii?Q?9ac73nZOhYJ6QI4k/pjiyAN9LYxOEDAxfHpS2mS+KIHIZxsG125WGRo4YyCY?= =?us-ascii?Q?oqmQsKNSLPOkvqtd6L38oWNyE90hcH+rIyIm4tq8VVmWWPlyU3OZDTXBgYzI?= =?us-ascii?Q?3lFLcmqauluq5GdtyE9MPajernq66lVZYHQ1g1eh0qWUqOKQum+59TqtlTIB?= =?us-ascii?Q?dAOEfbzDi0ykogEDU5TqKi6uplMEZbdsM2skZ0sjs3tzSb/gmIYhxWSZSsB2?= =?us-ascii?Q?UC6hCRWO+QKEbkIHuk+6AGIURQHlilarQa4y9WrJmTVP8A1gUisNEcFJRXI8?= =?us-ascii?Q?ERruc6FJwFmLBY3MVQCKu3wH6uj1SEFs7Zr4WiOq7sI0jDVjQHlEkeK5OALr?= =?us-ascii?Q?fVNwZ5m4E6/fG5H53j3ra0ZG3ErGFFxbCUGtdY2ST/ZKju52bUIRxGCOuJHs?= =?us-ascii?Q?vzhJdYQENn7CTuuadGMBZE1b7VLoUns4TogPHxfRuEQHCnpL+gKwrFkFjXrW?= =?us-ascii?Q?KPPXbQ6Y9IvmCeQaYh+jNmWpe+r9GPC5gQJ0yrhEPys6TPEKqxUZUC17UYSJ?= =?us-ascii?Q?M3t2+z5v/6iImtD1wyqjTg0MqnEuZFbyz7rF3195m39VxfyBtdQlNaPoYNy7?= =?us-ascii?Q?8t0fVEyWobuHA+sOkLSwz3R+NWC3vWwZBZSCbqb5VG4bPjHhAdk2TXjPrsOm?= =?us-ascii?Q?hcRq+U7v2GpVt/3bI71HcYSKdnvk0d1G5ymjCVS0qmcLQEG118R5h6WZDwli?= =?us-ascii?Q?J19XQzIQOhX/bDo3PV1IDIF24Oeh0dA0YaohKqB7d4IJUvWZ9WfmuX0y8lEJ?= =?us-ascii?Q?85I9GWXDXHzAswcd87esPNCBh0v+sOx1rx7KtfBaNzxYdtQwQVD8qwovop/l?= =?us-ascii?Q?zSjbozwnXodaK1rkmvt3h5FUHvdMDOxawuDqsHt84FoLSZft05f1pk/XFly6?= =?us-ascii?Q?dZf71z2a0mxr7J1V5bAWBxkDiZ2sPxyEkJk9Sevv1AUq6aWQNFp/oW9HLPpK?= =?us-ascii?Q?ieoihh+xUy4cov8WBnCGH/ro0xp3SX/Hw4dOxPmSmX2H9NVIZQadvqQh01Z5?= =?us-ascii?Q?V7H+dizkIIGDVwY2fV5CG0oExnQV3retVRbcz3spnLGmU5dlpeCKxCvuR9Ot?= =?us-ascii?Q?fBnrEtlIeFF0LhbVUZNQeTpllOulsl/LbGVb/nTaGaZ+thoeVVLY0QrxiJ8u?= =?us-ascii?Q?RExKGJ/A9jcqIdzmtDlBZJa8=3D?= X-Microsoft-Antispam-Message-Info: bYCP1KypDdWFmd/F+c313c+3hBNq+1CnEztI46OUgJgC/Iji6E7jIf2LG7FZ7E/kFB8FQz7v+dSX53BsIYkt/PQy2y1r842LWFBH3rNoI0wsbPsS7QEujV9Df1WZgSx0CXtUX4eP+mKYV8EbcMr/yjgdQCMSx92Mf797XHCrpsfwR05fZ4aIPA9TXQaM1Iae X-Microsoft-Exchange-Diagnostics: 1; AM5PR0501MB2036; 6:LxQFsIRcGOaZEEtJAhxj6vh7vTV12PJ2efKEuTURBBu7Fq7RxcO6qcsW9bXUknUS0GBA5YRuCWBmG1E/tks8viVBvIH7P367Zu5QM/ayl9Yxmhsxq3HSuChUF84b4/7RcytARQkM1TkUD2aASPCEBhbpxfu3wiofcW80HxnDcwaPihGM4AjTsomjERzcqFGeNRBWo0sDW+jpE5olkmNObK39uD42dG2aHzHp9yi5Me4yYgNqFsYs9uz3FfEvm2KkjpAYwuPy7SYUdiR9Y2hVdg/a3yWqxEqYJL3rumFExDKbAOmEVszxBjpAX37Oo5nloMP641g12oavLn9eoTJRU/nZop7MaY6Za219HMUhrJscbXboiOSTuy0a8jDOAqwqM43oURHAgJTttDvTYCrrpl06blVyOrJHvposmTvNhIOt/eK0uY3OxUXxayN7DCiHiUUKKbgYGPJQY9hIi84oMQ==; 5:CdtyTw+UWYgPFxmMcGxEpbO8HAtkC7+lFJZToRZO3+SrU4gtk9Z2O7d4QEmZQQdgvQKTfnTLqrkhxsHJNPOqqQRz4v6Y51Hn8CAUOtl1/LGwdgQROVAtKjbzJ1x15vEwgvhxwivE7QWf/A25LU1Kt4U462p1SmA0MWzkN/up/yc=; 24:mESdotyPt8zwL+yZ0fhCgkPd/5DMqHbgkAasGTHja1XJWTIU1IZZAquiH5AO9PMJtFu1fIKlGkdaW8aJzNnMEToCoShZCL9owFMtdSXFHUE= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; AM5PR0501MB2036; 7:ahZzk6/x35BA2RWDBT7fojnH6lGg82YDT+qvO7IYbOK9+XRfXL38hNROFD3x49skWyt+ff9edTdDExe48kCb/S8IUicRuTgQQvTSFyRhNukZmQmHsCaszEhFizLI/auNFtSzmg7gv8QMdlImm66W8xcN2CzXCl943BtWfb1myj8rdJzKM6zKX/IBEwfChfSgIzlxxFNHyyij+IIX2pephTSQRavIiCXyTn0dc/7fnxlBWHMyez5GnppiQ3J6cW3n X-MS-Office365-Filtering-Correlation-Id: 558ea67b-e88a-42cf-0f94-08d5ca79022d X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jun 2018 00:12:15.8994 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 558ea67b-e88a-42cf-0f94-08d5ca79022d X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM5PR0501MB2036 Subject: [dpdk-stable] [PATCH 13/67] net/mlx4: fix removal detection of stopped port 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: Tue, 05 Jun 2018 00:12:23 -0000 From: Moti Haimovsky [ upstream commit fc1b5ec522ee92f303cb74e683a5efe477cf9b56 ] In failsafe device start can be called for ports/devices that had been plugged out. The mlx4 PMD detects device removal by listening to the device RMV events, when the mlx4 port is being stopped, the PMD no longer listens to these events causing the PMD to stop detecting device removals. This patch fixes this issue by moving installation of the interrupt handler to device configuration, and toggle only the Rx-queue interrupts on start/stop. Fixes: a6e8b01c3c26 ("net/mlx4: compact interrupt functions") Cc: stable@dpdk.org Signed-off-by: Moti Haimovsky Acked-by: Shahaf Shuler --- drivers/net/mlx4/mlx4.c | 10 ++++++++-- drivers/net/mlx4/mlx4.h | 2 ++ drivers/net/mlx4/mlx4_intr.c | 41 ++++++++++++++++++++++++++++++++++++++--- 3 files changed, 48 insertions(+), 5 deletions(-) diff --git a/drivers/net/mlx4/mlx4.c b/drivers/net/mlx4/mlx4.c index 9a5773381..26a0c85ad 100644 --- a/drivers/net/mlx4/mlx4.c +++ b/drivers/net/mlx4/mlx4.c @@ -108,7 +108,13 @@ mlx4_dev_configure(struct rte_eth_dev *dev) " flow error type %d, cause %p, message: %s", -ret, strerror(-ret), error.type, error.cause, error.message ? error.message : "(unspecified)"); + goto exit; } + ret = mlx4_intr_install(priv); + if (ret) + ERROR("%p: interrupt handler installation failed", + (void *)dev); +exit: return ret; } @@ -141,7 +147,7 @@ mlx4_dev_start(struct rte_eth_dev *dev) (void *)dev, strerror(-ret)); goto err; } - ret = mlx4_intr_install(priv); + ret = mlx4_rxq_intr_enable(priv); if (ret) { ERROR("%p: interrupt handler installation failed", (void *)dev); @@ -187,7 +193,7 @@ mlx4_dev_stop(struct rte_eth_dev *dev) dev->rx_pkt_burst = mlx4_rx_burst_removed; rte_wmb(); mlx4_flow_sync(priv, NULL); - mlx4_intr_uninstall(priv); + mlx4_rxq_intr_disable(priv); mlx4_rss_deinit(priv); } diff --git a/drivers/net/mlx4/mlx4.h b/drivers/net/mlx4/mlx4.h index 3aeef87e9..82573d4ab 100644 --- a/drivers/net/mlx4/mlx4.h +++ b/drivers/net/mlx4/mlx4.h @@ -170,6 +170,8 @@ const uint32_t *mlx4_dev_supported_ptypes_get(struct rte_eth_dev *dev); int mlx4_intr_uninstall(struct priv *priv); int mlx4_intr_install(struct priv *priv); +int mlx4_rxq_intr_enable(struct priv *priv); +void mlx4_rxq_intr_disable(struct priv *priv); int mlx4_rx_intr_disable(struct rte_eth_dev *dev, uint16_t idx); int mlx4_rx_intr_enable(struct rte_eth_dev *dev, uint16_t idx); diff --git a/drivers/net/mlx4/mlx4_intr.c b/drivers/net/mlx4/mlx4_intr.c index 50d197698..2364cb203 100644 --- a/drivers/net/mlx4/mlx4_intr.c +++ b/drivers/net/mlx4/mlx4_intr.c @@ -291,7 +291,7 @@ mlx4_intr_uninstall(struct priv *priv) } rte_eal_alarm_cancel((void (*)(void *))mlx4_link_status_alarm, priv); priv->intr_alarm = 0; - mlx4_rx_intr_vec_disable(priv); + mlx4_rxq_intr_disable(priv); rte_errno = err; return 0; } @@ -313,8 +313,6 @@ mlx4_intr_install(struct priv *priv) int rc; mlx4_intr_uninstall(priv); - if (intr_conf->rxq && mlx4_rx_intr_vec_enable(priv) < 0) - goto error; if (intr_conf->lsc | intr_conf->rmv) { priv->intr_handle.fd = priv->ctx->async_fd; rc = rte_intr_callback_register(&priv->intr_handle, @@ -395,3 +393,40 @@ mlx4_rx_intr_enable(struct rte_eth_dev *dev, uint16_t idx) } return -ret; } + +/** + * Enable datapath interrupts. + * + * @param priv + * Pointer to private structure. + * + * @return + * 0 on success, negative errno value otherwise and rte_errno is set. + */ +int +mlx4_rxq_intr_enable(struct priv *priv) +{ + const struct rte_intr_conf *const intr_conf = + &priv->dev->data->dev_conf.intr_conf; + + if (intr_conf->rxq && mlx4_rx_intr_vec_enable(priv) < 0) + goto error; + return 0; +error: + return -rte_errno; +} + +/** + * Disable datapath interrupts, keeping other interrupts intact. + * + * @param priv + * Pointer to private structure. + */ +void +mlx4_rxq_intr_disable(struct priv *priv) +{ + int err = rte_errno; /* Make sure rte_errno remains unchanged. */ + + mlx4_rx_intr_vec_disable(priv); + rte_errno = err; +} -- 2.11.0