diff options
author | Eyal Birger <eyal.birger@gmail.com> | 2015-03-01 07:58:31 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2015-03-02 00:19:30 -0500 |
commit | 744d5a3e9fe2690dd85d9991dbb078301694658b (patch) | |
tree | e8e54af77636cf51a1146cd638275f940bfe3db9 /net/socket.c | |
parent | 3bc3b96f3b455bd14a8ccd83ffffc85625aba641 (diff) |
net: move skb->dropcount to skb->cb[]
Commit 977750076d98 ("af_packet: add interframe drop cmsg (v6)")
unionized skb->mark and skb->dropcount in order to allow recording
of the socket drop count while maintaining struct sk_buff size.
skb->dropcount was introduced since there was no available room
in skb->cb[] in packet sockets. However, its introduction led to
the inability to export skb->mark, or any other aliased field to
userspace if so desired.
Moving the dropcount metric to skb->cb[] eliminates this problem
at the expense of 4 bytes less in skb->cb[] for protocol families
using it.
Signed-off-by: Eyal Birger <eyal.birger@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/socket.c')
-rw-r--r-- | net/socket.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/net/socket.c b/net/socket.c index bbedbfcb42c2..b78cf601a021 100644 --- a/net/socket.c +++ b/net/socket.c | |||
@@ -731,9 +731,9 @@ EXPORT_SYMBOL_GPL(__sock_recv_wifi_status); | |||
731 | static inline void sock_recv_drops(struct msghdr *msg, struct sock *sk, | 731 | static inline void sock_recv_drops(struct msghdr *msg, struct sock *sk, |
732 | struct sk_buff *skb) | 732 | struct sk_buff *skb) |
733 | { | 733 | { |
734 | if (sock_flag(sk, SOCK_RXQ_OVFL) && skb && skb->dropcount) | 734 | if (sock_flag(sk, SOCK_RXQ_OVFL) && skb && SOCK_SKB_CB(skb)->dropcount) |
735 | put_cmsg(msg, SOL_SOCKET, SO_RXQ_OVFL, | 735 | put_cmsg(msg, SOL_SOCKET, SO_RXQ_OVFL, |
736 | sizeof(__u32), &skb->dropcount); | 736 | sizeof(__u32), &SOCK_SKB_CB(skb)->dropcount); |
737 | } | 737 | } |
738 | 738 | ||
739 | void __sock_recv_ts_and_drops(struct msghdr *msg, struct sock *sk, | 739 | void __sock_recv_ts_and_drops(struct msghdr *msg, struct sock *sk, |