Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 09d208b2 authored by Guy Levi's avatar Guy Levi Committed by Doug Ledford
Browse files

IB/mlx4: Add report for RSS capabilities by vendor channel



The mlx4's RSS patches submission missed a report of RSS capabilities
which should be reported by the vendor channel in query_device.

Signed-off-by: default avatarGuy Levi <guyle@mellanox.com>
Reviewed-by: default avatarYishai Hadas <yishaih@mellanox.com>
Signed-off-by: default avatarLeon Romanovsky <leon@kernel.org>
Signed-off-by: default avatarDoug Ledford <dledford@redhat.com>
parent fec99ede
Loading
Loading
Loading
Loading
+17 −0
Original line number Diff line number Diff line
@@ -581,6 +581,23 @@ static int mlx4_ib_query_device(struct ib_device *ibdev,
			sizeof(struct mlx4_wqe_data_seg);
	}

	if (uhw->outlen >= resp.response_length + sizeof(resp.rss_caps)) {
		resp.response_length += sizeof(resp.rss_caps);
		if (props->rss_caps.supported_qpts) {
			resp.rss_caps.rx_hash_function =
				MLX4_IB_RX_HASH_FUNC_TOEPLITZ;
			resp.rss_caps.rx_hash_fields_mask =
				MLX4_IB_RX_HASH_SRC_IPV4 |
				MLX4_IB_RX_HASH_DST_IPV4 |
				MLX4_IB_RX_HASH_SRC_IPV6 |
				MLX4_IB_RX_HASH_DST_IPV6 |
				MLX4_IB_RX_HASH_SRC_PORT_TCP |
				MLX4_IB_RX_HASH_DST_PORT_TCP |
				MLX4_IB_RX_HASH_SRC_PORT_UDP |
				MLX4_IB_RX_HASH_DST_PORT_UDP;
		}
	}

	if (uhw->outlen) {
		err = ib_copy_to_udata(uhw, &resp, resp.response_length);
		if (err)
+11 −5
Original line number Diff line number Diff line
@@ -644,12 +644,18 @@ enum query_device_resp_mask {
	QUERY_DEVICE_RESP_MASK_TIMESTAMP = 1UL << 0,
};

struct mlx4_ib_rss_caps {
	__u64 rx_hash_fields_mask; /* enum mlx4_rx_hash_fields */
	__u8 rx_hash_function; /* enum mlx4_rx_hash_function_flags */
	__u8 reserved[7];
};

struct mlx4_uverbs_ex_query_device_resp {
	__u32			comp_mask;
	__u32			response_length;
	__u64			hca_core_clock_offset;
	__u32			max_inl_recv_sz;
	__u32 reserved;
	struct mlx4_ib_rss_caps	rss_caps;
};

static inline struct mlx4_ib_dev *to_mdev(struct ib_device *ibdev)