From 38b617f43e1d3097cd38d3979967a5c02cb5ecf0 Mon Sep 17 00:00:00 2001 From: Or Gerlitz Date: Tue, 19 Jul 2011 09:28:42 +0000 Subject: [PATCH] Update kernel API header to include link_layer Modify the code to handle returning the link layer of a port from the kernel to the library. The kernel has done this since commit 2420b60b1dc4 ("IB/uverbs: Return link layer type to userspace for query port operation"), merged in 2.6.37-rc1. The new field does not change the size of struct ibv_query_port_resp as it replaces a reserved field. Binary compatibility between the kernel to the library is kept, since old kernels running below new library will not zero that field, so it will be read as "unspecified," while an old library running over new kernel will ignore the value returned by the kernel. The solution was suggested by Roland Dreier and Jason Gunthorpe Signed-off-by: Or Gerlitz Signed-off-by: Eli Cohen --- include/infiniband/kern-abi.h | 3 ++- src/cmd.c | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/include/infiniband/kern-abi.h b/include/infiniband/kern-abi.h index 0db083a..619ea7e 100644 --- a/include/infiniband/kern-abi.h +++ b/include/infiniband/kern-abi.h @@ -223,7 +223,8 @@ struct ibv_query_port_resp { __u8 active_width; __u8 active_speed; __u8 phys_state; - __u8 reserved[3]; + __u8 link_layer; + __u8 reserved[2]; }; struct ibv_alloc_pd { diff --git a/src/cmd.c b/src/cmd.c index cbd5288..39af833 100644 --- a/src/cmd.c +++ b/src/cmd.c @@ -196,6 +196,7 @@ int ibv_cmd_query_port(struct ibv_context *context, uint8_t port_num, port_attr->active_width = resp.active_width; port_attr->active_speed = resp.active_speed; port_attr->phys_state = resp.phys_state; + port_attr->link_layer = resp.link_layer; return 0; } -- 2.46.0