svn commit: r358220 - head/sys/dev/mlx5/mlx5_ib
Hans Petter Selasky
hselasky at FreeBSD.org
Fri Feb 21 10:14:04 UTC 2020
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 */ \
More information about the svn-src-all
mailing list