[DCCP]: Move the ack vector code to net/dccp/ackvec.[ch]
Isolating it, that will be used when we introduce a CCID2 (TCP-Like) implementation. Signed-off-by: Arnaldo Carvalho de Melo <acme@mandriva.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
21f130a237
commit
ae31c3399d
@ -16,6 +16,7 @@
|
||||
|
||||
#include <net/sock.h>
|
||||
|
||||
#include "ackvec.h"
|
||||
#include "ccid.h"
|
||||
#include "dccp.h"
|
||||
|
||||
@ -60,8 +61,8 @@ static inline void dccp_event_ack_recv(struct sock *sk, struct sk_buff *skb)
|
||||
struct dccp_sock *dp = dccp_sk(sk);
|
||||
|
||||
if (dp->dccps_options.dccpo_send_ack_vector)
|
||||
dccp_ackpkts_check_rcv_ackno(dp->dccps_hc_rx_ackpkts, sk,
|
||||
DCCP_SKB_CB(skb)->dccpd_ack_seq);
|
||||
dccp_ackvec_check_rcv_ackno(dp->dccps_hc_rx_ackvec, sk,
|
||||
DCCP_SKB_CB(skb)->dccpd_ack_seq);
|
||||
}
|
||||
|
||||
static int dccp_check_seqno(struct sock *sk, struct sk_buff *skb)
|
||||
@ -164,37 +165,11 @@ int dccp_rcv_established(struct sock *sk, struct sk_buff *skb,
|
||||
if (DCCP_SKB_CB(skb)->dccpd_ack_seq != DCCP_PKT_WITHOUT_ACK_SEQ)
|
||||
dccp_event_ack_recv(sk, skb);
|
||||
|
||||
/*
|
||||
* FIXME: check ECN to see if we should use
|
||||
* DCCP_ACKPKTS_STATE_ECN_MARKED
|
||||
*/
|
||||
if (dp->dccps_options.dccpo_send_ack_vector) {
|
||||
struct dccp_ackpkts *ap = dp->dccps_hc_rx_ackpkts;
|
||||
|
||||
if (dccp_ackpkts_add(dp->dccps_hc_rx_ackpkts, sk,
|
||||
DCCP_SKB_CB(skb)->dccpd_seq,
|
||||
DCCP_ACKPKTS_STATE_RECEIVED)) {
|
||||
LIMIT_NETDEBUG(KERN_WARNING "DCCP: acknowledgeable "
|
||||
"packets buffer full!\n");
|
||||
ap->dccpap_ack_seqno = DCCP_MAX_SEQNO + 1;
|
||||
inet_csk_schedule_ack(sk);
|
||||
inet_csk_reset_xmit_timer(sk, ICSK_TIME_DACK,
|
||||
TCP_DELACK_MIN,
|
||||
DCCP_RTO_MAX);
|
||||
goto discard;
|
||||
}
|
||||
|
||||
/*
|
||||
* FIXME: this activation is probably wrong, have to study more
|
||||
* TCP delack machinery and how it fits into DCCP draft, but
|
||||
* for now it kinda "works" 8)
|
||||
*/
|
||||
if (!inet_csk_ack_scheduled(sk)) {
|
||||
inet_csk_schedule_ack(sk);
|
||||
inet_csk_reset_xmit_timer(sk, ICSK_TIME_DACK, 5 * HZ,
|
||||
DCCP_RTO_MAX);
|
||||
}
|
||||
}
|
||||
if (dp->dccps_options.dccpo_send_ack_vector &&
|
||||
dccp_ackvec_add(dp->dccps_hc_rx_ackvec, sk,
|
||||
DCCP_SKB_CB(skb)->dccpd_seq,
|
||||
DCCP_ACKVEC_STATE_RECEIVED))
|
||||
goto discard;
|
||||
|
||||
ccid_hc_rx_packet_recv(dp->dccps_hc_rx_ccid, sk, skb);
|
||||
ccid_hc_tx_packet_recv(dp->dccps_hc_tx_ccid, sk, skb);
|
||||
@ -495,29 +470,11 @@ int dccp_rcv_state_process(struct sock *sk, struct sk_buff *skb,
|
||||
ccid_hc_rx_packet_recv(dp->dccps_hc_rx_ccid, sk, skb);
|
||||
ccid_hc_tx_packet_recv(dp->dccps_hc_tx_ccid, sk, skb);
|
||||
|
||||
/*
|
||||
* FIXME: check ECN to see if we should use
|
||||
* DCCP_ACKPKTS_STATE_ECN_MARKED
|
||||
*/
|
||||
if (dp->dccps_options.dccpo_send_ack_vector) {
|
||||
if (dccp_ackpkts_add(dp->dccps_hc_rx_ackpkts, sk,
|
||||
dcb->dccpd_seq,
|
||||
DCCP_ACKPKTS_STATE_RECEIVED))
|
||||
goto discard;
|
||||
/*
|
||||
* FIXME: this activation is probably wrong, have to
|
||||
* study more TCP delack machinery and how it fits into
|
||||
* DCCP draft, but for now it kinda "works" 8)
|
||||
*/
|
||||
if ((dp->dccps_hc_rx_ackpkts->dccpap_ack_seqno ==
|
||||
DCCP_MAX_SEQNO + 1) &&
|
||||
!inet_csk_ack_scheduled(sk)) {
|
||||
inet_csk_schedule_ack(sk);
|
||||
inet_csk_reset_xmit_timer(sk, ICSK_TIME_DACK,
|
||||
TCP_DELACK_MIN,
|
||||
DCCP_RTO_MAX);
|
||||
}
|
||||
}
|
||||
if (dp->dccps_options.dccpo_send_ack_vector &&
|
||||
dccp_ackvec_add(dp->dccps_hc_rx_ackvec, sk,
|
||||
DCCP_SKB_CB(skb)->dccpd_seq,
|
||||
DCCP_ACKVEC_STATE_RECEIVED))
|
||||
goto discard;
|
||||
}
|
||||
|
||||
/*
|
||||
|
Reference in New Issue
Block a user