aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/infiniband/hw/mlx4/alias_GUID.c6
-rw-r--r--drivers/infiniband/hw/mlx4/sysfs.c18
2 files changed, 15 insertions, 9 deletions
diff --git a/drivers/infiniband/hw/mlx4/alias_GUID.c b/drivers/infiniband/hw/mlx4/alias_GUID.c
index a968388b8176..e4edd73f79b9 100644
--- a/drivers/infiniband/hw/mlx4/alias_GUID.c
+++ b/drivers/infiniband/hw/mlx4/alias_GUID.c
@@ -328,6 +328,12 @@ static void aliasguid_query_handler(int status,
328 } else { 328 } else {
329 *(__be64 *)&rec->all_recs[i * GUID_REC_SIZE] = 329 *(__be64 *)&rec->all_recs[i * GUID_REC_SIZE] =
330 sm_response; 330 sm_response;
331 if (required_val == 0)
332 mlx4_set_admin_guid(dev->dev,
333 sm_response,
334 (guid_rec->block_num
335 * NUM_ALIAS_GUID_IN_REC) + i,
336 cb_ctx->port);
331 goto next_entry; 337 goto next_entry;
332 } 338 }
333 } 339 }
diff --git a/drivers/infiniband/hw/mlx4/sysfs.c b/drivers/infiniband/hw/mlx4/sysfs.c
index 7423d7e4a829..bb1c34a4817e 100644
--- a/drivers/infiniband/hw/mlx4/sysfs.c
+++ b/drivers/infiniband/hw/mlx4/sysfs.c
@@ -46,21 +46,17 @@
46static ssize_t show_admin_alias_guid(struct device *dev, 46static ssize_t show_admin_alias_guid(struct device *dev,
47 struct device_attribute *attr, char *buf) 47 struct device_attribute *attr, char *buf)
48{ 48{
49 int record_num;/*0-15*/
50 int guid_index_in_rec; /*0 - 7*/
51 struct mlx4_ib_iov_sysfs_attr *mlx4_ib_iov_dentry = 49 struct mlx4_ib_iov_sysfs_attr *mlx4_ib_iov_dentry =
52 container_of(attr, struct mlx4_ib_iov_sysfs_attr, dentry); 50 container_of(attr, struct mlx4_ib_iov_sysfs_attr, dentry);
53 struct mlx4_ib_iov_port *port = mlx4_ib_iov_dentry->ctx; 51 struct mlx4_ib_iov_port *port = mlx4_ib_iov_dentry->ctx;
54 struct mlx4_ib_dev *mdev = port->dev; 52 struct mlx4_ib_dev *mdev = port->dev;
53 __be64 sysadmin_ag_val;
55 54
56 record_num = mlx4_ib_iov_dentry->entry_num / 8 ; 55 sysadmin_ag_val = mlx4_get_admin_guid(mdev->dev,
57 guid_index_in_rec = mlx4_ib_iov_dentry->entry_num % 8 ; 56 mlx4_ib_iov_dentry->entry_num,
57 port->num);
58 58
59 return sprintf(buf, "%llx\n", 59 return sprintf(buf, "%llx\n", be64_to_cpu(sysadmin_ag_val));
60 be64_to_cpu(*(__be64 *)&mdev->sriov.alias_guid.
61 ports_guid[port->num - 1].
62 all_rec_per_port[record_num].
63 all_recs[8 * guid_index_in_rec]));
64} 60}
65 61
66/* store_admin_alias_guid stores the (new) administratively assigned value of that GUID. 62/* store_admin_alias_guid stores the (new) administratively assigned value of that GUID.
@@ -98,6 +94,10 @@ static ssize_t store_admin_alias_guid(struct device *dev,
98 /* Change the state to be pending for update */ 94 /* Change the state to be pending for update */
99 mdev->sriov.alias_guid.ports_guid[port->num - 1].all_rec_per_port[record_num].status 95 mdev->sriov.alias_guid.ports_guid[port->num - 1].all_rec_per_port[record_num].status
100 = MLX4_GUID_INFO_STATUS_IDLE ; 96 = MLX4_GUID_INFO_STATUS_IDLE ;
97 mlx4_set_admin_guid(mdev->dev, cpu_to_be64(sysadmin_ag_val),
98 mlx4_ib_iov_dentry->entry_num,
99 port->num);
100
101 switch (sysadmin_ag_val) { 101 switch (sysadmin_ag_val) {
102 case MLX4_GUID_FOR_DELETE_VAL: 102 case MLX4_GUID_FOR_DELETE_VAL:
103 mdev->sriov.alias_guid.ports_guid[port->num - 1].all_rec_per_port[record_num].ownership 103 mdev->sriov.alias_guid.ports_guid[port->num - 1].all_rec_per_port[record_num].ownership