Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 69e9fbb4 authored by Roland Dreier's avatar Roland Dreier
Browse files

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: default avatarRoland Dreier <rolandd@cisco.com>
parent bf74c747
Loading
Loading
Loading
Loading
+7 −8
Original line number Diff line number Diff line
@@ -108,14 +108,15 @@ void mthca_alloc_cleanup(struct mthca_alloc *alloc)
 * serialize access to the array.
 */

#define MTHCA_ARRAY_MASK (PAGE_SIZE / sizeof (void *) - 1)

void *mthca_array_get(struct mthca_array *array, int index)
{
	int p = (index * sizeof (void *)) >> PAGE_SHIFT;

	if (array->page_list[p].page) {
		int i = index & (PAGE_SIZE / sizeof (void *) - 1);
		return array->page_list[p].page[i];
	} else
	if (array->page_list[p].page)
		return array->page_list[p].page[index & MTHCA_ARRAY_MASK];
	else
		return NULL;
}

@@ -130,8 +131,7 @@ int mthca_array_set(struct mthca_array *array, int index, void *value)
	if (!array->page_list[p].page)
		return -ENOMEM;

	array->page_list[p].page[index & (PAGE_SIZE / sizeof (void *) - 1)] =
		value;
	array->page_list[p].page[index & MTHCA_ARRAY_MASK] = value;
	++array->page_list[p].used;

	return 0;
@@ -145,8 +145,7 @@ void mthca_array_clear(struct mthca_array *array, int index)
		free_page((unsigned long) array->page_list[p].page);
		array->page_list[p].page = NULL;
	} else
		array->page_list[p].page[index & (PAGE_SIZE /
						  sizeof (void *) - 1)] = NULL;
		array->page_list[p].page[index & MTHCA_ARRAY_MASK] = NULL;

	if (array->page_list[p].used < 0)
		pr_debug("Array %p index %d page %d with ref count %d < 0\n",