cregit-Linux how code gets into the kernel

Release 4.11 net/ipv4/tcp_scalable.c

Directory: net/ipv4
/* Tom Kelly's Scalable TCP
 *
 * See http://www.deneholme.net/tom/scalable/
 *
 * John Heffner <jheffner@sc.edu>
 */

#include <linux/module.h>
#include <net/tcp.h>

/* These factors derived from the recommended values in the aer:
 * .01 and and 7/8. We use 50 instead of 100 to account for
 * delayed ack.
 */

#define TCP_SCALABLE_AI_CNT	50U

#define TCP_SCALABLE_MD_SCALE	3


struct scalable {
	
u32 loss_cwnd;
};


static void tcp_scalable_cong_avoid(struct sock *sk, u32 ack, u32 acked) { struct tcp_sock *tp = tcp_sk(sk); if (!tcp_is_cwnd_limited(sk)) return; if (tcp_in_slow_start(tp)) tcp_slow_start(tp, acked); else tcp_cong_avoid_ai(tp, min(tp->snd_cwnd, TCP_SCALABLE_AI_CNT), 1); }

Contributors

PersonTokensPropCommitsCommitProp
John Heffner3552.24%112.50%
Arnaldo Carvalho de Melo1217.91%112.50%
Stephen Hemminger811.94%225.00%
Yuchung Cheng68.96%225.00%
Ilpo Järvinen45.97%112.50%
Neal Cardwell22.99%112.50%
Total67100.00%8100.00%


static u32 tcp_scalable_ssthresh(struct sock *sk) { const struct tcp_sock *tp = tcp_sk(sk); struct scalable *ca = inet_csk_ca(sk); ca->loss_cwnd = tp->snd_cwnd; return max(tp->snd_cwnd - (tp->snd_cwnd>>TCP_SCALABLE_MD_SCALE), 2U); }

Contributors

PersonTokensPropCommitsCommitProp
John Heffner2746.55%133.33%
Florian Westphal1831.03%133.33%
Arnaldo Carvalho de Melo1322.41%133.33%
Total58100.00%3100.00%


static u32 tcp_scalable_cwnd_undo(struct sock *sk) { const struct scalable *ca = inet_csk_ca(sk); return max(tcp_sk(sk)->snd_cwnd, ca->loss_cwnd); }

Contributors

PersonTokensPropCommitsCommitProp
Florian Westphal37100.00%1100.00%
Total37100.00%1100.00%

static struct tcp_congestion_ops tcp_scalable __read_mostly = { .ssthresh = tcp_scalable_ssthresh, .undo_cwnd = tcp_scalable_cwnd_undo, .cong_avoid = tcp_scalable_cong_avoid, .owner = THIS_MODULE, .name = "scalable", };
static int __init tcp_scalable_register(void) { return tcp_register_congestion_control(&tcp_scalable); }

Contributors

PersonTokensPropCommitsCommitProp
John Heffner16100.00%1100.00%
Total16100.00%1100.00%


static void __exit tcp_scalable_unregister(void) { tcp_unregister_congestion_control(&tcp_scalable); }

Contributors

PersonTokensPropCommitsCommitProp
John Heffner15100.00%1100.00%
Total15100.00%1100.00%

module_init(tcp_scalable_register); module_exit(tcp_scalable_unregister); MODULE_AUTHOR("John Heffner"); MODULE_LICENSE("GPL"); MODULE_DESCRIPTION("Scalable TCP");

Overall Contributors

PersonTokensPropCommitsCommitProp
John Heffner16058.18%19.09%
Florian Westphal6824.73%19.09%
Arnaldo Carvalho de Melo259.09%19.09%
Stephen Hemminger93.27%327.27%
Yuchung Cheng62.18%218.18%
Ilpo Järvinen41.45%19.09%
Neal Cardwell20.73%19.09%
Joe Perches10.36%19.09%
Total275100.00%11100.00%
Directory: net/ipv4
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.
Created with cregit.