Date: Fri, 21 Feb 2020 10:14:03 +0000 (UTC) From: Hans Petter Selasky <hselasky@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r358220 - head/sys/dev/mlx5/mlx5_ib Message-ID: <202002211014.01LAE3eB073212@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: hselasky Date: Fri Feb 21 10:14:02 2020 New Revision: 358220 URL: https://svnweb.freebsd.org/changeset/base/358220 Log: Fix broken MLX5_IB_INDEX() macro in mlx5ib(4). The index should be computed as distance from arg[0] and not the beginning of struct mlx5_ib_congestion . While at it fix a use of zero length array to avoid depending on undefined compiler behaviour. MFC after: 1 week Sponsored by: Mellanox Technologies Modified: head/sys/dev/mlx5/mlx5_ib/mlx5_ib.h head/sys/dev/mlx5/mlx5_ib/mlx5_ib_cong.c Modified: head/sys/dev/mlx5/mlx5_ib/mlx5_ib.h ============================================================================== --- head/sys/dev/mlx5/mlx5_ib/mlx5_ib.h Fri Feb 21 09:52:20 2020 (r358219) +++ head/sys/dev/mlx5/mlx5_ib/mlx5_ib.h Fri Feb 21 10:14:02 2020 (r358220) @@ -650,9 +650,13 @@ struct mlx5_ib_congestion { struct sysctl_ctx_list ctx; struct sx lock; struct delayed_work dwork; - u64 arg [0]; - MLX5_IB_CONG_PARAMS(MLX5_IB_STATS_VAR) - MLX5_IB_CONG_STATS(MLX5_IB_STATS_VAR) + union { + u64 arg[1]; + struct { + MLX5_IB_CONG_PARAMS(MLX5_IB_STATS_VAR) + MLX5_IB_CONG_STATS(MLX5_IB_STATS_VAR) + }; + }; }; struct mlx5_ib_dev { Modified: head/sys/dev/mlx5/mlx5_ib/mlx5_ib_cong.c ============================================================================== --- head/sys/dev/mlx5/mlx5_ib/mlx5_ib_cong.c Fri Feb 21 09:52:20 2020 (r358219) +++ head/sys/dev/mlx5/mlx5_ib/mlx5_ib_cong.c Fri Feb 21 10:14:02 2020 (r358220) @@ -1,5 +1,5 @@ /*- - * Copyright (c) 2013-2015, Mellanox Technologies, Ltd. All rights reserved. + * Copyright (c) 2013-2020, Mellanox Technologies, Ltd. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -37,7 +37,9 @@ static const char *mlx5_ib_cong_stats_desc[] = { MLX5_IB_CONG_STATS(MLX5_IB_STATS_DESC) }; -#define MLX5_IB_INDEX(field) (__offsetof(struct mlx5_ib_congestion, field) / sizeof(u64)) +#define MLX5_IB_INDEX(field) ( \ + (__offsetof(struct mlx5_ib_congestion, field) - \ + __offsetof(struct mlx5_ib_congestion, arg[0])) / sizeof(u64)) #define MLX5_IB_FLD_MAX(type, field) ((1ULL << __mlx5_bit_sz(type, field)) - 1ULL) #define MLX5_IB_SET_CLIPPED(type, ptr, field, var) do { \ /* rangecheck */ \
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202002211014.01LAE3eB073212>