summaryrefslogtreecommitdiffstats
path: root/drivers/infiniband/hw/efa/efa_common_defs.h
diff options
context:
space:
mode:
authorGal Pressman <galpress@amazon.com>2020-02-25 13:40:08 +0200
committerJason Gunthorpe <jgg@mellanox.com>2020-02-28 12:12:04 -0400
commit88d033077b2c7ca556a96b255bfa0ec502881b10 (patch)
tree6d88a52861b3f6e9e16763463123cba48c45834b /drivers/infiniband/hw/efa/efa_common_defs.h
parentcfec045b822a1c3f8f47604520d3194729d9d2af (diff)
RDMA/efa: Unified getters/setters for device structs bitmask access
Use unified macros for device structs access instead of open coding the shifts and masks over and over again. Link: https://lore.kernel.org/r/20200225114010.21790-2-galpress@amazon.com Reviewed-by: Firas JahJah <firasj@amazon.com> Reviewed-by: Yossi Leybovich <sleybo@amazon.com> Signed-off-by: Gal Pressman <galpress@amazon.com> Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
Diffstat (limited to 'drivers/infiniband/hw/efa/efa_common_defs.h')
-rw-r--r--drivers/infiniband/hw/efa/efa_common_defs.h13
1 files changed, 12 insertions, 1 deletions
diff --git a/drivers/infiniband/hw/efa/efa_common_defs.h b/drivers/infiniband/hw/efa/efa_common_defs.h
index c559ec08898e..90af1c82c9c6 100644
--- a/drivers/infiniband/hw/efa/efa_common_defs.h
+++ b/drivers/infiniband/hw/efa/efa_common_defs.h
@@ -1,14 +1,25 @@
/* SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause */
/*
- * Copyright 2018-2019 Amazon.com, Inc. or its affiliates. All rights reserved.
+ * Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All rights reserved.
*/
#ifndef _EFA_COMMON_H_
#define _EFA_COMMON_H_
+#include <linux/bitfield.h>
+
#define EFA_COMMON_SPEC_VERSION_MAJOR 2
#define EFA_COMMON_SPEC_VERSION_MINOR 0
+#define EFA_GET(ptr, mask) FIELD_GET(mask##_MASK, *(ptr))
+
+#define EFA_SET(ptr, mask, value) \
+ ({ \
+ typeof(ptr) _ptr = ptr; \
+ *_ptr = (*_ptr & ~(mask##_MASK)) | \
+ FIELD_PREP(mask##_MASK, value); \
+ })
+
struct efa_common_mem_addr {
u32 mem_addr_low;