Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 24 Feb 2020 10:42:37 +0000 (UTC)
From:      Hans Petter Selasky <hselasky@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org
Subject:   svn commit: r358282 - stable/11/sys/dev/mlx5/mlx5_ib
Message-ID:  <202002241042.01OAgbiL016022@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: hselasky
Date: Mon Feb 24 10:42:37 2020
New Revision: 358282
URL: https://svnweb.freebsd.org/changeset/base/358282

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/11/sys/dev/mlx5/mlx5_ib/mlx5_ib.h
  stable/11/sys/dev/mlx5/mlx5_ib/mlx5_ib_cong.c
Directory Properties:
  stable/11/   (props changed)

Modified: stable/11/sys/dev/mlx5/mlx5_ib/mlx5_ib.h
==============================================================================
--- stable/11/sys/dev/mlx5/mlx5_ib/mlx5_ib.h	Mon Feb 24 10:41:36 2020	(r358281)
+++ stable/11/sys/dev/mlx5/mlx5_ib/mlx5_ib.h	Mon Feb 24 10:42:37 2020	(r358282)
@@ -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/11/sys/dev/mlx5/mlx5_ib/mlx5_ib_cong.c
==============================================================================
--- stable/11/sys/dev/mlx5/mlx5_ib/mlx5_ib_cong.c	Mon Feb 24 10:41:36 2020	(r358281)
+++ stable/11/sys/dev/mlx5/mlx5_ib/mlx5_ib_cong.c	Mon Feb 24 10:42:37 2020	(r358282)
@@ -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?202002241042.01OAgbiL016022>