[v2,1/7] net/ixgbe: avoid multpile definitions of 'bool'

Message ID 20200102174838.12908-2-dharmik.thakkar@arm.com (mailing list archive)
State Superseded, archived
Delegated to: Ferruh Yigit
Headers
Series remove 'typedef int bool' |

Checks

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

Commit Message

Dharmik Thakkar Jan. 2, 2020, 5:48 p.m. UTC
  Compilation issue arises due to multiple definitions of 'bool'
in 'ixgbe_ethdev.h'.

Error:
'/dpdk/drivers/net/ixgbe/ixgbe_ethdev.c: In function
‘ixgbe_dev_setup_link_alarm_handler’:
/dpdk/drivers/net/ixgbe/ixgbe_ethdev.c:4075:43:
error: passing argument 3 of ‘ixgbe_get_link_capabilities’ from
incompatible pointer type [-Werror=incompatible-pointer-types]
   ixgbe_get_link_capabilities(hw, &speed, &autoneg);
                                           ^
In file included from /dpdk/drivers/net/ixgbe/ixgbe_ethdev.c:41:0:
/dpdk/drivers/net/ixgbe/base/ixgbe_api.h:63:5: note: expected
‘bool * {aka int *}’ but argument is of type ‘_Bool *’'

Signed-off-by: Dharmik Thakkar <dharmik.thakkar@arm.com>
Reviewed-by: Phil Yang <phil.yang@arm.com>
Reviewed-by: Gavin Hu <gavin.hu@arm.com>
---
 drivers/net/ixgbe/base/ixgbe_osdep.h | 4 +---
 drivers/net/ixgbe/ixgbe_ethdev.c     | 7 ++++---
 2 files changed, 5 insertions(+), 6 deletions(-)
  

Comments

