diff options
author | Roland Dreier <rolandd@cisco.com> | 2005-09-29 19:31:34 +0000 |
---|---|---|
committer | Roland Dreier <rolandd@cisco.com> | 2006-11-09 11:35:57 -0800 |
commit | 1b57ddcbd6d900e11650e58f8e6dbd76e91f62a4 (patch) | |
tree | 89115c98a44499d5e40a9905325603a8423b3738 | |
parent | 7b127a2fdf37ac661d5ae1d4ba697fcedfb3b107 (diff) | |
download | libibverbs-1b57ddcbd6d900e11650e58f8e6dbd76e91f62a4.tar.gz |
Move formatting of device's firmware version into device-specific code
Signed-off-by: Roland Dreier <rolandd@cisco.com>
-rw-r--r-- | ChangeLog | 10 | ||||
-rw-r--r-- | examples/devinfo.c | 14 | ||||
-rw-r--r-- | include/infiniband/driver.h | 1 | ||||
-rw-r--r-- | include/infiniband/verbs.h | 2 | ||||
-rw-r--r-- | src/cmd.c | 4 |
5 files changed, 17 insertions, 14 deletions
@@ -1,3 +1,13 @@ +2005-09-29 Roland Dreier <roland@cisco.com> + + * examples/devinfo.c (print_hca_cap): Get rid of formatting of + firmware version in what should be device-independent code. + + * include/infiniband/driver.h, include/infiniband/verbs.h, + src/cmd.c (ibv_cmd_query_device): Change firmware version in + struct ibv_device_attr to be a string formatted by device-specific + library. + 2005-09-25 Roland Dreier <roland@cisco.com> * examples/rc_pingpong.c, examples/srq_pingpong.c, diff --git a/examples/devinfo.c b/examples/devinfo.c index 2d43caa..f60bfeb 100644 --- a/examples/devinfo.c +++ b/examples/devinfo.c @@ -169,17 +169,6 @@ static int print_all_port_gids(struct ibv_context *ctx, uint8_t port_num, int tb return rc; } -static const char *fw_ver_str(u_int64_t fw_ver, char *str) -{ - u_int32_t major, minor, sub_minor; - - major = (fw_ver >> 32) & 0xffff; - minor = (fw_ver >> 16) & 0xffff; - sub_minor = fw_ver & 0xffff; - sprintf(str, "%x.%x.%x", major, minor, sub_minor); - return str; -} - static int print_hca_cap(struct ibv_device *ib_dev, uint8_t ib_port) { struct ibv_context *ctx; @@ -202,7 +191,8 @@ static int print_hca_cap(struct ibv_device *ib_dev, uint8_t ib_port) } printf("hca_id:\t%s\n", ibv_get_device_name(ib_dev)); - printf("\tfw_ver:\t\t\t\t%s\n", fw_ver_str(device_attr.fw_ver, buf)); + if (strlen(device_attr.fw_ver)) + printf("\tfw_ver:\t\t\t\t%s\n", device_attr.fw_ver); printf("\tnode_guid:\t\t\t%s\n", guid_str(device_attr.node_guid, buf)); printf("\tsys_image_guid:\t\t\t%s\n", guid_str(device_attr.sys_image_guid, buf)); printf("\tmax_mr_size:\t\t\t0x%llx\n", (unsigned long long) device_attr.max_mr_size); diff --git a/include/infiniband/driver.h b/include/infiniband/driver.h index 3fe6d09..e310751 100644 --- a/include/infiniband/driver.h +++ b/include/infiniband/driver.h @@ -69,6 +69,7 @@ extern int ibv_cmd_get_context(struct ibv_context *context, struct ibv_get_conte size_t resp_size); extern int ibv_cmd_query_device(struct ibv_context *context, struct ibv_device_attr *device_attr, + uint64_t *raw_fw_ver, struct ibv_query_device *cmd, size_t cmd_size); extern int ibv_cmd_query_port(struct ibv_context *context, uint8_t port_num, struct ibv_port_attr *port_attr, diff --git a/include/infiniband/verbs.h b/include/infiniband/verbs.h index d58e586..bcc2fca 100644 --- a/include/infiniband/verbs.h +++ b/include/infiniband/verbs.h @@ -91,7 +91,7 @@ enum ibv_atomic_cap { }; struct ibv_device_attr { - uint64_t fw_ver; + char fw_ver[64]; uint64_t node_guid; uint64_t sys_image_guid; uint64_t max_mr_size; @@ -97,6 +97,7 @@ int ibv_cmd_get_context(struct ibv_context *context, struct ibv_get_context *cmd int ibv_cmd_query_device(struct ibv_context *context, struct ibv_device_attr *device_attr, + uint64_t *raw_fw_ver, struct ibv_query_device *cmd, size_t cmd_size) { struct ibv_query_device_resp resp; @@ -106,7 +107,8 @@ int ibv_cmd_query_device(struct ibv_context *context, if (write(context->cmd_fd, cmd, cmd_size) != cmd_size) return errno; - device_attr->fw_ver = resp.fw_ver; + memset(device_attr->fw_ver, 0, sizeof device_attr->fw_ver); + *raw_fw_ver = resp.fw_ver; device_attr->node_guid = resp.node_guid; device_attr->sys_image_guid = resp.sys_image_guid; device_attr->max_mr_size = resp.max_mr_size; |