ccid2.c (69dbdd819599e2f3b77c172e83af512845bca5ad) ccid2.c (f17a37c9b8c4b32c01e501a84fa6f30e344c6110)
1/*
2 * Copyright (c) 2005, 2006 Andrea Bittau <a.bittau@cs.ucl.ac.uk>
3 *
4 * Changes to meet Linux coding standards, and DCCP infrastructure fixes.
5 *
6 * Copyright (c) 2006 Arnaldo Carvalho de Melo <acme@conectiva.com.br>
7 *
8 * This program is free software; you can redistribute it and/or modify

--- 499 unchanged lines hidden (view full) ---

508 if (hc->tx_cwnd < hc->tx_ssthresh)
509 maxincr = DIV_ROUND_UP(dp->dccps_l_ack_ratio, 2);
510
511 /* go through all ack vectors */
512 while ((offset = ccid2_ackvector(sk, skb, offset,
513 &vector, &veclen)) != -1) {
514 /* go through this ack vector */
515 while (veclen--) {
1/*
2 * Copyright (c) 2005, 2006 Andrea Bittau <a.bittau@cs.ucl.ac.uk>
3 *
4 * Changes to meet Linux coding standards, and DCCP infrastructure fixes.
5 *
6 * Copyright (c) 2006 Arnaldo Carvalho de Melo <acme@conectiva.com.br>
7 *
8 * This program is free software; you can redistribute it and/or modify

--- 499 unchanged lines hidden (view full) ---

508 if (hc->tx_cwnd < hc->tx_ssthresh)
509 maxincr = DIV_ROUND_UP(dp->dccps_l_ack_ratio, 2);
510
511 /* go through all ack vectors */
512 while ((offset = ccid2_ackvector(sk, skb, offset,
513 &vector, &veclen)) != -1) {
514 /* go through this ack vector */
515 while (veclen--) {
516 const u8 rl = *vector & DCCP_ACKVEC_LEN_MASK;
517 u64 ackno_end_rl = SUB48(ackno, rl);
516 u64 ackno_end_rl = SUB48(ackno, dccp_ackvec_runlen(vector));
518
519 ccid2_pr_debug("ackvec start:%llu end:%llu\n",
520 (unsigned long long)ackno,
521 (unsigned long long)ackno_end_rl);
522 /* if the seqno we are analyzing is larger than the
523 * current ackno, then move towards the tail of our
524 * seqnos.
525 */

--- 6 unchanged lines hidden (view full) ---

532 }
533 if (done)
534 break;
535
536 /* check all seqnos in the range of the vector
537 * run length
538 */
539 while (between48(seqp->ccid2s_seq,ackno_end_rl,ackno)) {
517
518 ccid2_pr_debug("ackvec start:%llu end:%llu\n",
519 (unsigned long long)ackno,
520 (unsigned long long)ackno_end_rl);
521 /* if the seqno we are analyzing is larger than the
522 * current ackno, then move towards the tail of our
523 * seqnos.
524 */

--- 6 unchanged lines hidden (view full) ---

531 }
532 if (done)
533 break;
534
535 /* check all seqnos in the range of the vector
536 * run length
537 */
538 while (between48(seqp->ccid2s_seq,ackno_end_rl,ackno)) {
540 const u8 state = *vector &
541 DCCP_ACKVEC_STATE_MASK;
539 const u8 state = dccp_ackvec_state(vector);
542
543 /* new packet received or marked */
540
541 /* new packet received or marked */
544 if (state != DCCP_ACKVEC_STATE_NOT_RECEIVED &&
542 if (state != DCCPAV_NOT_RECEIVED &&
545 !seqp->ccid2s_acked) {
543 !seqp->ccid2s_acked) {
546 if (state ==
547 DCCP_ACKVEC_STATE_ECN_MARKED) {
544 if (state == DCCPAV_ECN_MARKED)
548 ccid2_congestion_event(sk,
549 seqp);
545 ccid2_congestion_event(sk,
546 seqp);
550 } else
547 else
551 ccid2_new_ack(sk, seqp,
552 &maxincr);
553
554 seqp->ccid2s_acked = 1;
555 ccid2_pr_debug("Got ack for %llu\n",
556 (unsigned long long)seqp->ccid2s_seq);
557 hc->tx_pipe--;
558 }

--- 159 unchanged lines hidden ---
548 ccid2_new_ack(sk, seqp,
549 &maxincr);
550
551 seqp->ccid2s_acked = 1;
552 ccid2_pr_debug("Got ack for %llu\n",
553 (unsigned long long)seqp->ccid2s_seq);
554 hc->tx_pipe--;
555 }

--- 159 unchanged lines hidden ---