From patchwork Tue Dec 19 17:39:39 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Harman Kalra X-Patchwork-Id: 501 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 0CDC943747; Tue, 19 Dec 2023 18:40:28 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id C8F5642E11; Tue, 19 Dec 2023 18:40:27 +0100 (CET) Received: from mx0b-0016f401.pphosted.com (mx0b-0016f401.pphosted.com [67.231.156.173]) by mails.dpdk.org (Postfix) with ESMTP id B068D42DED for ; Tue, 19 Dec 2023 18:40:25 +0100 (CET) Received: from pps.filterd (m0045851.ppops.net [127.0.0.1]) by mx0b-0016f401.pphosted.com (8.17.1.24/8.17.1.24) with ESMTP id 3BJ9d52p021347 for ; Tue, 19 Dec 2023 09:40:25 -0800 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com; h= from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-type; s=pfpt0220; bh=GC95fyBR9gbIv4PzLJeQV GrrcR6bNKRP8V4tFESM/5s=; b=HMyMzbuXRqVhFGrQ4yP/qSNSx1tqYECMSpgAm hukza08ZrY43pGpBjI5izvmS001Mmo0XtY96ndZ2gGQxHWvrH2h4P/LoNE/v0imk wU9YOLPspn/jP/C4P1JJGrabTLjmN3noHysjPMfHVSss4SbdktHej0OjJfnl6+RJ LcnSVe6DdVnIsc2k1LiwklhTF7fttmSu8L+zcLhW9DHcbDeSgc2hy5X8QXitrXdC 5qgIYTZOvuCLn1ImwTZMx0ZA5NKQKHmDFWBl7dXv2rYjs+GvDaEFJGSuesO55XV+ MpX1rtVsj8gBwlDRUJ+giV76md4K+IFrWqgJgtlhWQRGP8dMw== Received: from dc5-exch02.marvell.com ([199.233.59.182]) by mx0b-0016f401.pphosted.com (PPS) with ESMTPS id 3v1c9kumc5-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT) for ; Tue, 19 Dec 2023 09:40:24 -0800 (PST) Received: from DC5-EXCH01.marvell.com (10.69.176.38) by DC5-EXCH02.marvell.com (10.69.176.39) with Microsoft SMTP Server (TLS) id 15.0.1497.48; Tue, 19 Dec 2023 09:40:22 -0800 Received: from maili.marvell.com (10.69.176.80) by DC5-EXCH01.marvell.com (10.69.176.38) with Microsoft SMTP Server id 15.0.1497.48 via Frontend Transport; Tue, 19 Dec 2023 09:40:22 -0800 Received: from localhost.localdomain (unknown [10.29.52.211]) by maili.marvell.com (Postfix) with ESMTP id 73FB43F70A6; Tue, 19 Dec 2023 09:40:21 -0800 (PST) From: Harman Kalra To: CC: , , Harman Kalra Subject: [PATCH v2 00/24] net/cnxk: support for port representors Date: Tue, 19 Dec 2023 23:09:39 +0530 Message-ID: <20231219174003.72901-1-hkalra@marvell.com> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20230811163419.165790-1-hkalra@marvell.com> References: <20230811163419.165790-1-hkalra@marvell.com> MIME-Version: 1.0 X-Proofpoint-ORIG-GUID: 5F2_X45RDn-KmNKV4LBbLK8zMc2rS-OZ X-Proofpoint-GUID: 5F2_X45RDn-KmNKV4LBbLK8zMc2rS-OZ X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.272,Aquarius:18.0.997,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2023-12-09_02,2023-12-07_01,2023-05-22_02 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 Introducing port representor support to CNXK drivers by adding virtual ethernet ports providing a logical representation in DPDK for physical function(PF) or SR-IOV virtual function (VF) devices for control and monitoring. These port representor ethdev instances can be spawned on an as needed basis through configuration parameters passed to the driver of the underlying base device using devargs ``-a ,representor=pf*vf*`` In case of exception path (i.e. until the flow definition is offloaded to the hardware), packets transmitted by the VFs shall be received by these representor port, while packets transmitted by representor ports shall be received by respective VFs. On receiving the VF traffic via these representor ports, applications holding these representor ports can decide to offload the traffic flow into the HW. Henceforth the matching traffic shall be directly steered to the respective VFs without being received by the application. Current virtual representor port PMD supports following operations: - Get represented port statistics - Set mac address - Flow operations - create, validate, destroy, query, flush, dump Changes since V1: * Updated communication layer between representor and represented port. * Added support for native represented ports * Port representor and represented port item and action support * Build failure fixes --- Harman Kalra (24): common/cnxk: add support for representors net/cnxk: implementing eswitch device net/cnxk: eswitch HW resource configuration net/cnxk: eswitch devargs parsing net/cnxk: probing representor ports common/cnxk: common NPC changes for eswitch common/cnxk: interface to update VLAN TPID net/cnxk: eswitch flow configurations net/cnxk: eswitch fastpath routines net/cnxk: add representor control plane common/cnxk: representee notification callback net/cnxk: handling representee notification net/cnxk: representor ethdev ops common/cnxk: get representees ethernet stats net/cnxk: ethernet statistic for representor common/cnxk: base support for eswitch VF net/cnxk: eswitch VF as ethernet device common/cnxk: support port representor and represented port net/cnxk: add represented port pattern and action net/cnxk: add port representor pattern and action net/cnxk: generalize flow operation APIs net/cnxk: flow create on representor ports net/cnxk: other flow operations doc: port representors in cnxk MAINTAINERS | 1 + doc/guides/nics/cnxk.rst | 58 ++ doc/guides/nics/features/cnxk.ini | 3 + doc/guides/nics/features/cnxk_vf.ini | 4 + drivers/common/cnxk/meson.build | 1 + drivers/common/cnxk/roc_api.h | 3 + drivers/common/cnxk/roc_constants.h | 2 + drivers/common/cnxk/roc_dev.c | 25 + drivers/common/cnxk/roc_dev_priv.h | 3 + drivers/common/cnxk/roc_eswitch.c | 368 ++++++++++ drivers/common/cnxk/roc_eswitch.h | 33 + drivers/common/cnxk/roc_mbox.c | 2 + drivers/common/cnxk/roc_mbox.h | 73 +- drivers/common/cnxk/roc_nix.c | 46 +- drivers/common/cnxk/roc_nix.h | 4 + drivers/common/cnxk/roc_nix_priv.h | 5 +- drivers/common/cnxk/roc_nix_vlan.c | 23 +- drivers/common/cnxk/roc_npc.c | 89 ++- drivers/common/cnxk/roc_npc.h | 18 +- drivers/common/cnxk/roc_npc_mcam.c | 64 +- drivers/common/cnxk/roc_npc_parse.c | 28 +- drivers/common/cnxk/roc_npc_priv.h | 5 +- drivers/common/cnxk/roc_platform.c | 2 + drivers/common/cnxk/roc_platform.h | 4 + drivers/common/cnxk/version.map | 14 + drivers/net/cnxk/cn10k_ethdev.c | 1 + drivers/net/cnxk/cnxk_eswitch.c | 871 ++++++++++++++++++++++++ drivers/net/cnxk/cnxk_eswitch.h | 213 ++++++ drivers/net/cnxk/cnxk_eswitch_devargs.c | 237 +++++++ drivers/net/cnxk/cnxk_eswitch_flow.c | 445 ++++++++++++ drivers/net/cnxk/cnxk_eswitch_rxtx.c | 212 ++++++ drivers/net/cnxk/cnxk_ethdev.c | 39 +- drivers/net/cnxk/cnxk_ethdev.h | 3 + drivers/net/cnxk/cnxk_ethdev_ops.c | 4 + drivers/net/cnxk/cnxk_flow.c | 521 +++++++++++--- drivers/net/cnxk/cnxk_flow.h | 28 +- drivers/net/cnxk/cnxk_link.c | 3 +- drivers/net/cnxk/cnxk_rep.c | 555 +++++++++++++++ drivers/net/cnxk/cnxk_rep.h | 141 ++++ drivers/net/cnxk/cnxk_rep_flow.c | 813 ++++++++++++++++++++++ drivers/net/cnxk/cnxk_rep_msg.c | 823 ++++++++++++++++++++++ drivers/net/cnxk/cnxk_rep_msg.h | 169 +++++ drivers/net/cnxk/cnxk_rep_ops.c | 715 +++++++++++++++++++ drivers/net/cnxk/meson.build | 8 + 44 files changed, 6498 insertions(+), 181 deletions(-) create mode 100644 drivers/common/cnxk/roc_eswitch.c create mode 100644 drivers/common/cnxk/roc_eswitch.h create mode 100644 drivers/net/cnxk/cnxk_eswitch.c create mode 100644 drivers/net/cnxk/cnxk_eswitch.h create mode 100644 drivers/net/cnxk/cnxk_eswitch_devargs.c create mode 100644 drivers/net/cnxk/cnxk_eswitch_flow.c create mode 100644 drivers/net/cnxk/cnxk_eswitch_rxtx.c create mode 100644 drivers/net/cnxk/cnxk_rep.c create mode 100644 drivers/net/cnxk/cnxk_rep.h create mode 100644 drivers/net/cnxk/cnxk_rep_flow.c create mode 100644 drivers/net/cnxk/cnxk_rep_msg.c create mode 100644 drivers/net/cnxk/cnxk_rep_msg.h create mode 100644 drivers/net/cnxk/cnxk_rep_ops.c