[dpdk-dev,v5,2/5] eal: add Port Representor command-line option
Checks
Commit Message
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 <declan.doherty@intel.com>
Signed-off-by: Mohammad Abdul Awal <mohammad.abdul.awal@intel.com>
Signed-off-by: Remy Horton <remy.horton@intel.com>
---
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(+)
@@ -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
-----------
@@ -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;
+}
@@ -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 },
@@ -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;
@@ -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
};
@@ -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
@@ -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;
+}
@@ -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;