From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by smtp.lore.kernel.org (Postfix) with ESMTP id 7CE05C32771 for ; Mon, 26 Sep 2022 07:02:13 +0000 (UTC) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id CF50042BA6; Mon, 26 Sep 2022 09:00:48 +0200 (CEST) Received: from NAM12-MW2-obe.outbound.protection.outlook.com (mail-mw2nam12on2120.outbound.protection.outlook.com [40.107.244.120]) by mails.dpdk.org (Postfix) with ESMTP id 42CE9427EC for ; Mon, 26 Sep 2022 09:00:47 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=KtkBgGvgSZlJGSKcqmLwrmo5UDr4PZWYL1qIcLAvfB4gzJLPG66EWeh2pPpNVsrucivni2C5kXIhZ9EhPfEuOSFkZN35BI1MZ1dvSwNIgi7k3Ywcgf/oBMhF4uQTvi1AO2oEtgBHYZ6Cx9ZkMm17FAWi4X2cdCXxRIEhWGaXb3wLwndIM2KM6BTw8oOZD8zFZAAgT0abMBMgzBwRRMyfbggZayKGqJW3wcF/sBNMJQ1ZXZF6pjbWdyjkRqw2BP4FGraa3fjfo8DFvbBPRS4pC9zHYWwk0GjyeJZaBIANbqR/mp1P+D3/cJY6N8j4FDt0IcOEyy1MjeUyggy5FxLJcg== 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=TYo1ps100S5z4jqu7CL7/ub9AInvZ68bHuZZmd4m4kU=; b=aAjEOm1pAzxM6VTUV6SkFIiXJAPb6JPlZIsqHuRxYyPuDhZ4FWhjBT32R7ql1gU6JNyz3hKCs+0k/1NXqfsKl/Dnuw4qFzh48kUso+8t5TE54ahmoK/Rr1QpT75KegzfXj06wIxrBbVXNSpzW2Fdx4Ix/q9YXgOQthK3WknI3wjlP9lbZPTZ05axv/d/W5kDDbzIcdpA1YIiSAnn2VQcKXfrcuu4+ejafckSRlyjdRXeESwQQrhNLXNev4/x48HRMyXm+WP6UEdIpTXCaBbrw0Avr/YUBXBMHTbvpHrMESs9YS1O0B4ct3JSgxuYTarPX5ZhqTqH3nt/GXBsQLgFKg== 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=TYo1ps100S5z4jqu7CL7/ub9AInvZ68bHuZZmd4m4kU=; b=Kl8SKjKn1NBCthS+Iskw6OHVZ5PUF95C3hZO2IYLASEoN4qUt+3VV4ZJQpsKAByHwrh4D0YzffJtvgT+D7cry0VNz6RUyB5CPiCTo757YThBNjrgd3rImWW/gAu/5pcH7PruM21weLAouD838oRUU7mhtN6fereFVnaIDl3wkcg= 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 SA1PR13MB4893.namprd13.prod.outlook.com (2603:10b6:806:18a::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.14; Mon, 26 Sep 2022 07:00:45 +0000 Received: from SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::779:2722:a8e5:503b]) by SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::779:2722:a8e5:503b%7]) with mapi id 15.20.5676.014; Mon, 26 Sep 2022 07:00:45 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, niklas.soderlund@corigine.com, Chaoyong He Subject: [PATCH v10 13/13] net/nfp: add the representor port rxtx logic Date: Mon, 26 Sep 2022 14:59:57 +0800 Message-Id: <1664175597-37248-14-git-send-email-chaoyong.he@corigine.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1664175597-37248-1-git-send-email-chaoyong.he@corigine.com> References: <1664175597-37248-1-git-send-email-chaoyong.he@corigine.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-ClientProxiedBy: SG2P153CA0005.APCP153.PROD.OUTLOOK.COM (2603:1096::15) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|SA1PR13MB4893:EE_ X-MS-Office365-Filtering-Correlation-Id: 89a04c77-041a-4b86-9f77-08da9f8cd576 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: yRR4ipNGlN9o8jf/F9CihO5kn8LItaX8W6u0beuV/IgxgMKO0RIYet9rGCyPl5qYz/tdakrMKxjTm1G6xrQhFrEOmkviwdu9mU5YeBAh3Ewwmy5PZDFYBu1jNHkhB0WpKd6ENLIEKd1VdgJmoei4DynE/PVb8LSUAYkrUXJ/O4fZhdM2iUtt2zdJZS4h3ayxrysz/7FiDoLB3ZYiNM/NOwYYrAis2Had5HFxq2NNYJufb0Eho34B5ezRG8jkdm+qKi5or14dbTdn39+//BAb43G1SPGEyAlpetmMFXH+uRamlqvPLhVyx2rZ6Nd0KN19sGLv3gl8aOjlGEwFIWCHIUGsLyqtEdRITemIIwx52TBzttL+HECNIiFpvVHvg6iZ8GlaxjnKsHzMLgeGehWZGnWJOUQ1i5ut+fRdz8hShZvbTMlvthXfevN4d1MRpe3C8fMJRbJ/RaGNPGiQWEsFaJdsNFimvWuevDy5BF3AmYNifPqkkIxs5TD7znjDqY0PZASHZJSvOqDO+YmLUfd8qG403bONXE7t2YQ+m1b3o3/oylLILSJviZe8pi7PDkkJjRwYqmNwtWj+tlBvCFgiduEKX8AbJGVE6Gz3jlDVUBwa4LnSoGp3yLhbbILvNshRjifbnzEfs4Xx4vagSfvXMhEhKQu0Wihh4kWEbmZWvTYr0+dgnNg67W0SNVWB9TaX4hWGEX6u92x92zcHbg7zQF1UfuvRzWNiZvKViRfZ7cyJZePP39DoDtyfV1llkgvmlM/rlb1sE9EOlFgaIosakQ== 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)(366004)(396003)(39830400003)(136003)(376002)(346002)(451199015)(36756003)(38100700002)(38350700002)(2906002)(86362001)(44832011)(66946007)(8936002)(66556008)(66476007)(5660300002)(8676002)(4326008)(186003)(6512007)(6916009)(316002)(52116002)(6666004)(2616005)(26005)(6506007)(478600001)(41300700001)(107886003)(6486002); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?MlJ1Tml2d2lXTCsyTU5JdzlrUldrVm96bDg1cFN0TU45MXRmbCsxOE5WWkI2?= =?utf-8?B?NWJXdGJDUzVYb09HcHZjdGhuOGR5QjB5eHU2WXJVcyt4NFZpTHM3bElINlpT?= =?utf-8?B?UEJXb1dUUk1nQUJUNlBxNk5hMXlTSjJocTdzSkdaN1JyZWJmbXJpS01jUFR1?= =?utf-8?B?ZjVWV1dvL1c5R2EycGNpYW5ueFdhb3ErK2NJM1krVmxkQzRtZTExOEkwMDJH?= =?utf-8?B?M1lGa2hONzMrTUY0bGlIcTBjMTlEUTJQYVBQdVFHWTFEaFBLOFgxUDJSOG1T?= =?utf-8?B?Q3JRZTVDbVBJNi9HaGRiZ2JSREI0SzEzd3FoVnN5NTR3TDBPQWxYTkFza0lW?= =?utf-8?B?cW45eFh2ZDh0ODFGa2pYaVdRLzFBbFFVa3FqaEt4UEpuczQza05KTXM3dWgy?= =?utf-8?B?NXBDSE5xbExXSk5qK2NuQ1ZrbmJqYVo5d0V2czNmc3V6M0ZkN2pTM21zN2F1?= =?utf-8?B?WmhUUHJ5d1l0aEtJUkRmUzU4cy9ZZHA0NGR3SC9xb3ptRHJmWlZaRUNkMGlp?= =?utf-8?B?QXNZc2RjRlM4cGszdUs4V0NORWlyYldUejJVR001YTBNN2hZWG4xQlh0UXZW?= =?utf-8?B?U2RZWWF1SkEvV0pmYVRhNW5rRFBrWjBzWHl6Rk5rWXBPZFh5b3hwQTFoUFY1?= =?utf-8?B?MzRUNVRHaUFDU0NXWmRhVUEwSkI5TDJ2L0xmZ2g0QU1adjBhblVucENIbzll?= =?utf-8?B?VWl6bXpKYXdnL0FKdDFxQmdMVFNaVXBad0lvWE5NVlhRUWlyZmRNM0ZqS0Vt?= =?utf-8?B?Uk9kMW55MnlWT2hNeE4vVmxrSCs3Y3B0QkkxNlRrUW5iT1RVZ2toaFllUUxy?= =?utf-8?B?UWVLMVFxRzR5RWIxcHBXcU54Q0JWZTFTb29mVy9OSXNMTGxnMytQMi9OVHdP?= =?utf-8?B?MmZ1NGxDQURRYkttek1xbUxSRzhWNHh0Z3R1a1BWOGFUNEVDSTgrNk1zUERS?= =?utf-8?B?elFmTU5JSnY3M09SbmdFWUhRcllRVzRGTWZVWWh2YVpsQXJjbkE0L0RtL3pl?= =?utf-8?B?eFJFQTVsY3ROQjRDTnVMdDdBdTVKNmpuU0R5Z3ZWWjc2cmZJNVBoWXFGbjkw?= =?utf-8?B?czIyTVJrWmI0T045bjI3OXh3RCs0UFhiVytTR0JNM3BGcWFXRVhkSW41Zk5p?= =?utf-8?B?djBVQnVPRy8zaHp4Sk5BcElKUEp4TlBEWFgrWS8rTkE1UU1CMWdFcDdMMXQ3?= =?utf-8?B?Z2tmZER1bEJFSGUvM1Vtakx3TmxYbE1pYTBSSE1zTS94cUV1eEVYYXNkZnAz?= =?utf-8?B?WjJPNis5UHVLSHUzMHVydHB6WHR1Q2hJSmRzdVNCelNGSE9xY05WVWJZbjB2?= =?utf-8?B?elMrMTNoVGpSNWY1eEY5c0pnR1FpL1U1QURnUTdaOFpkV1l4bFFDdGx0b1hh?= =?utf-8?B?cDdsRVJ0YjJXQ1R4b0FEc1NmNHhWVzN0bjRsSU1nSzlNNDlGNHFjK3RiY0lh?= =?utf-8?B?d2dyRlRjdFpNcFY4emN5QTJHOE8zeTBKUm1saVExaVRWbkNuVDdMc2c5OHAr?= =?utf-8?B?SHdmckRxY1hDNzI2QjVGVm1sY05sM0JIM3plWWpRd2JVUmQrYVJsN2sxem1o?= =?utf-8?B?c3lmay9BVTNqY2RKSmpoRklmRndFK1lGSVdtSWorUzc1NllSVDJodWc0c0xY?= =?utf-8?B?ZXVMOUNPcVIvWTB4d2pRRDdrVTI5L1JxaEdxazhJS2NxNWtsNE90Tk9jVG9o?= =?utf-8?B?Skdra3hNTkpaNzlqSDUrRjJQbjIwMGgxeGhzQ3lxYUVWQytSVk9mcWVRdEhS?= =?utf-8?B?VnZHdGFSR1J0dzRCdEFHTTFJKzVMeGhjTGpwMHk1YjBNcThKNVVuZ2xpU2xv?= =?utf-8?B?ZDRETnc2UUF4T08zR3AvVWEvQ3g0RTNUWEt3bDdIaXI3anI3Z0U3NE8zK1l5?= =?utf-8?B?bzRjSTd4SGp2ZHhCTmpSemtqZ3RqcmgzV0NTczV2T21ONERneWo5bHcxS2lz?= =?utf-8?B?QkxCditmMDFnQ1lwaEw4clZCbDkvUXp6ZFZPcW05TytJN1lOVkJ6NmlpMkYx?= =?utf-8?B?Z3Rua1d1Qk9nY0w1NWRrT1J5d1pEbDhPS2RpT3FFV3UrdWVKd3dvelpGMnFS?= =?utf-8?B?Y2RBQXp1dTJ6b3lBWXVmMnV0UmhmQTVTUTlvekl4ZWVPcENVQnJxMk5scHoz?= =?utf-8?B?M3FGc1gvc2p6cVlTK2NlRFo0WXZpbU9Nd0x5MUx1OE42cGVxUXlYYjNEL1BC?= =?utf-8?B?dUE9PQ==?= X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 89a04c77-041a-4b86-9f77-08da9f8cd576 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Sep 2022 07:00:45.4580 (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: 7lfyS8HwXBDfFgq1yw3WrfE7WvmrOJB8pDkPHz/jzAHjYpk1/U/AKGkMGqy1uPJCdi481Fh+C5SScGR20/SfV2qCgtIBad6fT9FfAkzSwxw= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR13MB4893 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 For the Rx logic, the representor port decap packet from the corresponding ring. For the Tx logic, the representor port prepend the metadata into packet, and send to firmware through the queue 0 of pf vNIC. Signed-off-by: Chaoyong He Reviewed-by: Niklas Söderlund --- drivers/net/nfp/flower/nfp_flower_representor.c | 90 +++++++++++++++++++++++++ 1 file changed, 90 insertions(+) diff --git a/drivers/net/nfp/flower/nfp_flower_representor.c b/drivers/net/nfp/flower/nfp_flower_representor.c index b47b0a5..0e60f50 100644 --- a/drivers/net/nfp/flower/nfp_flower_representor.c +++ b/drivers/net/nfp/flower/nfp_flower_representor.c @@ -464,6 +464,92 @@ return 0; } +static uint16_t +nfp_flower_repr_rx_burst(void *rx_queue, + struct rte_mbuf **rx_pkts, + uint16_t nb_pkts) +{ + unsigned int available = 0; + unsigned int total_dequeue; + struct nfp_net_rxq *rxq; + struct rte_eth_dev *dev; + struct nfp_flower_representor *repr; + + rxq = rx_queue; + if (unlikely(rxq == NULL)) { + PMD_RX_LOG(ERR, "RX Bad queue"); + return 0; + } + + dev = &rte_eth_devices[rxq->port_id]; + repr = dev->data->dev_private; + if (unlikely(repr->ring == NULL)) { + PMD_RX_LOG(ERR, "representor %s has no ring configured!", + repr->name); + return 0; + } + + total_dequeue = rte_ring_dequeue_burst(repr->ring, (void *)rx_pkts, + nb_pkts, &available); + if (total_dequeue != 0) { + PMD_RX_LOG(DEBUG, "Representor Rx burst for %s, port_id: 0x%x, " + "received: %u, available: %u", repr->name, + repr->port_id, total_dequeue, available); + + repr->repr_stats.ipackets += total_dequeue; + } + + return total_dequeue; +} + +static uint16_t +nfp_flower_repr_tx_burst(void *tx_queue, + struct rte_mbuf **tx_pkts, + uint16_t nb_pkts) +{ + uint16_t i; + uint16_t sent; + char *meta_offset; + void *pf_tx_queue; + struct nfp_net_txq *txq; + struct nfp_net_hw *pf_hw; + struct rte_eth_dev *dev; + struct rte_eth_dev *repr_dev; + struct nfp_flower_representor *repr; + + txq = tx_queue; + if (unlikely(txq == NULL)) { + PMD_TX_LOG(ERR, "TX Bad queue"); + return 0; + } + + /* Grab a handle to the representor struct */ + repr_dev = &rte_eth_devices[txq->port_id]; + repr = repr_dev->data->dev_private; + + for (i = 0; i < nb_pkts; i++) { + meta_offset = rte_pktmbuf_prepend(tx_pkts[i], FLOWER_PKT_DATA_OFFSET); + *(uint32_t *)meta_offset = rte_cpu_to_be_32(NFP_NET_META_PORTID); + meta_offset += 4; + *(uint32_t *)meta_offset = rte_cpu_to_be_32(repr->port_id); + } + + /* This points to the PF vNIC that owns this representor */ + pf_hw = txq->hw; + dev = pf_hw->eth_dev; + + /* Only using Tx queue 0 for now. */ + pf_tx_queue = dev->data->tx_queues[0]; + sent = nfp_flower_pf_xmit_pkts(pf_tx_queue, tx_pkts, nb_pkts); + if (sent != 0) { + PMD_TX_LOG(DEBUG, "Representor Tx burst for %s, port_id: 0x%x transmitted: %u", + repr->name, repr->port_id, sent); + repr->repr_stats.opackets += sent; + } + + return sent; +} + static const struct eth_dev_ops nfp_flower_pf_repr_dev_ops = { .dev_infos_get = nfp_flower_repr_dev_infos_get, @@ -553,6 +639,8 @@ snprintf(repr->name, sizeof(repr->name), "%s", init_repr_data->name); eth_dev->dev_ops = &nfp_flower_pf_repr_dev_ops; + eth_dev->rx_pkt_burst = nfp_flower_pf_recv_pkts; + eth_dev->tx_pkt_burst = nfp_flower_pf_xmit_pkts; eth_dev->data->dev_flags |= RTE_ETH_DEV_REPRESENTOR; eth_dev->data->representor_id = 0; @@ -622,6 +710,8 @@ snprintf(repr->name, sizeof(repr->name), "%s", init_repr_data->name); eth_dev->dev_ops = &nfp_flower_repr_dev_ops; + eth_dev->rx_pkt_burst = nfp_flower_repr_rx_burst; + eth_dev->tx_pkt_burst = nfp_flower_repr_tx_burst; eth_dev->data->dev_flags |= RTE_ETH_DEV_REPRESENTOR; if (repr->repr_type == NFP_REPR_TYPE_PHYS_PORT) -- 1.8.3.1