From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 3989742E5B; Thu, 13 Jul 2023 05:02:52 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 0AF4F40DDA; Thu, 13 Jul 2023 05:02:52 +0200 (CEST) Received: from NAM12-DM6-obe.outbound.protection.outlook.com (mail-dm6nam12on2118.outbound.protection.outlook.com [40.107.243.118]) by mails.dpdk.org (Postfix) with ESMTP id 131944003C; Thu, 13 Jul 2023 05:02:50 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=gCKWm/o+ZKU3C76RZKMatYvXMr2gecCj6xUPDszK3rugJNtG+TDHcZ2N98r3ac1SeLwqhg9a42ZRKRKP631X5dDhAmJkcKLcA2mAvVuNnhH3aglIoWICtZu4/lCCmJbtUPxvo4mUNlUgH3cr9OgJxE+uwesZgL3BTACl+ZKC1mKD2W1Tbd94j0BKxZOD1K69krJp08f9uH+cpmuN3fOiaPImzstZRszZypjq4LJ51YEGVtIgGZIa0DHGR7ecN1PcYwGIQgK6Ps60HdbxYh+hReMFBQ2Id1bBvtDwI++BenUHglkJ86ul11sQnf3JWvW89Kay1/dhna/JLoGTk/LS0A== 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=FfdCRvzSzeHNeQ5mppTmeWzCgrRrt0Z/A3uV45kfU04=; b=cj7IiwEptGQtmVy9BnRSxDzlgahifNmQNc3hfxJmPvOyTH6UpDufEV8iZlD1h27HQ6GHUBhVZhYWb+hX5Odzt03CiWmhi/HXdOeBA5XvVrrB8ZaYiNp/U/fvJu4XqwN0f3BWQSeGhBCIwBCFYUkJoWeoZFlkBpll7KDslvHycPu+o8ubp3hQqcKHcsQCFd93KOSXwf5i5IJmj1+ohDaxaSbR/FYC0fM1/v4DbFDukr3I37Q4A7jHaHC9t2uaU/hqxNrmZnCtARtJqP8FRMKKjYATg2dV43P89xy2SFbwLqFO0PpB/ibmQgd62upN4+ULNBMYkP0jQyXkQyudGSk5fA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=corigine.com; dmarc=pass action=none header.from=corigine.com; dkim=pass header.d=corigine.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=corigine.onmicrosoft.com; s=selector2-corigine-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=FfdCRvzSzeHNeQ5mppTmeWzCgrRrt0Z/A3uV45kfU04=; b=ZrebzUpwaeC0izHBhhclCGDQs8fX/jjR0CMeGQJXf+Uqszw4W0DEtjPeePFz38RZYAvSrhyPXwEbSvtjrrQXUY8cVuNhH8bqd6W6NVDo1aaG81cqQ33x+jGa8QDKeGZyfhGT08Uq6PNL8WxRezk0+LTCFgJO9WKsqS9pIPcOAIU= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=corigine.com; Received: from SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) by SA3PR13MB6211.namprd13.prod.outlook.com (2603:10b6:806:2fb::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6588.20; Thu, 13 Jul 2023 03:02:47 +0000 Received: from SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::d2cb:a650:e1ce:2174]) by SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::d2cb:a650:e1ce:2174%4]) with mapi id 15.20.6588.022; Thu, 13 Jul 2023 03:02:47 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, niklas.soderlund@corigine.com, Long Wu , chaoyong.he@corigine.com, stable@dpdk.org Subject: [PATCH] net/nfp: fix invalid control message packets Date: Thu, 13 Jul 2023 11:02:17 +0800 Message-Id: <20230713030217.1142257-1-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-ClientProxiedBy: SG2PR04CA0196.apcprd04.prod.outlook.com (2603:1096:4:14::34) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|SA3PR13MB6211:EE_ X-MS-Office365-Filtering-Correlation-Id: 3dc33d22-ff0e-4a08-7663-08db834da2aa X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 5yRWs+x3f9P4V2Y9n7ArER6Y2rEDKBWA9mMSVt2ril4FGcAlru+EdQU7Yq/afvrcqestRfDX8YgwKQWifkqitmGFj4NYufw2B6tTIVUNJuwMs7zwUgkCwFAgMt+IYfCnYR59CVT8I++rOmOu7rLMrfb4h1s9f/AIWU6qSKiECOjEb/3X7pSGWt7HUP7AMKsjDsIPXJKTNZomKI89LDJdU+5KSq5rfZqVJ9L380QTDUWrHJlqONg69eowrLhIpIqb4VN3+MVCioZtVVomUE5jpDjAz/VD+QlUYcPY6zVLhsBZ+yXUhz4uxCqDowMSpLnQcsjcddhEPlhY70w+jjIqPVoHaMYrnU7S83u7qCwRU32d+qMmjRVXZ4IHZZ5JWXvkRZ8T9+BfF1tKkU38forQxh1CH3ZaRaZ/0zQUtGxNIIJg4htVnkwpv9qKVws6Chb2W1hrDRz72Mu4wCY6fliZXRsCzIRuLL8O3sZQa0FpApoFeSeHWHELu7mBh/lNFd5Vocr0QQ1GSKpMppOT8Ci/Hs3+2zFs4Gk53jdlJgLA6tf6g6uxYewg7gNBJZIAM2Bery9YdRF7jkCqFqVeFdknaKpCF1BVG6RelZHtLou/xpA4igBSgNBgo58xTV/UxFeTWW0nyLm0w3hoqU+jb9+DQHr91V9R7MKqQ6qas7yoHkI= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SJ0PR13MB5545.namprd13.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230028)(4636009)(366004)(376002)(39840400004)(396003)(346002)(136003)(451199021)(6486002)(52116002)(6512007)(6666004)(186003)(6506007)(1076003)(83380400001)(36756003)(38350700002)(2616005)(26005)(86362001)(38100700002)(4326008)(6916009)(66946007)(66556008)(66476007)(2906002)(41300700001)(316002)(450100002)(44832011)(8936002)(8676002)(5660300002)(478600001); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?2Ga/JzyF8K8guyVqUruwym40R28j/Xs42JtiwUDOGxfTtQZpa3827cUEW54t?= =?us-ascii?Q?mCiJRMLb3sbujeGS4Zz6cBnl3DPihdwF6F3GZGCcGZ8HHWc8BJYVg8hUdJug?= =?us-ascii?Q?GG1TBH2B97ZggAW7VzrRU3g4PrLDY8kolPhlgGiR6i/YIW1fviozfUiHN5WP?= =?us-ascii?Q?Urmrsf9IkntZgb146jwOmbE2wJG9/d4Cql8Azm2U4lx5+COcigjxpPdfl0vi?= =?us-ascii?Q?fkeSGoP28i1IAZWLlbSgsVJRhTf/srJ+8gBJeGs0cc9AolA57kp9chA/oBj8?= =?us-ascii?Q?ldrSXT1P5sFkXIjewqs3XthAcOcdZCsF0PnEDiUEFJM6JKwzv3ohhc86JJ6s?= =?us-ascii?Q?ULunSyyqGh1XIFNTLSCMoZGkJQhESnOXwGX4y5pQxvV91KlewCK6RpH0ztnV?= =?us-ascii?Q?BmRTlngCOoUSDMPhga6T04K6uj0RjLCZuP5mwF97Rwkp3Huc8lDGbRDxvwzR?= =?us-ascii?Q?T7bsb49CSHEspDx31jxtfW79FClGSS9CP3eQg7kzLYk7kGnn53CdaN5cQh/f?= =?us-ascii?Q?n4VrlElwJvcIRoB8wZnJsw/+Gj7TuwHQkUDVRsqifpAl/sk8L0qzgPyUke82?= =?us-ascii?Q?ePmXQ5bBmktc5EcAM5OvANKZGtRMAyhER/mUmpnBM+06TLXBSOz/4RE47aTZ?= =?us-ascii?Q?EzxroCT0O3/ph/3DdJGYwKoCBOesXMzPtmw6cFCFbCbuWqaQv3QYnPhDOfOg?= =?us-ascii?Q?J7A5KkSodx5wawZYkIY8WlD9TCF7H2urEH8kFIB6yZgK+M06S73MiZ6HPy8t?= =?us-ascii?Q?xcnSzvnjUaiv89jLdgpTIFFKXR0/z39LcV2o1reWP4KagLLa43o1vBt5eqtF?= =?us-ascii?Q?2oclYXI7scqhske/bI3XiBQgdhZ3UCib3udFqU9q89d3HxyfIq3jKYrn/6Ar?= =?us-ascii?Q?LY9Cb1Lr/rn1QHFx8SJeJ5R+Ygl+9smaafVUmZ4nJZOAHsmEw+HQnRjti/NX?= =?us-ascii?Q?S/EhbgAm3PDAY2ERatceSW7iGsScIuzmy9CfacLJbnowSCyMxDuvyjRe7k+y?= =?us-ascii?Q?tyTxBrJ2hYTK8s92hRl8TSFpsECYJt+pqMaPiLqjbFxoIblsuzmHkh5Ho3DW?= =?us-ascii?Q?2THj1f3pwm3ZtgDk1NZKS8HmdoeGkU5by4n0Ye/Ywt9D7RjyiAvtr5AN2hxe?= =?us-ascii?Q?NqOMjKbaMwNDEMLCDJeS9RoYcQqWyszSrgZCH0gO7NtNij2ThLG5UbV3muBZ?= =?us-ascii?Q?POyj2tkaon10UTuUXXMYY8epHrO6ebUME0j1DZLap/tB4WTYiBscn9a7Sga5?= =?us-ascii?Q?oaKrpkUX38xCA+ldkAyeZ+t31xcqlTOuBSD7Ju4XZW6Tu4YDq8YT42t29Jun?= =?us-ascii?Q?vsXsacWEXeDK7B36KEiytjdZ1HA5H/VzMGyRmCM6Ca+ZBssHPMA2qC/rLa0s?= =?us-ascii?Q?+AVYYyPDpiMcQA1Ek2wWcf1vnzxUEoJqa6gkbjwHi6cgBbiw2cg7UuqIM07u?= =?us-ascii?Q?nXYHFuv079h/+PxiMygvb3xu3a62S1T4o84aQjUT60ZwAlANEneMmsKPNbeo?= =?us-ascii?Q?gHcSZunBy2CQ8bT1jl7leN70BoGV8XBjp2T/nhVJ92lIsGSybWFxk56bQj2i?= =?us-ascii?Q?iZH/ZnBuUW7SkhcP5KrUutUDUbv12rInjYOTdgQztoROnIXGlAjluWEZzU14?= =?us-ascii?Q?WA=3D=3D?= X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3dc33d22-ff0e-4a08-7663-08db834da2aa X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Jul 2023 03:02:46.9963 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: fe128f2c-073b-4c20-818e-7246a585940c X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: Mo46k5wVLao7IK4dQGV08U53J2wqw7jP+4qcgTgbjpt5YEjgs5KVg6eLUGZ8Zreh1fJ6Q7conk2zZ6MalV/5UGXzS1j2SICw6RIyxv14uEY= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA3PR13MB6211 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 From: Long Wu If we add two cards that uses flower firmware into one dpdk-testpmd, NFP PMD will printf error log. The reason is that the second card uses the control VNIC Rx queue of the first card. Because rte_eth_dma_zone_reserve() will reserve new DMA zone if DMA zone's name is unique. But if there is already a zone with the same name, rte_eth_dma_zone_reserve() will return the pointer of the previously DMA zone. We try to reserve DMA zone for each card but we use the same name to reserve. We use the PCI address to give control VNIC a unique ring name to avoid the above situation and let each NIC's ring have its own DMA zone. Fixes: 945441ebdb9c ("net/nfp: add flower ctrl VNIC") Cc: chaoyong.he@corigine.com Cc: stable@dpdk.org Signed-off-by: Long Wu --- drivers/net/nfp/flower/nfp_flower.c | 32 +++++++++++++++++++++-------- 1 file changed, 23 insertions(+), 9 deletions(-) diff --git a/drivers/net/nfp/flower/nfp_flower.c b/drivers/net/nfp/flower/nfp_flower.c index 77dab864f3..9a75aa5413 100644 --- a/drivers/net/nfp/flower/nfp_flower.c +++ b/drivers/net/nfp/flower/nfp_flower.c @@ -385,6 +385,7 @@ nfp_flower_init_ctrl_vnic(struct nfp_net_hw *hw) int ret = 0; uint16_t n_txq; uint16_t n_rxq; + const char *pci_name; unsigned int numa_node; struct rte_mempool *mp; struct nfp_net_rxq *rxq; @@ -393,6 +394,8 @@ nfp_flower_init_ctrl_vnic(struct nfp_net_hw *hw) struct rte_eth_dev *eth_dev; const struct rte_memzone *tz; struct nfp_app_fw_flower *app_fw_flower; + char ctrl_rxring_name[RTE_MEMZONE_NAMESIZE]; + char ctrl_txring_name[RTE_MEMZONE_NAMESIZE]; char ctrl_pktmbuf_pool_name[RTE_MEMZONE_NAMESIZE]; /* Set up some pointers here for ease of use */ @@ -425,10 +428,12 @@ nfp_flower_init_ctrl_vnic(struct nfp_net_hw *hw) goto eth_dev_cleanup; } + pci_name = strchr(pf_dev->pci_dev->name, ':') + 1; + /* Create a mbuf pool for the ctrl vNIC */ numa_node = rte_socket_id(); snprintf(ctrl_pktmbuf_pool_name, sizeof(ctrl_pktmbuf_pool_name), - "%s_ctrlmp", (strchr(pf_dev->pci_dev->name, ':') + 1)); + "%s_ctrlmp", pci_name); app_fw_flower->ctrl_pktmbuf_pool = rte_pktmbuf_pool_create(ctrl_pktmbuf_pool_name, 4 * CTRL_VNIC_NB_DESC, 64, 0, 9216, numa_node); @@ -467,6 +472,7 @@ nfp_flower_init_ctrl_vnic(struct nfp_net_hw *hw) eth_dev->data->nb_rx_queues = n_txq; eth_dev->data->dev_private = hw; + snprintf(ctrl_rxring_name, sizeof(ctrl_rxring_name), "%s_ctrx_ring", pci_name); /* Set up the Rx queues */ for (i = 0; i < n_rxq; i++) { rxq = rte_zmalloc_socket("ethdev RX queue", @@ -502,7 +508,7 @@ nfp_flower_init_ctrl_vnic(struct nfp_net_hw *hw) * handle the maximum ring size is allocated in order to allow for * resizing in later calls to the queue setup function. */ - tz = rte_eth_dma_zone_reserve(eth_dev, "ctrl_rx_ring", i, + tz = rte_eth_dma_zone_reserve(eth_dev, ctrl_rxring_name, i, sizeof(struct nfp_net_rx_desc) * NFP_NET_MAX_RX_DESC, NFP_MEMZONE_ALIGN, numa_node); if (tz == NULL) { @@ -521,7 +527,7 @@ nfp_flower_init_ctrl_vnic(struct nfp_net_hw *hw) sizeof(*rxq->rxbufs) * CTRL_VNIC_NB_DESC, RTE_CACHE_LINE_SIZE, numa_node); if (rxq->rxbufs == NULL) { - rte_eth_dma_zone_free(eth_dev, "ctrl_rx_ring", i); + rte_eth_dma_zone_free(eth_dev, ctrl_rxring_name, i); rte_free(rxq); ret = -ENOMEM; goto rx_queue_setup_cleanup; @@ -539,6 +545,7 @@ nfp_flower_init_ctrl_vnic(struct nfp_net_hw *hw) nn_cfg_writeb(hw, NFP_NET_CFG_RXR_SZ(i), rte_log2_u32(CTRL_VNIC_NB_DESC)); } + snprintf(ctrl_txring_name, sizeof(ctrl_txring_name), "%s_cttx_ring", pci_name); /* Set up the Tx queues */ for (i = 0; i < n_txq; i++) { txq = rte_zmalloc_socket("ethdev TX queue", @@ -557,7 +564,7 @@ nfp_flower_init_ctrl_vnic(struct nfp_net_hw *hw) * handle the maximum ring size is allocated in order to allow for * resizing in later calls to the queue setup function. */ - tz = rte_eth_dma_zone_reserve(eth_dev, "ctrl_tx_ring", i, + tz = rte_eth_dma_zone_reserve(eth_dev, ctrl_txring_name, i, sizeof(struct nfp_net_nfd3_tx_desc) * NFP_NET_MAX_TX_DESC, NFP_MEMZONE_ALIGN, numa_node); if (tz == NULL) { @@ -584,7 +591,7 @@ nfp_flower_init_ctrl_vnic(struct nfp_net_hw *hw) sizeof(*txq->txbufs) * CTRL_VNIC_NB_DESC, RTE_CACHE_LINE_SIZE, numa_node); if (txq->txbufs == NULL) { - rte_eth_dma_zone_free(eth_dev, "ctrl_tx_ring", i); + rte_eth_dma_zone_free(eth_dev, ctrl_txring_name, i); rte_free(txq); ret = -ENOMEM; goto tx_queue_setup_cleanup; @@ -609,7 +616,7 @@ nfp_flower_init_ctrl_vnic(struct nfp_net_hw *hw) txq = eth_dev->data->tx_queues[i]; if (txq != NULL) { rte_free(txq->txbufs); - rte_eth_dma_zone_free(eth_dev, "ctrl_tx_ring", i); + rte_eth_dma_zone_free(eth_dev, ctrl_txring_name, i); rte_free(txq); } } @@ -618,7 +625,7 @@ nfp_flower_init_ctrl_vnic(struct nfp_net_hw *hw) rxq = eth_dev->data->rx_queues[i]; if (rxq != NULL) { rte_free(rxq->rxbufs); - rte_eth_dma_zone_free(eth_dev, "ctrl_rx_ring", i); + rte_eth_dma_zone_free(eth_dev, ctrl_rxring_name, i); rte_free(rxq); } } @@ -639,28 +646,35 @@ static void nfp_flower_cleanup_ctrl_vnic(struct nfp_net_hw *hw) { uint32_t i; + const char *pci_name; struct nfp_net_rxq *rxq; struct nfp_net_txq *txq; struct rte_eth_dev *eth_dev; struct nfp_app_fw_flower *app_fw_flower; + char ctrl_txring_name[RTE_MEMZONE_NAMESIZE]; + char ctrl_rxring_name[RTE_MEMZONE_NAMESIZE]; eth_dev = hw->eth_dev; app_fw_flower = NFP_PRIV_TO_APP_FW_FLOWER(hw->pf_dev->app_fw_priv); + pci_name = strchr(app_fw_flower->pf_hw->pf_dev->pci_dev->name, ':') + 1; + + snprintf(ctrl_txring_name, sizeof(ctrl_txring_name), "%s_cttx_ring", pci_name); for (i = 0; i < hw->max_tx_queues; i++) { txq = eth_dev->data->tx_queues[i]; if (txq != NULL) { rte_free(txq->txbufs); - rte_eth_dma_zone_free(eth_dev, "ctrl_tx_ring", i); + rte_eth_dma_zone_free(eth_dev, ctrl_txring_name, i); rte_free(txq); } } + snprintf(ctrl_rxring_name, sizeof(ctrl_rxring_name), "%s_ctrx_ring", pci_name); for (i = 0; i < hw->max_rx_queues; i++) { rxq = eth_dev->data->rx_queues[i]; if (rxq != NULL) { rte_free(rxq->rxbufs); - rte_eth_dma_zone_free(eth_dev, "ctrl_rx_ring", i); + rte_eth_dma_zone_free(eth_dev, ctrl_rxring_name, i); rte_free(rxq); } } -- 2.39.1