Lines Matching defs:ipip_entry

472 	struct mlxsw_sp_ipip_entry *ipip_entry;
1176 struct mlxsw_sp_ipip_entry *ipip_entry;
1181 ipip_entry = kzalloc(sizeof(*ipip_entry), GFP_KERNEL);
1182 if (!ipip_entry)
1185 ipip_entry->ol_lb = mlxsw_sp_ipip_ol_ipip_lb_create(mlxsw_sp, ipipt,
1187 if (IS_ERR(ipip_entry->ol_lb)) {
1188 ret = ERR_CAST(ipip_entry->ol_lb);
1192 ipip_entry->ipipt = ipipt;
1193 ipip_entry->ol_dev = ol_dev;
1194 ipip_entry->parms = ipip_ops->parms_init(ol_dev);
1196 err = ipip_ops->rem_ip_addr_set(mlxsw_sp, ipip_entry);
1202 return ipip_entry;
1205 mlxsw_sp_rif_destroy(&ipip_entry->ol_lb->common);
1207 kfree(ipip_entry);
1212 struct mlxsw_sp_ipip_entry *ipip_entry)
1215 mlxsw_sp->router->ipip_ops_arr[ipip_entry->ipipt];
1217 ipip_ops->rem_ip_addr_unset(mlxsw_sp, ipip_entry);
1218 mlxsw_sp_rif_destroy(&ipip_entry->ol_lb->common);
1219 kfree(ipip_entry);
1227 struct mlxsw_sp_ipip_entry *ipip_entry)
1229 u32 tun_ul_tb_id = mlxsw_sp_ipip_dev_ul_tb_id(ipip_entry->ol_dev);
1230 enum mlxsw_sp_ipip_type ipipt = ipip_entry->ipipt;
1236 tun_saddr = mlxsw_sp_ipip_netdev_saddr(ul_proto, ipip_entry->ol_dev);
1270 struct mlxsw_sp_ipip_entry *ipip_entry)
1281 ipip_entry->ipipt);
1285 ipip_entry->decap_fib_entry = fib_entry;
1286 fib_entry->decap.ipip_entry = ipip_entry;
1300 enum mlxsw_sp_ipip_type ipipt = fib_entry->decap.ipip_entry->ipipt;
1303 fib_entry->decap.ipip_entry->decap_fib_entry = NULL;
1304 fib_entry->decap.ipip_entry = NULL;
1318 struct mlxsw_sp_ipip_entry *ipip_entry)
1320 struct mlxsw_sp_fib_entry *fib_entry = ipip_entry->decap_fib_entry;
1330 struct mlxsw_sp_ipip_entry *ipip_entry,
1334 ipip_entry))
1339 mlxsw_sp_ipip_entry_demote_decap(mlxsw_sp, ipip_entry);
1389 struct mlxsw_sp_ipip_entry *ipip_entry)
1402 ipip_ops = mlxsw_sp->router->ipip_ops_arr[ipip_entry->ipipt];
1404 ul_tb_id = mlxsw_sp_ipip_dev_ul_tb_id(ipip_entry->ol_dev);
1411 ipip_entry->ol_dev);
1444 struct mlxsw_sp_ipip_entry *ipip_entry;
1446 ipip_entry = mlxsw_sp_ipip_entry_alloc(mlxsw_sp, ipipt, ol_dev);
1447 if (IS_ERR(ipip_entry))
1448 return ipip_entry;
1450 list_add_tail(&ipip_entry->ipip_list_node,
1453 return ipip_entry;
1458 struct mlxsw_sp_ipip_entry *ipip_entry)
1460 list_del(&ipip_entry->ipip_list_node);
1461 mlxsw_sp_ipip_entry_dealloc(mlxsw_sp, ipip_entry);
1469 struct mlxsw_sp_ipip_entry *ipip_entry)
1472 enum mlxsw_sp_ipip_type ipipt = ipip_entry->ipipt;
1478 ul_tb_id, ipip_entry);
1487 struct mlxsw_sp_ipip_entry *ipip_entry = NULL;
1496 list_for_each_entry(ipip_entry, &mlxsw_sp->router->ipip_list,
1500 ipip_entry))
1509 return ipip_entry;
1541 struct mlxsw_sp_ipip_entry *ipip_entry;
1543 list_for_each_entry(ipip_entry, &mlxsw_sp->router->ipip_list,
1545 if (ipip_entry->ol_dev == ol_dev)
1546 return ipip_entry;
1556 struct mlxsw_sp_ipip_entry *ipip_entry;
1558 ipip_entry = list_prepare_entry(start, &mlxsw_sp->router->ipip_list,
1560 list_for_each_entry_continue(ipip_entry, &mlxsw_sp->router->ipip_list,
1562 struct net_device *ol_dev = ipip_entry->ol_dev;
1570 return ipip_entry;
1596 struct mlxsw_sp_ipip_entry *ipip_entry;
1609 ipip_entry = mlxsw_sp_ipip_entry_create(mlxsw_sp, ipipt,
1611 if (IS_ERR(ipip_entry))
1612 return PTR_ERR(ipip_entry);
1622 struct mlxsw_sp_ipip_entry *ipip_entry;
1624 ipip_entry = mlxsw_sp_ipip_entry_find_by_ol_dev(mlxsw_sp, ol_dev);
1625 if (ipip_entry)
1626 mlxsw_sp_ipip_entry_destroy(mlxsw_sp, ipip_entry);
1631 struct mlxsw_sp_ipip_entry *ipip_entry)
1635 decap_fib_entry = mlxsw_sp_ipip_entry_find_decap(mlxsw_sp, ipip_entry);
1637 mlxsw_sp_ipip_entry_promote_decap(mlxsw_sp, ipip_entry,
1683 struct mlxsw_sp_ipip_entry *ipip_entry;
1687 ipip_entry = mlxsw_sp_ipip_entry_find_by_ol_dev(mlxsw_sp, ol_dev);
1688 if (ipip_entry) {
1689 lb_rif = ipip_entry->ol_lb;
1704 struct mlxsw_sp_ipip_entry *ipip_entry;
1706 ipip_entry = mlxsw_sp_ipip_entry_find_by_ol_dev(mlxsw_sp, ol_dev);
1707 if (ipip_entry)
1708 mlxsw_sp_ipip_entry_ol_up_event(mlxsw_sp, ipip_entry);
1713 struct mlxsw_sp_ipip_entry *ipip_entry)
1715 if (ipip_entry->decap_fib_entry)
1716 mlxsw_sp_ipip_entry_demote_decap(mlxsw_sp, ipip_entry);
1722 struct mlxsw_sp_ipip_entry *ipip_entry;
1724 ipip_entry = mlxsw_sp_ipip_entry_find_by_ol_dev(mlxsw_sp, ol_dev);
1725 if (ipip_entry)
1726 mlxsw_sp_ipip_entry_ol_down_event(mlxsw_sp, ipip_entry);
1754 struct mlxsw_sp_ipip_entry *ipip_entry,
1758 struct mlxsw_sp_rif_ipip_lb *old_lb_rif = ipip_entry->ol_lb;
1762 ipip_entry->ipipt,
1763 ipip_entry->ol_dev,
1767 ipip_entry->ol_lb = new_lb_rif;
1777 * @ipip_entry: IPIP entry.
1788 struct mlxsw_sp_ipip_entry *ipip_entry,
1802 if (ipip_entry->decap_fib_entry)
1803 mlxsw_sp_ipip_entry_demote_decap(mlxsw_sp, ipip_entry);
1806 err = mlxsw_sp_ipip_entry_ol_lb_update(mlxsw_sp, ipip_entry,
1812 &ipip_entry->ol_lb->common);
1815 if (ipip_entry->ol_dev->flags & IFF_UP)
1816 mlxsw_sp_ipip_entry_ol_up_event(mlxsw_sp, ipip_entry);
1825 struct mlxsw_sp_ipip_entry *ipip_entry =
1828 if (!ipip_entry)
1831 return __mlxsw_sp_ipip_entry_update_tunnel(mlxsw_sp, ipip_entry,
1837 struct mlxsw_sp_ipip_entry *ipip_entry,
1849 ul_proto = mlxsw_sp->router->ipip_ops_arr[ipip_entry->ipipt]->ul_proto;
1850 saddr = mlxsw_sp_ipip_netdev_saddr(ul_proto, ipip_entry->ol_dev);
1853 ipip_entry)) {
1858 return __mlxsw_sp_ipip_entry_update_tunnel(mlxsw_sp, ipip_entry,
1864 struct mlxsw_sp_ipip_entry *ipip_entry,
1867 return __mlxsw_sp_ipip_entry_update_tunnel(mlxsw_sp, ipip_entry,
1873 struct mlxsw_sp_ipip_entry *ipip_entry,
1880 return __mlxsw_sp_ipip_entry_update_tunnel(mlxsw_sp, ipip_entry,
1890 struct mlxsw_sp_ipip_entry *ipip_entry;
1893 ipip_entry = mlxsw_sp_ipip_entry_find_by_ol_dev(mlxsw_sp, ol_dev);
1894 if (!ipip_entry)
1903 ipip_entry->ipipt)) {
1904 mlxsw_sp_ipip_entry_demote_tunnel(mlxsw_sp, ipip_entry);
1908 ipip_ops = mlxsw_sp->router->ipip_ops_arr[ipip_entry->ipipt];
1909 err = ipip_ops->ol_netdev_change(mlxsw_sp, ipip_entry, extack);
1914 struct mlxsw_sp_ipip_entry *ipip_entry)
1916 struct net_device *ol_dev = ipip_entry->ol_dev;
1919 mlxsw_sp_ipip_entry_ol_down_event(mlxsw_sp, ipip_entry);
1920 mlxsw_sp_ipip_entry_destroy(mlxsw_sp, ipip_entry);
1936 struct mlxsw_sp_ipip_entry *ipip_entry, *tmp;
1938 list_for_each_entry_safe(ipip_entry, tmp, &mlxsw_sp->router->ipip_list,
1940 if (ipip_entry != except &&
1942 ul_tb_id, ipip_entry)) {
1943 mlxsw_sp_ipip_entry_demote_tunnel(mlxsw_sp, ipip_entry);
1954 struct mlxsw_sp_ipip_entry *ipip_entry, *tmp;
1956 list_for_each_entry_safe(ipip_entry, tmp, &mlxsw_sp->router->ipip_list,
1958 struct net_device *ol_dev = ipip_entry->ol_dev;
1965 mlxsw_sp_ipip_entry_demote_tunnel(mlxsw_sp, ipip_entry);
2013 struct mlxsw_sp_ipip_entry *ipip_entry,
2028 ipip_entry,
2035 return mlxsw_sp_netdevice_ipip_ul_up_event(mlxsw_sp, ipip_entry,
2039 ipip_entry,
2051 struct mlxsw_sp_ipip_entry *ipip_entry = NULL;
2054 while ((ipip_entry = mlxsw_sp_ipip_entry_find_by_ul_dev(mlxsw_sp,
2056 ipip_entry))) {
2060 err = __mlxsw_sp_netdevice_ipip_ul_event(mlxsw_sp, ipip_entry,
2070 if (list_is_first(&ipip_entry->ipip_list_node,
2077 prev = list_prev_entry(ipip_entry,
2079 mlxsw_sp_ipip_entry_demote_tunnel(mlxsw_sp, ipip_entry);
2080 ipip_entry = prev;
3084 struct mlxsw_sp_ipip_entry *ipip_entry;
3807 ipip_ops = mlxsw_sp->router->ipip_ops_arr[nh->ipip_entry->ipipt];
3808 return ipip_ops->nexthop_update(mlxsw_sp, adj_index, nh->ipip_entry,
4494 struct mlxsw_sp_ipip_entry *ipip_entry)
4499 if (!nh->nhgi->gateway || nh->ipip_entry)
4502 crif = mlxsw_sp_crif_lookup(mlxsw_sp->router, ipip_entry->ol_dev);
4506 nh->ipip_entry = ipip_entry;
4507 removing = !mlxsw_sp_ipip_netdev_ul_up(ipip_entry->ol_dev);
4515 struct mlxsw_sp_ipip_entry *ipip_entry = nh->ipip_entry;
4517 if (!ipip_entry)
4521 nh->ipip_entry = NULL;
4540 struct mlxsw_sp_ipip_entry *ipip_entry;
4544 ipip_entry = mlxsw_sp_ipip_entry_find_by_ol_dev(mlxsw_sp, dev);
4545 if (ipip_entry) {
4546 ipip_ops = mlxsw_sp->router->ipip_ops_arr[ipip_entry->ipipt];
4549 mlxsw_sp_nexthop_ipip_init(mlxsw_sp, nh, ipip_entry);
6311 struct mlxsw_sp_ipip_entry *ipip_entry = fib_entry->decap.ipip_entry;
6316 if (WARN_ON(!ipip_entry))
6319 ipip_ops = mlxsw_sp->router->ipip_ops_arr[ipip_entry->ipipt];
6320 err = ipip_ops->decap_config(mlxsw_sp, ipip_entry,
6406 struct mlxsw_sp_ipip_entry *ipip_entry;
6410 ipip_entry = mlxsw_sp_ipip_entry_find_by_decap(mlxsw_sp, ifindex,
6412 if (ipip_entry && ipip_entry->ol_dev->flags & IFF_UP) {
6416 ipip_entry);
7312 struct mlxsw_sp_ipip_entry *ipip_entry;
7315 ipip_entry = mlxsw_sp_ipip_entry_find_by_decap(mlxsw_sp, ifindex,
7319 if (ipip_entry && ipip_entry->ol_dev->flags & IFF_UP) {
7322 ipip_entry);