diff mbox series

[net-next] cxgb4: insert IPv6 filter rules in next free region

Message ID 0b35dad8bf171816a20ca6b8ba1c38aa96aeeaeb.1597919928.git.rahul.kundu@chelsio.com
State Accepted
Delegated to: David Miller
Headers show
Series [net-next] cxgb4: insert IPv6 filter rules in next free region | expand

Commit Message

Rahul Kundu Aug. 20, 2020, 11:01 a.m. UTC
IPv6 filters can occupy up to 4 slots and will exhaust HPFILTER
region much sooner. So, continue searching for free slots in the
HASH or NORMAL filter regions, as long as the rule's priority does
not conflict with existing rules in those regions.

Signed-off-by: Rahul Kundu <rahul.kundu@chelsio.com>
---
 .../net/ethernet/chelsio/cxgb4/cxgb4_filter.c   | 17 +++++++----------
 1 file changed, 7 insertions(+), 10 deletions(-)

Comments

David Miller Aug. 20, 2020, 7:03 p.m. UTC | #1
From: Rahul Kundu <rahul.kundu@chelsio.com>
Date: Thu, 20 Aug 2020 16:31:36 +0530

> IPv6 filters can occupy up to 4 slots and will exhaust HPFILTER
> region much sooner. So, continue searching for free slots in the
> HASH or NORMAL filter regions, as long as the rule's priority does
> not conflict with existing rules in those regions.
> 
> Signed-off-by: Rahul Kundu <rahul.kundu@chelsio.com>

Applied, thank you.
diff mbox series

Patch

diff --git a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_filter.c b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_filter.c
index 650db92cb11c..f6c1ec140e09 100644
--- a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_filter.c
+++ b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_filter.c
@@ -604,17 +604,14 @@  int cxgb4_get_free_ftid(struct net_device *dev, u8 family, bool hash_en,
 			/* If the new rule wants to get inserted into
 			 * HPFILTER region, but its prio is greater
 			 * than the rule with the highest prio in HASH
-			 * region, then reject the rule.
-			 */
-			if (t->tc_hash_tids_max_prio &&
-			    tc_prio > t->tc_hash_tids_max_prio)
-				break;
-
-			/* If there's not enough slots available
-			 * in HPFILTER region, then move on to
-			 * normal FILTER region immediately.
+			 * region, or if there's not enough slots
+			 * available in HPFILTER region, then skip
+			 * trying to insert this rule into HPFILTER
+			 * region and directly go to the next region.
 			 */
-			if (ftid + n > t->nhpftids) {
+			if ((t->tc_hash_tids_max_prio &&
+			     tc_prio > t->tc_hash_tids_max_prio) ||
+			     (ftid + n) > t->nhpftids) {
 				ftid = t->nhpftids;
 				continue;
 			}