Lines Matching refs:ipip_entry

382 	struct mlxsw_sp_ipip_entry *ipip_entry;  member
1010 struct mlxsw_sp_ipip_entry *ipip_entry; in mlxsw_sp_ipip_entry_alloc() local
1014 ipip_entry = kzalloc(sizeof(*ipip_entry), GFP_KERNEL); in mlxsw_sp_ipip_entry_alloc()
1015 if (!ipip_entry) in mlxsw_sp_ipip_entry_alloc()
1018 ipip_entry->ol_lb = mlxsw_sp_ipip_ol_ipip_lb_create(mlxsw_sp, ipipt, in mlxsw_sp_ipip_entry_alloc()
1020 if (IS_ERR(ipip_entry->ol_lb)) { in mlxsw_sp_ipip_entry_alloc()
1021 ret = ERR_CAST(ipip_entry->ol_lb); in mlxsw_sp_ipip_entry_alloc()
1025 ipip_entry->ipipt = ipipt; in mlxsw_sp_ipip_entry_alloc()
1026 ipip_entry->ol_dev = ol_dev; in mlxsw_sp_ipip_entry_alloc()
1030 ipip_entry->parms4 = mlxsw_sp_ipip_netdev_parms4(ol_dev); in mlxsw_sp_ipip_entry_alloc()
1037 return ipip_entry; in mlxsw_sp_ipip_entry_alloc()
1040 kfree(ipip_entry); in mlxsw_sp_ipip_entry_alloc()
1045 mlxsw_sp_ipip_entry_dealloc(struct mlxsw_sp_ipip_entry *ipip_entry) in mlxsw_sp_ipip_entry_dealloc() argument
1047 mlxsw_sp_rif_destroy(&ipip_entry->ol_lb->common); in mlxsw_sp_ipip_entry_dealloc()
1048 kfree(ipip_entry); in mlxsw_sp_ipip_entry_dealloc()
1056 struct mlxsw_sp_ipip_entry *ipip_entry) in mlxsw_sp_ipip_entry_saddr_matches() argument
1058 u32 tun_ul_tb_id = mlxsw_sp_ipip_dev_ul_tb_id(ipip_entry->ol_dev); in mlxsw_sp_ipip_entry_saddr_matches()
1059 enum mlxsw_sp_ipip_type ipipt = ipip_entry->ipipt; in mlxsw_sp_ipip_entry_saddr_matches()
1065 tun_saddr = mlxsw_sp_ipip_netdev_saddr(ul_proto, ipip_entry->ol_dev); in mlxsw_sp_ipip_entry_saddr_matches()
1073 struct mlxsw_sp_ipip_entry *ipip_entry) in mlxsw_sp_fib_entry_decap_init() argument
1083 ipip_entry->decap_fib_entry = fib_entry; in mlxsw_sp_fib_entry_decap_init()
1084 fib_entry->decap.ipip_entry = ipip_entry; in mlxsw_sp_fib_entry_decap_init()
1093 fib_entry->decap.ipip_entry->decap_fib_entry = NULL; in mlxsw_sp_fib_entry_decap_fini()
1094 fib_entry->decap.ipip_entry = NULL; in mlxsw_sp_fib_entry_decap_fini()
1107 struct mlxsw_sp_ipip_entry *ipip_entry) in mlxsw_sp_ipip_entry_demote_decap() argument
1109 struct mlxsw_sp_fib_entry *fib_entry = ipip_entry->decap_fib_entry; in mlxsw_sp_ipip_entry_demote_decap()
1119 struct mlxsw_sp_ipip_entry *ipip_entry, in mlxsw_sp_ipip_entry_promote_decap() argument
1123 ipip_entry)) in mlxsw_sp_ipip_entry_promote_decap()
1128 mlxsw_sp_ipip_entry_demote_decap(mlxsw_sp, ipip_entry); in mlxsw_sp_ipip_entry_promote_decap()
1134 struct mlxsw_sp_ipip_entry *ipip_entry) in mlxsw_sp_ipip_entry_find_decap() argument
1148 ipip_ops = mlxsw_sp->router->ipip_ops_arr[ipip_entry->ipipt]; in mlxsw_sp_ipip_entry_find_decap()
1150 ul_tb_id = mlxsw_sp_ipip_dev_ul_tb_id(ipip_entry->ol_dev); in mlxsw_sp_ipip_entry_find_decap()
1157 ipip_entry->ol_dev); in mlxsw_sp_ipip_entry_find_decap()
1189 struct mlxsw_sp_ipip_entry *ipip_entry; in mlxsw_sp_ipip_entry_create() local
1191 ipip_entry = mlxsw_sp_ipip_entry_alloc(mlxsw_sp, ipipt, ol_dev); in mlxsw_sp_ipip_entry_create()
1192 if (IS_ERR(ipip_entry)) in mlxsw_sp_ipip_entry_create()
1193 return ipip_entry; in mlxsw_sp_ipip_entry_create()
1195 list_add_tail(&ipip_entry->ipip_list_node, in mlxsw_sp_ipip_entry_create()
1198 return ipip_entry; in mlxsw_sp_ipip_entry_create()
1203 struct mlxsw_sp_ipip_entry *ipip_entry) in mlxsw_sp_ipip_entry_destroy() argument
1205 list_del(&ipip_entry->ipip_list_node); in mlxsw_sp_ipip_entry_destroy()
1206 mlxsw_sp_ipip_entry_dealloc(ipip_entry); in mlxsw_sp_ipip_entry_destroy()
1214 struct mlxsw_sp_ipip_entry *ipip_entry) in mlxsw_sp_ipip_entry_matches_decap() argument
1217 enum mlxsw_sp_ipip_type ipipt = ipip_entry->ipipt; in mlxsw_sp_ipip_entry_matches_decap()
1223 ipip_ul_dev = __mlxsw_sp_ipip_netdev_ul_dev_get(ipip_entry->ol_dev); in mlxsw_sp_ipip_entry_matches_decap()
1225 ul_tb_id, ipip_entry) && in mlxsw_sp_ipip_entry_matches_decap()
1236 struct mlxsw_sp_ipip_entry *ipip_entry; in mlxsw_sp_ipip_entry_find_by_decap() local
1238 list_for_each_entry(ipip_entry, &mlxsw_sp->router->ipip_list, in mlxsw_sp_ipip_entry_find_by_decap()
1242 ipip_entry)) in mlxsw_sp_ipip_entry_find_by_decap()
1243 return ipip_entry; in mlxsw_sp_ipip_entry_find_by_decap()
1277 struct mlxsw_sp_ipip_entry *ipip_entry; in mlxsw_sp_ipip_entry_find_by_ol_dev() local
1279 list_for_each_entry(ipip_entry, &mlxsw_sp->router->ipip_list, in mlxsw_sp_ipip_entry_find_by_ol_dev()
1281 if (ipip_entry->ol_dev == ol_dev) in mlxsw_sp_ipip_entry_find_by_ol_dev()
1282 return ipip_entry; in mlxsw_sp_ipip_entry_find_by_ol_dev()
1292 struct mlxsw_sp_ipip_entry *ipip_entry; in mlxsw_sp_ipip_entry_find_by_ul_dev() local
1294 ipip_entry = list_prepare_entry(start, &mlxsw_sp->router->ipip_list, in mlxsw_sp_ipip_entry_find_by_ul_dev()
1296 list_for_each_entry_continue(ipip_entry, &mlxsw_sp->router->ipip_list, in mlxsw_sp_ipip_entry_find_by_ul_dev()
1299 __mlxsw_sp_ipip_netdev_ul_dev_get(ipip_entry->ol_dev); in mlxsw_sp_ipip_entry_find_by_ul_dev()
1302 return ipip_entry; in mlxsw_sp_ipip_entry_find_by_ul_dev()
1331 struct mlxsw_sp_ipip_entry *ipip_entry; in mlxsw_sp_netdevice_ipip_ol_reg_event() local
1345 ipip_entry = mlxsw_sp_ipip_entry_create(mlxsw_sp, ipipt, in mlxsw_sp_netdevice_ipip_ol_reg_event()
1347 if (IS_ERR(ipip_entry)) in mlxsw_sp_netdevice_ipip_ol_reg_event()
1348 return PTR_ERR(ipip_entry); in mlxsw_sp_netdevice_ipip_ol_reg_event()
1358 struct mlxsw_sp_ipip_entry *ipip_entry; in mlxsw_sp_netdevice_ipip_ol_unreg_event() local
1360 ipip_entry = mlxsw_sp_ipip_entry_find_by_ol_dev(mlxsw_sp, ol_dev); in mlxsw_sp_netdevice_ipip_ol_unreg_event()
1361 if (ipip_entry) in mlxsw_sp_netdevice_ipip_ol_unreg_event()
1362 mlxsw_sp_ipip_entry_destroy(mlxsw_sp, ipip_entry); in mlxsw_sp_netdevice_ipip_ol_unreg_event()
1367 struct mlxsw_sp_ipip_entry *ipip_entry) in mlxsw_sp_ipip_entry_ol_up_event() argument
1371 decap_fib_entry = mlxsw_sp_ipip_entry_find_decap(mlxsw_sp, ipip_entry); in mlxsw_sp_ipip_entry_ol_up_event()
1373 mlxsw_sp_ipip_entry_promote_decap(mlxsw_sp, ipip_entry, in mlxsw_sp_ipip_entry_ol_up_event()
1407 struct mlxsw_sp_ipip_entry *ipip_entry; in mlxsw_sp_netdevice_ipip_ol_update_mtu() local
1412 ipip_entry = mlxsw_sp_ipip_entry_find_by_ol_dev(mlxsw_sp, ol_dev); in mlxsw_sp_netdevice_ipip_ol_update_mtu()
1413 if (ipip_entry) { in mlxsw_sp_netdevice_ipip_ol_update_mtu()
1414 lb_rif = ipip_entry->ol_lb; in mlxsw_sp_netdevice_ipip_ol_update_mtu()
1429 struct mlxsw_sp_ipip_entry *ipip_entry; in mlxsw_sp_netdevice_ipip_ol_up_event() local
1431 ipip_entry = mlxsw_sp_ipip_entry_find_by_ol_dev(mlxsw_sp, ol_dev); in mlxsw_sp_netdevice_ipip_ol_up_event()
1432 if (ipip_entry) in mlxsw_sp_netdevice_ipip_ol_up_event()
1433 mlxsw_sp_ipip_entry_ol_up_event(mlxsw_sp, ipip_entry); in mlxsw_sp_netdevice_ipip_ol_up_event()
1438 struct mlxsw_sp_ipip_entry *ipip_entry) in mlxsw_sp_ipip_entry_ol_down_event() argument
1440 if (ipip_entry->decap_fib_entry) in mlxsw_sp_ipip_entry_ol_down_event()
1441 mlxsw_sp_ipip_entry_demote_decap(mlxsw_sp, ipip_entry); in mlxsw_sp_ipip_entry_ol_down_event()
1447 struct mlxsw_sp_ipip_entry *ipip_entry; in mlxsw_sp_netdevice_ipip_ol_down_event() local
1449 ipip_entry = mlxsw_sp_ipip_entry_find_by_ol_dev(mlxsw_sp, ol_dev); in mlxsw_sp_netdevice_ipip_ol_down_event()
1450 if (ipip_entry) in mlxsw_sp_netdevice_ipip_ol_down_event()
1451 mlxsw_sp_ipip_entry_ol_down_event(mlxsw_sp, ipip_entry); in mlxsw_sp_netdevice_ipip_ol_down_event()
1459 struct mlxsw_sp_ipip_entry *ipip_entry, in mlxsw_sp_ipip_entry_ol_lb_update() argument
1463 struct mlxsw_sp_rif_ipip_lb *old_lb_rif = ipip_entry->ol_lb; in mlxsw_sp_ipip_entry_ol_lb_update()
1467 ipip_entry->ipipt, in mlxsw_sp_ipip_entry_ol_lb_update()
1468 ipip_entry->ol_dev, in mlxsw_sp_ipip_entry_ol_lb_update()
1472 ipip_entry->ol_lb = new_lb_rif; in mlxsw_sp_ipip_entry_ol_lb_update()
1496 struct mlxsw_sp_ipip_entry *ipip_entry, in __mlxsw_sp_ipip_entry_update_tunnel() argument
1510 if (ipip_entry->decap_fib_entry) in __mlxsw_sp_ipip_entry_update_tunnel()
1511 mlxsw_sp_ipip_entry_demote_decap(mlxsw_sp, ipip_entry); in __mlxsw_sp_ipip_entry_update_tunnel()
1514 err = mlxsw_sp_ipip_entry_ol_lb_update(mlxsw_sp, ipip_entry, in __mlxsw_sp_ipip_entry_update_tunnel()
1520 &ipip_entry->ol_lb->common); in __mlxsw_sp_ipip_entry_update_tunnel()
1523 if (ipip_entry->ol_dev->flags & IFF_UP) in __mlxsw_sp_ipip_entry_update_tunnel()
1524 mlxsw_sp_ipip_entry_ol_up_event(mlxsw_sp, ipip_entry); in __mlxsw_sp_ipip_entry_update_tunnel()
1533 struct mlxsw_sp_ipip_entry *ipip_entry = in mlxsw_sp_netdevice_ipip_ol_vrf_event() local
1539 if (!ipip_entry) in mlxsw_sp_netdevice_ipip_ol_vrf_event()
1547 ul_proto = mlxsw_sp->router->ipip_ops_arr[ipip_entry->ipipt]->ul_proto; in mlxsw_sp_netdevice_ipip_ol_vrf_event()
1551 ipip_entry)) { in mlxsw_sp_netdevice_ipip_ol_vrf_event()
1552 mlxsw_sp_ipip_entry_demote_tunnel(mlxsw_sp, ipip_entry); in mlxsw_sp_netdevice_ipip_ol_vrf_event()
1556 return __mlxsw_sp_ipip_entry_update_tunnel(mlxsw_sp, ipip_entry, in mlxsw_sp_netdevice_ipip_ol_vrf_event()
1562 struct mlxsw_sp_ipip_entry *ipip_entry, in mlxsw_sp_netdevice_ipip_ul_vrf_event() argument
1566 return __mlxsw_sp_ipip_entry_update_tunnel(mlxsw_sp, ipip_entry, in mlxsw_sp_netdevice_ipip_ul_vrf_event()
1572 struct mlxsw_sp_ipip_entry *ipip_entry, in mlxsw_sp_netdevice_ipip_ul_up_event() argument
1575 return __mlxsw_sp_ipip_entry_update_tunnel(mlxsw_sp, ipip_entry, in mlxsw_sp_netdevice_ipip_ul_up_event()
1581 struct mlxsw_sp_ipip_entry *ipip_entry, in mlxsw_sp_netdevice_ipip_ul_down_event() argument
1588 return __mlxsw_sp_ipip_entry_update_tunnel(mlxsw_sp, ipip_entry, in mlxsw_sp_netdevice_ipip_ul_down_event()
1598 struct mlxsw_sp_ipip_entry *ipip_entry; in mlxsw_sp_netdevice_ipip_ol_change_event() local
1601 ipip_entry = mlxsw_sp_ipip_entry_find_by_ol_dev(mlxsw_sp, ol_dev); in mlxsw_sp_netdevice_ipip_ol_change_event()
1602 if (!ipip_entry) in mlxsw_sp_netdevice_ipip_ol_change_event()
1611 ipip_entry->ipipt)) { in mlxsw_sp_netdevice_ipip_ol_change_event()
1612 mlxsw_sp_ipip_entry_demote_tunnel(mlxsw_sp, ipip_entry); in mlxsw_sp_netdevice_ipip_ol_change_event()
1616 ipip_ops = mlxsw_sp->router->ipip_ops_arr[ipip_entry->ipipt]; in mlxsw_sp_netdevice_ipip_ol_change_event()
1617 err = ipip_ops->ol_netdev_change(mlxsw_sp, ipip_entry, extack); in mlxsw_sp_netdevice_ipip_ol_change_event()
1622 struct mlxsw_sp_ipip_entry *ipip_entry) in mlxsw_sp_ipip_entry_demote_tunnel() argument
1624 struct net_device *ol_dev = ipip_entry->ol_dev; in mlxsw_sp_ipip_entry_demote_tunnel()
1627 mlxsw_sp_ipip_entry_ol_down_event(mlxsw_sp, ipip_entry); in mlxsw_sp_ipip_entry_demote_tunnel()
1628 mlxsw_sp_ipip_entry_destroy(mlxsw_sp, ipip_entry); in mlxsw_sp_ipip_entry_demote_tunnel()
1644 struct mlxsw_sp_ipip_entry *ipip_entry, *tmp; in mlxsw_sp_ipip_demote_tunnel_by_saddr() local
1646 list_for_each_entry_safe(ipip_entry, tmp, &mlxsw_sp->router->ipip_list, in mlxsw_sp_ipip_demote_tunnel_by_saddr()
1648 if (ipip_entry != except && in mlxsw_sp_ipip_demote_tunnel_by_saddr()
1650 ul_tb_id, ipip_entry)) { in mlxsw_sp_ipip_demote_tunnel_by_saddr()
1651 mlxsw_sp_ipip_entry_demote_tunnel(mlxsw_sp, ipip_entry); in mlxsw_sp_ipip_demote_tunnel_by_saddr()
1662 struct mlxsw_sp_ipip_entry *ipip_entry, *tmp; in mlxsw_sp_ipip_demote_tunnel_by_ul_netdev() local
1664 list_for_each_entry_safe(ipip_entry, tmp, &mlxsw_sp->router->ipip_list, in mlxsw_sp_ipip_demote_tunnel_by_ul_netdev()
1667 __mlxsw_sp_ipip_netdev_ul_dev_get(ipip_entry->ol_dev); in mlxsw_sp_ipip_demote_tunnel_by_ul_netdev()
1670 mlxsw_sp_ipip_entry_demote_tunnel(mlxsw_sp, ipip_entry); in mlxsw_sp_ipip_demote_tunnel_by_ul_netdev()
1714 struct mlxsw_sp_ipip_entry *ipip_entry, in __mlxsw_sp_netdevice_ipip_ul_event() argument
1728 ipip_entry, in __mlxsw_sp_netdevice_ipip_ul_event()
1734 return mlxsw_sp_netdevice_ipip_ul_up_event(mlxsw_sp, ipip_entry, in __mlxsw_sp_netdevice_ipip_ul_event()
1738 ipip_entry, in __mlxsw_sp_netdevice_ipip_ul_event()
1750 struct mlxsw_sp_ipip_entry *ipip_entry = NULL; in mlxsw_sp_netdevice_ipip_ul_event() local
1753 while ((ipip_entry = mlxsw_sp_ipip_entry_find_by_ul_dev(mlxsw_sp, in mlxsw_sp_netdevice_ipip_ul_event()
1755 ipip_entry))) { in mlxsw_sp_netdevice_ipip_ul_event()
1756 err = __mlxsw_sp_netdevice_ipip_ul_event(mlxsw_sp, ipip_entry, in mlxsw_sp_netdevice_ipip_ul_event()
2590 struct mlxsw_sp_ipip_entry *ipip_entry; member
3018 ipip_ops = mlxsw_sp->router->ipip_ops_arr[nh->ipip_entry->ipipt]; in __mlxsw_sp_nexthop_ipip_update()
3019 return ipip_ops->nexthop_update(mlxsw_sp, adj_index, nh->ipip_entry); in __mlxsw_sp_nexthop_ipip_update()
3469 struct mlxsw_sp_ipip_entry *ipip_entry) in mlxsw_sp_nexthop_ipip_init() argument
3473 if (!nh->nh_grp->gateway || nh->ipip_entry) in mlxsw_sp_nexthop_ipip_init()
3476 nh->ipip_entry = ipip_entry; in mlxsw_sp_nexthop_ipip_init()
3477 removing = !mlxsw_sp_ipip_netdev_ul_up(ipip_entry->ol_dev); in mlxsw_sp_nexthop_ipip_init()
3479 mlxsw_sp_nexthop_rif_init(nh, &ipip_entry->ol_lb->common); in mlxsw_sp_nexthop_ipip_init()
3485 struct mlxsw_sp_ipip_entry *ipip_entry = nh->ipip_entry; in mlxsw_sp_nexthop_ipip_fini() local
3487 if (!ipip_entry) in mlxsw_sp_nexthop_ipip_fini()
3491 nh->ipip_entry = NULL; in mlxsw_sp_nexthop_ipip_fini()
3526 struct mlxsw_sp_ipip_entry *ipip_entry; in mlxsw_sp_nexthop4_type_init() local
3530 ipip_entry = mlxsw_sp_ipip_entry_find_by_ol_dev(mlxsw_sp, dev); in mlxsw_sp_nexthop4_type_init()
3531 if (ipip_entry) { in mlxsw_sp_nexthop4_type_init()
3532 ipip_ops = mlxsw_sp->router->ipip_ops_arr[ipip_entry->ipipt]; in mlxsw_sp_nexthop4_type_init()
3536 mlxsw_sp_nexthop_ipip_init(mlxsw_sp, nh, ipip_entry); in mlxsw_sp_nexthop4_type_init()
4064 struct mlxsw_sp_ipip_entry *ipip_entry = fib_entry->decap.ipip_entry; in mlxsw_sp_fib_entry_op_ipip_decap() local
4067 if (WARN_ON(!ipip_entry)) in mlxsw_sp_fib_entry_op_ipip_decap()
4070 ipip_ops = mlxsw_sp->router->ipip_ops_arr[ipip_entry->ipipt]; in mlxsw_sp_fib_entry_op_ipip_decap()
4071 return ipip_ops->fib_entry_op(mlxsw_sp, ipip_entry, op, in mlxsw_sp_fib_entry_op_ipip_decap()
4125 struct mlxsw_sp_ipip_entry *ipip_entry; in mlxsw_sp_fib4_entry_type_set() local
4130 ipip_entry = mlxsw_sp_ipip_entry_find_by_decap(mlxsw_sp, dev, in mlxsw_sp_fib4_entry_type_set()
4132 if (ipip_entry && ipip_entry->ol_dev->flags & IFF_UP) { in mlxsw_sp_fib4_entry_type_set()
4136 ipip_entry); in mlxsw_sp_fib4_entry_type_set()
4826 struct mlxsw_sp_ipip_entry *ipip_entry; in mlxsw_sp_nexthop6_type_init() local
4831 ipip_entry = mlxsw_sp_ipip_entry_find_by_ol_dev(mlxsw_sp, dev); in mlxsw_sp_nexthop6_type_init()
4832 if (ipip_entry) { in mlxsw_sp_nexthop6_type_init()
4833 ipip_ops = mlxsw_sp->router->ipip_ops_arr[ipip_entry->ipipt]; in mlxsw_sp_nexthop6_type_init()
4837 mlxsw_sp_nexthop_ipip_init(mlxsw_sp, nh, ipip_entry); in mlxsw_sp_nexthop6_type_init()