Commit 14934efa authored by David S. Miller's avatar David S. Miller
parents 86aa7785 bfbb2346
...@@ -167,6 +167,7 @@ rx_ccid = 2 ...@@ -167,6 +167,7 @@ rx_ccid = 2
seq_window = 100 seq_window = 100
The initial sequence window (sec. 7.5.2) of the sender. This influences The initial sequence window (sec. 7.5.2) of the sender. This influences
the local ackno validity and the remote seqno validity windows (7.5.1). the local ackno validity and the remote seqno validity windows (7.5.1).
Values in the range Wmin = 32 (RFC 4340, 7.5.2) up to 2^32-1 can be set.
tx_qlen = 5 tx_qlen = 5
The size of the transmit buffer in packets. A value of 0 corresponds The size of the transmit buffer in packets. A value of 0 corresponds
......
...@@ -426,7 +426,8 @@ static inline void dccp_update_gsr(struct sock *sk, u64 seq) ...@@ -426,7 +426,8 @@ static inline void dccp_update_gsr(struct sock *sk, u64 seq)
{ {
struct dccp_sock *dp = dccp_sk(sk); struct dccp_sock *dp = dccp_sk(sk);
dp->dccps_gsr = seq; if (after48(seq, dp->dccps_gsr))
dp->dccps_gsr = seq;
/* Sequence validity window depends on remote Sequence Window (7.5.1) */ /* Sequence validity window depends on remote Sequence Window (7.5.1) */
dp->dccps_swl = SUB48(ADD48(dp->dccps_gsr, 1), dp->dccps_r_seq_win / 4); dp->dccps_swl = SUB48(ADD48(dp->dccps_gsr, 1), dp->dccps_r_seq_win / 4);
/* /*
......
...@@ -260,7 +260,7 @@ static int dccp_check_seqno(struct sock *sk, struct sk_buff *skb) ...@@ -260,7 +260,7 @@ static int dccp_check_seqno(struct sock *sk, struct sk_buff *skb)
*/ */
if (time_before(now, (dp->dccps_rate_last + if (time_before(now, (dp->dccps_rate_last +
sysctl_dccp_sync_ratelimit))) sysctl_dccp_sync_ratelimit)))
return 0; return -1;
DCCP_WARN("Step 6 failed for %s packet, " DCCP_WARN("Step 6 failed for %s packet, "
"(LSWL(%llu) <= P.seqno(%llu) <= S.SWH(%llu)) and " "(LSWL(%llu) <= P.seqno(%llu) <= S.SWH(%llu)) and "
......
...@@ -21,7 +21,8 @@ ...@@ -21,7 +21,8 @@
/* Boundary values */ /* Boundary values */
static int zero = 0, static int zero = 0,
u8_max = 0xFF; u8_max = 0xFF;
static unsigned long seqw_min = 32; static unsigned long seqw_min = DCCPF_SEQ_WMIN,
seqw_max = 0xFFFFFFFF; /* maximum on 32 bit */
static struct ctl_table dccp_default_table[] = { static struct ctl_table dccp_default_table[] = {
{ {
...@@ -31,6 +32,7 @@ static struct ctl_table dccp_default_table[] = { ...@@ -31,6 +32,7 @@ static struct ctl_table dccp_default_table[] = {
.mode = 0644, .mode = 0644,
.proc_handler = proc_doulongvec_minmax, .proc_handler = proc_doulongvec_minmax,
.extra1 = &seqw_min, /* RFC 4340, 7.5.2 */ .extra1 = &seqw_min, /* RFC 4340, 7.5.2 */
.extra2 = &seqw_max,
}, },
{ {
.procname = "rx_ccid", .procname = "rx_ccid",
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment