RDMA/uverbs: Reduce number of command header flags checks
authorLeon Romanovsky <leonro@mellanox.com>
Wed, 21 Feb 2018 16:12:43 +0000 (18:12 +0200)
committerDoug Ledford <dledford@redhat.com>
Fri, 23 Feb 2018 03:31:18 +0000 (22:31 -0500)
Simplify the code by directly checking the availability of extended
command flog instead of doing multiple shift operations.

Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>
drivers/infiniband/core/uverbs_main.c
include/uapi/rdma/ib_user_verbs.h

index 2a6deec..fbba831 100644 (file)
@@ -657,19 +657,12 @@ static bool verify_command_idx(u32 command, bool extended)
 static ssize_t process_hdr(struct ib_uverbs_cmd_hdr *hdr,
                           u32 *command, bool *extended)
 {
-       u32 flags;
-
-       if (hdr->command & ~(u32)(IB_USER_VERBS_CMD_FLAGS_MASK |
+       if (hdr->command & ~(u32)(IB_USER_VERBS_CMD_FLAG_EXTENDED |
                                   IB_USER_VERBS_CMD_COMMAND_MASK))
                return -EINVAL;
 
        *command = hdr->command & IB_USER_VERBS_CMD_COMMAND_MASK;
-       flags = (hdr->command &
-                IB_USER_VERBS_CMD_FLAGS_MASK) >> IB_USER_VERBS_CMD_FLAGS_SHIFT;
-
-       *extended = flags & IB_USER_VERBS_CMD_FLAG_EXTENDED;
-       if (flags & ~IB_USER_VERBS_CMD_FLAG_EXTENDED)
-               return -EINVAL;
+       *extended = hdr->command & IB_USER_VERBS_CMD_FLAG_EXTENDED;
 
        if (!verify_command_idx(*command, *extended))
                return -EOPNOTSUPP;
index 04d0e67..d56fba0 100644 (file)
@@ -141,10 +141,7 @@ struct ib_uverbs_cq_moderation_caps {
  */
 
 #define IB_USER_VERBS_CMD_COMMAND_MASK 0xff
-#define IB_USER_VERBS_CMD_FLAGS_MASK 0xff000000u
-#define IB_USER_VERBS_CMD_FLAGS_SHIFT 24
-
-#define IB_USER_VERBS_CMD_FLAG_EXTENDED 0x80
+#define IB_USER_VERBS_CMD_FLAG_EXTENDED 0x80000000u
 
 struct ib_uverbs_cmd_hdr {
        __u32 command;