Lines Matching refs:ipip_entry
372 struct mlxsw_sp_ipip_entry *ipip_entry; member
1117 struct mlxsw_sp_ipip_entry *ipip_entry; in mlxsw_sp_ipip_entry_alloc() local
1121 ipip_entry = kzalloc(sizeof(*ipip_entry), GFP_KERNEL); in mlxsw_sp_ipip_entry_alloc()
1122 if (!ipip_entry) in mlxsw_sp_ipip_entry_alloc()
1125 ipip_entry->ol_lb = mlxsw_sp_ipip_ol_ipip_lb_create(mlxsw_sp, ipipt, in mlxsw_sp_ipip_entry_alloc()
1127 if (IS_ERR(ipip_entry->ol_lb)) { in mlxsw_sp_ipip_entry_alloc()
1128 ret = ERR_CAST(ipip_entry->ol_lb); in mlxsw_sp_ipip_entry_alloc()
1132 ipip_entry->ipipt = ipipt; in mlxsw_sp_ipip_entry_alloc()
1133 ipip_entry->ol_dev = ol_dev; in mlxsw_sp_ipip_entry_alloc()
1137 ipip_entry->parms4 = mlxsw_sp_ipip_netdev_parms4(ol_dev); in mlxsw_sp_ipip_entry_alloc()
1144 return ipip_entry; in mlxsw_sp_ipip_entry_alloc()
1147 kfree(ipip_entry); in mlxsw_sp_ipip_entry_alloc()
1152 mlxsw_sp_ipip_entry_dealloc(struct mlxsw_sp_ipip_entry *ipip_entry) in mlxsw_sp_ipip_entry_dealloc() argument
1154 mlxsw_sp_rif_destroy(&ipip_entry->ol_lb->common); in mlxsw_sp_ipip_entry_dealloc()
1155 kfree(ipip_entry); in mlxsw_sp_ipip_entry_dealloc()
1163 struct mlxsw_sp_ipip_entry *ipip_entry) in mlxsw_sp_ipip_entry_saddr_matches() argument
1165 u32 tun_ul_tb_id = mlxsw_sp_ipip_dev_ul_tb_id(ipip_entry->ol_dev); in mlxsw_sp_ipip_entry_saddr_matches()
1166 enum mlxsw_sp_ipip_type ipipt = ipip_entry->ipipt; in mlxsw_sp_ipip_entry_saddr_matches()
1172 tun_saddr = mlxsw_sp_ipip_netdev_saddr(ul_proto, ipip_entry->ol_dev); in mlxsw_sp_ipip_entry_saddr_matches()
1180 struct mlxsw_sp_ipip_entry *ipip_entry) in mlxsw_sp_fib_entry_decap_init() argument
1190 ipip_entry->decap_fib_entry = fib_entry; in mlxsw_sp_fib_entry_decap_init()
1191 fib_entry->decap.ipip_entry = ipip_entry; in mlxsw_sp_fib_entry_decap_init()
1200 fib_entry->decap.ipip_entry->decap_fib_entry = NULL; in mlxsw_sp_fib_entry_decap_fini()
1201 fib_entry->decap.ipip_entry = NULL; in mlxsw_sp_fib_entry_decap_fini()
1214 struct mlxsw_sp_ipip_entry *ipip_entry) in mlxsw_sp_ipip_entry_demote_decap() argument
1216 struct mlxsw_sp_fib_entry *fib_entry = ipip_entry->decap_fib_entry; in mlxsw_sp_ipip_entry_demote_decap()
1226 struct mlxsw_sp_ipip_entry *ipip_entry, in mlxsw_sp_ipip_entry_promote_decap() argument
1230 ipip_entry)) in mlxsw_sp_ipip_entry_promote_decap()
1235 mlxsw_sp_ipip_entry_demote_decap(mlxsw_sp, ipip_entry); in mlxsw_sp_ipip_entry_promote_decap()
1281 struct mlxsw_sp_ipip_entry *ipip_entry) in mlxsw_sp_ipip_entry_find_decap() argument
1294 ipip_ops = mlxsw_sp->router->ipip_ops_arr[ipip_entry->ipipt]; in mlxsw_sp_ipip_entry_find_decap()
1296 ul_tb_id = mlxsw_sp_ipip_dev_ul_tb_id(ipip_entry->ol_dev); in mlxsw_sp_ipip_entry_find_decap()
1303 ipip_entry->ol_dev); in mlxsw_sp_ipip_entry_find_decap()
1331 struct mlxsw_sp_ipip_entry *ipip_entry; in mlxsw_sp_ipip_entry_create() local
1333 ipip_entry = mlxsw_sp_ipip_entry_alloc(mlxsw_sp, ipipt, ol_dev); in mlxsw_sp_ipip_entry_create()
1334 if (IS_ERR(ipip_entry)) in mlxsw_sp_ipip_entry_create()
1335 return ipip_entry; in mlxsw_sp_ipip_entry_create()
1337 list_add_tail(&ipip_entry->ipip_list_node, in mlxsw_sp_ipip_entry_create()
1340 return ipip_entry; in mlxsw_sp_ipip_entry_create()
1345 struct mlxsw_sp_ipip_entry *ipip_entry) in mlxsw_sp_ipip_entry_destroy() argument
1347 list_del(&ipip_entry->ipip_list_node); in mlxsw_sp_ipip_entry_destroy()
1348 mlxsw_sp_ipip_entry_dealloc(ipip_entry); in mlxsw_sp_ipip_entry_destroy()
1356 struct mlxsw_sp_ipip_entry *ipip_entry) in mlxsw_sp_ipip_entry_matches_decap() argument
1359 enum mlxsw_sp_ipip_type ipipt = ipip_entry->ipipt; in mlxsw_sp_ipip_entry_matches_decap()
1365 ul_tb_id, ipip_entry); in mlxsw_sp_ipip_entry_matches_decap()
1374 struct mlxsw_sp_ipip_entry *ipip_entry = NULL; in mlxsw_sp_ipip_entry_find_by_decap() local
1383 list_for_each_entry(ipip_entry, &mlxsw_sp->router->ipip_list, in mlxsw_sp_ipip_entry_find_by_decap()
1387 ipip_entry)) in mlxsw_sp_ipip_entry_find_by_decap()
1396 return ipip_entry; in mlxsw_sp_ipip_entry_find_by_decap()
1428 struct mlxsw_sp_ipip_entry *ipip_entry; in mlxsw_sp_ipip_entry_find_by_ol_dev() local
1430 list_for_each_entry(ipip_entry, &mlxsw_sp->router->ipip_list, in mlxsw_sp_ipip_entry_find_by_ol_dev()
1432 if (ipip_entry->ol_dev == ol_dev) in mlxsw_sp_ipip_entry_find_by_ol_dev()
1433 return ipip_entry; in mlxsw_sp_ipip_entry_find_by_ol_dev()
1443 struct mlxsw_sp_ipip_entry *ipip_entry; in mlxsw_sp_ipip_entry_find_by_ul_dev() local
1445 ipip_entry = list_prepare_entry(start, &mlxsw_sp->router->ipip_list, in mlxsw_sp_ipip_entry_find_by_ul_dev()
1447 list_for_each_entry_continue(ipip_entry, &mlxsw_sp->router->ipip_list, in mlxsw_sp_ipip_entry_find_by_ul_dev()
1449 struct net_device *ol_dev = ipip_entry->ol_dev; in mlxsw_sp_ipip_entry_find_by_ul_dev()
1457 return ipip_entry; in mlxsw_sp_ipip_entry_find_by_ul_dev()
1489 struct mlxsw_sp_ipip_entry *ipip_entry; in mlxsw_sp_netdevice_ipip_ol_reg_event() local
1502 ipip_entry = mlxsw_sp_ipip_entry_create(mlxsw_sp, ipipt, in mlxsw_sp_netdevice_ipip_ol_reg_event()
1504 if (IS_ERR(ipip_entry)) in mlxsw_sp_netdevice_ipip_ol_reg_event()
1505 return PTR_ERR(ipip_entry); in mlxsw_sp_netdevice_ipip_ol_reg_event()
1515 struct mlxsw_sp_ipip_entry *ipip_entry; in mlxsw_sp_netdevice_ipip_ol_unreg_event() local
1517 ipip_entry = mlxsw_sp_ipip_entry_find_by_ol_dev(mlxsw_sp, ol_dev); in mlxsw_sp_netdevice_ipip_ol_unreg_event()
1518 if (ipip_entry) in mlxsw_sp_netdevice_ipip_ol_unreg_event()
1519 mlxsw_sp_ipip_entry_destroy(mlxsw_sp, ipip_entry); in mlxsw_sp_netdevice_ipip_ol_unreg_event()
1524 struct mlxsw_sp_ipip_entry *ipip_entry) in mlxsw_sp_ipip_entry_ol_up_event() argument
1528 decap_fib_entry = mlxsw_sp_ipip_entry_find_decap(mlxsw_sp, ipip_entry); in mlxsw_sp_ipip_entry_ol_up_event()
1530 mlxsw_sp_ipip_entry_promote_decap(mlxsw_sp, ipip_entry, in mlxsw_sp_ipip_entry_ol_up_event()
1564 struct mlxsw_sp_ipip_entry *ipip_entry; in mlxsw_sp_netdevice_ipip_ol_update_mtu() local
1568 ipip_entry = mlxsw_sp_ipip_entry_find_by_ol_dev(mlxsw_sp, ol_dev); in mlxsw_sp_netdevice_ipip_ol_update_mtu()
1569 if (ipip_entry) { in mlxsw_sp_netdevice_ipip_ol_update_mtu()
1570 lb_rif = ipip_entry->ol_lb; in mlxsw_sp_netdevice_ipip_ol_update_mtu()
1585 struct mlxsw_sp_ipip_entry *ipip_entry; in mlxsw_sp_netdevice_ipip_ol_up_event() local
1587 ipip_entry = mlxsw_sp_ipip_entry_find_by_ol_dev(mlxsw_sp, ol_dev); in mlxsw_sp_netdevice_ipip_ol_up_event()
1588 if (ipip_entry) in mlxsw_sp_netdevice_ipip_ol_up_event()
1589 mlxsw_sp_ipip_entry_ol_up_event(mlxsw_sp, ipip_entry); in mlxsw_sp_netdevice_ipip_ol_up_event()
1594 struct mlxsw_sp_ipip_entry *ipip_entry) in mlxsw_sp_ipip_entry_ol_down_event() argument
1596 if (ipip_entry->decap_fib_entry) in mlxsw_sp_ipip_entry_ol_down_event()
1597 mlxsw_sp_ipip_entry_demote_decap(mlxsw_sp, ipip_entry); in mlxsw_sp_ipip_entry_ol_down_event()
1603 struct mlxsw_sp_ipip_entry *ipip_entry; in mlxsw_sp_netdevice_ipip_ol_down_event() local
1605 ipip_entry = mlxsw_sp_ipip_entry_find_by_ol_dev(mlxsw_sp, ol_dev); in mlxsw_sp_netdevice_ipip_ol_down_event()
1606 if (ipip_entry) in mlxsw_sp_netdevice_ipip_ol_down_event()
1607 mlxsw_sp_ipip_entry_ol_down_event(mlxsw_sp, ipip_entry); in mlxsw_sp_netdevice_ipip_ol_down_event()
1615 struct mlxsw_sp_ipip_entry *ipip_entry, in mlxsw_sp_ipip_entry_ol_lb_update() argument
1619 struct mlxsw_sp_rif_ipip_lb *old_lb_rif = ipip_entry->ol_lb; in mlxsw_sp_ipip_entry_ol_lb_update()
1623 ipip_entry->ipipt, in mlxsw_sp_ipip_entry_ol_lb_update()
1624 ipip_entry->ol_dev, in mlxsw_sp_ipip_entry_ol_lb_update()
1628 ipip_entry->ol_lb = new_lb_rif; in mlxsw_sp_ipip_entry_ol_lb_update()
1656 struct mlxsw_sp_ipip_entry *ipip_entry, in __mlxsw_sp_ipip_entry_update_tunnel() argument
1670 if (ipip_entry->decap_fib_entry) in __mlxsw_sp_ipip_entry_update_tunnel()
1671 mlxsw_sp_ipip_entry_demote_decap(mlxsw_sp, ipip_entry); in __mlxsw_sp_ipip_entry_update_tunnel()
1674 err = mlxsw_sp_ipip_entry_ol_lb_update(mlxsw_sp, ipip_entry, in __mlxsw_sp_ipip_entry_update_tunnel()
1680 &ipip_entry->ol_lb->common); in __mlxsw_sp_ipip_entry_update_tunnel()
1683 if (ipip_entry->ol_dev->flags & IFF_UP) in __mlxsw_sp_ipip_entry_update_tunnel()
1684 mlxsw_sp_ipip_entry_ol_up_event(mlxsw_sp, ipip_entry); in __mlxsw_sp_ipip_entry_update_tunnel()
1693 struct mlxsw_sp_ipip_entry *ipip_entry = in mlxsw_sp_netdevice_ipip_ol_vrf_event() local
1696 if (!ipip_entry) in mlxsw_sp_netdevice_ipip_ol_vrf_event()
1699 return __mlxsw_sp_ipip_entry_update_tunnel(mlxsw_sp, ipip_entry, in mlxsw_sp_netdevice_ipip_ol_vrf_event()
1705 struct mlxsw_sp_ipip_entry *ipip_entry, in mlxsw_sp_netdevice_ipip_ul_vrf_event() argument
1717 ul_proto = mlxsw_sp->router->ipip_ops_arr[ipip_entry->ipipt]->ul_proto; in mlxsw_sp_netdevice_ipip_ul_vrf_event()
1718 saddr = mlxsw_sp_ipip_netdev_saddr(ul_proto, ipip_entry->ol_dev); in mlxsw_sp_netdevice_ipip_ul_vrf_event()
1721 ipip_entry)) { in mlxsw_sp_netdevice_ipip_ul_vrf_event()
1726 return __mlxsw_sp_ipip_entry_update_tunnel(mlxsw_sp, ipip_entry, in mlxsw_sp_netdevice_ipip_ul_vrf_event()
1732 struct mlxsw_sp_ipip_entry *ipip_entry, in mlxsw_sp_netdevice_ipip_ul_up_event() argument
1735 return __mlxsw_sp_ipip_entry_update_tunnel(mlxsw_sp, ipip_entry, in mlxsw_sp_netdevice_ipip_ul_up_event()
1741 struct mlxsw_sp_ipip_entry *ipip_entry, in mlxsw_sp_netdevice_ipip_ul_down_event() argument
1748 return __mlxsw_sp_ipip_entry_update_tunnel(mlxsw_sp, ipip_entry, in mlxsw_sp_netdevice_ipip_ul_down_event()
1758 struct mlxsw_sp_ipip_entry *ipip_entry; in mlxsw_sp_netdevice_ipip_ol_change_event() local
1761 ipip_entry = mlxsw_sp_ipip_entry_find_by_ol_dev(mlxsw_sp, ol_dev); in mlxsw_sp_netdevice_ipip_ol_change_event()
1762 if (!ipip_entry) in mlxsw_sp_netdevice_ipip_ol_change_event()
1771 ipip_entry->ipipt)) { in mlxsw_sp_netdevice_ipip_ol_change_event()
1772 mlxsw_sp_ipip_entry_demote_tunnel(mlxsw_sp, ipip_entry); in mlxsw_sp_netdevice_ipip_ol_change_event()
1776 ipip_ops = mlxsw_sp->router->ipip_ops_arr[ipip_entry->ipipt]; in mlxsw_sp_netdevice_ipip_ol_change_event()
1777 err = ipip_ops->ol_netdev_change(mlxsw_sp, ipip_entry, extack); in mlxsw_sp_netdevice_ipip_ol_change_event()
1782 struct mlxsw_sp_ipip_entry *ipip_entry) in mlxsw_sp_ipip_entry_demote_tunnel() argument
1784 struct net_device *ol_dev = ipip_entry->ol_dev; in mlxsw_sp_ipip_entry_demote_tunnel()
1787 mlxsw_sp_ipip_entry_ol_down_event(mlxsw_sp, ipip_entry); in mlxsw_sp_ipip_entry_demote_tunnel()
1788 mlxsw_sp_ipip_entry_destroy(mlxsw_sp, ipip_entry); in mlxsw_sp_ipip_entry_demote_tunnel()
1804 struct mlxsw_sp_ipip_entry *ipip_entry, *tmp; in mlxsw_sp_ipip_demote_tunnel_by_saddr() local
1806 list_for_each_entry_safe(ipip_entry, tmp, &mlxsw_sp->router->ipip_list, in mlxsw_sp_ipip_demote_tunnel_by_saddr()
1808 if (ipip_entry != except && in mlxsw_sp_ipip_demote_tunnel_by_saddr()
1810 ul_tb_id, ipip_entry)) { in mlxsw_sp_ipip_demote_tunnel_by_saddr()
1811 mlxsw_sp_ipip_entry_demote_tunnel(mlxsw_sp, ipip_entry); in mlxsw_sp_ipip_demote_tunnel_by_saddr()
1822 struct mlxsw_sp_ipip_entry *ipip_entry, *tmp; in mlxsw_sp_ipip_demote_tunnel_by_ul_netdev() local
1824 list_for_each_entry_safe(ipip_entry, tmp, &mlxsw_sp->router->ipip_list, in mlxsw_sp_ipip_demote_tunnel_by_ul_netdev()
1826 struct net_device *ol_dev = ipip_entry->ol_dev; in mlxsw_sp_ipip_demote_tunnel_by_ul_netdev()
1833 mlxsw_sp_ipip_entry_demote_tunnel(mlxsw_sp, ipip_entry); in mlxsw_sp_ipip_demote_tunnel_by_ul_netdev()
1883 struct mlxsw_sp_ipip_entry *ipip_entry, in __mlxsw_sp_netdevice_ipip_ul_event() argument
1898 ipip_entry, in __mlxsw_sp_netdevice_ipip_ul_event()
1905 return mlxsw_sp_netdevice_ipip_ul_up_event(mlxsw_sp, ipip_entry, in __mlxsw_sp_netdevice_ipip_ul_event()
1909 ipip_entry, in __mlxsw_sp_netdevice_ipip_ul_event()
1921 struct mlxsw_sp_ipip_entry *ipip_entry = NULL; in mlxsw_sp_netdevice_ipip_ul_event() local
1925 while ((ipip_entry = mlxsw_sp_ipip_entry_find_by_ul_dev(mlxsw_sp, in mlxsw_sp_netdevice_ipip_ul_event()
1927 ipip_entry))) { in mlxsw_sp_netdevice_ipip_ul_event()
1931 err = __mlxsw_sp_netdevice_ipip_ul_event(mlxsw_sp, ipip_entry, in mlxsw_sp_netdevice_ipip_ul_event()
1941 if (list_is_first(&ipip_entry->ipip_list_node, in mlxsw_sp_netdevice_ipip_ul_event()
1948 prev = list_prev_entry(ipip_entry, in mlxsw_sp_netdevice_ipip_ul_event()
1950 mlxsw_sp_ipip_entry_demote_tunnel(mlxsw_sp, ipip_entry); in mlxsw_sp_netdevice_ipip_ul_event()
1951 ipip_entry = prev; in mlxsw_sp_netdevice_ipip_ul_event()
2898 struct mlxsw_sp_ipip_entry *ipip_entry; member
3489 ipip_ops = mlxsw_sp->router->ipip_ops_arr[nh->ipip_entry->ipipt]; in __mlxsw_sp_nexthop_ipip_update()
3490 return ipip_ops->nexthop_update(mlxsw_sp, adj_index, nh->ipip_entry, in __mlxsw_sp_nexthop_ipip_update()
4164 struct mlxsw_sp_ipip_entry *ipip_entry) in mlxsw_sp_nexthop_ipip_init() argument
4168 if (!nh->nhgi->gateway || nh->ipip_entry) in mlxsw_sp_nexthop_ipip_init()
4171 nh->ipip_entry = ipip_entry; in mlxsw_sp_nexthop_ipip_init()
4172 removing = !mlxsw_sp_ipip_netdev_ul_up(ipip_entry->ol_dev); in mlxsw_sp_nexthop_ipip_init()
4174 mlxsw_sp_nexthop_rif_init(nh, &ipip_entry->ol_lb->common); in mlxsw_sp_nexthop_ipip_init()
4180 struct mlxsw_sp_ipip_entry *ipip_entry = nh->ipip_entry; in mlxsw_sp_nexthop_ipip_fini() local
4182 if (!ipip_entry) in mlxsw_sp_nexthop_ipip_fini()
4186 nh->ipip_entry = NULL; in mlxsw_sp_nexthop_ipip_fini()
4205 struct mlxsw_sp_ipip_entry *ipip_entry; in mlxsw_sp_nexthop_type_init() local
4209 ipip_entry = mlxsw_sp_ipip_entry_find_by_ol_dev(mlxsw_sp, dev); in mlxsw_sp_nexthop_type_init()
4210 if (ipip_entry) { in mlxsw_sp_nexthop_type_init()
4211 ipip_ops = mlxsw_sp->router->ipip_ops_arr[ipip_entry->ipipt]; in mlxsw_sp_nexthop_type_init()
4214 mlxsw_sp_nexthop_ipip_init(mlxsw_sp, nh, ipip_entry); in mlxsw_sp_nexthop_type_init()
5878 struct mlxsw_sp_ipip_entry *ipip_entry = fib_entry->decap.ipip_entry; in mlxsw_sp_fib_entry_op_ipip_decap() local
5882 if (WARN_ON(!ipip_entry)) in mlxsw_sp_fib_entry_op_ipip_decap()
5885 ipip_ops = mlxsw_sp->router->ipip_ops_arr[ipip_entry->ipipt]; in mlxsw_sp_fib_entry_op_ipip_decap()
5886 err = ipip_ops->decap_config(mlxsw_sp, ipip_entry, in mlxsw_sp_fib_entry_op_ipip_decap()
5990 struct mlxsw_sp_ipip_entry *ipip_entry; in mlxsw_sp_fib4_entry_type_set() local
5994 ipip_entry = mlxsw_sp_ipip_entry_find_by_decap(mlxsw_sp, ifindex, in mlxsw_sp_fib4_entry_type_set()
5996 if (ipip_entry && ipip_entry->ol_dev->flags & IFF_UP) { in mlxsw_sp_fib4_entry_type_set()
6000 ipip_entry); in mlxsw_sp_fib4_entry_type_set()