[dpdk-dev,v6,8/8] rte_ethdev.h: align sign and scope of temp var
Checks
Commit Message
/projects/lagopus/src/dpdk/build/include/rte_ethdev.h:
In function 'rte_eth_rx_burst':
/projects/lagopus/src/dpdk/build/include/rte_ethdev.h:
3836:18: warning: conversion to 'int16_t' {aka 'short
int'} from 'uint16_t' {aka 'short unsigned int'} may
change the sign of the result [-Wsign-conversion]
int16_t nb_rx = (*dev->rx_pkt_burst)(dev->data->
rx_queues[queue_id],
^
/projects/lagopus/src/dpdk/build/include/rte_ethdev.h:
3844:50: warning: conversion to 'uint16_t' {aka 'short
unsigned int'} from 'int16_t' {aka 'short int'} may
change the sign of the result [-Wsign-conversion]
nb_rx = cb->fn.rx(port_id, queue_id, rx_pkts, nb_rx,
^~~~~
/projects/lagopus/src/dpdk/build/include/rte_ethdev.h:
3844:12: warning: conversion to 'int16_t' {aka 'short
int'} from 'uint16_t' {aka 'short unsigned int'} may
change the sign of the result [-Wsign-conversion]
nb_rx = cb->fn.rx(port_id, queue_id, rx_pkts, nb_rx,
^~
/projects/lagopus/src/dpdk/build/include/rte_ethdev.h:
3851:9: warning: conversion to 'uint16_t' {aka 'short
unsigned int'} from 'int16_t' {aka 'short int'} may
change the sign of the result [-Wsign-conversion]
return nb_rx;
^~~~~
The second part of the patch is solved by its own basic
block because it is inside a preprocessor conditional.
Bringing the declaration of the var to the top of the
function would require that also being given its own
preprocessor conditional, or a (void)var to avoid an
unused var warning. The basic block is no worse than
those imho.
Signed-off-by: Andy Green <andy@warmcat.com>
---
lib/librte_ethdev/rte_ethdev.h | 25 +++++++++++++++----------
1 file changed, 15 insertions(+), 10 deletions(-)
Comments
On Mon, May 21, 2018 at 10:01:33AM +0800, Andy Green wrote:
> /projects/lagopus/src/dpdk/build/include/rte_ethdev.h:
> In function 'rte_eth_rx_burst':
> /projects/lagopus/src/dpdk/build/include/rte_ethdev.h:
> 3836:18: warning: conversion to 'int16_t' {aka 'short
> int'} from 'uint16_t' {aka 'short unsigned int'} may
> change the sign of the result [-Wsign-conversion]
> int16_t nb_rx = (*dev->rx_pkt_burst)(dev->data->
> rx_queues[queue_id],
> ^
> /projects/lagopus/src/dpdk/build/include/rte_ethdev.h:
> 3844:50: warning: conversion to 'uint16_t' {aka 'short
> unsigned int'} from 'int16_t' {aka 'short int'} may
> change the sign of the result [-Wsign-conversion]
> nb_rx = cb->fn.rx(port_id, queue_id, rx_pkts, nb_rx,
> ^~~~~
> /projects/lagopus/src/dpdk/build/include/rte_ethdev.h:
> 3844:12: warning: conversion to 'int16_t' {aka 'short
> int'} from 'uint16_t' {aka 'short unsigned int'} may
> change the sign of the result [-Wsign-conversion]
> nb_rx = cb->fn.rx(port_id, queue_id, rx_pkts, nb_rx,
> ^~
> /projects/lagopus/src/dpdk/build/include/rte_ethdev.h:
> 3851:9: warning: conversion to 'uint16_t' {aka 'short
> unsigned int'} from 'int16_t' {aka 'short int'} may
> change the sign of the result [-Wsign-conversion]
> return nb_rx;
> ^~~~~
>
> The second part of the patch is solved by its own basic
> block because it is inside a preprocessor conditional.
>
> Bringing the declaration of the var to the top of the
> function would require that also being given its own
> preprocessor conditional, or a (void)var to avoid an
> unused var warning. The basic block is no worse than
> those imho.
>
> Signed-off-by: Andy Green <andy@warmcat.com>
> ---
> lib/librte_ethdev/rte_ethdev.h | 25 +++++++++++++++----------
> 1 file changed, 15 insertions(+), 10 deletions(-)
>
> diff --git a/lib/librte_ethdev/rte_ethdev.h b/lib/librte_ethdev/rte_ethdev.h
> index d52c1bed9..4d059a2a7 100644
> --- a/lib/librte_ethdev/rte_ethdev.h
> +++ b/lib/librte_ethdev/rte_ethdev.h
> @@ -3823,6 +3823,7 @@ rte_eth_rx_burst(uint16_t port_id, uint16_t queue_id,
> struct rte_mbuf **rx_pkts, const uint16_t nb_pkts)
> {
> struct rte_eth_dev *dev = &rte_eth_devices[port_id];
> + uint16_t nb_rx;
>
> #ifdef RTE_LIBRTE_ETHDEV_DEBUG
> RTE_ETH_VALID_PORTID_OR_ERR_RET(port_id, 0);
> @@ -3833,18 +3834,22 @@ rte_eth_rx_burst(uint16_t port_id, uint16_t queue_id,
> return 0;
> }
> #endif
> - int16_t nb_rx = (*dev->rx_pkt_burst)(dev->data->rx_queues[queue_id],
> - rx_pkts, nb_pkts);
> + nb_rx = (*dev->rx_pkt_burst)(dev->data->rx_queues[queue_id],
> + rx_pkts, nb_pkts);
>
> #ifdef RTE_ETHDEV_RXTX_CALLBACKS
> - struct rte_eth_rxtx_callback *cb = dev->post_rx_burst_cbs[queue_id];
> -
> - if (unlikely(cb != NULL)) {
> - do {
> - nb_rx = cb->fn.rx(port_id, queue_id, rx_pkts, nb_rx,
> - nb_pkts, cb->param);
> - cb = cb->next;
> - } while (cb != NULL);
> + {
> + struct rte_eth_rxtx_callback *cb =
> + dev->post_rx_burst_cbs[queue_id];
> +
> + if (unlikely(cb != NULL)) {
> + do {
> + nb_rx = cb->fn.rx(port_id, queue_id,
> + rx_pkts, nb_rx,
> + nb_pkts, cb->param);
> + cb = cb->next;
> + } while (cb != NULL);
> + }
> }
I think you can eliminate these extra brackets by moving the cb declaration
inside the if body:
if (unlikely(dev->post_rx_burst_cbs[queue_id] != NULL)) {$
struct rte_eth_rxtx_callback *cb =
dev->post_rx_burst_cbs[queue_id];
do {$
nb_rx = cb->fn.rx(port_id, queue_id, rx_pkts, nb_rx,$
nb_pkts, cb->param);$
cb = cb->next;$
} while (cb != NULL);$
}
/Bruce
On 05/21/2018 09:30 PM, Bruce Richardson wrote:
> On Mon, May 21, 2018 at 10:01:33AM +0800, Andy Green wrote:
>> /projects/lagopus/src/dpdk/build/include/rte_ethdev.h:
>> In function 'rte_eth_rx_burst':
>> /projects/lagopus/src/dpdk/build/include/rte_ethdev.h:
>> 3836:18: warning: conversion to 'int16_t' {aka 'short
>> int'} from 'uint16_t' {aka 'short unsigned int'} may
>> change the sign of the result [-Wsign-conversion]
>> int16_t nb_rx = (*dev->rx_pkt_burst)(dev->data->
>> rx_queues[queue_id],
>> ^
>> /projects/lagopus/src/dpdk/build/include/rte_ethdev.h:
>> 3844:50: warning: conversion to 'uint16_t' {aka 'short
>> unsigned int'} from 'int16_t' {aka 'short int'} may
>> change the sign of the result [-Wsign-conversion]
>> nb_rx = cb->fn.rx(port_id, queue_id, rx_pkts, nb_rx,
>> ^~~~~
>> /projects/lagopus/src/dpdk/build/include/rte_ethdev.h:
>> 3844:12: warning: conversion to 'int16_t' {aka 'short
>> int'} from 'uint16_t' {aka 'short unsigned int'} may
>> change the sign of the result [-Wsign-conversion]
>> nb_rx = cb->fn.rx(port_id, queue_id, rx_pkts, nb_rx,
>> ^~
>> /projects/lagopus/src/dpdk/build/include/rte_ethdev.h:
>> 3851:9: warning: conversion to 'uint16_t' {aka 'short
>> unsigned int'} from 'int16_t' {aka 'short int'} may
>> change the sign of the result [-Wsign-conversion]
>> return nb_rx;
>> ^~~~~
>>
>> The second part of the patch is solved by its own basic
>> block because it is inside a preprocessor conditional.
>>
>> Bringing the declaration of the var to the top of the
>> function would require that also being given its own
>> preprocessor conditional, or a (void)var to avoid an
>> unused var warning. The basic block is no worse than
>> those imho.
>>
>> Signed-off-by: Andy Green <andy@warmcat.com>
>> ---
>> lib/librte_ethdev/rte_ethdev.h | 25 +++++++++++++++----------
>> 1 file changed, 15 insertions(+), 10 deletions(-)
>>
>> diff --git a/lib/librte_ethdev/rte_ethdev.h b/lib/librte_ethdev/rte_ethdev.h
>> index d52c1bed9..4d059a2a7 100644
>> --- a/lib/librte_ethdev/rte_ethdev.h
>> +++ b/lib/librte_ethdev/rte_ethdev.h
>> @@ -3823,6 +3823,7 @@ rte_eth_rx_burst(uint16_t port_id, uint16_t queue_id,
>> struct rte_mbuf **rx_pkts, const uint16_t nb_pkts)
>> {
>> struct rte_eth_dev *dev = &rte_eth_devices[port_id];
>> + uint16_t nb_rx;
>>
>> #ifdef RTE_LIBRTE_ETHDEV_DEBUG
>> RTE_ETH_VALID_PORTID_OR_ERR_RET(port_id, 0);
>> @@ -3833,18 +3834,22 @@ rte_eth_rx_burst(uint16_t port_id, uint16_t queue_id,
>> return 0;
>> }
>> #endif
>> - int16_t nb_rx = (*dev->rx_pkt_burst)(dev->data->rx_queues[queue_id],
>> - rx_pkts, nb_pkts);
>> + nb_rx = (*dev->rx_pkt_burst)(dev->data->rx_queues[queue_id],
>> + rx_pkts, nb_pkts);
>>
>> #ifdef RTE_ETHDEV_RXTX_CALLBACKS
>> - struct rte_eth_rxtx_callback *cb = dev->post_rx_burst_cbs[queue_id];
>> -
>> - if (unlikely(cb != NULL)) {
>> - do {
>> - nb_rx = cb->fn.rx(port_id, queue_id, rx_pkts, nb_rx,
>> - nb_pkts, cb->param);
>> - cb = cb->next;
>> - } while (cb != NULL);
>> + {
>> + struct rte_eth_rxtx_callback *cb =
>> + dev->post_rx_burst_cbs[queue_id];
>> +
>> + if (unlikely(cb != NULL)) {
>> + do {
>> + nb_rx = cb->fn.rx(port_id, queue_id,
>> + rx_pkts, nb_rx,
>> + nb_pkts, cb->param);
>> + cb = cb->next;
>> + } while (cb != NULL);
>> + }
>> }
>
> I think you can eliminate these extra brackets by moving the cb declaration
> inside the if body:
>
> if (unlikely(dev->post_rx_burst_cbs[queue_id] != NULL)) {$
> struct rte_eth_rxtx_callback *cb =
> dev->post_rx_burst_cbs[queue_id];
> do {$
> nb_rx = cb->fn.rx(port_id, queue_id, rx_pkts, nb_rx,$
> nb_pkts, cb->param);$
> cb = cb->next;$
> } while (cb != NULL);$
> }
Okay... it repeats the expression but what the hey. It's changed to
that in the v7 just pushed.
-Andy
> /Bruce
>
@@ -3823,6 +3823,7 @@ rte_eth_rx_burst(uint16_t port_id, uint16_t queue_id,
struct rte_mbuf **rx_pkts, const uint16_t nb_pkts)
{
struct rte_eth_dev *dev = &rte_eth_devices[port_id];
+ uint16_t nb_rx;
#ifdef RTE_LIBRTE_ETHDEV_DEBUG
RTE_ETH_VALID_PORTID_OR_ERR_RET(port_id, 0);
@@ -3833,18 +3834,22 @@ rte_eth_rx_burst(uint16_t port_id, uint16_t queue_id,
return 0;
}
#endif
- int16_t nb_rx = (*dev->rx_pkt_burst)(dev->data->rx_queues[queue_id],
- rx_pkts, nb_pkts);
+ nb_rx = (*dev->rx_pkt_burst)(dev->data->rx_queues[queue_id],
+ rx_pkts, nb_pkts);
#ifdef RTE_ETHDEV_RXTX_CALLBACKS
- struct rte_eth_rxtx_callback *cb = dev->post_rx_burst_cbs[queue_id];
-
- if (unlikely(cb != NULL)) {
- do {
- nb_rx = cb->fn.rx(port_id, queue_id, rx_pkts, nb_rx,
- nb_pkts, cb->param);
- cb = cb->next;
- } while (cb != NULL);
+ {
+ struct rte_eth_rxtx_callback *cb =
+ dev->post_rx_burst_cbs[queue_id];
+
+ if (unlikely(cb != NULL)) {
+ do {
+ nb_rx = cb->fn.rx(port_id, queue_id,
+ rx_pkts, nb_rx,
+ nb_pkts, cb->param);
+ cb = cb->next;
+ } while (cb != NULL);
+ }
}
#endif