diff options
Diffstat (limited to 'net')
| -rw-r--r-- | net/dccp/ccids/ccid3.c | 5 | ||||
| -rw-r--r-- | net/dccp/options.c | 11 |
2 files changed, 12 insertions, 4 deletions
diff --git a/net/dccp/ccids/ccid3.c b/net/dccp/ccids/ccid3.c index ae0500c79d07..37fd9eb8daaf 100644 --- a/net/dccp/ccids/ccid3.c +++ b/net/dccp/ccids/ccid3.c | |||
| @@ -358,10 +358,12 @@ static int ccid3_hc_tx_send_packet(struct sock *sk, | |||
| 358 | } | 358 | } |
| 359 | 359 | ||
| 360 | /* Can we send? if so add options and add to packet history */ | 360 | /* Can we send? if so add options and add to packet history */ |
| 361 | if (rc == 0) | 361 | if (rc == 0) { |
| 362 | dp->dccps_hc_tx_insert_options = 1; | ||
| 362 | new_packet->dccphtx_ccval = | 363 | new_packet->dccphtx_ccval = |
| 363 | DCCP_SKB_CB(skb)->dccpd_ccval = | 364 | DCCP_SKB_CB(skb)->dccpd_ccval = |
| 364 | hctx->ccid3hctx_last_win_count; | 365 | hctx->ccid3hctx_last_win_count; |
| 366 | } | ||
| 365 | out: | 367 | out: |
| 366 | return rc; | 368 | return rc; |
| 367 | } | 369 | } |
| @@ -811,6 +813,7 @@ static void ccid3_hc_rx_send_feedback(struct sock *sk) | |||
| 811 | hcrx->ccid3hcrx_pinv = ~0; | 813 | hcrx->ccid3hcrx_pinv = ~0; |
| 812 | else | 814 | else |
| 813 | hcrx->ccid3hcrx_pinv = 1000000 / hcrx->ccid3hcrx_p; | 815 | hcrx->ccid3hcrx_pinv = 1000000 / hcrx->ccid3hcrx_p; |
| 816 | dp->dccps_hc_rx_insert_options = 1; | ||
| 814 | dccp_send_ack(sk); | 817 | dccp_send_ack(sk); |
| 815 | } | 818 | } |
| 816 | 819 | ||
diff --git a/net/dccp/options.c b/net/dccp/options.c index 382c5894acb2..7ad2f4266ff9 100644 --- a/net/dccp/options.c +++ b/net/dccp/options.c | |||
| @@ -505,13 +505,18 @@ void dccp_insert_options(struct sock *sk, struct sk_buff *skb) | |||
| 505 | (dp->dccps_hc_rx_ackpkts->dccpap_buf_ackno != | 505 | (dp->dccps_hc_rx_ackpkts->dccpap_buf_ackno != |
| 506 | DCCP_MAX_SEQNO + 1)) | 506 | DCCP_MAX_SEQNO + 1)) |
| 507 | dccp_insert_option_ack_vector(sk, skb); | 507 | dccp_insert_option_ack_vector(sk, skb); |
| 508 | |||
| 509 | if (dp->dccps_timestamp_echo != 0) | 508 | if (dp->dccps_timestamp_echo != 0) |
| 510 | dccp_insert_option_timestamp_echo(sk, skb); | 509 | dccp_insert_option_timestamp_echo(sk, skb); |
| 511 | } | 510 | } |
| 512 | 511 | ||
| 513 | ccid_hc_rx_insert_options(dp->dccps_hc_rx_ccid, sk, skb); | 512 | if (dp->dccps_hc_rx_insert_options) { |
| 514 | ccid_hc_tx_insert_options(dp->dccps_hc_tx_ccid, sk, skb); | 513 | ccid_hc_rx_insert_options(dp->dccps_hc_rx_ccid, sk, skb); |
| 514 | dp->dccps_hc_rx_insert_options = 0; | ||
| 515 | } | ||
| 516 | if (dp->dccps_hc_tx_insert_options) { | ||
| 517 | ccid_hc_tx_insert_options(dp->dccps_hc_tx_ccid, sk, skb); | ||
| 518 | dp->dccps_hc_tx_insert_options = 0; | ||
| 519 | } | ||
| 515 | 520 | ||
| 516 | /* XXX: insert other options when appropriate */ | 521 | /* XXX: insert other options when appropriate */ |
| 517 | 522 | ||
