Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
L
linux-davinci
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Redmine
Redmine
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
linux
linux-davinci
Commits
5cb960a8
Commit
5cb960a8
authored
Jun 11, 2008
by
David S. Miller
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of
git://eden-feed.erg.abdn.ac.uk/net-2.6
parents
ceeff754
be4c798a
Changes
9
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
41 additions
and
59 deletions
+41
-59
net/dccp/ackvec.c
net/dccp/ackvec.c
+2
-27
net/dccp/ccids/ccid3.c
net/dccp/ccids/ccid3.c
+10
-4
net/dccp/ccids/lib/tfrc.c
net/dccp/ccids/lib/tfrc.c
+0
-8
net/dccp/ccids/lib/tfrc.h
net/dccp/ccids/lib/tfrc.h
+15
-10
net/dccp/ccids/lib/tfrc_equation.c
net/dccp/ccids/lib/tfrc_equation.c
+4
-4
net/dccp/minisocks.c
net/dccp/minisocks.c
+4
-4
net/dccp/options.c
net/dccp/options.c
+3
-1
net/dccp/output.c
net/dccp/output.c
+2
-0
net/dccp/probe.c
net/dccp/probe.c
+1
-1
No files found.
net/dccp/ackvec.c
View file @
5cb960a8
...
...
@@ -290,12 +290,12 @@ int dccp_ackvec_add(struct dccp_ackvec *av, const struct sock *sk,
while
(
1
)
{
const
u8
len
=
dccp_ackvec_len
(
av
,
index
);
const
u8
state
=
dccp_ackvec_state
(
av
,
index
);
const
u8
av_
state
=
dccp_ackvec_state
(
av
,
index
);
/*
* valid packets not yet in av_buf have a reserved
* entry, with a len equal to 0.
*/
if
(
state
==
DCCP_ACKVEC_STATE_NOT_RECEIVED
&&
if
(
av_
state
==
DCCP_ACKVEC_STATE_NOT_RECEIVED
&&
len
==
0
&&
delta
==
0
)
{
/* Found our
reserved seat! */
dccp_pr_debug
(
"Found %llu reserved seat!
\n
"
,
...
...
@@ -325,31 +325,6 @@ out_duplicate:
return
-
EILSEQ
;
}
#ifdef CONFIG_IP_DCCP_DEBUG
void
dccp_ackvector_print
(
const
u64
ackno
,
const
unsigned
char
*
vector
,
int
len
)
{
dccp_pr_debug_cat
(
"ACK vector len=%d, ackno=%llu |"
,
len
,
(
unsigned
long
long
)
ackno
);
while
(
len
--
)
{
const
u8
state
=
(
*
vector
&
DCCP_ACKVEC_STATE_MASK
)
>>
6
;
const
u8
rl
=
*
vector
&
DCCP_ACKVEC_LEN_MASK
;
dccp_pr_debug_cat
(
"%d,%d|"
,
state
,
rl
);
++
vector
;
}
dccp_pr_debug_cat
(
"
\n
"
);
}
void
dccp_ackvec_print
(
const
struct
dccp_ackvec
*
av
)
{
dccp_ackvector_print
(
av
->
av_buf_ackno
,
av
->
av_buf
+
av
->
av_buf_head
,
av
->
av_vec_len
);
}
#endif
static
void
dccp_ackvec_throw_record
(
struct
dccp_ackvec
*
av
,
struct
dccp_ackvec_record
*
avr
)
{
...
...
net/dccp/ccids/ccid3.c
View file @
5cb960a8
...
...
@@ -159,8 +159,8 @@ static void ccid3_hc_tx_update_x(struct sock *sk, ktime_t *stamp)
}
else
if
(
ktime_us_delta
(
now
,
hctx
->
ccid3hctx_t_ld
)
-
(
s64
)
hctx
->
ccid3hctx_rtt
>=
0
)
{
hctx
->
ccid3hctx_x
=
max
(
min
(
2
*
hctx
->
ccid3hctx_x
,
min_rate
)
,
hctx
->
ccid3hctx_x
=
min
(
2
*
hctx
->
ccid3hctx_x
,
min_rate
);
hctx
->
ccid3hctx_x
=
max
(
hctx
->
ccid3hctx_x
,
scaled_div
(((
__u64
)
hctx
->
ccid3hctx_s
)
<<
6
,
hctx
->
ccid3hctx_rtt
));
hctx
->
ccid3hctx_t_ld
=
now
;
...
...
@@ -329,8 +329,14 @@ static int ccid3_hc_tx_send_packet(struct sock *sk, struct sk_buff *skb)
hctx
->
ccid3hctx_x
=
rfc3390_initial_rate
(
sk
);
hctx
->
ccid3hctx_t_ld
=
now
;
}
else
{
/* Sender does not have RTT sample: X_pps = 1 pkt/sec */
hctx
->
ccid3hctx_x
=
hctx
->
ccid3hctx_s
;
/*
* Sender does not have RTT sample:
* - set fallback RTT (RFC 4340, 3.4) since a RTT value
* is needed in several parts (e.g. window counter);
* - set sending rate X_pps = 1pps as per RFC 3448, 4.2.
*/
hctx
->
ccid3hctx_rtt
=
DCCP_FALLBACK_RTT
;
hctx
->
ccid3hctx_x
=
hctx
->
ccid3hctx_s
;
hctx
->
ccid3hctx_x
<<=
6
;
}
ccid3_update_send_interval
(
hctx
);
...
...
net/dccp/ccids/lib/tfrc.c
View file @
5cb960a8
...
...
@@ -14,14 +14,6 @@ module_param(tfrc_debug, bool, 0444);
MODULE_PARM_DESC
(
tfrc_debug
,
"Enable debug messages"
);
#endif
extern
int
tfrc_tx_packet_history_init
(
void
);
extern
void
tfrc_tx_packet_history_exit
(
void
);
extern
int
tfrc_rx_packet_history_init
(
void
);
extern
void
tfrc_rx_packet_history_exit
(
void
);
extern
int
tfrc_li_init
(
void
);
extern
void
tfrc_li_exit
(
void
);
static
int
__init
tfrc_module_init
(
void
)
{
int
rc
=
tfrc_li_init
();
...
...
net/dccp/ccids/lib/tfrc.h
View file @
5cb960a8
...
...
@@ -15,7 +15,7 @@
* (at your option) any later version.
*/
#include <linux/types.h>
#include <
asm/div
64.h>
#include <
linux/math
64.h>
#include "../../dccp.h"
/* internal includes that this module exports: */
#include "loss_interval.h"
...
...
@@ -29,21 +29,19 @@ extern int tfrc_debug;
#endif
/* integer-arithmetic divisions of type (a * 1000000)/b */
static
inline
u64
scaled_div
(
u64
a
,
u
32
b
)
static
inline
u64
scaled_div
(
u64
a
,
u
64
b
)
{
BUG_ON
(
b
==
0
);
a
*=
1000000
;
do_div
(
a
,
b
);
return
a
;
return
div64_u64
(
a
*
1000000
,
b
);
}
static
inline
u32
scaled_div32
(
u64
a
,
u
32
b
)
static
inline
u32
scaled_div32
(
u64
a
,
u
64
b
)
{
u64
result
=
scaled_div
(
a
,
b
);
if
(
result
>
UINT_MAX
)
{
DCCP_CRIT
(
"Overflow:
a(%llu)/b(%u) > ~0U
"
,
(
unsigned
long
long
)
a
,
b
);
DCCP_CRIT
(
"Overflow:
%llu/%llu > UINT_MAX
"
,
(
unsigned
long
long
)
a
,
(
unsigned
long
long
)
b
);
return
UINT_MAX
;
}
return
result
;
...
...
@@ -58,7 +56,14 @@ static inline u32 tfrc_ewma(const u32 avg, const u32 newval, const u8 weight)
return
avg
?
(
weight
*
avg
+
(
10
-
weight
)
*
newval
)
/
10
:
newval
;
}
extern
u32
tfrc_calc_x
(
u16
s
,
u32
R
,
u32
p
);
extern
u32
tfrc_calc_x_reverse_lookup
(
u32
fvalue
);
extern
u32
tfrc_calc_x
(
u16
s
,
u32
R
,
u32
p
);
extern
u32
tfrc_calc_x_reverse_lookup
(
u32
fvalue
);
extern
int
tfrc_tx_packet_history_init
(
void
);
extern
void
tfrc_tx_packet_history_exit
(
void
);
extern
int
tfrc_rx_packet_history_init
(
void
);
extern
void
tfrc_rx_packet_history_exit
(
void
);
extern
int
tfrc_li_init
(
void
);
extern
void
tfrc_li_exit
(
void
);
#endif
/* _TFRC_H_ */
net/dccp/ccids/lib/tfrc_equation.c
View file @
5cb960a8
...
...
@@ -661,7 +661,7 @@ u32 tfrc_calc_x(u16 s, u32 R, u32 p)
EXPORT_SYMBOL_GPL
(
tfrc_calc_x
);
/*
/*
*
* tfrc_calc_x_reverse_lookup - try to find p given f(p)
*
* @fvalue: function value to match, scaled by 1000000
...
...
@@ -676,11 +676,11 @@ u32 tfrc_calc_x_reverse_lookup(u32 fvalue)
/* Error cases. */
if
(
fvalue
<
tfrc_calc_x_lookup
[
0
][
1
])
{
DCCP_WARN
(
"fvalue %
d
smaller than resolution
\n
"
,
fvalue
);
return
tfrc_calc_x_lookup
[
0
][
1
]
;
DCCP_WARN
(
"fvalue %
u
smaller than resolution
\n
"
,
fvalue
);
return
TFRC_SMALLEST_P
;
}
if
(
fvalue
>
tfrc_calc_x_lookup
[
TFRC_CALC_X_ARRSIZE
-
1
][
0
])
{
DCCP_WARN
(
"fvalue %
d
exceeds bounds!
\n
"
,
fvalue
);
DCCP_WARN
(
"fvalue %
u
exceeds bounds!
\n
"
,
fvalue
);
return
1000000
;
}
...
...
net/dccp/minisocks.c
View file @
5cb960a8
...
...
@@ -165,12 +165,12 @@ out_free:
/* See dccp_v4_conn_request */
newdmsk
->
dccpms_sequence_window
=
req
->
rcv_wnd
;
newdp
->
dccps_gar
=
newdp
->
dccps_isr
=
dreq
->
dreq_isr
;
dccp_update_gsr
(
newsk
,
dreq
->
dreq_isr
);
newdp
->
dccps_iss
=
dreq
->
dreq_iss
;
newdp
->
dccps_gar
=
newdp
->
dccps_iss
=
dreq
->
dreq_iss
;
dccp_update_gss
(
newsk
,
dreq
->
dreq_iss
);
newdp
->
dccps_isr
=
dreq
->
dreq_isr
;
dccp_update_gsr
(
newsk
,
dreq
->
dreq_isr
);
/*
* SWL and AWL are initially adjusted so that they are not less than
* the initial Sequence Numbers received and sent, respectively:
...
...
net/dccp/options.c
View file @
5cb960a8
...
...
@@ -107,9 +107,11 @@ int dccp_parse_options(struct sock *sk, struct dccp_request_sock *dreq,
*
* CCID-specific options are ignored during connection setup, as
* negotiation may still be in progress (see RFC 4340, 10.3).
* The same applies to Ack Vectors, as these depend on the CCID.
*
*/
if
(
dreq
!=
NULL
&&
opt
>=
128
)
if
(
dreq
!=
NULL
&&
(
opt
>=
128
||
opt
==
DCCPO_ACK_VECTOR_0
||
opt
==
DCCPO_ACK_VECTOR_1
))
goto
ignore_option
;
switch
(
opt
)
{
...
...
net/dccp/output.c
View file @
5cb960a8
...
...
@@ -508,6 +508,7 @@ void dccp_send_ack(struct sock *sk)
EXPORT_SYMBOL_GPL
(
dccp_send_ack
);
#if 0
/* FIXME: Is this still necessary (11.3) - currently nowhere used by DCCP. */
void dccp_send_delayed_ack(struct sock *sk)
{
...
...
@@ -538,6 +539,7 @@ void dccp_send_delayed_ack(struct sock *sk)
icsk->icsk_ack.timeout = timeout;
sk_reset_timer(sk, &icsk->icsk_delack_timer, timeout);
}
#endif
void
dccp_send_sync
(
struct
sock
*
sk
,
const
u64
ackno
,
const
enum
dccp_pkt_type
pkt_type
)
...
...
net/dccp/probe.c
View file @
5cb960a8
...
...
@@ -42,7 +42,7 @@ static int bufsize = 64 * 1024;
static
const
char
procname
[]
=
"dccpprobe"
;
struct
{
st
atic
st
ruct
{
struct
kfifo
*
fifo
;
spinlock_t
lock
;
wait_queue_head_t
wait
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment