Lines Matching refs:ipip_entry

391 	struct mlxsw_sp_ipip_entry *ipip_entry;  member
1034 struct mlxsw_sp_ipip_entry *ipip_entry; in mlxsw_sp_ipip_entry_alloc() local
1038 ipip_entry = kzalloc(sizeof(*ipip_entry), GFP_KERNEL); in mlxsw_sp_ipip_entry_alloc()
1039 if (!ipip_entry) in mlxsw_sp_ipip_entry_alloc()
1042 ipip_entry->ol_lb = mlxsw_sp_ipip_ol_ipip_lb_create(mlxsw_sp, ipipt, in mlxsw_sp_ipip_entry_alloc()
1044 if (IS_ERR(ipip_entry->ol_lb)) { in mlxsw_sp_ipip_entry_alloc()
1045 ret = ERR_CAST(ipip_entry->ol_lb); in mlxsw_sp_ipip_entry_alloc()
1049 ipip_entry->ipipt = ipipt; in mlxsw_sp_ipip_entry_alloc()
1050 ipip_entry->ol_dev = ol_dev; in mlxsw_sp_ipip_entry_alloc()
1054 ipip_entry->parms4 = mlxsw_sp_ipip_netdev_parms4(ol_dev); in mlxsw_sp_ipip_entry_alloc()
1061 return ipip_entry; in mlxsw_sp_ipip_entry_alloc()
1064 kfree(ipip_entry); in mlxsw_sp_ipip_entry_alloc()
1069 mlxsw_sp_ipip_entry_dealloc(struct mlxsw_sp_ipip_entry *ipip_entry) in mlxsw_sp_ipip_entry_dealloc() argument
1071 mlxsw_sp_rif_destroy(&ipip_entry->ol_lb->common); in mlxsw_sp_ipip_entry_dealloc()
1072 kfree(ipip_entry); in mlxsw_sp_ipip_entry_dealloc()
1080 struct mlxsw_sp_ipip_entry *ipip_entry) in mlxsw_sp_ipip_entry_saddr_matches() argument
1082 u32 tun_ul_tb_id = mlxsw_sp_ipip_dev_ul_tb_id(ipip_entry->ol_dev); in mlxsw_sp_ipip_entry_saddr_matches()
1083 enum mlxsw_sp_ipip_type ipipt = ipip_entry->ipipt; in mlxsw_sp_ipip_entry_saddr_matches()
1089 tun_saddr = mlxsw_sp_ipip_netdev_saddr(ul_proto, ipip_entry->ol_dev); in mlxsw_sp_ipip_entry_saddr_matches()
1097 struct mlxsw_sp_ipip_entry *ipip_entry) in mlxsw_sp_fib_entry_decap_init() argument
1107 ipip_entry->decap_fib_entry = fib_entry; in mlxsw_sp_fib_entry_decap_init()
1108 fib_entry->decap.ipip_entry = ipip_entry; in mlxsw_sp_fib_entry_decap_init()
1117 fib_entry->decap.ipip_entry->decap_fib_entry = NULL; in mlxsw_sp_fib_entry_decap_fini()
1118 fib_entry->decap.ipip_entry = NULL; in mlxsw_sp_fib_entry_decap_fini()
1131 struct mlxsw_sp_ipip_entry *ipip_entry) in mlxsw_sp_ipip_entry_demote_decap() argument
1133 struct mlxsw_sp_fib_entry *fib_entry = ipip_entry->decap_fib_entry; in mlxsw_sp_ipip_entry_demote_decap()
1143 struct mlxsw_sp_ipip_entry *ipip_entry, in mlxsw_sp_ipip_entry_promote_decap() argument
1147 ipip_entry)) in mlxsw_sp_ipip_entry_promote_decap()
1152 mlxsw_sp_ipip_entry_demote_decap(mlxsw_sp, ipip_entry); in mlxsw_sp_ipip_entry_promote_decap()
1204 struct mlxsw_sp_ipip_entry *ipip_entry) in mlxsw_sp_ipip_entry_find_decap() argument
1218 ipip_ops = mlxsw_sp->router->ipip_ops_arr[ipip_entry->ipipt]; in mlxsw_sp_ipip_entry_find_decap()
1220 ul_tb_id = mlxsw_sp_ipip_dev_ul_tb_id(ipip_entry->ol_dev); in mlxsw_sp_ipip_entry_find_decap()
1227 ipip_entry->ol_dev); in mlxsw_sp_ipip_entry_find_decap()
1259 struct mlxsw_sp_ipip_entry *ipip_entry; in mlxsw_sp_ipip_entry_create() local
1261 ipip_entry = mlxsw_sp_ipip_entry_alloc(mlxsw_sp, ipipt, ol_dev); in mlxsw_sp_ipip_entry_create()
1262 if (IS_ERR(ipip_entry)) in mlxsw_sp_ipip_entry_create()
1263 return ipip_entry; in mlxsw_sp_ipip_entry_create()
1265 list_add_tail(&ipip_entry->ipip_list_node, in mlxsw_sp_ipip_entry_create()
1268 return ipip_entry; in mlxsw_sp_ipip_entry_create()
1273 struct mlxsw_sp_ipip_entry *ipip_entry) in mlxsw_sp_ipip_entry_destroy() argument
1275 list_del(&ipip_entry->ipip_list_node); in mlxsw_sp_ipip_entry_destroy()
1276 mlxsw_sp_ipip_entry_dealloc(ipip_entry); in mlxsw_sp_ipip_entry_destroy()
1284 struct mlxsw_sp_ipip_entry *ipip_entry) in mlxsw_sp_ipip_entry_matches_decap() argument
1287 enum mlxsw_sp_ipip_type ipipt = ipip_entry->ipipt; in mlxsw_sp_ipip_entry_matches_decap()
1293 ul_tb_id, ipip_entry); in mlxsw_sp_ipip_entry_matches_decap()
1303 struct mlxsw_sp_ipip_entry *ipip_entry; in mlxsw_sp_ipip_entry_find_by_decap() local
1305 list_for_each_entry(ipip_entry, &mlxsw_sp->router->ipip_list, in mlxsw_sp_ipip_entry_find_by_decap()
1309 ipip_entry)) in mlxsw_sp_ipip_entry_find_by_decap()
1310 return ipip_entry; in mlxsw_sp_ipip_entry_find_by_decap()
1344 struct mlxsw_sp_ipip_entry *ipip_entry; in mlxsw_sp_ipip_entry_find_by_ol_dev() local
1346 list_for_each_entry(ipip_entry, &mlxsw_sp->router->ipip_list, in mlxsw_sp_ipip_entry_find_by_ol_dev()
1348 if (ipip_entry->ol_dev == ol_dev) in mlxsw_sp_ipip_entry_find_by_ol_dev()
1349 return ipip_entry; in mlxsw_sp_ipip_entry_find_by_ol_dev()
1359 struct mlxsw_sp_ipip_entry *ipip_entry; in mlxsw_sp_ipip_entry_find_by_ul_dev() local
1361 ipip_entry = list_prepare_entry(start, &mlxsw_sp->router->ipip_list, in mlxsw_sp_ipip_entry_find_by_ul_dev()
1363 list_for_each_entry_continue(ipip_entry, &mlxsw_sp->router->ipip_list, in mlxsw_sp_ipip_entry_find_by_ul_dev()
1366 __mlxsw_sp_ipip_netdev_ul_dev_get(ipip_entry->ol_dev); in mlxsw_sp_ipip_entry_find_by_ul_dev()
1369 return ipip_entry; in mlxsw_sp_ipip_entry_find_by_ul_dev()
1398 struct mlxsw_sp_ipip_entry *ipip_entry; in mlxsw_sp_netdevice_ipip_ol_reg_event() local
1412 ipip_entry = mlxsw_sp_ipip_entry_create(mlxsw_sp, ipipt, in mlxsw_sp_netdevice_ipip_ol_reg_event()
1414 if (IS_ERR(ipip_entry)) in mlxsw_sp_netdevice_ipip_ol_reg_event()
1415 return PTR_ERR(ipip_entry); in mlxsw_sp_netdevice_ipip_ol_reg_event()
1425 struct mlxsw_sp_ipip_entry *ipip_entry; in mlxsw_sp_netdevice_ipip_ol_unreg_event() local
1427 ipip_entry = mlxsw_sp_ipip_entry_find_by_ol_dev(mlxsw_sp, ol_dev); in mlxsw_sp_netdevice_ipip_ol_unreg_event()
1428 if (ipip_entry) in mlxsw_sp_netdevice_ipip_ol_unreg_event()
1429 mlxsw_sp_ipip_entry_destroy(mlxsw_sp, ipip_entry); in mlxsw_sp_netdevice_ipip_ol_unreg_event()
1434 struct mlxsw_sp_ipip_entry *ipip_entry) in mlxsw_sp_ipip_entry_ol_up_event() argument
1438 decap_fib_entry = mlxsw_sp_ipip_entry_find_decap(mlxsw_sp, ipip_entry); in mlxsw_sp_ipip_entry_ol_up_event()
1440 mlxsw_sp_ipip_entry_promote_decap(mlxsw_sp, ipip_entry, in mlxsw_sp_ipip_entry_ol_up_event()
1474 struct mlxsw_sp_ipip_entry *ipip_entry; in mlxsw_sp_netdevice_ipip_ol_update_mtu() local
1478 ipip_entry = mlxsw_sp_ipip_entry_find_by_ol_dev(mlxsw_sp, ol_dev); in mlxsw_sp_netdevice_ipip_ol_update_mtu()
1479 if (ipip_entry) { in mlxsw_sp_netdevice_ipip_ol_update_mtu()
1480 lb_rif = ipip_entry->ol_lb; in mlxsw_sp_netdevice_ipip_ol_update_mtu()
1495 struct mlxsw_sp_ipip_entry *ipip_entry; in mlxsw_sp_netdevice_ipip_ol_up_event() local
1497 ipip_entry = mlxsw_sp_ipip_entry_find_by_ol_dev(mlxsw_sp, ol_dev); in mlxsw_sp_netdevice_ipip_ol_up_event()
1498 if (ipip_entry) in mlxsw_sp_netdevice_ipip_ol_up_event()
1499 mlxsw_sp_ipip_entry_ol_up_event(mlxsw_sp, ipip_entry); in mlxsw_sp_netdevice_ipip_ol_up_event()
1504 struct mlxsw_sp_ipip_entry *ipip_entry) in mlxsw_sp_ipip_entry_ol_down_event() argument
1506 if (ipip_entry->decap_fib_entry) in mlxsw_sp_ipip_entry_ol_down_event()
1507 mlxsw_sp_ipip_entry_demote_decap(mlxsw_sp, ipip_entry); in mlxsw_sp_ipip_entry_ol_down_event()
1513 struct mlxsw_sp_ipip_entry *ipip_entry; in mlxsw_sp_netdevice_ipip_ol_down_event() local
1515 ipip_entry = mlxsw_sp_ipip_entry_find_by_ol_dev(mlxsw_sp, ol_dev); in mlxsw_sp_netdevice_ipip_ol_down_event()
1516 if (ipip_entry) in mlxsw_sp_netdevice_ipip_ol_down_event()
1517 mlxsw_sp_ipip_entry_ol_down_event(mlxsw_sp, ipip_entry); in mlxsw_sp_netdevice_ipip_ol_down_event()
1525 struct mlxsw_sp_ipip_entry *ipip_entry, in mlxsw_sp_ipip_entry_ol_lb_update() argument
1529 struct mlxsw_sp_rif_ipip_lb *old_lb_rif = ipip_entry->ol_lb; in mlxsw_sp_ipip_entry_ol_lb_update()
1533 ipip_entry->ipipt, in mlxsw_sp_ipip_entry_ol_lb_update()
1534 ipip_entry->ol_dev, in mlxsw_sp_ipip_entry_ol_lb_update()
1538 ipip_entry->ol_lb = new_lb_rif; in mlxsw_sp_ipip_entry_ol_lb_update()
1562 struct mlxsw_sp_ipip_entry *ipip_entry, in __mlxsw_sp_ipip_entry_update_tunnel() argument
1576 if (ipip_entry->decap_fib_entry) in __mlxsw_sp_ipip_entry_update_tunnel()
1577 mlxsw_sp_ipip_entry_demote_decap(mlxsw_sp, ipip_entry); in __mlxsw_sp_ipip_entry_update_tunnel()
1580 err = mlxsw_sp_ipip_entry_ol_lb_update(mlxsw_sp, ipip_entry, in __mlxsw_sp_ipip_entry_update_tunnel()
1586 &ipip_entry->ol_lb->common); in __mlxsw_sp_ipip_entry_update_tunnel()
1589 if (ipip_entry->ol_dev->flags & IFF_UP) in __mlxsw_sp_ipip_entry_update_tunnel()
1590 mlxsw_sp_ipip_entry_ol_up_event(mlxsw_sp, ipip_entry); in __mlxsw_sp_ipip_entry_update_tunnel()
1599 struct mlxsw_sp_ipip_entry *ipip_entry = in mlxsw_sp_netdevice_ipip_ol_vrf_event() local
1602 if (!ipip_entry) in mlxsw_sp_netdevice_ipip_ol_vrf_event()
1605 return __mlxsw_sp_ipip_entry_update_tunnel(mlxsw_sp, ipip_entry, in mlxsw_sp_netdevice_ipip_ol_vrf_event()
1611 struct mlxsw_sp_ipip_entry *ipip_entry, in mlxsw_sp_netdevice_ipip_ul_vrf_event() argument
1615 return __mlxsw_sp_ipip_entry_update_tunnel(mlxsw_sp, ipip_entry, in mlxsw_sp_netdevice_ipip_ul_vrf_event()
1621 struct mlxsw_sp_ipip_entry *ipip_entry, in mlxsw_sp_netdevice_ipip_ul_up_event() argument
1624 return __mlxsw_sp_ipip_entry_update_tunnel(mlxsw_sp, ipip_entry, in mlxsw_sp_netdevice_ipip_ul_up_event()
1630 struct mlxsw_sp_ipip_entry *ipip_entry, in mlxsw_sp_netdevice_ipip_ul_down_event() argument
1637 return __mlxsw_sp_ipip_entry_update_tunnel(mlxsw_sp, ipip_entry, in mlxsw_sp_netdevice_ipip_ul_down_event()
1647 struct mlxsw_sp_ipip_entry *ipip_entry; in mlxsw_sp_netdevice_ipip_ol_change_event() local
1650 ipip_entry = mlxsw_sp_ipip_entry_find_by_ol_dev(mlxsw_sp, ol_dev); in mlxsw_sp_netdevice_ipip_ol_change_event()
1651 if (!ipip_entry) in mlxsw_sp_netdevice_ipip_ol_change_event()
1660 ipip_entry->ipipt)) { in mlxsw_sp_netdevice_ipip_ol_change_event()
1661 mlxsw_sp_ipip_entry_demote_tunnel(mlxsw_sp, ipip_entry); in mlxsw_sp_netdevice_ipip_ol_change_event()
1665 ipip_ops = mlxsw_sp->router->ipip_ops_arr[ipip_entry->ipipt]; in mlxsw_sp_netdevice_ipip_ol_change_event()
1666 err = ipip_ops->ol_netdev_change(mlxsw_sp, ipip_entry, extack); in mlxsw_sp_netdevice_ipip_ol_change_event()
1671 struct mlxsw_sp_ipip_entry *ipip_entry) in mlxsw_sp_ipip_entry_demote_tunnel() argument
1673 struct net_device *ol_dev = ipip_entry->ol_dev; in mlxsw_sp_ipip_entry_demote_tunnel()
1676 mlxsw_sp_ipip_entry_ol_down_event(mlxsw_sp, ipip_entry); in mlxsw_sp_ipip_entry_demote_tunnel()
1677 mlxsw_sp_ipip_entry_destroy(mlxsw_sp, ipip_entry); in mlxsw_sp_ipip_entry_demote_tunnel()
1693 struct mlxsw_sp_ipip_entry *ipip_entry, *tmp; in mlxsw_sp_ipip_demote_tunnel_by_saddr() local
1695 list_for_each_entry_safe(ipip_entry, tmp, &mlxsw_sp->router->ipip_list, in mlxsw_sp_ipip_demote_tunnel_by_saddr()
1697 if (ipip_entry != except && in mlxsw_sp_ipip_demote_tunnel_by_saddr()
1699 ul_tb_id, ipip_entry)) { in mlxsw_sp_ipip_demote_tunnel_by_saddr()
1700 mlxsw_sp_ipip_entry_demote_tunnel(mlxsw_sp, ipip_entry); in mlxsw_sp_ipip_demote_tunnel_by_saddr()
1711 struct mlxsw_sp_ipip_entry *ipip_entry, *tmp; in mlxsw_sp_ipip_demote_tunnel_by_ul_netdev() local
1713 list_for_each_entry_safe(ipip_entry, tmp, &mlxsw_sp->router->ipip_list, in mlxsw_sp_ipip_demote_tunnel_by_ul_netdev()
1716 __mlxsw_sp_ipip_netdev_ul_dev_get(ipip_entry->ol_dev); in mlxsw_sp_ipip_demote_tunnel_by_ul_netdev()
1719 mlxsw_sp_ipip_entry_demote_tunnel(mlxsw_sp, ipip_entry); in mlxsw_sp_ipip_demote_tunnel_by_ul_netdev()
1763 struct mlxsw_sp_ipip_entry *ipip_entry, in __mlxsw_sp_netdevice_ipip_ul_event() argument
1777 ipip_entry, in __mlxsw_sp_netdevice_ipip_ul_event()
1783 return mlxsw_sp_netdevice_ipip_ul_up_event(mlxsw_sp, ipip_entry, in __mlxsw_sp_netdevice_ipip_ul_event()
1787 ipip_entry, in __mlxsw_sp_netdevice_ipip_ul_event()
1799 struct mlxsw_sp_ipip_entry *ipip_entry = NULL; in mlxsw_sp_netdevice_ipip_ul_event() local
1802 while ((ipip_entry = mlxsw_sp_ipip_entry_find_by_ul_dev(mlxsw_sp, in mlxsw_sp_netdevice_ipip_ul_event()
1804 ipip_entry))) { in mlxsw_sp_netdevice_ipip_ul_event()
1805 err = __mlxsw_sp_netdevice_ipip_ul_event(mlxsw_sp, ipip_entry, in mlxsw_sp_netdevice_ipip_ul_event()
2703 struct mlxsw_sp_ipip_entry *ipip_entry; member
3132 ipip_ops = mlxsw_sp->router->ipip_ops_arr[nh->ipip_entry->ipipt]; in __mlxsw_sp_nexthop_ipip_update()
3133 return ipip_ops->nexthop_update(mlxsw_sp, adj_index, nh->ipip_entry); in __mlxsw_sp_nexthop_ipip_update()
3649 struct mlxsw_sp_ipip_entry *ipip_entry) in mlxsw_sp_nexthop_ipip_init() argument
3653 if (!nh->nh_grp->gateway || nh->ipip_entry) in mlxsw_sp_nexthop_ipip_init()
3656 nh->ipip_entry = ipip_entry; in mlxsw_sp_nexthop_ipip_init()
3657 removing = !mlxsw_sp_ipip_netdev_ul_up(ipip_entry->ol_dev); in mlxsw_sp_nexthop_ipip_init()
3659 mlxsw_sp_nexthop_rif_init(nh, &ipip_entry->ol_lb->common); in mlxsw_sp_nexthop_ipip_init()
3665 struct mlxsw_sp_ipip_entry *ipip_entry = nh->ipip_entry; in mlxsw_sp_nexthop_ipip_fini() local
3667 if (!ipip_entry) in mlxsw_sp_nexthop_ipip_fini()
3671 nh->ipip_entry = NULL; in mlxsw_sp_nexthop_ipip_fini()
3706 struct mlxsw_sp_ipip_entry *ipip_entry; in mlxsw_sp_nexthop4_type_init() local
3710 ipip_entry = mlxsw_sp_ipip_entry_find_by_ol_dev(mlxsw_sp, dev); in mlxsw_sp_nexthop4_type_init()
3711 if (ipip_entry) { in mlxsw_sp_nexthop4_type_init()
3712 ipip_ops = mlxsw_sp->router->ipip_ops_arr[ipip_entry->ipipt]; in mlxsw_sp_nexthop4_type_init()
3716 mlxsw_sp_nexthop_ipip_init(mlxsw_sp, nh, ipip_entry); in mlxsw_sp_nexthop4_type_init()
4263 struct mlxsw_sp_ipip_entry *ipip_entry = fib_entry->decap.ipip_entry; in mlxsw_sp_fib_entry_op_ipip_decap() local
4266 if (WARN_ON(!ipip_entry)) in mlxsw_sp_fib_entry_op_ipip_decap()
4269 ipip_ops = mlxsw_sp->router->ipip_ops_arr[ipip_entry->ipipt]; in mlxsw_sp_fib_entry_op_ipip_decap()
4270 return ipip_ops->fib_entry_op(mlxsw_sp, ipip_entry, op, in mlxsw_sp_fib_entry_op_ipip_decap()
4341 struct mlxsw_sp_ipip_entry *ipip_entry; in mlxsw_sp_fib4_entry_type_set() local
4346 ipip_entry = mlxsw_sp_ipip_entry_find_by_decap(mlxsw_sp, dev, in mlxsw_sp_fib4_entry_type_set()
4348 if (ipip_entry && ipip_entry->ol_dev->flags & IFF_UP) { in mlxsw_sp_fib4_entry_type_set()
4352 ipip_entry); in mlxsw_sp_fib4_entry_type_set()
5054 struct mlxsw_sp_ipip_entry *ipip_entry; in mlxsw_sp_nexthop6_type_init() local
5059 ipip_entry = mlxsw_sp_ipip_entry_find_by_ol_dev(mlxsw_sp, dev); in mlxsw_sp_nexthop6_type_init()
5060 if (ipip_entry) { in mlxsw_sp_nexthop6_type_init()
5061 ipip_ops = mlxsw_sp->router->ipip_ops_arr[ipip_entry->ipipt]; in mlxsw_sp_nexthop6_type_init()
5065 mlxsw_sp_nexthop_ipip_init(mlxsw_sp, nh, ipip_entry); in mlxsw_sp_nexthop6_type_init()