On 10/11/21 9:01 PM, Jie Wang 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

port->dev_conf does not make sense outside of testpmd.
So, it should not be mentioned in the description here.

> contain outdated values.
> 
> This patch adds a new API "rte_eth_dev_conf_get()" to help users
> get device configuration.

May be:
Add a new API to get actual device configuration.

> 
> Add information about the new API in release notes.

It should not be in the changeset description.

> 
> 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``.

The second line is not necessary since it is a well-known
location of the ethdev API declarations.

> +
>  * **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

I think there is no point to duplicate type in the parameter
description.

> + *   the configuration of the Ethernet device.
> + *   And the memory of the structure should be allocated by the caller.

May be just:
Location for Ethernet device configuration to be filled in.

> + * @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 {
> 

Reply via email to