diff mbox

[rdma-core] mlx4: Add a report of RSS capabilities in ibv_query_device_ex

Message ID 1511110582-20014-1-git-send-email-yishaih@mellanox.com (mailing list archive)
State Superseded
Headers show

Commit Message

Yishai Hadas Nov. 19, 2017, 4:56 p.m. UTC
From: Guy Levi <guyle@mellanox.com>

Report few extra RSS capabilities that were missed in previous patches.

Signed-off-by: Guy Levi <guyle@mellanox.com>
Reviewed-by: Yishai Hadas <yishaih@mellanox.com>
---

The matching kernel part was already merged into 4.15.
PR was sent:
https://github.com/linux-rdma/rdma-core/pull/256

 providers/mlx4/mlx4-abi.h | 8 +++++++-
 providers/mlx4/verbs.c    | 3 +++
 2 files changed, 10 insertions(+), 1 deletion(-)

Comments

Yishai Hadas Nov. 21, 2017, 8:08 a.m. UTC | #1
On 11/19/2017 6:56 PM, Yishai Hadas wrote:
> From: Guy Levi <guyle@mellanox.com>
> 
> Report few extra RSS capabilities that were missed in previous patches.
> 
> Signed-off-by: Guy Levi <guyle@mellanox.com>
> Reviewed-by: Yishai Hadas <yishaih@mellanox.com>
> ---
> 
> The matching kernel part was already merged into 4.15.
> PR was sent:
> https://github.com/linux-rdma/rdma-core/pull/256
> 
>   providers/mlx4/mlx4-abi.h | 8 +++++++-
>   providers/mlx4/verbs.c    | 3 +++
>   2 files changed, 10 insertions(+), 1 deletion(-)
> 
> diff --git a/providers/mlx4/mlx4-abi.h b/providers/mlx4/mlx4-abi.h
> index 4f2132c..c4783d2 100644
> --- a/providers/mlx4/mlx4-abi.h
> +++ b/providers/mlx4/mlx4-abi.h
> @@ -99,13 +99,19 @@ struct mlx4_resize_cq {
>   	__u64				buf_addr;
>   };
>   
> +struct mlx4_rss_caps {
> +	__u64 rx_hash_fields_mask; /* enum ibv_rx_hash_fields */
> +	__u8 rx_hash_function; /* enum ibv_rx_hash_function_flags */
> +	__u8 reserved[7];
> +};
> +
>   struct mlx4_query_device_ex_resp {
>   	struct ibv_query_device_resp_ex ibv_resp;
>   	__u32				comp_mask;
>   	__u32				response_length;
>   	__u64				hca_core_clock_offset;
>   	__u32				max_inl_recv_sz;
> -	__u32				reserved;
> +	struct mlx4_rss_caps            rss_caps; /* vendor data channel */
>   };
>   
>   struct mlx4_query_device_ex {
> diff --git a/providers/mlx4/verbs.c b/providers/mlx4/verbs.c
> index 8532882..8a2773f 100644
> --- a/providers/mlx4/verbs.c
> +++ b/providers/mlx4/verbs.c
> @@ -87,6 +87,9 @@ int mlx4_query_device_ex(struct ibv_context *context,
>   	if (err)
>   		return err;
>   
> +	attr->rss_caps.rx_hash_fields_mask = resp.rss_caps.rx_hash_fields_mask;
> +	attr->rss_caps.rx_hash_function = resp.rss_caps.rx_hash_function;
> +
>   	if (resp.comp_mask & MLX4_QUERY_DEV_RESP_MASK_CORE_CLOCK_OFFSET) {
>   		mctx->core_clock.offset = resp.hca_core_clock_offset;
>   		mctx->core_clock.offset_valid = 1;
> 

Thanks, merged.
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/providers/mlx4/mlx4-abi.h b/providers/mlx4/mlx4-abi.h
index 4f2132c..c4783d2 100644
--- a/providers/mlx4/mlx4-abi.h
+++ b/providers/mlx4/mlx4-abi.h
@@ -99,13 +99,19 @@  struct mlx4_resize_cq {
 	__u64				buf_addr;
 };
 
+struct mlx4_rss_caps {
+	__u64 rx_hash_fields_mask; /* enum ibv_rx_hash_fields */
+	__u8 rx_hash_function; /* enum ibv_rx_hash_function_flags */
+	__u8 reserved[7];
+};
+
 struct mlx4_query_device_ex_resp {
 	struct ibv_query_device_resp_ex ibv_resp;
 	__u32				comp_mask;
 	__u32				response_length;
 	__u64				hca_core_clock_offset;
 	__u32				max_inl_recv_sz;
-	__u32				reserved;
+	struct mlx4_rss_caps            rss_caps; /* vendor data channel */
 };
 
 struct mlx4_query_device_ex {
diff --git a/providers/mlx4/verbs.c b/providers/mlx4/verbs.c
index 8532882..8a2773f 100644
--- a/providers/mlx4/verbs.c
+++ b/providers/mlx4/verbs.c
@@ -87,6 +87,9 @@  int mlx4_query_device_ex(struct ibv_context *context,
 	if (err)
 		return err;
 
+	attr->rss_caps.rx_hash_fields_mask = resp.rss_caps.rx_hash_fields_mask;
+	attr->rss_caps.rx_hash_function = resp.rss_caps.rx_hash_function;
+
 	if (resp.comp_mask & MLX4_QUERY_DEV_RESP_MASK_CORE_CLOCK_OFFSET) {
 		mctx->core_clock.offset = resp.hca_core_clock_offset;
 		mctx->core_clock.offset_valid = 1;