All of lore.kernel.org
 help / color / mirror / Atom feed
* Add the UdpSndbufErrors and UdpRcvbufErrors MIBs
@ 2006-08-09 22:31 Martin Bligh
  0 siblings, 0 replies; only message in thread
From: Martin Bligh @ 2006-08-09 22:31 UTC (permalink / raw)
  To: Andrew Morton; +Cc: LKML

[-- Attachment #1: Type: text/plain, Size: 100 bytes --]

Add the UdpSndbufErrors and UdpRcvbufErrors MIBs

Signed-off-by: Martin Bligh <mbligh@google.com>



[-- Attachment #2: linux-2.6.18-rc3-udp_mibs --]
[-- Type: text/plain, Size: 2732 bytes --]

Add the UdpSndbufErrors and UdpRcvbufErrors MIBs

Signed-off-by: Martin Bligh <mbligh@google.com>

diff -aurpN -X /home/mbligh/.diff.exclude linux-2.6.18-rc3/include/linux/snmp.h linux-2.6.18-rc3-udp_mibs/include/linux/snmp.h
--- linux-2.6.18-rc3/include/linux/snmp.h	2005-10-27 17:02:08.000000000 -0700
+++ linux-2.6.18-rc3-udp_mibs/include/linux/snmp.h	2006-08-09 15:23:31.000000000 -0700
@@ -155,6 +155,8 @@ enum
 	UDP_MIB_NOPORTS,			/* NoPorts */
 	UDP_MIB_INERRORS,			/* InErrors */
 	UDP_MIB_OUTDATAGRAMS,			/* OutDatagrams */
+	UDP_MIB_RCVBUFERRORS,			/* RcvbufErrors */
+	UDP_MIB_SNDBUFERRORS,			/* SndbufErrors */
 	__UDP_MIB_MAX
 };
 
diff -aurpN -X /home/mbligh/.diff.exclude linux-2.6.18-rc3/net/ipv4/proc.c linux-2.6.18-rc3-udp_mibs/net/ipv4/proc.c
--- linux-2.6.18-rc3/net/ipv4/proc.c	2006-06-20 14:07:21.000000000 -0700
+++ linux-2.6.18-rc3-udp_mibs/net/ipv4/proc.c	2006-08-09 15:23:31.000000000 -0700
@@ -173,6 +173,8 @@ static const struct snmp_mib snmp4_udp_l
 	SNMP_MIB_ITEM("NoPorts", UDP_MIB_NOPORTS),
 	SNMP_MIB_ITEM("InErrors", UDP_MIB_INERRORS),
 	SNMP_MIB_ITEM("OutDatagrams", UDP_MIB_OUTDATAGRAMS),
+	SNMP_MIB_ITEM("RcvbufErrors", UDP_MIB_RCVBUFERRORS),
+	SNMP_MIB_ITEM("SndbufErrors", UDP_MIB_SNDBUFERRORS),
 	SNMP_MIB_SENTINEL
 };
 
diff -aurpN -X /home/mbligh/.diff.exclude linux-2.6.18-rc3/net/ipv4/udp.c linux-2.6.18-rc3-udp_mibs/net/ipv4/udp.c
--- linux-2.6.18-rc3/net/ipv4/udp.c	2006-07-31 10:19:01.000000000 -0700
+++ linux-2.6.18-rc3-udp_mibs/net/ipv4/udp.c	2006-08-09 15:23:31.000000000 -0700
@@ -661,6 +661,16 @@ out:
 		UDP_INC_STATS_USER(UDP_MIB_OUTDATAGRAMS);
 		return len;
 	}
+	/*
+	 * ENOBUFS = no kernel mem, SOCK_NOSPACE = no sndbuf space.  Reporting
+	 * ENOBUFS might not be good (it's not tunable per se), but otherwise
+	 * we don't have a good statistic (IpOutDiscards but it can be too many
+	 * things).  We could add another new stat but at least for now that
+	 * seems like overkill.
+	 */
+	if (err == -ENOBUFS || test_bit(SOCK_NOSPACE, &sk->sk_socket->flags)) {
+		UDP_INC_STATS_USER(UDP_MIB_SNDBUFERRORS);
+	}
 	return err;
 
 do_confirm:
@@ -980,6 +990,7 @@ static int udp_encap_rcv(struct sock * s
 static int udp_queue_rcv_skb(struct sock * sk, struct sk_buff *skb)
 {
 	struct udp_sock *up = udp_sk(sk);
+	int rc;
 
 	/*
 	 *	Charge it to the socket, dropping if the queue is full.
@@ -1026,7 +1037,10 @@ static int udp_queue_rcv_skb(struct sock
 		skb->ip_summed = CHECKSUM_UNNECESSARY;
 	}
 
-	if (sock_queue_rcv_skb(sk,skb)<0) {
+	if ((rc = sock_queue_rcv_skb(sk,skb)) < 0) {
+		/* Note that an ENOMEM error is charged twice */
+		if (rc == -ENOMEM)
+			UDP_INC_STATS_BH(UDP_MIB_RCVBUFERRORS);
 		UDP_INC_STATS_BH(UDP_MIB_INERRORS);
 		kfree_skb(skb);
 		return -1;

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2006-08-09 22:31 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-08-09 22:31 Add the UdpSndbufErrors and UdpRcvbufErrors MIBs Martin Bligh

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.