sfc: Remove redundant parameter to efx_filter_search()
authorBen Hutchings <bhutchings@solarflare.com>
Mon, 14 Jan 2013 21:23:14 +0000 (21:23 +0000)
committerBen Hutchings <bhutchings@solarflare.com>
Thu, 7 Mar 2013 20:21:59 +0000 (20:21 +0000)
The 'for_insert' parameter is redundant since there are no longer
any other operations that need to search based on a filter spec.

Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
drivers/net/ethernet/sfc/filter.c

index 2fdd3a5f21c4586b6b2fb4e7511ea9e01c07d7f5..3d94ed73c65e445e06bc5e41a1be86565880d683 100644 (file)
@@ -522,7 +522,7 @@ static bool efx_filter_equal(const struct efx_filter_spec *left,
 
 static int efx_filter_search(struct efx_filter_table *table,
                             struct efx_filter_spec *spec, u32 key,
-                            bool for_insert, unsigned int *depth_required)
+                            unsigned int *depth_required)
 {
        unsigned hash, incr, filter_idx, depth, depth_max;
 
@@ -531,25 +531,20 @@ static int efx_filter_search(struct efx_filter_table *table,
 
        filter_idx = hash & (table->size - 1);
        depth = 1;
-       depth_max = (for_insert ?
-                    (spec->priority <= EFX_FILTER_PRI_HINT ?
-                     FILTER_CTL_SRCH_HINT_MAX : FILTER_CTL_SRCH_MAX) :
-                    table->search_depth[spec->type]);
+       depth_max = (spec->priority <= EFX_FILTER_PRI_HINT ?
+                    FILTER_CTL_SRCH_HINT_MAX : FILTER_CTL_SRCH_MAX);
 
        for (;;) {
-               /* Return success if entry is used and matches this spec
-                * or entry is unused and we are trying to insert.
-                */
-               if (test_bit(filter_idx, table->used_bitmap) ?
-                   efx_filter_equal(spec, &table->spec[filter_idx]) :
-                   for_insert) {
+               /* Return success if entry is unused or matches this spec */
+               if (!test_bit(filter_idx, table->used_bitmap) ||
+                   efx_filter_equal(spec, &table->spec[filter_idx])) {
                        *depth_required = depth;
                        return filter_idx;
                }
 
                /* Return failure if we reached the maximum search depth */
                if (depth == depth_max)
-                       return for_insert ? -EBUSY : -ENOENT;
+                       return -EBUSY;
 
                filter_idx = (filter_idx + incr) & (table->size - 1);
                ++depth;
@@ -686,7 +681,7 @@ s32 efx_filter_insert_filter(struct efx_nic *efx, struct efx_filter_spec *spec,
 
        spin_lock_bh(&state->lock);
 
-       rc = efx_filter_search(table, spec, key, true, &depth);
+       rc = efx_filter_search(table, spec, key, &depth);
        if (rc < 0)
                goto out;
        filter_idx = rc;