net/bnxt: fix clang compiler warnings

Message ID 20211010040755.3882-1-ajit.khaparde@broadcom.com (mailing list archive)
State Changes Requested, archived
Delegated to: Ajit Khaparde
Headers
Series net/bnxt: fix clang compiler warnings |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/iol-intel-Functional success Functional Testing PASS
ci/iol-broadcom-Functional success Functional Testing PASS
ci/iol-broadcom-Performance success Performance Testing PASS
ci/iol-intel-Performance success Performance Testing PASS
ci/iol-x86_64-unit-testing fail Testing issues
ci/iol-x86_64-compile-testing success Testing PASS
ci/github-robot: build success github build: passed
ci/iol-mellanox-Performance success Performance Testing PASS
ci/iol-aarch64-compile-testing success Testing PASS
ci/Intel-compilation success Compilation OK
ci/intel-Testing success Testing PASS
ci/iol-aarch64-unit-testing success Testing PASS

Commit Message

Ajit Khaparde Oct. 10, 2021, 4:07 a.m. UTC
  From: Shahaji Bhosle <sbhosle@broadcom.com>

Fix an error reported during CLANG compilation.

-Wtautological-constant-out-of-range-compare for enums

$ export CC=clang
$ meson --werror --buildtype=debugoptimized build && ninja-build -C build
"
[..]
../../root/dpdk/drivers/net/bnxt/tf_ulp/ulp_rte_parser.c:140:18: error: comparison of constant 2147483648 with expression of type 'const enum rte_flow_item_type' is always false [-Werror,-Wtautological-constant-out-of-range-compare]
                if (item->type >= (uint32_t)
                    ~~~~~~~~~~ ^  ~~~~~~~~~~
../../root/dpdk/drivers/net/bnxt/tf_ulp/ulp_rte_parser.c:142:19: error: comparison of constant 2147483650 with expression of type 'const enum rte_flow_item_type' is always false [-Werror,-Wtautological-constant-out-of-range-compare]
                        if (item->type >=
                            ~~~~~~~~~~ ^
../../root/dpdk/drivers/net/bnxt/tf_ulp/ulp_rte_parser.c:188:25: error: comparison of constant 2147483648 with expression of type 'const enum rte_flow_action_type' is always false [-Werror,-Wtautological-constant-out-of-range-compare]
                if (action_item->type >=
                    ~~~~~~~~~~~~~~~~~ ^
../../root/dpdk/drivers/net/bnxt/tf_ulp/ulp_rte_parser.c:190:26: error: comparison of constant 2147483650 with expression of type 'const enum rte_flow_action_type' is always false [-Werror,-Wtautological-constant-out-of-range-compare]
                        if (action_item->type >=
                            ~~~~~~~~~~~~~~~~~ ^
4 errors generated.
"

Bugzilla ID: 821
Fixes: bdf4a3c6316b ("net/bnxt: support tunnel offload")

Signed-off-by: Shahaji Bhosle <sbhosle@broadcom.com>
Reviewed-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
---
 drivers/net/bnxt/tf_ulp/ulp_rte_parser.c | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)
  

Comments

Ajit Khaparde Oct. 11, 2021, 5:55 p.m. UTC | #1
On Sat, Oct 9, 2021 at 9:07 PM Ajit Khaparde <ajit.khaparde@broadcom.com> wrote:
>
> From: Shahaji Bhosle <sbhosle@broadcom.com>
>
> Fix an error reported during CLANG compilation.
>
> -Wtautological-constant-out-of-range-compare for enums
>
> $ export CC=clang
> $ meson --werror --buildtype=debugoptimized build && ninja-build -C build
> "
> [..]
> ../../root/dpdk/drivers/net/bnxt/tf_ulp/ulp_rte_parser.c:140:18: error: comparison of constant 2147483648 with expression of type 'const enum rte_flow_item_type' is always false [-Werror,-Wtautological-constant-out-of-range-compare]
>                 if (item->type >= (uint32_t)
>                     ~~~~~~~~~~ ^  ~~~~~~~~~~
> ../../root/dpdk/drivers/net/bnxt/tf_ulp/ulp_rte_parser.c:142:19: error: comparison of constant 2147483650 with expression of type 'const enum rte_flow_item_type' is always false [-Werror,-Wtautological-constant-out-of-range-compare]
>                         if (item->type >=
>                             ~~~~~~~~~~ ^
> ../../root/dpdk/drivers/net/bnxt/tf_ulp/ulp_rte_parser.c:188:25: error: comparison of constant 2147483648 with expression of type 'const enum rte_flow_action_type' is always false [-Werror,-Wtautological-constant-out-of-range-compare]
>                 if (action_item->type >=
>                     ~~~~~~~~~~~~~~~~~ ^
> ../../root/dpdk/drivers/net/bnxt/tf_ulp/ulp_rte_parser.c:190:26: error: comparison of constant 2147483650 with expression of type 'const enum rte_flow_action_type' is always false [-Werror,-Wtautological-constant-out-of-range-compare]
>                         if (action_item->type >=
>                             ~~~~~~~~~~~~~~~~~ ^
> 4 errors generated.
> "
>
> Bugzilla ID: 821
> Fixes: bdf4a3c6316b ("net/bnxt: support tunnel offload")
>
> Signed-off-by: Shahaji Bhosle <sbhosle@broadcom.com>
> Reviewed-by: Ajit Khaparde <ajit.khaparde@broadcom.com>

Patch applied to dpdk-next-net-brcm. Thanks
  
Stephen Hemminger Oct. 12, 2021, 2:46 a.m. UTC | #2
On Sat,  9 Oct 2021 21:07:55 -0700
Ajit Khaparde <ajit.khaparde@broadcom.com> wrote:

> +		if ((uint32_t)item->type >=
> +		    (uint32_t)BNXT_RTE_FLOW_ITEM_TYPE_END) {


This doesn't look right, you are casting away your troubles, not addressing
the root cause.

item->type is type rte_flow_item_type
BNXT_FLOW_ITEM_TYPE_END is the first item in that enum.

So yes the warning is valid and the code is wrong.
  
Ajit Khaparde Oct. 12, 2021, 4:08 a.m. UTC | #3
On Mon, Oct 11, 2021 at 7:46 PM Stephen Hemminger
<stephen@networkplumber.org> wrote:
>
> On Sat,  9 Oct 2021 21:07:55 -0700
> Ajit Khaparde <ajit.khaparde@broadcom.com> wrote:
>
> > +             if ((uint32_t)item->type >=
> > +                 (uint32_t)BNXT_RTE_FLOW_ITEM_TYPE_END) {
>
>
> This doesn't look right, you are casting away your troubles, not addressing
> the root cause.
>
> item->type is type rte_flow_item_type
> BNXT_FLOW_ITEM_TYPE_END is the first item in that enum.
>
> So yes the warning is valid and the code is wrong.
Thanks. We will work on the proper fix.
  

Patch

diff --git a/drivers/net/bnxt/tf_ulp/ulp_rte_parser.c b/drivers/net/bnxt/tf_ulp/ulp_rte_parser.c
index 3a9c9bba27..b589f2281e 100644
--- a/drivers/net/bnxt/tf_ulp/ulp_rte_parser.c
+++ b/drivers/net/bnxt/tf_ulp/ulp_rte_parser.c
@@ -137,9 +137,9 @@  bnxt_ulp_rte_parser_hdr_parse(const struct rte_flow_item pattern[],
 
 	/* Parse all the items in the pattern */
 	while (item && item->type != RTE_FLOW_ITEM_TYPE_END) {
-		if (item->type >= (uint32_t)
-		    BNXT_RTE_FLOW_ITEM_TYPE_END) {
-			if (item->type >=
+		if ((uint32_t)item->type >=
+		    (uint32_t)BNXT_RTE_FLOW_ITEM_TYPE_END) {
+			if ((uint32_t)item->type >=
 			    (uint32_t)BNXT_RTE_FLOW_ITEM_TYPE_LAST)
 				goto hdr_parser_error;
 			/* get the header information */
@@ -185,9 +185,9 @@  bnxt_ulp_rte_parser_act_parse(const struct rte_flow_action actions[],
 
 	/* Parse all the items in the pattern */
 	while (action_item && action_item->type != RTE_FLOW_ACTION_TYPE_END) {
-		if (action_item->type >=
+		if ((uint32_t)action_item->type >=
 		    (uint32_t)BNXT_RTE_FLOW_ACTION_TYPE_END) {
-			if (action_item->type >=
+			if ((uint32_t)action_item->type >=
 			    (uint32_t)BNXT_RTE_FLOW_ACTION_TYPE_LAST)
 				goto act_parser_error;
 			/* get the header information from bnxt actinfo table */