Lines Matching refs:ipip_entry
367 struct mlxsw_sp_ipip_entry *ipip_entry; member
1020 struct mlxsw_sp_ipip_entry *ipip_entry; in mlxsw_sp_ipip_entry_alloc() local
1024 ipip_entry = kzalloc(sizeof(*ipip_entry), GFP_KERNEL); in mlxsw_sp_ipip_entry_alloc()
1025 if (!ipip_entry) in mlxsw_sp_ipip_entry_alloc()
1028 ipip_entry->ol_lb = mlxsw_sp_ipip_ol_ipip_lb_create(mlxsw_sp, ipipt, in mlxsw_sp_ipip_entry_alloc()
1030 if (IS_ERR(ipip_entry->ol_lb)) { in mlxsw_sp_ipip_entry_alloc()
1031 ret = ERR_CAST(ipip_entry->ol_lb); in mlxsw_sp_ipip_entry_alloc()
1035 ipip_entry->ipipt = ipipt; in mlxsw_sp_ipip_entry_alloc()
1036 ipip_entry->ol_dev = ol_dev; in mlxsw_sp_ipip_entry_alloc()
1040 ipip_entry->parms4 = mlxsw_sp_ipip_netdev_parms4(ol_dev); in mlxsw_sp_ipip_entry_alloc()
1047 return ipip_entry; in mlxsw_sp_ipip_entry_alloc()
1050 kfree(ipip_entry); in mlxsw_sp_ipip_entry_alloc()
1055 mlxsw_sp_ipip_entry_dealloc(struct mlxsw_sp_ipip_entry *ipip_entry) in mlxsw_sp_ipip_entry_dealloc() argument
1057 mlxsw_sp_rif_destroy(&ipip_entry->ol_lb->common); in mlxsw_sp_ipip_entry_dealloc()
1058 kfree(ipip_entry); in mlxsw_sp_ipip_entry_dealloc()
1066 struct mlxsw_sp_ipip_entry *ipip_entry) in mlxsw_sp_ipip_entry_saddr_matches() argument
1068 u32 tun_ul_tb_id = mlxsw_sp_ipip_dev_ul_tb_id(ipip_entry->ol_dev); in mlxsw_sp_ipip_entry_saddr_matches()
1069 enum mlxsw_sp_ipip_type ipipt = ipip_entry->ipipt; in mlxsw_sp_ipip_entry_saddr_matches()
1075 tun_saddr = mlxsw_sp_ipip_netdev_saddr(ul_proto, ipip_entry->ol_dev); in mlxsw_sp_ipip_entry_saddr_matches()
1083 struct mlxsw_sp_ipip_entry *ipip_entry) in mlxsw_sp_fib_entry_decap_init() argument
1093 ipip_entry->decap_fib_entry = fib_entry; in mlxsw_sp_fib_entry_decap_init()
1094 fib_entry->decap.ipip_entry = ipip_entry; in mlxsw_sp_fib_entry_decap_init()
1103 fib_entry->decap.ipip_entry->decap_fib_entry = NULL; in mlxsw_sp_fib_entry_decap_fini()
1104 fib_entry->decap.ipip_entry = NULL; in mlxsw_sp_fib_entry_decap_fini()
1117 struct mlxsw_sp_ipip_entry *ipip_entry) in mlxsw_sp_ipip_entry_demote_decap() argument
1119 struct mlxsw_sp_fib_entry *fib_entry = ipip_entry->decap_fib_entry; in mlxsw_sp_ipip_entry_demote_decap()
1129 struct mlxsw_sp_ipip_entry *ipip_entry, in mlxsw_sp_ipip_entry_promote_decap() argument
1133 ipip_entry)) in mlxsw_sp_ipip_entry_promote_decap()
1138 mlxsw_sp_ipip_entry_demote_decap(mlxsw_sp, ipip_entry); in mlxsw_sp_ipip_entry_promote_decap()
1184 struct mlxsw_sp_ipip_entry *ipip_entry) in mlxsw_sp_ipip_entry_find_decap() argument
1197 ipip_ops = mlxsw_sp->router->ipip_ops_arr[ipip_entry->ipipt]; in mlxsw_sp_ipip_entry_find_decap()
1199 ul_tb_id = mlxsw_sp_ipip_dev_ul_tb_id(ipip_entry->ol_dev); in mlxsw_sp_ipip_entry_find_decap()
1206 ipip_entry->ol_dev); in mlxsw_sp_ipip_entry_find_decap()
1234 struct mlxsw_sp_ipip_entry *ipip_entry; in mlxsw_sp_ipip_entry_create() local
1236 ipip_entry = mlxsw_sp_ipip_entry_alloc(mlxsw_sp, ipipt, ol_dev); in mlxsw_sp_ipip_entry_create()
1237 if (IS_ERR(ipip_entry)) in mlxsw_sp_ipip_entry_create()
1238 return ipip_entry; in mlxsw_sp_ipip_entry_create()
1240 list_add_tail(&ipip_entry->ipip_list_node, in mlxsw_sp_ipip_entry_create()
1243 return ipip_entry; in mlxsw_sp_ipip_entry_create()
1248 struct mlxsw_sp_ipip_entry *ipip_entry) in mlxsw_sp_ipip_entry_destroy() argument
1250 list_del(&ipip_entry->ipip_list_node); in mlxsw_sp_ipip_entry_destroy()
1251 mlxsw_sp_ipip_entry_dealloc(ipip_entry); in mlxsw_sp_ipip_entry_destroy()
1259 struct mlxsw_sp_ipip_entry *ipip_entry) in mlxsw_sp_ipip_entry_matches_decap() argument
1262 enum mlxsw_sp_ipip_type ipipt = ipip_entry->ipipt; in mlxsw_sp_ipip_entry_matches_decap()
1268 ul_tb_id, ipip_entry); in mlxsw_sp_ipip_entry_matches_decap()
1278 struct mlxsw_sp_ipip_entry *ipip_entry; in mlxsw_sp_ipip_entry_find_by_decap() local
1280 list_for_each_entry(ipip_entry, &mlxsw_sp->router->ipip_list, in mlxsw_sp_ipip_entry_find_by_decap()
1284 ipip_entry)) in mlxsw_sp_ipip_entry_find_by_decap()
1285 return ipip_entry; in mlxsw_sp_ipip_entry_find_by_decap()
1319 struct mlxsw_sp_ipip_entry *ipip_entry; in mlxsw_sp_ipip_entry_find_by_ol_dev() local
1321 list_for_each_entry(ipip_entry, &mlxsw_sp->router->ipip_list, in mlxsw_sp_ipip_entry_find_by_ol_dev()
1323 if (ipip_entry->ol_dev == ol_dev) in mlxsw_sp_ipip_entry_find_by_ol_dev()
1324 return ipip_entry; in mlxsw_sp_ipip_entry_find_by_ol_dev()
1334 struct mlxsw_sp_ipip_entry *ipip_entry; in mlxsw_sp_ipip_entry_find_by_ul_dev() local
1336 ipip_entry = list_prepare_entry(start, &mlxsw_sp->router->ipip_list, in mlxsw_sp_ipip_entry_find_by_ul_dev()
1338 list_for_each_entry_continue(ipip_entry, &mlxsw_sp->router->ipip_list, in mlxsw_sp_ipip_entry_find_by_ul_dev()
1340 struct net_device *ol_dev = ipip_entry->ol_dev; in mlxsw_sp_ipip_entry_find_by_ul_dev()
1348 return ipip_entry; in mlxsw_sp_ipip_entry_find_by_ul_dev()
1384 struct mlxsw_sp_ipip_entry *ipip_entry; in mlxsw_sp_netdevice_ipip_ol_reg_event() local
1397 ipip_entry = mlxsw_sp_ipip_entry_create(mlxsw_sp, ipipt, in mlxsw_sp_netdevice_ipip_ol_reg_event()
1399 if (IS_ERR(ipip_entry)) in mlxsw_sp_netdevice_ipip_ol_reg_event()
1400 return PTR_ERR(ipip_entry); in mlxsw_sp_netdevice_ipip_ol_reg_event()
1410 struct mlxsw_sp_ipip_entry *ipip_entry; in mlxsw_sp_netdevice_ipip_ol_unreg_event() local
1412 ipip_entry = mlxsw_sp_ipip_entry_find_by_ol_dev(mlxsw_sp, ol_dev); in mlxsw_sp_netdevice_ipip_ol_unreg_event()
1413 if (ipip_entry) in mlxsw_sp_netdevice_ipip_ol_unreg_event()
1414 mlxsw_sp_ipip_entry_destroy(mlxsw_sp, ipip_entry); in mlxsw_sp_netdevice_ipip_ol_unreg_event()
1419 struct mlxsw_sp_ipip_entry *ipip_entry) in mlxsw_sp_ipip_entry_ol_up_event() argument
1423 decap_fib_entry = mlxsw_sp_ipip_entry_find_decap(mlxsw_sp, ipip_entry); in mlxsw_sp_ipip_entry_ol_up_event()
1425 mlxsw_sp_ipip_entry_promote_decap(mlxsw_sp, ipip_entry, in mlxsw_sp_ipip_entry_ol_up_event()
1459 struct mlxsw_sp_ipip_entry *ipip_entry; in mlxsw_sp_netdevice_ipip_ol_update_mtu() local
1463 ipip_entry = mlxsw_sp_ipip_entry_find_by_ol_dev(mlxsw_sp, ol_dev); in mlxsw_sp_netdevice_ipip_ol_update_mtu()
1464 if (ipip_entry) { in mlxsw_sp_netdevice_ipip_ol_update_mtu()
1465 lb_rif = ipip_entry->ol_lb; in mlxsw_sp_netdevice_ipip_ol_update_mtu()
1480 struct mlxsw_sp_ipip_entry *ipip_entry; in mlxsw_sp_netdevice_ipip_ol_up_event() local
1482 ipip_entry = mlxsw_sp_ipip_entry_find_by_ol_dev(mlxsw_sp, ol_dev); in mlxsw_sp_netdevice_ipip_ol_up_event()
1483 if (ipip_entry) in mlxsw_sp_netdevice_ipip_ol_up_event()
1484 mlxsw_sp_ipip_entry_ol_up_event(mlxsw_sp, ipip_entry); in mlxsw_sp_netdevice_ipip_ol_up_event()
1489 struct mlxsw_sp_ipip_entry *ipip_entry) in mlxsw_sp_ipip_entry_ol_down_event() argument
1491 if (ipip_entry->decap_fib_entry) in mlxsw_sp_ipip_entry_ol_down_event()
1492 mlxsw_sp_ipip_entry_demote_decap(mlxsw_sp, ipip_entry); in mlxsw_sp_ipip_entry_ol_down_event()
1498 struct mlxsw_sp_ipip_entry *ipip_entry; in mlxsw_sp_netdevice_ipip_ol_down_event() local
1500 ipip_entry = mlxsw_sp_ipip_entry_find_by_ol_dev(mlxsw_sp, ol_dev); in mlxsw_sp_netdevice_ipip_ol_down_event()
1501 if (ipip_entry) in mlxsw_sp_netdevice_ipip_ol_down_event()
1502 mlxsw_sp_ipip_entry_ol_down_event(mlxsw_sp, ipip_entry); in mlxsw_sp_netdevice_ipip_ol_down_event()
1510 struct mlxsw_sp_ipip_entry *ipip_entry, in mlxsw_sp_ipip_entry_ol_lb_update() argument
1514 struct mlxsw_sp_rif_ipip_lb *old_lb_rif = ipip_entry->ol_lb; in mlxsw_sp_ipip_entry_ol_lb_update()
1518 ipip_entry->ipipt, in mlxsw_sp_ipip_entry_ol_lb_update()
1519 ipip_entry->ol_dev, in mlxsw_sp_ipip_entry_ol_lb_update()
1523 ipip_entry->ol_lb = new_lb_rif; in mlxsw_sp_ipip_entry_ol_lb_update()
1551 struct mlxsw_sp_ipip_entry *ipip_entry, in __mlxsw_sp_ipip_entry_update_tunnel() argument
1565 if (ipip_entry->decap_fib_entry) in __mlxsw_sp_ipip_entry_update_tunnel()
1566 mlxsw_sp_ipip_entry_demote_decap(mlxsw_sp, ipip_entry); in __mlxsw_sp_ipip_entry_update_tunnel()
1569 err = mlxsw_sp_ipip_entry_ol_lb_update(mlxsw_sp, ipip_entry, in __mlxsw_sp_ipip_entry_update_tunnel()
1575 &ipip_entry->ol_lb->common); in __mlxsw_sp_ipip_entry_update_tunnel()
1578 if (ipip_entry->ol_dev->flags & IFF_UP) in __mlxsw_sp_ipip_entry_update_tunnel()
1579 mlxsw_sp_ipip_entry_ol_up_event(mlxsw_sp, ipip_entry); in __mlxsw_sp_ipip_entry_update_tunnel()
1588 struct mlxsw_sp_ipip_entry *ipip_entry = in mlxsw_sp_netdevice_ipip_ol_vrf_event() local
1591 if (!ipip_entry) in mlxsw_sp_netdevice_ipip_ol_vrf_event()
1594 return __mlxsw_sp_ipip_entry_update_tunnel(mlxsw_sp, ipip_entry, in mlxsw_sp_netdevice_ipip_ol_vrf_event()
1600 struct mlxsw_sp_ipip_entry *ipip_entry, in mlxsw_sp_netdevice_ipip_ul_vrf_event() argument
1612 ul_proto = mlxsw_sp->router->ipip_ops_arr[ipip_entry->ipipt]->ul_proto; in mlxsw_sp_netdevice_ipip_ul_vrf_event()
1613 saddr = mlxsw_sp_ipip_netdev_saddr(ul_proto, ipip_entry->ol_dev); in mlxsw_sp_netdevice_ipip_ul_vrf_event()
1616 ipip_entry)) { in mlxsw_sp_netdevice_ipip_ul_vrf_event()
1621 return __mlxsw_sp_ipip_entry_update_tunnel(mlxsw_sp, ipip_entry, in mlxsw_sp_netdevice_ipip_ul_vrf_event()
1627 struct mlxsw_sp_ipip_entry *ipip_entry, in mlxsw_sp_netdevice_ipip_ul_up_event() argument
1630 return __mlxsw_sp_ipip_entry_update_tunnel(mlxsw_sp, ipip_entry, in mlxsw_sp_netdevice_ipip_ul_up_event()
1636 struct mlxsw_sp_ipip_entry *ipip_entry, in mlxsw_sp_netdevice_ipip_ul_down_event() argument
1643 return __mlxsw_sp_ipip_entry_update_tunnel(mlxsw_sp, ipip_entry, in mlxsw_sp_netdevice_ipip_ul_down_event()
1653 struct mlxsw_sp_ipip_entry *ipip_entry; in mlxsw_sp_netdevice_ipip_ol_change_event() local
1656 ipip_entry = mlxsw_sp_ipip_entry_find_by_ol_dev(mlxsw_sp, ol_dev); in mlxsw_sp_netdevice_ipip_ol_change_event()
1657 if (!ipip_entry) in mlxsw_sp_netdevice_ipip_ol_change_event()
1666 ipip_entry->ipipt)) { in mlxsw_sp_netdevice_ipip_ol_change_event()
1667 mlxsw_sp_ipip_entry_demote_tunnel(mlxsw_sp, ipip_entry); in mlxsw_sp_netdevice_ipip_ol_change_event()
1671 ipip_ops = mlxsw_sp->router->ipip_ops_arr[ipip_entry->ipipt]; in mlxsw_sp_netdevice_ipip_ol_change_event()
1672 err = ipip_ops->ol_netdev_change(mlxsw_sp, ipip_entry, extack); in mlxsw_sp_netdevice_ipip_ol_change_event()
1677 struct mlxsw_sp_ipip_entry *ipip_entry) in mlxsw_sp_ipip_entry_demote_tunnel() argument
1679 struct net_device *ol_dev = ipip_entry->ol_dev; in mlxsw_sp_ipip_entry_demote_tunnel()
1682 mlxsw_sp_ipip_entry_ol_down_event(mlxsw_sp, ipip_entry); in mlxsw_sp_ipip_entry_demote_tunnel()
1683 mlxsw_sp_ipip_entry_destroy(mlxsw_sp, ipip_entry); in mlxsw_sp_ipip_entry_demote_tunnel()
1699 struct mlxsw_sp_ipip_entry *ipip_entry, *tmp; in mlxsw_sp_ipip_demote_tunnel_by_saddr() local
1701 list_for_each_entry_safe(ipip_entry, tmp, &mlxsw_sp->router->ipip_list, in mlxsw_sp_ipip_demote_tunnel_by_saddr()
1703 if (ipip_entry != except && in mlxsw_sp_ipip_demote_tunnel_by_saddr()
1705 ul_tb_id, ipip_entry)) { in mlxsw_sp_ipip_demote_tunnel_by_saddr()
1706 mlxsw_sp_ipip_entry_demote_tunnel(mlxsw_sp, ipip_entry); in mlxsw_sp_ipip_demote_tunnel_by_saddr()
1717 struct mlxsw_sp_ipip_entry *ipip_entry, *tmp; in mlxsw_sp_ipip_demote_tunnel_by_ul_netdev() local
1719 list_for_each_entry_safe(ipip_entry, tmp, &mlxsw_sp->router->ipip_list, in mlxsw_sp_ipip_demote_tunnel_by_ul_netdev()
1721 struct net_device *ol_dev = ipip_entry->ol_dev; in mlxsw_sp_ipip_demote_tunnel_by_ul_netdev()
1728 mlxsw_sp_ipip_entry_demote_tunnel(mlxsw_sp, ipip_entry); in mlxsw_sp_ipip_demote_tunnel_by_ul_netdev()
1778 struct mlxsw_sp_ipip_entry *ipip_entry, in __mlxsw_sp_netdevice_ipip_ul_event() argument
1793 ipip_entry, in __mlxsw_sp_netdevice_ipip_ul_event()
1800 return mlxsw_sp_netdevice_ipip_ul_up_event(mlxsw_sp, ipip_entry, in __mlxsw_sp_netdevice_ipip_ul_event()
1804 ipip_entry, in __mlxsw_sp_netdevice_ipip_ul_event()
1816 struct mlxsw_sp_ipip_entry *ipip_entry = NULL; in mlxsw_sp_netdevice_ipip_ul_event() local
1820 while ((ipip_entry = mlxsw_sp_ipip_entry_find_by_ul_dev(mlxsw_sp, in mlxsw_sp_netdevice_ipip_ul_event()
1822 ipip_entry))) { in mlxsw_sp_netdevice_ipip_ul_event()
1826 err = __mlxsw_sp_netdevice_ipip_ul_event(mlxsw_sp, ipip_entry, in mlxsw_sp_netdevice_ipip_ul_event()
1836 if (list_is_first(&ipip_entry->ipip_list_node, in mlxsw_sp_netdevice_ipip_ul_event()
1843 prev = list_prev_entry(ipip_entry, in mlxsw_sp_netdevice_ipip_ul_event()
1845 mlxsw_sp_ipip_entry_demote_tunnel(mlxsw_sp, ipip_entry); in mlxsw_sp_netdevice_ipip_ul_event()
1846 ipip_entry = prev; in mlxsw_sp_netdevice_ipip_ul_event()
2775 struct mlxsw_sp_ipip_entry *ipip_entry; member
3208 ipip_ops = mlxsw_sp->router->ipip_ops_arr[nh->ipip_entry->ipipt]; in __mlxsw_sp_nexthop_ipip_update()
3209 return ipip_ops->nexthop_update(mlxsw_sp, adj_index, nh->ipip_entry); in __mlxsw_sp_nexthop_ipip_update()
3774 struct mlxsw_sp_ipip_entry *ipip_entry) in mlxsw_sp_nexthop_ipip_init() argument
3778 if (!nh->nh_grp->gateway || nh->ipip_entry) in mlxsw_sp_nexthop_ipip_init()
3781 nh->ipip_entry = ipip_entry; in mlxsw_sp_nexthop_ipip_init()
3782 removing = !mlxsw_sp_ipip_netdev_ul_up(ipip_entry->ol_dev); in mlxsw_sp_nexthop_ipip_init()
3784 mlxsw_sp_nexthop_rif_init(nh, &ipip_entry->ol_lb->common); in mlxsw_sp_nexthop_ipip_init()
3790 struct mlxsw_sp_ipip_entry *ipip_entry = nh->ipip_entry; in mlxsw_sp_nexthop_ipip_fini() local
3792 if (!ipip_entry) in mlxsw_sp_nexthop_ipip_fini()
3796 nh->ipip_entry = NULL; in mlxsw_sp_nexthop_ipip_fini()
3831 struct mlxsw_sp_ipip_entry *ipip_entry; in mlxsw_sp_nexthop4_type_init() local
3835 ipip_entry = mlxsw_sp_ipip_entry_find_by_ol_dev(mlxsw_sp, dev); in mlxsw_sp_nexthop4_type_init()
3836 if (ipip_entry) { in mlxsw_sp_nexthop4_type_init()
3837 ipip_ops = mlxsw_sp->router->ipip_ops_arr[ipip_entry->ipipt]; in mlxsw_sp_nexthop4_type_init()
3841 mlxsw_sp_nexthop_ipip_init(mlxsw_sp, nh, ipip_entry); in mlxsw_sp_nexthop4_type_init()
4450 struct mlxsw_sp_ipip_entry *ipip_entry = fib_entry->decap.ipip_entry; in mlxsw_sp_fib_entry_op_ipip_decap() local
4453 if (WARN_ON(!ipip_entry)) in mlxsw_sp_fib_entry_op_ipip_decap()
4456 ipip_ops = mlxsw_sp->router->ipip_ops_arr[ipip_entry->ipipt]; in mlxsw_sp_fib_entry_op_ipip_decap()
4457 return ipip_ops->fib_entry_op(mlxsw_sp, ipip_entry, op, in mlxsw_sp_fib_entry_op_ipip_decap()
4535 struct mlxsw_sp_ipip_entry *ipip_entry; in mlxsw_sp_fib4_entry_type_set() local
4540 ipip_entry = mlxsw_sp_ipip_entry_find_by_decap(mlxsw_sp, dev, in mlxsw_sp_fib4_entry_type_set()
4542 if (ipip_entry && ipip_entry->ol_dev->flags & IFF_UP) { in mlxsw_sp_fib4_entry_type_set()
4546 ipip_entry); in mlxsw_sp_fib4_entry_type_set()
5090 struct mlxsw_sp_ipip_entry *ipip_entry; in mlxsw_sp_nexthop6_type_init() local
5095 ipip_entry = mlxsw_sp_ipip_entry_find_by_ol_dev(mlxsw_sp, dev); in mlxsw_sp_nexthop6_type_init()
5096 if (ipip_entry) { in mlxsw_sp_nexthop6_type_init()
5097 ipip_ops = mlxsw_sp->router->ipip_ops_arr[ipip_entry->ipipt]; in mlxsw_sp_nexthop6_type_init()
5101 mlxsw_sp_nexthop_ipip_init(mlxsw_sp, nh, ipip_entry); in mlxsw_sp_nexthop6_type_init()