Lines Matching full:app

227 void nfp_tunnel_keep_alive(struct nfp_app *app, struct sk_buff *skb)  in nfp_tunnel_keep_alive()  argument
239 nfp_flower_cmsg_warn(app, "Tunnel keep-alive request exceeds max routes.\n"); in nfp_tunnel_keep_alive()
245 nfp_flower_cmsg_warn(app, "Corruption in tunnel keep-alive message.\n"); in nfp_tunnel_keep_alive()
253 netdev = nfp_app_dev_get(app, port, NULL); in nfp_tunnel_keep_alive()
268 void nfp_tunnel_keep_alive_v6(struct nfp_app *app, struct sk_buff *skb) in nfp_tunnel_keep_alive_v6() argument
281 nfp_flower_cmsg_warn(app, "IPv6 tunnel keep-alive request exceeds max routes.\n"); in nfp_tunnel_keep_alive_v6()
287 nfp_flower_cmsg_warn(app, "Corruption in tunnel keep-alive message.\n"); in nfp_tunnel_keep_alive_v6()
295 netdev = nfp_app_dev_get(app, port, NULL); in nfp_tunnel_keep_alive_v6()
312 nfp_flower_xmit_tun_conf(struct nfp_app *app, u8 mtype, u16 plen, void *pdata, in nfp_flower_xmit_tun_conf() argument
318 skb = nfp_flower_cmsg_alloc(app, plen, mtype, flag); in nfp_flower_xmit_tun_conf()
325 nfp_ctrl_tx(app->ctrl, skb); in nfp_flower_xmit_tun_conf()
387 static bool nfp_tun_has_route_v4(struct nfp_app *app, __be32 *ipv4_addr) in nfp_tun_has_route_v4() argument
389 struct nfp_flower_priv *priv = app->priv; in nfp_tun_has_route_v4()
397 nfp_tun_has_route_v6(struct nfp_app *app, struct in6_addr *ipv6_addr) in nfp_tun_has_route_v6() argument
399 struct nfp_flower_priv *priv = app->priv; in nfp_tun_has_route_v6()
407 nfp_tun_add_route_to_cache_v4(struct nfp_app *app, __be32 *ipv4_addr) in nfp_tun_add_route_to_cache_v4() argument
409 struct nfp_flower_priv *priv = app->priv; in nfp_tun_add_route_to_cache_v4()
417 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
419 struct nfp_flower_priv *priv = app->priv; in nfp_tun_add_route_to_cache_v6()
427 nfp_tun_del_route_from_cache_v4(struct nfp_app *app, __be32 *ipv4_addr) in nfp_tun_del_route_from_cache_v4() argument
429 struct nfp_flower_priv *priv = app->priv; in nfp_tun_del_route_from_cache_v4()
437 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
439 struct nfp_flower_priv *priv = app->priv; in nfp_tun_del_route_from_cache_v6()
447 nfp_tun_write_neigh_v4(struct net_device *netdev, struct nfp_app *app, in nfp_tun_write_neigh_v4() argument
453 port_id = nfp_flower_get_port_id_from_netdev(app, netdev); in nfp_tun_write_neigh_v4()
462 nfp_tun_del_route_from_cache_v4(app, &payload.dst_ipv4); in nfp_tun_write_neigh_v4()
474 nfp_tun_add_route_to_cache_v4(app, &payload.dst_ipv4); in nfp_tun_write_neigh_v4()
477 nfp_flower_xmit_tun_conf(app, NFP_FLOWER_CMSG_TYPE_TUN_NEIGH, in nfp_tun_write_neigh_v4()
483 nfp_tun_write_neigh_v6(struct net_device *netdev, struct nfp_app *app, in nfp_tun_write_neigh_v6() argument
489 port_id = nfp_flower_get_port_id_from_netdev(app, netdev); in nfp_tun_write_neigh_v6()
498 nfp_tun_del_route_from_cache_v6(app, &payload.dst_ipv6); in nfp_tun_write_neigh_v6()
510 nfp_tun_add_route_to_cache_v6(app, &payload.dst_ipv6); in nfp_tun_write_neigh_v6()
513 nfp_flower_xmit_tun_conf(app, NFP_FLOWER_CMSG_TYPE_TUN_NEIGH_V6, in nfp_tun_write_neigh_v6()
527 struct nfp_app *app; in nfp_tun_neigh_event_handler() local
553 app = app_priv->app; in nfp_tun_neigh_event_handler()
556 !nfp_flower_internal_port_can_offload(app, n->dev)) in nfp_tun_neigh_event_handler()
560 if ((ipv6 && !nfp_tun_has_route_v6(app, &flow6.daddr)) || in nfp_tun_neigh_event_handler()
561 (!ipv6 && !nfp_tun_has_route_v4(app, &flow4.daddr))) in nfp_tun_neigh_event_handler()
576 nfp_tun_write_neigh_v6(n->dev, app, &flow6, n, GFP_ATOMIC); in nfp_tun_neigh_event_handler()
590 nfp_tun_write_neigh_v4(n->dev, app, &flow4, n, GFP_ATOMIC); in nfp_tun_neigh_event_handler()
599 void nfp_tunnel_request_route_v4(struct nfp_app *app, struct sk_buff *skb) in nfp_tunnel_request_route_v4() argument
611 netdev = nfp_app_dev_get(app, be32_to_cpu(payload->ingress_port), NULL); in nfp_tunnel_request_route_v4()
633 nfp_tun_write_neigh_v4(n->dev, app, &flow, n, GFP_ATOMIC); in nfp_tunnel_request_route_v4()
640 nfp_flower_cmsg_warn(app, "Requested route not found.\n"); in nfp_tunnel_request_route_v4()
643 void nfp_tunnel_request_route_v6(struct nfp_app *app, struct sk_buff *skb) in nfp_tunnel_request_route_v6() argument
654 netdev = nfp_app_dev_get(app, be32_to_cpu(payload->ingress_port), NULL); in nfp_tunnel_request_route_v6()
675 nfp_tun_write_neigh_v6(n->dev, app, &flow, n, GFP_ATOMIC); in nfp_tunnel_request_route_v6()
682 nfp_flower_cmsg_warn(app, "Requested IPv6 route not found.\n"); in nfp_tunnel_request_route_v6()
685 static void nfp_tun_write_ipv4_list(struct nfp_app *app) in nfp_tun_write_ipv4_list() argument
687 struct nfp_flower_priv *priv = app->priv; in nfp_tun_write_ipv4_list()
699 nfp_flower_cmsg_warn(app, "IPv4 offload exceeds limit.\n"); in nfp_tun_write_ipv4_list()
708 nfp_flower_xmit_tun_conf(app, NFP_FLOWER_CMSG_TYPE_TUN_IPS, in nfp_tun_write_ipv4_list()
713 void nfp_tunnel_add_ipv4_off(struct nfp_app *app, __be32 ipv4) in nfp_tunnel_add_ipv4_off() argument
715 struct nfp_flower_priv *priv = app->priv; in nfp_tunnel_add_ipv4_off()
732 nfp_flower_cmsg_warn(app, "Mem error when offloading IP address.\n"); in nfp_tunnel_add_ipv4_off()
740 nfp_tun_write_ipv4_list(app); in nfp_tunnel_add_ipv4_off()
743 void nfp_tunnel_del_ipv4_off(struct nfp_app *app, __be32 ipv4) in nfp_tunnel_del_ipv4_off() argument
745 struct nfp_flower_priv *priv = app->priv; in nfp_tunnel_del_ipv4_off()
763 nfp_tun_write_ipv4_list(app); in nfp_tunnel_del_ipv4_off()
766 static void nfp_tun_write_ipv6_list(struct nfp_app *app) in nfp_tun_write_ipv6_list() argument
768 struct nfp_flower_priv *priv = app->priv; in nfp_tun_write_ipv6_list()
777 … nfp_flower_cmsg_warn(app, "Too many IPv6 tunnel endpoint addresses, some cannot be offloaded.\n"); in nfp_tun_write_ipv6_list()
785 nfp_flower_xmit_tun_conf(app, NFP_FLOWER_CMSG_TYPE_TUN_IPS_V6, in nfp_tun_write_ipv6_list()
791 nfp_tunnel_add_ipv6_off(struct nfp_app *app, struct in6_addr *ipv6) in nfp_tunnel_add_ipv6_off() argument
793 struct nfp_flower_priv *priv = app->priv; in nfp_tunnel_add_ipv6_off()
807 nfp_flower_cmsg_warn(app, "Mem error when offloading IP address.\n"); in nfp_tunnel_add_ipv6_off()
815 nfp_tun_write_ipv6_list(app); in nfp_tunnel_add_ipv6_off()
821 nfp_tunnel_put_ipv6_off(struct nfp_app *app, struct nfp_ipv6_addr_entry *entry) in nfp_tunnel_put_ipv6_off() argument
823 struct nfp_flower_priv *priv = app->priv; in nfp_tunnel_put_ipv6_off()
835 nfp_tun_write_ipv6_list(app); in nfp_tunnel_put_ipv6_off()
839 __nfp_tunnel_offload_mac(struct nfp_app *app, u8 *mac, u16 idx, bool del) in __nfp_tunnel_offload_mac() argument
853 return nfp_flower_xmit_tun_conf(app, NFP_FLOWER_CMSG_TYPE_TUN_MAC, in __nfp_tunnel_offload_mac()
888 nfp_tunnel_lookup_offloaded_macs(struct nfp_app *app, u8 *mac) in nfp_tunnel_lookup_offloaded_macs() argument
890 struct nfp_flower_priv *priv = app->priv; in nfp_tunnel_lookup_offloaded_macs()
920 nfp_tunnel_add_shared_mac(struct nfp_app *app, struct net_device *netdev, in nfp_tunnel_add_shared_mac() argument
923 struct nfp_flower_priv *priv = app->priv; in nfp_tunnel_add_shared_mac()
928 entry = nfp_tunnel_lookup_offloaded_macs(app, netdev->dev_addr); in nfp_tunnel_add_shared_mac()
979 err = __nfp_tunnel_offload_mac(app, netdev->dev_addr, in nfp_tunnel_add_shared_mac()
1006 nfp_tunnel_del_shared_mac(struct nfp_app *app, struct net_device *netdev, in nfp_tunnel_del_shared_mac() argument
1009 struct nfp_flower_priv *priv = app->priv; in nfp_tunnel_del_shared_mac()
1015 entry = nfp_tunnel_lookup_offloaded_macs(app, mac); in nfp_tunnel_del_shared_mac()
1034 if (__nfp_tunnel_offload_mac(app, mac, nfp_mac_idx, in nfp_tunnel_del_shared_mac()
1036 nfp_flower_cmsg_warn(app, "MAC offload index revert failed on %s.\n", in nfp_tunnel_del_shared_mac()
1057 err = __nfp_tunnel_offload_mac(app, mac, nfp_mac_idx, false); in nfp_tunnel_del_shared_mac()
1059 nfp_flower_cmsg_warn(app, "MAC offload index revert failed on %s.\n", in nfp_tunnel_del_shared_mac()
1084 return __nfp_tunnel_offload_mac(app, mac, 0, true); in nfp_tunnel_del_shared_mac()
1088 nfp_tunnel_offload_mac(struct nfp_app *app, struct net_device *netdev, in nfp_tunnel_offload_mac() argument
1101 if (repr->app != app) in nfp_tunnel_offload_mac()
1114 nr_priv = nfp_flower_non_repr_priv_get(app, netdev); in nfp_tunnel_offload_mac()
1135 err = nfp_tunnel_add_shared_mac(app, netdev, port, false); in nfp_tunnel_offload_mac()
1155 err = nfp_tunnel_del_shared_mac(app, netdev, netdev->dev_addr, in nfp_tunnel_offload_mac()
1166 err = nfp_tunnel_add_shared_mac(app, netdev, port, true); in nfp_tunnel_offload_mac()
1171 err = nfp_tunnel_del_shared_mac(app, netdev, off_mac, true); in nfp_tunnel_offload_mac()
1173 nfp_flower_cmsg_warn(app, "Failed to remove offload of replaced MAC addr on %s.\n", in nfp_tunnel_offload_mac()
1195 int nfp_tunnel_mac_event_handler(struct nfp_app *app, in nfp_tunnel_mac_event_handler() argument
1202 err = nfp_tunnel_offload_mac(app, netdev, in nfp_tunnel_mac_event_handler()
1205 nfp_flower_cmsg_warn(app, "Failed to delete offload MAC on %s.\n", in nfp_tunnel_mac_event_handler()
1208 err = nfp_tunnel_offload_mac(app, netdev, in nfp_tunnel_mac_event_handler()
1211 nfp_flower_cmsg_warn(app, "Failed to offload MAC on %s.\n", in nfp_tunnel_mac_event_handler()
1218 err = nfp_tunnel_offload_mac(app, netdev, in nfp_tunnel_mac_event_handler()
1221 nfp_flower_cmsg_warn(app, "Failed to offload MAC change on %s.\n", in nfp_tunnel_mac_event_handler()
1240 if (repr->app != app) in nfp_tunnel_mac_event_handler()
1246 if (nfp_tunnel_offload_mac(app, netdev, in nfp_tunnel_mac_event_handler()
1248 nfp_flower_cmsg_warn(app, "Failed to delete offloaded MAC on %s.\n", in nfp_tunnel_mac_event_handler()
1257 if (nfp_tunnel_offload_mac(app, netdev, in nfp_tunnel_mac_event_handler()
1259 nfp_flower_cmsg_warn(app, "Failed to offload MAC on %s.\n", in nfp_tunnel_mac_event_handler()
1266 int nfp_flower_xmit_pre_tun_flow(struct nfp_app *app, in nfp_flower_xmit_pre_tun_flow() argument
1269 struct nfp_flower_priv *app_priv = app->priv; in nfp_flower_xmit_pre_tun_flow()
1288 mac_entry = nfp_tunnel_lookup_offloaded_macs(app, in nfp_flower_xmit_pre_tun_flow()
1299 err = nfp_flower_xmit_tun_conf(app, NFP_FLOWER_CMSG_TYPE_PRE_TUN_RULE, in nfp_flower_xmit_pre_tun_flow()
1310 int nfp_flower_xmit_pre_tun_del_flow(struct nfp_app *app, in nfp_flower_xmit_pre_tun_del_flow() argument
1313 struct nfp_flower_priv *app_priv = app->priv; in nfp_flower_xmit_pre_tun_del_flow()
1325 err = nfp_flower_xmit_tun_conf(app, NFP_FLOWER_CMSG_TYPE_PRE_TUN_RULE, in nfp_flower_xmit_pre_tun_del_flow()
1336 int nfp_tunnel_config_start(struct nfp_app *app) in nfp_tunnel_config_start() argument
1338 struct nfp_flower_priv *priv = app->priv; in nfp_tunnel_config_start()
1372 void nfp_tunnel_config_stop(struct nfp_app *app) in nfp_tunnel_config_stop() argument
1375 struct nfp_flower_priv *priv = app->priv; in nfp_tunnel_config_stop()
1403 nfp_flower_xmit_tun_conf(app, NFP_FLOWER_CMSG_TYPE_TUN_NEIGH, in nfp_tunnel_config_stop()
1417 nfp_flower_xmit_tun_conf(app, NFP_FLOWER_CMSG_TYPE_TUN_NEIGH_V6, in nfp_tunnel_config_stop()