Commit fb7d4045 authored by Linus Torvalds's avatar Linus Torvalds


  [TCP]: Fix minisock tcp_create_openreq_child() typo.
  [TCP]: Document several sysctls.
  [NET]: Fix kfree(skb)
  [NET]: Handle disabled preemption in gfp_any()
  [BRIDGE]: Fix locking of set path cost.
  [IPV6]: /proc/net/anycast6 unbalanced inet6_dev refcnt
  [IPX]: Remove ancient changelog
  [IPX]: Remove outdated information from Kconfig
  [NET]: Revert socket.h/stat.h ifdef hacks.
  [IPV6]: anycast refcnt fix
  [XFRM] xfrm_user: Fix return values of xfrm_add_sa_expire.
parents 100b4254 a9948a7e
......@@ -147,6 +147,11 @@ tcp_available_congestion_control - STRING
More congestion control algorithms may be available as modules,
but not loaded.
tcp_base_mss - INTEGER
The initial value of search_low to be used by Packetization Layer
Path MTU Discovery (MTU probing). If MTU probing is enabled,
this is the inital MSS used by the connection.
tcp_congestion_control - STRING
Set the congestion control algorithm to be used for new
connections. The algorithm "reno" is always available, but
......@@ -243,6 +248,27 @@ tcp_mem - vector of 3 INTEGERs: min, pressure, max
Defaults are calculated at boot time from amount of available
tcp_moderate_rcvbuf - BOOLEAN
If set, TCP performs receive buffer autotuning, attempting to
automatically size the buffer (no greater than tcp_rmem[2]) to
match the size required by the path for full throughput. Enabled by
tcp_mtu_probing - INTEGER
Controls TCP Packetization-Layer Path MTU Discovery. Takes three
0 - Disabled
1 - Disabled by default, enabled when an ICMP black hole detected
2 - Always enabled, use initial MSS of tcp_base_mss.
tcp_no_metrics_save - BOOLEAN
By default, TCP saves various connection metrics in the route cache
when the connection closes, so that connections established in the
near future can use these to set initial conditions. Usually, this
increases overall performance, but may sometimes cause performance
degredation. If set, TCP will not cache metrics on closing
tcp_orphan_retries - INTEGER
How may times to retry before killing TCP connection, closed
by our side. Default value 7 corresponds to ~50sec-16min
......@@ -16,7 +16,7 @@ struct __kernel_sockaddr_storage {
/* _SS_MAXSIZE value minus size of ss_family */
} __attribute__ ((aligned(_K_SS_ALIGNSIZE))); /* force desired alignment */
#ifdef __KERNEL__
#if defined(__KERNEL__) || !defined(__GLIBC__) || (__GLIBC__ < 2)
#include <asm/socket.h> /* arch-dependent defines */
#include <linux/sockios.h> /* the SIOCxxx I/O controls */
......@@ -7,7 +7,7 @@
#ifdef __KERNEL__
#if defined(__KERNEL__) || !defined(__GLIBC__) || (__GLIBC__ < 2)
#define S_IFMT 00170000
#define S_IFSOCK 0140000
......@@ -1278,7 +1278,7 @@ static inline int sock_writeable(const struct sock *sk)
static inline gfp_t gfp_any(void)
return in_softirq() ? GFP_ATOMIC : GFP_KERNEL;
return in_atomic() ? GFP_ATOMIC : GFP_KERNEL;
static inline long sock_rcvtimeo(const struct sock *sk, int noblock)
......@@ -291,12 +291,11 @@ static int old_dev_ioctl(struct net_device *dev, struct ifreq *rq, int cmd)
if (!capable(CAP_NET_ADMIN))
return -EPERM;
if ((p = br_get_port(br, args[1])) == NULL)
ret = -EINVAL;
br_stp_set_path_cost(p, args[2]);
return ret;
......@@ -2037,7 +2037,7 @@ struct sk_buff *skb_segment(struct sk_buff *skb, int features)
while ((skb = segs)) {
segs = skb->next;
return ERR_PTR(err);
......@@ -269,7 +269,7 @@ void dccp_write_xmit(struct sock *sk, int block)
} else {
dccp_pr_debug("packet discarded\n");
......@@ -381,7 +381,7 @@ struct sock *tcp_create_openreq_child(struct sock *sk, struct request_sock *req,
if (newsk != NULL) {
const struct inet_request_sock *ireq = inet_rsk(req);
struct tcp_request_sock *treq = tcp_rsk(req);
struct inet_connection_sock *newicsk = inet_csk(sk);
struct inet_connection_sock *newicsk = inet_csk(newsk);
struct tcp_sock *newtp;
/* Now setup tcp_sock */
......@@ -400,6 +400,8 @@ static void dev_forward_change(struct inet6_dev *idev)
ipv6_dev_mc_dec(dev, &addr);
for (ifa=idev->addr_list; ifa; ifa=ifa->if_next) {
if (ifa->flags&IFA_F_TENTATIVE)
if (idev->cnf.forwarding)
......@@ -461,6 +461,7 @@ static inline struct ifacaddr6 *ac6_get_first(struct seq_file *seq)
return im;
Revision 0.21: Uses the new generic socket option code.
Revision 0.22: Gcc clean ups and drop out device registration. Use the
new multi-protocol edition of hard_header
Revision 0.23: IPX /proc by Mark Evans. Adding a route will
will overwrite any existing route to the same network.
Revision 0.24: Supports new /proc with no 4K limit
Revision 0.25: Add ephemeral sockets, passive local network
identification, support for local net 0 and
multiple datalinks <Greg Page>
Revision 0.26: Device drop kills IPX routes via it. (needed for module)
Revision 0.27: Autobind <Mark Evans>
Revision 0.28: Small fix for multiple local networks <Thomas Winder>
Revision 0.29: Assorted major errors removed <Mark Evans>
Small correction to promisc mode error fix <Alan Cox>
Asynchronous I/O support. Changed to use notifiers
and the newer packet_type stuff. Assorted major
fixes <Alejandro Liu>
Revision 0.30: Moved to net/ipx/... <Alan Cox>
Don't set address length on recvfrom that errors.
Incorrect verify_area.
Revision 0.31: New sk_buffs. This still needs a lot of
testing. <Alan Cox>
Revision 0.32: Using sock_alloc_send_skb, firewall hooks. <Alan Cox>
Supports sendmsg/recvmsg
Revision 0.33: Internal network support, routing changes, uses a
protocol private area for ipx data.
Revision 0.34: Module support. <Jim Freeman>
Revision 0.35: Checksum support. <Neil Turton>, hooked in by <Alan Cox>
Handles WIN95 discovery packets <Volker Lendecke>
Revision 0.36: Internal bump up for 2.1
Revision 0.37: Began adding POSIXisms.
Revision 0.38: Asynchronous socket stuff made current.
Revision 0.39: SPX interfaces
Revision 0.40: Tiny SIOCGSTAMP fix (
Revision 0.41: 802.2TR removed (
Fixed connecting to primary net,
Automatic binding on send & receive,
Martijn van Oosterhout <>
Revision 042: Multithreading - use spinlocks and refcounting to
protect some structures: ipx_interface sock list, list
of ipx interfaces, etc.
Bugfixes - do refcounting on net_devices, check function
results, etc. Thanks to davem and freitag for
suggestions and guidance.
Arnaldo Carvalho de Melo <>,
November, 2000
Revision 043: Shared SKBs, don't mangle packets, some cleanups
Arnaldo Carvalho de Melo <>,
December, 2000
Revision 044: Call ipxitf_hold on NETDEV_UP - acme
Revision 045: fix PPROP routing bug - acme
Revision 046: Further fixes to PPROP, ipxitf_create_internal was
doing an unneeded MOD_INC_USE_COUNT, implement
sysctl for ipx_pprop_broacasting, fix the ipx sysctl
handling, making it dynamic, some cleanups, thanks to
Petr Vandrovec for review and good suggestions. (acme)
Revision 047: Cleanups, CodingStyle changes, move the ncp connection
hack out of line - acme
Revision 048: Use sk->protinfo to store the pointer to IPX private
area, remove af_ipx from sk->protinfo and move ipx_opt
to include/net/ipx.h, use IPX_SK like DecNET, etc - acme
Revision 049: SPX support dropped, see comment in ipx_create - acme
Revision 050: Use seq_file for proc stuff, moving it to ipx_proc.c - acme
Other fixes:
Protect the module by a MOD_INC_USE_COUNT/MOD_DEC_USE_COUNT pair. Also, now
usage count is managed this way:
-Count one if the auto_interface mode is on
-Count one per configured interface
Jacques Gelinas (
......@@ -16,8 +16,7 @@ config IPX
support", below.
IPX is similar in scope to IP, while SPX, which runs on top of IPX,
is similar to TCP. There is also experimental support for SPX in
Linux (see "SPX networking", below).
is similar to TCP.
To turn your Linux box into a fully featured NetWare file server and
IPX router, say Y here and fetch either lwared from
......@@ -26,9 +25,6 @@ config IPX
information, read the IPX-HOWTO available from
General information about how to connect Linux, Windows machines and
Macs is on the WWW at <>.
The IPX driver would enlarge your kernel by about 16 KB. To compile
this driver as a module, choose M here: the module will be called ipx.
Unless you want to integrate your Linux box with a local Novell
......@@ -197,13 +197,12 @@ EXPORT_SYMBOL_GPL(nfnetlink_has_listeners);
int nfnetlink_send(struct sk_buff *skb, u32 pid, unsigned group, int echo)
gfp_t allocation = in_interrupt() ? GFP_ATOMIC : GFP_KERNEL;
int err = 0;
NETLINK_CB(skb).dst_group = group;
if (echo)
netlink_broadcast(nfnl, skb, pid, group, allocation);
netlink_broadcast(nfnl, skb, pid, group, gfp_any());
if (echo)
err = netlink_unicast(nfnl, skb, pid, MSG_DONTWAIT);
......@@ -173,7 +173,7 @@ static int netlbl_unlabel_list(struct sk_buff *skb, struct genl_info *info)
return 0;
return ret_val;
......@@ -1401,7 +1401,7 @@ static int xfrm_get_ae(struct sk_buff *skb, struct nlmsghdr *nlh,
x = xfrm_state_lookup(&id->daddr, id->spi, id->proto, id->family);
if (x == NULL) {
return -ESRCH;
......@@ -1557,14 +1557,13 @@ static int xfrm_add_sa_expire(struct sk_buff *skb, struct nlmsghdr *nlh,
struct xfrm_usersa_info *p = &ue->state;
x = xfrm_state_lookup(&p->id.daddr, p->id.spi, p->id.proto, p->family);
err = -ENOENT;
err = -ENOENT;
if (x == NULL)
return err;
err = -EINVAL;
err = -EINVAL;
if (x->km.state != XFRM_STATE_VALID)
goto out;
km_state_expired(x, ue->hard, current->pid);
......@@ -1574,6 +1573,7 @@ static int xfrm_add_sa_expire(struct sk_buff *skb, struct nlmsghdr *nlh,
xfrm_audit_log(NETLINK_CB(skb).loginuid, NETLINK_CB(skb).sid,
err = 0;
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment