From patchwork Tue Mar 21 17:50:51 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yongseok Koh X-Patchwork-Id: 22048 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 [IPv6:::1]) by dpdk.org (Postfix) with ESMTP id 88B29133F; Tue, 21 Mar 2017 18:51:10 +0100 (CET) Received: from EUR01-DB5-obe.outbound.protection.outlook.com (mail-db5eur01on0074.outbound.protection.outlook.com [104.47.2.74]) by dpdk.org (Postfix) with ESMTP id 2908811C5; Tue, 21 Mar 2017 18:51:07 +0100 (CET) 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=Ss/niLhG0LIIchZrac9KjnK0cL/KIZ9fd84gOthvyI4=; b=PDCKdczZ4Ry3Y5b+WolWGYa53oH4n1BVSlBRq10UQ5kOh+xfaC108JJZz6TTy1fcJs/5E0zoyrBK0Iw5/v0q7heLXOeYxl5CDIF++ExMaEc6RxtnZeHgWBHwy7x8SEg6xJgWNQe3UpugV21BqOHwobuUDNWV/GV/Hnoho7J2Niw= Authentication-Results: intel.com; dkim=none (message not signed) header.d=none; intel.com; dmarc=none action=none header.from=mellanox.com; Received: from mellanox.com (12.250.235.110) by DB6PR0501MB2454.eurprd05.prod.outlook.com (10.168.73.135) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.977.11; Tue, 21 Mar 2017 17:51:04 +0000 From: Yongseok Koh To: CC: , , , Yongseok Koh , Date: Tue, 21 Mar 2017 10:50:51 -0700 Message-ID: <907be98e360e53bd8e1195bd725817dab6a8545e.1490118487.git.yskoh@mellanox.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20170320233804.47489-1-yskoh@mellanox.com> References: <20170320233804.47489-1-yskoh@mellanox.com> MIME-Version: 1.0 X-Originating-IP: [12.250.235.110] X-ClientProxiedBy: CY4PR06CA0026.namprd06.prod.outlook.com (10.173.44.12) To DB6PR0501MB2454.eurprd05.prod.outlook.com (10.168.73.135) X-MS-Office365-Filtering-Correlation-Id: 6149bd97-b46c-4eea-87fb-08d47082d95e X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(48565401081); SRVR:DB6PR0501MB2454; X-Microsoft-Exchange-Diagnostics: 1; DB6PR0501MB2454; 3:Kv4faBcVFjfzx+2lnDisWydgv/If7oR/41HcoGLCyYkQrDTBZn6SJaPQ7BKZmjKXTgtHMzBQrsLyNLPkkeoBPyNBjGaRKau82Cfbbs4ID57V8LLVa8Xbxsdg6tAMqeQY6L9lI3TuZQ/pYpaIV4PE5Ygf3xtHsoebW4H2zt1A1YcaN2JHQczzF1WOnV+gap0EZZB+iknLRFHLNf3DMUbdKj6roLKzdIGAm7ibpvT1x0N8Pig3k/DIlSm7NGraW3yZtBoYUAlJF6c+ajAuFxdnQLi9P10GQOI8BCKFnMQ/Opo=; 25:CYnaMxg+tmfppgNezXADfelHgBpNG2RYqa8tN8r0S2B76NOqBtVIMB3ypi6TOjsltumJXdXDnedIwvNqFJexj6l0ZJOk4OfksnLblVNIQ3cVxWPw8EF/1Fbsc9dUFXoENxBkMFfywIdwRdbGqfHIiuPpi5Ui45X572wpS6PLEeO6QlL2c5ZRo+2ygxt8SmFSBEGG+12NBsrCNyAileQIBFhpW7y7nCfs+VftYtdKWYQx+stRK3lVJ4PKtFuYoBzD5zDfWKp+la36PMRDzqvcuqeW+bKplD9kSbr+4nW27eFecxoBfqQCd17j+Ze0yJ02JDXVTr0x914WD5SyUWUyEfhHwCFBcQFqVbZfpROllnx8FM0AJHbSZq+odAHIZjFmoNq2rzwR/JITNOagPJx5Vb4Fenq3oO7S/KEHoudjBSZpO4cc27oy+A2W0vHOvwxAUDb4k/iOd0OqAU0ZeGbHHg== X-LD-Processed: a652971c-7d2e-4d9b-a6a4-d149256f461b,ExtAddr X-Microsoft-Exchange-Diagnostics: 1; DB6PR0501MB2454; 31:BFVifDe4WHmxAo5Gf7BJpkQeZtfVy+ajhr+J//PU4JUW9CEh3B61Aqurxn6vN+EhWXCGATJSgM6sJO1TTj1kSDuNimtt2GDlxM//vGbOgu9luK/6s5luRetb+NpD7H3HU8xVl7oUpIBJrt6c3A0g2XK0GdtUvWbxECVwzsSbBAzWrC4eHZo17aeu4SNNM/1HRjKHv2eBafhXEnn0o9WGhq0dJOG6PfXIirJw5jaU+dfFCniWRonJ3fbO6HLzv6Dd; 20:aA/bAI3lnE6GRyXH+cAnKHAZM6udh0LqQdL25c1wrXETz0/Q2NosQQI77aiZI86PorBP5Mc4oUedo4e53Fa9tDdKsSg7JrOsytuasHUrT3nCwE60Pi7P7KySZuHCVHmNK8WvpgXckJKAY136PudSm41n2Fmxda7bt9bV2XU2MuyeQ7JHK2ywnx1aWJME/GSHfTCLy7j3ktyUdBjgmWH4vSYXDiMvc2BcotGYO0P99PH+6TuQrWZvusgokaoRDrUH+TbIF8aGtR01yfx1hAxPSgcDZEKTWgbJzpg94b6owbgfiaFiZAzbjs/T7e/GGp3o5H6NqkapKqHRDyxUf0noxKXvsK/lrDT1bvMWE/Ut3G8BQwrtwizDFfSR5ZliJ8kXgzW51izs13qvHR2I3CC4BrmlZiBlI3fPRw1QRoC4pxF09GjEsDs9Lnf4mMLGJopQAAx0ozFmoWS2Ays4uGAxAim5eeilZiywpJV6cMeC5XAdVsFAUVteDRUrMMNolWVm X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040375)(601004)(2401047)(8121501046)(5005006)(10201501046)(3002001)(6055026)(6041248)(20161123560025)(20161123555025)(20161123558025)(20161123562025)(20161123564025)(6072148); SRVR:DB6PR0501MB2454; BCL:0; PCL:0; RULEID:; SRVR:DB6PR0501MB2454; X-Microsoft-Exchange-Diagnostics: 1; DB6PR0501MB2454; 4:mTeVr5w5ZFCccz0JwEtyZeF2MfPzRXi6r4M/AVYAGp7yar4Ciq73FVP4jJxraZOJ5BKYyumpSoASc9z1slfa9GoQrJ0dw64KstketF3UVGfbDkHBW3w5/P/LiyFamx1USoNJ/M62Hr8uG2HjQ3ulamBURFAryXkWRfkhJrDKFIaARvMdeEv1/pPw9yj1ydK+7SwnYIVyzJmO6KsKWD+UXPKQ7vHINpaLA3St9vt5gtmyVPuoVMSDggI191/jX1DIjRIEprWQEV4piKV3IXYsSPFprZUqMmwASC8ACerGmiiyTItlu6ud5QaisrDivxzU60vvzwNykd8iKKpmXnOoOe9HQKrVTON1F340LsvD9wLTkUjgdgW1WCybwoCac3Ww0OKuyH2BVS15p//EcKauWDzYx/SPTzdHsB9dcdSiB+I7B8fpp3ywblnZwey0jwuCfNC7PV1bVGerU1AxoGxH609cbaqf1ZH0AO5OgjVyMeZNdb3vfYhbUlWyB1KoddV+j7rGpFK7d6U0WqOovANqFhrJ7zDMX4Uzb70VZ9RO1r1ED0zuW+BqutaUzK2gWJSulj5o0rJQQJiLSA+DDOSZ8DP0DSyeM3uSIgldmDiWm/N7dSJG8bP7r/Zj3xMH/0am X-Forefront-PRVS: 02530BD3AA X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(6009001)(39410400002)(39450400003)(39840400002)(39860400002)(39850400002)(76176999)(36756003)(6116002)(3846002)(33026002)(54906002)(55016002)(50986999)(6666003)(53936002)(6916009)(42186005)(66066001)(2906002)(2950100002)(2351001)(7736002)(48376002)(305945005)(38730400002)(47776003)(81166006)(5660300001)(110136004)(189998001)(8676002)(4326008)(86362001)(50466002)(50226002)(33646002)(5003940100001)(575784001)(25786009); DIR:OUT; SFP:1101; SCL:1; SRVR:DB6PR0501MB2454; H:mellanox.com; FPR:; SPF:None; MLV:sfv; LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DB6PR0501MB2454; 23:uKbTzwcTXBpVw2wPFkLxcvC/ej79DMR4sq1pzUo?= Hgwg3KCv8b8fqHogpuzvD1wi9IJ78Sr/9l/aLpKY5boRN3iEkAxwfhqF9RlNiKyucM0Dy0yKMeO2xg+BNrzXCUWlSJZvdq0loxvNnKbtoWNZwBfetEWZ9/jcYl7IKTw03p+BEGn7AlPybrfh/9BcaDYnkZuPsTqs9CDKuBZGMsSW8Kk+so3q6n3yftx8HHiV6ouuWWkop8A8SOX/E1sJAPwUKipK8jmPWFqyDA34IGyZ5DaiqWbyaLo1eYPZOvxkUvH4/fjkzI32M8ODJM3ypnyidHtWcF/6u8bP8TbBmrTiXOSWVQXDe0TbfobnO8xmxVj8wyytG/YlyuY3eaHGX+cUJRtfENYqIAmNQbTEsTcYWiABdEF9yNHcKujrbcJ0TMxZPRbwLX5D/fJ9Bz4C9MCYQwrQVApgkWauvVLi2bJvvdosmQLXwSwO4OgrraD/aW17wGa4GtJF2rLzI1979adOEaol8/Y/jLlwkBqGPjwSYQ/nuYGECFFhpJ9bFs85e5vbm35tJRYvfsLc4YUOvsUIz3ujBURE1zfn4xHa0KewhICvgnOXHEUmwjG1DPxZJW/OFBFXyx0ZhmLK1qqa4/aghb69AqS+0OE6g+5kWGkbyJ74ZIihC/ESAg6RTpi5P25uBDzK3tUAg/cdQS67gRyJ2puviWoKvv/wnlMycZCsw5l+A+Tok7h2tWATY4psBr5dHSjveycBUgTLrgNeAT1oIcXh/k7u0JnbGFCgpUn/UTLEOf4SN+RgG4Cz1NexIYOemE9q5yZHTEra41Q8CuCnnlXe/zhW0B4Wg+rqQluB8VVGHIt/yVTJp5W+ivxlfH2Mn3lRsAQ2MQt6eH+IoAl5g150hxgYS0qSQM3RScJFutC1lDmp8phUj6THJqlUYYwIBrQUmuYIJcWEPTi9nNz0SeavL10366p0JOkoawzW8JLOJUz9+0+eZCwf5gP5Ixn8ivUm4pH+ekTZImyni2msHF8+cEw/m1A+YlIPPVmFyrhiRtsNQvdAiEomHkcrhi8s= X-Microsoft-Exchange-Diagnostics: 1; DB6PR0501MB2454; 6:/HzZUhTObZZustMW4h96Cgg58npudx7lh0oQ1ssOfBDRv1x4nVy+aJfMnCKU9feEDvilEcGcdl9OmRqrJSNSU6LbBqOcxbxnGN+Ivqe2qJheBP97cGkiIfUWEb4qdoJP5K104/Mc4s2DS1YnyG+FwSMbeATXLDrc63GGPCIXAI8Nw8VxXLvm6vjsxZ08qNsCfDWRknMFm1D2PxQ3r6rn44Clnt4JTFkemGpfMsp4VlTNnkf9Wh9J29VLGeGhUgQVJHPLUCJl+yNzqirT709CobcKwZGo7FWaQZa7XaXDxa6TAOfT7E8tBHdfz4/r/DCxQ+f+W7VeJ1/K7CPZ5QuCMBScaMTbcjkxusytVeeoO6q8Ege+7IWnuhawa02Y2jDidOdiNoQMuAPv7r715jg4I+XuJPXdyRedNixQfKa20sk=; 5:PiAnLkeb0yvr2n0ruY0LFX1wI86PBORPMLD/YkfsI9B9l1R2QDwyhhJLZKGoCKK0jD0kWsHCz/TW7NecZtEfJnkNZAsUr9wDk+pY1m3upL3wsaN7VMokSdTzz2rZMkJYBuFNm8T70bQtXm591N3F7g==; 24:6rx/Y4aOVghnPXizk1gZDJ+VAUgeYjBkxIc5GApNYy3PFmNeToKqLqVW0A2QbLdQZvS+CkV/J5u0iWMii9wIqPThE6Yi8XGq1KeL2IVEVms= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; DB6PR0501MB2454; 7:U8ESn0MHI5xciRFBOKApfu5rwM0C+DU4s8IRJKxOi2oHiMec3IexLX0MQJtkM8yyYjDtnZ/4yt1qr74b6S2qS8V/jFo8kihvojB4JQi5GXTB6/JB0TG07CKQhgRD1G0/ZBFxB5MjDHQv1noUcJNgqKpdE5iAfmGI/BgbUh1Udyu89TZfUcLm+DgIiZEbRPFdSDzHenIx+RLSTMbmfwBL0DrysApd2sZ5biWjuzjBQwAvGmebcIG+GbUpRMG2Exc1xJRUY9BnVHTUxk++8VJxor24DbfRsyG6FjAxhtgXwOfw3dsdDW20j1zbUbKbIuhU++JL1S2l6Wm87encwgTRRg== X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Mar 2017 17:51:04.7601 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB6PR0501MB2454 Subject: [dpdk-dev] [PATCH v2] net/mlx5: fix reusing Rx/Tx queues 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" When configuring Rx/Tx queue, if queue already exists, it is reused. But if the queue size is changed, it must be resized to not access/overwrite invalid memory. Fixes: 2e22920b85d9 ("mlx5: support non-scattered Tx and Rx") CC: stable@dpdk.org Signed-off-by: Yongseok Koh Acked-by: Nelio Laranjeiro --- v2: * fix typo and indentataion drivers/net/mlx5/mlx5_rxq.c | 13 +++++++++++++ drivers/net/mlx5/mlx5_txq.c | 13 +++++++++++++ 2 files changed, 26 insertions(+) diff --git a/drivers/net/mlx5/mlx5_rxq.c b/drivers/net/mlx5/mlx5_rxq.c index e6070a0e5..98fa05063 100644 --- a/drivers/net/mlx5/mlx5_rxq.c +++ b/drivers/net/mlx5/mlx5_rxq.c @@ -1261,6 +1261,19 @@ mlx5_rx_queue_setup(struct rte_eth_dev *dev, uint16_t idx, uint16_t desc, } (*priv->rxqs)[idx] = NULL; rxq_cleanup(rxq_ctrl); + /* Resize if rxq size is changed. */ + if (rxq_ctrl->rxq.elts_n != log2above(desc)) { + rxq_ctrl = rte_realloc(rxq_ctrl, + sizeof(*rxq_ctrl) + + desc * sizeof(struct rte_mbuf *), + RTE_CACHE_LINE_SIZE); + if (!rxq_ctrl) { + ERROR("%p: unable to reallocate queue index %u", + (void *)dev, idx); + priv_unlock(priv); + return -ENOMEM; + } + } } else { rxq_ctrl = rte_calloc_socket("RXQ", 1, sizeof(*rxq_ctrl) + desc * sizeof(struct rte_mbuf *), diff --git a/drivers/net/mlx5/mlx5_txq.c b/drivers/net/mlx5/mlx5_txq.c index bbfce756b..e9b837d10 100644 --- a/drivers/net/mlx5/mlx5_txq.c +++ b/drivers/net/mlx5/mlx5_txq.c @@ -532,6 +532,19 @@ mlx5_tx_queue_setup(struct rte_eth_dev *dev, uint16_t idx, uint16_t desc, } (*priv->txqs)[idx] = NULL; txq_cleanup(txq_ctrl); + /* Resize if txq size is changed. */ + if (txq_ctrl->txq.elts_n != log2above(desc)) { + txq_ctrl = rte_realloc(txq_ctrl, + sizeof(*txq_ctrl) + + desc * sizeof(struct rte_mbuf *), + RTE_CACHE_LINE_SIZE); + if (!txq_ctrl) { + ERROR("%p: unable to reallocate queue index %u", + (void *)dev, idx); + priv_unlock(priv); + return -ENOMEM; + } + } } else { txq_ctrl = rte_calloc_socket("TXQ", 1,