Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 670c02c2 authored by John Hawkes's avatar John Hawkes Committed by Arnaldo Carvalho de Melo
Browse files

[NET]: Wider use of for_each_*cpu()



In 'net' change the explicit use of for-loops and NR_CPUS into the
general for_each_cpu() or for_each_online_cpu() constructs, as
appropriate.  This widens the scope of potential future optimizations
of the general constructs, as well as takes advantage of the existing
optimizations of first_cpu() and next_cpu(), which is advantageous
when the true CPU count is much smaller than NR_CPUS.

Signed-off-by: default avatarJohn Hawkes <hawkes@sgi.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@mandriva.com>
parent 900e0143
Loading
Loading
Loading
Loading
+1 −4
Original line number Diff line number Diff line
@@ -1625,12 +1625,9 @@ static int neightbl_fill_info(struct neigh_table *tbl, struct sk_buff *skb,

		memset(&ndst, 0, sizeof(ndst));

		for (cpu = 0; cpu < NR_CPUS; cpu++) {
		for_each_cpu(cpu) {
			struct neigh_statistics	*st;

			if (!cpu_possible(cpu))
				continue;

			st = per_cpu_ptr(tbl->stats, cpu);
			ndst.ndts_allocs		+= st->allocs;
			ndst.ndts_destroys		+= st->destroys;
+1 −4
Original line number Diff line number Diff line
@@ -3065,12 +3065,9 @@ static int __init pg_init(void)
	/* Register us to receive netdevice events */
	register_netdevice_notifier(&pktgen_notifier_block);
        
	for (cpu = 0; cpu < NR_CPUS ; cpu++) {
	for_each_online_cpu(cpu) {
		char buf[30];

		if (!cpu_online(cpu))
			continue;

                sprintf(buf, "kpktgend_%i", cpu);
                pktgen_create_thread(buf, cpu);
        }
+1 −4
Original line number Diff line number Diff line
@@ -1108,12 +1108,9 @@ void __init icmp_init(struct net_proto_family *ops)
	struct inet_sock *inet;
	int i;

	for (i = 0; i < NR_CPUS; i++) {
	for_each_cpu(i) {
		int err;

		if (!cpu_possible(i))
			continue;

		err = sock_create_kern(PF_INET, SOCK_RAW, IPPROTO_ICMP,
				       &per_cpu(__icmp_socket, i));

+1 −3
Original line number Diff line number Diff line
@@ -90,9 +90,7 @@ fold_field(void *mib[], int offt)
	unsigned long res = 0;
	int i;

	for (i = 0; i < NR_CPUS; i++) {
		if (!cpu_possible(i))
			continue;
	for_each_cpu(i) {
		res += *(((unsigned long *) per_cpu_ptr(mib[0], i)) + offt);
		res += *(((unsigned long *) per_cpu_ptr(mib[1], i)) + offt);
	}
+2 −7
Original line number Diff line number Diff line
@@ -700,10 +700,7 @@ int __init icmpv6_init(struct net_proto_family *ops)
	struct sock *sk;
	int err, i, j;

	for (i = 0; i < NR_CPUS; i++) {
		if (!cpu_possible(i))
			continue;

	for_each_cpu(i) {
		err = sock_create_kern(PF_INET6, SOCK_RAW, IPPROTO_ICMPV6,
				       &per_cpu(__icmpv6_socket, i));
		if (err < 0) {
@@ -749,9 +746,7 @@ void icmpv6_cleanup(void)
{
	int i;

	for (i = 0; i < NR_CPUS; i++) {
		if (!cpu_possible(i))
			continue;
	for_each_cpu(i) {
		sock_release(per_cpu(__icmpv6_socket, i));
	}
	inet6_del_protocol(&icmpv6_protocol, IPPROTO_ICMPV6);
Loading