[dpdk-dev,v2] app/testpmd: fix log of start command
Checks
Commit Message
Call the rte_eth_rxq_info_get() and rte_eth_txq_info_get() functions
to update the number of rx and tx descriptors in the rte_port
variable.
Fixes: ce8d561418d4 ("app/testpmd: add port configuration settings")
Signed-off-by: Bernard Iremonger <bernard.iremonger@intel.com>
---
app/test-pmd/testpmd.c | 16 +++++++++++++++-
1 file changed, 15 insertions(+), 1 deletion(-)
Comments
On 5/21/2018 2:28 PM, Bernard Iremonger wrote:
> Call the rte_eth_rxq_info_get() and rte_eth_txq_info_get() functions
> to update the number of rx and tx descriptors in the rte_port
> variable.
>
> Fixes: ce8d561418d4 ("app/testpmd: add port configuration settings")
> Signed-off-by: Bernard Iremonger <bernard.iremonger@intel.com>
> ---
> app/test-pmd/testpmd.c | 16 +++++++++++++++-
> 1 file changed, 15 insertions(+), 1 deletion(-)
>
> diff --git a/app/test-pmd/testpmd.c b/app/test-pmd/testpmd.c
> index 1d308f0..293b2a5 100644
> --- a/app/test-pmd/testpmd.c
> +++ b/app/test-pmd/testpmd.c
> @@ -1592,6 +1592,9 @@ static void eth_dev_event_callback(char *device_name,
> struct rte_port *port;
> struct ether_addr mac_addr;
> enum rte_eth_event_type event_type;
> + struct rte_eth_rxq_info rx_qinfo;
> + struct rte_eth_txq_info tx_qinfo;
> + int32_t rc;
>
> if (port_id_is_invalid(pid, ENABLED_WARN))
> return 0;
> @@ -1706,8 +1709,19 @@ static void eth_dev_event_callback(char *device_name,
> &(port->rx_conf[qi]),
> mp);
> }
> - if (diag == 0)
> + if (diag == 0) {
> + rc = rte_eth_rx_queue_info_get(pi, qi,
> + &rx_qinfo);
> + if (!rc)
> + port->nb_rx_desc[qi] =
> + rx_qinfo.nb_desc;
> + rc = rte_eth_tx_queue_info_get(pi, qi,
> + &tx_qinfo);
> + if (!rc)
> + port->nb_tx_desc[qi] =
> + tx_qinfo.nb_desc;
Hi Bernard,
port->nb_rx_desc[qi] and port->nb_tx_desc[qi] are intentionally set to zero, to
be able to use PMD provided values, assigning value to them will break that logic.
Instead of updating these values, what about using same information on print only?
Hi Ferruh,
> -----Original Message-----
> From: Yigit, Ferruh
> Sent: Monday, May 21, 2018 3:16 PM
> To: Iremonger, Bernard <bernard.iremonger@intel.com>; dev@dpdk.org
> Subject: Re: [PATCH v2] app/testpmd: fix log of start command
>
> On 5/21/2018 2:28 PM, Bernard Iremonger wrote:
> > Call the rte_eth_rxq_info_get() and rte_eth_txq_info_get() functions
> > to update the number of rx and tx descriptors in the rte_port
> > variable.
> >
> > Fixes: ce8d561418d4 ("app/testpmd: add port configuration settings")
> > Signed-off-by: Bernard Iremonger <bernard.iremonger@intel.com>
> > ---
> > app/test-pmd/testpmd.c | 16 +++++++++++++++-
> > 1 file changed, 15 insertions(+), 1 deletion(-)
> >
> > diff --git a/app/test-pmd/testpmd.c b/app/test-pmd/testpmd.c index
> > 1d308f0..293b2a5 100644
> > --- a/app/test-pmd/testpmd.c
> > +++ b/app/test-pmd/testpmd.c
> > @@ -1592,6 +1592,9 @@ static void eth_dev_event_callback(char
> *device_name,
> > struct rte_port *port;
> > struct ether_addr mac_addr;
> > enum rte_eth_event_type event_type;
> > + struct rte_eth_rxq_info rx_qinfo;
> > + struct rte_eth_txq_info tx_qinfo;
> > + int32_t rc;
> >
> > if (port_id_is_invalid(pid, ENABLED_WARN))
> > return 0;
> > @@ -1706,8 +1709,19 @@ static void eth_dev_event_callback(char
> *device_name,
> > &(port->rx_conf[qi]),
> > mp);
> > }
> > - if (diag == 0)
> > + if (diag == 0) {
> > + rc = rte_eth_rx_queue_info_get(pi,
> qi,
> > + &rx_qinfo);
> > + if (!rc)
> > + port->nb_rx_desc[qi] =
> > + rx_qinfo.nb_desc;
> > + rc = rte_eth_tx_queue_info_get(pi,
> qi,
> > + &tx_qinfo);
> > + if (!rc)
> > + port->nb_tx_desc[qi] =
> > + tx_qinfo.nb_desc;
>
> Hi Bernard,
>
> port->nb_rx_desc[qi] and port->nb_tx_desc[qi] are intentionally set to
> port->zero, to
> be able to use PMD provided values, assigning value to them will break that
> logic.
>
> Instead of updating these values, what about using same information on
> print only?
I don't think this fix is breaking any logic, as the nb_rx_desc[qi] and nb_tx_desc[qi] values are not being updated until after the rx and tx queues have been configured using the original values.
The nb_rxd and nb_txd values assigned to nb_rx_desc[qi] and nb_tx_desc[qi] are initialised to 0 but can be initialised to other vallues from the command line.
I will investigate using the updated values in the print only to avoid any risk.
Regards,
Bernard.
@@ -1592,6 +1592,9 @@ static void eth_dev_event_callback(char *device_name,
struct rte_port *port;
struct ether_addr mac_addr;
enum rte_eth_event_type event_type;
+ struct rte_eth_rxq_info rx_qinfo;
+ struct rte_eth_txq_info tx_qinfo;
+ int32_t rc;
if (port_id_is_invalid(pid, ENABLED_WARN))
return 0;
@@ -1706,8 +1709,19 @@ static void eth_dev_event_callback(char *device_name,
&(port->rx_conf[qi]),
mp);
}
- if (diag == 0)
+ if (diag == 0) {
+ rc = rte_eth_rx_queue_info_get(pi, qi,
+ &rx_qinfo);
+ if (!rc)
+ port->nb_rx_desc[qi] =
+ rx_qinfo.nb_desc;
+ rc = rte_eth_tx_queue_info_get(pi, qi,
+ &tx_qinfo);
+ if (!rc)
+ port->nb_tx_desc[qi] =
+ tx_qinfo.nb_desc;
continue;
+ }
/* Fail to setup rx queue, return */
if (rte_atomic16_cmpset(&(port->port_status),