From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from netronome.com (host-79-78-33-110.static.as9105.net [79.78.33.110]) by dpdk.org (Postfix) with ESMTP id ACB17239 for ; Mon, 15 Oct 2018 11:01:37 +0200 (CEST) Received: from netronome.com (localhost [127.0.0.1]) by netronome.com (8.14.4/8.14.4/Debian-4.1ubuntu1) with ESMTP id w9F909nh048739 for ; Mon, 15 Oct 2018 10:00:09 +0100 Received: (from alucero@localhost) by netronome.com (8.14.4/8.14.4/Submit) id w9F909lg048738 for dev@dpdk.org; Mon, 15 Oct 2018 10:00:09 +0100 From: Alejandro Lucero To: dev@dpdk.org Date: Mon, 15 Oct 2018 10:00:09 +0100 Message-Id: <1539594009-48700-1-git-send-email-alejandro.lucero@netronome.com> X-Mailer: git-send-email 1.9.1 Subject: [dpdk-dev] [PATCH v3] ethdev: add field for device data per process 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: Mon, 15 Oct 2018 09:01:37 -0000 Primary and secondary processes share a per-device private data. With current design it is not possible to have data per-device per-process. This is required for handling properly the CPP interface inside the NFP PMD with multiprocess support. There is also at least another PMD driver, tap, with similar requirements for per-process device data. v2: - changing library version - report shared library change in release notes v3: - fix shared library version Signed-off-by: Alejandro Lucero --- doc/guides/rel_notes/release_18_11.rst | 1 + lib/librte_ethdev/Makefile | 2 +- lib/librte_ethdev/meson.build | 2 +- lib/librte_ethdev/rte_ethdev_core.h | 8 +++++++- 4 files changed, 10 insertions(+), 3 deletions(-) diff --git a/doc/guides/rel_notes/release_18_11.rst b/doc/guides/rel_notes/release_18_11.rst index c806dc6..8b2ccad 100644 --- a/doc/guides/rel_notes/release_18_11.rst +++ b/doc/guides/rel_notes/release_18_11.rst @@ -189,6 +189,7 @@ Shared Library Versions librte_acl.so.2 + librte_cfgfile.so.2 librte_cmdline.so.2 + + librte_ethdev.so.11 This section is a comment. Do not overwrite or remove it. ========================================================= diff --git a/lib/librte_ethdev/Makefile b/lib/librte_ethdev/Makefile index d720dd2..e27bcd5 100644 --- a/lib/librte_ethdev/Makefile +++ b/lib/librte_ethdev/Makefile @@ -16,7 +16,7 @@ LDLIBS += -lrte_mbuf -lrte_kvargs EXPORT_MAP := rte_ethdev_version.map -LIBABIVER := 10 +LIBABIVER := 11 SRCS-y += ethdev_private.c SRCS-y += rte_ethdev.c diff --git a/lib/librte_ethdev/meson.build b/lib/librte_ethdev/meson.build index 172e302..6783013 100644 --- a/lib/librte_ethdev/meson.build +++ b/lib/librte_ethdev/meson.build @@ -2,7 +2,7 @@ # Copyright(c) 2017 Intel Corporation name = 'ethdev' -version = 10 +version = 11 allow_experimental_apis = true sources = files('ethdev_private.c', 'ethdev_profile.c', diff --git a/lib/librte_ethdev/rte_ethdev_core.h b/lib/librte_ethdev/rte_ethdev_core.h index 33d12b3..0d28fd9 100644 --- a/lib/librte_ethdev/rte_ethdev_core.h +++ b/lib/librte_ethdev/rte_ethdev_core.h @@ -539,7 +539,13 @@ struct rte_eth_dev { eth_rx_burst_t rx_pkt_burst; /**< Pointer to PMD receive function. */ eth_tx_burst_t tx_pkt_burst; /**< Pointer to PMD transmit function. */ eth_tx_prep_t tx_pkt_prepare; /**< Pointer to PMD transmit prepare function. */ - struct rte_eth_dev_data *data; /**< Pointer to device data */ + /** + * Next two fields are per-device data but *data is shared between + * primary and secondary processes and *process_private is per-process + * private. The second one is managed by PMDs if necessary. + */ + struct rte_eth_dev_data *data; /**< Pointer to device data. */ + void *process_private; /**< Pointer to per-process device data. */ const struct eth_dev_ops *dev_ops; /**< Functions exported by PMD */ struct rte_device *device; /**< Backing device */ struct rte_intr_handle *intr_handle; /**< Device interrupt handle */ -- 1.9.1