All of lore.kernel.org
 help / color / mirror / Atom feed
From: Olivier MATZ <olivier.matz@6wind.com>
To: dev@dpdk.org, Jerin Jacob <jerin.jacob@caviumnetworks.com>
Cc: alejandro.lucero@netronome.com
Subject: Re: [PATCH] common: introduce an integer log2 function
Date: Thu, 6 Apr 2017 16:23:55 +0200	[thread overview]
Message-ID: <20170406162355.222dfbf3@glumotte.dev.6wind.com> (raw)
In-Reply-To: <20170406141536.14980-1-olivier.matz@6wind.com>

I forgot to CC Alejandro for nfp.

Also CC Jerin: I think the same could be done in thunderx, but
I did not want to do the patch since it changes the base/ driver.


On Thu,  6 Apr 2017 16:15:36 +0200, Olivier Matz <olivier.matz@6wind.com> wrote:
> At some places, the log2() function is used despite this function
> works on float. This introduces a dependency to the math lib but
> most of the time it is not required because we want an integer log2.
> 
> Add a new helper to do this job and fix 2 drivers.
> 
> Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
> ---
>  drivers/net/nfp/nfp_net.c                  |  6 ++----
>  lib/librte_eal/common/include/rte_common.h | 17 +++++++++++++++++
>  mk/rte.app.mk                              |  2 +-
>  3 files changed, 20 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/net/nfp/nfp_net.c b/drivers/net/nfp/nfp_net.c
> index a1ad97ad5..0e6a729ef 100644
> --- a/drivers/net/nfp/nfp_net.c
> +++ b/drivers/net/nfp/nfp_net.c
> @@ -39,8 +39,6 @@
>   * Netronome vNIC DPDK Poll-Mode Driver: Main entry point
>   */
>  
> -#include <math.h>
> -
>  #include <rte_byteorder.h>
>  #include <rte_common.h>
>  #include <rte_log.h>
> @@ -1493,7 +1491,7 @@ nfp_net_rx_queue_setup(struct rte_eth_dev *dev,
>  	 * of descriptors in log2 format
>  	 */
>  	nn_cfg_writeq(hw, NFP_NET_CFG_RXR_ADDR(queue_idx), rxq->dma);
> -	nn_cfg_writeb(hw, NFP_NET_CFG_RXR_SZ(queue_idx), log2(nb_desc));
> +	nn_cfg_writeb(hw, NFP_NET_CFG_RXR_SZ(queue_idx), rte_log2_u32(nb_desc));
>  
>  	return 0;
>  }
> @@ -1647,7 +1645,7 @@ nfp_net_tx_queue_setup(struct rte_eth_dev *dev, uint16_t queue_idx,
>  	 * of descriptors in log2 format
>  	 */
>  	nn_cfg_writeq(hw, NFP_NET_CFG_TXR_ADDR(queue_idx), txq->dma);
> -	nn_cfg_writeb(hw, NFP_NET_CFG_TXR_SZ(queue_idx), log2(nb_desc));
> +	nn_cfg_writeb(hw, NFP_NET_CFG_TXR_SZ(queue_idx), rte_log2_u32(nb_desc));
>  
>  	return 0;
>  }
> diff --git a/lib/librte_eal/common/include/rte_common.h b/lib/librte_eal/common/include/rte_common.h
> index e057f6e21..eea0054c1 100644
> --- a/lib/librte_eal/common/include/rte_common.h
> +++ b/lib/librte_eal/common/include/rte_common.h
> @@ -326,6 +326,23 @@ rte_bsf32(uint32_t v)
>  	return __builtin_ctz(v);
>  }
>  
> +/**
> + * Return the rounded-up log2 of a integer.
> + *
> + * @param v
> + *     The input parameter.
> + * @return
> + *     The rounded-up log2 of the input, or 0 if the input is 0.
> + */
> +static inline uint32_t
> +rte_log2_u32(uint32_t v)
> +{
> +	if (v == 0)
> +		return 0;
> +	v = rte_align32pow2(v);
> +	return rte_bsf32(v);
> +}
> +
>  #ifndef offsetof
>  /** Return the offset of a field in a structure. */
>  #define offsetof(TYPE, MEMBER)  __builtin_offsetof (TYPE, MEMBER)
> diff --git a/mk/rte.app.mk b/mk/rte.app.mk
> index 4c659e971..2fcd388e6 100644
> --- a/mk/rte.app.mk
> +++ b/mk/rte.app.mk
> @@ -125,7 +125,7 @@ endif
>  _LDLIBS-$(CONFIG_RTE_LIBRTE_LIO_PMD)        += -lrte_pmd_lio
>  _LDLIBS-$(CONFIG_RTE_LIBRTE_MLX4_PMD)       += -lrte_pmd_mlx4 -libverbs
>  _LDLIBS-$(CONFIG_RTE_LIBRTE_MLX5_PMD)       += -lrte_pmd_mlx5 -libverbs
> -_LDLIBS-$(CONFIG_RTE_LIBRTE_NFP_PMD)        += -lrte_pmd_nfp -lm
> +_LDLIBS-$(CONFIG_RTE_LIBRTE_NFP_PMD)        += -lrte_pmd_nfp
>  _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_NULL)       += -lrte_pmd_null
>  _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_PCAP)       += -lrte_pmd_pcap -lpcap
>  _LDLIBS-$(CONFIG_RTE_LIBRTE_QEDE_PMD)       += -lrte_pmd_qede

  reply	other threads:[~2017-04-06 14:23 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-04-06 14:15 [PATCH] common: introduce an integer log2 function Olivier Matz
2017-04-06 14:23 ` Olivier MATZ [this message]
2017-04-06 15:11   ` Jerin Jacob
2017-07-01 14:37   ` Thomas Monjalon
2017-07-03  8:16     ` Alejandro Lucero
2017-07-03  8:48 ` Thomas Monjalon

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20170406162355.222dfbf3@glumotte.dev.6wind.com \
    --to=olivier.matz@6wind.com \
    --cc=alejandro.lucero@netronome.com \
    --cc=dev@dpdk.org \
    --cc=jerin.jacob@caviumnetworks.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.