lpm_tree 146 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c static void mlxsw_sp_lpm_tree_hold(struct mlxsw_sp_lpm_tree *lpm_tree); lpm_tree 148 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c struct mlxsw_sp_lpm_tree *lpm_tree); lpm_tree 435 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c struct mlxsw_sp_lpm_tree *lpm_tree; lpm_tree 456 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c struct mlxsw_sp_lpm_tree *lpm_tree; lpm_tree 460 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c lpm_tree = mlxsw_sp->router->lpm.proto_trees[proto]; lpm_tree 470 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c fib->lpm_tree = lpm_tree; lpm_tree 471 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c mlxsw_sp_lpm_tree_hold(lpm_tree); lpm_tree 472 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c err = mlxsw_sp_vr_lpm_tree_bind(mlxsw_sp, fib, lpm_tree->id); lpm_tree 478 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c mlxsw_sp_lpm_tree_put(mlxsw_sp, lpm_tree); lpm_tree 488 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c mlxsw_sp_lpm_tree_put(mlxsw_sp, fib->lpm_tree); lpm_tree 497 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c static struct mlxsw_sp_lpm_tree *lpm_tree; lpm_tree 501 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c lpm_tree = &mlxsw_sp->router->lpm.trees[i]; lpm_tree 502 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c if (lpm_tree->ref_count == 0) lpm_tree 503 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c return lpm_tree; lpm_tree 509 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c struct mlxsw_sp_lpm_tree *lpm_tree) lpm_tree 514 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c (enum mlxsw_reg_ralxx_protocol) lpm_tree->proto, lpm_tree 515 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c lpm_tree->id); lpm_tree 520 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c struct mlxsw_sp_lpm_tree *lpm_tree) lpm_tree 525 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c (enum mlxsw_reg_ralxx_protocol) lpm_tree->proto, lpm_tree 526 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c lpm_tree->id); lpm_tree 533 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c struct mlxsw_sp_lpm_tree *lpm_tree) lpm_tree 543 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c mlxsw_reg_ralst_pack(ralst_pl, root_bin, lpm_tree->id); lpm_tree 559 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c struct mlxsw_sp_lpm_tree *lpm_tree; lpm_tree 562 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c lpm_tree = mlxsw_sp_lpm_tree_find_unused(mlxsw_sp); lpm_tree 563 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c if (!lpm_tree) lpm_tree 565 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c lpm_tree->proto = proto; lpm_tree 566 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c err = mlxsw_sp_lpm_tree_alloc(mlxsw_sp, lpm_tree); lpm_tree 571 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c lpm_tree); lpm_tree 574 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c memcpy(&lpm_tree->prefix_usage, prefix_usage, lpm_tree 575 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c sizeof(lpm_tree->prefix_usage)); lpm_tree 576 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c memset(&lpm_tree->prefix_ref_count, 0, lpm_tree 577 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c sizeof(lpm_tree->prefix_ref_count)); lpm_tree 578 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c lpm_tree->ref_count = 1; lpm_tree 579 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c return lpm_tree; lpm_tree 582 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c mlxsw_sp_lpm_tree_free(mlxsw_sp, lpm_tree); lpm_tree 587 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c struct mlxsw_sp_lpm_tree *lpm_tree) lpm_tree 589 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c mlxsw_sp_lpm_tree_free(mlxsw_sp, lpm_tree); lpm_tree 597 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c struct mlxsw_sp_lpm_tree *lpm_tree; lpm_tree 601 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c lpm_tree = &mlxsw_sp->router->lpm.trees[i]; lpm_tree 602 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c if (lpm_tree->ref_count != 0 && lpm_tree 603 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c lpm_tree->proto == proto && lpm_tree 604 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c mlxsw_sp_prefix_usage_eq(&lpm_tree->prefix_usage, lpm_tree 606 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c mlxsw_sp_lpm_tree_hold(lpm_tree); lpm_tree 607 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c return lpm_tree; lpm_tree 613 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c static void mlxsw_sp_lpm_tree_hold(struct mlxsw_sp_lpm_tree *lpm_tree) lpm_tree 615 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c lpm_tree->ref_count++; lpm_tree 619 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c struct mlxsw_sp_lpm_tree *lpm_tree) lpm_tree 621 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c if (--lpm_tree->ref_count == 0) lpm_tree 622 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c mlxsw_sp_lpm_tree_destroy(mlxsw_sp, lpm_tree); lpm_tree 630 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c struct mlxsw_sp_lpm_tree *lpm_tree; lpm_tree 646 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c lpm_tree = &mlxsw_sp->router->lpm.trees[i]; lpm_tree 647 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c lpm_tree->id = i + MLXSW_SP_LPM_TREE_MIN; lpm_tree 650 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c lpm_tree = mlxsw_sp_lpm_tree_get(mlxsw_sp, &req_prefix_usage, lpm_tree 652 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c if (IS_ERR(lpm_tree)) { lpm_tree 653 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c err = PTR_ERR(lpm_tree); lpm_tree 656 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c mlxsw_sp->router->lpm.proto_trees[MLXSW_SP_L3_PROTO_IPV4] = lpm_tree; lpm_tree 658 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c lpm_tree = mlxsw_sp_lpm_tree_get(mlxsw_sp, &req_prefix_usage, lpm_tree 660 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c if (IS_ERR(lpm_tree)) { lpm_tree 661 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c err = PTR_ERR(lpm_tree); lpm_tree 664 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c mlxsw_sp->router->lpm.proto_trees[MLXSW_SP_L3_PROTO_IPV6] = lpm_tree; lpm_tree 669 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c lpm_tree = mlxsw_sp->router->lpm.proto_trees[MLXSW_SP_L3_PROTO_IPV4]; lpm_tree 670 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c mlxsw_sp_lpm_tree_put(mlxsw_sp, lpm_tree); lpm_tree 678 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c struct mlxsw_sp_lpm_tree *lpm_tree; lpm_tree 680 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c lpm_tree = mlxsw_sp->router->lpm.proto_trees[MLXSW_SP_L3_PROTO_IPV6]; lpm_tree 681 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c mlxsw_sp_lpm_tree_put(mlxsw_sp, lpm_tree); lpm_tree 683 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c lpm_tree = mlxsw_sp->router->lpm.proto_trees[MLXSW_SP_L3_PROTO_IPV4]; lpm_tree 684 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c mlxsw_sp_lpm_tree_put(mlxsw_sp, lpm_tree); lpm_tree 874 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c if (fib->lpm_tree->id == tree_id) lpm_tree 883 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c struct mlxsw_sp_lpm_tree *old_tree = fib->lpm_tree; lpm_tree 886 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c fib->lpm_tree = new_tree; lpm_tree 896 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c fib->lpm_tree = old_tree; lpm_tree 4537 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c struct mlxsw_sp_lpm_tree *lpm_tree; lpm_tree 4540 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c lpm_tree = mlxsw_sp->router->lpm.proto_trees[fib->proto]; lpm_tree 4541 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c if (lpm_tree->prefix_ref_count[fib_node->key.prefix_len] != 0) lpm_tree 4544 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c mlxsw_sp_prefix_usage_cpy(&req_prefix_usage, &lpm_tree->prefix_usage); lpm_tree 4546 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c lpm_tree = mlxsw_sp_lpm_tree_get(mlxsw_sp, &req_prefix_usage, lpm_tree 4548 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c if (IS_ERR(lpm_tree)) lpm_tree 4549 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c return PTR_ERR(lpm_tree); lpm_tree 4551 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c err = mlxsw_sp_vrs_lpm_tree_replace(mlxsw_sp, fib, lpm_tree); lpm_tree 4556 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c lpm_tree->prefix_ref_count[fib_node->key.prefix_len]++; lpm_tree 4560 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c mlxsw_sp_lpm_tree_put(mlxsw_sp, lpm_tree); lpm_tree 4567 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c struct mlxsw_sp_lpm_tree *lpm_tree = fib_node->fib->lpm_tree; lpm_tree 4572 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c if (--lpm_tree->prefix_ref_count[fib_node->key.prefix_len] != 0) lpm_tree 4577 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c mlxsw_sp_prefix_usage_cpy(&req_prefix_usage, &lpm_tree->prefix_usage); lpm_tree 4580 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c lpm_tree = mlxsw_sp_lpm_tree_get(mlxsw_sp, &req_prefix_usage, lpm_tree 4582 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c if (IS_ERR(lpm_tree)) lpm_tree 4585 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c err = mlxsw_sp_vrs_lpm_tree_replace(mlxsw_sp, fib, lpm_tree); lpm_tree 4592 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c mlxsw_sp_lpm_tree_put(mlxsw_sp, lpm_tree);