From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by dpdk.org (Postfix) with ESMTP id EF3E11B248 for ; Wed, 10 Jan 2018 16:54:10 +0100 (CET) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by fmsmga105.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 10 Jan 2018 07:54:10 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.46,340,1511856000"; d="scan'208";a="9040702" Received: from rhorton-mobl1.ger.corp.intel.com (HELO FC23.ir.intel.com) ([163.33.230.11]) by fmsmga002.fm.intel.com with ESMTP; 10 Jan 2018 07:54:09 -0800 From: Remy Horton To: dev@dpdk.org Cc: John McNamara , Declan Doherty , Mohammad Abdul Awal Date: Wed, 10 Jan 2018 15:54:03 +0000 Message-Id: <20180110155406.17428-3-remy.horton@intel.com> X-Mailer: git-send-email 2.9.5 In-Reply-To: <20180110155406.17428-1-remy.horton@intel.com> References: <20180110155406.17428-1-remy.horton@intel.com> Subject: [dpdk-dev] [PATCH v5 2/5] eal: add Port Representor command-line option X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 10 Jan 2018 15:54:11 -0000 Port Representors provide a logical presentation in DPDK of VF (virtual function) ports for the purposes of control and monitoring. Each port representor device represents a single VF and is associated with it's parent physical function (PF) PMD which provides the back-end hooks for the representor device ops and defines the control domain to which that port belongs. This allows to use existing DPDK APIs to monitor and control the port without the need to create and maintain VF specific APIs. By default the Port Representor infrastructure is not enabled. This patch implements the --enable-representor EAL command-line parameter that activates representation functionality. Signed-off-by: Declan Doherty Signed-off-by: Mohammad Abdul Awal Signed-off-by: Remy Horton --- doc/guides/rel_notes/release_18_02.rst | 2 ++ lib/librte_eal/bsdapp/eal/eal.c | 6 ++++++ lib/librte_eal/common/eal_common_options.c | 1 + lib/librte_eal/common/eal_internal_cfg.h | 2 ++ lib/librte_eal/common/eal_options.h | 2 ++ lib/librte_eal/common/include/rte_eal.h | 8 ++++++++ lib/librte_eal/linuxapp/eal/eal.c | 9 +++++++++ lib/librte_eal/rte_eal_version.map | 1 + 8 files changed, 31 insertions(+) diff --git a/doc/guides/rel_notes/release_18_02.rst b/doc/guides/rel_notes/release_18_02.rst index 5854d51..8479feb 100644 --- a/doc/guides/rel_notes/release_18_02.rst +++ b/doc/guides/rel_notes/release_18_02.rst @@ -50,6 +50,8 @@ New Features the representor device ops and defines the control domain to which that port belongs. +* **Added --enable-representor EAL command-line option + API Changes ----------- diff --git a/lib/librte_eal/bsdapp/eal/eal.c b/lib/librte_eal/bsdapp/eal/eal.c index 369a682..002200a 100644 --- a/lib/librte_eal/bsdapp/eal/eal.c +++ b/lib/librte_eal/bsdapp/eal/eal.c @@ -778,3 +778,9 @@ int rte_vfio_noiommu_is_enabled(void) { return 0; } + +/* return non-zero if port-representor is enabled. */ +int rte_representor_enabled(void) +{ + return internal_config.enable_representor; +} diff --git a/lib/librte_eal/common/eal_common_options.c b/lib/librte_eal/common/eal_common_options.c index 996a034..6f2cc05 100644 --- a/lib/librte_eal/common/eal_common_options.c +++ b/lib/librte_eal/common/eal_common_options.c @@ -78,6 +78,7 @@ const struct option eal_long_options[] = { {OPT_BASE_VIRTADDR, 1, NULL, OPT_BASE_VIRTADDR_NUM }, {OPT_CREATE_UIO_DEV, 0, NULL, OPT_CREATE_UIO_DEV_NUM }, + {OPT_ENABLE_REPRESENTOR, 0, NULL, OPT_ENABLE_REPRESENTOR_NUM }, {OPT_FILE_PREFIX, 1, NULL, OPT_FILE_PREFIX_NUM }, {OPT_HELP, 0, NULL, OPT_HELP_NUM }, {OPT_HUGE_DIR, 1, NULL, OPT_HUGE_DIR_NUM }, diff --git a/lib/librte_eal/common/eal_internal_cfg.h b/lib/librte_eal/common/eal_internal_cfg.h index c67685c..b4befe6 100644 --- a/lib/librte_eal/common/eal_internal_cfg.h +++ b/lib/librte_eal/common/eal_internal_cfg.h @@ -42,6 +42,8 @@ struct internal_config { * instead of native TSC */ volatile unsigned no_shconf; /**< true if there is no shared config */ volatile unsigned create_uio_dev; /**< true to create /dev/uioX devices */ + volatile unsigned enable_representor; + /**< true to enable port representor broker for all PFs */ volatile enum rte_proc_type_t process_type; /**< multi-process proc type */ /** true to try allocating memory on specific sockets */ volatile unsigned force_sockets; diff --git a/lib/librte_eal/common/eal_options.h b/lib/librte_eal/common/eal_options.h index 30e6bb4..c2b2162 100644 --- a/lib/librte_eal/common/eal_options.h +++ b/lib/librte_eal/common/eal_options.h @@ -83,6 +83,8 @@ enum { OPT_VFIO_INTR_NUM, #define OPT_VMWARE_TSC_MAP "vmware-tsc-map" OPT_VMWARE_TSC_MAP_NUM, +#define OPT_ENABLE_REPRESENTOR "enable-representor" + OPT_ENABLE_REPRESENTOR_NUM, OPT_LONG_MAX_NUM }; diff --git a/lib/librte_eal/common/include/rte_eal.h b/lib/librte_eal/common/include/rte_eal.h index 02fa109..d21f704 100644 --- a/lib/librte_eal/common/include/rte_eal.h +++ b/lib/librte_eal/common/include/rte_eal.h @@ -306,6 +306,14 @@ enum rte_iova_mode rte_eal_iova_mode(void); const char * rte_eal_mbuf_default_mempool_ops(void); +/** + * Get flag for port representor should be enabled or not. + * + * @return + * Returns the enable-representor flag. + */ +int rte_representor_enabled(void); + #ifdef __cplusplus } #endif diff --git a/lib/librte_eal/linuxapp/eal/eal.c b/lib/librte_eal/linuxapp/eal/eal.c index 229eec9..364a8b2 100644 --- a/lib/librte_eal/linuxapp/eal/eal.c +++ b/lib/librte_eal/linuxapp/eal/eal.c @@ -612,6 +612,10 @@ eal_parse_args(int argc, char **argv) internal_config.mbuf_pool_ops_name = optarg; break; + case OPT_ENABLE_REPRESENTOR_NUM: + internal_config.enable_representor = 1; + break; + default: if (opt < OPT_LONG_MIN_NUM && isprint(opt)) { RTE_LOG(ERR, EAL, "Option %c is not supported " @@ -1041,3 +1045,8 @@ rte_eal_check_module(const char *module_name) /* Module has been found */ return 1; } + +int rte_representor_enabled(void) +{ + return internal_config.enable_representor; +} diff --git a/lib/librte_eal/rte_eal_version.map b/lib/librte_eal/rte_eal_version.map index f4f46c1..af3e713 100644 --- a/lib/librte_eal/rte_eal_version.map +++ b/lib/librte_eal/rte_eal_version.map @@ -227,6 +227,7 @@ EXPERIMENTAL { rte_service_map_lcore_get; rte_service_map_lcore_set; rte_service_probe_capability; + rte_service_representor_enabled; rte_service_reset; rte_service_run_iter_on_app_lcore; rte_service_runstate_get; -- 2.9.5