* [dpdk-stable] [PATCH v9 1/3] ethdev: add an API to get device configuration info [not found] ` <20210926092055.495322-1-jie1x.wang@intel.com> @ 2021-09-26 9:20 ` Jie Wang 2021-10-04 11:22 ` Ferruh Yigit 2021-09-26 9:20 ` [dpdk-stable] [PATCH v9 2/3] doc: update release notes for new API Jie Wang 2021-09-26 9:20 ` [dpdk-stable] [PATCH v9 3/3] app/testpmd: fix testpmd doesn't show RSS hash offload Jie Wang 2 siblings, 1 reply; 8+ messages in thread From: Jie Wang @ 2021-09-26 9:20 UTC (permalink / raw) To: dev Cc: ferruh.yigit, thomas, andrew.rybchenko, xiaoyun.li, stevex.yang, Jie Wang, stable This patch adds a new API "rte_eth_dev_conf_info_get()" to help users get device configuration info. Cc: stable@dpdk.org Signed-off-by: Jie Wang <jie1x.wang@intel.com> --- lib/ethdev/rte_ethdev.c | 23 +++++++++++++++++++++++ lib/ethdev/rte_ethdev.h | 21 +++++++++++++++++++++ lib/ethdev/version.map | 3 +++ 3 files changed, 47 insertions(+) diff --git a/lib/ethdev/rte_ethdev.c b/lib/ethdev/rte_ethdev.c index daf5ca9242..a0f521323a 100644 --- a/lib/ethdev/rte_ethdev.c +++ b/lib/ethdev/rte_ethdev.c @@ -3457,6 +3457,29 @@ rte_eth_dev_info_get(uint16_t port_id, struct rte_eth_dev_info *dev_info) return 0; } +int +rte_eth_dev_conf_info_get(uint16_t port_id, + struct rte_eth_conf *dev_conf_info) +{ + struct rte_eth_dev *dev; + + RTE_ETH_VALID_PORTID_OR_ERR_RET(port_id, -ENODEV); + dev = &rte_eth_devices[port_id]; + + if (dev_conf_info == NULL) { + RTE_ETHDEV_LOG(ERR, + "Cannot get ethdev port %u configuration info to NULL\n", + port_id); + return -EINVAL; + } + + /* copy dev->data->dev_conf to dev_conf_info */ + memcpy(dev_conf_info, &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 1da37896d8..c21ee6a1fe 100644 --- a/lib/ethdev/rte_ethdev.h +++ b/lib/ethdev/rte_ethdev.h @@ -3068,6 +3068,27 @@ 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_info + * 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_info_get(uint16_t port_id, + struct rte_eth_conf *dev_conf_info); + /** * Retrieve the firmware version of a device. * diff --git a/lib/ethdev/version.map b/lib/ethdev/version.map index 904bce6ea1..4b0a1f0fae 100644 --- a/lib/ethdev/version.map +++ b/lib/ethdev/version.map @@ -247,6 +247,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_info_get; }; INTERNAL { -- 2.25.1 ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [dpdk-stable] [PATCH v9 1/3] ethdev: add an API to get device configuration info 2021-09-26 9:20 ` [dpdk-stable] [PATCH v9 1/3] ethdev: add an API to get device configuration info Jie Wang @ 2021-10-04 11:22 ` Ferruh Yigit 2021-10-04 11:26 ` Thomas Monjalon 0 siblings, 1 reply; 8+ messages in thread From: Ferruh Yigit @ 2021-10-04 11:22 UTC (permalink / raw) To: Jie Wang, dev; +Cc: thomas, andrew.rybchenko, xiaoyun.li, stevex.yang, stable On 9/26/2021 10:20 AM, Jie Wang wrote: > This patch adds a new API "rte_eth_dev_conf_info_get()" to help users get > device configuration info. > > Cc: stable@dpdk.org > Since this is a new API, I think we can request it to be backported. > Signed-off-by: Jie Wang <jie1x.wang@intel.com> <...> > @@ -247,6 +247,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_info_get; Not sure about the 'info' part in the API, what about 'rte_eth_dev_conf_get()'? ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [dpdk-stable] [PATCH v9 1/3] ethdev: add an API to get device configuration info 2021-10-04 11:22 ` Ferruh Yigit @ 2021-10-04 11:26 ` Thomas Monjalon 2021-10-04 11:35 ` Ferruh Yigit 0 siblings, 1 reply; 8+ messages in thread From: Thomas Monjalon @ 2021-10-04 11:26 UTC (permalink / raw) To: Jie Wang, dev, Ferruh Yigit Cc: andrew.rybchenko, xiaoyun.li, stevex.yang, stable 04/10/2021 13:22, Ferruh Yigit: > On 9/26/2021 10:20 AM, Jie Wang wrote: > > This patch adds a new API "rte_eth_dev_conf_info_get()" to help users get > > device configuration info. > > > > Cc: stable@dpdk.org > > > > Since this is a new API, I think we can request it to be backported. We cannot. > > Signed-off-by: Jie Wang <jie1x.wang@intel.com> > > <...> > > > @@ -247,6 +247,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_info_get; > > Not sure about the 'info' part in the API, what about 'rte_eth_dev_conf_get()'? +1 ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [dpdk-stable] [PATCH v9 1/3] ethdev: add an API to get device configuration info 2021-10-04 11:26 ` Thomas Monjalon @ 2021-10-04 11:35 ` Ferruh Yigit 0 siblings, 0 replies; 8+ messages in thread From: Ferruh Yigit @ 2021-10-04 11:35 UTC (permalink / raw) To: Thomas Monjalon, Jie Wang, dev Cc: andrew.rybchenko, xiaoyun.li, stevex.yang, stable On 10/4/2021 12:26 PM, Thomas Monjalon wrote: > 04/10/2021 13:22, Ferruh Yigit: >> On 9/26/2021 10:20 AM, Jie Wang wrote: >>> This patch adds a new API "rte_eth_dev_conf_info_get()" to help users get >>> device configuration info. >>> >>> Cc: stable@dpdk.org >>> >> >> Since this is a new API, I think we can request it to be backported. > > We cannot. > Of course, it is a typo in my end, I mean "we can NOT request ..." >>> Signed-off-by: Jie Wang <jie1x.wang@intel.com> >> >> <...> >> >>> @@ -247,6 +247,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_info_get; >> >> Not sure about the 'info' part in the API, what about 'rte_eth_dev_conf_get()'? > > +1 > > ^ permalink raw reply [flat|nested] 8+ messages in thread
* [dpdk-stable] [PATCH v9 2/3] doc: update release notes for new API [not found] ` <20210926092055.495322-1-jie1x.wang@intel.com> 2021-09-26 9:20 ` [dpdk-stable] [PATCH v9 1/3] ethdev: add an API to get device configuration info Jie Wang @ 2021-09-26 9:20 ` Jie Wang 2021-10-04 11:22 ` Ferruh Yigit 2021-09-26 9:20 ` [dpdk-stable] [PATCH v9 3/3] app/testpmd: fix testpmd doesn't show RSS hash offload Jie Wang 2 siblings, 1 reply; 8+ messages in thread From: Jie Wang @ 2021-09-26 9:20 UTC (permalink / raw) To: dev Cc: ferruh.yigit, thomas, andrew.rybchenko, xiaoyun.li, stevex.yang, Jie Wang, stable Add information about new ethdev API. Cc: stable@dpdk.org Signed-off-by: Jie Wang <jie1x.wang@intel.com> --- doc/guides/rel_notes/release_21_11.rst | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/doc/guides/rel_notes/release_21_11.rst b/doc/guides/rel_notes/release_21_11.rst index dcff939ae8..95e569f51c 100644 --- a/doc/guides/rel_notes/release_21_11.rst +++ b/doc/guides/rel_notes/release_21_11.rst @@ -111,6 +111,10 @@ New Features Added command-line options to specify total number of processes and current process ID. Each process owns subset of Rx and Tx queues. +* **Added support for users get device configuration.** + Added an API which can help users get device configuration. + The declarations for the API's can be found in ``rte_ethdev.h``. + Removed Items ------------- -- 2.25.1 ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [dpdk-stable] [PATCH v9 2/3] doc: update release notes for new API 2021-09-26 9:20 ` [dpdk-stable] [PATCH v9 2/3] doc: update release notes for new API Jie Wang @ 2021-10-04 11:22 ` Ferruh Yigit 2021-10-04 11:26 ` Thomas Monjalon 0 siblings, 1 reply; 8+ messages in thread From: Ferruh Yigit @ 2021-10-04 11:22 UTC (permalink / raw) To: Jie Wang, dev; +Cc: thomas, andrew.rybchenko, xiaoyun.li, stevex.yang, stable On 9/26/2021 10:20 AM, Jie Wang wrote: > Add information about new ethdev API. > > Cc: stable@dpdk.org > > Signed-off-by: Jie Wang <jie1x.wang@intel.com> > --- > doc/guides/rel_notes/release_21_11.rst | 4 ++++ > 1 file changed, 4 insertions(+) > > diff --git a/doc/guides/rel_notes/release_21_11.rst b/doc/guides/rel_notes/release_21_11.rst > index dcff939ae8..95e569f51c 100644 > --- a/doc/guides/rel_notes/release_21_11.rst > +++ b/doc/guides/rel_notes/release_21_11.rst > @@ -111,6 +111,10 @@ New Features > Added command-line options to specify total number of processes and > current process ID. Each process owns subset of Rx and Tx queues. > > +* **Added support for users get device configuration.** > + Added an API which can help users get device configuration. > + The declarations for the API's can be found in ``rte_ethdev.h``. > + > No need to have a separate patch for release notes update, can you please merge this one with 1/3 patch? ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [dpdk-stable] [PATCH v9 2/3] doc: update release notes for new API 2021-10-04 11:22 ` Ferruh Yigit @ 2021-10-04 11:26 ` Thomas Monjalon 0 siblings, 0 replies; 8+ messages in thread From: Thomas Monjalon @ 2021-10-04 11:26 UTC (permalink / raw) To: Jie Wang, dev, Ferruh Yigit Cc: andrew.rybchenko, xiaoyun.li, stevex.yang, stable 04/10/2021 13:22, Ferruh Yigit: > On 9/26/2021 10:20 AM, Jie Wang wrote: > > Add information about new ethdev API. > > > > Cc: stable@dpdk.org > > > > Signed-off-by: Jie Wang <jie1x.wang@intel.com> > > --- > > doc/guides/rel_notes/release_21_11.rst | 4 ++++ > > 1 file changed, 4 insertions(+) > > > > diff --git a/doc/guides/rel_notes/release_21_11.rst b/doc/guides/rel_notes/release_21_11.rst > > index dcff939ae8..95e569f51c 100644 > > --- a/doc/guides/rel_notes/release_21_11.rst > > +++ b/doc/guides/rel_notes/release_21_11.rst > > @@ -111,6 +111,10 @@ New Features > > Added command-line options to specify total number of processes and > > current process ID. Each process owns subset of Rx and Tx queues. > > > > +* **Added support for users get device configuration.** > > + Added an API which can help users get device configuration. > > + The declarations for the API's can be found in ``rte_ethdev.h``. > > + > > > > No need to have a separate patch for release notes update, can you please merge > this one with 1/3 patch? *not* have a separate patch ^ permalink raw reply [flat|nested] 8+ messages in thread
* [dpdk-stable] [PATCH v9 3/3] app/testpmd: fix testpmd doesn't show RSS hash offload [not found] ` <20210926092055.495322-1-jie1x.wang@intel.com> 2021-09-26 9:20 ` [dpdk-stable] [PATCH v9 1/3] ethdev: add an API to get device configuration info Jie Wang 2021-09-26 9:20 ` [dpdk-stable] [PATCH v9 2/3] doc: update release notes for new API Jie Wang @ 2021-09-26 9:20 ` Jie Wang 2 siblings, 0 replies; 8+ messages in thread From: Jie Wang @ 2021-09-26 9:20 UTC (permalink / raw) To: dev Cc: ferruh.yigit, thomas, andrew.rybchenko, xiaoyun.li, stevex.yang, Jie Wang, stable 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 updates the offloads info if it changes to fix this issue. Fixes: ce8d561418d4 ("app/testpmd: add port configuration settings") Cc: stable@dpdk.org Signed-off-by: Jie Wang <jie1x.wang@intel.com> --- app/test-pmd/cmdline.c | 14 ++++++++++++-- app/test-pmd/testpmd.c | 34 ++++++++++++++++++++++++++++++++++ app/test-pmd/testpmd.h | 2 ++ app/test-pmd/util.c | 15 +++++++++++++++ 4 files changed, 63 insertions(+), 2 deletions(-) diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c index a9efd027c3..3ef8f99358 100644 --- a/app/test-pmd/cmdline.c +++ b/app/test-pmd/cmdline.c @@ -15997,6 +15997,7 @@ cmd_rx_offload_get_configuration_parsed( struct rte_eth_dev_info dev_info; portid_t port_id = res->port_id; struct rte_port *port = &ports[port_id]; + struct rte_eth_conf dev_conf_info; uint64_t port_offloads; uint64_t queue_offloads; uint16_t nb_rx_queues; @@ -16005,7 +16006,11 @@ cmd_rx_offload_get_configuration_parsed( printf("Rx Offloading Configuration of port %d :\n", port_id); - port_offloads = port->dev_conf.rxmode.offloads; + ret = eth_dev_conf_info_get_print_err(port_id, &dev_conf_info); + if (ret != 0) + return; + + port_offloads = dev_conf_info.rxmode.offloads; printf(" Port :"); print_rx_offloads(port_offloads); printf("\n"); @@ -16411,6 +16416,7 @@ cmd_tx_offload_get_configuration_parsed( struct rte_eth_dev_info dev_info; portid_t port_id = res->port_id; struct rte_port *port = &ports[port_id]; + struct rte_eth_conf dev_conf_info; uint64_t port_offloads; uint64_t queue_offloads; uint16_t nb_tx_queues; @@ -16419,7 +16425,11 @@ cmd_tx_offload_get_configuration_parsed( printf("Tx Offloading Configuration of port %d :\n", port_id); - port_offloads = port->dev_conf.txmode.offloads; + ret = eth_dev_conf_info_get_print_err(port_id, &dev_conf_info); + if (ret != 0) + return; + + port_offloads = dev_conf_info.txmode.offloads; printf(" Port :"); print_tx_offloads(port_offloads); printf("\n"); diff --git a/app/test-pmd/testpmd.c b/app/test-pmd/testpmd.c index 97ae52e17e..56e6e80739 100644 --- a/app/test-pmd/testpmd.c +++ b/app/test-pmd/testpmd.c @@ -2531,6 +2531,9 @@ start_port(portid_t pid) } if (port->need_reconfig > 0) { + struct rte_eth_conf dev_conf_info; + int k; + port->need_reconfig = 0; if (flow_isolate_all) { @@ -2568,6 +2571,37 @@ start_port(portid_t pid) port->need_reconfig = 1; return -1; } + /* get rte_eth_conf info */ + if (0 != + eth_dev_conf_info_get_print_err(pi, + &dev_conf_info)) { + fprintf(stderr, + "port %d can not get device configuration info\n", + pi); + return -1; + } + /* Apply Rx offloads configuration */ + if (dev_conf_info.rxmode.offloads != + port->dev_conf.rxmode.offloads) { + port->dev_conf.rxmode.offloads |= + dev_conf_info.rxmode.offloads; + for (k = 0; + k < port->dev_info.max_rx_queues; + k++) + port->rx_conf[k].offloads |= + dev_conf_info.rxmode.offloads; + } + /* Apply Tx offloads configuration */ + if (dev_conf_info.txmode.offloads != + port->dev_conf.txmode.offloads) { + port->dev_conf.txmode.offloads |= + dev_conf_info.txmode.offloads; + for (k = 0; + k < port->dev_info.max_tx_queues; + k++) + port->tx_conf[k].offloads |= + dev_conf_info.txmode.offloads; + } } if (port->need_reconfig_queues > 0 && is_proc_primary()) { port->need_reconfig_queues = 0; diff --git a/app/test-pmd/testpmd.h b/app/test-pmd/testpmd.h index 5863b2f43f..48dad40986 100644 --- a/app/test-pmd/testpmd.h +++ b/app/test-pmd/testpmd.h @@ -960,6 +960,8 @@ void show_gro(portid_t port_id); void setup_gso(const char *mode, portid_t port_id); int eth_dev_info_get_print_err(uint16_t port_id, struct rte_eth_dev_info *dev_info); +int eth_dev_conf_info_get_print_err(uint16_t port_id, + struct rte_eth_conf *dev_conf_info); void eth_set_promisc_mode(uint16_t port_id, int enable); void eth_set_allmulticast_mode(uint16_t port, int enable); int eth_link_get_nowait_print_err(uint16_t port_id, struct rte_eth_link *link); diff --git a/app/test-pmd/util.c b/app/test-pmd/util.c index 14a9a251fb..f04786c50f 100644 --- a/app/test-pmd/util.c +++ b/app/test-pmd/util.c @@ -444,6 +444,21 @@ eth_dev_info_get_print_err(uint16_t port_id, return ret; } +int +eth_dev_conf_info_get_print_err(uint16_t port_id, + struct rte_eth_conf *dev_conf_info) +{ + int ret; + + ret = rte_eth_dev_conf_info_get(port_id, dev_conf_info); + if (ret != 0) + fprintf(stderr, + "Error during getting device configuration (port %u) info: %s\n", + port_id, strerror(-ret)); + + return ret; +} + void eth_set_promisc_mode(uint16_t port, int enable) { -- 2.25.1 ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2021-10-04 11:36 UTC | newest] Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- [not found] <20210827081740.365037-1-jie1x.wang@intel.com> [not found] ` <20210926092055.495322-1-jie1x.wang@intel.com> 2021-09-26 9:20 ` [dpdk-stable] [PATCH v9 1/3] ethdev: add an API to get device configuration info Jie Wang 2021-10-04 11:22 ` Ferruh Yigit 2021-10-04 11:26 ` Thomas Monjalon 2021-10-04 11:35 ` Ferruh Yigit 2021-09-26 9:20 ` [dpdk-stable] [PATCH v9 2/3] doc: update release notes for new API Jie Wang 2021-10-04 11:22 ` Ferruh Yigit 2021-10-04 11:26 ` Thomas Monjalon 2021-09-26 9:20 ` [dpdk-stable] [PATCH v9 3/3] app/testpmd: fix testpmd doesn't show RSS hash offload Jie Wang
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).