svn commit: r358281 - stable/12/sys/dev/mlx5/mlx5_ib
Hans Petter Selasky
hselasky at FreeBSD.org
Mon Feb 24 10:41:38 UTC 2020
Author: hselasky
Date: Mon Feb 24 10:41:36 2020
New Revision: 358281
URL: https://svnweb.freebsd.org/changeset/base/358281
Log:
MFC r358220:
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.
Sponsored by: Mellanox Technologies
Modified:
stable/12/sys/dev/mlx5/mlx5_ib/mlx5_ib.h
stable/12/sys/dev/mlx5/mlx5_ib/mlx5_ib_cong.c
Directory Properties:
stable/12/ (props changed)
Modified: stable/12/sys/dev/mlx5/mlx5_ib/mlx5_ib.h
==============================================================================
--- stable/12/sys/dev/mlx5/mlx5_ib/mlx5_ib.h Mon Feb 24 10:41:22 2020 (r358280)
+++ stable/12/sys/dev/mlx5/mlx5_ib/mlx5_ib.h Mon Feb 24 10:41:36 2020 (r358281)
@@ -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: stable/12/sys/dev/mlx5/mlx5_ib/mlx5_ib_cong.c
==============================================================================
--- stable/12/sys/dev/mlx5/mlx5_ib/mlx5_ib_cong.c Mon Feb 24 10:41:22 2020 (r358280)
+++ stable/12/sys/dev/mlx5/mlx5_ib/mlx5_ib_cong.c Mon Feb 24 10:41:36 2020 (r358281)
@@ -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-stable-12
mailing list