IB/core: Add per port immutable struct to ib_device
As of commit 5eb620c81c
"IB/core: Add helpers for uncached GID and P_Key
searches"; pkey_tbl_len and gid_tbl_len are immutable data which are stored in
the ib_device.
The per port core capability flags to be added later are also immutable data to
be stored in the ib_device object.
In preparation for this create a structure for per port immutable data and
place the pkey and gid table lengths within this structure.
"get_port_immutable" is added as a mandatory device function to allow the
drivers to fill in this data.
Signed-off-by: Ira Weiny <ira.weiny@intel.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>
This commit is contained in:

zatwierdzone przez
Doug Ledford

rodzic
26c454288a
commit
7738613e7c
@@ -2046,6 +2046,22 @@ static void init_ibport(struct qib_pportdata *ppd)
|
||||
RCU_INIT_POINTER(ibp->qp1, NULL);
|
||||
}
|
||||
|
||||
static int qib_port_immutable(struct ib_device *ibdev, u8 port_num,
|
||||
struct ib_port_immutable *immutable)
|
||||
{
|
||||
struct ib_port_attr attr;
|
||||
int err;
|
||||
|
||||
err = qib_query_port(ibdev, port_num, &attr);
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
immutable->pkey_tbl_len = attr.pkey_tbl_len;
|
||||
immutable->gid_tbl_len = attr.gid_tbl_len;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* qib_register_ib_device - register our device with the infiniband core
|
||||
* @dd: the device data structure
|
||||
@@ -2234,6 +2250,7 @@ int qib_register_ib_device(struct qib_devdata *dd)
|
||||
ibdev->process_mad = qib_process_mad;
|
||||
ibdev->mmap = qib_mmap;
|
||||
ibdev->dma_ops = &qib_dma_mapping_ops;
|
||||
ibdev->get_port_immutable = qib_port_immutable;
|
||||
|
||||
snprintf(ibdev->node_desc, sizeof(ibdev->node_desc),
|
||||
"Intel Infiniband HCA %s", init_utsname()->nodename);
|
||||
|
Reference in New Issue
Block a user