Thread (7 messages) flat view 7 messages, 3 authors, 2008-03-03

Re: [DCCP] [RFC]: Getting rid of unwieldy struct prefixes

From: Leandro Sales <hidden>
Date: 2008-03-03 18:01:44

On Fri, Feb 29, 2008 at 6:45 AM, Gerrit Renker [off-list ref] wrote:
[CCID-2]: Get rid of ccid2hc{tx,rx}_ prefixes

 Following discussion with Leandro yesterday, this is a  request-for-comments
 patch to fix two problems caused by the ubiquitous long "hctx->ccid2htx_" and
 "hcrx->ccid2hcrx_" prefixes:
  -> code becomes hard to read;
  -> multiple-line statements are almost inevitable even for simple expressions;
  -> the prefixes are not really necessary - compare with "struct tcp_sock".

 There had been previous discussion of this on dccp@vger, but this was not
 followed up (most people agreed that the prefixes are too long).

 If this format is acceptable, I will put it into the tree. Suggestions are
 welcome and asked for since the same problem crops up in two other CCIDs; i.e.
 this change needs to be done consistently to keep the interface clear.

 Signed-off-by: Gerrit Renker [off-list ref]
 ---
  net/dccp/ccids/ccid2.c |  283 ++++++++++++++++++++++++-------------------------
  net/dccp/ccids/ccid2.h |   66 +++++------
  2 files changed, 175 insertions(+), 174 deletions(-)

 --- a/net/dccp/ccids/ccid2.h
 +++ b/net/dccp/ccids/ccid2.h
 @@ -40,49 +40,49 @@ struct ccid2_seq {

  /** struct ccid2_hc_tx_sock - CCID2 TX half connection
  *
 - * @ccid2hctx_{cwnd,ssthresh,pipe}: as per RFC 4341, section 5
 - * @ccid2hctx_packets_acked: Ack counter for deriving cwnd growth (RFC 3465)
 - * @ccid2hctx_srtt: smoothed RTT estimate, scaled by 2^3
 - * @ccid2hctx_mdev: smoothed RTT variation, scaled by 2^2
 - * @ccid2hctx_mdev_max: maximum of @mdev during one flight
 - * @ccid2hctx_rttvar: moving average/maximum of @mdev_max
 - * @ccid2hctx_rto: RTO value deriving from SRTT and RTTVAR (RFC 2988)
 - * @ccid2hctx_rtt_seq: to decay RTTVAR at most once per flight
 - * @ccid2hctx_rpseq - last consecutive seqno
 - * @ccid2hctx_rpdupack - dupacks since rpseq
 - * @ccid2hctx_av_chunks: list of Ack Vectors received on current skb
 + * @{cwnd,ssthresh,pipe}: as per RFC 4341, section 5
 + * @packets_acked: Ack counter for deriving cwnd growth (RFC 3465)
 + * @srtt: smoothed RTT estimate, scaled by 2^3
 + * @mdev: smoothed RTT variation, scaled by 2^2
 + * @mdev_max: maximum of @mdev during one flight
 + * @rttvar: moving average/maximum of @mdev_max
 + * @rto: RTO value deriving from SRTT and RTTVAR (RFC 2988)
 + * @rtt_seq: to decay RTTVAR at most once per flight
 + * @rpseq - last consecutive seqno
 + * @rpdupack - dupacks since rpseq
 + * @av_chunks: list of Ack Vectors received on current skb
  */
  struct ccid2_hc_tx_sock {
 -       u32                     ccid2hctx_cwnd;
 -       u32                     ccid2hctx_ssthresh;
 -       u32                     ccid2hctx_pipe;
 -       u32                     ccid2hctx_packets_acked;
 -       struct ccid2_seq        *ccid2hctx_seqbuf[CCID2_SEQBUF_MAX];
 -       int                     ccid2hctx_seqbufc;
 -       struct ccid2_seq        *ccid2hctx_seqh;
 -       struct ccid2_seq        *ccid2hctx_seqt;
 +       u32                     cwnd;
 +       u32                     ssthresh;
 +       u32                     pipe;
 +       u32                     packets_acked;
 +       struct ccid2_seq        *seqbuf[CCID2_SEQBUF_MAX];
 +       int                     seqbufc;
 +       struct ccid2_seq        *seqh;
 +       struct ccid2_seq        *seqt;
        /* RTT measurement: variables/principles are the same as in TCP */
 -       u32                     ccid2hctx_srtt,
 -                               ccid2hctx_mdev,
 -                               ccid2hctx_mdev_max,
 -                               ccid2hctx_rttvar,
 -                               ccid2hctx_rto;
 -       u64                     ccid2hctx_rtt_seq:48;
 -       struct timer_list       ccid2hctx_rtotimer;
 -       u64                     ccid2hctx_rpseq;
 -       int                     ccid2hctx_rpdupack;
 -       unsigned long           ccid2hctx_last_cong;
 -       u64                     ccid2hctx_high_ack;
 -       struct list_head        ccid2hctx_av_chunks;
 +       u32                     srtt,
 +                               mdev,
 +                               mdev_max,
 +                               rttvar,
 +                               rto;
 +       u64                     rtt_seq:48;
 +       struct timer_list       rtotimer;
 +       u64                     rpseq;
 +       int                     rpdupack;
 +       unsigned long           last_cong;
 +       u64                     high_ack;
 +       struct list_head        av_chunks;
  };

  static inline bool ccid2_cwnd_network_limited(struct ccid2_hc_tx_sock *hctx)
  {
 -       return (hctx->ccid2hctx_pipe >= hctx->ccid2hctx_cwnd);
 +       return (hctx->pipe >= hctx->cwnd);
  }

  struct ccid2_hc_rx_sock {
 -       int     ccid2hcrx_data;
 +       int     data;
  };

  static inline struct ccid2_hc_tx_sock *ccid2_hc_tx_sk(const struct sock *sk)
 --- a/net/dccp/ccids/ccid2.c
 +++ b/net/dccp/ccids/ccid2.c
 @@ -42,7 +42,7 @@ static int ccid2_hc_tx_alloc_seq(struct
        int i;

        /* check if we have space to preserve the pointer to the buffer */
 -       if (hctx->ccid2hctx_seqbufc >= (sizeof(hctx->ccid2hctx_seqbuf) /
 +       if (hctx->seqbufc >= (sizeof(hctx->seqbuf) /
                                        sizeof(struct ccid2_seq*)))
                return -ENOMEM;

 @@ -59,20 +59,20 @@ static int ccid2_hc_tx_alloc_seq(struct
        seqp->ccid2s_prev = &seqp[CCID2_SEQBUF_LEN - 1];

        /* This is the first allocation.  Initiate the head and tail.  */
 -       if (hctx->ccid2hctx_seqbufc == 0)
 -               hctx->ccid2hctx_seqh = hctx->ccid2hctx_seqt = seqp;
 +       if (hctx->seqbufc == 0)
 +               hctx->seqh = hctx->seqt = seqp;
        else {
                /* link the existing list with the one we just created */
 -               hctx->ccid2hctx_seqh->ccid2s_next = seqp;
 -               seqp->ccid2s_prev = hctx->ccid2hctx_seqh;
 +               hctx->seqh->ccid2s_next = seqp;
 +               seqp->ccid2s_prev = hctx->seqh;

 -               hctx->ccid2hctx_seqt->ccid2s_prev = &seqp[CCID2_SEQBUF_LEN - 1];
 -               seqp[CCID2_SEQBUF_LEN - 1].ccid2s_next = hctx->ccid2hctx_seqt;
 +               hctx->seqt->ccid2s_prev = &seqp[CCID2_SEQBUF_LEN - 1];
 +               seqp[CCID2_SEQBUF_LEN - 1].ccid2s_next = hctx->seqt;
        }

        /* store the original pointer to the buffer so we can free it */
 -       hctx->ccid2hctx_seqbuf[hctx->ccid2hctx_seqbufc] = seqp;
 -       hctx->ccid2hctx_seqbufc++;
 +       hctx->seqbuf[hctx->seqbufc] = seqp;
 +       hctx->seqbufc++;

        return 0;
  }
 @@ -87,7 +87,7 @@ static int ccid2_hc_tx_send_packet(struc
  static void ccid2_change_l_ack_ratio(struct sock *sk, u32 val)
  {
        struct dccp_sock *dp = dccp_sk(sk);
 -       u32 max_ratio = DIV_ROUND_UP(ccid2_hc_tx_sk(sk)->ccid2hctx_cwnd, 2);
 +       u32 max_ratio = DIV_ROUND_UP(ccid2_hc_tx_sk(sk)->cwnd, 2);

        /*
         * Ensure that Ack Ratio does not exceed ceil(cwnd/2), which is (2) from
 @@ -117,7 +117,7 @@ static void ccid2_hc_tx_rto_expire(unsig

        bh_lock_sock(sk);
        if (sock_owned_by_user(sk)) {
 -               sk_reset_timer(sk, &hctx->ccid2hctx_rtotimer,
 +               sk_reset_timer(sk, &hctx->rtotimer,
                               jiffies + HZ / 5);
                goto out;
        }
 @@ -125,32 +125,32 @@ static void ccid2_hc_tx_rto_expire(unsig
        ccid2_pr_debug("RTO_EXPIRE\n");

        /* back-off timer */
 -       hctx->ccid2hctx_rto <<= 1;
 -       if (hctx->ccid2hctx_rto > DCCP_RTO_MAX)
 -               hctx->ccid2hctx_rto = DCCP_RTO_MAX;
 +       hctx->rto <<= 1;
 +       if (hctx->rto > DCCP_RTO_MAX)
 +               hctx->rto = DCCP_RTO_MAX;

        /* adjust pipe, cwnd etc */
 -       hctx->ccid2hctx_ssthresh = hctx->ccid2hctx_cwnd / 2;
 -       if (hctx->ccid2hctx_ssthresh < 2)
 -               hctx->ccid2hctx_ssthresh = 2;
 -       hctx->ccid2hctx_cwnd     = 1;
 -       hctx->ccid2hctx_pipe     = 0;
 +       hctx->ssthresh = hctx->cwnd / 2;
 +       if (hctx->ssthresh < 2)
 +               hctx->ssthresh = 2;
 +       hctx->cwnd = 1;
 +       hctx->pipe = 0;

        /* clear state about stuff we sent */
 -       hctx->ccid2hctx_seqt = hctx->ccid2hctx_seqh;
 -       hctx->ccid2hctx_packets_acked = 0;
 +       hctx->seqt = hctx->seqh;
 +       hctx->packets_acked = 0;

        /* clear ack ratio state. */
 -       hctx->ccid2hctx_rpseq    = 0;
 -       hctx->ccid2hctx_rpdupack = -1;
 +       hctx->rpseq    = 0;
 +       hctx->rpdupack = -1;
        ccid2_change_l_ack_ratio(sk, 1);

        /* if we were blocked before, we may now send cwnd=1 packet */
        if (sender_was_blocked)
                tasklet_schedule(&dccp_sk(sk)->dccps_xmitlet);
        /* restart backed-off timer */
 -       sk_reset_timer(sk, &hctx->ccid2hctx_rtotimer,
 -                      jiffies + hctx->ccid2hctx_rto);
 +       sk_reset_timer(sk, &hctx->rtotimer,
 +                      jiffies + hctx->rto);
  out:
        bh_unlock_sock(sk);
        sock_put(sk);
 @@ -162,27 +162,27 @@ static void ccid2_hc_tx_packet_sent(stru
        struct ccid2_hc_tx_sock *hctx = ccid2_hc_tx_sk(sk);
        struct ccid2_seq *next;

 -       hctx->ccid2hctx_pipe++;
 +       hctx->pipe++;

 -       hctx->ccid2hctx_seqh->ccid2s_seq   = dp->dccps_gss;
 -       hctx->ccid2hctx_seqh->ccid2s_acked = 0;
 -       hctx->ccid2hctx_seqh->ccid2s_sent  = jiffies;
 +       hctx->seqh->ccid2s_seq   = dp->dccps_gss;
 +       hctx->seqh->ccid2s_acked = 0;
 +       hctx->seqh->ccid2s_sent  = jiffies;

 -       next = hctx->ccid2hctx_seqh->ccid2s_next;
 +       next = hctx->seqh->ccid2s_next;
        /* check if we need to alloc more space */
 -       if (next == hctx->ccid2hctx_seqt) {
 +       if (next == hctx->seqt) {
                if (ccid2_hc_tx_alloc_seq(hctx)) {
                        DCCP_CRIT("packet history - out of memory!");
                        /* FIXME: find a more graceful way to bail out */
                        return;
                }
 -               next = hctx->ccid2hctx_seqh->ccid2s_next;
 -               BUG_ON(next == hctx->ccid2hctx_seqt);
 +               next = hctx->seqh->ccid2s_next;
 +               BUG_ON(next == hctx->seqt);
        }
 -       hctx->ccid2hctx_seqh = next;
 +       hctx->seqh = next;

 -       ccid2_pr_debug("cwnd=%d pipe=%d\n", hctx->ccid2hctx_cwnd,
 -                      hctx->ccid2hctx_pipe);
 +       ccid2_pr_debug("cwnd=%d pipe=%d\n", hctx->cwnd,
 +                      hctx->pipe);

        /*
         * FIXME: The code below is broken and the variables have been removed
 @@ -205,12 +205,12 @@ static void ccid2_hc_tx_packet_sent(stru
         */
  #if 0
        /* Ack Ratio.  Need to maintain a concept of how many windows we sent */
 -       hctx->ccid2hctx_arsent++;
 +       hctx->arsent++;
        /* We had an ack loss in this window... */
 -       if (hctx->ccid2hctx_ackloss) {
 -               if (hctx->ccid2hctx_arsent >= hctx->ccid2hctx_cwnd) {
 -                       hctx->ccid2hctx_arsent  = 0;
 -                       hctx->ccid2hctx_ackloss = 0;
 +       if (hctx->ackloss) {
 +               if (hctx->arsent >= hctx->cwnd) {
 +                       hctx->arsent    = 0;
 +                       hctx->ackloss   = 0;
                }
        } else {
                /* No acks lost up to now... */
 @@ -220,29 +220,29 @@ static void ccid2_hc_tx_packet_sent(stru
                        int denom = dp->dccps_l_ack_ratio * dp->dccps_l_ack_ratio -
                                    dp->dccps_l_ack_ratio;

 -                       denom = hctx->ccid2hctx_cwnd * hctx->ccid2hctx_cwnd / denom;
 +                       denom = hctx->cwnd * hctx->cwnd / denom;

 -                       if (hctx->ccid2hctx_arsent >= denom) {
 +                       if (hctx->arsent >= denom) {
                                ccid2_change_l_ack_ratio(sk, dp->dccps_l_ack_ratio - 1);
 -                               hctx->ccid2hctx_arsent = 0;
 +                               hctx->arsent = 0;
                        }
                } else {
                        /* we can't increase ack ratio further [1] */
 -                       hctx->ccid2hctx_arsent = 0; /* or maybe set it to cwnd*/
 +                       hctx->arsent = 0; /* or maybe set it to cwnd*/
                }
        }
  #endif

        /* setup RTO timer */
 -       if (!timer_pending(&hctx->ccid2hctx_rtotimer))
 -               sk_reset_timer(sk, &hctx->ccid2hctx_rtotimer,
 -                              jiffies + hctx->ccid2hctx_rto);
 +       if (!timer_pending(&hctx->rtotimer))
 +               sk_reset_timer(sk, &hctx->rtotimer,
 +                              jiffies + hctx->rto);

  #ifdef CONFIG_IP_DCCP_CCID2_DEBUG
        do {
 -               struct ccid2_seq *seqp = hctx->ccid2hctx_seqt;
 +               struct ccid2_seq *seqp = hctx->seqt;

 -               while (seqp != hctx->ccid2hctx_seqh) {
 +               while (seqp != hctx->seqh) {
                        ccid2_pr_debug("out seq=%llu acked=%d time=%lu\n",
                                       (unsigned long long)seqp->ccid2s_seq,
                                       seqp->ccid2s_acked, seqp->ccid2s_sent);
 @@ -267,23 +267,23 @@ static void ccid2_rtt_estimator(struct s
        struct ccid2_hc_tx_sock *hctx = ccid2_hc_tx_sk(sk);
        long m = mrtt ? : 1;

 -       if (hctx->ccid2hctx_srtt == 0) {
 +       if (hctx->srtt == 0) {
                /* First measurement m */
 -               hctx->ccid2hctx_srtt = m << 3;
 -               hctx->ccid2hctx_mdev = m << 1;
 +               hctx->srtt = m << 3;
 +               hctx->mdev = m << 1;

 -               hctx->ccid2hctx_mdev_max = max(TCP_RTO_MIN, hctx->ccid2hctx_mdev);
 -               hctx->ccid2hctx_rttvar   = hctx->ccid2hctx_mdev_max;
 -               hctx->ccid2hctx_rtt_seq  = dccp_sk(sk)->dccps_gss;
 +               hctx->mdev_max = max(TCP_RTO_MIN, hctx->mdev);
 +               hctx->rttvar   = hctx->mdev_max;
 +               hctx->rtt_seq  = dccp_sk(sk)->dccps_gss;
        } else {
                /* Update scaled SRTT as SRTT += 1/8 * (m - SRTT) */
 -               m -= (hctx->ccid2hctx_srtt >> 3);
 -               hctx->ccid2hctx_srtt += m;
 +               m -= (hctx->srtt >> 3);
 +               hctx->srtt += m;

                /* Similarly, update scaled mdev with regard to |m| */
                if (m < 0) {
                        m = -m;
 -                       m -= (hctx->ccid2hctx_mdev >> 2);
 +                       m -= (hctx->mdev >> 2);
                        /*
                         * This neutralises RTO increase when RTT < SRTT - mdev
                         * (see P. Sarolahti and * A. Kuznetsov,
 @@ -293,14 +293,14 @@ static void ccid2_rtt_estimator(struct s
                        if (m > 0)
                                m >>= 3;
                } else {
 -                       m -= (hctx->ccid2hctx_mdev >> 2);
 +                       m -= (hctx->mdev >> 2);
                }
 -               hctx->ccid2hctx_mdev += m;
 +               hctx->mdev += m;

 -               if (hctx->ccid2hctx_mdev > hctx->ccid2hctx_mdev_max) {
 -                       hctx->ccid2hctx_mdev_max = hctx->ccid2hctx_mdev;
 -                       if (hctx->ccid2hctx_mdev_max > hctx->ccid2hctx_rttvar)
 -                               hctx->ccid2hctx_rttvar = hctx->ccid2hctx_mdev_max;
 +               if (hctx->mdev > hctx->mdev_max) {
 +                       hctx->mdev_max = hctx->mdev;
 +                       if (hctx->mdev_max > hctx->rttvar)
 +                               hctx->rttvar = hctx->mdev_max;
                }

                /*
 @@ -310,11 +310,12 @@ static void ccid2_rtt_estimator(struct s
                 * GAR is a useful bound for FlightSize = pipe, AWL is probably
                 * too low as it over-estimates pipe.
                 */
 -               if (after48(dccp_sk(sk)->dccps_gar, hctx->ccid2hctx_rtt_seq)) {
 -                       if (hctx->ccid2hctx_mdev_max < hctx->ccid2hctx_rttvar)
 -                               hctx->ccid2hctx_rttvar -= (hctx->ccid2hctx_rttvar - hctx->ccid2hctx_mdev_max) >> 2;
 -                       hctx->ccid2hctx_rtt_seq  = dccp_sk(sk)->dccps_gss;
 -                       hctx->ccid2hctx_mdev_max = TCP_RTO_MIN;
 +               if (after48(dccp_sk(sk)->dccps_gar, hctx->rtt_seq)) {
 +                       if (hctx->mdev_max < hctx->rttvar)
 +                               hctx->rttvar -= (hctx->rttvar -
 +                                                hctx->mdev_max) >> 2;
 +                       hctx->rtt_seq  = dccp_sk(sk)->dccps_gss;
 +                       hctx->mdev_max = TCP_RTO_MIN;
                }
        }

 @@ -326,10 +327,10 @@ static void ccid2_rtt_estimator(struct s
         * does not retransmit data, DCCP does not require TCP's recommended
         * minimum timeout of one second".
         */
 -       hctx->ccid2hctx_rto = (hctx->ccid2hctx_srtt >> 3) + hctx->ccid2hctx_rttvar;
 +       hctx->rto = (hctx->srtt >> 3) + hctx->rttvar;

 -       if (hctx->ccid2hctx_rto > DCCP_RTO_MAX)
 -               hctx->ccid2hctx_rto = DCCP_RTO_MAX;
 +       if (hctx->rto > DCCP_RTO_MAX)
 +               hctx->rto = DCCP_RTO_MAX;
  }

  static void ccid2_new_ack(struct sock *sk, struct ccid2_seq *seqp,
 @@ -337,15 +338,15 @@ static void ccid2_new_ack(struct sock *s
  {
        struct ccid2_hc_tx_sock *hctx = ccid2_hc_tx_sk(sk);

 -       if (hctx->ccid2hctx_cwnd < hctx->ccid2hctx_ssthresh) {
 -               if (*maxincr > 0 && ++hctx->ccid2hctx_packets_acked == 2) {
 -                       hctx->ccid2hctx_cwnd += 1;
 -                       *maxincr             -= 1;
 -                       hctx->ccid2hctx_packets_acked = 0;
 -               }
 -       } else if (++hctx->ccid2hctx_packets_acked >= hctx->ccid2hctx_cwnd) {
 -                       hctx->ccid2hctx_cwnd += 1;
 -                       hctx->ccid2hctx_packets_acked = 0;
 +       if (hctx->cwnd < hctx->ssthresh) {
 +               if (*maxincr > 0 && ++hctx->packets_acked == 2) {
 +                       hctx->cwnd += 1;
 +                       *maxincr   -= 1;
 +                       hctx->packets_acked = 0;
 +               }
 +       } else if (++hctx->packets_acked >= hctx->cwnd) {
 +                       hctx->cwnd += 1;
 +                       hctx->packets_acked = 0;
        }
        /*
         * FIXME: RTT is sampled several times per acknowledgment (for each
 @@ -362,19 +363,19 @@ static void ccid2_congestion_event(struc
  {
        struct ccid2_hc_tx_sock *hctx = ccid2_hc_tx_sk(sk);

 -       if (time_before(seqp->ccid2s_sent, hctx->ccid2hctx_last_cong)) {
 +       if (time_before(seqp->ccid2s_sent, hctx->last_cong)) {
                ccid2_pr_debug("Multiple losses in an RTT---treating as one\n");
                return;
        }

 -       hctx->ccid2hctx_last_cong = jiffies;
 +       hctx->last_cong = jiffies;

 -       hctx->ccid2hctx_cwnd     = hctx->ccid2hctx_cwnd / 2 ? : 1U;
 -       hctx->ccid2hctx_ssthresh = max(hctx->ccid2hctx_cwnd, 2U);
 +       hctx->cwnd     = hctx->cwnd / 2 ? : 1U;
 +       hctx->ssthresh = max(hctx->cwnd, 2U);

        /* Avoid spurious timeouts resulting from Ack Ratio > cwnd */
 -       if (dccp_sk(sk)->dccps_l_ack_ratio > hctx->ccid2hctx_cwnd)
 -               ccid2_change_l_ack_ratio(sk, hctx->ccid2hctx_cwnd);
 +       if (dccp_sk(sk)->dccps_l_ack_ratio > hctx->cwnd)
 +               ccid2_change_l_ack_ratio(sk, hctx->cwnd);
  }

  static int ccid2_hc_tx_parse_options(struct sock *sk, unsigned char option,
 @@ -386,7 +387,7 @@ static int ccid2_hc_tx_parse_options(str
        switch (option) {
        case DCCPO_ACK_VECTOR_0:
        case DCCPO_ACK_VECTOR_1:
 -               return dccp_ackvec_parsed_add(&hctx->ccid2hctx_av_chunks, value,
 +               return dccp_ackvec_parsed_add(&hctx->av_chunks, value,
                                              len, option - DCCPO_ACK_VECTOR_0);
        }
        return 0;
 @@ -411,21 +412,21 @@ static void ccid2_hc_tx_packet_recv(stru
         * -sorbo.
         */
        /* need to bootstrap */
 -       if (hctx->ccid2hctx_rpdupack == -1) {
 -               hctx->ccid2hctx_rpdupack = 0;
 -               hctx->ccid2hctx_rpseq = seqno;
 +       if (hctx->rpdupack == -1) {
 +               hctx->rpdupack = 0;
 +               hctx->rpseq = seqno;
        } else {
                /* check if packet is consecutive */
 -               if (dccp_delta_seqno(hctx->ccid2hctx_rpseq, seqno) == 1)
 -                       hctx->ccid2hctx_rpseq = seqno;
 +               if (dccp_delta_seqno(hctx->rpseq, seqno) == 1)
 +                       hctx->rpseq = seqno;
                /* it's a later packet */
 -               else if (after48(seqno, hctx->ccid2hctx_rpseq)) {
 -                       hctx->ccid2hctx_rpdupack++;
 +               else if (after48(seqno, hctx->rpseq)) {
 +                       hctx->rpdupack++;

                        /* check if we got enough dupacks */
 -                       if (hctx->ccid2hctx_rpdupack >= NUMDUPACK) {
 -                               hctx->ccid2hctx_rpdupack = -1; /* XXX lame */
 -                               hctx->ccid2hctx_rpseq = 0;
 +                       if (hctx->rpdupack >= NUMDUPACK) {
 +                               hctx->rpdupack = -1; /* XXX lame */
 +                               hctx->rpseq = 0;

                                ccid2_change_l_ack_ratio(sk, 2 * dp->dccps_l_ack_ratio);
                        }
 @@ -437,18 +438,18 @@ static void ccid2_hc_tx_packet_recv(stru
                return;

        /* still didn't send out new data packets */
 -       if (hctx->ccid2hctx_seqh == hctx->ccid2hctx_seqt)
 +       if (hctx->seqh == hctx->seqt)
                goto done;

        ackno = DCCP_SKB_CB(skb)->dccpd_ack_seq;
 -       if (after48(ackno, hctx->ccid2hctx_high_ack))
 -               hctx->ccid2hctx_high_ack = ackno;
 +       if (after48(ackno, hctx->high_ack))
 +               hctx->high_ack = ackno;

 -       seqp = hctx->ccid2hctx_seqt;
 +       seqp = hctx->seqt;
        while (before48(seqp->ccid2s_seq, ackno)) {
                seqp = seqp->ccid2s_next;
 -               if (seqp == hctx->ccid2hctx_seqh) {
 -                       seqp = hctx->ccid2hctx_seqh->ccid2s_prev;
 +               if (seqp == hctx->seqh) {
 +                       seqp = hctx->seqh->ccid2s_prev;
                        break;
                }
        }
 @@ -458,11 +459,11 @@ static void ccid2_hc_tx_packet_recv(stru
         * packets per acknowledgement. Rounding up avoids that cwnd is not
         * advanced when Ack Ratio is 1 and gives a slight edge otherwise.
         */
 -       if (hctx->ccid2hctx_cwnd < hctx->ccid2hctx_ssthresh)
 +       if (hctx->cwnd < hctx->ssthresh)
                maxincr = DIV_ROUND_UP(dp->dccps_l_ack_ratio, 2);

        /* go through all ack vectors */
 -       list_for_each_entry(avp, &hctx->ccid2hctx_av_chunks, node) {
 +       list_for_each_entry(avp, &hctx->av_chunks, node) {
                /* go through this ack vector */
                for (; avp->len--; avp->vec++) {
                        u64 ackno_end_rl = SUB48(ackno,
 @@ -477,7 +478,7 @@ static void ccid2_hc_tx_packet_recv(stru
                         * seqnos.
                         */
                        while (after48(seqp->ccid2s_seq, ackno)) {
 -                               if (seqp == hctx->ccid2hctx_seqt) {
 +                               if (seqp == hctx->seqt) {
                                        done = 1;
                                        break;
                                }
 @@ -505,9 +506,9 @@ static void ccid2_hc_tx_packet_recv(stru
                                        seqp->ccid2s_acked = 1;
                                        ccid2_pr_debug("Got ack for %llu\n",
                                                       (unsigned long long)seqp->ccid2s_seq);
 -                                       hctx->ccid2hctx_pipe--;
 +                                       hctx->pipe--;
                                }
 -                               if (seqp == hctx->ccid2hctx_seqt) {
 +                               if (seqp == hctx->seqt) {
                                        done = 1;
                                        break;
                                }
 @@ -525,11 +526,11 @@ static void ccid2_hc_tx_packet_recv(stru
        /* The state about what is acked should be correct now
         * Check for NUMDUPACK
         */
 -       seqp = hctx->ccid2hctx_seqt;
 -       while (before48(seqp->ccid2s_seq, hctx->ccid2hctx_high_ack)) {
 +       seqp = hctx->seqt;
 +       while (before48(seqp->ccid2s_seq, hctx->high_ack)) {
                seqp = seqp->ccid2s_next;
 -               if (seqp == hctx->ccid2hctx_seqh) {
 -                       seqp = hctx->ccid2hctx_seqh->ccid2s_prev;
 +               if (seqp == hctx->seqh) {
 +                       seqp = hctx->seqh->ccid2s_prev;
                        break;
                }
        }
 @@ -540,7 +541,7 @@ static void ccid2_hc_tx_packet_recv(stru
                        if (done == NUMDUPACK)
                                break;
                }
 -               if (seqp == hctx->ccid2hctx_seqt)
 +               if (seqp == hctx->seqt)
                        break;
                seqp = seqp->ccid2s_prev;
        }
 @@ -561,35 +562,35 @@ static void ccid2_hc_tx_packet_recv(stru
                                 * one ack vector.
                                 */
                                ccid2_congestion_event(sk, seqp);
 -                               hctx->ccid2hctx_pipe--;
 +                               hctx->pipe--;
                        }
 -                       if (seqp == hctx->ccid2hctx_seqt)
 +                       if (seqp == hctx->seqt)
                                break;
                        seqp = seqp->ccid2s_prev;
                }

 -               hctx->ccid2hctx_seqt = last_acked;
 +               hctx->seqt = last_acked;
        }

        /* trim acked packets in tail */
 -       while (hctx->ccid2hctx_seqt != hctx->ccid2hctx_seqh) {
 -               if (!hctx->ccid2hctx_seqt->ccid2s_acked)
 +       while (hctx->seqt != hctx->seqh) {
 +               if (!hctx->seqt->ccid2s_acked)
                        break;

 -               hctx->ccid2hctx_seqt = hctx->ccid2hctx_seqt->ccid2s_next;
 +               hctx->seqt = hctx->seqt->ccid2s_next;
        }

        /* restart RTO timer if not all outstanding data has been acked */
 -       if (hctx->ccid2hctx_pipe == 0)
 -               sk_stop_timer(sk, &hctx->ccid2hctx_rtotimer);
 +       if (hctx->pipe == 0)
 +               sk_stop_timer(sk, &hctx->rtotimer);
        else
 -               sk_reset_timer(sk, &hctx->ccid2hctx_rtotimer,
 -                              jiffies + hctx->ccid2hctx_rto);
 +               sk_reset_timer(sk, &hctx->rtotimer,
 +                              jiffies + hctx->rto);
  done:
        /* check if incoming Acks allow pending packets to be sent */
        if (sender_was_blocked && !ccid2_cwnd_network_limited(hctx))
                tasklet_schedule(&dccp_sk(sk)->dccps_xmitlet);
 -       dccp_ackvec_parsed_cleanup(&hctx->ccid2hctx_av_chunks);
 +       dccp_ackvec_parsed_cleanup(&hctx->av_chunks);
  }

  static int ccid2_hc_tx_init(struct ccid *ccid, struct sock *sk)
 @@ -599,17 +600,17 @@ static int ccid2_hc_tx_init(struct ccid
        u32 max_ratio;

        /* RFC 4341, 5: initialise ssthresh to arbitrarily high (max) value */
 -       hctx->ccid2hctx_ssthresh  = ~0U;
 +       hctx->ssthresh  = ~0U;

        /*
         * RFC 4341, 5: "The cwnd parameter is initialized to at most four
         * packets for new connections, following the rules from [RFC3390]".
         * We need to convert the bytes of RFC3390 into the packets of RFC 4341.
         */
 -       hctx->ccid2hctx_cwnd = min(4U, max(2U, 4380U / dp->dccps_mss_cache));
 +       hctx->cwnd = min(4U, max(2U, 4380U / dp->dccps_mss_cache));

        /* Make sure that Ack Ratio is enabled and within bounds. */
 -       max_ratio = DIV_ROUND_UP(hctx->ccid2hctx_cwnd, 2);
 +       max_ratio = DIV_ROUND_UP(hctx->cwnd, 2);
        if (dp->dccps_l_ack_ratio == 0 || dp->dccps_l_ack_ratio > max_ratio)
                dp->dccps_l_ack_ratio = max_ratio;

 @@ -617,12 +618,12 @@ static int ccid2_hc_tx_init(struct ccid
        if (ccid2_hc_tx_alloc_seq(hctx))
                return -ENOMEM;

 -       hctx->ccid2hctx_rto      = DCCP_TIMEOUT_INIT;
 -       hctx->ccid2hctx_rpdupack = -1;
 -       hctx->ccid2hctx_last_cong = jiffies;
 -       setup_timer(&hctx->ccid2hctx_rtotimer, ccid2_hc_tx_rto_expire,
 +       hctx->rto       = DCCP_TIMEOUT_INIT;
 +       hctx->rpdupack  = -1;
 +       hctx->last_cong = jiffies;
 +       setup_timer(&hctx->rtotimer, ccid2_hc_tx_rto_expire,
                        (unsigned long)sk);
 -       INIT_LIST_HEAD(&hctx->ccid2hctx_av_chunks);
 +       INIT_LIST_HEAD(&hctx->av_chunks);
        return 0;
  }

 @@ -631,11 +632,11 @@ static void ccid2_hc_tx_exit(struct sock
        struct ccid2_hc_tx_sock *hctx = ccid2_hc_tx_sk(sk);
        int i;

 -       sk_stop_timer(sk, &hctx->ccid2hctx_rtotimer);
 +       sk_stop_timer(sk, &hctx->rtotimer);

 -       for (i = 0; i < hctx->ccid2hctx_seqbufc; i++)
 -               kfree(hctx->ccid2hctx_seqbuf[i]);
 -       hctx->ccid2hctx_seqbufc = 0;
 +       for (i = 0; i < hctx->seqbufc; i++)
 +               kfree(hctx->seqbuf[i]);
 +       hctx->seqbufc = 0;
  }

  static void ccid2_hc_rx_packet_recv(struct sock *sk, struct sk_buff *skb)
 @@ -646,10 +647,10 @@ static void ccid2_hc_rx_packet_recv(stru
        switch (DCCP_SKB_CB(skb)->dccpd_type) {
        case DCCP_PKT_DATA:
        case DCCP_PKT_DATAACK:
 -               hcrx->ccid2hcrx_data++;
 -               if (hcrx->ccid2hcrx_data >= dp->dccps_r_ack_ratio) {
 +               hcrx->data++;
 +               if (hcrx->data >= dp->dccps_r_ack_ratio) {
                        dccp_send_ack(sk);
 -                       hcrx->ccid2hcrx_data = 0;
 +                       hcrx->data = 0;
                }
                break;
        }
 --
 --
 To unsubscribe from this list: send the line "unsubscribe dccp" in
 the body of a message to majordomo@vger.kernel.org
 More majordomo info at  http://vger.kernel.org/majordomo-info.html
Acked-off-by: Leandro Melo de Sales [off-list ref]
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help