]> git.openfabrics.org - ~shefty/libibverbs.git/commitdiff
Move formatting of device's firmware version into device-specific code
authorRoland Dreier <rolandd@cisco.com>
Thu, 29 Sep 2005 19:31:34 +0000 (19:31 +0000)
committerRoland Dreier <rolandd@cisco.com>
Thu, 9 Nov 2006 19:35:57 +0000 (11:35 -0800)
Signed-off-by: Roland Dreier <rolandd@cisco.com>
ChangeLog
examples/devinfo.c
include/infiniband/driver.h
include/infiniband/verbs.h
src/cmd.c

index 5ba3ee2e32f3deb2b95f18e419ceeb1d4c7bb6cc..2c6fe347f482f560d866a0d45436a78d02a16c45 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -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,
index 2d43caa187e66a26def79eee4031fa41a8ff5826..f60bfebdc70fb63397cd9ab090dd58f4b2c844e8 100644 (file)
@@ -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);
index 3fe6d0984c3f92416de605f7f5df086613fb126a..e3107513419aeb36f45c7c31bc5523fcf6d9f561 100644 (file)
@@ -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,
index d58e58639f8236b4e2dc88d0816d92b5622e3820..bcc2fca9f340f0076173c08e58d44464d9aacc03 100644 (file)
@@ -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;
index 6daa097c2708238bbf2e4779e9b9226a2cd1beeb..c56081221e3b723bcc0b41b85257592377ad0893 100644 (file)
--- a/src/cmd.c
+++ b/src/cmd.c
@@ -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;