[dpdk-dev] [PATCH] ethdev: decrease log level for successful API
Kevin Traynor
ktraynor at redhat.com
Thu Aug 2 16:09:52 CEST 2018
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 <ktraynor at 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.
>
More information about the dev
mailing list