|WARNING| pw172362 [PATCH v2] gro: fix packet type comparisons

checkpatch at dpdk.org checkpatch at dpdk.org
Tue Nov 3 10:10:26 CET 2026


Test-Label: checkpatch
Test-Status: WARNING
http://dpdk.org/patch/172362

_coding style issues_


ERROR:COMPLEX_MACRO: Macros with complex values should be enclosed in parentheses
#151: FILE: lib/gro/rte_gro.c:65:
+#define IS_IPV4_VXLAN_FRAG4_PKT(ptype) (RTE_ETH_IS_IPV4_HDR(ptype) && \
+		((ptype & RTE_PTYPE_L4_MASK) == RTE_PTYPE_L4_UDP) && \
+		((ptype & RTE_PTYPE_TUNNEL_MASK) == \
 		 RTE_PTYPE_TUNNEL_VXLAN) && \
+		((ptype & RTE_PTYPE_INNER_L4_MASK) == \
+		 RTE_PTYPE_INNER_L4_FRAG) && \
 		(((ptype & RTE_PTYPE_INNER_L3_MASK) == \
 		  RTE_PTYPE_INNER_L3_IPV4) || \
 		 ((ptype & RTE_PTYPE_INNER_L3_MASK) == \

BUT SEE:

   do {} while (0) advice is over-stated in a few situations:

   The more obvious case is macros, like MODULE_PARM_DESC, invoked at
   file-scope, where C disallows code (it must be in functions).  See
   $exceptions if you have one to add by name.

   More troublesome is declarative macros used at top of new scope,
   like DECLARE_PER_CPU.  These might just compile with a do-while-0
   wrapper, but would be incorrect.  Most of these are handled by
   detecting struct,union,etc declaration primitives in $exceptions.

   Theres also macros called inside an if (block), which "return" an
   expression.  These cannot do-while, and need a ({}) wrapper.

   Enjoy this qualification while we work to improve our heuristics.

total: 1 errors, 0 warnings, 84 lines checked


More information about the test-report mailing list