diff options
| author | Roland Dreier <rolandd@cisco.com> | 2006-08-03 12:44:22 -0400 |
|---|---|---|
| committer | Roland Dreier <rolandd@cisco.com> | 2006-08-03 12:44:22 -0400 |
| commit | 69e9fbb460fa8766428960439841ffcf565032c1 (patch) | |
| tree | 95d3e8f4947a438b9b7513d56b1ea622bcbe095d | |
| parent | bf74c7479ef47652005a2418eeb0d867451690da (diff) | |
IB/mthca: Clean up mthca array index mask
Define a constant MTHCA_ARRAY_MASK to replace repeated uses of
(PAGE_SIZE / sizeof (void *) - 1) in mthca array code.
Signed-off-by: Roland Dreier <rolandd@cisco.com>
| -rw-r--r-- | drivers/infiniband/hw/mthca/mthca_allocator.c | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/drivers/infiniband/hw/mthca/mthca_allocator.c b/drivers/infiniband/hw/mthca/mthca_allocator.c index 848e583273d4..25157f57a6d0 100644 --- a/drivers/infiniband/hw/mthca/mthca_allocator.c +++ b/drivers/infiniband/hw/mthca/mthca_allocator.c | |||
| @@ -108,14 +108,15 @@ void mthca_alloc_cleanup(struct mthca_alloc *alloc) | |||
| 108 | * serialize access to the array. | 108 | * serialize access to the array. |
| 109 | */ | 109 | */ |
| 110 | 110 | ||
| 111 | #define MTHCA_ARRAY_MASK (PAGE_SIZE / sizeof (void *) - 1) | ||
| 112 | |||
| 111 | void *mthca_array_get(struct mthca_array *array, int index) | 113 | void *mthca_array_get(struct mthca_array *array, int index) |
| 112 | { | 114 | { |
| 113 | int p = (index * sizeof (void *)) >> PAGE_SHIFT; | 115 | int p = (index * sizeof (void *)) >> PAGE_SHIFT; |
| 114 | 116 | ||
| 115 | if (array->page_list[p].page) { | 117 | if (array->page_list[p].page) |
| 116 | int i = index & (PAGE_SIZE / sizeof (void *) - 1); | 118 | return array->page_list[p].page[index & MTHCA_ARRAY_MASK]; |
| 117 | return array->page_list[p].page[i]; | 119 | else |
| 118 | } else | ||
| 119 | return NULL; | 120 | return NULL; |
| 120 | } | 121 | } |
| 121 | 122 | ||
| @@ -130,8 +131,7 @@ int mthca_array_set(struct mthca_array *array, int index, void *value) | |||
| 130 | if (!array->page_list[p].page) | 131 | if (!array->page_list[p].page) |
| 131 | return -ENOMEM; | 132 | return -ENOMEM; |
| 132 | 133 | ||
| 133 | array->page_list[p].page[index & (PAGE_SIZE / sizeof (void *) - 1)] = | 134 | array->page_list[p].page[index & MTHCA_ARRAY_MASK] = value; |
| 134 | value; | ||
| 135 | ++array->page_list[p].used; | 135 | ++array->page_list[p].used; |
| 136 | 136 | ||
| 137 | return 0; | 137 | return 0; |
| @@ -145,8 +145,7 @@ void mthca_array_clear(struct mthca_array *array, int index) | |||
| 145 | free_page((unsigned long) array->page_list[p].page); | 145 | free_page((unsigned long) array->page_list[p].page); |
| 146 | array->page_list[p].page = NULL; | 146 | array->page_list[p].page = NULL; |
| 147 | } else | 147 | } else |
| 148 | array->page_list[p].page[index & (PAGE_SIZE / | 148 | array->page_list[p].page[index & MTHCA_ARRAY_MASK] = NULL; |
| 149 | sizeof (void *) - 1)] = NULL; | ||
| 150 | 149 | ||
| 151 | if (array->page_list[p].used < 0) | 150 | if (array->page_list[p].used < 0) |
| 152 | pr_debug("Array %p index %d page %d with ref count %d < 0\n", | 151 | pr_debug("Array %p index %d page %d with ref count %d < 0\n", |
