On Tue, May 29, 2018 at 04:09:15PM +0300, Leon Romanovsky wrote: > diff --git a/include/uapi/rdma/mlx5-abi.h b/include/uapi/rdma/mlx5-abi.h > index 508ea8c82da7..ef3f430a7050 100644 > +++ b/include/uapi/rdma/mlx5-abi.h > @@ -443,4 +443,18 @@ enum { > enum { > MLX5_IB_CLOCK_INFO_V1 = 0, > }; > + > +struct mlx5_ib_flow_counters_data { > + __aligned_u64 counters_data; > + __u32 ncounters; > + __u32 reserved; > +}; > + > +struct mlx5_ib_create_flow { > + __u32 ncounters_data; > + __u32 reserved; > + /* Following are counters data based on ncounters_data */ > + struct mlx5_ib_flow_counters_data data[]; > +}; > + > #endif /* MLX5_ABI_USER_H */ This uapi thing still needs to be fixed as I pointed out before. I still can't figure out why this should be a 2d array. I think it should be written simply as: struct mlx5_ib_flow_counter_desc { __u32 description; __u32 index; }; struct mlx5_ib_create_flow { RDMA_UAPI_PTR(struct mlx5_ib_flow_counter_desc, counters_data); __u32 ncounters; __u32 reserved; }; With the corresponding changes elsewhere. A flex array at the end of a struct means that the struct can never be extended again which seems like a terrible idea, especially since I can't fathom why we'd need more that one array of counters and the current code doesn't even support more than one.. Jason -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html