Merge master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6

* master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6:
[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.

+43 -121
+26
Documentation/networking/ip-sysctl.txt
··· 147 147 More congestion control algorithms may be available as modules, 148 148 but not loaded. 149 149 150 + tcp_base_mss - INTEGER 151 + The initial value of search_low to be used by Packetization Layer 152 + Path MTU Discovery (MTU probing). If MTU probing is enabled, 153 + this is the inital MSS used by the connection. 154 + 150 155 tcp_congestion_control - STRING 151 156 Set the congestion control algorithm to be used for new 152 157 connections. The algorithm "reno" is always available, but ··· 247 242 248 243 Defaults are calculated at boot time from amount of available 249 244 memory. 245 + 246 + tcp_moderate_rcvbuf - BOOLEAN 247 + If set, TCP performs receive buffer autotuning, attempting to 248 + automatically size the buffer (no greater than tcp_rmem[2]) to 249 + match the size required by the path for full throughput. Enabled by 250 + default. 251 + 252 + tcp_mtu_probing - INTEGER 253 + Controls TCP Packetization-Layer Path MTU Discovery. Takes three 254 + values: 255 + 0 - Disabled 256 + 1 - Disabled by default, enabled when an ICMP black hole detected 257 + 2 - Always enabled, use initial MSS of tcp_base_mss. 258 + 259 + tcp_no_metrics_save - BOOLEAN 260 + By default, TCP saves various connection metrics in the route cache 261 + when the connection closes, so that connections established in the 262 + near future can use these to set initial conditions. Usually, this 263 + increases overall performance, but may sometimes cause performance 264 + degredation. If set, TCP will not cache metrics on closing 265 + connections. 250 266 251 267 tcp_orphan_retries - INTEGER 252 268 How may times to retry before killing TCP connection, closed
+1 -1
include/linux/socket.h
··· 16 16 /* _SS_MAXSIZE value minus size of ss_family */ 17 17 } __attribute__ ((aligned(_K_SS_ALIGNSIZE))); /* force desired alignment */ 18 18 19 - #ifdef __KERNEL__ 19 + #if defined(__KERNEL__) || !defined(__GLIBC__) || (__GLIBC__ < 2) 20 20 21 21 #include <asm/socket.h> /* arch-dependent defines */ 22 22 #include <linux/sockios.h> /* the SIOCxxx I/O controls */
+1 -1
include/linux/stat.h
··· 7 7 8 8 #endif 9 9 10 - #ifdef __KERNEL__ 10 + #if defined(__KERNEL__) || !defined(__GLIBC__) || (__GLIBC__ < 2) 11 11 12 12 #define S_IFMT 00170000 13 13 #define S_IFSOCK 0140000
+1 -1
include/net/sock.h
··· 1278 1278 1279 1279 static inline gfp_t gfp_any(void) 1280 1280 { 1281 - return in_softirq() ? GFP_ATOMIC : GFP_KERNEL; 1281 + return in_atomic() ? GFP_ATOMIC : GFP_KERNEL; 1282 1282 } 1283 1283 1284 1284 static inline long sock_rcvtimeo(const struct sock *sk, int noblock)
+1 -2
net/bridge/br_ioctl.c
··· 291 291 if (!capable(CAP_NET_ADMIN)) 292 292 return -EPERM; 293 293 294 - spin_lock_bh(&br->lock); 295 294 if ((p = br_get_port(br, args[1])) == NULL) 296 295 ret = -EINVAL; 297 296 else 298 297 br_stp_set_path_cost(p, args[2]); 299 - spin_unlock_bh(&br->lock); 298 + 300 299 return ret; 301 300 } 302 301
+1 -1
net/core/skbuff.c
··· 2037 2037 err: 2038 2038 while ((skb = segs)) { 2039 2039 segs = skb->next; 2040 - kfree(skb); 2040 + kfree_skb(skb); 2041 2041 } 2042 2042 return ERR_PTR(err); 2043 2043 }
+1 -1
net/dccp/output.c
··· 269 269 err); 270 270 } else { 271 271 dccp_pr_debug("packet discarded\n"); 272 - kfree(skb); 272 + kfree_skb(skb); 273 273 } 274 274 } 275 275 }
+1 -1
net/ipv4/tcp_minisocks.c
··· 381 381 if (newsk != NULL) { 382 382 const struct inet_request_sock *ireq = inet_rsk(req); 383 383 struct tcp_request_sock *treq = tcp_rsk(req); 384 - struct inet_connection_sock *newicsk = inet_csk(sk); 384 + struct inet_connection_sock *newicsk = inet_csk(newsk); 385 385 struct tcp_sock *newtp; 386 386 387 387 /* Now setup tcp_sock */
+2
net/ipv6/addrconf.c
··· 400 400 ipv6_dev_mc_dec(dev, &addr); 401 401 } 402 402 for (ifa=idev->addr_list; ifa; ifa=ifa->if_next) { 403 + if (ifa->flags&IFA_F_TENTATIVE) 404 + continue; 403 405 if (idev->cnf.forwarding) 404 406 addrconf_join_anycast(ifa); 405 407 else
+1
net/ipv6/anycast.c
··· 461 461 break; 462 462 } 463 463 read_unlock_bh(&idev->lock); 464 + in6_dev_put(idev); 464 465 } 465 466 return im; 466 467 }
-101
net/ipx/ChangeLog
··· 1 - Revision 0.21: Uses the new generic socket option code. 2 - 3 - Revision 0.22: Gcc clean ups and drop out device registration. Use the 4 - new multi-protocol edition of hard_header 5 - 6 - Revision 0.23: IPX /proc by Mark Evans. Adding a route will 7 - will overwrite any existing route to the same network. 8 - 9 - Revision 0.24: Supports new /proc with no 4K limit 10 - 11 - Revision 0.25: Add ephemeral sockets, passive local network 12 - identification, support for local net 0 and 13 - multiple datalinks <Greg Page> 14 - 15 - Revision 0.26: Device drop kills IPX routes via it. (needed for module) 16 - 17 - Revision 0.27: Autobind <Mark Evans> 18 - 19 - Revision 0.28: Small fix for multiple local networks <Thomas Winder> 20 - 21 - Revision 0.29: Assorted major errors removed <Mark Evans> 22 - Small correction to promisc mode error fix <Alan Cox> 23 - Asynchronous I/O support. Changed to use notifiers 24 - and the newer packet_type stuff. Assorted major 25 - fixes <Alejandro Liu> 26 - 27 - Revision 0.30: Moved to net/ipx/... <Alan Cox> 28 - Don't set address length on recvfrom that errors. 29 - Incorrect verify_area. 30 - 31 - Revision 0.31: New sk_buffs. This still needs a lot of 32 - testing. <Alan Cox> 33 - 34 - Revision 0.32: Using sock_alloc_send_skb, firewall hooks. <Alan Cox> 35 - Supports sendmsg/recvmsg 36 - 37 - Revision 0.33: Internal network support, routing changes, uses a 38 - protocol private area for ipx data. 39 - 40 - Revision 0.34: Module support. <Jim Freeman> 41 - 42 - Revision 0.35: Checksum support. <Neil Turton>, hooked in by <Alan Cox> 43 - Handles WIN95 discovery packets <Volker Lendecke> 44 - 45 - Revision 0.36: Internal bump up for 2.1 46 - 47 - Revision 0.37: Began adding POSIXisms. 48 - 49 - Revision 0.38: Asynchronous socket stuff made current. 50 - 51 - Revision 0.39: SPX interfaces 52 - 53 - Revision 0.40: Tiny SIOCGSTAMP fix (chris@cybernet.co.nz) 54 - 55 - Revision 0.41: 802.2TR removed (p.norton@computer.org) 56 - Fixed connecting to primary net, 57 - Automatic binding on send & receive, 58 - Martijn van Oosterhout <kleptogimp@geocities.com> 59 - 60 - Revision 042: Multithreading - use spinlocks and refcounting to 61 - protect some structures: ipx_interface sock list, list 62 - of ipx interfaces, etc. 63 - Bugfixes - do refcounting on net_devices, check function 64 - results, etc. Thanks to davem and freitag for 65 - suggestions and guidance. 66 - Arnaldo Carvalho de Melo <acme@conectiva.com.br>, 67 - November, 2000 68 - 69 - Revision 043: Shared SKBs, don't mangle packets, some cleanups 70 - Arnaldo Carvalho de Melo <acme@conectiva.com.br>, 71 - December, 2000 72 - 73 - Revision 044: Call ipxitf_hold on NETDEV_UP - acme 74 - 75 - Revision 045: fix PPROP routing bug - acme 76 - 77 - Revision 046: Further fixes to PPROP, ipxitf_create_internal was 78 - doing an unneeded MOD_INC_USE_COUNT, implement 79 - sysctl for ipx_pprop_broacasting, fix the ipx sysctl 80 - handling, making it dynamic, some cleanups, thanks to 81 - Petr Vandrovec for review and good suggestions. (acme) 82 - 83 - Revision 047: Cleanups, CodingStyle changes, move the ncp connection 84 - hack out of line - acme 85 - 86 - Revision 048: Use sk->protinfo to store the pointer to IPX private 87 - area, remove af_ipx from sk->protinfo and move ipx_opt 88 - to include/net/ipx.h, use IPX_SK like DecNET, etc - acme 89 - 90 - Revision 049: SPX support dropped, see comment in ipx_create - acme 91 - 92 - Revision 050: Use seq_file for proc stuff, moving it to ipx_proc.c - acme 93 - 94 - Other fixes: 95 - 96 - Protect the module by a MOD_INC_USE_COUNT/MOD_DEC_USE_COUNT pair. Also, now 97 - usage count is managed this way: 98 - -Count one if the auto_interface mode is on 99 - -Count one per configured interface 100 - 101 - Jacques Gelinas (jacques@solucorp.qc.ca)
+1 -5
net/ipx/Kconfig
··· 16 16 support", below. 17 17 18 18 IPX is similar in scope to IP, while SPX, which runs on top of IPX, 19 - is similar to TCP. There is also experimental support for SPX in 20 - Linux (see "SPX networking", below). 19 + is similar to TCP. 21 20 22 21 To turn your Linux box into a fully featured NetWare file server and 23 22 IPX router, say Y here and fetch either lwared from ··· 24 25 mars_nwe from <ftp://www.compu-art.de/mars_nwe/>. For more 25 26 information, read the IPX-HOWTO available from 26 27 <http://www.tldp.org/docs.html#howto>. 27 - 28 - General information about how to connect Linux, Windows machines and 29 - Macs is on the WWW at <http://www.eats.com/linux_mac_win.html>. 30 28 31 29 The IPX driver would enlarge your kernel by about 16 KB. To compile 32 30 this driver as a module, choose M here: the module will be called ipx.
+1 -2
net/netfilter/nfnetlink.c
··· 197 197 198 198 int nfnetlink_send(struct sk_buff *skb, u32 pid, unsigned group, int echo) 199 199 { 200 - gfp_t allocation = in_interrupt() ? GFP_ATOMIC : GFP_KERNEL; 201 200 int err = 0; 202 201 203 202 NETLINK_CB(skb).dst_group = group; 204 203 if (echo) 205 204 atomic_inc(&skb->users); 206 - netlink_broadcast(nfnl, skb, pid, group, allocation); 205 + netlink_broadcast(nfnl, skb, pid, group, gfp_any()); 207 206 if (echo) 208 207 err = netlink_unicast(nfnl, skb, pid, MSG_DONTWAIT); 209 208
+1 -1
net/netlabel/netlabel_unlabeled.c
··· 173 173 return 0; 174 174 175 175 list_failure: 176 - kfree(ans_skb); 176 + kfree_skb(ans_skb); 177 177 return ret_val; 178 178 } 179 179
+4 -4
net/xfrm/xfrm_user.c
··· 1401 1401 1402 1402 x = xfrm_state_lookup(&id->daddr, id->spi, id->proto, id->family); 1403 1403 if (x == NULL) { 1404 - kfree(r_skb); 1404 + kfree_skb(r_skb); 1405 1405 return -ESRCH; 1406 1406 } 1407 1407 ··· 1557 1557 struct xfrm_usersa_info *p = &ue->state; 1558 1558 1559 1559 x = xfrm_state_lookup(&p->id.daddr, p->id.spi, p->id.proto, p->family); 1560 - err = -ENOENT; 1561 1560 1561 + err = -ENOENT; 1562 1562 if (x == NULL) 1563 1563 return err; 1564 1564 1565 - err = -EINVAL; 1566 - 1567 1565 spin_lock_bh(&x->lock); 1566 + err = -EINVAL; 1568 1567 if (x->km.state != XFRM_STATE_VALID) 1569 1568 goto out; 1570 1569 km_state_expired(x, ue->hard, current->pid); ··· 1573 1574 xfrm_audit_log(NETLINK_CB(skb).loginuid, NETLINK_CB(skb).sid, 1574 1575 AUDIT_MAC_IPSEC_DELSA, 1, NULL, x); 1575 1576 } 1577 + err = 0; 1576 1578 out: 1577 1579 spin_unlock_bh(&x->lock); 1578 1580 xfrm_state_put(x);