From patchwork Fri Oct 7 02:18:23 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 117506 X-Patchwork-Delegate: ferruh.yigit@amd.com 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 A78E2A0093; Fri, 7 Oct 2022 04:19:18 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 8FDE54113D; Fri, 7 Oct 2022 04:19:14 +0200 (CEST) Received: from NAM11-CO1-obe.outbound.protection.outlook.com (mail-co1nam11on2095.outbound.protection.outlook.com [40.107.220.95]) by mails.dpdk.org (Postfix) with ESMTP id 0460140042 for ; Fri, 7 Oct 2022 04:19:13 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=FHQMWwP+5Ihwzi79+GHqaMVbiqxB0Syy+5j0F6DPdXcFweMc82XNpFm/vCjaqPiFGzfdAeKTkpTPJGYFHHWRDi9zldTFAKo8kVoEKq9/b0/ZUyseaWZsBsGsIZIwoRXFPpPP1i/YBugLAOrh4349Qmf0tUlWNn4sjPks4aqJ/4KiUqMBrAWA5QllX7jpK95Ja/EsNIvQgCctN0hMw/JJw04I0JYjmI+7N83hy5NkXGp/x8k6UUaaYiS/aCNIQnC31zjIEvXMJvX0qO9j3jpQDkdT6vKwW0tijI4WCXFxpZwh4spla2EDav+KUXR5VM/tRIJeleZ5sVjBpg22+7PacA== 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=3o0nJvqiKXah5AQmS+ARFr3R1UJlNOp53PMEGKH5WYE=; b=hMJ5nr5MvEIl6b0slPQBriGXXwuGvlDsM7anYa/tWghOzyQ8Df0QPdQLjtaVd/EJe0PRXxc8qQmZfjZ1Xe1X8Ip358pwfD5CU1n1BqOJkM8reIMh4SR79uxuO7hWDx79Xul1MnZxYiltHOPb4HrjuL75Zr03XyxAkQF5lEBhqFEgGssjAixFhSQshubOcLDZYJHlzB1pQ+wwfo6JRBR92XJVAdH2oY1OkxX4+d71QpSlrI9hZaRvslP1Bbk/T0zpjcoPz2LM+VJO9C64gK6AwMoEq7aHZR7tuyTdxZ0UfhX9qtDQoNewvENeuJi9Tf2sQEmwhJCffklFBNQ2YXc7vw== 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=3o0nJvqiKXah5AQmS+ARFr3R1UJlNOp53PMEGKH5WYE=; b=Gkx2X/u8cQQoobL169LcdjNOxQqRr4HCwIB2YXvZRvIJ+pCMAo3siFXRw0IwCyjmnmTdIXt6+q6V5gSqJjl9CrRxyzT70zLYaphk+wv5h1h6dMHOMEC9ahkpcHZSt1V0X6Z1pZ9JRR8OMkHTX4tYxXB08ivBn3JT+TQSkLbrWlM= 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 SA1PR13MB5465.namprd13.prod.outlook.com (2603:10b6:806:230::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5709.10; Fri, 7 Oct 2022 02:19:10 +0000 Received: from SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::a192:2720:1ef8:2773]) by SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::a192:2720:1ef8:2773%4]) with mapi id 15.20.5723.010; Fri, 7 Oct 2022 02:19:10 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, niklas.soderlund@corigine.com, Chaoyong He Subject: [PATCH 01/24] net/nfp: add the stats process logic in ctrl VNIC service Date: Fri, 7 Oct 2022 10:18:23 +0800 Message-Id: <1665109126-16201-2-git-send-email-chaoyong.he@corigine.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1665109126-16201-1-git-send-email-chaoyong.he@corigine.com> References: <1665109126-16201-1-git-send-email-chaoyong.he@corigine.com> X-ClientProxiedBy: SG2P153CA0043.APCP153.PROD.OUTLOOK.COM (2603:1096:4:c6::12) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|SA1PR13MB5465:EE_ X-MS-Office365-Filtering-Correlation-Id: fab7aff7-9f8d-48a0-d729-08daa80a51fa X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: vm2sz18h8VPcB1G3xem1lj5V63e3v5djnbNH0/nER0FH9hB4x1w8NSih9kPDgYOSfLtXKQlhNKgX+gTC1Apq7jx9W5f7vjtUv6rRXlS012f2rN+jjspC4CySIpEXhF9Xpg+kUybDFJWUplkc2U4hbA0BLecPdsN6MXvx9X2aPWMfMzH6zsC3XcTXyA55Lm4g3uAYEZmqjqnq3HkHrkAtgQ7LiQvEZb0oksvaFPAigJOHvjHbAuSt1hP6ZBKJGmTHPY9mRegEW1Nqw+Eb0b2ZRVpcda0Jg+4qQWnbehDMN7pxU4onQgrQu8992jUFQj4g6GZamrS3xMN2cNpnjF6KXqayXThgXWvicNHAEaTwuuA+4vVf+fDU0Swbtj1/ua/1lODFrj9Ltijc6YT12WayWrxet7NGX+iiuErGEyHFm5sCJnmYClAR9iDHiKfIQx6RnD9wECJtJS8wervigHYX9gDhfTdRR05EJr4ix/JupiY6E0cuQfMZ/ZDIXiNVFUOOdWTfO4d2/mstgF5VF5p4of8huEj11HC1XuxTb4WTod4gNjyRFUiSwiRuEwrC8zVT8GpT2Pb5124mQHQxjBRdUGaxtcf6TNUj9DWWFXcGgMVl9lgg97Dg3yixztEOQLgT0sfkMnMUsrG1DU6VZt31B5w+lZ97DyoVuBaAOV/1MPgXoE5wxXotQA2CF5LaSG8Bl7SmkVgLQWc7RspLoEdlr7a2DZzQ7IwDkQTNzIxmFIpxB3fBCcIh/vw4Aj3f2g/9eyZ2KC9p68poOtJJT5gJDQ== 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:(13230022)(4636009)(39830400003)(366004)(136003)(346002)(376002)(396003)(451199015)(36756003)(66899015)(86362001)(66946007)(44832011)(38350700002)(38100700002)(8936002)(6486002)(6916009)(66574015)(83380400001)(52116002)(478600001)(41300700001)(6512007)(4326008)(107886003)(26005)(2616005)(6506007)(316002)(6666004)(5660300002)(66476007)(66556008)(2906002)(186003)(8676002); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?CX/S7i8VlTdfgiNNO+6qgJZ69qRV?= =?utf-8?q?MRly3mI41YyQjBe6ZtmzKBJJM+kMaK/hdwjQp6GC2Z4gm3c6+vwOS5RY4CqqN+BqT?= =?utf-8?q?1pqJ4BP25uqeLjlSTzWfwPwuSMGR23VPPBf6wu0Nyxv6jw2GCG423+a8SPoqrq8uH?= =?utf-8?q?MbUlVX0z9qdEYws9I3AYXT3Z2p2S353/5OtOUw3sPeAnU/nwF0ANKeBqy55y1W+xK?= =?utf-8?q?/BPOk3xddAcYRj6GtgrHl/1vhX8AYhNfPYSXxojVer/kTbKM0cJ4bRxx007y6HZ1r?= =?utf-8?q?z2YVozjNZTXj1QjlNzHqQT8mHhGuDRnoBoFkULxc1L1dyZD6UOdSrBsP5kxasmhNb?= =?utf-8?q?Y8u+yWJBdOdMuxAe45MxAZEV1JXFSHkQvZMU+qfq46TZ2cCANMu3qqMkKIpJHIjwj?= =?utf-8?q?+zBnHv4yPJFBgRLnKV9mEPToIrn/awlS/RoDTI7mYWuTBZIzMuim48Bk9q/LLTZMF?= =?utf-8?q?2DC+0yRfc/7Hh9Op1yslXH7bZI/aVp8+cvusPKYy7Y+nMAjZQrgFTOcsR4oPipExc?= =?utf-8?q?rFd+dNkVC7US1S3uTcr7vZsO2CQM7wdq+x/8UtLtpa1QXLseJO2JnTBFoCgivUZo5?= =?utf-8?q?I7ElNJiEJQBEk3OYxane8MGJs0ShjJoPupuuRwckHSqAsqy5SxXsD+crZNuszQEi5?= =?utf-8?q?BM+dIzRdZhlU7JsZQe1tDp4X/WleTOlxyZCgDRKa3P2PEKR8mqv/Kz1aviTQj8JK6?= =?utf-8?q?7ajIqFauVjwe7ZY4P2adB4jOp1B2YcXeorZSWqLcPh21lbF3fKEc+o08Z3TAi1yrT?= =?utf-8?q?Ye4wcLWFvMreO4ewrQBbeWKGhVmxNw35fbL5DAjTaDbShfrlXvWTK1xhn/3CfJNew?= =?utf-8?q?E7YQFU/cxTm60r9wuGNJooVVznZ0tl1ZW4zTXvtvLmwGN+U1vi1yd7f279cvAuUS4?= =?utf-8?q?jUmriOFzDkFIRwZZAwrOjqo5K1Z6KL62siIFIJSNhh0+cmB41FjBmSmUvnZWw5iM7?= =?utf-8?q?9I6D2Ke9h1PjnWBBMh8L7JZcuxwORJ2wPeTVWa78O0g4O1YkolouZlbON8bkHYExw?= =?utf-8?q?heD9LOri8vE8QQy3CPD162ShGGfU95hLbU3A9ryjhiTS3EBVnxRD5OGD49HJTIYDi?= =?utf-8?q?NHfRHq+H4B+xmDQY5fP3p3jv8/Nj6HuM1J1fvHAkTWV/EmE+xh3Veg8+vEZUl3FyV?= =?utf-8?q?IY63z/a07lW71gwu6TwraTq0FOhXGT4KE4eYeuCoRGeCqKtGIKb7d2E+HhdeLmWZj?= =?utf-8?q?cYwYet4YVO1jQ2u935me6/SZcO1vPZAQpWn9LuDxPp8pCvYR/EkicKK0JXM+BvHcE?= =?utf-8?q?FGeoipSm9fZmRBxG717SfkJ8Tvq0By+tKTuhCNQxVlVqb2vm9kTyv1GwpAc7WFXuE?= =?utf-8?q?hGYMxakeZf+OwY52V6XA38DLRn8WKeIxEXpXwco2ityzr5Mm/0FcgdELrz2nXOjSB?= =?utf-8?q?DxmY2A921YmGvDsIlWsT3v/HmwF8TC+GtN/lqGQidqCCkFkdenreTMCesErcMZ4M+?= =?utf-8?q?kKilKs6NhyxZ9WpQ/MjipWzszGnOqm+7W4UJJNd05KxGOXX5h+7khbLG6Ak1dIfu1?= =?utf-8?q?ZTv6V7d4Lw2BDEQpnYNI/4WQFNuT7W2IQg=3D=3D?= X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: fab7aff7-9f8d-48a0-d729-08daa80a51fa X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Oct 2022 02:19:10.8316 (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: PoPnKe/CXGdQMpnu4dzAm9aBPAi4KMvtVTVUTQEiOlV1qkN66BayEqz42Lca037q6r9eOZjPRPjAyFiK9jHZsd1EOfXuG9dq2PwR6693HbM= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR13MB5465 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 the flow stats process logic in the ctrl VNIC service. The flower firmware pass the flow stats to nfp driver through control message, we store them in the flow_priv structure. Signed-off-by: Chaoyong He Reviewed-by: Niklas Söderlund --- drivers/net/nfp/flower/nfp_flower.h | 2 + drivers/net/nfp/flower/nfp_flower_cmsg.h | 25 +++++++++++ drivers/net/nfp/flower/nfp_flower_ctrl.c | 73 ++++++++++++++++++++++++++++++-- drivers/net/nfp/nfp_flow.h | 20 +++++++++ 4 files changed, 116 insertions(+), 4 deletions(-) create mode 100644 drivers/net/nfp/nfp_flow.h diff --git a/drivers/net/nfp/flower/nfp_flower.h b/drivers/net/nfp/flower/nfp_flower.h index 48f597a..b90391c 100644 --- a/drivers/net/nfp/flower/nfp_flower.h +++ b/drivers/net/nfp/flower/nfp_flower.h @@ -51,6 +51,8 @@ struct nfp_app_fw_flower { /* PF representor */ struct nfp_flower_representor *pf_repr; + + struct nfp_flow_priv *flow_priv; }; int nfp_init_app_fw_flower(struct nfp_pf_dev *pf_dev); diff --git a/drivers/net/nfp/flower/nfp_flower_cmsg.h b/drivers/net/nfp/flower/nfp_flower_cmsg.h index 0bf8fc8..5c28363 100644 --- a/drivers/net/nfp/flower/nfp_flower_cmsg.h +++ b/drivers/net/nfp/flower/nfp_flower_cmsg.h @@ -129,6 +129,31 @@ struct nfp_flower_cmsg_port_mod { rte_be16_t mtu; }; +/* + * NFP_FLOWER_CMSG_TYPE_FLOW_STATS + * Bit 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 + * -----\ 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 + * Word +---------------+-----------------------------------------------+ + * 0 | Reserved | Host Context | + * +---------------+-----------------------------------------------+ + * 1 | Packet Count | + * +---------------------------------------------------------------+ + * 2 | Byte Count | + * +---------------------------------------------------------------+ + * 2 | Byte Count | + * +---------------------------------------------------------------+ + * 3 | Host Cookie | + * +---------------------------------------------------------------+ + * 4 | Host Cookie | + * +---------------------------------------------------------------+ + */ +struct nfp_flower_stats_frame { + rte_be32_t stats_con_id; + rte_be32_t pkt_count; + rte_be64_t byte_count; + rte_be64_t stats_cookie; +}; + enum nfp_flower_cmsg_port_type { NFP_FLOWER_CMSG_PORT_TYPE_UNSPEC, NFP_FLOWER_CMSG_PORT_TYPE_PHYS_PORT, diff --git a/drivers/net/nfp/flower/nfp_flower_ctrl.c b/drivers/net/nfp/flower/nfp_flower_ctrl.c index df908ef..bb9efe1 100644 --- a/drivers/net/nfp/flower/nfp_flower_ctrl.c +++ b/drivers/net/nfp/flower/nfp_flower_ctrl.c @@ -10,8 +10,10 @@ #include "../nfp_logs.h" #include "../nfp_ctrl.h" #include "../nfp_rxtx.h" +#include "nfp_flow.h" #include "nfp_flower.h" #include "nfp_flower_ctrl.h" +#include "nfp_flower_cmsg.h" #define MAX_PKT_BURST 32 @@ -222,10 +224,74 @@ return cnt; } +static void +nfp_flower_cmsg_rx_stats(struct nfp_flow_priv *flow_priv, + struct rte_mbuf *mbuf) +{ + char *msg; + uint16_t i; + uint16_t count; + uint16_t msg_len; + uint32_t ctx_id; + struct nfp_flower_stats_frame *stats; + + msg = rte_pktmbuf_mtod(mbuf, char *) + NFP_FLOWER_CMSG_HLEN; + msg_len = mbuf->data_len - NFP_FLOWER_CMSG_HLEN; + count = msg_len / sizeof(struct nfp_flower_stats_frame); + + rte_spinlock_lock(&flow_priv->stats_lock); + for (i = 0; i < count; i++) { + stats = (struct nfp_flower_stats_frame *)msg + i; + ctx_id = rte_be_to_cpu_32(stats->stats_con_id); + flow_priv->stats[ctx_id].pkts += rte_be_to_cpu_32(stats->pkt_count); + flow_priv->stats[ctx_id].bytes += rte_be_to_cpu_64(stats->byte_count); + } + rte_spinlock_unlock(&flow_priv->stats_lock); +} + +static void +nfp_flower_cmsg_rx(struct nfp_flow_priv *flow_priv, + struct rte_mbuf **pkts_burst, + uint16_t count) +{ + uint16_t i; + char *meta; + uint32_t meta_type; + uint32_t meta_info; + struct nfp_flower_cmsg_hdr *cmsg_hdr; + + for (i = 0; i < count; i++) { + meta = rte_pktmbuf_mtod(pkts_burst[i], char *); + + /* Free the unsupported ctrl packet */ + meta_type = rte_be_to_cpu_32(*(uint32_t *)(meta - 8)); + meta_info = rte_be_to_cpu_32(*(uint32_t *)(meta - 4)); + if (meta_type != NFP_NET_META_PORTID || + meta_info != NFP_META_PORT_ID_CTRL) { + PMD_DRV_LOG(ERR, "Incorrect metadata for ctrl packet!"); + rte_pktmbuf_free(pkts_burst[i]); + continue; + } + + cmsg_hdr = (struct nfp_flower_cmsg_hdr *)meta; + if (unlikely(cmsg_hdr->version != NFP_FLOWER_CMSG_VER1)) { + PMD_DRV_LOG(ERR, "Incorrect repr control version!"); + rte_pktmbuf_free(pkts_burst[i]); + continue; + } + + if (cmsg_hdr->type == NFP_FLOWER_CMSG_TYPE_FLOW_STATS) { + /* We need to deal with stats updates from HW asap */ + nfp_flower_cmsg_rx_stats(flow_priv, pkts_burst[i]); + } + + rte_pktmbuf_free(pkts_burst[i]); + } +} + void nfp_flower_ctrl_vnic_poll(struct nfp_app_fw_flower *app_fw_flower) { - uint16_t i; uint16_t count; struct nfp_net_rxq *rxq; struct nfp_net_hw *ctrl_hw; @@ -242,9 +308,8 @@ count = nfp_flower_ctrl_vnic_recv(rxq, pkts_burst, MAX_PKT_BURST); if (count != 0) { app_fw_flower->ctrl_vnic_rx_count += count; - /* Process cmsgs here, only free for now */ - for (i = 0; i < count; i++) - rte_pktmbuf_free(pkts_burst[i]); + /* Process cmsgs here */ + nfp_flower_cmsg_rx(app_fw_flower->flow_priv, pkts_burst, count); } } } diff --git a/drivers/net/nfp/nfp_flow.h b/drivers/net/nfp/nfp_flow.h new file mode 100644 index 0000000..971ba69 --- /dev/null +++ b/drivers/net/nfp/nfp_flow.h @@ -0,0 +1,20 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright (c) 2022 Corigine, Inc. + * All rights reserved. + */ + +#ifndef _NFP_FLOW_H_ +#define _NFP_FLOW_H_ + +struct nfp_fl_stats { + uint64_t pkts; + uint64_t bytes; +}; + +struct nfp_flow_priv { + /* flow stats */ + struct nfp_fl_stats *stats; /**< Store stats of flow. */ + rte_spinlock_t stats_lock; /** < Lock the update of 'stats' field. */ +}; + +#endif /* _NFP_FLOW_H_ */