From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM01-SN1-obe.outbound.protection.outlook.com (mail-sn1nam01on0046.outbound.protection.outlook.com [104.47.32.46]) by dpdk.org (Postfix) with ESMTP id AD83C44CF for ; Fri, 12 Jan 2018 22:50:14 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=Val06KIaAdTrInytDxO/Hep+ZU7tqm36EoZD92eDTXY=; b=Oy9y2vpmr+tj4chz3/O/+9qMqesYj0fwaMEJGIdGgtQgBRToS9OOuY72j/kcrlfN1e+1fGqgoHsoQqxUPAVD0Qm1i+30/O3PDkaCJyJq+SjEXIc/VVlVBzayzhG2w4OJNVhVG44N15gqmsJVOWhQxpBdAfLSlhLlCnpsPpEAedI= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Rasesh.Mody@cavium.com; Received: from cavium.com (198.186.0.2) by MWHPR0701MB3834.namprd07.prod.outlook.com (2603:10b6:301:7f::27) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.407.7; Fri, 12 Jan 2018 21:50:12 +0000 From: Rasesh Mody To: dev@dpdk.org Cc: Rasesh Mody , ferruh.yigit@intel.com, Dept-EngDPDKDev@cavium.com Date: Fri, 12 Jan 2018 13:50:01 -0800 Message-Id: <1515793801-18650-1-git-send-email-rasesh.mody@cavium.com> X-Mailer: git-send-email 1.7.10.3 MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [198.186.0.2] X-ClientProxiedBy: CY1PR07CA0001.namprd07.prod.outlook.com (2a01:111:e400:c60a::11) To MWHPR0701MB3834.namprd07.prod.outlook.com (2603:10b6:301:7f::27) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 22ac48ec-98aa-4e7e-62ad-08d55a06756b X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020087)(4652020)(5600026)(4604075)(4534118)(4602075)(4627214)(201703031133081)(201702281549075)(2017052603307)(7153060)(7193020); SRVR:MWHPR0701MB3834; X-Microsoft-Exchange-Diagnostics: 1; MWHPR0701MB3834; 3:qt6KByv4xDOE2VTJH+CCFGrIaJiek6qXfUOIQto8Xwzhn61QQxslDwnGGhKztfVxt7QkOKXpzIl19SBQmRj2xrrnJ7OBuiBCqr7aGLXS7RNJPUcoaWeiugew5MhaL/scnf2nozXi+Y57Z66vrR4384dVCdjXz7vYCLkeh/NkoMza1JdYWGHD8MHwUa/VRyb8YWO5Huq3oA7bVi4+St9XNJtH+OLyEPp6CrnLjxIBlWeLCUXlc8kqU/phteBJnB13; 25:TJfzC3xRjAnsk1yX3/PQmtehEIvomqlstULSJ1mDyXpNkf0y1/QdnJflISEU99XnhN07ybRCmVF07GHsExsfcs9mPzhpBCq6QQLEMi3a89H6/j+7C+HNjfqro8SUL03uV18Md5anHmSdNTiLpTOJHy8mkkseQQDBTqx+WB49b8b7YpIs4GfX0Z5f4btTfPSxQ4Ir5zTHlDxe6rqzCU0GEnmfNkHP4u6QStXj+dTR/smA9FeCEfbsUs/tK9qkMKy4T3efOpWu6h4yiUirNxYBKWIadNEik3N4mXzHGCsHgkGrzhh7coozSMQj0o+UR0HqPoUwEHbsSuWqrOmP511I6g==; 31:O+j72EWZgFJUJiTXVnQiN3nYZuPkvXIpou9DsUlhC0zVK+js8xZGLk/u0Aq66vlhBp4p0uF9flu3jhrBPc47T24w9qXbfgmXFuYcLeggmmpAOX6eYvZRa2SnXizIFyIqA4nhmihOWEvUTS0NiSEXGL00IlwmanECFG+WQLPNUpIFnjpiThkA5+2wnLDpGP8xJQJxeX6i/tb6E63QvINiTNiBHda4bYZdSamGqLfasZg= X-MS-TrafficTypeDiagnostic: MWHPR0701MB3834: X-Microsoft-Exchange-Diagnostics: 1; MWHPR0701MB3834; 20:OK1+0ZYz8Zvi3upkL9Q8lX8O/0kmyvvhZm+zMBOzNSAqaGx1HDBuOdz2gI0nBLzXQyquupSvfcvttyEay1VVbvcEG6CTT0hwpdD4Fi4ZQHItDijt9c43NMC/WXiYdQVTAhll04O8DYJS5csPmoqitS+Oasild+I+cxL9TwkJkG1OIZYzOl0WkfCfIhSss++H3ViQFSMBGIEJ+AP+4LFwEjYeFENrg86RTj5WwCMXoenf8RPkx/NJwGoAf2XRfIWbsWETpxgzd+EbcbhRhvFDtd81/oXZPpX7UlKEdl2QKiQEcuPffPGBIIGSu2rrVre7qk1CnaytfbdWpTJmLG6hFwQG7tupmZsd9pfXMJ6qDKW7qR6LU1/j0BIy6ojM+2ACoE1hVIyTBlzGgMm0z3OUZOgatpeU05NP8WSberDPLDXHYdfB+nb0sq0lMt3Xe6Oh2qFJV+yeL/M1NlP4WiOEMRPzU1RDzX6uv1t1Dn6iQXhQEh1NRmUVBzr+DnjnnVYF; 4:iZ0yc0RMsJ9nyXdvP8gFCrzaUX4tRvl4n9Zdc1nWL9mElOR3r3fmcREPaCpNS6da95tuuWJ3VSJVLWtOJdB/d1jk8W1FzbKsEDnd2RB7jetVOqdGMkavpS/V0RKXWltusu3byep8tp6SNy9xjjR0p8bv8vqSRf6AVTlirZFtgOznmATpErM+CVZA3LOPHNOvdaiMnzeBdyk7fY278Qn/+XGQqFWn7R8V/18eSIaZMtAYbhTb0v7Qmj+pMOOqYaVGQ/YOimXz+MO8FarAY/girg65dJDz45fewKxAH99wHiizM6gc8e543ch9VPutqdLK X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(788757137089); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040470)(2401047)(5005006)(8121501046)(3231023)(944501148)(3002001)(10201501046)(93006095)(93001095)(6041268)(20161123562045)(20161123564045)(20161123558120)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011); SRVR:MWHPR0701MB3834; BCL:0; PCL:0; RULEID:(100000803101)(100110400095); SRVR:MWHPR0701MB3834; X-Forefront-PRVS: 0550778858 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(979002)(376002)(396003)(346002)(39380400002)(39850400004)(366004)(199004)(189003)(3846002)(6116002)(7736002)(97736004)(86362001)(305945005)(105586002)(72206003)(4326008)(107886003)(106356001)(2906002)(53936002)(6916009)(6666003)(55016002)(7696005)(4720700003)(386003)(52116002)(51416003)(59450400001)(5660300001)(66066001)(50226002)(16526018)(81166006)(8936002)(81156014)(50466002)(68736007)(48376002)(21086003)(316002)(47776003)(16586007)(25786009)(478600001)(2361001)(2351001)(69596002)(8676002)(36756003)(309714004)(969003)(989001)(999001)(1009001)(1019001); DIR:OUT; SFP:1101; SCL:1; SRVR:MWHPR0701MB3834; H:cavium.com; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX:1; LANG:en; Received-SPF: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; MWHPR0701MB3834; 23:e+obNYGTvt8mdblegHSbBN9cXxwJeBYfKvCQGti?= =?us-ascii?Q?MJYji8wy1DIgrAbx0t6/lphnHYLr+Y9toc39rEHwbpmL0afkUd7vbvuz19Vb?= =?us-ascii?Q?keGi+fUJuwKDRKIBu1+AVKzYo+Zqq+Nej1O3Z6tuYj2SQjz9nAXUwDlRrxfD?= =?us-ascii?Q?w3DN4wWUgRX48VrBfsYXn4R0DZSjEoZirWuaNIYjT9Eg1HtMK76fkKdkMhSu?= =?us-ascii?Q?EG8WZiioWIIDGxqzote87XX09KzEz5oq9Zb9A7Z98PrGy9rSBG4JFJoT++49?= =?us-ascii?Q?ND+xwN+KQq7nEJAdGeH8CIu9xuSBsmDers9HlmjkqTM75r8DqHMn4IulxLnl?= =?us-ascii?Q?YmDPe0JF/W5aCGGLPOJcmHU/KF8CK77CLNYWw+rCsDctCtrnAkA09RMdiocm?= =?us-ascii?Q?v5isWy0mpe4MnBAF30xbiw4xL1jzGvplMm49TZC/aKreJgOtMWlSjJZC/3ZX?= =?us-ascii?Q?nsE6jcD9ixeSxLCsoA7l1E6d2PghRD4G60Z5De07k6QGY1MzC0lgQ3BkOxbW?= =?us-ascii?Q?tO/HdkgPemYuPMWyFwDKvjOV8qRT8uLET9FQ8cHrnkmMj59DVhtdwMu9ySOd?= =?us-ascii?Q?0gzuwst2yJofY3Q2RjbvEFIKFI294SO1VYVdRsvIpwycoo7ucBy943zkXw5M?= =?us-ascii?Q?Tvsrr62tbE8RAR9Ent8rokt0CgtAsT9XBBHHT412geE8QfWC7g+pv0/J51Y9?= =?us-ascii?Q?fRdXqUEIJ9TXd9/zWIPu8Oc+nnD9CJYN3Gr7Jv49tL8zh8ASz6pxhJ7P0nhi?= =?us-ascii?Q?ExFOoczABEjOWEVF+/u60ZAD8fDfJLNoszNf4WT5dg9xbZkKo7+bnEJASYRy?= =?us-ascii?Q?l7PHUeqT4s88HuaCXpHHJmyoiQj80DRlQeOLVAJSnF6sZ5cNgvZYfS3QowG5?= =?us-ascii?Q?Oo5FNidLdVBw3ZJyawpKv/gtkcPAMF4ZD0md36vyBhhhucazF0aGcVV/0svL?= =?us-ascii?Q?Dc8jR7Hnruq+T7H3/r57Wv0dIRpMRLshBsQWlPD2CYiF2V1MUVdc4x7xtXSM?= =?us-ascii?Q?9L2i9WCM/EKqZhDi20zeS8DatVMi2E4vO4K1Mfa+m3VWDpPMFijLsvTBpuLm?= =?us-ascii?Q?6wU6Q1aI2hA7gua1LJY0jhdVmlNUZxXOd8YEjF6RHC3aReDp21Xhed0+MMgL?= =?us-ascii?Q?cujcXYsticwQfebhw9nbKZEPt2WXiH427SSJfKDDs5gYCqh7kTa5O0bl77ea?= =?us-ascii?Q?lI96LyDNB/Gt6JNgAo86JdqYKS7dqF9YMR1xbpD4TZXGmwbDuCOICAvZDkLr?= =?us-ascii?Q?R5mrrsqKAiK3pzgPuYVBozJrPaBd2hPaAW+eUKJH0kIbcXdbB+YU+HtNxiud?= =?us-ascii?Q?QA0URBnUQJDJy5ce3g6chVDA=3D?= X-Microsoft-Exchange-Diagnostics: 1; MWHPR0701MB3834; 6:v4NXnQ014E46W16Qknjz/gbMkYmdzuKQq04s686xy7bioIrfJ6Hd8QX3UWKjOxN0WIEcs6YQy8C5ria26uookdSCMJp/EYU0C/igSt3NGchwTuaRClWM1Cgg8wSJDznEcQL6I3R7aBWhQQqbf5e6YE/bx+ucP+DIy3h/mDmQrY6CZgGzZBm7HkEsIqWDzTZ74kZgFFVEj1Hs7qZsyN/cByUKPcduaZFECqTXnKIjmZtkYoGCI5FTZBNfraESaT7ZsIUReXNkko0Lbop3lJneyc+eVtjS9yOEfRzTLQoTpCTNs1YlouX0VrnN+TWkhCmq0yLqiRYBhxGQNoZgWR21NDx4dlp89o5FLDwE4DiuRX0=; 5:6xkEl6Pzn1rKSe2FhQ0n7G3IACWPRlrlhYm7X3GDkaxyt93KHtB6NBDqxn5f3ecnGtdGatZ5/1g+loEzC3529AS7e+VEJpzMyfqZ4ujoaMRwmqDH/H+dpufsDHk4REG8jqUvMPYxWwMyZL5ACnN/fNrAxPLyaG9FEX7ZABzANOQ=; 24:TxnLz2enrem/FnRUXEOUST32o9og1EfVnfeh/wTPTbzqZ/Ngov4SZ43ndjYuekFRbAXQSYUzhkYUqnwE99LYPKSEA+jzYaFJlNeblH4LM08=; 7:7SYtSKHq5YX5Nje2aEqvgJ29+jCDkTcDd2dattmF+T2ueg3yqwRZc3UtRQoZ2TO9/hRecZAtfrHotyT5aytEi2fKkCJ3Rg1SYLdQkQHLMFQOC8mUvUrn1UrBeTjhPcLcsvTgZHldYgkk63Zk5gmMjqFhD9E2+HwiAACpFJlwgAnCCqEeT27LFTokTNFqoP5ZMIr/rAVSiAdDhwCfK8vFmBRLEHZAAVrezJJFCfsIoUYLC/lGdxeOvOn/4+zYMP/R SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: cavium.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Jan 2018 21:50:12.5162 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 22ac48ec-98aa-4e7e-62ad-08d55a06756b X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR0701MB3834 Subject: [dpdk-dev] [PATCH] net/qede: replace config option with run-time arg 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: Fri, 12 Jan 2018 21:50:15 -0000 This patch adds support for handling run-time driver arguments. We have removed config option for per VF Tx switching and added a run-time argument vf_txswitch. By default, the VF Tx switching is enabled however it can be disabled using run-time argument. Sample usage to disable per port VF Tx switching is something like... -w 05:00.0,vf_txswitch=0 -w 05:00.1,vf_txswitch=0 Signed-off-by: Rasesh Mody --- config/common_base | 1 - drivers/net/qede/qede_ethdev.c | 82 +++++++++++++++++++++++++++++++++++++--- drivers/net/qede/qede_ethdev.h | 1 + 3 files changed, 77 insertions(+), 7 deletions(-) diff --git a/config/common_base b/config/common_base index 90508a8..f83f8f7 100644 --- a/config/common_base +++ b/config/common_base @@ -397,7 +397,6 @@ CONFIG_RTE_LIBRTE_QEDE_PMD=y CONFIG_RTE_LIBRTE_QEDE_DEBUG_INFO=n CONFIG_RTE_LIBRTE_QEDE_DEBUG_TX=n CONFIG_RTE_LIBRTE_QEDE_DEBUG_RX=n -CONFIG_RTE_LIBRTE_QEDE_VF_TX_SWITCH=y #Provides abs path/name of the firmware file. #Empty string denotes driver will use default firmware CONFIG_RTE_LIBRTE_QEDE_FW="" diff --git a/drivers/net/qede/qede_ethdev.c b/drivers/net/qede/qede_ethdev.c index 071c441..8d82661 100644 --- a/drivers/net/qede/qede_ethdev.c +++ b/drivers/net/qede/qede_ethdev.c @@ -9,6 +9,7 @@ #include "qede_ethdev.h" #include #include +#include /* Globals */ int qede_logtype_init; @@ -456,13 +457,13 @@ int qede_activate_vport(struct rte_eth_dev *eth_dev, bool flg) params.update_vport_active_tx_flg = 1; params.vport_active_rx_flg = flg; params.vport_active_tx_flg = flg; -#ifndef RTE_LIBRTE_QEDE_VF_TX_SWITCH - if (IS_VF(edev)) { - params.update_tx_switching_flg = 1; - params.tx_switching_flg = !flg; - DP_INFO(edev, "VF tx-switching is disabled\n"); + if (!qdev->enable_tx_switching) { + if (IS_VF(edev)) { + params.update_tx_switching_flg = 1; + params.tx_switching_flg = !flg; + DP_INFO(edev, "VF tx-switching is disabled\n"); + } } -#endif for_each_hwfn(edev, i) { p_hwfn = &edev->hwfns[i]; params.opaque_fid = p_hwfn->hw_info.opaque_fid; @@ -1281,6 +1282,68 @@ static void qede_dev_stop(struct rte_eth_dev *eth_dev) DP_INFO(edev, "Device is stopped\n"); } +#define QEDE_TX_SWITCHING "vf_txswitch" + +const char *valid_args[] = { + QEDE_TX_SWITCHING, + NULL, +}; + +static int qede_args_check(const char *key, const char *val, void *opaque) +{ + unsigned long tmp; + int ret = 0; + struct rte_eth_dev *eth_dev = opaque; + struct qede_dev *qdev = QEDE_INIT_QDEV(eth_dev); +#ifdef RTE_LIBRTE_QEDE_DEBUG_INFO + struct ecore_dev *edev = QEDE_INIT_EDEV(qdev); +#endif + + errno = 0; + tmp = strtoul(val, NULL, 0); + if (errno) { + DP_INFO(edev, "%s: \"%s\" is not a valid integer", key, val); + return errno; + } + + if (strcmp(QEDE_TX_SWITCHING, key) == 0) + qdev->enable_tx_switching = !!tmp; + + return ret; +} + +static int qede_args(struct rte_eth_dev *eth_dev) +{ + struct rte_pci_device *pci_dev = RTE_DEV_TO_PCI(eth_dev->device); + struct rte_kvargs *kvlist; + struct rte_devargs *devargs; + int ret; + int i; + + devargs = pci_dev->device.devargs; + if (!devargs) + return 0; /* return success */ + + kvlist = rte_kvargs_parse(devargs->args, valid_args); + if (kvlist == NULL) + return -EINVAL; + + /* Process parameters. */ + for (i = 0; (valid_args[i] != NULL); ++i) { + if (rte_kvargs_count(kvlist, valid_args[i])) { + ret = rte_kvargs_process(kvlist, valid_args[i], + qede_args_check, eth_dev); + if (ret != ECORE_SUCCESS) { + rte_kvargs_free(kvlist); + return ret; + } + } + } + rte_kvargs_free(kvlist); + + return 0; +} + static int qede_dev_configure(struct rte_eth_dev *eth_dev) { struct qede_dev *qdev = QEDE_INIT_QDEV(eth_dev); @@ -1314,6 +1377,13 @@ static int qede_dev_configure(struct rte_eth_dev *eth_dev) return -EINVAL; } + /* Enable Tx switching by default */ + qdev->enable_tx_switching = 1; + + /* Parse devargs and fix up rxmode */ + if (qede_args(eth_dev)) + return -ENOTSUP; + /* Sanity checks and throw warnings */ if (rxmode->enable_scatter) eth_dev->data->scattered_rx = 1; diff --git a/drivers/net/qede/qede_ethdev.h b/drivers/net/qede/qede_ethdev.h index 7e55baf..7cddbe6 100644 --- a/drivers/net/qede/qede_ethdev.h +++ b/drivers/net/qede/qede_ethdev.h @@ -188,6 +188,7 @@ struct qede_dev { struct qede_fastpath *fp_array; uint16_t mtu; uint16_t new_mtu; + bool enable_tx_switching; bool rss_enable; struct rte_eth_rss_conf rss_conf; uint16_t rss_ind_table[ECORE_RSS_IND_TABLE_SIZE]; -- 1.7.10.3