[CCID] Only call the HC insert_options methods when requested
Signed-off-by: Arnaldo Carvalho de Melo <acme@mandriva.com>
This commit is contained in:
Родитель
0ba7a3ba66
Коммит
507d37cf26
|
@ -433,6 +433,8 @@ struct dccp_sock {
|
||||||
struct ccid *dccps_hc_tx_ccid;
|
struct ccid *dccps_hc_tx_ccid;
|
||||||
struct dccp_options_received dccps_options_received;
|
struct dccp_options_received dccps_options_received;
|
||||||
enum dccp_role dccps_role:2;
|
enum dccp_role dccps_role:2;
|
||||||
|
__u8 dccps_hc_rx_insert_options:1;
|
||||||
|
__u8 dccps_hc_tx_insert_options:1;
|
||||||
};
|
};
|
||||||
|
|
||||||
static inline struct dccp_sock *dccp_sk(const struct sock *sk)
|
static inline struct dccp_sock *dccp_sk(const struct sock *sk)
|
||||||
|
|
|
@ -358,10 +358,12 @@ static int ccid3_hc_tx_send_packet(struct sock *sk,
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Can we send? if so add options and add to packet history */
|
/* Can we send? if so add options and add to packet history */
|
||||||
if (rc == 0)
|
if (rc == 0) {
|
||||||
|
dp->dccps_hc_tx_insert_options = 1;
|
||||||
new_packet->dccphtx_ccval =
|
new_packet->dccphtx_ccval =
|
||||||
DCCP_SKB_CB(skb)->dccpd_ccval =
|
DCCP_SKB_CB(skb)->dccpd_ccval =
|
||||||
hctx->ccid3hctx_last_win_count;
|
hctx->ccid3hctx_last_win_count;
|
||||||
|
}
|
||||||
out:
|
out:
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
@ -811,6 +813,7 @@ static void ccid3_hc_rx_send_feedback(struct sock *sk)
|
||||||
hcrx->ccid3hcrx_pinv = ~0;
|
hcrx->ccid3hcrx_pinv = ~0;
|
||||||
else
|
else
|
||||||
hcrx->ccid3hcrx_pinv = 1000000 / hcrx->ccid3hcrx_p;
|
hcrx->ccid3hcrx_pinv = 1000000 / hcrx->ccid3hcrx_p;
|
||||||
|
dp->dccps_hc_rx_insert_options = 1;
|
||||||
dccp_send_ack(sk);
|
dccp_send_ack(sk);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -505,13 +505,18 @@ void dccp_insert_options(struct sock *sk, struct sk_buff *skb)
|
||||||
(dp->dccps_hc_rx_ackpkts->dccpap_buf_ackno !=
|
(dp->dccps_hc_rx_ackpkts->dccpap_buf_ackno !=
|
||||||
DCCP_MAX_SEQNO + 1))
|
DCCP_MAX_SEQNO + 1))
|
||||||
dccp_insert_option_ack_vector(sk, skb);
|
dccp_insert_option_ack_vector(sk, skb);
|
||||||
|
|
||||||
if (dp->dccps_timestamp_echo != 0)
|
if (dp->dccps_timestamp_echo != 0)
|
||||||
dccp_insert_option_timestamp_echo(sk, skb);
|
dccp_insert_option_timestamp_echo(sk, skb);
|
||||||
}
|
}
|
||||||
|
|
||||||
ccid_hc_rx_insert_options(dp->dccps_hc_rx_ccid, sk, skb);
|
if (dp->dccps_hc_rx_insert_options) {
|
||||||
ccid_hc_tx_insert_options(dp->dccps_hc_tx_ccid, sk, skb);
|
ccid_hc_rx_insert_options(dp->dccps_hc_rx_ccid, sk, skb);
|
||||||
|
dp->dccps_hc_rx_insert_options = 0;
|
||||||
|
}
|
||||||
|
if (dp->dccps_hc_tx_insert_options) {
|
||||||
|
ccid_hc_tx_insert_options(dp->dccps_hc_tx_ccid, sk, skb);
|
||||||
|
dp->dccps_hc_tx_insert_options = 0;
|
||||||
|
}
|
||||||
|
|
||||||
/* XXX: insert other options when appropriate */
|
/* XXX: insert other options when appropriate */
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче