tree 68b797a2f2c8645a86ac1a5f521df6b8873d9338
parent 0ba7a3ba6608de6e0c0bfe3009a63d7e0b7ab0ce
author Arnaldo Carvalho de Melo <[EMAIL PROTECTED]> Fri, 09 Sep 2005 08:30:07 
-0300
committer Arnaldo Carvalho de Melo <[EMAIL PROTECTED]> Fri, 09 Sep 2005 
08:30:07 -0300

[CCID] Only call the HC insert_options methods when requested

Signed-off-by: Arnaldo Carvalho de Melo <[EMAIL PROTECTED]>

 include/linux/dccp.h   |    2 ++
 net/dccp/ccids/ccid3.c |    5 ++++-
 net/dccp/options.c     |   11 ++++++++---
 3 files changed, 14 insertions(+), 4 deletions(-)

diff --git a/include/linux/dccp.h b/include/linux/dccp.h
--- a/include/linux/dccp.h
+++ b/include/linux/dccp.h
@@ -433,6 +433,8 @@ struct dccp_sock {
        struct ccid                     *dccps_hc_tx_ccid;
        struct dccp_options_received    dccps_options_received;
        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)
diff --git a/net/dccp/ccids/ccid3.c b/net/dccp/ccids/ccid3.c
--- a/net/dccp/ccids/ccid3.c
+++ b/net/dccp/ccids/ccid3.c
@@ -358,10 +358,12 @@ static int ccid3_hc_tx_send_packet(struc
        }
 
        /* 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 =
                        DCCP_SKB_CB(skb)->dccpd_ccval =
                                hctx->ccid3hctx_last_win_count;
+       }
 out:
        return rc;
 }
@@ -811,6 +813,7 @@ static void ccid3_hc_rx_send_feedback(st
                hcrx->ccid3hcrx_pinv = ~0;
        else
                hcrx->ccid3hcrx_pinv = 1000000 / hcrx->ccid3hcrx_p;
+       dp->dccps_hc_rx_insert_options = 1;
        dccp_send_ack(sk);
 }
 
diff --git a/net/dccp/options.c b/net/dccp/options.c
--- a/net/dccp/options.c
+++ b/net/dccp/options.c
@@ -505,13 +505,18 @@ void dccp_insert_options(struct sock *sk
                    (dp->dccps_hc_rx_ackpkts->dccpap_buf_ackno !=
                     DCCP_MAX_SEQNO + 1))
                        dccp_insert_option_ack_vector(sk, skb);
-
                if (dp->dccps_timestamp_echo != 0)
                        dccp_insert_option_timestamp_echo(sk, skb);
        }
 
-       ccid_hc_rx_insert_options(dp->dccps_hc_rx_ccid, sk, skb);
-       ccid_hc_tx_insert_options(dp->dccps_hc_tx_ccid, sk, skb);
+       if (dp->dccps_hc_rx_insert_options) {
+               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 */
 
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to