On 08/02/2018 02:52 PM, Andrew Rybchenko wrote: > On 02.08.2018 16:35, Kevin Traynor wrote: >> On 08/02/2018 01:59 PM, Andrew Rybchenko wrote: >>> On 02.08.2018 15:33, Kevin Traynor wrote: >>>> Change log level of messages from ERR back to DEBUG where >>>> existing API indicates that the condition is a success. >>>> >>>> This means applications using the API in its current form will >>>> not get new ERR logs. >>>> >>>> Fixes: bea1e0c70cfc ("ethdev: convert static log type usage to >>>> dynamic") >>>> >>>> Signed-off-by: Kevin Traynor <ktray...@redhat.com> >>>> --- >>>> lib/librte_ethdev/rte_ethdev.c | 12 ++++++------ >>>> 1 file changed, 6 insertions(+), 6 deletions(-) >>>> >>>> diff --git a/lib/librte_ethdev/rte_ethdev.c >>>> b/lib/librte_ethdev/rte_ethdev.c >>>> index c7ab157..16656d2 100644 >>>> --- a/lib/librte_ethdev/rte_ethdev.c >>>> +++ b/lib/librte_ethdev/rte_ethdev.c >>>> @@ -797,5 +797,5 @@ struct rte_eth_dev * >>>> if (dev->data->rx_queue_state[rx_queue_id] != >>>> RTE_ETH_QUEUE_STATE_STOPPED) { >>>> - RTE_ETHDEV_LOG(ERR, >>>> + RTE_ETHDEV_LOG(DEBUG, >>>> "Queue %"PRIu16" of device with port_id=%"PRIu16" >>>> already started\n", >>>> rx_queue_id, port_id); >>>> @@ -824,5 +824,5 @@ struct rte_eth_dev * >>>> if (dev->data->rx_queue_state[rx_queue_id] == >>>> RTE_ETH_QUEUE_STATE_STOPPED) { >>>> - RTE_ETHDEV_LOG(ERR, >>>> + RTE_ETHDEV_LOG(DEBUG, >>>> "Queue %"PRIu16" of device with port_id=%"PRIu16" >>>> already stopped\n", >>>> rx_queue_id, port_id); >>>> @@ -857,5 +857,5 @@ struct rte_eth_dev * >>>> if (dev->data->tx_queue_state[tx_queue_id] != >>>> RTE_ETH_QUEUE_STATE_STOPPED) { >>>> - RTE_ETHDEV_LOG(ERR, >>>> + RTE_ETHDEV_LOG(DEBUG, >>>> "Queue %"PRIu16" of device with port_id=%"PRIu16" >>>> already started\n", >>>> tx_queue_id, port_id); >>>> @@ -882,5 +882,5 @@ struct rte_eth_dev * >>>> if (dev->data->tx_queue_state[tx_queue_id] == >>>> RTE_ETH_QUEUE_STATE_STOPPED) { >>>> - RTE_ETHDEV_LOG(ERR, >>>> + RTE_ETHDEV_LOG(DEBUG, >>>> "Queue %"PRIu16" of device with port_id=%"PRIu16" >>>> already stopped\n", >>>> tx_queue_id, port_id); >>>> @@ -1287,5 +1287,5 @@ struct rte_eth_dev * >>>> if (dev->data->dev_started != 0) { >>>> - RTE_ETHDEV_LOG(ERR, >>>> + RTE_ETHDEV_LOG(DEBUG, >>>> "Device with port_id=%"PRIu16" already started\n", >>>> port_id); >>>> @@ -1319,5 +1319,5 @@ struct rte_eth_dev * >>>> if (dev->data->dev_started == 0) { >>>> - RTE_ETHDEV_LOG(ERR, >>>> + RTE_ETHDEV_LOG(DEBUG, >>>> "Device with port_id=%"PRIu16" already stopped\n", >>>> port_id); >>> I would suggest to use WARNING here. Yes, it is not an error since >>> nothing bad has >>> happened and we handle duplicate stop and duplicate start, >>> but I think it is bad that (buggy?) application does it. Making it debug >>> we simply >>> hide it too much. >>> >> I think an application following the documented API is not bad or buggy. > > I've failed to find the place were it is documented that device/queue > may be stopped/started twice. Could you point out? > Yes, return value 0 means success, but it is a separate thing. >
I was commenting directly on the API and it's documentation e.g. below for dev start. I'm not aware of other documentation specifying how it can/cannot be called. * @return * - 0: Success, Ethernet device started. * - <0: Error code of the driver device start function. */ int rte_eth_dev_start(uint16_t port_id); int rte_eth_dev_start(uint16_t port_id) { ... if (dev->data->dev_started != 0) { RTE_ETHDEV_LOG(DEBUG, "Device with port_id=%"PRIu16" already started\n", port_id); return 0; } ... } >> An application may not maintain some state and always call a stop before >> a start etc. in line with the API. >> >> I don't think an API success condition should be changed from a debug >> message to anything else. Otherwise, it is trying to flag a warning >> about the application which is following the API! It and will just spook >> people when they see a new warning. >