Ferruh Yigit Jan. 10, 2020, 9:22 a.m. UTC | #1
On 1/2/2020 5:48 PM, Dharmik Thakkar wrote:
> Compilation issue arises due to multiple definitions of 'bool'
> in 'ixgbe_ethdev.h'.
> 
> Error:
> '/dpdk/drivers/net/ixgbe/ixgbe_ethdev.c: In function
> ‘ixgbe_dev_setup_link_alarm_handler’:
> /dpdk/drivers/net/ixgbe/ixgbe_ethdev.c:4075:43:
> error: passing argument 3 of ‘ixgbe_get_link_capabilities’ from
> incompatible pointer type [-Werror=incompatible-pointer-types]
>    ixgbe_get_link_capabilities(hw, &speed, &autoneg);
>                                            ^
> In file included from /dpdk/drivers/net/ixgbe/ixgbe_ethdev.c:41:0:
> /dpdk/drivers/net/ixgbe/base/ixgbe_api.h:63:5: note: expected
> ‘bool * {aka int *}’ but argument is of type ‘_Bool *’'
> 
> Signed-off-by: Dharmik Thakkar <dharmik.thakkar@arm.com>
> Reviewed-by: Phil Yang <phil.yang@arm.com>
> Reviewed-by: Gavin Hu <gavin.hu@arm.com>
> ---
>  drivers/net/ixgbe/base/ixgbe_osdep.h | 4 +---
>  drivers/net/ixgbe/ixgbe_ethdev.c     | 7 ++++---
>  2 files changed, 5 insertions(+), 6 deletions(-)
> 
> diff --git a/drivers/net/ixgbe/base/ixgbe_osdep.h b/drivers/net/ixgbe/base/ixgbe_osdep.h
> index ea8dc1cbe570..844d1701f595 100644
> --- a/drivers/net/ixgbe/base/ixgbe_osdep.h
> +++ b/drivers/net/ixgbe/base/ixgbe_osdep.h
> @@ -9,6 +9,7 @@
>  #include <stdint.h>
>  #include <stdio.h>
>  #include <stdarg.h>
> +#include <stdbool.h>
>  #include <rte_common.h>
>  #include <rte_debug.h>
>  #include <rte_cycles.h>
> @@ -82,9 +83,6 @@ typedef int16_t		s16;
>  typedef uint32_t	u32;
>  typedef int32_t		s32;
>  typedef uint64_t	u64;
> -#ifndef __cplusplus
> -typedef int		bool;
> -#endif
>  
>  #define mb()	rte_mb()
>  #define wmb()	rte_wmb()
> diff --git a/drivers/net/ixgbe/ixgbe_ethdev.c b/drivers/net/ixgbe/ixgbe_ethdev.c
> index 2c6fd0f13128..6cbd783e3a21 100644
> --- a/drivers/net/ixgbe/ixgbe_ethdev.c
> +++ b/drivers/net/ixgbe/ixgbe_ethdev.c
> @@ -2544,7 +2544,8 @@ ixgbe_dev_start(struct rte_eth_dev *dev)
>  	struct rte_pci_device *pci_dev = RTE_ETH_DEV_TO_PCI(dev);
>  	struct rte_intr_handle *intr_handle = &pci_dev->intr_handle;
>  	uint32_t intr_vector = 0;
> -	int err, link_up = 0, negotiate = 0;
> +	int err;
> +	bool link_up = 0, negotiate = 0;
>  	uint32_t speed = 0;
>  	uint32_t allowed_speeds = 0;
>  	int mask = 0;
> @@ -3993,7 +3994,7 @@ ixgbevf_dev_info_get(struct rte_eth_dev *dev,
>  
>  static int
>  ixgbevf_check_link(struct ixgbe_hw *hw, ixgbe_link_speed *speed,
> -		   int *link_up, int wait_to_complete)
> +		   bool *link_up, int wait_to_complete)
>  {
>  	struct ixgbe_adapter *adapter = container_of(hw,
>  						     struct ixgbe_adapter, hw);
> @@ -4124,7 +4125,7 @@ ixgbe_dev_link_update_share(struct rte_eth_dev *dev,
>  	ixgbe_link_speed link_speed = IXGBE_LINK_SPEED_UNKNOWN;
>  	struct ixgbe_interrupt *intr =
>  		IXGBE_DEV_PRIVATE_TO_INTR(dev->data->dev_private);
> -	int link_up;
> +	bool link_up;
>  	int diag;
>  	int wait = 1;
>  	u32 esdp_reg;
> 

Can you please rebase the patchset on of next-net, getting following build error
[1] because of a commit in next-net [2], the fix should be trivial [3].

CI seems not able to catch this, Cc'ed Aaron, Ali & Zhaoyan & Jeremy if they
want to investigate the issue.



[1]
.../drivers/net/ixgbe/ixgbe_ethdev.c:4137:38: error: incompatible pointer types
passing 'int *' to parameter of type 'bool *' [-Werror,-Wincompatible-pointer-types]
                err = ixgbe_check_link(hw, &speed, &link_up, 0);
                                                   ^~~~~~~~
.../drivers/net/ixgbe/base/ixgbe_api.h:62:14: note: passing argument to
parameter 'link_up' here
                     bool *link_up, bool link_up_wait_to_complete);
                           ^

[2]
commit 2f2639c872c8 ("net/ixgbe: fix port can not link up in FreeBSD")


[3]
 diff --git a/drivers/net/ixgbe/ixgbe_ethdev.c b/drivers/net/ixgbe/ixgbe_ethdev.c
 index 414b73c97..4f1704e79 100644
 --- a/drivers/net/ixgbe/ixgbe_ethdev.c
 +++ b/drivers/net/ixgbe/ixgbe_ethdev.c
 @@ -4130,7 +4130,8 @@ ixgbe_wait_for_link_up(struct ixgbe_hw *hw)
  #else
         const int nb_iter = 0;
  #endif
 -       int err, i, link_up = 0;
 +       int err, i = 0;
 +       bool link_up = false;
         uint32_t speed = 0;

         for (i = 0; i < nb_iter; i++) {
  
Dharmik Thakkar Jan. 10, 2020, 8:55 p.m. UTC | #2
Hi Ferruh,
Thank you for the comments!

I have rebased the patches on dpdk-next-net and fixed the issue.
I have put out the patch.

> On Jan 10, 2020, at 3:22 AM, Ferruh Yigit <ferruh.yigit@intel.com> wrote:
> 
> On 1/2/2020 5:48 PM, Dharmik Thakkar wrote:
>> Compilation issue arises due to multiple definitions of 'bool'
>> in 'ixgbe_ethdev.h'.
>> 
>> Error:
>> '/dpdk/drivers/net/ixgbe/ixgbe_ethdev.c: In function
>> ‘ixgbe_dev_setup_link_alarm_handler’:
>> /dpdk/drivers/net/ixgbe/ixgbe_ethdev.c:4075:43:
>> error: passing argument 3 of ‘ixgbe_get_link_capabilities’ from
>> incompatible pointer type [-Werror=incompatible-pointer-types]
>>   ixgbe_get_link_capabilities(hw, &speed, &autoneg);
>>                                           ^
>> In file included from /dpdk/drivers/net/ixgbe/ixgbe_ethdev.c:41:0:
>> /dpdk/drivers/net/ixgbe/base/ixgbe_api.h:63:5: note: expected
>> ‘bool * {aka int *}’ but argument is of type ‘_Bool *’'
>> 
>> Signed-off-by: Dharmik Thakkar <dharmik.thakkar@arm.com>
>> Reviewed-by: Phil Yang <phil.yang@arm.com>
>> Reviewed-by: Gavin Hu <gavin.hu@arm.com>
>> ---
>> drivers/net/ixgbe/base/ixgbe_osdep.h | 4 +---
>> drivers/net/ixgbe/ixgbe_ethdev.c     | 7 ++++---
>> 2 files changed, 5 insertions(+), 6 deletions(-)
>> 
>> diff --git a/drivers/net/ixgbe/base/ixgbe_osdep.h b/drivers/net/ixgbe/base/ixgbe_osdep.h
>> index ea8dc1cbe570..844d1701f595 100644
>> --- a/drivers/net/ixgbe/base/ixgbe_osdep.h
>> +++ b/drivers/net/ixgbe/base/ixgbe_osdep.h
>> @@ -9,6 +9,7 @@
>> #include <stdint.h>
>> #include <stdio.h>
>> #include <stdarg.h>
>> +#include <stdbool.h>
>> #include <rte_common.h>
>> #include <rte_debug.h>
>> #include <rte_cycles.h>
>> @@ -82,9 +83,6 @@ typedef int16_t		s16;
>> typedef uint32_t	u32;
>> typedef int32_t		s32;
>> typedef uint64_t	u64;
>> -#ifndef __cplusplus
>> -typedef int		bool;
>> -#endif
>> 
>> #define mb()	rte_mb()
>> #define wmb()	rte_wmb()
>> diff --git a/drivers/net/ixgbe/ixgbe_ethdev.c b/drivers/net/ixgbe/ixgbe_ethdev.c
>> index 2c6fd0f13128..6cbd783e3a21 100644
>> --- a/drivers/net/ixgbe/ixgbe_ethdev.c
>> +++ b/drivers/net/ixgbe/ixgbe_ethdev.c
>> @@ -2544,7 +2544,8 @@ ixgbe_dev_start(struct rte_eth_dev *dev)
>> 	struct rte_pci_device *pci_dev = RTE_ETH_DEV_TO_PCI(dev);
>> 	struct rte_intr_handle *intr_handle = &pci_dev->intr_handle;
>> 	uint32_t intr_vector = 0;
>> -	int err, link_up = 0, negotiate = 0;
>> +	int err;
>> +	bool link_up = 0, negotiate = 0;
>> 	uint32_t speed = 0;
>> 	uint32_t allowed_speeds = 0;
>> 	int mask = 0;
>> @@ -3993,7 +3994,7 @@ ixgbevf_dev_info_get(struct rte_eth_dev *dev,
>> 
>> static int
>> ixgbevf_check_link(struct ixgbe_hw *hw, ixgbe_link_speed *speed,
>> -		   int *link_up, int wait_to_complete)
>> +		   bool *link_up, int wait_to_complete)
>> {
>> 	struct ixgbe_adapter *adapter = container_of(hw,
>> 						     struct ixgbe_adapter, hw);
>> @@ -4124,7 +4125,7 @@ ixgbe_dev_link_update_share(struct rte_eth_dev *dev,
>> 	ixgbe_link_speed link_speed = IXGBE_LINK_SPEED_UNKNOWN;
>> 	struct ixgbe_interrupt *intr =
>> 		IXGBE_DEV_PRIVATE_TO_INTR(dev->data->dev_private);
>> -	int link_up;
>> +	bool link_up;
>> 	int diag;
>> 	int wait = 1;
>> 	u32 esdp_reg;
>> 
> 
> Can you please rebase the patchset on of next-net, getting following build error
> [1] because of a commit in next-net [2], the fix should be trivial [3].
> 
> CI seems not able to catch this, Cc'ed Aaron, Ali & Zhaoyan & Jeremy if they
> want to investigate the issue.
> 
> 
> 
> [1]
> .../drivers/net/ixgbe/ixgbe_ethdev.c:4137:38: error: incompatible pointer types
> passing 'int *' to parameter of type 'bool *' [-Werror,-Wincompatible-pointer-types]
>                err = ixgbe_check_link(hw, &speed, &link_up, 0);
>                                                   ^~~~~~~~
> .../drivers/net/ixgbe/base/ixgbe_api.h:62:14: note: passing argument to
> parameter 'link_up' here
>                     bool *link_up, bool link_up_wait_to_complete);
>                           ^
> 
> [2]
> commit 2f2639c872c8 ("net/ixgbe: fix port can not link up in FreeBSD")
> 
> 
> [3]
> diff --git a/drivers/net/ixgbe/ixgbe_ethdev.c b/drivers/net/ixgbe/ixgbe_ethdev.c
> index 414b73c97..4f1704e79 100644
> --- a/drivers/net/ixgbe/ixgbe_ethdev.c
> +++ b/drivers/net/ixgbe/ixgbe_ethdev.c
> @@ -4130,7 +4130,8 @@ ixgbe_wait_for_link_up(struct ixgbe_hw *hw)
>  #else
>         const int nb_iter = 0;
>  #endif
> -       int err, i, link_up = 0;
> +       int err, i = 0;
> +       bool link_up = false;
>         uint32_t speed = 0;
> 
>         for (i = 0; i < nb_iter; i++) {
  

Patch

diff --git a/drivers/net/ixgbe/base/ixgbe_osdep.h b/drivers/net/ixgbe/base/ixgbe_osdep.h
index ea8dc1cbe570..844d1701f595 100644
--- a/drivers/net/ixgbe/base/ixgbe_osdep.h
+++ b/drivers/net/ixgbe/base/ixgbe_osdep.h
@@ -9,6 +9,7 @@ 
 #include <stdint.h>
 #include <stdio.h>
 #include <stdarg.h>
+#include <stdbool.h>
 #include <rte_common.h>
 #include <rte_debug.h>
 #include <rte_cycles.h>
@@ -82,9 +83,6 @@  typedef int16_t		s16;
 typedef uint32_t	u32;
 typedef int32_t		s32;
 typedef uint64_t	u64;
-#ifndef __cplusplus
-typedef int		bool;
-#endif
 
 #define mb()	rte_mb()
 #define wmb()	rte_wmb()
diff --git a/drivers/net/ixgbe/ixgbe_ethdev.c b/drivers/net/ixgbe/ixgbe_ethdev.c
index 2c6fd0f13128..6cbd783e3a21 100644
--- a/drivers/net/ixgbe/ixgbe_ethdev.c
+++ b/drivers/net/ixgbe/ixgbe_ethdev.c
@@ -2544,7 +2544,8 @@  ixgbe_dev_start(struct rte_eth_dev *dev)
 	struct rte_pci_device *pci_dev = RTE_ETH_DEV_TO_PCI(dev);
 	struct rte_intr_handle *intr_handle = &pci_dev->intr_handle;
 	uint32_t intr_vector = 0;
-	int err, link_up = 0, negotiate = 0;
+	int err;
+	bool link_up = 0, negotiate = 0;
 	uint32_t speed = 0;
 	uint32_t allowed_speeds = 0;
 	int mask = 0;
@@ -3993,7 +3994,7 @@  ixgbevf_dev_info_get(struct rte_eth_dev *dev,
 
 static int
 ixgbevf_check_link(struct ixgbe_hw *hw, ixgbe_link_speed *speed,
-		   int *link_up, int wait_to_complete)
+		   bool *link_up, int wait_to_complete)
 {
 	struct ixgbe_adapter *adapter = container_of(hw,
 						     struct ixgbe_adapter, hw);
@@ -4124,7 +4125,7 @@  ixgbe_dev_link_update_share(struct rte_eth_dev *dev,
 	ixgbe_link_speed link_speed = IXGBE_LINK_SPEED_UNKNOWN;
 	struct ixgbe_interrupt *intr =
 		IXGBE_DEV_PRIVATE_TO_INTR(dev->data->dev_private);
-	int link_up;
+	bool link_up;
 	int diag;
 	int wait = 1;
 	u32 esdp_reg;