* [PATCH net-next-2.6] sfc: Don't try to set filters with search depths we know won't work
@ 2010-10-07 17:50 Ben Hutchings
2010-10-08 17:36 ` David Miller
0 siblings, 1 reply; 2+ messages in thread
From: Ben Hutchings @ 2010-10-07 17:50 UTC (permalink / raw)
To: David Miller; +Cc: netdev, linux-net-drivers
The filter engine will time-out and ignore filters beyond
200-something hops. We also need to avoid infinite loops in
efx_filter_search() when the table is full.
Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
---
drivers/net/sfc/filter.c | 11 ++++++++++-
1 files changed, 10 insertions(+), 1 deletions(-)
diff --git a/drivers/net/sfc/filter.c b/drivers/net/sfc/filter.c
index abc884d..52cb608 100644
--- a/drivers/net/sfc/filter.c
+++ b/drivers/net/sfc/filter.c
@@ -20,6 +20,12 @@
#define FILTER_CTL_SRCH_FUDGE_WILD 3
#define FILTER_CTL_SRCH_FUDGE_FULL 1
+/* Hard maximum hop limit. Hardware will time-out beyond 200-something.
+ * We also need to avoid infinite loops in efx_filter_search() when the
+ * table is full.
+ */
+#define FILTER_CTL_SRCH_MAX 200
+
struct efx_filter_table {
u32 offset; /* address of table relative to BAR */
unsigned size; /* number of entries */
@@ -183,7 +189,8 @@ static int efx_filter_search(struct efx_filter_table *table,
incr = efx_filter_increment(key);
for (depth = 1, filter_idx = hash & (table->size - 1);
- test_bit(filter_idx, table->used_bitmap);
+ depth <= FILTER_CTL_SRCH_MAX &&
+ test_bit(filter_idx, table->used_bitmap);
++depth) {
cmp = &table->spec[filter_idx];
if (efx_filter_equal(spec, cmp))
@@ -192,6 +199,8 @@ static int efx_filter_search(struct efx_filter_table *table,
}
if (!for_insert)
return -ENOENT;
+ if (depth > FILTER_CTL_SRCH_MAX)
+ return -EBUSY;
found:
*depth_required = depth;
return filter_idx;
--
1.7.2.1
--
Ben Hutchings, Senior Software Engineer, Solarflare Communications
Not speaking for my employer; that's the marketing department's job.
They asked us to note that Solarflare product names are trademarked.
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH net-next-2.6] sfc: Don't try to set filters with search depths we know won't work
2010-10-07 17:50 [PATCH net-next-2.6] sfc: Don't try to set filters with search depths we know won't work Ben Hutchings
@ 2010-10-08 17:36 ` David Miller
0 siblings, 0 replies; 2+ messages in thread
From: David Miller @ 2010-10-08 17:36 UTC (permalink / raw)
To: bhutchings; +Cc: netdev, linux-net-drivers
From: Ben Hutchings <bhutchings@solarflare.com>
Date: Thu, 07 Oct 2010 18:50:31 +0100
> The filter engine will time-out and ignore filters beyond
> 200-something hops. We also need to avoid infinite loops in
> efx_filter_search() when the table is full.
>
> Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
Applied, thanks.
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2010-10-08 17:35 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-10-07 17:50 [PATCH net-next-2.6] sfc: Don't try to set filters with search depths we know won't work Ben Hutchings
2010-10-08 17:36 ` David Miller
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).