aboutsummaryrefslogtreecommitdiffstats
path: root/net/dccp
diff options
context:
space:
mode:
authorAndrea Bittau <a.bittau@cs.ucl.ac.uk>2006-09-19 16:05:35 -0400
committerDavid S. Miller <davem@sunset.davemloft.net>2006-09-22 18:19:08 -0400
commit8e27e4650cb7e73aa4dd97d860539e7605ac7e39 (patch)
tree467ff3a8ecbb0fba014f917b42cc14f1f3665e32 /net/dccp
parent23d06e3b986677ec57007a24891fa9deb09ac973 (diff)
[DCCP] ackvec: Fix how DCCP_ACKVEC_STATE_NOT_RECEIVED is used
Fix the way state is masked out. DCCP_ACKVEC_STATE_NOT_RECEIVED is defined as appears in the packet, therefore bit shifting is not required. This fix allows CCID2 to correctly detect losses. Signed-off-by: Andrea Bittau <a.bittau@cs.ucl.ac.uk> Signed-off-by: Arnaldo Carvalho de Melo <acme@mandriva.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/dccp')
-rw-r--r--net/dccp/ackvec.c3
-rw-r--r--net/dccp/ccids/ccid2.c4
2 files changed, 3 insertions, 4 deletions
diff --git a/net/dccp/ackvec.c b/net/dccp/ackvec.c
index 8dab723cc704..bc5ff1212418 100644
--- a/net/dccp/ackvec.c
+++ b/net/dccp/ackvec.c
@@ -436,8 +436,7 @@ static void dccp_ackvec_check_rcv_ackvector(struct dccp_ackvec *av,
436 break; 436 break;
437found: 437found:
438 if (between48(avr->dccpavr_ack_seqno, ackno_end_rl, ackno)) { 438 if (between48(avr->dccpavr_ack_seqno, ackno_end_rl, ackno)) {
439 const u8 state = (*vector & 439 const u8 state = *vector & DCCP_ACKVEC_STATE_MASK;
440 DCCP_ACKVEC_STATE_MASK) >> 6;
441 if (state != DCCP_ACKVEC_STATE_NOT_RECEIVED) { 440 if (state != DCCP_ACKVEC_STATE_NOT_RECEIVED) {
442#ifdef CONFIG_IP_DCCP_DEBUG 441#ifdef CONFIG_IP_DCCP_DEBUG
443 struct dccp_sock *dp = dccp_sk(sk); 442 struct dccp_sock *dp = dccp_sk(sk);
diff --git a/net/dccp/ccids/ccid2.c b/net/dccp/ccids/ccid2.c
index e9615627dcd6..b1d90c07535e 100644
--- a/net/dccp/ccids/ccid2.c
+++ b/net/dccp/ccids/ccid2.c
@@ -582,8 +582,8 @@ static void ccid2_hc_tx_packet_recv(struct sock *sk, struct sk_buff *skb)
582 * run length 582 * run length
583 */ 583 */
584 while (between48(seqp->ccid2s_seq,ackno_end_rl,ackno)) { 584 while (between48(seqp->ccid2s_seq,ackno_end_rl,ackno)) {
585 const u8 state = (*vector & 585 const u8 state = *vector &
586 DCCP_ACKVEC_STATE_MASK) >> 6; 586 DCCP_ACKVEC_STATE_MASK;
587 587
588 /* new packet received or marked */ 588 /* new packet received or marked */
589 if (state != DCCP_ACKVEC_STATE_NOT_RECEIVED && 589 if (state != DCCP_ACKVEC_STATE_NOT_RECEIVED &&