svn commit: r341574 - in head/sys/dev/mlx5: . mlx5_fpga

Slava Shwartsman slavash at FreeBSD.org
Wed Dec 5 14:18:54 UTC 2018


Author: slavash
Date: Wed Dec  5 14:18:52 2018
New Revision: 341574
URL: https://svnweb.freebsd.org/changeset/base/341574

Log:
  mlx5fpga: Support MorseQ board
  
  Added and supported new enum "morseQ = 4" for fpga_id field
  
  Submitted by:   kib@
  Approved by:    hselasky (mentor)
  MFC after:      1 week
  Sponsored by:   Mellanox Technologies

Modified:
  head/sys/dev/mlx5/mlx5_fpga/mlx5fpga_core.c
  head/sys/dev/mlx5/mlx5io.h

Modified: head/sys/dev/mlx5/mlx5_fpga/mlx5fpga_core.c
==============================================================================
--- head/sys/dev/mlx5/mlx5_fpga/mlx5fpga_core.c	Wed Dec  5 14:17:22 2018	(r341573)
+++ head/sys/dev/mlx5/mlx5_fpga/mlx5fpga_core.c	Wed Dec  5 14:18:52 2018	(r341574)
@@ -138,6 +138,8 @@ static const char *mlx5_fpga_name(u32 fpga_id)
 		return "Edison";
 	case MLX5_FPGA_MORSE:
 		return "Morse";
+	case MLX5_FPGA_MORSEQ:
+		return "MorseQ";
 	}
 
 	snprintf(ret, sizeof(ret), "Unknown %d", fpga_id);
@@ -148,6 +150,7 @@ static int mlx5_fpga_device_load_check(struct mlx5_fpg
 {
 	struct mlx5_fpga_query query;
 	int err;
+	u32 fpga_id;
 
 	err = mlx5_fpga_query(fdev->mdev, &query);
 	if (err) {
@@ -162,8 +165,9 @@ static int mlx5_fpga_device_load_check(struct mlx5_fpg
 	mlx5_fpga_info(fdev, "Status %u; Admin image %u; Oper image %u\n",
 		      query.image_status, query.admin_image, query.oper_image);
 
-	/* For Morse project FPGA has no influence to network functionality */
-	if (MLX5_CAP_FPGA(fdev->mdev, fpga_id) == MLX5_FPGA_MORSE)
+	/* For Morse projects FPGA has no influence to network functionality */
+	fpga_id = MLX5_CAP_FPGA(fdev->mdev, fpga_id);
+	if (fpga_id == MLX5_FPGA_MORSE || fpga_id == MLX5_FPGA_MORSEQ)
 		return 0;
 
 	if (query.image_status != MLX5_FPGA_STATUS_SUCCESS) {
@@ -226,7 +230,7 @@ int mlx5_fpga_device_start(struct mlx5_core_dev *mdev)
 	fpga_id = MLX5_CAP_FPGA(fdev->mdev, fpga_id);
 	mlx5_fpga_info(fdev, "FPGA card %s\n", mlx5_fpga_name(fpga_id));
 
-	if (fpga_id == MLX5_FPGA_MORSE)
+	if (fpga_id == MLX5_FPGA_MORSE || fpga_id == MLX5_FPGA_MORSEQ)
 		goto out;
 
 	mlx5_fpga_info(fdev, "%s(%d) image, version %u; SBU %06x:%04x version %d\n",
@@ -361,13 +365,16 @@ void mlx5_fpga_device_stop(struct mlx5_core_dev *mdev)
 	unsigned int max_num_qps;
 	unsigned long flags;
 	int err;
+	u32 fpga_id;
 
 	if (!fdev)
 		return;
 
-	spin_lock_irqsave(&fdev->state_lock, flags);
-	if (MLX5_CAP_FPGA(mdev, fpga_id) == MLX5_FPGA_MORSE)
+	fpga_id = MLX5_CAP_FPGA(mdev, fpga_id);
+	if (fpga_id == MLX5_FPGA_MORSE || fpga_id == MLX5_FPGA_MORSEQ)
 		return;
+
+	spin_lock_irqsave(&fdev->state_lock, flags);
 
 	if (fdev->fdev_state != MLX5_FDEV_STATE_SUCCESS) {
 		spin_unlock_irqrestore(&fdev->state_lock, flags);

Modified: head/sys/dev/mlx5/mlx5io.h
==============================================================================
--- head/sys/dev/mlx5/mlx5io.h	Wed Dec  5 14:17:22 2018	(r341573)
+++ head/sys/dev/mlx5/mlx5io.h	Wed Dec  5 14:18:52 2018	(r341574)
@@ -61,6 +61,7 @@ enum mlx5_fpga_id {
 	MLX5_FPGA_NEWTON = 0,
 	MLX5_FPGA_EDISON = 1,
 	MLX5_FPGA_MORSE = 2,
+	MLX5_FPGA_MORSEQ = 3,
 };
 
 enum mlx5_fpga_image {


More information about the svn-src-all mailing list