* 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.