Lines Matching full:app
228 void nfp_tunnel_keep_alive(struct nfp_app *app, struct sk_buff *skb) in nfp_tunnel_keep_alive() argument
240 nfp_flower_cmsg_warn(app, "Tunnel keep-alive request exceeds max routes.\n"); in nfp_tunnel_keep_alive()
246 nfp_flower_cmsg_warn(app, "Corruption in tunnel keep-alive message.\n"); in nfp_tunnel_keep_alive()
254 netdev = nfp_app_dev_get(app, port, NULL); in nfp_tunnel_keep_alive()
269 void nfp_tunnel_keep_alive_v6(struct nfp_app *app, struct sk_buff *skb) in nfp_tunnel_keep_alive_v6() argument
282 nfp_flower_cmsg_warn(app, "IPv6 tunnel keep-alive request exceeds max routes.\n"); in nfp_tunnel_keep_alive_v6()
288 nfp_flower_cmsg_warn(app, "Corruption in tunnel keep-alive message.\n"); in nfp_tunnel_keep_alive_v6()
296 netdev = nfp_app_dev_get(app, port, NULL); in nfp_tunnel_keep_alive_v6()
313 nfp_flower_xmit_tun_conf(struct nfp_app *app, u8 mtype, u16 plen, void *pdata, in nfp_flower_xmit_tun_conf() argument
319 skb = nfp_flower_cmsg_alloc(app, plen, mtype, flag); in nfp_flower_xmit_tun_conf()
326 nfp_ctrl_tx(app->ctrl, skb); in nfp_flower_xmit_tun_conf()
388 static bool nfp_tun_has_route_v4(struct nfp_app *app, __be32 *ipv4_addr) in nfp_tun_has_route_v4() argument
390 struct nfp_flower_priv *priv = app->priv; in nfp_tun_has_route_v4()
398 nfp_tun_has_route_v6(struct nfp_app *app, struct in6_addr *ipv6_addr) in nfp_tun_has_route_v6() argument
400 struct nfp_flower_priv *priv = app->priv; in nfp_tun_has_route_v6()
408 nfp_tun_add_route_to_cache_v4(struct nfp_app *app, __be32 *ipv4_addr) in nfp_tun_add_route_to_cache_v4() argument
410 struct nfp_flower_priv *priv = app->priv; in nfp_tun_add_route_to_cache_v4()
418 nfp_tun_add_route_to_cache_v6(struct nfp_app *app, struct in6_addr *ipv6_addr) in nfp_tun_add_route_to_cache_v6() argument
420 struct nfp_flower_priv *priv = app->priv; in nfp_tun_add_route_to_cache_v6()
428 nfp_tun_del_route_from_cache_v4(struct nfp_app *app, __be32 *ipv4_addr) in nfp_tun_del_route_from_cache_v4() argument
430 struct nfp_flower_priv *priv = app->priv; in nfp_tun_del_route_from_cache_v4()
438 nfp_tun_del_route_from_cache_v6(struct nfp_app *app, struct in6_addr *ipv6_addr) in nfp_tun_del_route_from_cache_v6() argument
440 struct nfp_flower_priv *priv = app->priv; in nfp_tun_del_route_from_cache_v6()
448 nfp_tun_write_neigh_v4(struct net_device *netdev, struct nfp_app *app, in nfp_tun_write_neigh_v4() argument
454 port_id = nfp_flower_get_port_id_from_netdev(app, netdev); in nfp_tun_write_neigh_v4()
463 nfp_tun_del_route_from_cache_v4(app, &payload.dst_ipv4); in nfp_tun_write_neigh_v4()
475 nfp_tun_add_route_to_cache_v4(app, &payload.dst_ipv4); in nfp_tun_write_neigh_v4()
478 nfp_flower_xmit_tun_conf(app, NFP_FLOWER_CMSG_TYPE_TUN_NEIGH, in nfp_tun_write_neigh_v4()
484 nfp_tun_write_neigh_v6(struct net_device *netdev, struct nfp_app *app, in nfp_tun_write_neigh_v6() argument
490 port_id = nfp_flower_get_port_id_from_netdev(app, netdev); in nfp_tun_write_neigh_v6()
499 nfp_tun_del_route_from_cache_v6(app, &payload.dst_ipv6); in nfp_tun_write_neigh_v6()
511 nfp_tun_add_route_to_cache_v6(app, &payload.dst_ipv6); in nfp_tun_write_neigh_v6()
514 nfp_flower_xmit_tun_conf(app, NFP_FLOWER_CMSG_TYPE_TUN_NEIGH_V6, in nfp_tun_write_neigh_v6()
528 struct nfp_app *app; in nfp_tun_neigh_event_handler() local
554 app = app_priv->app; in nfp_tun_neigh_event_handler()
557 !nfp_flower_internal_port_can_offload(app, n->dev)) in nfp_tun_neigh_event_handler()
561 if ((ipv6 && !nfp_tun_has_route_v6(app, &flow6.daddr)) || in nfp_tun_neigh_event_handler()
562 (!ipv6 && !nfp_tun_has_route_v4(app, &flow4.daddr))) in nfp_tun_neigh_event_handler()
577 nfp_tun_write_neigh_v6(n->dev, app, &flow6, n, GFP_ATOMIC); in nfp_tun_neigh_event_handler()
591 nfp_tun_write_neigh_v4(n->dev, app, &flow4, n, GFP_ATOMIC); in nfp_tun_neigh_event_handler()
600 void nfp_tunnel_request_route_v4(struct nfp_app *app, struct sk_buff *skb) in nfp_tunnel_request_route_v4() argument
612 netdev = nfp_app_dev_get(app, be32_to_cpu(payload->ingress_port), NULL); in nfp_tunnel_request_route_v4()
634 nfp_tun_write_neigh_v4(n->dev, app, &flow, n, GFP_ATOMIC); in nfp_tunnel_request_route_v4()
641 nfp_flower_cmsg_warn(app, "Requested route not found.\n"); in nfp_tunnel_request_route_v4()
644 void nfp_tunnel_request_route_v6(struct nfp_app *app, struct sk_buff *skb) in nfp_tunnel_request_route_v6() argument
655 netdev = nfp_app_dev_get(app, be32_to_cpu(payload->ingress_port), NULL); in nfp_tunnel_request_route_v6()
676 nfp_tun_write_neigh_v6(n->dev, app, &flow, n, GFP_ATOMIC); in nfp_tunnel_request_route_v6()
683 nfp_flower_cmsg_warn(app, "Requested IPv6 route not found.\n"); in nfp_tunnel_request_route_v6()
686 static void nfp_tun_write_ipv4_list(struct nfp_app *app) in nfp_tun_write_ipv4_list() argument
688 struct nfp_flower_priv *priv = app->priv; in nfp_tun_write_ipv4_list()
700 nfp_flower_cmsg_warn(app, "IPv4 offload exceeds limit.\n"); in nfp_tun_write_ipv4_list()
709 nfp_flower_xmit_tun_conf(app, NFP_FLOWER_CMSG_TYPE_TUN_IPS, in nfp_tun_write_ipv4_list()
714 void nfp_tunnel_add_ipv4_off(struct nfp_app *app, __be32 ipv4) in nfp_tunnel_add_ipv4_off() argument
716 struct nfp_flower_priv *priv = app->priv; in nfp_tunnel_add_ipv4_off()
733 nfp_flower_cmsg_warn(app, "Mem error when offloading IP address.\n"); in nfp_tunnel_add_ipv4_off()
741 nfp_tun_write_ipv4_list(app); in nfp_tunnel_add_ipv4_off()
744 void nfp_tunnel_del_ipv4_off(struct nfp_app *app, __be32 ipv4) in nfp_tunnel_del_ipv4_off() argument
746 struct nfp_flower_priv *priv = app->priv; in nfp_tunnel_del_ipv4_off()
764 nfp_tun_write_ipv4_list(app); in nfp_tunnel_del_ipv4_off()
767 static void nfp_tun_write_ipv6_list(struct nfp_app *app) in nfp_tun_write_ipv6_list() argument
769 struct nfp_flower_priv *priv = app->priv; in nfp_tun_write_ipv6_list()
778 … nfp_flower_cmsg_warn(app, "Too many IPv6 tunnel endpoint addresses, some cannot be offloaded.\n"); in nfp_tun_write_ipv6_list()
786 nfp_flower_xmit_tun_conf(app, NFP_FLOWER_CMSG_TYPE_TUN_IPS_V6, in nfp_tun_write_ipv6_list()
792 nfp_tunnel_add_ipv6_off(struct nfp_app *app, struct in6_addr *ipv6) in nfp_tunnel_add_ipv6_off() argument
794 struct nfp_flower_priv *priv = app->priv; in nfp_tunnel_add_ipv6_off()
808 nfp_flower_cmsg_warn(app, "Mem error when offloading IP address.\n"); in nfp_tunnel_add_ipv6_off()
816 nfp_tun_write_ipv6_list(app); in nfp_tunnel_add_ipv6_off()
822 nfp_tunnel_put_ipv6_off(struct nfp_app *app, struct nfp_ipv6_addr_entry *entry) in nfp_tunnel_put_ipv6_off() argument
824 struct nfp_flower_priv *priv = app->priv; in nfp_tunnel_put_ipv6_off()
836 nfp_tun_write_ipv6_list(app); in nfp_tunnel_put_ipv6_off()
840 __nfp_tunnel_offload_mac(struct nfp_app *app, u8 *mac, u16 idx, bool del) in __nfp_tunnel_offload_mac() argument
854 return nfp_flower_xmit_tun_conf(app, NFP_FLOWER_CMSG_TYPE_TUN_MAC, in __nfp_tunnel_offload_mac()
889 nfp_tunnel_lookup_offloaded_macs(struct nfp_app *app, u8 *mac) in nfp_tunnel_lookup_offloaded_macs() argument
891 struct nfp_flower_priv *priv = app->priv; in nfp_tunnel_lookup_offloaded_macs()
921 nfp_tunnel_add_shared_mac(struct nfp_app *app, struct net_device *netdev, in nfp_tunnel_add_shared_mac() argument
924 struct nfp_flower_priv *priv = app->priv; in nfp_tunnel_add_shared_mac()
929 entry = nfp_tunnel_lookup_offloaded_macs(app, netdev->dev_addr); in nfp_tunnel_add_shared_mac()
980 err = __nfp_tunnel_offload_mac(app, netdev->dev_addr, in nfp_tunnel_add_shared_mac()
1007 nfp_tunnel_del_shared_mac(struct nfp_app *app, struct net_device *netdev, in nfp_tunnel_del_shared_mac() argument
1010 struct nfp_flower_priv *priv = app->priv; in nfp_tunnel_del_shared_mac()
1016 entry = nfp_tunnel_lookup_offloaded_macs(app, mac); in nfp_tunnel_del_shared_mac()
1035 if (__nfp_tunnel_offload_mac(app, mac, nfp_mac_idx, in nfp_tunnel_del_shared_mac()
1037 nfp_flower_cmsg_warn(app, "MAC offload index revert failed on %s.\n", in nfp_tunnel_del_shared_mac()
1058 err = __nfp_tunnel_offload_mac(app, mac, nfp_mac_idx, false); in nfp_tunnel_del_shared_mac()
1060 nfp_flower_cmsg_warn(app, "MAC offload index revert failed on %s.\n", in nfp_tunnel_del_shared_mac()
1085 return __nfp_tunnel_offload_mac(app, mac, 0, true); in nfp_tunnel_del_shared_mac()
1089 nfp_tunnel_offload_mac(struct nfp_app *app, struct net_device *netdev, in nfp_tunnel_offload_mac() argument
1102 if (repr->app != app) in nfp_tunnel_offload_mac()
1115 nr_priv = nfp_flower_non_repr_priv_get(app, netdev); in nfp_tunnel_offload_mac()
1136 err = nfp_tunnel_add_shared_mac(app, netdev, port, false); in nfp_tunnel_offload_mac()
1156 err = nfp_tunnel_del_shared_mac(app, netdev, netdev->dev_addr, in nfp_tunnel_offload_mac()
1167 err = nfp_tunnel_add_shared_mac(app, netdev, port, true); in nfp_tunnel_offload_mac()
1172 err = nfp_tunnel_del_shared_mac(app, netdev, off_mac, true); in nfp_tunnel_offload_mac()
1174 nfp_flower_cmsg_warn(app, "Failed to remove offload of replaced MAC addr on %s.\n", in nfp_tunnel_offload_mac()
1196 int nfp_tunnel_mac_event_handler(struct nfp_app *app, in nfp_tunnel_mac_event_handler() argument
1203 err = nfp_tunnel_offload_mac(app, netdev, in nfp_tunnel_mac_event_handler()
1206 nfp_flower_cmsg_warn(app, "Failed to delete offload MAC on %s.\n", in nfp_tunnel_mac_event_handler()
1209 err = nfp_tunnel_offload_mac(app, netdev, in nfp_tunnel_mac_event_handler()
1212 nfp_flower_cmsg_warn(app, "Failed to offload MAC on %s.\n", in nfp_tunnel_mac_event_handler()
1219 err = nfp_tunnel_offload_mac(app, netdev, in nfp_tunnel_mac_event_handler()
1222 nfp_flower_cmsg_warn(app, "Failed to offload MAC change on %s.\n", in nfp_tunnel_mac_event_handler()
1241 if (repr->app != app) in nfp_tunnel_mac_event_handler()
1247 if (nfp_tunnel_offload_mac(app, netdev, in nfp_tunnel_mac_event_handler()
1249 nfp_flower_cmsg_warn(app, "Failed to delete offloaded MAC on %s.\n", in nfp_tunnel_mac_event_handler()
1258 if (nfp_tunnel_offload_mac(app, netdev, in nfp_tunnel_mac_event_handler()
1260 nfp_flower_cmsg_warn(app, "Failed to offload MAC on %s.\n", in nfp_tunnel_mac_event_handler()
1267 int nfp_flower_xmit_pre_tun_flow(struct nfp_app *app, in nfp_flower_xmit_pre_tun_flow() argument
1270 struct nfp_flower_priv *app_priv = app->priv; in nfp_flower_xmit_pre_tun_flow()
1290 mac_entry = nfp_tunnel_lookup_offloaded_macs(app, in nfp_flower_xmit_pre_tun_flow()
1310 err = nfp_flower_xmit_tun_conf(app, NFP_FLOWER_CMSG_TYPE_PRE_TUN_RULE, in nfp_flower_xmit_pre_tun_flow()
1321 int nfp_flower_xmit_pre_tun_del_flow(struct nfp_app *app, in nfp_flower_xmit_pre_tun_del_flow() argument
1324 struct nfp_flower_priv *app_priv = app->priv; in nfp_flower_xmit_pre_tun_del_flow()
1336 err = nfp_flower_xmit_tun_conf(app, NFP_FLOWER_CMSG_TYPE_PRE_TUN_RULE, in nfp_flower_xmit_pre_tun_del_flow()
1347 int nfp_tunnel_config_start(struct nfp_app *app) in nfp_tunnel_config_start() argument
1349 struct nfp_flower_priv *priv = app->priv; in nfp_tunnel_config_start()
1383 void nfp_tunnel_config_stop(struct nfp_app *app) in nfp_tunnel_config_stop() argument
1386 struct nfp_flower_priv *priv = app->priv; in nfp_tunnel_config_stop()
1414 nfp_flower_xmit_tun_conf(app, NFP_FLOWER_CMSG_TYPE_TUN_NEIGH, in nfp_tunnel_config_stop()
1428 nfp_flower_xmit_tun_conf(app, NFP_FLOWER_CMSG_TYPE_TUN_NEIGH_V6, in nfp_tunnel_config_stop()