IB/{core, ulp} Support above 32 possible device capability flags
authorLeon Romanovsky <leonro@mellanox.com>
Tue, 23 Feb 2016 08:25:25 +0000 (10:25 +0200)
committerDoug Ledford <dledford@redhat.com>
Mon, 21 Mar 2016 20:32:59 +0000 (16:32 -0400)
The old bitwise device_cap_flags variable was limited to u32 which
has all bits already defined. In order to overcome it, we converted
device_cap_flags variable to be u64 type.

Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
Reviewed-by: Matan Barak <matanb@mellanox.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>
drivers/infiniband/core/uverbs_cmd.c
drivers/infiniband/ulp/ipoib/ipoib.h
include/rdma/ib_verbs.h

index bb1b93c0a0168fefa590e0bc65ed73c871235ab4..6fdc7ecdaca0c3df64e471e9d7b4b3f8242f00ff 100644 (file)
@@ -402,7 +402,7 @@ static void copy_query_dev_fields(struct ib_uverbs_file *file,
        resp->hw_ver            = attr->hw_ver;
        resp->max_qp            = attr->max_qp;
        resp->max_qp_wr         = attr->max_qp_wr;
-       resp->device_cap_flags  = attr->device_cap_flags;
+       resp->device_cap_flags  = lower_32_bits(attr->device_cap_flags);
        resp->max_sge           = attr->max_sge;
        resp->max_sge_rd        = attr->max_sge_rd;
        resp->max_cq            = attr->max_cq;
index 85be0de3ab2635af080000136a04756073825a09..caec8e9c46669bf692d34a31735b86c446da1ff0 100644 (file)
@@ -388,7 +388,7 @@ struct ipoib_dev_priv {
        struct dentry *mcg_dentry;
        struct dentry *path_dentry;
 #endif
-       int     hca_caps;
+       u64     hca_caps;
        struct ipoib_ethtool_st ethtool;
        struct timer_list poll_timer;
        unsigned max_send_sge;
index 3a03c1d18afacf4aabb81137d922c6f39b7a2946..c9b62344d22ebaa37af9a36bbe24fbc10adb6ea2 100644 (file)
@@ -274,7 +274,7 @@ struct ib_device_attr {
        u32                     hw_ver;
        int                     max_qp;
        int                     max_qp_wr;
-       int                     device_cap_flags;
+       u64                     device_cap_flags;
        int                     max_sge;
        int                     max_sge_rd;
        int                     max_cq;