[DCCP]: Sample RTT from SYN exchange
Function:
This commit is contained in:
parent
7dfee1a9c0
commit
89560b53b9
@ -481,10 +481,12 @@ struct dccp_ackvec;
|
||||
* @dccps_hc_rx_insert_options -
|
||||
* @dccps_hc_tx_insert_options -
|
||||
* @dccps_xmit_timer - timer for when CCID is not ready to send
|
||||
* @dccps_syn_rtt - RTT sample from Request/Response exchange (in usecs)
|
||||
*/
|
||||
struct dccp_sock {
|
||||
/* inet_connection_sock has to be the first member of dccp_sock */
|
||||
struct inet_connection_sock dccps_inet_connection;
|
||||
#define dccps_syn_rtt dccps_inet_connection.icsk_ack.lrcvtime
|
||||
__u64 dccps_swl;
|
||||
__u64 dccps_swh;
|
||||
__u64 dccps_awl;
|
||||
|
@ -300,6 +300,14 @@ static int dccp_rcv_request_sent_state_process(struct sock *sk,
|
||||
if (dccp_parse_options(sk, skb))
|
||||
goto out_invalid_packet;
|
||||
|
||||
/* Obtain RTT sample from SYN exchange (used by CCID 3) */
|
||||
if (dp->dccps_options_received.dccpor_timestamp_echo) {
|
||||
struct timeval now;
|
||||
|
||||
dccp_timestamp(sk, &now);
|
||||
dp->dccps_syn_rtt = dccp_sample_rtt(sk, &now, NULL);
|
||||
}
|
||||
|
||||
if (dccp_msk(sk)->dccpms_send_ack_vector &&
|
||||
dccp_ackvec_add(dp->dccps_hc_rx_ackvec, sk,
|
||||
DCCP_SKB_CB(skb)->dccpd_seq,
|
||||
|
@ -563,6 +563,14 @@ int dccp_insert_options(struct sock *sk, struct sk_buff *skb)
|
||||
dccp_insert_options_feat(sk, skb))
|
||||
return -1;
|
||||
|
||||
/*
|
||||
* Obtain RTT sample from Request/Response exchange.
|
||||
* This is currently used in CCID 3 initialisation.
|
||||
*/
|
||||
if (DCCP_SKB_CB(skb)->dccpd_type == DCCP_PKT_REQUEST &&
|
||||
dccp_insert_option_timestamp(sk, skb))
|
||||
return -1;
|
||||
|
||||
/* XXX: insert other options when appropriate */
|
||||
|
||||
if (DCCP_SKB_CB(skb)->dccpd_opt_len != 0) {
|
||||
|
Loading…
Reference in New Issue
Block a user