diff options
-rw-r--r-- | drivers/infiniband/hw/mlx4/alias_GUID.c | 6 | ||||
-rw-r--r-- | drivers/infiniband/hw/mlx4/sysfs.c | 18 |
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 @@ | |||
46 | static ssize_t show_admin_alias_guid(struct device *dev, | 46 | static 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 |