[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>
This commit is contained in:
parent
23d06e3b98
commit
8e27e4650c
2 changed files with 3 additions and 4 deletions
|
@ -436,8 +436,7 @@ static void dccp_ackvec_check_rcv_ackvector(struct dccp_ackvec *av,
|
|||
break;
|
||||
found:
|
||||
if (between48(avr->dccpavr_ack_seqno, ackno_end_rl, ackno)) {
|
||||
const u8 state = (*vector &
|
||||
DCCP_ACKVEC_STATE_MASK) >> 6;
|
||||
const u8 state = *vector & DCCP_ACKVEC_STATE_MASK;
|
||||
if (state != DCCP_ACKVEC_STATE_NOT_RECEIVED) {
|
||||
#ifdef CONFIG_IP_DCCP_DEBUG
|
||||
struct dccp_sock *dp = dccp_sk(sk);
|
||||
|
|
|
@ -582,8 +582,8 @@ static void ccid2_hc_tx_packet_recv(struct sock *sk, struct sk_buff *skb)
|
|||
* run length
|
||||
*/
|
||||
while (between48(seqp->ccid2s_seq,ackno_end_rl,ackno)) {
|
||||
const u8 state = (*vector &
|
||||
DCCP_ACKVEC_STATE_MASK) >> 6;
|
||||
const u8 state = *vector &
|
||||
DCCP_ACKVEC_STATE_MASK;
|
||||
|
||||
/* new packet received or marked */
|
||||
if (state != DCCP_ACKVEC_STATE_NOT_RECEIVED &&
|
||||
|
|
Loading…
Reference in a new issue