On Mon, Oct 11, 2021 at 3:34 PM Jie Wang <jie1x.w...@intel.com> wrote:
>
> The driver may change offloads info into dev->data->dev_conf
> in dev_configure which may cause port->dev_conf and port->rx_conf
> contain outdated values.
>
> This patch adds a new API "rte_eth_dev_conf_get()" to help users
> get device configuration.
>
> Add information about the new API in release notes.
>
> Signed-off-by: Jie Wang <jie1x.w...@intel.com>
> ---
> doc/guides/rel_notes/release_21_11.rst | 5 +++++
> lib/ethdev/rte_ethdev.c | 20 ++++++++++++++++++++
> lib/ethdev/rte_ethdev.h | 20 ++++++++++++++++++++
> lib/ethdev/version.map | 3 +++
> 4 files changed, 48 insertions(+)
>
> diff --git a/doc/guides/rel_notes/release_21_11.rst
> b/doc/guides/rel_notes/release_21_11.rst
> index 93082723cf..789fc2d4ba 100644
> --- a/doc/guides/rel_notes/release_21_11.rst
> +++ b/doc/guides/rel_notes/release_21_11.rst
> @@ -67,6 +67,11 @@ New Features
> Added macros ETH_RSS_IPV4_CHKSUM and ETH_RSS_L4_CHKSUM, now IPv4 and
> TCP/UDP/SCTP header checksum field can be used as input set for RSS.
>
> +* **Added support for users get device configuration in ethdev.**
> +
> + Added an ethdev API which can help users get device configuration.
> + The declarations for the API's can be found in ``rte_ethdev.h``.
`declaration for the API ` right?
> +
> * **Updated Broadcom bnxt PMD.**
>
> * Added flow offload support for Thor.
> diff --git a/lib/ethdev/rte_ethdev.c b/lib/ethdev/rte_ethdev.c
> index 028907bc4b..be3ceb8131 100644
> --- a/lib/ethdev/rte_ethdev.c
> +++ b/lib/ethdev/rte_ethdev.c
> @@ -3437,6 +3437,26 @@ rte_eth_dev_info_get(uint16_t port_id, struct
> rte_eth_dev_info *dev_info)
> return 0;
> }
>
> +int
> +rte_eth_dev_conf_get(uint16_t port_id, struct rte_eth_conf *dev_conf)
> +{
> + struct rte_eth_dev *dev;
> +
> + RTE_ETH_VALID_PORTID_OR_ERR_RET(port_id, -ENODEV);
> + dev = &rte_eth_devices[port_id];
> +
> + if (dev_conf == NULL) {
> + RTE_ETHDEV_LOG(ERR,
> + "Cannot get ethdev port %u configuration to NULL\n",
> + port_id);
> + return -EINVAL;
> + }
> +
> + memcpy(dev_conf, &dev->data->dev_conf, sizeof(struct rte_eth_conf));
> +
> + return 0;
> +}
> +
> int
> rte_eth_dev_get_supported_ptypes(uint16_t port_id, uint32_t ptype_mask,
> uint32_t *ptypes, int num)
> diff --git a/lib/ethdev/rte_ethdev.h b/lib/ethdev/rte_ethdev.h
> index 6d80514ba7..f42f950fea 100644
> --- a/lib/ethdev/rte_ethdev.h
> +++ b/lib/ethdev/rte_ethdev.h
> @@ -3052,6 +3052,26 @@ int rte_eth_macaddr_get(uint16_t port_id, struct
> rte_ether_addr *mac_addr);
> */
> int rte_eth_dev_info_get(uint16_t port_id, struct rte_eth_dev_info
> *dev_info);
>
> +/**
> + * @warning
> + * @b EXPERIMENTAL: this API may change without prior notice.
> + *
> + * Retrieve the configuration of an Ethernet device.
> + *
> + * @param port_id
> + * The port identifier of the Ethernet device.
> + * @param dev_conf
> + * A pointer to a structure of type *rte_eth_conf* to be filled with
> + * the configuration of the Ethernet device.
> + * And the memory of the structure should be allocated by the caller.
> + * @return
> + * - (0) if successful.
> + * - (-ENODEV) if *port_id* invalid.
> + * - (-EINVAL) if bad parameter.
> + */
> +__rte_experimental
> +int rte_eth_dev_conf_get(uint16_t port_id, struct rte_eth_conf *dev_conf);
> +
> /**
> * Retrieve the firmware version of a device.
> *
> diff --git a/lib/ethdev/version.map b/lib/ethdev/version.map
> index efd729c0f2..c516837723 100644
> --- a/lib/ethdev/version.map
> +++ b/lib/ethdev/version.map
> @@ -245,6 +245,9 @@ EXPERIMENTAL {
> rte_mtr_meter_policy_delete;
> rte_mtr_meter_policy_update;
> rte_mtr_meter_policy_validate;
> +
> + # added in 21.11
> + rte_eth_dev_conf_get;
> };
>
> INTERNAL {
> --
Acked-by: Somnath kotur <somnath.ko...@broadcom.com>
> 2.25.1
>