Neil Horman
3b885787ea
net: Generalize socket rx gap / receive queue overflow cmsg
...
Create a new socket level option to report number of queue overflows
Recently I augmented the AF_PACKET protocol to report the number of frames lost
on the socket receive queue between any two enqueued frames. This value was
exported via a SOL_PACKET level cmsg. AFter I completed that work it was
requested that this feature be generalized so that any datagram oriented socket
could make use of this option. As such I've created this patch, It creates a
new SOL_SOCKET level option called SO_RXQ_OVFL, which when enabled exports a
SOL_SOCKET level cmsg that reports the nubmer of times the sk_receive_queue
overflowed between any two given frames. It also augments the AF_PACKET
protocol to take advantage of this new feature (as it previously did not touch
sk->sk_drops, which this patch uses to record the overflow count). Tested
successfully by me.
Notes:
1) Unlike my previous patch, this patch simply records the sk_drops value, which
is not a number of drops between packets, but rather a total number of drops.
Deltas must be computed in user space.
2) While this patch currently works with datagram oriented protocols, it will
also be accepted by non-datagram oriented protocols. I'm not sure if thats
agreeable to everyone, but my argument in favor of doing so is that, for those
protocols which aren't applicable to this option, sk_drops will always be zero,
and reporting no drops on a receive queue that isn't used for those
non-participating protocols seems reasonable to me. This also saves us having
to code in a per-protocol opt in mechanism.
3) This applies cleanly to net-next assuming that commit
977750076d (my af packet cmsg patch) is reverted
Signed-off-by: Neil Horman <nhorman@tuxdriver.com>
Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2009-10-12 13:26:31 -07:00
..
9p
9p: Add fscache support to 9p
2009-09-23 13:03:46 -05:00
bluetooth
net: mark net_proto_ops as const
2009-10-07 01:10:46 -07:00
irda
net: mark read-only arrays as const
2009-08-05 10:42:58 -07:00
iucv
af_iucv: Return -EAGAIN if iucv msg limit is exceeded
2009-06-19 00:10:40 -07:00
netfilter
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/kaber/nf-next-2.6
2009-09-10 18:17:09 -07:00
netns
netns: embed ip6_dst_ops directly
2009-09-01 17:40:31 -07:00
phonet
Phonet: sockets list through proc_fs
2009-07-23 17:58:19 -07:00
sctp
net: Make setsockopt() optlen be unsigned.
2009-09-30 16:12:20 -07:00
tc_act
tipc
act_api.h
net: restore gnet_stats_basic to previous definition
2009-08-17 21:33:49 -07:00
addrconf.h
bonding: remap muticast addresses without using dev_close() and dev_open()
2009-09-15 02:37:40 -07:00
af_ieee802154.h
af_ieee802154: add support for WANT_ACK socket option
2009-08-12 21:54:50 -07:00
af_rxrpc.h
af_unix.h
ah.h
arp.h
net: make neigh_ops constant
2009-09-01 17:40:57 -07:00
atmclip.h
ax25.h
ax88796.h
ax88796: Add method to take MAC from platform data
2009-03-24 23:32:03 -07:00
cfg80211.h
cfg80211: add firmware and hardware version to wiphy
2009-10-07 16:39:46 -04:00
checksum.h
cipso_ipv4.h
netlabel: Label incoming TCP connections correctly in SELinux
2009-03-28 15:01:36 +11:00
compat.h
net: Make setsockopt() optlen be unsigned.
2009-09-30 16:12:20 -07:00
datalink.h
dcbnl.h
dcbnl: Add support for setapp/getapp to netdev dcbnl_rtnl_ops
2009-09-01 01:24:30 -07:00
dn.h
dn_dev.h
dn_fib.h
dn_neigh.h
dn_nsp.h
dn_route.h
dsa.h
dsa: add switch chip cascading support
2009-03-21 19:06:54 -07:00
dsfield.h
dst.h
netns: embed ip6_dst_ops directly
2009-09-01 17:40:31 -07:00
dst_ops.h
netns: embed ip6_dst_ops directly
2009-09-01 17:40:31 -07:00
esp.h
ethoc.h
net: Add support for the OpenCores 10/100 Mbps Ethernet MAC.
2009-03-27 00:16:21 -07:00
fib_rules.h
net: Remove unused parameter from fill method in fib_rules_ops.
2009-05-20 17:26:23 -07:00
flow.h
garp.h
gen_stats.h
pkt_sched: gen_estimator: Dont report fake rate estimators
2009-10-07 01:07:42 -07:00
genetlink.h
genetlink: make netns aware
2009-07-12 14:03:27 -07:00
icmp.h
ieee80211_radiotap.h
wireless: radiotap updates
2009-03-27 20:12:52 -04:00
ieee802154.h
ieee802154: move headers out of extra directory
2009-07-23 17:08:51 +04:00
ieee802154_netdev.h
ieee802154: add support for channel pages from IEEE 802.15.4-2006
2009-08-19 23:08:22 +04:00
if_inet6.h
ipv6: reorder struct inet6_ifaddr to remove padding on 64 bit builds
2009-03-21 13:29:05 -07:00
inet6_connection_sock.h
inet6_hashtables.h
net: skb->dst accessors
2009-06-03 02:51:04 -07:00
inet_common.h
inet_connection_sock.h
net: Make setsockopt() optlen be unsigned.
2009-09-30 16:12:20 -07:00
inet_ecn.h
inet_frag.h
inet_hashtables.h
net: skb->dst accessors
2009-06-03 02:51:04 -07:00
inet_sock.h
Merge branch 'for-linus2' of git://git.kernel.org/pub/scm/linux/kernel/git/vegard/kmemcheck
2009-06-16 13:09:51 -07:00
inet_timewait_sock.h
net: annotate inet_timewait_sock bitfields
2009-06-15 15:49:32 +02:00
inetpeer.h
ip.h
net: Make setsockopt() optlen be unsigned.
2009-09-30 16:12:20 -07:00
ip6_checksum.h
ip6_fib.h
xfrm: select sane defaults for xfrm[4|6] gc_thresh
2009-07-30 18:52:15 -07:00
ip6_route.h
net: skb->dst accessors
2009-06-03 02:51:04 -07:00
ip6_tunnel.h
ip_fib.h
ipv4: fib table algorithm performance improvement
2009-10-05 00:21:56 -07:00
ip_vs.h
net: mark read-only arrays as const
2009-08-05 10:42:58 -07:00
ipcomp.h
ipconfig.h
ipip.h
ipv6 sit: 6rd (IPv6 Rapid Deployment) Support.
2009-10-07 01:07:37 -07:00
ipv6.h
net: Make setsockopt() optlen be unsigned.
2009-09-30 16:12:20 -07:00
ipx.h
iw_handler.h
wext: refactor
2009-10-07 16:39:43 -04:00
lapb.h
lib80211.h
llc.h
llc_c_ac.h
llc_c_ev.h
llc_c_st.h
llc_conn.h
llc_if.h
llc_pdu.h
llc_s_ac.h
llc_s_ev.h
llc_s_st.h
llc_sap.h
mac80211.h
mac80211: remove ieee80211_rx namespace hack
2009-08-28 14:40:29 -04:00
mip6.h
ndisc.h
sysctl: remove "struct file *" argument of ->proc_handler
2009-09-24 07:21:04 -07:00
neighbour.h
net: make neigh_ops constant
2009-09-01 17:40:57 -07:00
net_namespace.h
wext: refactor
2009-10-07 16:39:43 -04:00
netdma.h
netevent.h
netlabel.h
netlabel: Cleanup the Smack/NetLabel code to fix incoming TCP connections
2009-03-28 15:01:37 +11:00
netlink.h
netlink: constify nlmsghdr arguments
2009-08-25 16:07:40 +02:00
netrom.h
nexthop.h
nl802154.h
ieee802154: add support for channel pages from IEEE 802.15.4-2006
2009-08-19 23:08:22 +04:00
p8022.h
pkt_cls.h
pkt_sched.h
pkt_sched: Revert tasklet_hrtimer changes.
2009-09-01 17:59:25 -07:00
protocol.h
net: constify struct inet6_protocol
2009-09-14 17:03:05 -07:00
psnap.h
snap: use const for descriptor
2009-03-21 19:06:50 -07:00
raw.h
rawv6.h
ipv6: Use correct data types for ICMPv6 type and code
2009-06-23 04:31:07 -07:00
red.h
regulatory.h
cfg80211: clean up includes
2009-04-22 16:57:17 -04:00
request_sock.h
rose.h
NET: ROSE: Don't use static buffer.
2009-07-26 19:11:14 -07:00
route.h
net: skb->rtable accessor
2009-06-03 02:51:02 -07:00
rtnetlink.h
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/kaber/nf-next-2.6
2009-09-10 18:17:09 -07:00
sch_generic.h
pkt_sched: Fix tx queue selection in tc_modify_qdisc
2009-09-15 02:53:07 -07:00
scm.h
cleanup: remove unused member in scm_cookie.
2009-07-05 19:16:10 -07:00
slhc_vj.h
snmp.h
snmp: add missing counters for RFC 4293
2009-04-27 02:45:02 -07:00
sock.h
net: Generalize socket rx gap / receive queue overflow cmsg
2009-10-12 13:26:31 -07:00
stp.h
tcp.h
net: Make setsockopt() optlen be unsigned.
2009-09-30 16:12:20 -07:00
tcp_states.h
timewait_sock.h
transp_v6.h
inet: inet_connection_sock_af_ops const
2009-09-02 01:03:49 -07:00
udp.h
udp: dynamically size hash tables at boot time
2009-10-07 22:00:22 -07:00
udplite.h
wext.h
wext: refactor
2009-10-07 16:39:43 -04:00
wimax.h
rfkill: rewrite
2009-06-03 14:06:13 -04:00
wpan-phy.h
ieee802154: add a sysfs representation of WPAN master devices
2009-08-19 23:08:20 +04:00
x25.h
x25: Fix sleep from timer on socket destroy.
2009-06-16 05:40:30 -07:00
x25device.h
xfrm.h
xfrm: select sane defaults for xfrm[4|6] gc_thresh
2009-07-30 18:52:15 -07:00