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

Commit f2bf415c authored by Pavel Emelyanov's avatar Pavel Emelyanov Committed by David S. Miller
Browse files

mib: add net to NET_ADD_STATS_BH



This one is tricky. 

The thing is that this macro is only used when killing tw buckets, 
but since this killer is promiscuous wrt to which net each particular
tw belongs to, I have to use it only when NET_NS is off. When the net
namespaces are on, I use the INET_INC_STATS_BH for each bucket.

Signed-off-by: default avatarPavel Emelyanov <xemul@openvz.org>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 6f67c817
Loading
Loading
Loading
Loading
+1 −1
Original line number Original line Diff line number Diff line
@@ -164,7 +164,7 @@ DECLARE_SNMP_STAT(struct linux_mib, net_statistics);
#define NET_INC_STATS(net, field)	do { (void)net; SNMP_INC_STATS(net_statistics, field); } while (0)
#define NET_INC_STATS(net, field)	do { (void)net; SNMP_INC_STATS(net_statistics, field); } while (0)
#define NET_INC_STATS_BH(net, field)	do { (void)net; SNMP_INC_STATS_BH(net_statistics, field); } while (0)
#define NET_INC_STATS_BH(net, field)	do { (void)net; SNMP_INC_STATS_BH(net_statistics, field); } while (0)
#define NET_INC_STATS_USER(net, field) 	do { (void)net; SNMP_INC_STATS_USER(net_statistics, field); } while (0)
#define NET_INC_STATS_USER(net, field) 	do { (void)net; SNMP_INC_STATS_USER(net_statistics, field); } while (0)
#define NET_ADD_STATS_BH(field, adnd)	SNMP_ADD_STATS_BH(net_statistics, field, adnd)
#define NET_ADD_STATS_BH(net, field, adnd) do { (void)net; SNMP_ADD_STATS_BH(net_statistics, field, adnd); } while (0)
#define NET_ADD_STATS_USER(field, adnd)	SNMP_ADD_STATS_USER(net_statistics, field, adnd)
#define NET_ADD_STATS_USER(field, adnd)	SNMP_ADD_STATS_USER(net_statistics, field, adnd)


extern unsigned long snmp_fold_field(void *mib[], int offt);
extern unsigned long snmp_fold_field(void *mib[], int offt);
+12 −3
Original line number Original line Diff line number Diff line
@@ -160,6 +160,9 @@ rescan:
		__inet_twsk_del_dead_node(tw);
		__inet_twsk_del_dead_node(tw);
		spin_unlock(&twdr->death_lock);
		spin_unlock(&twdr->death_lock);
		__inet_twsk_kill(tw, twdr->hashinfo);
		__inet_twsk_kill(tw, twdr->hashinfo);
#ifdef CONFIG_NET_NS
		NET_INC_STATS_BH(twsk_net(tw), LINUX_MIB_TIMEWAITED);
#endif
		inet_twsk_put(tw);
		inet_twsk_put(tw);
		killed++;
		killed++;
		spin_lock(&twdr->death_lock);
		spin_lock(&twdr->death_lock);
@@ -178,8 +181,9 @@ rescan:
	}
	}


	twdr->tw_count -= killed;
	twdr->tw_count -= killed;
	NET_ADD_STATS_BH(LINUX_MIB_TIMEWAITED, killed);
#ifndef CONFIG_NET_NS

	NET_ADD_STATS_BH(&init_net, LINUX_MIB_TIMEWAITED, killed);
#endif
	return ret;
	return ret;
}
}


@@ -372,6 +376,9 @@ void inet_twdr_twcal_tick(unsigned long data)
						       &twdr->twcal_row[slot]) {
						       &twdr->twcal_row[slot]) {
				__inet_twsk_del_dead_node(tw);
				__inet_twsk_del_dead_node(tw);
				__inet_twsk_kill(tw, twdr->hashinfo);
				__inet_twsk_kill(tw, twdr->hashinfo);
#ifdef CONFIG_NET_NS
				NET_INC_STATS_BH(twsk_net(tw), LINUX_MIB_TIMEWAITKILLED);
#endif
				inet_twsk_put(tw);
				inet_twsk_put(tw);
				killed++;
				killed++;
			}
			}
@@ -395,7 +402,9 @@ void inet_twdr_twcal_tick(unsigned long data)
out:
out:
	if ((twdr->tw_count -= killed) == 0)
	if ((twdr->tw_count -= killed) == 0)
		del_timer(&twdr->tw_timer);
		del_timer(&twdr->tw_timer);
	NET_ADD_STATS_BH(LINUX_MIB_TIMEWAITKILLED, killed);
#ifndef CONFIG_NET_NS
	NET_ADD_STATS_BH(&init_net, LINUX_MIB_TIMEWAITKILLED, killed);
#endif
	spin_unlock(&twdr->death_lock);
	spin_unlock(&twdr->death_lock);
}
}