tcp: prepare CC get_info() access from getsockopt()
authorEric Dumazet <edumazet@google.com>
Tue, 28 Apr 2015 23:23:48 +0000 (16:23 -0700)
committerDavid S. Miller <davem@davemloft.net>
Wed, 29 Apr 2015 21:10:38 +0000 (17:10 -0400)
We would like that optional info provided by Congestion Control
modules using netlink can also be read using getsockopt()

This patch changes get_info() to put this information in a buffer,
instead of skb, like tcp_get_info(), so that following patch
can reuse this common infrastructure.

Signed-off-by: Eric Dumazet <edumazet@google.com>
Cc: Yuchung Cheng <ycheng@google.com>
Cc: Neal Cardwell <ncardwell@google.com>
Acked-by: Neal Cardwell <ncardwell@google.com>
Acked-by: Daniel Borkmann <daniel@iogearbox.net>
Acked-by: Yuchung Cheng <ycheng@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/net/tcp.h
include/uapi/linux/inet_diag.h
net/ipv4/inet_diag.c
net/ipv4/tcp_dctcp.c
net/ipv4/tcp_illinois.c
net/ipv4/tcp_vegas.c
net/ipv4/tcp_vegas.h

index dd7b4ea..6d204f3 100644 (file)
@@ -804,6 +804,8 @@ enum tcp_ca_ack_event_flags {
 /* Requires ECN/ECT set on all packets */
 #define TCP_CONG_NEEDS_ECN     0x2
 
+union tcp_cc_info;
+
 struct tcp_congestion_ops {
        struct list_head        list;
        u32 key;
@@ -829,7 +831,8 @@ struct tcp_congestion_ops {
        /* hook for packet ack accounting (optional) */
        void (*pkts_acked)(struct sock *sk, u32 num_acked, s32 rtt_us);
        /* get info for inet_diag (optional) */
-       int (*get_info)(struct sock *sk, u32 ext, struct sk_buff *skb);
+       size_t (*get_info)(struct sock *sk, u32 ext, int *attr,
+                          union tcp_cc_info *info);
 
        char            name[TCP_CA_NAME_MAX];
        struct module   *owner;
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge