From patchwork Thu May 12 17:06:36 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Pankaj Gupta X-Patchwork-Id: 111074 X-Patchwork-Delegate: andrew.rybchenko@oktetlabs.ru Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 57AB2A00C3; Thu, 12 May 2022 19:07:14 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 258A242833; Thu, 12 May 2022 19:07:09 +0200 (CEST) Received: from NAM11-CO1-obe.outbound.protection.outlook.com (mail-co1nam11on2068.outbound.protection.outlook.com [40.107.220.68]) by mails.dpdk.org (Postfix) with ESMTP id 27A43410EF for ; Thu, 12 May 2022 19:07:07 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=aPVKl96rxYF0dpdNPMjuHXeQIlWZb9sKXi0tgcYuPLjmlhJA/U9VR1XtkVXcaAK80m4eWuFWMUBUg851lw+XB9YTtsUzLzCu7lZA5L1/UH+tHR6y+IFNBPPYlydI50fIk1EERBNlEiHruR/3/ABUei7A0/8DPBD1UgT60VfLG6l+Kn8rmjbsDh/+uPfwWMBA1QuHeeoaZjtiSniAxUFj5oAU6N9gDWfET5J8Fpg9fXumAUrJV7MRwr1/Y7DcNw6NSJ3Ih1D5B4pEIYvYhRDEuv4vmHlY7M4M1CsljVd9UUyUhnpJb3yC9JPkH8/Zcobzg8X7fVJJdEHcaAKZGl9Btw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=fKbgVDq0s40AbASTneCpQkrLXqKWjdP0B/eEomJWKH4=; b=S4z00SUzStfSS/+OVW+7C9yEs82uRqIs/5axr7j4m5sAfzVcXx2P8vOKVfqWyOOLg9dSLwal4JQSJR0t5oWlUVOP7wCWO3j4GQLC/CyuBs9zj3bP+y/Dqwlgk2b/uSnONN13+xyBxFm0vQafeAtco41g51gpmIbXEr7+GtFRDtpKDz1PtQ/sFprs0eb5/Yvbwa+ePvSflyOnBQdXsJ1Eqenb5pppuDHIKbcY1iXkiYJkoegA2Sg4Bb+ASoCjOjiwU6egtBrQMyU+VL1sTFo73jWVHS6Ah4mzQV40xH6ppmpfk3HowA7Rq0QdsHdDxbTMoslDiqCOqzlnT7mF8TWuGA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=vmware.com; dmarc=pass action=none header.from=vmware.com; dkim=pass header.d=vmware.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vmware.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=fKbgVDq0s40AbASTneCpQkrLXqKWjdP0B/eEomJWKH4=; b=ncy8VAyLK8sy4Eh1B1t/IVDFD5Ujj5hN+2Wo2ktbJx4rB0Jat+lPkGT59wQvXw4BJC/pIoz6yzpSGZXtrJtliG6UJ3gc0uZ2CDDKQvociYan7bi2TxQrb/EtuVNFnUNXUozFw1xchv9qbm2NZC8RY3CBP6GLwT6ZwDkVXT0Qp+A= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=vmware.com; Received: from BYAPR05MB5624.namprd05.prod.outlook.com (2603:10b6:a03:1d::13) by BL0PR05MB4721.namprd05.prod.outlook.com (2603:10b6:208:28::26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5250.12; Thu, 12 May 2022 17:07:02 +0000 Received: from BYAPR05MB5624.namprd05.prod.outlook.com ([fe80::49ad:2ac7:16c0:51c8]) by BYAPR05MB5624.namprd05.prod.outlook.com ([fe80::49ad:2ac7:16c0:51c8%6]) with mapi id 15.20.5273.004; Thu, 12 May 2022 17:07:02 +0000 From: Pankaj Gupta To: jbehrens@vmware.com Cc: dev@dpdk.org, pagupta@vmware.com Subject: [PATCH v5 2/8] net/vmxnet3: implement RETA query and RETA update Date: Thu, 12 May 2022 13:06:36 -0400 Message-Id: <20220512170642.28930-3-pagupta@vmware.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20220512170642.28930-1-pagupta@vmware.com> References: <20220512170642.28930-1-pagupta@vmware.com> X-ClientProxiedBy: BYAPR02CA0014.namprd02.prod.outlook.com (2603:10b6:a02:ee::27) To BYAPR05MB5624.namprd05.prod.outlook.com (2603:10b6:a03:1d::13) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 7e55014d-5434-4d0c-8018-08da3439d534 X-MS-TrafficTypeDiagnostic: BL0PR05MB4721:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 3nOpBg761eAUWvfoq3IitiA+sTzy5x41YHukIfwhpHddjgvF6y0BOKgjTZcla2B3RlBN3VhR700tHrSWJK0chl2QFoTMisxvB+WhE7Jam1O9NPVzF4KihQGLgN+xdwHqXjgMNdtzuV+gzua/LeCl4QI63aBpE5g249NdHvtV5zTkn+snjihR/6voiY8avaYXjjgnY3T3/7n7hLt/E29O84kOoR1tPl/fWiV44OwC1FdbTCp+HgUNIjUFs9977x3CiLXafR55/GLr2A3skqsEZvw2eko6R1gigzAltGnZqdqBN8LmL0vYJ7oeSy3zcUzK+i6ln8mwUYdseAWqb9bMmQ4lSmfhRYa0TA3nfSm6BusqcSwYTndjR+PE3qUBil5giBNMsK1ILszNg41K6wDJ/Ey3Fa1lgZu56NZ05uxg1+VIdoB+Mq87OC97tgEXvHe1mx2yCGhu2C4fL+21AK7cdY226uRVDLaUfhgQ0daxv7SSCZrCNZtlk858cEIX+KcoNxz6WHe2cGwz7unZPRVDEXw2HX5ocFzUDCX8Jh/Q1am7aRLgJAx7hg/PfGCwaDWhaSA9kXyqNHu2cDIe17ZETmFEZnNjPEOq/syKSHGlA9XuOKO75q5AC2Y6BiS4g0U4EovM2bIwtTTMyHWW0swONg0JCgZlV+gChmHuRwoS/wTVFhzwwHAFOuhPu4WqyVLqlC4o4bGmwcYmnfGDsfzzZw== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:BYAPR05MB5624.namprd05.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(4636009)(366004)(38350700002)(66476007)(66556008)(86362001)(6666004)(66946007)(8676002)(34206002)(4326008)(38100700002)(6486002)(508600001)(6636002)(37006003)(316002)(1076003)(186003)(107886003)(6506007)(52116002)(2616005)(5660300002)(26005)(6512007)(8936002)(2906002)(15650500001)(36756003)(83380400001); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 0GDGjZckdLoFHCEb66L2sscQOq/umkqZOoecvh4Q4OZi8bNIjHdAwDZuw4K/FVHrqbF8Tw3hMJAhZle4hnS6yFv9mGf0+7ujO5JPNF7mSqTga9yAVw6TG1G5uxOaILJPNHSlUFFzlwh7kNSMHT/zZH7yU1VLQRzV8R1pGVtj07X+D/yIjgt+GW7arTmbYDX92KmTNFycHf5A0ptXkDmMxvOADrCyCP2LUcOe0BeLW/wM93iJcAvXLkIi9pMs3HROcevnrUzCsegjYSO7lJXlGpPV4BoTS8kp60Nbnks2Yq3+xl3x1FfTiCMh0DnIlZqEKZ54LYNdmL8KcJD5Ch7RKZIHyG2gqH6loBu0fcXcTtWwjAiTyI7D1DGAw6+LWl9kKANpAkKQDcqtkE7jzenhO3jXWUEB1AXysAlBHH7po8m0hH/iHapaB8WZed7le2Xc+T2Qyi55x149mp89XgoMgNENyoRkYvohgCzxSlAfzNfcF0F7i/33TShcDbhsdavLw1t7I6h1lty3/1TK1WDvIdG9TnRC2YudrojnYQlbKdgVHJd+wjj5LmkPn/2FuFNfy/1wBrA/qf9Ps5OOKW2tTiWUbR1oK2rfFhOLUi9P3wVxubeWC2pXMJfppLRmczZW0SIBaNJZc04TawZm+Y4TLWArq/FXLeetYHlB165i2aJQv1vfqtXIiVSeypOGruuGciGHo+HAlwwdIAVgnytkeXtqTZwKbp6pWKvBf++gv+TIz/8G10bP0WzRXCJCXIDnUma92Ke/Vy1KfgqVXEIJmExB4hxj7Ge3SfNwCqGrNFSGpx6pCZInETiinAhJPeKGClckc+V4025otltlXeplriatqHL4F9fKyoJHA5tFZmFoZm+GRzpWoLtPGqLCDebSj9wKBm5UiUCEpVlEhNPF4P2gQlwkJhizC1QcO9iZPgWKROl9iWI9y/85HcmhPtaNvMXU7u6T3grNblcKbiOc6zxgPt8haQQiUVxOJ7fMWOnT+JuSEECDOhRzaYMsBk4Spg6zz8jqppBn8cIfoVBfQtfd7zbc0LCmwB3IjVIOhsUHwzB5L6m6JKexgNhnq23wnB0GZkNbpUuCRbmS5Yc2LgtanebAN2bV1knlzoCfQDPH8q9TN8MAyzzkuyCemBLJZDydZLvBY1tHwN9eRXD/l2VZv9bmbRKQwVmy+y2U40l0pWcLgOpLzlMKPlkEJulQRC+H1Tv0tJ/i+4JnUGSLTVwhSCllGtuoE7D07sSTj34uV+ZaEfwoIc2rpdfklFAdBXzDqL2Rc4+jZUNhdiHeO0rK/5dvTEqQ+ZiwjtPoa8RMYMbeuC3MIRtaIFmM70t4AjvoRwuHZQnsO2yHlTUpGNGYaYYFsFujykt9tanER1dHxVVgY4+5IlZj+8ari4Hg7eT7SGcUCmuHXjcF7hQQ/59FR//f9FSmrZIVHHq7BegkLz8h832vFSxf1K6StsszqMf0c8VU2QGW9KXwYiYnRoIqMgWhcnN5A66XI3vNqWlQohsx+LyqPSTPoMh/DIMP4Z3mb30LoUpd1ZqNaaH86I8BFUwXJRM+v/4MqgANjSQPZ6ZmPqAOQ+1N0ygBHmRnp5+A3UzNp01/Jrgw6lvWOONMiRlAZrLKW4XX7of6958OL6wCndejRAMkGjhgR7+nMnxdyy9Zo9+tDmQjOpRHMa+AdJ2I3/fr8tGt9p6Cz3WYJ5JLbxHrfWjDH/dtopY7zSfLDsVsK7k18DKeoALtbg== X-OriginatorOrg: vmware.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7e55014d-5434-4d0c-8018-08da3439d534 X-MS-Exchange-CrossTenant-AuthSource: BYAPR05MB5624.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 May 2022 17:07:02.2520 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: b39138ca-3cee-4b4a-a4d6-cd83d9dd62f0 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: FYqj/O6AEZqnChq9EVFfSjjZBw9XOYv40UlyYOG5/6vEWkCK614t2fz9AUCw8gmmvB2NUtGuJEdps0OvXbLmOg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL0PR05MB4721 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Add RETA query and RETA update support for VMXNET3 Tested, using testpmd, for different hardware version on ESXi 7.0 Update 2. Signed-off-by: Pankaj Gupta Reviewed-by: Jochen Behrens --- drivers/net/vmxnet3/vmxnet3_ethdev.c | 67 ++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) diff --git a/drivers/net/vmxnet3/vmxnet3_ethdev.c b/drivers/net/vmxnet3/vmxnet3_ethdev.c index a7e1e5fef5..d5f9903946 100644 --- a/drivers/net/vmxnet3/vmxnet3_ethdev.c +++ b/drivers/net/vmxnet3/vmxnet3_ethdev.c @@ -95,6 +95,14 @@ static int vmxnet3_mac_addr_set(struct rte_eth_dev *dev, struct rte_ether_addr *mac_addr); static void vmxnet3_process_events(struct rte_eth_dev *dev); static void vmxnet3_interrupt_handler(void *param); +static int +vmxnet3_rss_reta_update(struct rte_eth_dev *dev, + struct rte_eth_rss_reta_entry64 *reta_conf, + uint16_t reta_size); +static int +vmxnet3_rss_reta_query(struct rte_eth_dev *dev, + struct rte_eth_rss_reta_entry64 *reta_conf, + uint16_t reta_size); static int vmxnet3_dev_rx_queue_intr_enable(struct rte_eth_dev *dev, uint16_t queue_id); static int vmxnet3_dev_rx_queue_intr_disable(struct rte_eth_dev *dev, @@ -137,6 +145,8 @@ static const struct eth_dev_ops vmxnet3_eth_dev_ops = { .tx_queue_release = vmxnet3_dev_tx_queue_release, .rx_queue_intr_enable = vmxnet3_dev_rx_queue_intr_enable, .rx_queue_intr_disable = vmxnet3_dev_rx_queue_intr_disable, + .reta_update = vmxnet3_rss_reta_update, + .reta_query = vmxnet3_rss_reta_query, }; struct vmxnet3_xstats_name_off { @@ -1696,3 +1706,60 @@ RTE_PMD_REGISTER_PCI_TABLE(net_vmxnet3, pci_id_vmxnet3_map); RTE_PMD_REGISTER_KMOD_DEP(net_vmxnet3, "* igb_uio | uio_pci_generic | vfio-pci"); RTE_LOG_REGISTER_SUFFIX(vmxnet3_logtype_init, init, NOTICE); RTE_LOG_REGISTER_SUFFIX(vmxnet3_logtype_driver, driver, NOTICE); + +static int +vmxnet3_rss_reta_update(struct rte_eth_dev *dev, + struct rte_eth_rss_reta_entry64 *reta_conf, + uint16_t reta_size) +{ + int i, idx, shift; + struct vmxnet3_hw *hw = dev->data->dev_private; + struct VMXNET3_RSSConf *dev_rss_conf = hw->rss_conf; + + if (reta_size != dev_rss_conf->indTableSize) { + PMD_DRV_LOG(ERR, + "The size of hash lookup table configured (%d) doesn't match " + "the supported number (%d)", + reta_size, dev_rss_conf->indTableSize); + return -EINVAL; + } + + for (i = 0; i < reta_size; i++) { + idx = i / RTE_ETH_RETA_GROUP_SIZE; + shift = i % RTE_ETH_RETA_GROUP_SIZE; + if (reta_conf[idx].mask & RTE_BIT64(shift)) + dev_rss_conf->indTable[i] = (uint8_t)reta_conf[idx].reta[shift]; + } + + VMXNET3_WRITE_BAR1_REG(hw, VMXNET3_REG_CMD, + VMXNET3_CMD_UPDATE_RSSIDT); + + return 0; +} + +static int +vmxnet3_rss_reta_query(struct rte_eth_dev *dev, + struct rte_eth_rss_reta_entry64 *reta_conf, + uint16_t reta_size) +{ + int i, idx, shift; + struct vmxnet3_hw *hw = dev->data->dev_private; + struct VMXNET3_RSSConf *dev_rss_conf = hw->rss_conf; + + if (reta_size != dev_rss_conf->indTableSize) { + PMD_DRV_LOG(ERR, + "Size of requested hash lookup table (%d) doesn't " + "match the configured size (%d)", + reta_size, dev_rss_conf->indTableSize); + return -EINVAL; + } + + for (i = 0; i < reta_size; i++) { + idx = i / RTE_ETH_RETA_GROUP_SIZE; + shift = i % RTE_ETH_RETA_GROUP_SIZE; + if (reta_conf[idx].mask & RTE_BIT64(shift)) + reta_conf[idx].reta[shift] = dev_rss_conf->indTable[i]; + } + + return 0; +}