Commit 25131463 authored by Dennis Dalessandro's avatar Dennis Dalessandro Committed by Doug Ledford

staging/rdma/hfi1: Support query gid in rdmavt

Query gid is in rdmavt, but still relies on the driver to maintain the
guid table. Add the necessary driver call back and remove the existing
verb handler.
Reviewed-by: default avatarHarish Chegondi <harish.chegondi@intel.com>
Signed-off-by: default avatarDennis Dalessandro <dennis.dalessandro@intel.com>
Signed-off-by: default avatarDoug Ledford <dledford@redhat.com>
parent d05de341
...@@ -1345,28 +1345,20 @@ static int modify_port(struct ib_device *ibdev, u8 port, ...@@ -1345,28 +1345,20 @@ static int modify_port(struct ib_device *ibdev, u8 port,
return ret; return ret;
} }
static int query_gid(struct ib_device *ibdev, u8 port, static int hfi1_get_guid_be(struct rvt_dev_info *rdi, struct rvt_ibport *rvp,
int index, union ib_gid *gid) int guid_index, __be64 *guid)
{ {
struct hfi1_devdata *dd = dd_from_ibdev(ibdev); struct hfi1_ibport *ibp = container_of(rvp, struct hfi1_ibport, rvp);
int ret = 0;
if (!port || port > dd->num_pports)
ret = -EINVAL;
else {
struct hfi1_ibport *ibp = to_iport(ibdev, port);
struct hfi1_pportdata *ppd = ppd_from_ibp(ibp); struct hfi1_pportdata *ppd = ppd_from_ibp(ibp);
gid->global.subnet_prefix = ibp->rvp.gid_prefix; if (guid_index == 0)
if (index == 0) *guid = cpu_to_be64(ppd->guid);
gid->global.interface_id = cpu_to_be64(ppd->guid); else if (guid_index < HFI1_GUIDS_PER_PORT)
else if (index < HFI1_GUIDS_PER_PORT) *guid = ibp->guids[guid_index - 1];
gid->global.interface_id = ibp->guids[index - 1];
else else
ret = -EINVAL; return -EINVAL;
}
return ret; return 0;
} }
/* /*
...@@ -1538,7 +1530,6 @@ int hfi1_register_ib_device(struct hfi1_devdata *dd) ...@@ -1538,7 +1530,6 @@ int hfi1_register_ib_device(struct hfi1_devdata *dd)
ibdev->modify_device = modify_device; ibdev->modify_device = modify_device;
ibdev->query_port = query_port; ibdev->query_port = query_port;
ibdev->modify_port = modify_port; ibdev->modify_port = modify_port;
ibdev->query_gid = query_gid;
/* keep process mad in the driver */ /* keep process mad in the driver */
ibdev->process_mad = hfi1_process_mad; ibdev->process_mad = hfi1_process_mad;
...@@ -1555,6 +1546,7 @@ int hfi1_register_ib_device(struct hfi1_devdata *dd) ...@@ -1555,6 +1546,7 @@ int hfi1_register_ib_device(struct hfi1_devdata *dd)
dd->verbs_dev.rdi.driver_f.get_pci_dev = get_pci_dev; dd->verbs_dev.rdi.driver_f.get_pci_dev = get_pci_dev;
dd->verbs_dev.rdi.driver_f.check_ah = hfi1_check_ah; dd->verbs_dev.rdi.driver_f.check_ah = hfi1_check_ah;
dd->verbs_dev.rdi.driver_f.notify_new_ah = hfi1_notify_new_ah; dd->verbs_dev.rdi.driver_f.notify_new_ah = hfi1_notify_new_ah;
dd->verbs_dev.rdi.driver_f.get_guid_be = hfi1_get_guid_be;
/* /*
* Fill in rvt info device attributes. * Fill in rvt info device attributes.
*/ */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment