net/bnxt: fix CLANG compilation error

Message ID 20200420062638.80181-1-ajit.khaparde@broadcom.com (mailing list archive)
State Accepted, archived
Delegated to: Ajit Khaparde
Headers
Series net/bnxt: fix CLANG compilation error |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/iol-intel-Performance success Performance Testing PASS
ci/iol-nxp-Performance success Performance Testing PASS
ci/iol-mellanox-Performance success Performance Testing PASS
ci/iol-testing fail Testing issues
ci/Intel-compilation success Compilation OK

Commit Message

Ajit Khaparde April 20, 2020, 6:26 a.m. UTC
  Fix a compilation error seen with CLANG.
The current code causes a typedef redefinition error because
'p__LINE__' is a C11 feature. Fixing it by defining it to something
which is not already defined in the language.

Fixes: 3ca9012a81f9 ("net/bnxt: add initial TruFlow core session open")

Reported-by: Raslan Darawsheh <rasland@mellanox.com>
Suggested-by: Lance Richardson <lance.richardson@broadcom.com>
Signed-off-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
Reviewed-by: Somnath Kotur <somnath.kotur@broadcom.com>
---
 drivers/net/bnxt/tf_core/hwrm_tf.h | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)
  

Comments

David Marchand April 20, 2020, 7:14 a.m. UTC | #1
On Mon, Apr 20, 2020 at 8:28 AM Ajit Khaparde
<ajit.khaparde@broadcom.com> wrote:
>
> Fix a compilation error seen with CLANG.
> The current code causes a typedef redefinition error because
> 'p__LINE__' is a C11 feature. Fixing it by defining it to something
> which is not already defined in the language.

Can't you reuse the RTE_BUILD_BUG_ON macro instead of redefining this
in your driver?
If the EAL macro is not enough, I suppose we could improve it.
  
Ferruh Yigit April 20, 2020, 12:22 p.m. UTC | #2
On 4/20/2020 8:14 AM, David Marchand wrote:
> On Mon, Apr 20, 2020 at 8:28 AM Ajit Khaparde
> <ajit.khaparde@broadcom.com> wrote:
>>
>> Fix a compilation error seen with CLANG.
>> The current code causes a typedef redefinition error because
>> 'p__LINE__' is a C11 feature. Fixing it by defining it to something
>> which is not already defined in the language.
> 
> Can't you reuse the RTE_BUILD_BUG_ON macro instead of redefining this
> in your driver?
> If the EAL macro is not enough, I suppose we could improve it.
> 

Will squash it on next-net to fix the build error. +1 to using
'RTE_BUILD_BUG_ON' comment if it possible but it can be done as incremental patch.
  
David Marchand April 20, 2020, 12:23 p.m. UTC | #3
On Mon, Apr 20, 2020 at 2:22 PM Ferruh Yigit <ferruh.yigit@intel.com> wrote:
> On 4/20/2020 8:14 AM, David Marchand wrote:
> > On Mon, Apr 20, 2020 at 8:28 AM Ajit Khaparde
> > <ajit.khaparde@broadcom.com> wrote:
> >>
> >> Fix a compilation error seen with CLANG.
> >> The current code causes a typedef redefinition error because
> >> 'p__LINE__' is a C11 feature. Fixing it by defining it to something
> >> which is not already defined in the language.
> >
> > Can't you reuse the RTE_BUILD_BUG_ON macro instead of redefining this
> > in your driver?
> > If the EAL macro is not enough, I suppose we could improve it.
> >
>
> Will squash it on next-net to fix the build error. +1 to using
> 'RTE_BUILD_BUG_ON' comment if it possible but it can be done as incremental patch.

Ack.
  
Ferruh Yigit April 20, 2020, 12:49 p.m. UTC | #4
On 4/20/2020 1:23 PM, David Marchand wrote:
> On Mon, Apr 20, 2020 at 2:22 PM Ferruh Yigit <ferruh.yigit@intel.com> wrote:
>> On 4/20/2020 8:14 AM, David Marchand wrote:
>>> On Mon, Apr 20, 2020 at 8:28 AM Ajit Khaparde
>>> <ajit.khaparde@broadcom.com> wrote:
>>>>
>>>> Fix a compilation error seen with CLANG.
>>>> The current code causes a typedef redefinition error because
>>>> 'p__LINE__' is a C11 feature. Fixing it by defining it to something
>>>> which is not already defined in the language.
>>>
>>> Can't you reuse the RTE_BUILD_BUG_ON macro instead of redefining this
>>> in your driver?
>>> If the EAL macro is not enough, I suppose we could improve it.
>>>
>>
>> Will squash it on next-net to fix the build error. +1 to using
>> 'RTE_BUILD_BUG_ON' comment if it possible but it can be done as incremental patch.
> 
> Ack.
> 

Squashed into relevant commit in next-net, thanks.
  

Patch

diff --git a/drivers/net/bnxt/tf_core/hwrm_tf.h b/drivers/net/bnxt/tf_core/hwrm_tf.h
index 2598ca7ee..6299d588a 100644
--- a/drivers/net/bnxt/tf_core/hwrm_tf.h
+++ b/drivers/net/bnxt/tf_core/hwrm_tf.h
@@ -37,7 +37,11 @@  typedef enum tf_subtype {
 #define TF_MAX_REQ_SIZE 104
 /* u32_t	tlv_resp_value[170]; */
 #define TF_MAX_RESP_SIZE 680
-#define BUILD_BUG_ON(condition) typedef char p__LINE__[(condition) ? 1 : -1]
+
+#define __BUILD_BUG_ON(condition, line) \
+	char p##line[(condition) ? 1 : -1]
+#define _BUILD_BUG_ON(condition, line) __BUILD_BUG_ON(condition, line)
+#define BUILD_BUG_ON(condition) _BUILD_BUG_ON(condition, __LINE__)
 
 /* Use this to allocate/free any kind of
  * indexes over HWRM and fill the parms pointer