Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c68e64cf authored by Arnaldo Carvalho de Melo's avatar Arnaldo Carvalho de Melo Committed by David S. Miller
Browse files

[CCID3]: Reintroduce ccid3hctx_t_rto



CCID3 keeps this variable in usecs, inet_connection_socks in jiffies,
so to avoid Mars orbiter losses lets reintroduce ccid3hctx_t_rto 8)

Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@mandriva.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 33d043d6
Loading
Loading
Loading
Loading
+5 −5
Original line number Diff line number Diff line
@@ -905,7 +905,7 @@ static void ccid3_hc_tx_no_feedback_timer(unsigned long data)
			hctx->ccid3hctx_x = 10;
		}
		/* Schedule no feedback timer to expire in max(4 * R, 2 * s / X) */
		next_tmout = max_t(u32, inet_csk(sk)->icsk_rto, 
		next_tmout = max_t(u32, hctx->ccid3hctx_t_rto, 
				   2 * (hctx->ccid3hctx_s * 100000) / (hctx->ccid3hctx_x / 10));
		break;
	default:
@@ -1180,7 +1180,7 @@ static void ccid3_hc_tx_packet_recv(struct sock *sk, struct sk_buff *skb)
			       r_sample);

		/* Update timeout interval */
		inet_csk(sk)->icsk_rto = max_t(u32, 4 * hctx->ccid3hctx_rtt,
		hctx->ccid3hctx_t_rto = max_t(u32, 4 * hctx->ccid3hctx_rtt,
					      USEC_PER_SEC);

		/* Update receive rate */
@@ -1227,7 +1227,7 @@ static void ccid3_hc_tx_packet_recv(struct sock *sk, struct sk_buff *skb)
		/* to prevent divide by zero below */

		/* Schedule no feedback timer to expire in max(4 * R, 2 * s / X) */
		next_tmout = max(inet_csk(sk)->icsk_rto,
		next_tmout = max(hctx->ccid3hctx_t_rto,
				 (2 * (hctx->ccid3hctx_s * 100000) /
				  (hctx->ccid3hctx_x / 10)));
		/* maths with 100000 and 10 is to prevent overflow with 32 bit */
@@ -1340,7 +1340,7 @@ static int ccid3_hc_tx_init(struct sock *sk)

	hctx->ccid3hctx_x     = hctx->ccid3hctx_s; /* set transmission rate to 1 packet per second */
	hctx->ccid3hctx_rtt   = 4; /* See ccid3_hc_tx_packet_sent win_count calculatation */
	inet_csk(sk)->icsk_rto = USEC_PER_SEC;
	hctx->ccid3hctx_t_rto = USEC_PER_SEC;
	hctx->ccid3hctx_state = TFRC_SSTATE_NO_SENT;
	INIT_LIST_HEAD(&hctx->ccid3hctx_hist);
	init_timer(&hctx->ccid3hctx_no_feedback_timer);
+1 −0
Original line number Diff line number Diff line
@@ -80,6 +80,7 @@ struct ccid3_hc_tx_sock {
	struct timer_list		ccid3hctx_no_feedback_timer;
	struct timeval			ccid3hctx_t_ld;
	struct timeval			ccid3hctx_t_nom;
	u32				ccid3hctx_t_rto;
	u32				ccid3hctx_t_ipi;
	u32				ccid3hctx_delta;
	struct list_head		ccid3hctx_hist;