Lines Matching refs:np
65 #define np_info(np, fmt, ...) \ argument
66 pr_info("%s: " fmt, np->name, ##__VA_ARGS__)
67 #define np_err(np, fmt, ...) \ argument
68 pr_err("%s: " fmt, np->name, ##__VA_ARGS__)
69 #define np_notice(np, fmt, ...) \ argument
70 pr_notice("%s: " fmt, np->name, ##__VA_ARGS__)
280 static struct sk_buff *find_skb(struct netpoll *np, int len, int reserve) in find_skb() argument
295 netpoll_poll_dev(np->dev); in find_skb()
318 void netpoll_send_skb_on_dev(struct netpoll *np, struct sk_buff *skb, in netpoll_send_skb_on_dev() argument
328 npinfo = rcu_dereference_bh(np->dev->npinfo); in netpoll_send_skb_on_dev()
355 netpoll_poll_dev(np->dev); in netpoll_send_skb_on_dev()
373 void netpoll_send_udp(struct netpoll *np, const char *msg, int len) in netpoll_send_udp() argument
384 if (np->ipv6) in netpoll_send_udp()
389 total_len = ip_len + LL_RESERVED_SPACE(np->dev); in netpoll_send_udp()
391 skb = find_skb(np, total_len + np->dev->needed_tailroom, in netpoll_send_udp()
402 udph->source = htons(np->local_port); in netpoll_send_udp()
403 udph->dest = htons(np->remote_port); in netpoll_send_udp()
406 if (np->ipv6) { in netpoll_send_udp()
408 udph->check = csum_ipv6_magic(&np->local_ip.in6, in netpoll_send_udp()
409 &np->remote_ip.in6, in netpoll_send_udp()
428 ip6h->saddr = np->local_ip.in6; in netpoll_send_udp()
429 ip6h->daddr = np->remote_ip.in6; in netpoll_send_udp()
436 udph->check = csum_tcpudp_magic(np->local_ip.ip, in netpoll_send_udp()
437 np->remote_ip.ip, in netpoll_send_udp()
456 put_unaligned(np->local_ip.ip, &(iph->saddr)); in netpoll_send_udp()
457 put_unaligned(np->remote_ip.ip, &(iph->daddr)); in netpoll_send_udp()
465 ether_addr_copy(eth->h_source, np->dev->dev_addr); in netpoll_send_udp()
466 ether_addr_copy(eth->h_dest, np->remote_mac); in netpoll_send_udp()
468 skb->dev = np->dev; in netpoll_send_udp()
470 netpoll_send_skb(np, skb); in netpoll_send_udp()
474 void netpoll_print_options(struct netpoll *np) in netpoll_print_options() argument
476 np_info(np, "local port %d\n", np->local_port); in netpoll_print_options()
477 if (np->ipv6) in netpoll_print_options()
478 np_info(np, "local IPv6 address %pI6c\n", &np->local_ip.in6); in netpoll_print_options()
480 np_info(np, "local IPv4 address %pI4\n", &np->local_ip.ip); in netpoll_print_options()
481 np_info(np, "interface '%s'\n", np->dev_name); in netpoll_print_options()
482 np_info(np, "remote port %d\n", np->remote_port); in netpoll_print_options()
483 if (np->ipv6) in netpoll_print_options()
484 np_info(np, "remote IPv6 address %pI6c\n", &np->remote_ip.in6); in netpoll_print_options()
486 np_info(np, "remote IPv4 address %pI4\n", &np->remote_ip.ip); in netpoll_print_options()
487 np_info(np, "remote ethernet address %pM\n", np->remote_mac); in netpoll_print_options()
511 int netpoll_parse_options(struct netpoll *np, char *opt) in netpoll_parse_options() argument
521 if (kstrtou16(cur, 10, &np->local_port)) in netpoll_parse_options()
532 ipv6 = netpoll_parse_ip_addr(cur, &np->local_ip); in netpoll_parse_options()
536 np->ipv6 = (bool)ipv6; in netpoll_parse_options()
546 strlcpy(np->dev_name, cur, sizeof(np->dev_name)); in netpoll_parse_options()
557 np_info(np, "warning: whitespace is not allowed\n"); in netpoll_parse_options()
558 if (kstrtou16(cur, 10, &np->remote_port)) in netpoll_parse_options()
568 ipv6 = netpoll_parse_ip_addr(cur, &np->remote_ip); in netpoll_parse_options()
571 else if (ipversion_set && np->ipv6 != (bool)ipv6) in netpoll_parse_options()
574 np->ipv6 = (bool)ipv6; in netpoll_parse_options()
579 if (!mac_pton(cur, np->remote_mac)) in netpoll_parse_options()
583 netpoll_print_options(np); in netpoll_parse_options()
588 np_info(np, "couldn't parse config at '%s'!\n", cur); in netpoll_parse_options()
593 int __netpoll_setup(struct netpoll *np, struct net_device *ndev) in __netpoll_setup() argument
599 np->dev = ndev; in __netpoll_setup()
600 strlcpy(np->dev_name, ndev->name, IFNAMSIZ); in __netpoll_setup()
601 INIT_WORK(&np->cleanup_work, netpoll_async_cleanup); in __netpoll_setup()
605 np_err(np, "%s doesn't support polling, aborting\n", in __netpoll_setup()
606 np->dev_name); in __netpoll_setup()
624 ops = np->dev->netdev_ops; in __netpoll_setup()
635 npinfo->netpoll = np; in __netpoll_setup()
649 int netpoll_setup(struct netpoll *np) in netpoll_setup() argument
656 if (np->dev_name) { in netpoll_setup()
658 ndev = __dev_get_by_name(net, np->dev_name); in netpoll_setup()
661 np_err(np, "%s doesn't exist, aborting\n", np->dev_name); in netpoll_setup()
668 np_err(np, "%s is a slave device, aborting\n", np->dev_name); in netpoll_setup()
676 np_info(np, "device %s not up yet, forcing it\n", np->dev_name); in netpoll_setup()
681 np_err(np, "failed to open %s\n", ndev->name); in netpoll_setup()
690 np_notice(np, "timeout waiting for carrier\n"); in netpoll_setup()
702 np_notice(np, "carrier detect appears untrustworthy, waiting 4 seconds\n"); in netpoll_setup()
708 if (!np->local_ip.ip) { in netpoll_setup()
709 if (!np->ipv6) { in netpoll_setup()
713 np_err(np, "no IP address for %s, aborting\n", in netpoll_setup()
714 np->dev_name); in netpoll_setup()
719 np->local_ip.ip = in_dev->ifa_list->ifa_local; in netpoll_setup()
720 np_info(np, "local IP %pI4\n", &np->local_ip.ip); in netpoll_setup()
734 np->local_ip.in6 = ifp->addr; in netpoll_setup()
741 np_err(np, "no IPv6 address for %s, aborting\n", in netpoll_setup()
742 np->dev_name); in netpoll_setup()
745 np_info(np, "local IPv6 %pI6c\n", &np->local_ip.in6); in netpoll_setup()
747 np_err(np, "IPv6 is not supported %s, aborting\n", in netpoll_setup()
748 np->dev_name); in netpoll_setup()
758 err = __netpoll_setup(np, ndev); in netpoll_setup()
797 void __netpoll_cleanup(struct netpoll *np) in __netpoll_cleanup() argument
805 npinfo = rtnl_dereference(np->dev->npinfo); in __netpoll_cleanup()
814 ops = np->dev->netdev_ops; in __netpoll_cleanup()
816 ops->ndo_netpoll_cleanup(np->dev); in __netpoll_cleanup()
818 RCU_INIT_POINTER(np->dev->npinfo, NULL); in __netpoll_cleanup()
821 RCU_INIT_POINTER(np->dev->npinfo, NULL); in __netpoll_cleanup()
827 struct netpoll *np = container_of(work, struct netpoll, cleanup_work); in netpoll_async_cleanup() local
830 __netpoll_cleanup(np); in netpoll_async_cleanup()
832 kfree(np); in netpoll_async_cleanup()
835 void __netpoll_free_async(struct netpoll *np) in __netpoll_free_async() argument
837 schedule_work(&np->cleanup_work); in __netpoll_free_async()
841 void netpoll_cleanup(struct netpoll *np) in netpoll_cleanup() argument
844 if (!np->dev) in netpoll_cleanup()
846 __netpoll_cleanup(np); in netpoll_cleanup()
847 dev_put(np->dev); in netpoll_cleanup()
848 np->dev = NULL; in netpoll_cleanup()