diff options
author | Andrea Bittau <a.bittau@cs.ucl.ac.uk> | 2006-09-19 16:05:35 -0400 |
---|---|---|
committer | David S. Miller <davem@sunset.davemloft.net> | 2006-09-22 18:19:08 -0400 |
commit | 8e27e4650cb7e73aa4dd97d860539e7605ac7e39 (patch) | |
tree | 467ff3a8ecbb0fba014f917b42cc14f1f3665e32 /net/dccp | |
parent | 23d06e3b986677ec57007a24891fa9deb09ac973 (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.c | 3 | ||||
-rw-r--r-- | net/dccp/ccids/ccid2.c | 4 |
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; |
437 | found: | 437 | found: |
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 && |