Lines Matching refs:ipip_entry
471 struct mlxsw_sp_ipip_entry *ipip_entry; member
1174 struct mlxsw_sp_ipip_entry *ipip_entry; in mlxsw_sp_ipip_entry_alloc() local
1179 ipip_entry = kzalloc(sizeof(*ipip_entry), GFP_KERNEL); in mlxsw_sp_ipip_entry_alloc()
1180 if (!ipip_entry) in mlxsw_sp_ipip_entry_alloc()
1183 ipip_entry->ol_lb = mlxsw_sp_ipip_ol_ipip_lb_create(mlxsw_sp, ipipt, in mlxsw_sp_ipip_entry_alloc()
1185 if (IS_ERR(ipip_entry->ol_lb)) { in mlxsw_sp_ipip_entry_alloc()
1186 ret = ERR_CAST(ipip_entry->ol_lb); in mlxsw_sp_ipip_entry_alloc()
1190 ipip_entry->ipipt = ipipt; in mlxsw_sp_ipip_entry_alloc()
1191 ipip_entry->ol_dev = ol_dev; in mlxsw_sp_ipip_entry_alloc()
1192 ipip_entry->parms = ipip_ops->parms_init(ol_dev); in mlxsw_sp_ipip_entry_alloc()
1194 err = ipip_ops->rem_ip_addr_set(mlxsw_sp, ipip_entry); in mlxsw_sp_ipip_entry_alloc()
1200 return ipip_entry; in mlxsw_sp_ipip_entry_alloc()
1203 mlxsw_sp_rif_destroy(&ipip_entry->ol_lb->common); in mlxsw_sp_ipip_entry_alloc()
1205 kfree(ipip_entry); in mlxsw_sp_ipip_entry_alloc()
1210 struct mlxsw_sp_ipip_entry *ipip_entry) in mlxsw_sp_ipip_entry_dealloc() argument
1213 mlxsw_sp->router->ipip_ops_arr[ipip_entry->ipipt]; in mlxsw_sp_ipip_entry_dealloc()
1215 ipip_ops->rem_ip_addr_unset(mlxsw_sp, ipip_entry); in mlxsw_sp_ipip_entry_dealloc()
1216 mlxsw_sp_rif_destroy(&ipip_entry->ol_lb->common); in mlxsw_sp_ipip_entry_dealloc()
1217 kfree(ipip_entry); in mlxsw_sp_ipip_entry_dealloc()
1225 struct mlxsw_sp_ipip_entry *ipip_entry) in mlxsw_sp_ipip_entry_saddr_matches() argument
1227 u32 tun_ul_tb_id = mlxsw_sp_ipip_dev_ul_tb_id(ipip_entry->ol_dev); in mlxsw_sp_ipip_entry_saddr_matches()
1228 enum mlxsw_sp_ipip_type ipipt = ipip_entry->ipipt; in mlxsw_sp_ipip_entry_saddr_matches()
1234 tun_saddr = mlxsw_sp_ipip_netdev_saddr(ul_proto, ipip_entry->ol_dev); in mlxsw_sp_ipip_entry_saddr_matches()
1268 struct mlxsw_sp_ipip_entry *ipip_entry) in mlxsw_sp_fib_entry_decap_init() argument
1279 ipip_entry->ipipt); in mlxsw_sp_fib_entry_decap_init()
1283 ipip_entry->decap_fib_entry = fib_entry; in mlxsw_sp_fib_entry_decap_init()
1284 fib_entry->decap.ipip_entry = ipip_entry; in mlxsw_sp_fib_entry_decap_init()
1298 enum mlxsw_sp_ipip_type ipipt = fib_entry->decap.ipip_entry->ipipt; in mlxsw_sp_fib_entry_decap_fini()
1301 fib_entry->decap.ipip_entry->decap_fib_entry = NULL; in mlxsw_sp_fib_entry_decap_fini()
1302 fib_entry->decap.ipip_entry = NULL; in mlxsw_sp_fib_entry_decap_fini()
1316 struct mlxsw_sp_ipip_entry *ipip_entry) in mlxsw_sp_ipip_entry_demote_decap() argument
1318 struct mlxsw_sp_fib_entry *fib_entry = ipip_entry->decap_fib_entry; in mlxsw_sp_ipip_entry_demote_decap()
1328 struct mlxsw_sp_ipip_entry *ipip_entry, in mlxsw_sp_ipip_entry_promote_decap() argument
1332 ipip_entry)) in mlxsw_sp_ipip_entry_promote_decap()
1337 mlxsw_sp_ipip_entry_demote_decap(mlxsw_sp, ipip_entry); in mlxsw_sp_ipip_entry_promote_decap()
1387 struct mlxsw_sp_ipip_entry *ipip_entry) in mlxsw_sp_ipip_entry_find_decap() argument
1400 ipip_ops = mlxsw_sp->router->ipip_ops_arr[ipip_entry->ipipt]; in mlxsw_sp_ipip_entry_find_decap()
1402 ul_tb_id = mlxsw_sp_ipip_dev_ul_tb_id(ipip_entry->ol_dev); in mlxsw_sp_ipip_entry_find_decap()
1409 ipip_entry->ol_dev); in mlxsw_sp_ipip_entry_find_decap()
1442 struct mlxsw_sp_ipip_entry *ipip_entry; in mlxsw_sp_ipip_entry_create() local
1444 ipip_entry = mlxsw_sp_ipip_entry_alloc(mlxsw_sp, ipipt, ol_dev); in mlxsw_sp_ipip_entry_create()
1445 if (IS_ERR(ipip_entry)) in mlxsw_sp_ipip_entry_create()
1446 return ipip_entry; in mlxsw_sp_ipip_entry_create()
1448 list_add_tail(&ipip_entry->ipip_list_node, in mlxsw_sp_ipip_entry_create()
1451 return ipip_entry; in mlxsw_sp_ipip_entry_create()
1456 struct mlxsw_sp_ipip_entry *ipip_entry) in mlxsw_sp_ipip_entry_destroy() argument
1458 list_del(&ipip_entry->ipip_list_node); in mlxsw_sp_ipip_entry_destroy()
1459 mlxsw_sp_ipip_entry_dealloc(mlxsw_sp, ipip_entry); in mlxsw_sp_ipip_entry_destroy()
1467 struct mlxsw_sp_ipip_entry *ipip_entry) in mlxsw_sp_ipip_entry_matches_decap() argument
1470 enum mlxsw_sp_ipip_type ipipt = ipip_entry->ipipt; in mlxsw_sp_ipip_entry_matches_decap()
1476 ul_tb_id, ipip_entry); in mlxsw_sp_ipip_entry_matches_decap()
1485 struct mlxsw_sp_ipip_entry *ipip_entry = NULL; in mlxsw_sp_ipip_entry_find_by_decap() local
1494 list_for_each_entry(ipip_entry, &mlxsw_sp->router->ipip_list, in mlxsw_sp_ipip_entry_find_by_decap()
1498 ipip_entry)) in mlxsw_sp_ipip_entry_find_by_decap()
1507 return ipip_entry; in mlxsw_sp_ipip_entry_find_by_decap()
1539 struct mlxsw_sp_ipip_entry *ipip_entry; in mlxsw_sp_ipip_entry_find_by_ol_dev() local
1541 list_for_each_entry(ipip_entry, &mlxsw_sp->router->ipip_list, in mlxsw_sp_ipip_entry_find_by_ol_dev()
1543 if (ipip_entry->ol_dev == ol_dev) in mlxsw_sp_ipip_entry_find_by_ol_dev()
1544 return ipip_entry; in mlxsw_sp_ipip_entry_find_by_ol_dev()
1554 struct mlxsw_sp_ipip_entry *ipip_entry; in mlxsw_sp_ipip_entry_find_by_ul_dev() local
1556 ipip_entry = list_prepare_entry(start, &mlxsw_sp->router->ipip_list, in mlxsw_sp_ipip_entry_find_by_ul_dev()
1558 list_for_each_entry_continue(ipip_entry, &mlxsw_sp->router->ipip_list, in mlxsw_sp_ipip_entry_find_by_ul_dev()
1560 struct net_device *ol_dev = ipip_entry->ol_dev; in mlxsw_sp_ipip_entry_find_by_ul_dev()
1568 return ipip_entry; in mlxsw_sp_ipip_entry_find_by_ul_dev()
1594 struct mlxsw_sp_ipip_entry *ipip_entry; in mlxsw_sp_netdevice_ipip_ol_reg_event() local
1607 ipip_entry = mlxsw_sp_ipip_entry_create(mlxsw_sp, ipipt, in mlxsw_sp_netdevice_ipip_ol_reg_event()
1609 if (IS_ERR(ipip_entry)) in mlxsw_sp_netdevice_ipip_ol_reg_event()
1610 return PTR_ERR(ipip_entry); in mlxsw_sp_netdevice_ipip_ol_reg_event()
1620 struct mlxsw_sp_ipip_entry *ipip_entry; in mlxsw_sp_netdevice_ipip_ol_unreg_event() local
1622 ipip_entry = mlxsw_sp_ipip_entry_find_by_ol_dev(mlxsw_sp, ol_dev); in mlxsw_sp_netdevice_ipip_ol_unreg_event()
1623 if (ipip_entry) in mlxsw_sp_netdevice_ipip_ol_unreg_event()
1624 mlxsw_sp_ipip_entry_destroy(mlxsw_sp, ipip_entry); in mlxsw_sp_netdevice_ipip_ol_unreg_event()
1629 struct mlxsw_sp_ipip_entry *ipip_entry) in mlxsw_sp_ipip_entry_ol_up_event() argument
1633 decap_fib_entry = mlxsw_sp_ipip_entry_find_decap(mlxsw_sp, ipip_entry); in mlxsw_sp_ipip_entry_ol_up_event()
1635 mlxsw_sp_ipip_entry_promote_decap(mlxsw_sp, ipip_entry, in mlxsw_sp_ipip_entry_ol_up_event()
1681 struct mlxsw_sp_ipip_entry *ipip_entry; in mlxsw_sp_netdevice_ipip_ol_update_mtu() local
1685 ipip_entry = mlxsw_sp_ipip_entry_find_by_ol_dev(mlxsw_sp, ol_dev); in mlxsw_sp_netdevice_ipip_ol_update_mtu()
1686 if (ipip_entry) { in mlxsw_sp_netdevice_ipip_ol_update_mtu()
1687 lb_rif = ipip_entry->ol_lb; in mlxsw_sp_netdevice_ipip_ol_update_mtu()
1702 struct mlxsw_sp_ipip_entry *ipip_entry; in mlxsw_sp_netdevice_ipip_ol_up_event() local
1704 ipip_entry = mlxsw_sp_ipip_entry_find_by_ol_dev(mlxsw_sp, ol_dev); in mlxsw_sp_netdevice_ipip_ol_up_event()
1705 if (ipip_entry) in mlxsw_sp_netdevice_ipip_ol_up_event()
1706 mlxsw_sp_ipip_entry_ol_up_event(mlxsw_sp, ipip_entry); in mlxsw_sp_netdevice_ipip_ol_up_event()
1711 struct mlxsw_sp_ipip_entry *ipip_entry) in mlxsw_sp_ipip_entry_ol_down_event() argument
1713 if (ipip_entry->decap_fib_entry) in mlxsw_sp_ipip_entry_ol_down_event()
1714 mlxsw_sp_ipip_entry_demote_decap(mlxsw_sp, ipip_entry); in mlxsw_sp_ipip_entry_ol_down_event()
1720 struct mlxsw_sp_ipip_entry *ipip_entry; in mlxsw_sp_netdevice_ipip_ol_down_event() local
1722 ipip_entry = mlxsw_sp_ipip_entry_find_by_ol_dev(mlxsw_sp, ol_dev); in mlxsw_sp_netdevice_ipip_ol_down_event()
1723 if (ipip_entry) in mlxsw_sp_netdevice_ipip_ol_down_event()
1724 mlxsw_sp_ipip_entry_ol_down_event(mlxsw_sp, ipip_entry); in mlxsw_sp_netdevice_ipip_ol_down_event()
1752 struct mlxsw_sp_ipip_entry *ipip_entry, in mlxsw_sp_ipip_entry_ol_lb_update() argument
1756 struct mlxsw_sp_rif_ipip_lb *old_lb_rif = ipip_entry->ol_lb; in mlxsw_sp_ipip_entry_ol_lb_update()
1760 ipip_entry->ipipt, in mlxsw_sp_ipip_entry_ol_lb_update()
1761 ipip_entry->ol_dev, in mlxsw_sp_ipip_entry_ol_lb_update()
1765 ipip_entry->ol_lb = new_lb_rif; in mlxsw_sp_ipip_entry_ol_lb_update()
1786 struct mlxsw_sp_ipip_entry *ipip_entry, in __mlxsw_sp_ipip_entry_update_tunnel() argument
1800 if (ipip_entry->decap_fib_entry) in __mlxsw_sp_ipip_entry_update_tunnel()
1801 mlxsw_sp_ipip_entry_demote_decap(mlxsw_sp, ipip_entry); in __mlxsw_sp_ipip_entry_update_tunnel()
1804 err = mlxsw_sp_ipip_entry_ol_lb_update(mlxsw_sp, ipip_entry, in __mlxsw_sp_ipip_entry_update_tunnel()
1810 &ipip_entry->ol_lb->common); in __mlxsw_sp_ipip_entry_update_tunnel()
1813 if (ipip_entry->ol_dev->flags & IFF_UP) in __mlxsw_sp_ipip_entry_update_tunnel()
1814 mlxsw_sp_ipip_entry_ol_up_event(mlxsw_sp, ipip_entry); in __mlxsw_sp_ipip_entry_update_tunnel()
1823 struct mlxsw_sp_ipip_entry *ipip_entry = in mlxsw_sp_netdevice_ipip_ol_vrf_event() local
1826 if (!ipip_entry) in mlxsw_sp_netdevice_ipip_ol_vrf_event()
1829 return __mlxsw_sp_ipip_entry_update_tunnel(mlxsw_sp, ipip_entry, in mlxsw_sp_netdevice_ipip_ol_vrf_event()
1835 struct mlxsw_sp_ipip_entry *ipip_entry, in mlxsw_sp_netdevice_ipip_ul_vrf_event() argument
1847 ul_proto = mlxsw_sp->router->ipip_ops_arr[ipip_entry->ipipt]->ul_proto; in mlxsw_sp_netdevice_ipip_ul_vrf_event()
1848 saddr = mlxsw_sp_ipip_netdev_saddr(ul_proto, ipip_entry->ol_dev); in mlxsw_sp_netdevice_ipip_ul_vrf_event()
1851 ipip_entry)) { in mlxsw_sp_netdevice_ipip_ul_vrf_event()
1856 return __mlxsw_sp_ipip_entry_update_tunnel(mlxsw_sp, ipip_entry, in mlxsw_sp_netdevice_ipip_ul_vrf_event()
1862 struct mlxsw_sp_ipip_entry *ipip_entry, in mlxsw_sp_netdevice_ipip_ul_up_event() argument
1865 return __mlxsw_sp_ipip_entry_update_tunnel(mlxsw_sp, ipip_entry, in mlxsw_sp_netdevice_ipip_ul_up_event()
1871 struct mlxsw_sp_ipip_entry *ipip_entry, in mlxsw_sp_netdevice_ipip_ul_down_event() argument
1878 return __mlxsw_sp_ipip_entry_update_tunnel(mlxsw_sp, ipip_entry, in mlxsw_sp_netdevice_ipip_ul_down_event()
1888 struct mlxsw_sp_ipip_entry *ipip_entry; in mlxsw_sp_netdevice_ipip_ol_change_event() local
1891 ipip_entry = mlxsw_sp_ipip_entry_find_by_ol_dev(mlxsw_sp, ol_dev); in mlxsw_sp_netdevice_ipip_ol_change_event()
1892 if (!ipip_entry) in mlxsw_sp_netdevice_ipip_ol_change_event()
1901 ipip_entry->ipipt)) { in mlxsw_sp_netdevice_ipip_ol_change_event()
1902 mlxsw_sp_ipip_entry_demote_tunnel(mlxsw_sp, ipip_entry); in mlxsw_sp_netdevice_ipip_ol_change_event()
1906 ipip_ops = mlxsw_sp->router->ipip_ops_arr[ipip_entry->ipipt]; in mlxsw_sp_netdevice_ipip_ol_change_event()
1907 err = ipip_ops->ol_netdev_change(mlxsw_sp, ipip_entry, extack); in mlxsw_sp_netdevice_ipip_ol_change_event()
1912 struct mlxsw_sp_ipip_entry *ipip_entry) in mlxsw_sp_ipip_entry_demote_tunnel() argument
1914 struct net_device *ol_dev = ipip_entry->ol_dev; in mlxsw_sp_ipip_entry_demote_tunnel()
1917 mlxsw_sp_ipip_entry_ol_down_event(mlxsw_sp, ipip_entry); in mlxsw_sp_ipip_entry_demote_tunnel()
1918 mlxsw_sp_ipip_entry_destroy(mlxsw_sp, ipip_entry); in mlxsw_sp_ipip_entry_demote_tunnel()
1934 struct mlxsw_sp_ipip_entry *ipip_entry, *tmp; in mlxsw_sp_ipip_demote_tunnel_by_saddr() local
1936 list_for_each_entry_safe(ipip_entry, tmp, &mlxsw_sp->router->ipip_list, in mlxsw_sp_ipip_demote_tunnel_by_saddr()
1938 if (ipip_entry != except && in mlxsw_sp_ipip_demote_tunnel_by_saddr()
1940 ul_tb_id, ipip_entry)) { in mlxsw_sp_ipip_demote_tunnel_by_saddr()
1941 mlxsw_sp_ipip_entry_demote_tunnel(mlxsw_sp, ipip_entry); in mlxsw_sp_ipip_demote_tunnel_by_saddr()
1952 struct mlxsw_sp_ipip_entry *ipip_entry, *tmp; in mlxsw_sp_ipip_demote_tunnel_by_ul_netdev() local
1954 list_for_each_entry_safe(ipip_entry, tmp, &mlxsw_sp->router->ipip_list, in mlxsw_sp_ipip_demote_tunnel_by_ul_netdev()
1956 struct net_device *ol_dev = ipip_entry->ol_dev; in mlxsw_sp_ipip_demote_tunnel_by_ul_netdev()
1963 mlxsw_sp_ipip_entry_demote_tunnel(mlxsw_sp, ipip_entry); in mlxsw_sp_ipip_demote_tunnel_by_ul_netdev()
2011 struct mlxsw_sp_ipip_entry *ipip_entry, in __mlxsw_sp_netdevice_ipip_ul_event() argument
2026 ipip_entry, in __mlxsw_sp_netdevice_ipip_ul_event()
2033 return mlxsw_sp_netdevice_ipip_ul_up_event(mlxsw_sp, ipip_entry, in __mlxsw_sp_netdevice_ipip_ul_event()
2037 ipip_entry, in __mlxsw_sp_netdevice_ipip_ul_event()
2049 struct mlxsw_sp_ipip_entry *ipip_entry = NULL; in mlxsw_sp_netdevice_ipip_ul_event() local
2052 while ((ipip_entry = mlxsw_sp_ipip_entry_find_by_ul_dev(mlxsw_sp, in mlxsw_sp_netdevice_ipip_ul_event()
2054 ipip_entry))) { in mlxsw_sp_netdevice_ipip_ul_event()
2058 err = __mlxsw_sp_netdevice_ipip_ul_event(mlxsw_sp, ipip_entry, in mlxsw_sp_netdevice_ipip_ul_event()
2068 if (list_is_first(&ipip_entry->ipip_list_node, in mlxsw_sp_netdevice_ipip_ul_event()
2075 prev = list_prev_entry(ipip_entry, in mlxsw_sp_netdevice_ipip_ul_event()
2077 mlxsw_sp_ipip_entry_demote_tunnel(mlxsw_sp, ipip_entry); in mlxsw_sp_netdevice_ipip_ul_event()
2078 ipip_entry = prev; in mlxsw_sp_netdevice_ipip_ul_event()
3080 struct mlxsw_sp_ipip_entry *ipip_entry; member
3691 ipip_ops = mlxsw_sp->router->ipip_ops_arr[nh->ipip_entry->ipipt]; in __mlxsw_sp_nexthop_ipip_update()
3692 return ipip_ops->nexthop_update(mlxsw_sp, adj_index, nh->ipip_entry, in __mlxsw_sp_nexthop_ipip_update()
4373 struct mlxsw_sp_ipip_entry *ipip_entry) in mlxsw_sp_nexthop_ipip_init() argument
4378 if (!nh->nhgi->gateway || nh->ipip_entry) in mlxsw_sp_nexthop_ipip_init()
4381 crif = mlxsw_sp_crif_lookup(mlxsw_sp->router, ipip_entry->ol_dev); in mlxsw_sp_nexthop_ipip_init()
4385 nh->ipip_entry = ipip_entry; in mlxsw_sp_nexthop_ipip_init()
4386 removing = !mlxsw_sp_ipip_netdev_ul_up(ipip_entry->ol_dev); in mlxsw_sp_nexthop_ipip_init()
4394 struct mlxsw_sp_ipip_entry *ipip_entry = nh->ipip_entry; in mlxsw_sp_nexthop_ipip_fini() local
4396 if (!ipip_entry) in mlxsw_sp_nexthop_ipip_fini()
4400 nh->ipip_entry = NULL; in mlxsw_sp_nexthop_ipip_fini()
4419 struct mlxsw_sp_ipip_entry *ipip_entry; in mlxsw_sp_nexthop_type_init() local
4423 ipip_entry = mlxsw_sp_ipip_entry_find_by_ol_dev(mlxsw_sp, dev); in mlxsw_sp_nexthop_type_init()
4424 if (ipip_entry) { in mlxsw_sp_nexthop_type_init()
4425 ipip_ops = mlxsw_sp->router->ipip_ops_arr[ipip_entry->ipipt]; in mlxsw_sp_nexthop_type_init()
4428 mlxsw_sp_nexthop_ipip_init(mlxsw_sp, nh, ipip_entry); in mlxsw_sp_nexthop_type_init()
6061 struct mlxsw_sp_ipip_entry *ipip_entry = fib_entry->decap.ipip_entry; in mlxsw_sp_fib_entry_op_ipip_decap() local
6066 if (WARN_ON(!ipip_entry)) in mlxsw_sp_fib_entry_op_ipip_decap()
6069 ipip_ops = mlxsw_sp->router->ipip_ops_arr[ipip_entry->ipipt]; in mlxsw_sp_fib_entry_op_ipip_decap()
6070 err = ipip_ops->decap_config(mlxsw_sp, ipip_entry, in mlxsw_sp_fib_entry_op_ipip_decap()
6156 struct mlxsw_sp_ipip_entry *ipip_entry; in mlxsw_sp_fib4_entry_type_set() local
6160 ipip_entry = mlxsw_sp_ipip_entry_find_by_decap(mlxsw_sp, ifindex, in mlxsw_sp_fib4_entry_type_set()
6162 if (ipip_entry && ipip_entry->ol_dev->flags & IFF_UP) { in mlxsw_sp_fib4_entry_type_set()
6166 ipip_entry); in mlxsw_sp_fib4_entry_type_set()
7059 struct mlxsw_sp_ipip_entry *ipip_entry; in mlxsw_sp_fib6_entry_type_set_local() local
7062 ipip_entry = mlxsw_sp_ipip_entry_find_by_decap(mlxsw_sp, ifindex, in mlxsw_sp_fib6_entry_type_set_local()
7066 if (ipip_entry && ipip_entry->ol_dev->flags & IFF_UP) { in mlxsw_sp_fib6_entry_type_set_local()
7069 ipip_entry); in mlxsw_sp_fib6_entry_type_set_local()