/* 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;
                        }