From patchwork Wed Jan 10 09:16:57 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shahaf Shuler X-Patchwork-Id: 33382 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 4314C1B1B6; Wed, 10 Jan 2018 10:17:30 +0100 (CET) Received: from EUR01-HE1-obe.outbound.protection.outlook.com (mail-he1eur01on0061.outbound.protection.outlook.com [104.47.0.61]) by dpdk.org (Postfix) with ESMTP id 936A91B1A6 for ; Wed, 10 Jan 2018 10:17:25 +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=FFWhxi4aaJM74sUsyRp2kid31xXoENVYMXDbDObKbTo=; b=V7Gdr+wYwen+xtpnV9vEswAdkzULvCxtKFO9ieaRNV1zjfuFa2KP+/ZvKll2aLXgNSTrRpZsEfboeN19ae07R+eoAmX/aLGZYk51XVH9QgmySJpDRq9OJKPRnI5DxIepffF1/N+pJxuqqDloaTmRz+gEsUkXN5BLHjPXD37HQZE= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=shahafs@mellanox.com; Received: from mellanox.com (82.166.227.17) by AM4PR05MB3140.eurprd05.prod.outlook.com (2603:10a6:205:3::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.386.5; Wed, 10 Jan 2018 09:17:23 +0000 From: Shahaf Shuler To: nelio.laranjeiro@6wind.com, adrien.mazarguil@6wind.com, yskoh@mellanox.com Cc: dev@dpdk.org Date: Wed, 10 Jan 2018 11:16:57 +0200 Message-Id: <556561708a2d3d0631b899d117e00979891cb6c2.1515575671.git.shahafs@mellanox.com> X-Mailer: git-send-email 2.12.0 In-Reply-To: References: MIME-Version: 1.0 X-Originating-IP: [82.166.227.17] X-ClientProxiedBy: VI1PR0202CA0030.eurprd02.prod.outlook.com (2603:10a6:803:14::43) To AM4PR05MB3140.eurprd05.prod.outlook.com (2603:10a6:205:3::17) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 7f563977-b6f5-4749-a744-08d5580af5be X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(5600026)(4604075)(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(48565401081)(2017052603307)(7153060)(7193020); SRVR:AM4PR05MB3140; X-Microsoft-Exchange-Diagnostics: 1; AM4PR05MB3140; 3:6ZNdy5GDl9HIO4ueze5Qvxnoe1JgWlwX9WELT4fxp1m5RvDri9kN7zwIM/eZIjpwfqPbXuzLI53JZuDUo0d4c/oO4HjstNTovP1RasnU3vdRe/lpJhrOiWdfbMFgewPjM0VA9iXXSCgaFwarDDJz7jQhrlQBFYkG5L+tMTKHPwQnNxRtGAGXEVKV49KSigwfM09NLc2r6IaSjdaN+ILmUB4PMk2LTbYTra4Lyu2AZQdWMuk5KvDx5FuQe1NjzkyV; 25:NFU6/ButcSBn7lSRZqKGEA6vyjEWMN7Zotvgc1g7AOfLHiyDaskLz6kR9/YrK8jpYn6voEVyossb6qtaw1CHr/bD2CMoxCUdT/wePSY3o/pLbDirai85upCViaXI5K1ioE7X95piTIvs8ZsWvSpyTchU/9YrP8j8n4ui2mTXGBlwRajw1MHZa2N8Y/s3TbJ+80EKf6wYESS9pF+w0QqDGCVIR8H9uL0AHopbcCoYHpVNX1aPclKAk1Y/z8eWZIG3hL6TGIkexTARDNHF1/1a8ybd+MJqwsiwRApEYHJN5pUv/R03JPz/YJDMii+p4MBmP0Es5F5f4Z0FyrLm3/aMtg==; 31:TWCoPGaY0jSDx5qnr0dL1DE/scYTSa92sj5fT9ZCMDoOCdiZ7l6s54v6t9x8mNHer2DqrSmHeo3NC7E3MQFuFnK9bQrKL2DdhRViYfQD4tQprDGLXrsGQU7hQ4C/Id5Mq7niEF0M3yciT4VNylk2rADKlAh8ohIP/J3H6dQtv4D7zDcmLndxQ0MldKQ7oM8vOGyuoxr9oMMcaghkOvTyPxWUSHChd8RCRwmS1HXsmv0= X-MS-TrafficTypeDiagnostic: AM4PR05MB3140: X-LD-Processed: a652971c-7d2e-4d9b-a6a4-d149256f461b,ExtAddr X-Microsoft-Exchange-Diagnostics: 1; AM4PR05MB3140; 20:Rgg+vDmVHSjsd2GDg/7twVIdm+6jj+tJiwVKfkGMreNS2j6kaTavVUSwpeKG55oHeDMBK3C/hkwpqYvM6I+1xDqM679QPc/dAmcZ2ZxyrWzEFtIZ5njVrcWRPH+K9heWoDfzwfxPSbQb/AzQoWW2dT8YRx1W0DgMTO+kg8KFPdRp2Qas+Fm6EyNe8/2xxWA1oyAN3SOaXRZR3gNNrKGylNT3wQwtWJvn5qaC03YLj0FIQ+s/lblXW72ibVQoUT2B/g3qZE75VDQbybOupKFlUf7/o2EmxGOsGdrAWVppZ1IbV+zfT9Yo3sVZOtx8G+uWslAahSzswc2ze5jVTmIqKyY5/7Ud2hD6sA1yBwTKG0iBeMkLQ7ICPNO7SG8mpZiD2ltXUm/JqSSAIX5hFAIO/3X5rspLGAt+liCccCgm+NJ1SXSm3zxVXbxivEgnS6drzo/gjyM/mOCxbl6w8MgtY9B2n6hXK8759aak/6MuWfDewUFSKVx/Jfo5RpbpJKKm; 4:dlft8R8UZ6ojL9bFAjJTKkTqrIWiXUFLgLrUT4ONetgi4iRSCKUghiB2nNMk4RKbA5yfpjx8A35B6l6BvSiX1NXi5B2QeNtLTu24N5fYVIopOv72qbkThC7IpLE9t0imLCvycWrxaRXBU4Bqjh0G6SJjZ7pAwwQJh1zmyiN/XBdvtrYLMyMFbmXhvpsrOvaBkvJ6Gm2nBCTajjloXFc3Yff3GjlwFABPVx265pphYWMie4tf61xTJItpWgSKztQC9nN4Pp7I1qbyRNRWEy0dfQ== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040470)(2401047)(5005006)(8121501046)(93006095)(93001095)(3002001)(10201501046)(3231023)(944501119)(6055026)(6041268)(20161123558120)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(20161123560045)(20161123564045)(6072148)(201708071742011); SRVR:AM4PR05MB3140; BCL:0; PCL:0; RULEID:(100000803101)(100110400095); SRVR:AM4PR05MB3140; X-Forefront-PRVS: 0548586081 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(396003)(346002)(376002)(39860400002)(39380400002)(366004)(189003)(199004)(105586002)(16586007)(118296001)(97736004)(47776003)(66066001)(48376002)(50466002)(478600001)(106356001)(81166006)(25786009)(8676002)(53936002)(68736007)(81156014)(386003)(50226002)(4326008)(8936002)(316002)(16526018)(59450400001)(7696005)(51416003)(7736002)(52116002)(5660300001)(305945005)(6666003)(6636002)(2950100002)(76176011)(55016002)(2906002)(6116002)(3846002)(36756003)(33026002)(21086003)(69596002)(86362001); DIR:OUT; SFP:1101; SCL:1; SRVR:AM4PR05MB3140; 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; AM4PR05MB3140; 23:gXdjPYb3fmrnrdHWuNrbVRQvUO8eI/KtbuQKAL7Z9?= Re+7t8/zp47JsRE/r38t2kxHRxhU4nccoFu0xmVR0+CoqBPocobUXZXogoiFb83/td6RIH4d8mrZywNq4ebuuKz3vHERtz4bElwWR3Sksu6dPlW5elUrK24f5yMVSMiVLAEEZhi6pHEhUQzSVqBIdwdT4MAl4dXbXegmKLncEoh3gC/cMVVUn/JexCbDn3mMmDm0Hiyjx05fbUocahyGxGjv5nuF8E9DR4r4Zxy8/yKPKrKmV5XYxi1PPOXqCD6w0mXlxZK+N+571liQc5x9+kn3Mq0CpcWds/cQ6k3nhBor/mrOAZy5U7oxulrqcZjGQvj0KkYkYwZ0epPXQfKEywwCniJZMicThmmt2pGPTJBcPgG8Rro4/Uei6amEieumr9Dpo2jH6kIuAIG1S/UbDekp6qWOH5GEl4Ac6rZM53g8iRyf2c39hgOlm1SaPnEYAxbASbo4HL6PsCRKCT9A4/6mrtr7eR5OjbAh+52KklEYqbX19IzI+uSlFEFU6XLZdDOBlX3987eZ0KIm8XTO9e5TpUXNPFUPy4f3LnrZhi4ZPOk5HrLa8LwS6ig4a2RjCa9yaO5v74pr8NL7Jwjj0eyKdmX/Qqpdi5ph2mfHGInqzAqioe3e0SMCWMrOa2bGrgcJjCwR6ARFkSYNoi2C9QH9gkMN1YutCU78rVVPdtxUJMj/25RBrw1UgW9Bd6DcH/91tjRTp60PB9Y/b81TPhCXUVDFUSfTrBqIN/4uU4H8cP1Fnu3VR4h+EkXarmg/pONePTNFjb0GKh8w+hEGzCrpdUdLkTkOWDFZ1KjVoDjod80yHfRmTiXTHtdil+MZfFCR+/GPBCxKqqoOQ05fzFY1Euhnw+oLaln3pm4B0pC7kXnKGcVA6OEej4Ahq+U9ekDfZ91TFPxOLlRPMGF93S5M2gmiRqdR6lRlsw7cI24ZO621sydAXQIiLhiHII1EKIlPSc2sL7U6NgWSIHRvjwK0SGRlmcKl8ib84LV48Evjrw9VfXqr1QHizi++X8uYjUNCjERfm4uWsUpQbL6PofkA05YiMbITabVUveRFZcz5v9c7yqS+froeoNt/SkuuEQWQMXIDGdvwrfNGYJnanfGvfae/Y7iai/zuQHIjj+y+A== X-Microsoft-Exchange-Diagnostics: 1; AM4PR05MB3140; 6:fjV3+tQn5o8+F8c2b5QOFM7xgg5Ll/quWCQynzZpw502+rY18BZtVIh3hKOB0KDM68pX7P/dNTaazXY71SPDgElqK96eQPVaWe/3R66/rSOgzQCDxx61DbC8REDEOEnNbtEtJtg/zNf1kjv3gck5mcM85+yoW99nx8+Pm3QGkuYu/BYKRh4uUEJLn3vDqkNWaay777jx1k9pet7HcryN/FsxLYmKG7yWfc/iKDi4jvhI+8tL0ZK5OR6PVqlKEJYbeAyQmwv+f0B3VCcPCk8RV973hC8020vwsNZm5Uw3ojil05tls2CkdvdfRxhf8pETgzHu6Us+/N4p0Ia6MXyuIC9jslgZOQhYBruslcp4NPM=; 5:3JamAKS72+LiSYeavKvE22gxHdMo6PFn1TGygl142qeNrnZVIxciz2VMnRSoaAjv0FDocVlhwUKwy1XLJx+63JfCxdGfAfWp9FObn+8WCY76YBsYi2kZhZKIQzPe8SJK0yU/5FJDI0Zl3kxWCOOw+Iu/1ghZ4Pt65N1nnMaJX3g=; 24:5IDqBEwdm+2D1EwkjCZZbD7hmOKxlpcKDRJsAwp6nRCvx9buHlyc+GSxVYrzFWLpzcG1TFUTz8NXNATXXf0LeqF5pSBC0AG8RLDzG2Q7PWU=; 7:3fGvILoExyytfz2++5Evhpmv51ATog7uNBb3KksEzNmo+AWubATmiwalcxDWSQAvNwj9/Ip0yH2DdCsD4NpCcAkO3F5hXzOHhTSkKk0jPXOTFBDOLCJbI590z4nYnSDsnRItlTFLC2+a63XzRuo0Zyi1TK0kXaNWnzM8wWRFOcOHH+XPwQCowZJHJvdyDp0aeBsTzRN7uuTwSrYbFT7kyh88WYttFeo7tMsK4nHhGGNxti38uPd7EjzM6sfPPeME SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jan 2018 09:17:23.1122 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 7f563977-b6f5-4749-a744-08d5580af5be X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM4PR05MB3140 Subject: [dpdk-dev] [PATCH v3 1/7] net/mlx5: change pkt burst select function prototype 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" Change the function prototype to return the function pointer of the selected Tx/Rx burst function instead of assigning it directly to the device context. Such change will enable to use those select functions to query the burst function that will be selected according to the device configuration. Signed-off-by: Shahaf Shuler Acked-by: Nelio Laranjeiro --- drivers/net/mlx5/mlx5.c | 11 ++++++++-- drivers/net/mlx5/mlx5.h | 4 ++-- drivers/net/mlx5/mlx5_ethdev.c | 41 +++++++++++++++++++++--------------- drivers/net/mlx5/mlx5_trigger.c | 4 ++-- 4 files changed, 37 insertions(+), 23 deletions(-) diff --git a/drivers/net/mlx5/mlx5.c b/drivers/net/mlx5/mlx5.c index cd66fe162..0192815f2 100644 --- a/drivers/net/mlx5/mlx5.c +++ b/drivers/net/mlx5/mlx5.c @@ -712,8 +712,15 @@ mlx5_pci_probe(struct rte_pci_driver *pci_drv, struct rte_pci_device *pci_dev) err = -err; goto error; } - priv_dev_select_rx_function(priv, eth_dev); - priv_dev_select_tx_function(priv, eth_dev); + /* + * Ethdev pointer is still required as input since + * the primary device is not accessible from the + * secondary process. + */ + eth_dev->rx_pkt_burst = + priv_select_rx_function(priv, eth_dev); + eth_dev->tx_pkt_burst = + priv_select_tx_function(priv, eth_dev); continue; } diff --git a/drivers/net/mlx5/mlx5.h b/drivers/net/mlx5/mlx5.h index e6a69b823..3e3259b55 100644 --- a/drivers/net/mlx5/mlx5.h +++ b/drivers/net/mlx5/mlx5.h @@ -206,8 +206,8 @@ void priv_dev_interrupt_handler_uninstall(struct priv *, struct rte_eth_dev *); void priv_dev_interrupt_handler_install(struct priv *, struct rte_eth_dev *); int mlx5_set_link_down(struct rte_eth_dev *dev); int mlx5_set_link_up(struct rte_eth_dev *dev); -void priv_dev_select_tx_function(struct priv *priv, struct rte_eth_dev *dev); -void priv_dev_select_rx_function(struct priv *priv, struct rte_eth_dev *dev); +eth_tx_burst_t priv_select_tx_function(struct priv *, struct rte_eth_dev *); +eth_rx_burst_t priv_select_rx_function(struct priv *, struct rte_eth_dev *); /* mlx5_mac.c */ diff --git a/drivers/net/mlx5/mlx5_ethdev.c b/drivers/net/mlx5/mlx5_ethdev.c index 282ef241e..28183534a 100644 --- a/drivers/net/mlx5/mlx5_ethdev.c +++ b/drivers/net/mlx5/mlx5_ethdev.c @@ -1325,8 +1325,8 @@ priv_dev_set_link(struct priv *priv, struct rte_eth_dev *dev, int up) err = priv_set_flags(priv, ~IFF_UP, IFF_UP); if (err) return err; - priv_dev_select_tx_function(priv, dev); - priv_dev_select_rx_function(priv, dev); + dev->tx_pkt_burst = priv_select_tx_function(priv, dev); + dev->rx_pkt_burst = priv_select_rx_function(priv, dev); } else { err = priv_set_flags(priv, ~IFF_UP, ~IFF_UP); if (err) @@ -1386,32 +1386,36 @@ mlx5_set_link_up(struct rte_eth_dev *dev) * Pointer to private data structure. * @param dev * Pointer to rte_eth_dev structure. + * + * @return + * Pointer to selected Tx burst function. */ -void -priv_dev_select_tx_function(struct priv *priv, struct rte_eth_dev *dev) +eth_tx_burst_t +priv_select_tx_function(struct priv *priv, __rte_unused struct rte_eth_dev *dev) { + eth_tx_burst_t tx_pkt_burst = mlx5_tx_burst; + assert(priv != NULL); - assert(dev != NULL); - dev->tx_pkt_burst = mlx5_tx_burst; /* Select appropriate TX function. */ if (priv->mps == MLX5_MPW_ENHANCED) { if (priv_check_vec_tx_support(priv) > 0) { if (priv_check_raw_vec_tx_support(priv) > 0) - dev->tx_pkt_burst = mlx5_tx_burst_raw_vec; + tx_pkt_burst = mlx5_tx_burst_raw_vec; else - dev->tx_pkt_burst = mlx5_tx_burst_vec; + tx_pkt_burst = mlx5_tx_burst_vec; DEBUG("selected Enhanced MPW TX vectorized function"); } else { - dev->tx_pkt_burst = mlx5_tx_burst_empw; + tx_pkt_burst = mlx5_tx_burst_empw; DEBUG("selected Enhanced MPW TX function"); } } else if (priv->mps && priv->txq_inline) { - dev->tx_pkt_burst = mlx5_tx_burst_mpw_inline; + tx_pkt_burst = mlx5_tx_burst_mpw_inline; DEBUG("selected MPW inline TX function"); } else if (priv->mps) { - dev->tx_pkt_burst = mlx5_tx_burst_mpw; + tx_pkt_burst = mlx5_tx_burst_mpw; DEBUG("selected MPW TX function"); } + return tx_pkt_burst; } /** @@ -1421,16 +1425,19 @@ priv_dev_select_tx_function(struct priv *priv, struct rte_eth_dev *dev) * Pointer to private data structure. * @param dev * Pointer to rte_eth_dev structure. + * + * @return + * Pointer to selected Rx burst function. */ -void -priv_dev_select_rx_function(struct priv *priv, struct rte_eth_dev *dev) +eth_rx_burst_t +priv_select_rx_function(struct priv *priv, __rte_unused struct rte_eth_dev *dev) { + eth_rx_burst_t rx_pkt_burst = mlx5_rx_burst; + assert(priv != NULL); - assert(dev != NULL); if (priv_check_vec_rx_support(priv) > 0) { - dev->rx_pkt_burst = mlx5_rx_burst_vec; + rx_pkt_burst = mlx5_rx_burst_vec; DEBUG("selected RX vectorized function"); - } else { - dev->rx_pkt_burst = mlx5_rx_burst; } + return rx_pkt_burst; } diff --git a/drivers/net/mlx5/mlx5_trigger.c b/drivers/net/mlx5/mlx5_trigger.c index 88f60a01d..1a20967a2 100644 --- a/drivers/net/mlx5/mlx5_trigger.c +++ b/drivers/net/mlx5/mlx5_trigger.c @@ -152,7 +152,7 @@ mlx5_dev_start(struct rte_eth_dev *dev) goto error; } /* Update send callback. */ - priv_dev_select_tx_function(priv, dev); + dev->tx_pkt_burst = priv_select_tx_function(priv, dev); err = priv_rxq_start(priv); if (err) { ERROR("%p: RXQ allocation failed: %s", @@ -160,7 +160,7 @@ mlx5_dev_start(struct rte_eth_dev *dev) goto error; } /* Update receive callback. */ - priv_dev_select_rx_function(priv, dev); + dev->rx_pkt_burst = priv_select_rx_function(priv, dev); err = priv_dev_traffic_enable(priv, dev); if (err) { ERROR("%p: an error occurred while configuring control flows:"