[Intel-wired-lan] [PATCH v3 07/13] ice: Use order_base_2 to calculate higher power of 2

Allan, Bruce W bruce.w.allan at intel.com
Wed Aug 1 23:02:10 UTC 2018


> -----Original Message-----
> From: Intel-wired-lan [mailto:intel-wired-lan-bounces at osuosl.org] On Behalf
> Of Anirudh Venkataramanan
> Sent: Tuesday, July 31, 2018 8:47 PM
> To: intel-wired-lan at lists.osuosl.org
> Subject: [Intel-wired-lan] [PATCH v3 07/13] ice: Use order_base_2 to calculate
> higher power of 2
> 
> From: Jacob Keller <jacob.e.keller at intel.com>
> 
> Currently, we use a combination of ilog2 and is_power_of_2() to
> calculate the next power of 2 for the qcount. This appears to be causing
> a warning on some combinations of GCC and the Linux kernel:
> 
> MODPOST 1 modules
> WARNING: "____ilog2_NaN" [ice.ko] undefined!
> 
> This appears to because because GCC realizes that qcount could be zero
> in some circumstances and thus attempts to link against the
> intentionally undefined ___ilog2_NaN function.
> 
> The order_base_2 function is intentionally defined to return 0 when
> passed 0 as an argument, and thus will be safe to use here.
> 
> This not only fixes the warning but makes the resulting code slightly
> cleaner, and is really what we should have used originally.
> 
> Also update the comment to make it more clear that we are rounding up,
> not just incrementing the ilog2 of qcount unconditionally.
> 
> Without this patch, we get warnings when building against the upstream
> kernel.

This last sentence is unnecessary for this upstream kernel patch.

> 
> Signed-off-by: Jacob Keller <jacob.e.keller at intel.com>
> Signed-off-by: Anirudh Venkataramanan
> <anirudh.venkataramanan at intel.com>
> ---
> [Anirudh Venkataramanan <anirudh.venkataramanan at intel.com> minor
> cleanup for upstream submission]
> ---
>  drivers/net/ethernet/intel/ice/ice_main.c | 7 ++-----
>  1 file changed, 2 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/net/ethernet/intel/ice/ice_main.c
> b/drivers/net/ethernet/intel/ice/ice_main.c
> index a1524cbb15b1..d4f1f92faf65 100644
> --- a/drivers/net/ethernet/intel/ice/ice_main.c
> +++ b/drivers/net/ethernet/intel/ice/ice_main.c
> @@ -1313,11 +1313,8 @@ static void ice_vsi_setup_q_map(struct ice_vsi *vsi,
> struct ice_vsi_ctx *ctxt)
>  		qcount = numq_tc;
>  	}
> 
> -	/* find higher power-of-2 of qcount */
> -	pow = ilog2(qcount);
> -
> -	if (!is_power_of_2(qcount))
> -		pow++;
> +	/* find the (rounded up) power-of-2 of qcount */
> +	pow = order_base_2(qcount);
> 
>  	for (i = 0; i < ICE_MAX_TRAFFIC_CLASS; i++) {
>  		if (!(vsi->tc_cfg.ena_tc & BIT(i))) {
> --
> 2.17.1
> 
> _______________________________________________
> Intel-wired-lan mailing list
> Intel-wired-lan at osuosl.org
> https://lists.osuosl.org/mailman/listinfo/intel-wired-lan


More information about the Intel-wired-lan mailing list