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-all mailing list