[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <59fd149c-bacc-c39c-b0d8-a4fb9366f26a@cogentembedded.com>
Date: Fri, 7 Sep 2018 18:33:08 +0300
From: Sergei Shtylyov <sergei.shtylyov@...entembedded.com>
To: Wang Dongsheng <dongsheng.wang@...-semitech.com>,
jeffrey.t.kirsher@...el.com
Cc: jacob.e.keller@...el.com, davem@...emloft.net,
intel-wired-lan@...ts.osuosl.org, netdev@...r.kernel.org,
linux-kernel@...r.kernel.org
Subject: Re: [PATCH v3 2/2] net: ethernet: i40evf: fix underlying build error
On 09/07/2018 02:19 PM, Wang Dongsheng wrote:
> Can't have non-inline function in a header file.
> There is a risk of "Multiple definition" from cross-including.
>
> Tested on: x86_64, make ARCH=i386
>
> Modules section .text:
> i40e: 00019380 <__i40e_add_stat_strings>:
> i40evf: 00006b00 <__i40e_add_stat_strings>:
>
> Buildin section .text:
> i40e: c351ca60 <__i40e_add_stat_strings>:
> i40evf: c354f2c0 <__i40e_add_stat_strings>:
>
> Signed-off-by: Wang Dongsheng <dongsheng.wang@...-semitech.com>
> ---
> V3: add static
> ---
> .../intel/i40evf/i40e_ethtool_stats.h | 23 +-----------------
> .../ethernet/intel/i40evf/i40evf_ethtool.c | 24 +++++++++++++++++++
> 2 files changed, 25 insertions(+), 22 deletions(-)
>
> diff --git a/drivers/net/ethernet/intel/i40evf/i40e_ethtool_stats.h b/drivers/net/ethernet/intel/i40evf/i40e_ethtool_stats.h
> index 60b595dd8c39..62ab67a77753 100644
> --- a/drivers/net/ethernet/intel/i40evf/i40e_ethtool_stats.h
> +++ b/drivers/net/ethernet/intel/i40evf/i40e_ethtool_stats.h
> @@ -181,29 +181,8 @@ i40evf_add_queue_stats(u64 **data, struct i40e_ring *ring)
> *data += size;
> }
>
> -/**
> - * __i40e_add_stat_strings - copy stat strings into ethtool buffer
> - * @p: ethtool supplied buffer
> - * @stats: stat definitions array
> - * @size: size of the stats array
> - *
> - * Format and copy the strings described by stats into the buffer pointed at
> - * by p.
> - **/
> static void __i40e_add_stat_strings(u8 **p, const struct i40e_stats stats[],
There's no point to keeping *static* function in the header file (unless it's
also *inline*).
> - const unsigned int size, ...)
> -{
> - unsigned int i;
> -
> - for (i = 0; i < size; i++) {
> - va_list args;
> -
> - va_start(args, size);
> - vsnprintf(*p, ETH_GSTRING_LEN, stats[i].stat_string, args);
> - *p += ETH_GSTRING_LEN;
> - va_end(args);
> - }
> -}
> + const unsigned int size, ...);
>
> /**
> * 40e_add_stat_strings - copy stat strings into ethtool buffer
[...]
MBR, Sergei
Powered by blists - more mailing lists