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

Commit fad61ad4 authored by Eli Cohen's avatar Eli Cohen Committed by Doug Ledford
Browse files

IB/core: Add subnet prefix to port info



The subnet prefix is a part of the port_info MAD returned and should be
available at the ib_port_attr struct. We define it here and provide a
default implementation in case the hardware driver does not provide one.
The subnet prefix is required when creating the address vector to access
the SA in networks where GRH must be used.

Signed-off-by: default avatarEli Cohen <eli@mellanox.com>
Reviewed-by: default avatarOr Gerlitz <ogerlitz@mellanox.com>
Signed-off-by: default avatarDoug Ledford <dledford@redhat.com>
parent d603c809
Loading
Loading
Loading
Loading
+14 −1
Original line number Diff line number Diff line
@@ -650,10 +650,23 @@ int ib_query_port(struct ib_device *device,
		  u8 port_num,
		  struct ib_port_attr *port_attr)
{
	union ib_gid gid;
	int err;

	if (port_num < rdma_start_port(device) || port_num > rdma_end_port(device))
		return -EINVAL;

	return device->query_port(device, port_num, port_attr);
	memset(port_attr, 0, sizeof(*port_attr));
	err = device->query_port(device, port_num, port_attr);
	if (err || port_attr->subnet_prefix)
		return err;

	err = ib_query_gid(device, port_num, 0, &gid, NULL);
	if (err)
		return err;

	port_attr->subnet_prefix = be64_to_cpu(gid.global.subnet_prefix);
	return 0;
}
EXPORT_SYMBOL(ib_query_port);

+1 −0
Original line number Diff line number Diff line
@@ -490,6 +490,7 @@ union rdma_protocol_stats {
					| RDMA_CORE_CAP_OPA_MAD)

struct ib_port_attr {
	u64			subnet_prefix;
	enum ib_port_state	state;
	enum ib_mtu		max_mtu;
	enum ib_mtu		active_mtu;