mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-26 12:26:11 +00:00
IB/core: Change port_attr.lid size from 16 to 32 bits
lid field in struct ib_port_attr is increased to 32 bits. This enables core components to use larger LIDs if needed. The user ABI is unchanged and return 16 bit values when queried. Signed-off-by: Dasaratharaman Chandramouli <dasaratharaman.chandramouli@intel.com> Reviewed-by: Ira Weiny <ira.weiny@intel.com> Signed-off-by: Don Hiatt <don.hiatt@intel.com> Signed-off-by: Doug Ledford <dledford@redhat.com>
This commit is contained in:
parent
1cb2fc0db7
commit
582faf3150
7 changed files with 11 additions and 6 deletions
|
@ -38,6 +38,7 @@
|
|||
#include <linux/cgroup_rdma.h>
|
||||
|
||||
#include <rdma/ib_verbs.h>
|
||||
#include <rdma/opa_addr.h>
|
||||
#include <rdma/ib_mad.h>
|
||||
#include "mad_priv.h"
|
||||
|
||||
|
|
|
@ -275,8 +275,11 @@ ssize_t ib_uverbs_query_port(struct ib_uverbs_file *file,
|
|||
resp.bad_pkey_cntr = attr.bad_pkey_cntr;
|
||||
resp.qkey_viol_cntr = attr.qkey_viol_cntr;
|
||||
resp.pkey_tbl_len = attr.pkey_tbl_len;
|
||||
resp.lid = attr.lid;
|
||||
resp.sm_lid = attr.sm_lid;
|
||||
if (rdma_cap_opa_ah(ib_dev, cmd.port_num))
|
||||
resp.lid = OPA_TO_IB_UCAST_LID(attr.lid);
|
||||
else
|
||||
resp.lid = (u16)attr.lid;
|
||||
resp.lmc = attr.lmc;
|
||||
resp.max_vl_num = attr.max_vl_num;
|
||||
resp.sm_sl = attr.sm_sl;
|
||||
|
|
|
@ -528,7 +528,7 @@ static int set_guid_rec(struct ib_device *ibdev,
|
|||
|
||||
memset(&guid_info_rec, 0, sizeof (struct ib_sa_guidinfo_rec));
|
||||
|
||||
guid_info_rec.lid = cpu_to_be16(attr.lid);
|
||||
guid_info_rec.lid = cpu_to_be16((u16)attr.lid);
|
||||
guid_info_rec.block_num = index;
|
||||
|
||||
memcpy(guid_info_rec.guid_info_list, rec_det->all_recs,
|
||||
|
|
|
@ -860,7 +860,7 @@ static int ib_process_mad(struct ib_device *ibdev, int mad_flags, u8 port_num,
|
|||
in_mad->mad_hdr.method == IB_MGMT_METHOD_SET &&
|
||||
in_mad->mad_hdr.attr_id == IB_SMP_ATTR_PORT_INFO &&
|
||||
!ib_query_port(ibdev, port_num, &pattr))
|
||||
prev_lid = pattr.lid;
|
||||
prev_lid = (u16)pattr.lid;
|
||||
|
||||
err = mlx4_MAD_IFC(to_mdev(ibdev),
|
||||
(mad_flags & IB_MAD_IGNORE_MKEY ? MLX4_MAD_IFC_IGNORE_MKEY : 0) |
|
||||
|
|
|
@ -256,7 +256,7 @@ int mthca_process_mad(struct ib_device *ibdev,
|
|||
in_mad->mad_hdr.method == IB_MGMT_METHOD_SET &&
|
||||
in_mad->mad_hdr.attr_id == IB_SMP_ATTR_PORT_INFO &&
|
||||
!ib_query_port(ibdev, port_num, &pattr))
|
||||
prev_lid = pattr.lid;
|
||||
prev_lid = (u16)pattr.lid;
|
||||
|
||||
err = mthca_MAD_IFC(to_mdev(ibdev),
|
||||
mad_flags & IB_MAD_IGNORE_MKEY,
|
||||
|
|
|
@ -549,8 +549,8 @@ struct ib_port_attr {
|
|||
u32 bad_pkey_cntr;
|
||||
u32 qkey_viol_cntr;
|
||||
u16 pkey_tbl_len;
|
||||
u16 lid;
|
||||
u16 sm_lid;
|
||||
u32 lid;
|
||||
u8 lmc;
|
||||
u8 max_vl_num;
|
||||
u8 sm_sl;
|
||||
|
|
|
@ -50,7 +50,8 @@
|
|||
|
||||
#define OPA_SPECIAL_OUI (0x00066AULL)
|
||||
#define OPA_MAKE_ID(x) (cpu_to_be64(OPA_SPECIAL_OUI << 40 | (x)))
|
||||
|
||||
#define OPA_TO_IB_UCAST_LID(x) (((x) >= be16_to_cpu(IB_MULTICAST_LID_BASE)) \
|
||||
? 0 : x)
|
||||
/**
|
||||
* ib_is_opa_gid: Returns true if the top 24 bits of the gid
|
||||
* contains the OPA_STL_OUI identifier. This identifies that
|
||||
|
|
Loading…
Reference in a new issue