Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
linux
Commits
c1cea42a
Commit
c1cea42a
authored
Feb 07, 2004
by
David S. Miller
Browse files
Options
Browse Files
Download
Plain Diff
Merge nuts.davemloft.net:/disk1/BK/network-2.6
into nuts.davemloft.net:/disk1/BK/net-2.6
parents
82b3a0c2
519b996b
Changes
11
Show whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
40 additions
and
203 deletions
+40
-203
include/linux/sysctl.h
include/linux/sysctl.h
+2
-0
include/net/sctp/constants.h
include/net/sctp/constants.h
+1
-1
include/net/sctp/structs.h
include/net/sctp/structs.h
+6
-0
net/sctp/Kconfig
net/sctp/Kconfig
+0
-13
net/sctp/Makefile
net/sctp/Makefile
+1
-7
net/sctp/adler32.c
net/sctp/adler32.c
+0
-171
net/sctp/associola.c
net/sctp/associola.c
+2
-2
net/sctp/endpointola.c
net/sctp/endpointola.c
+2
-6
net/sctp/protocol.c
net/sctp/protocol.c
+9
-2
net/sctp/sysctl.c
net/sctp/sysctl.c
+16
-0
net/sctp/ulpqueue.c
net/sctp/ulpqueue.c
+1
-1
No files found.
include/linux/sysctl.h
View file @
c1cea42a
...
@@ -583,6 +583,8 @@ enum {
...
@@ -583,6 +583,8 @@ enum {
NET_SCTP_PRESERVE_ENABLE
=
11
,
NET_SCTP_PRESERVE_ENABLE
=
11
,
NET_SCTP_MAX_BURST
=
12
,
NET_SCTP_MAX_BURST
=
12
,
NET_SCTP_ADDIP_ENABLE
=
13
,
NET_SCTP_ADDIP_ENABLE
=
13
,
NET_SCTP_RMEM
=
14
,
NET_SCTP_WMEM
=
15
,
};
};
/* /proc/sys/net/bridge */
/* /proc/sys/net/bridge */
...
...
include/net/sctp/constants.h
View file @
c1cea42a
...
@@ -323,7 +323,7 @@ typedef enum {
...
@@ -323,7 +323,7 @@ typedef enum {
#define SCTP_DEFAULT_COOKIE_LIFE_USEC 0
/* microseconds */
#define SCTP_DEFAULT_COOKIE_LIFE_USEC 0
/* microseconds */
#define SCTP_DEFAULT_MINWINDOW 1500
/* default minimum rwnd size */
#define SCTP_DEFAULT_MINWINDOW 1500
/* default minimum rwnd size */
#define SCTP_DEFAULT_MAXWINDOW
32768
/* default rwnd size */
#define SCTP_DEFAULT_MAXWINDOW
65535
/* default rwnd size */
#define SCTP_DEFAULT_MAXSEGMENT 1500
/* MTU size, this is the limit
#define SCTP_DEFAULT_MAXSEGMENT 1500
/* MTU size, this is the limit
* to which we will raise the P-MTU.
* to which we will raise the P-MTU.
*/
*/
...
...
include/net/sctp/structs.h
View file @
c1cea42a
...
@@ -193,6 +193,10 @@ extern struct sctp_globals {
...
@@ -193,6 +193,10 @@ extern struct sctp_globals {
/* Flag to indicate if addip is enabled. */
/* Flag to indicate if addip is enabled. */
int
addip_enable
;
int
addip_enable
;
/* socket receive and send buffer sizes. */
int
rmem
;
int
wmem
;
}
sctp_globals
;
}
sctp_globals
;
#define sctp_rto_initial (sctp_globals.rto_initial)
#define sctp_rto_initial (sctp_globals.rto_initial)
...
@@ -221,6 +225,8 @@ extern struct sctp_globals {
...
@@ -221,6 +225,8 @@ extern struct sctp_globals {
#define sctp_local_addr_list (sctp_globals.local_addr_list)
#define sctp_local_addr_list (sctp_globals.local_addr_list)
#define sctp_local_addr_lock (sctp_globals.local_addr_lock)
#define sctp_local_addr_lock (sctp_globals.local_addr_lock)
#define sctp_addip_enable (sctp_globals.addip_enable)
#define sctp_addip_enable (sctp_globals.addip_enable)
#define sctp_rmem (sctp_globals.rmem)
#define sctp_wmem (sctp_globals.wmem)
/* SCTP Socket type: UDP or TCP style. */
/* SCTP Socket type: UDP or TCP style. */
typedef
enum
{
typedef
enum
{
...
...
net/sctp/Kconfig
View file @
c1cea42a
...
@@ -37,19 +37,6 @@ config IP_SCTP
...
@@ -37,19 +37,6 @@ config IP_SCTP
If in doubt, say N.
If in doubt, say N.
config SCTP_ADLER32
bool "SCTP: Use old checksum (Adler-32)"
depends on IP_SCTP
help
RFC2960 currently specifies the Adler-32 checksum algorithm for SCTP.
This has been deprecated and replaced by an algorithm now referred
to as crc32c.
If you say Y, this will use the Adler-32 algorithm, this might be
useful for interoperation with downlevel peers.
If unsure, say N.
config SCTP_DBG_MSG
config SCTP_DBG_MSG
bool "SCTP: Debug messages"
bool "SCTP: Debug messages"
depends on IP_SCTP
depends on IP_SCTP
...
...
net/sctp/Makefile
View file @
c1cea42a
...
@@ -9,13 +9,7 @@ sctp-y := sm_statetable.o sm_statefuns.o sm_sideeffect.o \
...
@@ -9,13 +9,7 @@ sctp-y := sm_statetable.o sm_statefuns.o sm_sideeffect.o \
transport.o chunk.o sm_make_chunk.o ulpevent.o
\
transport.o chunk.o sm_make_chunk.o ulpevent.o
\
inqueue.o outqueue.o ulpqueue.o command.o
\
inqueue.o outqueue.o ulpqueue.o command.o
\
tsnmap.o bind_addr.o socket.o primitive.o
\
tsnmap.o bind_addr.o socket.o primitive.o
\
output.o input.o debug.o ssnmap.o proc.o
output.o input.o debug.o ssnmap.o proc.o crc32c.o
ifeq
($(CONFIG_SCTP_ADLER32), y)
sctp-y
+=
adler32.o
else
sctp-y
+=
crc32c.o
endif
sctp-$(CONFIG_SCTP_DBG_OBJCNT)
+=
objcnt.o
sctp-$(CONFIG_SCTP_DBG_OBJCNT)
+=
objcnt.o
sctp-$(CONFIG_SYSCTL)
+=
sysctl.o
sctp-$(CONFIG_SYSCTL)
+=
sysctl.o
...
...
net/sctp/adler32.c
deleted
100644 → 0
View file @
82b3a0c2
/* SCTP kernel reference Implementation
* Copyright (c) 1999-2000 Cisco, Inc.
* Copyright (c) 1999-2001 Motorola, Inc.
* Copyright (c) 2003 International Business Machines, Corp.
*
* This file is part of the SCTP kernel reference Implementation
*
* This file has direct heritage from the SCTP user-level reference
* implementation by R. Stewart, et al. These functions implement the
* Adler-32 algorithm as specified by RFC 2960.
*
* The SCTP reference implementation is free software;
* you can redistribute it and/or modify it under the terms of
* the GNU General Public License as published by
* the Free Software Foundation; either version 2, or (at your option)
* any later version.
*
* The SCTP reference implementation is distributed in the hope that it
* will be useful, but WITHOUT ANY WARRANTY; without even the implied
* ************************
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with GNU CC; see the file COPYING. If not, write to
* the Free Software Foundation, 59 Temple Place - Suite 330,
* Boston, MA 02111-1307, USA.
*
* Please send any bug reports or fixes you make to the
* email address(es):
* lksctp developers <lksctp-developers@lists.sourceforge.net>
*
* Or submit a bug report through the following website:
* http://www.sf.net/projects/lksctp
*
* Written or modified by:
* Randall Stewart <rstewar1@email.mot.com>
* Ken Morneau <kmorneau@cisco.com>
* Qiaobing Xie <qxie1@email.mot.com>
* Sridhar Samudrala <sri@us.ibm.com>
*
* Any bugs reported given to us we will try to fix... any fixes shared will
* be incorporated into the next SCTP release.
*/
/* This is an entry point for external calls
* Define this function in the header file. This is
* direct from rfc1950, ...
*
* The following C code computes the Adler-32 checksum of a data buffer.
* It is written for clarity, not for speed. The sample code is in the
* ANSI C programming language. Non C users may find it easier to read
* with these hints:
*
* & Bitwise AND operator.
* >> Bitwise right shift operator. When applied to an
* unsigned quantity, as here, right shift inserts zero bit(s)
* at the left.
* << Bitwise left shift operator. Left shift inserts zero
* bit(s) at the right.
* ++ "n++" increments the variable n.
* % modulo operator: a % b is the remainder of a divided by b.
*
* Well, the above is a bit of a lie, I have optimized this a small
* tad, but I have commented the original lines below
*/
#include <linux/types.h>
#include <net/sctp/sctp.h>
#define BASE 65521
/* largest prime smaller than 65536 */
/* Performance work as shown this pig to be the
* worst CPU wise guy. I have done what I could think
* of on my flight to Australia but I am sure some
* clever assembly could speed this up, but of
* course this would require the dreaded #ifdef's for
* architecture. If you can speed this up more, pass
* it back and we will incorporate it :-)
*/
unsigned
long
update_adler32
(
unsigned
long
adler
,
unsigned
char
*
buf
,
int
len
)
{
__u32
s1
=
adler
&
0xffff
;
__u32
s2
=
(
adler
>>
16
)
&
0xffff
;
int
n
;
for
(
n
=
0
;
n
<
len
;
n
++
,
buf
++
)
{
/* s1 = (s1 + buf[n]) % BASE */
/* first we add */
s1
=
(
s1
+
*
buf
);
/* Now if we need to, we do a mod by
* subtracting. It seems a bit faster
* since I really will only ever do
* one subtract at the MOST, since buf[n]
* is a max of 255.
*/
if
(
s1
>=
BASE
)
s1
-=
BASE
;
/* s2 = (s2 + s1) % BASE */
/* first we add */
s2
=
(
s2
+
s1
);
/* again, it is more efficient (it seems) to
* subtract since the most s2 will ever be
* is (BASE-1 + BASE-1) in the worse case.
* This would then be (2 * BASE) - 2, which
* will still only do one subtract. On Intel
* this is much better to do this way and
* avoid the divide. Have not -pg'd on
* sparc.
*/
if
(
s2
>=
BASE
)
{
/* s2 %= BASE;*/
s2
-=
BASE
;
}
}
/* Return the adler32 of the bytes buf[0..len-1] */
return
(
s2
<<
16
)
+
s1
;
}
__u32
sctp_start_cksum
(
__u8
*
ptr
,
__u16
count
)
{
/*
* Update a running Adler-32 checksum with the bytes
* buf[0..len-1] and return the updated checksum. The Adler-32
* checksum should be initialized to 1.
*/
__u32
adler
=
1L
;
__u32
zero
=
0L
;
/* Calculate the CRC up to the checksum field. */
adler
=
update_adler32
(
adler
,
ptr
,
sizeof
(
struct
sctphdr
)
-
sizeof
(
__u32
));
/* Skip over the checksum field. */
adler
=
update_adler32
(
adler
,
(
unsigned
char
*
)
&
zero
,
sizeof
(
__u32
));
ptr
+=
sizeof
(
struct
sctphdr
);
count
-=
sizeof
(
struct
sctphdr
);
/* Calculate the rest of the Adler-32. */
adler
=
update_adler32
(
adler
,
ptr
,
count
);
return
adler
;
}
__u32
sctp_update_cksum
(
__u8
*
ptr
,
__u16
count
,
__u32
adler
)
{
adler
=
update_adler32
(
adler
,
ptr
,
count
);
return
adler
;
}
__u32
sctp_update_copy_cksum
(
__u8
*
to
,
__u8
*
from
,
__u16
count
,
__u32
adler
)
{
/* Its not worth it to try harder. Adler32 is obsolescent. */
adler
=
update_adler32
(
adler
,
from
,
count
);
memcpy
(
to
,
from
,
count
);
return
adler
;
}
__u32
sctp_end_cksum
(
__u32
adler
)
{
return
adler
;
}
net/sctp/associola.c
View file @
c1cea42a
...
@@ -192,7 +192,7 @@ struct sctp_association *sctp_association_init(struct sctp_association *asoc,
...
@@ -192,7 +192,7 @@ struct sctp_association *sctp_association_init(struct sctp_association *asoc,
asoc
->
rwnd_over
=
0
;
asoc
->
rwnd_over
=
0
;
/* Use my own max window until I learn something better. */
/* Use my own max window until I learn something better. */
asoc
->
peer
.
rwnd
=
SCTP_DEFAULT_MAXWINDOW
;
asoc
->
peer
.
rwnd
=
sctp_rmem
;
/* Set the sndbuf size for transmit. */
/* Set the sndbuf size for transmit. */
asoc
->
sndbuf_used
=
0
;
asoc
->
sndbuf_used
=
0
;
...
@@ -498,7 +498,7 @@ struct sctp_transport *sctp_assoc_add_peer(struct sctp_association *asoc,
...
@@ -498,7 +498,7 @@ struct sctp_transport *sctp_assoc_add_peer(struct sctp_association *asoc,
* so initialize ssthresh to the default value and it will be set
* so initialize ssthresh to the default value and it will be set
* later when we process the INIT.
* later when we process the INIT.
*/
*/
peer
->
ssthresh
=
SCTP_DEFAULT_MAXWINDOW
;
peer
->
ssthresh
=
sctp_rmem
;
peer
->
partial_bytes_acked
=
0
;
peer
->
partial_bytes_acked
=
0
;
peer
->
flight_size
=
0
;
peer
->
flight_size
=
0
;
...
...
net/sctp/endpointola.c
View file @
c1cea42a
...
@@ -148,12 +148,8 @@ struct sctp_endpoint *sctp_endpoint_init(struct sctp_endpoint *ep,
...
@@ -148,12 +148,8 @@ struct sctp_endpoint *sctp_endpoint_init(struct sctp_endpoint *ep,
sp
->
autoclose
*
HZ
;
sp
->
autoclose
*
HZ
;
/* Set up the default send/receive buffer space. */
/* Set up the default send/receive buffer space. */
sk
->
sk_rcvbuf
=
sctp_rmem
;
/* FIXME - Should the min and max window size be configurable
sk
->
sk_sndbuf
=
sctp_wmem
;
* sysctl parameters as opposed to be constants?
*/
sk
->
sk_rcvbuf
=
SCTP_DEFAULT_MAXWINDOW
;
sk
->
sk_sndbuf
=
SCTP_DEFAULT_MAXWINDOW
*
2
;
/* Use SCTP specific send buffer space queues. */
/* Use SCTP specific send buffer space queues. */
sk
->
sk_write_space
=
sctp_write_space
;
sk
->
sk_write_space
=
sctp_write_space
;
...
...
net/sctp/protocol.c
View file @
c1cea42a
/* SCTP kernel reference Implementation
/* SCTP kernel reference Implementation
* (C) Copyright IBM Corp. 2001, 2004
* Copyright (c) 1999-2000 Cisco, Inc.
* Copyright (c) 1999-2000 Cisco, Inc.
* Copyright (c) 1999-2001 Motorola, Inc.
* Copyright (c) 1999-2001 Motorola, Inc.
* Copyright (c) 2001-2003 International Business Machines, Corp.
* Copyright (c) 2001 Intel Corp.
* Copyright (c) 2001 Intel Corp.
* Copyright (c) 2001 Nokia, Inc.
* Copyright (c) 2001 Nokia, Inc.
* Copyright (c) 2001 La Monte H.P. Yarroll
* Copyright (c) 2001 La Monte H.P. Yarroll
...
@@ -445,7 +445,10 @@ struct dst_entry *sctp_v4_get_dst(struct sctp_association *asoc,
...
@@ -445,7 +445,10 @@ struct dst_entry *sctp_v4_get_dst(struct sctp_association *asoc,
memset
(
&
fl
,
0x0
,
sizeof
(
struct
flowi
));
memset
(
&
fl
,
0x0
,
sizeof
(
struct
flowi
));
fl
.
fl4_dst
=
daddr
->
v4
.
sin_addr
.
s_addr
;
fl
.
fl4_dst
=
daddr
->
v4
.
sin_addr
.
s_addr
;
fl
.
proto
=
IPPROTO_SCTP
;
fl
.
proto
=
IPPROTO_SCTP
;
if
(
asoc
)
{
fl
.
fl4_tos
=
RT_CONN_FLAGS
(
asoc
->
base
.
sk
);
fl
.
oif
=
asoc
->
base
.
sk
->
sk_bound_dev_if
;
}
if
(
saddr
)
if
(
saddr
)
fl
.
fl4_src
=
saddr
->
v4
.
sin_addr
.
s_addr
;
fl
.
fl4_src
=
saddr
->
v4
.
sin_addr
.
s_addr
;
...
@@ -1046,6 +1049,10 @@ __init int sctp_init(void)
...
@@ -1046,6 +1049,10 @@ __init int sctp_init(void)
sctp_max_instreams
=
SCTP_DEFAULT_INSTREAMS
;
sctp_max_instreams
=
SCTP_DEFAULT_INSTREAMS
;
sctp_max_outstreams
=
SCTP_DEFAULT_OUTSTREAMS
;
sctp_max_outstreams
=
SCTP_DEFAULT_OUTSTREAMS
;
/* Initialize default send & receive buffer sizes. */
sctp_rmem
=
SCTP_DEFAULT_MAXWINDOW
;
sctp_wmem
=
SCTP_DEFAULT_MAXWINDOW
;
/* Size and allocate the association hash table.
/* Size and allocate the association hash table.
* The methodology is similar to that of the tcp hash tables.
* The methodology is similar to that of the tcp hash tables.
*/
*/
...
...
net/sctp/sysctl.c
View file @
c1cea42a
...
@@ -170,6 +170,22 @@ static ctl_table sctp_table[] = {
...
@@ -170,6 +170,22 @@ static ctl_table sctp_table[] = {
.
mode
=
0644
,
.
mode
=
0644
,
.
proc_handler
=
&
proc_dointvec
.
proc_handler
=
&
proc_dointvec
},
},
{
.
ctl_name
=
NET_SCTP_RMEM
,
.
procname
=
"rmem"
,
.
data
=
&
sctp_rmem
,
.
maxlen
=
sizeof
(
int
),
.
mode
=
0644
,
.
proc_handler
=
&
proc_dointvec
},
{
.
ctl_name
=
NET_SCTP_WMEM
,
.
procname
=
"wmem"
,
.
data
=
&
sctp_wmem
,
.
maxlen
=
sizeof
(
int
),
.
mode
=
0644
,
.
proc_handler
=
&
proc_dointvec
},
{
.
ctl_name
=
0
}
{
.
ctl_name
=
0
}
};
};
...
...
net/sctp/ulpqueue.c
View file @
c1cea42a
...
@@ -768,7 +768,7 @@ void sctp_ulpq_renege(struct sctp_ulpq *ulpq, struct sctp_chunk *chunk,
...
@@ -768,7 +768,7 @@ void sctp_ulpq_renege(struct sctp_ulpq *ulpq, struct sctp_chunk *chunk,
needed
=
ntohs
(
chunk
->
chunk_hdr
->
length
);
needed
=
ntohs
(
chunk
->
chunk_hdr
->
length
);
needed
-=
sizeof
(
sctp_data_chunk_t
);
needed
-=
sizeof
(
sctp_data_chunk_t
);
}
else
}
else
needed
=
SCTP_DEFAULT_MAXWINDOW
;
needed
=
sctp_rmem
;
freed
=
0
;
freed
=
0
;
...
...
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