[TCP]: Add pluggable congestion control algorithm infrastructure.
Allow TCP to have multiple pluggable congestion control algorithms. Algorithms are defined by a set of operations and can be built in or modules. The legacy "new RENO" algorithm is used as a starting point and fallback. Signed-off-by: Stephen Hemminger <shemminger@osdl.org> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
a8ad86f2dc
commit
317a76f9a4
@@ -42,7 +42,6 @@ struct tcpdiag_entry
|
||||
|
||||
static struct sock *tcpnl;
|
||||
|
||||
|
||||
#define TCPDIAG_PUT(skb, attrtype, attrlen) \
|
||||
({ int rtalen = RTA_LENGTH(attrlen); \
|
||||
struct rtattr *rta; \
|
||||
@@ -61,7 +60,6 @@ static int tcpdiag_fill(struct sk_buff *skb, struct sock *sk,
|
||||
struct nlmsghdr *nlh;
|
||||
struct tcp_info *info = NULL;
|
||||
struct tcpdiag_meminfo *minfo = NULL;
|
||||
struct tcpvegas_info *vinfo = NULL;
|
||||
unsigned char *b = skb->tail;
|
||||
|
||||
nlh = NLMSG_PUT(skb, pid, seq, TCPDIAG_GETSOCK, sizeof(*r));
|
||||
@@ -73,9 +71,6 @@ static int tcpdiag_fill(struct sk_buff *skb, struct sock *sk,
|
||||
if (ext & (1<<(TCPDIAG_INFO-1)))
|
||||
info = TCPDIAG_PUT(skb, TCPDIAG_INFO, sizeof(*info));
|
||||
|
||||
if ((tcp_is_westwood(tp) || tcp_is_vegas(tp))
|
||||
&& (ext & (1<<(TCPDIAG_VEGASINFO-1))))
|
||||
vinfo = TCPDIAG_PUT(skb, TCPDIAG_VEGASINFO, sizeof(*vinfo));
|
||||
}
|
||||
r->tcpdiag_family = sk->sk_family;
|
||||
r->tcpdiag_state = sk->sk_state;
|
||||
@@ -166,19 +161,8 @@ static int tcpdiag_fill(struct sk_buff *skb, struct sock *sk,
|
||||
if (info)
|
||||
tcp_get_info(sk, info);
|
||||
|
||||
if (vinfo) {
|
||||
if (tcp_is_vegas(tp)) {
|
||||
vinfo->tcpv_enabled = tp->vegas.doing_vegas_now;
|
||||
vinfo->tcpv_rttcnt = tp->vegas.cntRTT;
|
||||
vinfo->tcpv_rtt = jiffies_to_usecs(tp->vegas.baseRTT);
|
||||
vinfo->tcpv_minrtt = jiffies_to_usecs(tp->vegas.minRTT);
|
||||
} else {
|
||||
vinfo->tcpv_enabled = 0;
|
||||
vinfo->tcpv_rttcnt = 0;
|
||||
vinfo->tcpv_rtt = jiffies_to_usecs(tp->westwood.rtt);
|
||||
vinfo->tcpv_minrtt = jiffies_to_usecs(tp->westwood.rtt_min);
|
||||
}
|
||||
}
|
||||
if (sk->sk_state < TCP_TIME_WAIT && tp->ca_ops->get_info)
|
||||
tp->ca_ops->get_info(tp, ext, skb);
|
||||
|
||||
nlh->nlmsg_len = skb->tail - b;
|
||||
return skb->len;
|
||||
|
Reference in New Issue
Block a user