aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/infiniband/sw/rdmavt/vt.c
diff options
context:
space:
mode:
authorDennis Dalessandro <dennis.dalessandro@intel.com>2016-02-03 14:15:02 -0800
committerDoug Ledford <dledford@redhat.com>2016-03-10 20:37:31 -0500
commitf1badc716349cc2ac6e55ad50dcff598ef97bad5 (patch)
tree4185e010c23a99fc1118971bce88afa605f66a58 /drivers/infiniband/sw/rdmavt/vt.c
parentIB/rdmavt: Add Mem affinity support (diff)
downloadlinux-dev-f1badc716349cc2ac6e55ad50dcff598ef97bad5.tar.xz
linux-dev-f1badc716349cc2ac6e55ad50dcff598ef97bad5.zip
IB/rdmavt: Clean up distinction between port number and index
IB core uses 1 relative indexing for ports. All of our data structures use 0 based indexing. Add an inline function that we can use whenever we need to validate a legal value and try to convert a port number to a port index at the entrance into rdmavt. Try to follow the policy that when we are talking about a port from IB core point of view we refer to it as a port number. When port is an index into our arrays refer to it as a port index. Reviewed-by: Mike Marciniszyn <mike.marciniszyn@intel.com> Reviewed-by: Harish Chegondi <harish.chegondi@intel.com> Signed-off-by: Dennis Dalessandro <dennis.dalessandro@intel.com> Signed-off-by: Doug Ledford <dledford@redhat.com>
Diffstat (limited to 'drivers/infiniband/sw/rdmavt/vt.c')
-rw-r--r--drivers/infiniband/sw/rdmavt/vt.c36
1 files changed, 22 insertions, 14 deletions
diff --git a/drivers/infiniband/sw/rdmavt/vt.c b/drivers/infiniband/sw/rdmavt/vt.c
index d45206c2359e..9f9cb9ab170b 100644
--- a/drivers/infiniband/sw/rdmavt/vt.c
+++ b/drivers/infiniband/sw/rdmavt/vt.c
@@ -120,14 +120,17 @@ static int rvt_modify_device(struct ib_device *device,
/**
* rvt_query_port: Passes the query port call to the driver
* @ibdev: Verbs IB dev
- * @port: port number
+ * @port_num: port number, 1 based from ib core
* @props: structure to hold returned properties
*
* Returns 0 on success
*/
-static int rvt_query_port(struct ib_device *ibdev, u8 port,
+static int rvt_query_port(struct ib_device *ibdev, u8 port_num,
struct ib_port_attr *props)
{
+ if (ibport_num_to_idx(ibdev, port_num) < 0)
+ return -EINVAL;
+
/*
* VT-DRIVER-API: query_port_state()
* driver returns pretty much everything in ib_port_attr
@@ -138,13 +141,13 @@ static int rvt_query_port(struct ib_device *ibdev, u8 port,
/**
* rvt_modify_port
* @ibdev: Verbs IB dev
- * @port: Port number
+ * @port_num: Port number, 1 based from ib core
* @port_modify_mask: How to change the port
* @props: Structure to fill in
*
* Returns 0 on success
*/
-static int rvt_modify_port(struct ib_device *ibdev, u8 port,
+static int rvt_modify_port(struct ib_device *ibdev, u8 port_num,
int port_modify_mask, struct ib_port_modify *props)
{
/*
@@ -160,18 +163,21 @@ static int rvt_modify_port(struct ib_device *ibdev, u8 port,
* TBD: send_trap() and post_mad_send() need examined to see where they
* fit in.
*/
+ if (ibport_num_to_idx(ibdev, port_num) < 0)
+ return -EINVAL;
+
return -EOPNOTSUPP;
}
/**
* rvt_query_pkey - Return a pkey from the table at a given index
* @ibdev: Verbs IB dev
- * @port: Port number
+ * @port_num: Port number, 1 based from ib core
* @intex: Index into pkey table
*
* Returns 0 on failure pkey otherwise
*/
-static int rvt_query_pkey(struct ib_device *ibdev, u8 port, u16 index,
+static int rvt_query_pkey(struct ib_device *ibdev, u8 port_num, u16 index,
u16 *pkey)
{
/*
@@ -183,11 +189,11 @@ static int rvt_query_pkey(struct ib_device *ibdev, u8 port, u16 index,
struct rvt_dev_info *rdi = ib_to_rvt(ibdev);
int port_index;
- if (index >= rvt_get_npkeys(rdi))
+ port_index = ibport_num_to_idx(ibdev, port_num);
+ if (port_index < 0)
return -EINVAL;
- port_index = port - 1; /* IB ports start at 1 our array at 0 */
- if ((port_index < 0) || (port_index >= rdi->dparms.nports))
+ if (index >= rvt_get_npkeys(rdi))
return -EINVAL;
*pkey = rvt_get_pkey(rdi, port_index, index);
@@ -197,13 +203,13 @@ static int rvt_query_pkey(struct ib_device *ibdev, u8 port, u16 index,
/**
* rvt_query_gid - Return a gid from the table
* @ibdev: Verbs IB dev
- * @port: Port number
+ * @port_num: Port number, 1 based from ib core
* @index: = Index in table
* @gid: Gid to return
*
* Returns 0 on success
*/
-static int rvt_query_gid(struct ib_device *ibdev, u8 port,
+static int rvt_query_gid(struct ib_device *ibdev, u8 port_num,
int index, union ib_gid *gid)
{
/*
@@ -211,6 +217,8 @@ static int rvt_query_gid(struct ib_device *ibdev, u8 port,
* to craft the return value. This will work similar to how query_pkey()
* is being done.
*/
+ if (ibport_num_to_idx(ibdev, port_num) < 0)
+ return -EINVAL;
return -EOPNOTSUPP;
}
@@ -455,11 +463,11 @@ EXPORT_SYMBOL(rvt_unregister_device);
* They persist until the driver goes away.
*/
int rvt_init_port(struct rvt_dev_info *rdi, struct rvt_ibport *port,
- int portnum, u16 *pkey_table)
+ int port_index, u16 *pkey_table)
{
- rdi->ports[portnum] = port;
- rdi->ports[portnum]->pkey_table = pkey_table;
+ rdi->ports[port_index] = port;
+ rdi->ports[port_index]->pkey_table = pkey_table;
return 0;
}