Lines Matching refs:depth

62 #define VERIFY_DEPTH(depth) do {                                \  argument
63 if ((depth == 0) || (depth > RTE_LPM_MAX_DEPTH)) \
65 (unsigned)(depth), __LINE__); \
68 #define VERIFY_DEPTH(depth) argument
78 depth_to_mask(uint8_t depth) in depth_to_mask() argument
80 VERIFY_DEPTH(depth); in depth_to_mask()
85 return (int)0x80000000 >> (depth - 1); in depth_to_mask()
92 depth_to_range(uint8_t depth) in depth_to_range() argument
94 VERIFY_DEPTH(depth); in depth_to_range()
99 if (depth <= MAX_DEPTH_TBL24) in depth_to_range()
100 return 1 << (MAX_DEPTH_TBL24 - depth); in depth_to_range()
103 return 1 << (RTE_LPM_MAX_DEPTH - depth); in depth_to_range()
290 rule_add(struct rte_lpm *lpm, uint32_t ip_masked, uint8_t depth,
296 VERIFY_DEPTH(depth);
299 if (lpm->rule_info[depth - 1].used_rules > 0) {
302 rule_gindex = lpm->rule_info[depth - 1].first_rule;
306 last_rule = rule_gindex + lpm->rule_info[depth - 1].used_rules;
328 for (i = depth - 1; i > 0; i--) {
338 lpm->rule_info[depth - 1].first_rule = rule_index;
342 for (i = RTE_LPM_MAX_DEPTH; i > depth; i--) {
360 lpm->rule_info[depth - 1].used_rules++;
370 rule_delete(struct rte_lpm *lpm, int32_t rule_index, uint8_t depth)
374 VERIFY_DEPTH(depth);
377 lpm->rules_tbl[lpm->rule_info[depth - 1].first_rule
378 + lpm->rule_info[depth - 1].used_rules - 1];
380 for (i = depth; i < RTE_LPM_MAX_DEPTH; i++) {
389 lpm->rule_info[depth - 1].used_rules--;
397 rule_find(struct rte_lpm *lpm, uint32_t ip_masked, uint8_t depth)
401 VERIFY_DEPTH(depth);
403 rule_gindex = lpm->rule_info[depth - 1].first_rule;
404 last_rule = rule_gindex + lpm->rule_info[depth - 1].used_rules;
435 .depth = 0, in tbl8_alloc()
466 add_depth_small(struct rte_lpm *lpm, uint32_t ip, uint8_t depth, in add_depth_small() argument
474 tbl24_range = depth_to_range(depth); in add_depth_small()
482 lpm->tbl24[i].depth <= depth)) { in add_depth_small()
488 .depth = depth, in add_depth_small()
511 lpm->tbl8[j].depth <= depth) { in add_depth_small()
516 .depth = depth, in add_depth_small()
538 add_depth_big(struct rte_lpm *lpm, uint32_t ip_masked, uint8_t depth, in add_depth_big() argument
547 tbl8_range = depth_to_range(depth); in add_depth_big()
567 .depth = depth, in add_depth_big()
585 .depth = 0, in add_depth_big()
612 .depth = lpm->tbl24[tbl24_index].depth, in add_depth_big()
626 .depth = depth, in add_depth_big()
644 .depth = 0, in add_depth_big()
664 lpm->tbl8[i].depth <= depth) { in add_depth_big()
667 .depth = depth, in add_depth_big()
691 rte_lpm_add(struct rte_lpm *lpm, uint32_t ip, uint8_t depth, in rte_lpm_add() argument
698 if ((lpm == NULL) || (depth < 1) || (depth > RTE_LPM_MAX_DEPTH)) in rte_lpm_add()
701 ip_masked = ip & depth_to_mask(depth); in rte_lpm_add()
705 rule_index = rule_add(lpm, ip_masked, depth, next_hop); in rte_lpm_add()
719 if (depth <= MAX_DEPTH_TBL24) { in rte_lpm_add()
720 status = add_depth_small(lpm, ip_masked, depth, next_hop); in rte_lpm_add()
722 status = add_depth_big(lpm, ip_masked, depth, next_hop); in rte_lpm_add()
743 rte_lpm_is_rule_present(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
752 (depth < 1) || (depth > RTE_LPM_MAX_DEPTH))
756 ip_masked = ip & depth_to_mask(depth);
757 rule_index = rule_find(lpm, ip_masked, depth);
769 find_previous_rule(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
776 for (prev_depth = (uint8_t)(depth - 1); prev_depth > 0; prev_depth--) {
793 uint8_t depth, uint32_t sub_rule_nhop, uint8_t sub_rule_depth) in delete_depth_small() argument
799 tbl24_range = depth_to_range(depth); in delete_depth_small()
815 lpm->tbl24[i].depth <= depth) { in delete_depth_small()
832 if (lpm->tbl8[j].depth <= depth) in delete_depth_small()
847 .depth = sub_rule_depth, in delete_depth_small()
853 .depth = sub_rule_depth, in delete_depth_small()
860 lpm->tbl24[i].depth <= depth) { in delete_depth_small()
877 if (lpm->tbl8[j].depth <= depth) in delete_depth_small()
916 if (tbl8[tbl8_group_start].depth <= MAX_DEPTH_TBL24) { in tbl8_recycle_check()
920 if (tbl8[i].depth != in tbl8_recycle_check()
921 tbl8[tbl8_group_start].depth) { in tbl8_recycle_check()
946 uint8_t depth, uint32_t sub_rule_nhop, uint8_t sub_rule_depth) in delete_depth_big() argument
963 tbl8_range = depth_to_range(depth); in delete_depth_big()
971 if (lpm->tbl8[i].depth <= depth) in delete_depth_big()
978 .depth = sub_rule_depth, in delete_depth_big()
988 if (lpm->tbl8[i].depth <= depth) in delete_depth_big()
1015 .depth = lpm->tbl8[tbl8_recycle_index].depth, in delete_depth_big()
1034 rte_lpm_delete(struct rte_lpm *lpm, uint32_t ip, uint8_t depth, in rte_lpm_delete() argument
1044 if ((lpm == NULL) || (depth < 1) || (depth > RTE_LPM_MAX_DEPTH)) { in rte_lpm_delete()
1048 ip_masked = ip & depth_to_mask(depth); in rte_lpm_delete()
1055 rule_to_delete_index = rule_find(lpm, ip_masked, depth); in rte_lpm_delete()
1065 rule_delete(lpm, rule_to_delete_index, depth); in rte_lpm_delete()
1080 if (depth <= MAX_DEPTH_TBL24) { in rte_lpm_delete()
1081 return delete_depth_small(lpm, ip_masked, depth, in rte_lpm_delete()
1084 return delete_depth_big(lpm, ip_masked, depth, sub_rule_nhop, in rte_lpm_delete()