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 0AA2AA0A02; Thu, 20 Oct 2022 04:21:16 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id E824342C5D; Thu, 20 Oct 2022 04:21:05 +0200 (CEST) Received: from NAM04-MW2-obe.outbound.protection.outlook.com (mail-mw2nam04on2099.outbound.protection.outlook.com [40.107.101.99]) by mails.dpdk.org (Postfix) with ESMTP id CC54C42C56 for ; Thu, 20 Oct 2022 04:21:01 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=GzIyMiryU3mrwJkqy5brBQaJOFXpsU9TLVs4ZdEIhGm7T6PPN8vNEpuuvKuj4Qd+ZpoV1X+0zszfchYbpGeqKFuBIQ4bvR1UAtIYh6Diqu3+AoQtZbjw0/aCAepahAGb1u4IjYr3pku1n+er2A+j1WYpWBSimUkecGTsY6QSx0sD2vi1mCwURSI+n33MEPtf/+bFTzfFuA4IApLUyZeYzvbsDt+u3kmH0koAPT3Nb/3XAsluqJgMIDCnd5XDIH1F7gdtTcamsi+dqHmz+/MA0EeZq9SBQNDqCacFtWsZ7mN/akwJmsrgLh7+Q4zSOuSBPed3/8aeGTkzt8GhLxzwow== 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=RZuv/6Z/Kdj9UCeqLm2zGm5JKDpZU1rL+8rKteg8cFQ=; b=O/8gJBJJpQDSnpy1DCERyor3wYIKgYeRU+Qu3XNp9EIQjPYfc2sgEP6/hJZYONI95wFDx113b+YT6YN0YYkdxM8MDk57bX8Rs14qqVgKnpwL5LzjSADwhbLJl+i05pCrtAn/C0acz9e3Kr8ALiP+A0jT1jvQylTbY1t04VEGAOlqmi/rUzwHsQ9VlcJ2WsjVxXVDFqOEKRzYntC4W585ay3b15wqKNjLKIPOuHHqQjAbHXzUv5TOsxh8ti27MwJ68WJABVQIwd7AZ8Wzqs8Wma55G/YYYu5W42czA8trEhhxu48awyybEVVHbtbqge+3r/J+x140zRTLqaFmuhqRtg== 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=RZuv/6Z/Kdj9UCeqLm2zGm5JKDpZU1rL+8rKteg8cFQ=; b=jz09+LUi5h0LxJb4vu9k7s65AlcuV73h7WMfuaq2jXOpf8SPmefgHpNfygNYRZDlomntEOkg7oDgGecNAMi/3tG6kQ2IKNTkjp8RWQ6kpHHwZe1C1H1Z7Cq4sQZUr+49b2uTiwF8GFkjuGkhAQWPWjr0uQVkwvCynbw5L7UwYh0= 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 DM4PR13MB5906.namprd13.prod.outlook.com (2603:10b6:8:4c::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5746.16; Thu, 20 Oct 2022 02:21:00 +0000 Received: from SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::7c26:1a0b:2825:6f4b]) by SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::7c26:1a0b:2825:6f4b%4]) with mapi id 15.20.5723.014; Thu, 20 Oct 2022 02:21:00 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, niklas.soderlund@corigine.com, Chaoyong He Subject: [PATCH v5 03/25] net/nfp: add the stats process logic in ctrl VNIC service Date: Thu, 20 Oct 2022 10:19:29 +0800 Message-Id: <1666232391-29152-4-git-send-email-chaoyong.he@corigine.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1666232391-29152-1-git-send-email-chaoyong.he@corigine.com> References: <1666092434-10357-1-git-send-email-chaoyong.he@corigine.com> <1666232391-29152-1-git-send-email-chaoyong.he@corigine.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-ClientProxiedBy: SI2PR02CA0048.apcprd02.prod.outlook.com (2603:1096:4:196::23) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|DM4PR13MB5906:EE_ X-MS-Office365-Filtering-Correlation-Id: 2fb86e69-7a2f-4aad-bae1-08dab241bab0 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: TJIu+FB4nVk0XZ/PClEJkN5tb1E2zPQYcSKpQbk1AXUaI4qPP9J+2G36G8xVp4F7x0Uq0LnlVHsxUCGGsei3/lhxFe7Sjuipb/6+1onm35nau45lxsk4SWK8iajMqi2Qn5/csMstuqqI8xIMzxZ3MKfMRmLmvj6As4Dgwa34GZUWZoHxxGAAffHxFALkA+4UpaZ5VluqDFJuY+qZ/eKWGfWEwsKOs/kaHZ5R+U2V/mt8ZgLw3HwDX1j0nsBw3+5sz4BDQ9zSCJnrdBZdb+uQzBSadA94rpd5/D5dvQ2n+F0ipImu3xrU0bFW1+84ziu0iHG26sloDYaf2FkXRYpLsNtk0AAoSXNjL8LP2GZT5ZEpztACMHdQnMTKDphpY6blI7x6rA/Zo/X+UUGn1KBfCf8vyafuo3F9kW0ytSJTItDYSnDnEQgVRg7KXC0pp0F2lnM4zsTk3jGVJexy0Yu/6ItZFM4GXb12ZleiCIOyNfS1F8jU7qSY0YYCcA7BmQgge0n78LDNavDCZcPAkdBzdp7BU4FvBJwjHTGIhaMWLo64FZGgtQ7a47GV9F4a5OjXe+AziE3A55tQ2ybkLBoCkBpEXKiZoIywp9sPM/pYoMg5gxE1mAHfIBzDX5mVdRx8pViuKkfy3+18nUbKCJnxJkFimFVFwbQzNu8Jpy6EI3y/HFqTQjjTmq8WASxZKgyBkiSYKAAgdyxoufG0xglLvlIWYJnwCqIsbyf0tyFfIg3FN9XQP9X2bbyMfbhVxThtS9gI1Se3NegxNiv9c/BG3uXTCMS+qsRzqVYGMOmjU8hr6REMi+KBhXVohS5zXzO6 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)(136003)(376002)(39840400004)(346002)(396003)(366004)(451199015)(38100700002)(66899015)(478600001)(38350700002)(316002)(6916009)(2906002)(186003)(66476007)(52116002)(66556008)(6666004)(66946007)(107886003)(4326008)(6506007)(2616005)(41300700001)(5660300002)(36756003)(8676002)(6486002)(8936002)(26005)(66574015)(44832011)(86362001)(83380400001)(6512007); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?NW9TcVNhWTI3MS9KN2x3T1puRzE5bmE4blFEa3d0VEw0ZFo5c09RTW5TckdK?= =?utf-8?B?cHNmTllwSjlTSGFTQ1p4NEdBblZlOWVGSDdjR1lhWVU3RW5xMmFDS2toUVRK?= =?utf-8?B?NHBXODFlZ1Q5bDJZWjQrWHdjeGo3azdQb1FsTFhodEtMWmNFcGZvelVBKzV6?= =?utf-8?B?MFFpcXViR2U5WnkzSkFYN2kveFZ5cDVvRGZGNFdDMVFyakhLZjlGK2ZXbldw?= =?utf-8?B?dUZucGJLcmlPak1JMjd2amV1K3NHZWFmT2dhcFpBV1p6cVRhL2ZleE5aVUxn?= =?utf-8?B?UFFIVEtsejg0MkYxL2h4dFIva29xbldweTlCRmd3OExMWWc0M2pTeW1vRDZz?= =?utf-8?B?VzR0OUtZYWxCa3lDL21PcDZydit4NndpdmZqK3BRMTZwakczTExSVXh0L05J?= =?utf-8?B?Ym1ibm1FYkxERVV4b3hYd3I4R0p2U1NEKzdKVzkwTXY3aFdDRWk3WXBUZXRD?= =?utf-8?B?S09IbnB6TjZBUlhZc3FZc2d0UVVOaEMwQTVSVlBaeEFLdkdDbUoyeTh6NUtV?= =?utf-8?B?V3pBeDBPNFE4SGlzRG91aXl3bHJoaW9DWjhwZHJldHZmN2liRURjMGNBM3Fo?= =?utf-8?B?cXZRbWpCampmWG40NUxNK0ZSTXJ2SGdpMVozYUNpUWN4ZlRtRzlaYURNQnZJ?= =?utf-8?B?RXp0L0Y2ZnNEbmRDQU1OUHFuT3BxZlcxazhHT0RjUzZTenJIdWJsNm1LVDB6?= =?utf-8?B?YUhqSFJUd3RXSlZLb2tjYlBic1hDRkFNd2dET3M1dHhPdFRLU2YzZTVkZ0w3?= =?utf-8?B?NG16ZXh0Zkd6ajZwRlVZREpXWnZoMjVmd01mdVdtWkpMNi80L1JhTVovd2Nw?= =?utf-8?B?emZucXkrdTZpNDRzS211UDY4d3RhM1pQaGZORzhJdmcrZ0hFTC9oM3dlSVlr?= =?utf-8?B?MHJhS1hkcjFteDJucUNjOVl1aTlPLzBMdWc5OGZ5dFF4MXk0SmxTUVp3ZVJH?= =?utf-8?B?YmNOSHl6RTJXblBYbkM4VnhWOWEzT2pjYTQvdTFpWHY2S0tWaEpqRVo3UVpx?= =?utf-8?B?VjhjR0RUVjEyanZnUlkyMGdyRjhhb1ZXVHlFL05ObjY3NUYzNkJMY1FsN0FL?= =?utf-8?B?NDIxVWVJelpPSXNnQkdHWDFOZXIrL3dOeHJZdVlxbjZBYUYvZHJPRXhRQXZB?= =?utf-8?B?R01aWHJIQ1BNb2xmZUlDaU91d1JjQUEvbHR0L2JSczNzVWRhcjZQeTRXalhR?= =?utf-8?B?b2VoSDQxS255alZRNEF4eUEvL0NHUFp0VTZhRlJ0VGNCdnlHVTlISGdPdTM1?= =?utf-8?B?Y3J2UXV2ZWxtOVBwek1mVmg1d1I0alJVczRBdUpXYm5iVTQyWDVJSmxFQk1k?= =?utf-8?B?dGNSYmJreGQzZWQyRlpZY3pqQXYya0lUUm8yK1ZlYjRzd3lkbC9MSDJqLzFt?= =?utf-8?B?SjY5OEMzY2syMkRWT3djVXRLb2VrZzVoSi9tOEVicC91R2ZWaERSdDNHdkpZ?= =?utf-8?B?R0ZwTkNyVzllaHNJbTNianFqbzROTWl3L0pFOGlSQXU5M3E2Um1jZGlVcGRi?= =?utf-8?B?VG1vMEdiWGdaMThuTlpwUHhKRXpYSXRsSkRQMVdLd3RWN3ppQXEvZ01GUVdx?= =?utf-8?B?S2xPOVd1VS9HNHg2endrMTRNTHF6aUkxay9YNkt3d0hZQTZBYVVHdmMwNEtF?= =?utf-8?B?aTVUOUZtVDl0SGQ0dGYzazlwdmtSZ1FXR2IxSjFvVGNpN0pkS29JMlhBSVhK?= =?utf-8?B?SmVyb21NWWhiUkpRZStpRXR5V1hEb1JzcXVMalcrWCt0ak9LdzEvY0F3Misy?= =?utf-8?B?enFoMTVlS1VxL3NGdGhETS8xMlVmK2UwNzB4S1VyYng1VzR3dVl1THgrbS83?= =?utf-8?B?elVFUEZoUmRPeXNuSmxuVnhLSVRvaUdzVVEySGZHbGEzOWZyZzEvKy9QKzNK?= =?utf-8?B?ME0vQXppektsNld3aWYvcFBmTkNtNm1FWTVJU0FJbGRGbnRqZGp2c2FiTk5y?= =?utf-8?B?YTB5Lzh5eVYxald3Rk9rR2thdDFvajFMR1N2UFYvbWRtazlQcW05VGp5dThn?= =?utf-8?B?cWQzSFZyeXB1K0E4VkhCVmptMEpCTE04RFRnTitNZUk1Z3MzV1duT1JUd1Bl?= =?utf-8?B?S1BqdVdzTzBBSGxvVlZ4UHoxMEhGSjVhY01kMm1MSHRvdmFTSVpsNW5RcXB0?= =?utf-8?B?aGFIZE1BRHJ2N29LaWh6MGdHbXlLUExtNlZTOVFqSVB4OHFycW1vNFhvME5r?= =?utf-8?B?Wnc9PQ==?= X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2fb86e69-7a2f-4aad-bae1-08dab241bab0 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Oct 2022 02:21:00.2358 (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: O1wyu0VTSuAQ/CC/456envq5BcIlLaOjrvAQvNI8IskgE31BUdkhdWozKMqQWPV6E7Tgx7mZGtCEBcmUxLElCmSeLcF2O4COS0a1HcxJsWs= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR13MB5906 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_cmsg.h | 25 +++++++++++ drivers/net/nfp/flower/nfp_flower_ctrl.c | 73 ++++++++++++++++++++++++++++++-- 2 files changed, 94 insertions(+), 4 deletions(-) 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); } } } -- 1.8.3.1