On Wed, Sep 05, 2018 at 08:10:25AM +0300, Leon Romanovsky wrote: > > > - int en_encap_decap = !!(flags & MLX5_FLOW_TABLE_TUNNEL_EN); > > > + int en_encap = !!(flags & MLX5_FLOW_TABLE_TUNNEL_EN_ENCAP); > > > + int en_decap = !!(flags & MLX5_FLOW_TABLE_TUNNEL_EN_DECAP); > > > > Yuk, please don't use !!. > > > > bool en_decap = flags & MLX5_FLOW_TABLE_TUNNEL_EN_DECAP; > > We need to provide en_encap and en_decap as an input to MLX5_SET(...) > which is passed to FW as 0 or 1. > > Boolean type is declared in C as int and treated as zero for false > and any other value for true, No, that isn't right, the kernel uses C99's _Bool intrinsic type, which is guaranteed to only hold 0 or 1 by the compiler. See types.h: typedef _Bool bool; Jason