* [PATCHSET] [NET] Various sock struct reorderings
@ 2005-03-09 19:45 Thomas Graf
2005-03-09 19:46 ` [PATCH 1/11] [NET] Reorder struct inet_sock Thomas Graf
` (10 more replies)
0 siblings, 11 replies; 16+ messages in thread
From: Thomas Graf @ 2005-03-09 19:45 UTC (permalink / raw)
To: David S. Miller; +Cc: netdev
The following patchset reorders various sock structures to avoid padding and
shrinks various oversized fields to save space. This will probably break
various external modules so maybe we should defer this.
Savings on my x86 box:
rawv6_sock: 696 -> 668
udpv6_sock: 668 -> 640
tcpv6_sock: 1232 -> 1192
unix_sock: 464 -> 452
raw_sock: 548 -> 524
udp_sock: 556 -> 532
tcp_sock: 1120 -> 1084
sock: 388 -> 376
I didn't benchmark any cachline effects though.
^ permalink raw reply [flat|nested] 16+ messages in thread
* [PATCH 1/11] [NET] Reorder struct inet_sock
2005-03-09 19:45 [PATCHSET] [NET] Various sock struct reorderings Thomas Graf
@ 2005-03-09 19:46 ` Thomas Graf
2005-03-09 19:47 ` [PATCH 2/11] [NET] Convert sk_zapped into SOCK_ZAPPED flag Thomas Graf
` (9 subsequent siblings)
10 siblings, 0 replies; 16+ messages in thread
From: Thomas Graf @ 2005-03-09 19:46 UTC (permalink / raw)
To: David S. Miller; +Cc: netdev
tos: int -> 8bit
uc_ttl: int -> 16 bit
cmsg_flags: int -> 16 bit
hdrincl: 8bit -> 1 bit
mc_loop: 8bit -> 1 bit
Saves 12 bytes together with the reordering.
Signed-off-by: Thomas Graf <tgraf@suug.ch>
diff -Nru linux-2.6.11-rc4.orig/include/linux/ip.h linux-2.6.11-rc4/include/linux/ip.h
--- linux-2.6.11-rc4.orig/include/linux/ip.h 2005-03-08 18:11:22.000000000 +0100
+++ linux-2.6.11-rc4/include/linux/ip.h 2005-03-08 20:26:37.000000000 +0100
@@ -121,18 +121,18 @@
__u16 dport; /* Destination port */
__u16 num; /* Local port */
__u32 saddr; /* Sending source */
- int uc_ttl; /* Unicast TTL */
- int tos; /* TOS */
- unsigned cmsg_flags;
+ __s16 uc_ttl; /* Unicast TTL */
+ __u16 cmsg_flags;
struct ip_options *opt;
__u16 sport; /* Source port */
- unsigned char hdrincl; /* Include headers ? */
+ __u16 id; /* ID counter for DF pkts */
+ __u8 tos; /* TOS */
__u8 mc_ttl; /* Multicasting TTL */
- __u8 mc_loop; /* Loopback */
__u8 pmtudisc;
- __u16 id; /* ID counter for DF pkts */
unsigned recverr : 1,
- freebind : 1;
+ freebind : 1,
+ hdrincl : 1,
+ mc_loop : 1;
int mc_index; /* Multicast device index */
__u32 mc_addr;
struct ip_mc_socklist *mc_list; /* Group array */
^ permalink raw reply [flat|nested] 16+ messages in thread
* [PATCH 2/11] [NET] Convert sk_zapped into SOCK_ZAPPED flag
2005-03-09 19:45 [PATCHSET] [NET] Various sock struct reorderings Thomas Graf
2005-03-09 19:46 ` [PATCH 1/11] [NET] Reorder struct inet_sock Thomas Graf
@ 2005-03-09 19:47 ` Thomas Graf
2005-03-09 19:54 ` Patrick McHardy
2005-03-09 19:47 ` [PATCH 3/11] [NET] Convert sk_user_write_queue into SOCK_USE_WRITE_QUEUE flag Thomas Graf
` (8 subsequent siblings)
10 siblings, 1 reply; 16+ messages in thread
From: Thomas Graf @ 2005-03-09 19:47 UTC (permalink / raw)
To: David S. Miller; +Cc: netdev
Signed-off-by: Thomas Graf <tgraf@suug.ch>
diff -Nru linux-2.6.11-rc4.orig/include/net/sock.h linux-2.6.11-rc4/include/net/sock.h
--- linux-2.6.11-rc4.orig/include/net/sock.h 2005-03-08 18:11:24.000000000 +0100
+++ linux-2.6.11-rc4/include/net/sock.h 2005-03-08 23:56:08.000000000 +0100
@@ -115,7 +115,6 @@
/**
* struct sock - network layer representation of sockets
* @__sk_common - shared layout with tcp_tw_bucket
- * @sk_zapped - ax25 & ipx means !linked
* @sk_shutdown - mask of %SEND_SHUTDOWN and/or %RCV_SHUTDOWN
* @sk_use_write_queue - wheter to call sk->sk_write_space in sock_wfree
* @sk_userlocks - %SO_SNDBUF and %SO_RCVBUF settings
@@ -191,7 +190,6 @@
#define sk_node __sk_common.skc_node
#define sk_bind_node __sk_common.skc_bind_node
#define sk_refcnt __sk_common.skc_refcnt
- volatile unsigned char sk_zapped;
unsigned char sk_shutdown;
unsigned char sk_use_write_queue;
unsigned char sk_userlocks;
@@ -391,6 +389,7 @@
SOCK_DESTROY,
SOCK_BROADCAST,
SOCK_TIMESTAMP,
+ SOCK_ZAPPED,
};
static inline void sock_set_flag(struct sock *sk, enum sock_flags flag)
diff -Nru linux-2.6.11-rc4.orig/net/appletalk/ddp.c linux-2.6.11-rc4/net/appletalk/ddp.c
--- linux-2.6.11-rc4.orig/net/appletalk/ddp.c 2005-03-08 18:11:29.000000000 +0100
+++ linux-2.6.11-rc4/net/appletalk/ddp.c 2005-03-08 23:51:06.000000000 +0100
@@ -1041,7 +1041,7 @@
sk_set_owner(sk, THIS_MODULE);
/* Checksums on by default */
- sk->sk_zapped = 1;
+ sock_set_flag(sk, SOCK_ZAPPED);
out:
return rc;
}
@@ -1120,7 +1120,7 @@
n = atalk_pick_and_bind_port(sk, &sat);
if (!n)
- sk->sk_zapped = 0;
+ sock_reset_flag(sk, SOCK_ZAPPED);
out:
return n;
}
@@ -1132,7 +1132,8 @@
struct sock *sk = sock->sk;
struct atalk_sock *at = at_sk(sk);
- if (!sk->sk_zapped || addr_len != sizeof(struct sockaddr_at))
+ if (!sock_flag(sk, SOCK_ZAPPED) ||
+ addr_len != sizeof(struct sockaddr_at))
return -EINVAL;
if (addr->sat_family != AF_APPLETALK)
@@ -1167,7 +1168,7 @@
return -EADDRINUSE;
}
- sk->sk_zapped = 0;
+ sock_reset_flag(sk, SOCK_ZAPPED);
return 0;
}
@@ -1202,7 +1203,7 @@
#endif
}
- if (sk->sk_zapped)
+ if (sock_flag(sk, SOCK_ZAPPED))
if (atalk_autobind(sk) < 0)
return -EBUSY;
@@ -1229,7 +1230,7 @@
struct sock *sk = sock->sk;
struct atalk_sock *at = at_sk(sk);
- if (sk->sk_zapped)
+ if (sock_flag(sk, SOCK_ZAPPED))
if (atalk_autobind(sk) < 0)
return -ENOBUFS;
@@ -1551,7 +1552,7 @@
return -EMSGSIZE;
if (usat) {
- if (sk->sk_zapped)
+ if (sock_flag(sk, SOCK_ZAPPED))
if (atalk_autobind(sk) < 0)
return -EBUSY;
diff -Nru linux-2.6.11-rc4.orig/net/ax25/af_ax25.c linux-2.6.11-rc4/net/ax25/af_ax25.c
--- linux-2.6.11-rc4.orig/net/ax25/af_ax25.c 2005-03-08 18:11:28.000000000 +0100
+++ linux-2.6.11-rc4/net/ax25/af_ax25.c 2005-03-08 23:51:06.000000000 +0100
@@ -871,7 +871,9 @@
sk->sk_debug = osk->sk_debug;
sk->sk_state = TCP_ESTABLISHED;
sk->sk_sleep = osk->sk_sleep;
- sk->sk_zapped = osk->sk_zapped;
+
+ if (sock_flag(osk, SOCK_ZAPPED))
+ sock_set_flag(sk, SOCK_ZAPPED);
oax25 = ax25_sk(osk);
@@ -1025,7 +1027,7 @@
lock_sock(sk);
ax25 = ax25_sk(sk);
- if (!sk->sk_zapped) {
+ if (!sock_flag(sk, SOCK_ZAPPED)) {
err = -EINVAL;
goto out;
}
@@ -1059,7 +1061,7 @@
done:
ax25_cb_add(ax25);
- sk->sk_zapped = 0;
+ sock_reset_flag(sk, SOCK_ZAPPED);
out:
release_sock(sk);
@@ -1172,7 +1174,7 @@
* the socket is already bound, check to see if the device has
* been filled in, error if it hasn't.
*/
- if (sk->sk_zapped) {
+ if (sock_flag(sk, SOCK_ZAPPED)) {
/* check if we can remove this feature. It is broken. */
printk(KERN_WARNING "ax25_connect(): %s uses autobind, please contact jreuter@yaina.de\n",
current->comm);
@@ -1420,7 +1422,7 @@
lock_sock(sk);
ax25 = ax25_sk(sk);
- if (sk->sk_zapped) {
+ if (sock_flag(sk, SOCK_ZAPPED))
err = -EADDRNOTAVAIL;
goto out;
}
diff -Nru linux-2.6.11-rc4.orig/net/ax25/ax25_route.c linux-2.6.11-rc4/net/ax25/ax25_route.c
--- linux-2.6.11-rc4.orig/net/ax25/ax25_route.c 2005-03-08 18:11:28.000000000 +0100
+++ linux-2.6.11-rc4/net/ax25/ax25_route.c 2005-03-08 23:51:06.000000000 +0100
@@ -455,7 +455,7 @@
if (ax25->sk != NULL) {
bh_lock_sock(ax25->sk);
- ax25->sk->sk_zapped = 0;
+ sock_reset_flag(ax25->sk, SOCK_ZAPPED);
bh_unlock_sock(ax25->sk);
}
diff -Nru linux-2.6.11-rc4.orig/net/bluetooth/af_bluetooth.c linux-2.6.11-rc4/net/bluetooth/af_bluetooth.c
--- linux-2.6.11-rc4.orig/net/bluetooth/af_bluetooth.c 2005-03-08 18:11:28.000000000 +0100
+++ linux-2.6.11-rc4/net/bluetooth/af_bluetooth.c 2005-03-08 23:51:06.000000000 +0100
@@ -130,7 +130,7 @@
sock_init_data(sock, sk);
INIT_LIST_HEAD(&bt_sk(sk)->accept_q);
- sk->sk_zapped = 0;
+ sock_reset_flag(sk, SOCK_ZAPPED);
sk->sk_protocol = proto;
sk->sk_state = BT_OPEN;
diff -Nru linux-2.6.11-rc4.orig/net/bluetooth/l2cap.c linux-2.6.11-rc4/net/bluetooth/l2cap.c
--- linux-2.6.11-rc4.orig/net/bluetooth/l2cap.c 2005-03-08 18:11:28.000000000 +0100
+++ linux-2.6.11-rc4/net/bluetooth/l2cap.c 2005-03-08 23:51:06.000000000 +0100
@@ -280,7 +280,7 @@
l2cap_sock_close(sk);
parent->sk_state = BT_CLOSED;
- parent->sk_zapped = 1;
+ sock_set_flag(parent, SOCK_ZAPPED);
}
/* Kill socket (only if zapped and orphan)
@@ -288,7 +288,7 @@
*/
static void l2cap_sock_kill(struct sock *sk)
{
- if (!sk->sk_zapped || sk->sk_socket)
+ if (!sock_flag(sk, SOCK_ZAPPED) || sk->sk_socket)
return;
BT_DBG("sk %p state %d", sk, sk->sk_state);
@@ -333,7 +333,7 @@
break;
default:
- sk->sk_zapped = 1;
+ sock_set_flag(sk, SOCK_ZAPPED);
break;
}
}
@@ -1062,7 +1062,7 @@
}
sk->sk_state = BT_CLOSED;
- sk->sk_zapped = 1;
+ sock_set_flag(sk, SOCK_ZAPPED);
if (err)
sk->sk_err = err;
@@ -1424,7 +1424,7 @@
/* Check if we already have channel with that dcid */
if (__l2cap_get_chan_by_dcid(list, scid)) {
write_unlock(&list->lock);
- sk->sk_zapped = 1;
+ sock_set_flag(sk, SOCK_ZAPPED);
l2cap_sock_kill(sk);
goto response;
}
diff -Nru linux-2.6.11-rc4.orig/net/bluetooth/rfcomm/sock.c linux-2.6.11-rc4/net/bluetooth/rfcomm/sock.c
--- linux-2.6.11-rc4.orig/net/bluetooth/rfcomm/sock.c 2005-03-08 18:11:28.000000000 +0100
+++ linux-2.6.11-rc4/net/bluetooth/rfcomm/sock.c 2005-03-08 23:51:06.000000000 +0100
@@ -105,7 +105,7 @@
parent = bt_sk(sk)->parent;
if (parent) {
if (d->state == BT_CLOSED) {
- sk->sk_zapped = 1;
+ sock_set_flag(sk, SOCK_ZAPPED);
bt_accept_unlink(sk);
}
parent->sk_data_ready(parent, 0);
@@ -117,7 +117,7 @@
bh_unlock_sock(sk);
- if (parent && sk->sk_zapped) {
+ if (parent && sock_flag(sk, SOCK_ZAPPED)) {
/* We have to drop DLC lock here, otherwise
* rfcomm_sock_destruct() will dead lock. */
rfcomm_dlc_unlock(d);
@@ -214,7 +214,7 @@
}
parent->sk_state = BT_CLOSED;
- parent->sk_zapped = 1;
+ sock_set_flag(parent, SOCK_ZAPPED);
}
/* Kill socket (only if zapped and orphan)
@@ -222,7 +222,7 @@
*/
static void rfcomm_sock_kill(struct sock *sk)
{
- if (!sk->sk_zapped || sk->sk_socket)
+ if (!sock_flag(sk, SOCK_ZAPPED) || sk->sk_socket)
return;
BT_DBG("sk %p state %d refcnt %d", sk, sk->sk_state, atomic_read(&sk->sk_refcnt));
@@ -251,7 +251,7 @@
rfcomm_dlc_close(d, 0);
default:
- sk->sk_zapped = 1;
+ sock_set_flag(sk, SOCK_ZAPPED);
break;
}
}
diff -Nru linux-2.6.11-rc4.orig/net/bluetooth/sco.c linux-2.6.11-rc4/net/bluetooth/sco.c
--- linux-2.6.11-rc4.orig/net/bluetooth/sco.c 2005-03-08 18:11:28.000000000 +0100
+++ linux-2.6.11-rc4/net/bluetooth/sco.c 2005-03-08 23:51:06.000000000 +0100
@@ -352,7 +352,7 @@
}
parent->sk_state = BT_CLOSED;
- parent->sk_zapped = 1;
+ sock_set_flag(sk, SOCK_ZAPPED);
}
/* Kill socket (only if zapped and orphan)
@@ -360,7 +360,7 @@
*/
static void sco_sock_kill(struct sock *sk)
{
- if (!sk->sk_zapped || sk->sk_socket)
+ if (!sock_flag(sk, SOCK_ZAPPED) || sk->sk_socket)
return;
BT_DBG("sk %p state %d", sk, sk->sk_state);
@@ -399,7 +399,7 @@
break;
default:
- sk->sk_zapped = 1;
+ sock_set_flag(sk, SOCK_ZAPPED);
break;
};
@@ -778,7 +778,7 @@
sk->sk_err = err;
sk->sk_state_change(sk);
- sk->sk_zapped = 1;
+ sock_set_flag(sk, SOCK_ZAPPED);
}
static void sco_conn_ready(struct sco_conn *conn)
diff -Nru linux-2.6.11-rc4.orig/net/core/sock.c linux-2.6.11-rc4/net/core/sock.c
--- linux-2.6.11-rc4.orig/net/core/sock.c 2005-03-08 18:11:27.000000000 +0100
+++ linux-2.6.11-rc4/net/core/sock.c 2005-03-08 23:51:06.000000000 +0100
@@ -1186,9 +1186,10 @@
sk->sk_rcvbuf = sysctl_rmem_default;
sk->sk_sndbuf = sysctl_wmem_default;
sk->sk_state = TCP_CLOSE;
- sk->sk_zapped = 1;
sk->sk_socket = sock;
+ sock_set_flag(sk, SOCK_ZAPPED);
+
if(sock)
{
sk->sk_type = sock->type;
diff -Nru linux-2.6.11-rc4.orig/net/decnet/af_decnet.c linux-2.6.11-rc4/net/decnet/af_decnet.c
--- linux-2.6.11-rc4.orig/net/decnet/af_decnet.c 2005-03-08 18:11:29.000000000 +0100
+++ linux-2.6.11-rc4/net/decnet/af_decnet.c 2005-03-08 23:51:06.000000000 +0100
@@ -750,14 +750,13 @@
rv = -EINVAL;
lock_sock(sk);
- if (sk->sk_zapped) {
+ if (sock_flag(sk, SOCK_ZAPPED)) {
memcpy(&scp->addr, saddr, addr_len);
- sk->sk_zapped = 0;
+ sock_reset_flag(sk, SOCK_ZAPPED);
rv = dn_hash_sock(sk);
- if (rv) {
- sk->sk_zapped = 1;
- }
+ if (rv)
+ sock_set_flag(sk, SOCK_ZAPPED);
}
release_sock(sk);
@@ -771,7 +770,7 @@
struct dn_scp *scp = DN_SK(sk);
int rv;
- sk->sk_zapped = 0;
+ sock_reset_flag(sk, SOCK_ZAPPED);
scp->addr.sdn_flags = 0;
scp->addr.sdn_objnum = 0;
@@ -795,9 +794,8 @@
rv = dn_dev_bind_default((dn_address *)scp->addr.sdn_add.a_addr);
if (rv == 0) {
rv = dn_hash_sock(sk);
- if (rv) {
- sk->sk_zapped = 1;
- }
+ if (rv)
+ sock_set_flag(sk, SOCK_ZAPPED);
}
return rv;
@@ -922,7 +920,7 @@
if (addr->sdn_flags & SDF_WILD)
goto out;
- if (sk->sk_zapped) {
+ if (sock_flag(sk, SOCK_ZAPPED)) {
err = dn_auto_bind(sk->sk_socket);
if (err)
goto out;
@@ -1141,7 +1139,7 @@
lock_sock(newsk);
err = dn_hash_sock(newsk);
if (err == 0) {
- newsk->sk_zapped = 0;
+ sock_reset_flag(newsk, SOCK_ZAPPED);
dn_send_conn_ack(newsk);
/*
@@ -1259,7 +1257,7 @@
lock_sock(sk);
- if (sk->sk_zapped)
+ if (sock_flag(sk, SOCK_ZAPPED))
goto out;
if ((DN_SK(sk)->state != DN_O) || (sk->sk_state == TCP_LISTEN))
@@ -1671,7 +1669,7 @@
lock_sock(sk);
- if (sk->sk_zapped) {
+ if (sock_flag(sk, SOCK_ZAPPED)) {
rv = -EADDRNOTAVAIL;
goto out;
}
diff -Nru linux-2.6.11-rc4.orig/net/econet/af_econet.c linux-2.6.11-rc4/net/econet/af_econet.c
--- linux-2.6.11-rc4.orig/net/econet/af_econet.c 2005-03-08 18:11:29.000000000 +0100
+++ linux-2.6.11-rc4/net/econet/af_econet.c 2005-03-08 23:51:06.000000000 +0100
@@ -583,7 +583,7 @@
sk_set_owner(sk, THIS_MODULE);
eo = ec_sk(sk);
- sk->sk_zapped = 0;
+ sock_reset_flag(sk, SOCK_ZAPPED);
sk->sk_family = PF_ECONET;
eo->num = protocol;
diff -Nru linux-2.6.11-rc4.orig/net/ipx/af_ipx.c linux-2.6.11-rc4/net/ipx/af_ipx.c
--- linux-2.6.11-rc4.orig/net/ipx/af_ipx.c 2005-03-08 18:11:28.000000000 +0100
+++ linux-2.6.11-rc4/net/ipx/af_ipx.c 2005-03-08 23:51:06.000000000 +0100
@@ -310,7 +310,7 @@
s->sk_error_report(s);
ipxs->intrfc = NULL;
ipxs->port = 0;
- s->sk_zapped = 1; /* Indicates it is no longer bound */
+ sock_set_flag(s, SOCK_ZAPPED); /* Indicates it is no longer bound */
sk_del_node_init(s);
}
INIT_HLIST_HEAD(&intrfc->if_sklist);
@@ -1427,7 +1427,7 @@
struct sockaddr_ipx *addr = (struct sockaddr_ipx *)uaddr;
int rc = -EINVAL;
- if (!sk->sk_zapped || addr_len != sizeof(struct sockaddr_ipx))
+ if (!sock_flag(sk, SOCK_ZAPPED) || addr_len != sizeof(struct sockaddr_ipx))
goto out;
intrfc = ipxitf_find_using_net(addr->sipx_network);
@@ -1505,7 +1505,7 @@
#endif /* CONFIG_IPX_INTERN */
ipxitf_insert_socket(intrfc, sk);
- sk->sk_zapped = 0;
+ sock_reset_flag(sk, SOCK_ZAPPED);
rc = 0;
out_put:
@@ -1774,7 +1774,7 @@
}
rc = -ENOTCONN;
- if (sk->sk_zapped)
+ if (sock_flag(sk, SOCK_ZAPPED))
goto out;
skb = skb_recv_datagram(sk, flags & ~MSG_DONTWAIT,
diff -Nru linux-2.6.11-rc4.orig/net/llc/af_llc.c linux-2.6.11-rc4/net/llc/af_llc.c
--- linux-2.6.11-rc4.orig/net/llc/af_llc.c 2005-03-08 18:11:28.000000000 +0100
+++ linux-2.6.11-rc4/net/llc/af_llc.c 2005-03-08 23:51:06.000000000 +0100
@@ -180,7 +180,7 @@
llc->laddr.lsap, llc->daddr.lsap);
if (!llc_send_disc(sk))
llc_ui_wait_for_disc(sk, sk->sk_rcvtimeo);
- if (!sk->sk_zapped)
+ if (!sock_flag(sk, SOCK_ZAPPED))
llc_sap_remove_socket(llc->sap, sk);
release_sock(sk);
if (llc->sap && hlist_empty(&llc->sap->sk_list.list)) {
@@ -248,7 +248,7 @@
struct llc_sap *sap;
int rc = -EINVAL;
- if (!sk->sk_zapped)
+ if (!sock_flag(sk, SOCK_ZAPPED))
goto out;
rc = -ENODEV;
llc->dev = dev_getfirstbyhwtype(addr->sllc_arphrd);
@@ -266,7 +266,8 @@
memcpy(&llc->addr, addr, sizeof(llc->addr));
/* assign new connection to its SAP */
llc_sap_add_socket(sap, sk);
- rc = sk->sk_zapped = 0;
+ sock_reset_flag(sk, SOCK_ZAPPED);
+ rc = 0;
out:
return rc;
}
@@ -298,7 +299,7 @@
int rc = -EINVAL;
dprintk("%s: binding %02X\n", __FUNCTION__, addr->sllc_sap);
- if (!sk->sk_zapped || addrlen != sizeof(*addr))
+ if (!sock_flag(sk, SOCK_ZAPPED) || addrlen != sizeof(*addr))
goto out;
rc = -EAFNOSUPPORT;
if (addr->sllc_family != AF_LLC)
@@ -339,7 +340,8 @@
memcpy(&llc->addr, addr, sizeof(llc->addr));
/* assign new connection to its SAP */
llc_sap_add_socket(sap, sk);
- rc = sk->sk_zapped = 0;
+ sock_reset_flag(sk, SOCK_ZAPPED);
+ rc = 0;
out:
return rc;
}
@@ -406,7 +408,7 @@
if (addr->sllc_family != AF_LLC)
goto out;
/* bind connection to sap if user hasn't done it. */
- if (sk->sk_zapped) {
+ if (sock_flag(sk, SOCK_ZAPPED)) {
/* bind to sap with null dev, exclusive */
rc = llc_ui_autobind(sock, addr);
if (rc)
@@ -459,7 +461,7 @@
if (sk->sk_type != SOCK_STREAM)
goto out;
rc = -EAGAIN;
- if (sk->sk_zapped)
+ if (sock_flag(sk, SOCK_ZAPPED))
goto out;
rc = 0;
if (!(unsigned)backlog) /* BSDism */
@@ -638,7 +640,7 @@
newsk = skb->sk;
/* attach connection to a new socket. */
llc_ui_sk_init(newsock, newsk);
- newsk->sk_zapped = 0;
+ sock_reset_flag(newsk, SOCK_ZAPPED);
newsk->sk_state = TCP_ESTABLISHED;
newsock->state = SS_CONNECTED;
llc = llc_sk(sk);
@@ -749,7 +751,7 @@
addr = &llc->addr;
}
/* must bind connection to sap if user hasn't done it. */
- if (sk->sk_zapped) {
+ if (sock_flag(sk, SOCK_ZAPPED)) {
/* bind to sap with null dev, exclusive. */
rc = llc_ui_autobind(sock, addr);
if (rc)
@@ -823,7 +825,7 @@
int rc = 0;
lock_sock(sk);
- if (sk->sk_zapped)
+ if (sock_flag(sk, SOCK_ZAPPED))
goto out;
*uaddrlen = sizeof(sllc);
memset(uaddr, 0, *uaddrlen);
diff -Nru linux-2.6.11-rc4.orig/net/netrom/af_netrom.c linux-2.6.11-rc4/net/netrom/af_netrom.c
--- linux-2.6.11-rc4.orig/net/netrom/af_netrom.c 2005-03-08 18:11:29.000000000 +0100
+++ linux-2.6.11-rc4/net/netrom/af_netrom.c 2005-03-08 23:51:06.000000000 +0100
@@ -479,7 +479,9 @@
sk->sk_debug = osk->sk_debug;
sk->sk_state = TCP_ESTABLISHED;
sk->sk_sleep = osk->sk_sleep;
- sk->sk_zapped = osk->sk_zapped;
+
+ if (sock_flag(osk, SOCK_ZAPPED))
+ sock_set_flag(sk, SOCK_ZAPPED);
skb_queue_head_init(&nr->ack_queue);
skb_queue_head_init(&nr->reseq_queue);
@@ -559,7 +561,7 @@
ax25_address *user, *source;
lock_sock(sk);
- if (!sk->sk_zapped) {
+ if (!sock_flag(sk, SOCK_ZAPPED)) {
release_sock(sk);
return -EINVAL;
}
@@ -611,7 +613,7 @@
nr->device = dev;
nr_insert_socket(sk);
- sk->sk_zapped = 0;
+ sock_reset_flag(sk, SOCK_ZAPPED);
dev_put(dev);
release_sock(sk);
SOCK_DEBUG(sk, "NET/ROM: socket is bound\n");
@@ -656,8 +658,8 @@
release_sock(sk);
return -EINVAL;
}
- if (sk->sk_zapped) { /* Must bind first - autobinding in this may or may not work */
- sk->sk_zapped = 0;
+ if (sock_flag(sk, SOCK_ZAPPED)) { /* Must bind first - autobinding in this may or may not work */
+ sock_reset_flag(sk, SOCK_ZAPPED);
if ((dev = nr_dev_first()) == NULL) {
release_sock(sk);
@@ -1024,7 +1026,7 @@
return -EINVAL;
lock_sock(sk);
- if (sk->sk_zapped) {
+ if (sock_flag(sk, SOCK_ZAPPED)) {
err = -EADDRNOTAVAIL;
goto out;
}
diff -Nru linux-2.6.11-rc4.orig/net/rose/af_rose.c linux-2.6.11-rc4/net/rose/af_rose.c
--- linux-2.6.11-rc4.orig/net/rose/af_rose.c 2005-03-08 18:11:28.000000000 +0100
+++ linux-2.6.11-rc4/net/rose/af_rose.c 2005-03-08 23:51:06.000000000 +0100
@@ -575,7 +575,9 @@
sk->sk_debug = osk->sk_debug;
sk->sk_state = TCP_ESTABLISHED;
sk->sk_sleep = osk->sk_sleep;
- sk->sk_zapped = osk->sk_zapped;
+
+ if (sock_flag(osk, SOCK_ZAPPED))
+ sock_set_flag(sk, SOCK_ZAPPED);
init_timer(&rose->timer);
init_timer(&rose->idletimer);
@@ -648,7 +650,7 @@
ax25_address *user, *source;
int n;
- if (!sk->sk_zapped)
+ if (!sock_flag(sk, SOCK_ZAPPED))
return -EINVAL;
if (addr_len != sizeof(struct sockaddr_rose) && addr_len != sizeof(struct full_sockaddr_rose))
@@ -693,7 +695,7 @@
rose_insert_socket(sk);
- sk->sk_zapped = 0;
+ sock_reset_flag(sk, SOCK_ZAPPED);
SOCK_DEBUG(sk, "ROSE: socket is bound\n");
return 0;
}
@@ -749,8 +751,8 @@
if (!rose->lci)
return -ENETUNREACH;
- if (sk->sk_zapped) { /* Must bind first - autobinding in this may or may not work */
- sk->sk_zapped = 0;
+ if (sock_flag(sk, SOCK_ZAPPED)) { /* Must bind first - autobinding in this may or may not work */
+ sock_reset_flag(sk, SOCK_ZAPPED);
if ((dev = rose_dev_first()) == NULL)
return -ENETUNREACH;
@@ -1023,7 +1025,7 @@
if (msg->msg_flags & ~(MSG_DONTWAIT|MSG_EOR|MSG_CMSG_COMPAT))
return -EINVAL;
- if (sk->sk_zapped)
+ if (sock_flag(sk, SOCK_ZAPPED))
return -EADDRNOTAVAIL;
if (sk->sk_shutdown & SEND_SHUTDOWN) {
diff -Nru linux-2.6.11-rc4.orig/net/sctp/ipv6.c linux-2.6.11-rc4/net/sctp/ipv6.c
--- linux-2.6.11-rc4.orig/net/sctp/ipv6.c 2005-03-08 18:11:28.000000000 +0100
+++ linux-2.6.11-rc4/net/sctp/ipv6.c 2005-03-08 23:51:06.000000000 +0100
@@ -609,11 +609,11 @@
newsk->sk_reuse = sk->sk_reuse;
newsk->sk_destruct = inet_sock_destruct;
- newsk->sk_zapped = 0;
newsk->sk_family = PF_INET6;
newsk->sk_protocol = IPPROTO_SCTP;
newsk->sk_backlog_rcv = sk->sk_prot->backlog_rcv;
newsk->sk_shutdown = sk->sk_shutdown;
+ sock_reset_flag(sk, SOCK_ZAPPED);
newsctp6sk = (struct sctp6_sock *)newsk;
inet_sk(newsk)->pinet6 = &newsctp6sk->inet6;
diff -Nru linux-2.6.11-rc4.orig/net/sctp/protocol.c linux-2.6.11-rc4/net/sctp/protocol.c
--- linux-2.6.11-rc4.orig/net/sctp/protocol.c 2005-03-08 18:11:28.000000000 +0100
+++ linux-2.6.11-rc4/net/sctp/protocol.c 2005-03-08 23:51:06.000000000 +0100
@@ -570,10 +570,10 @@
newsk->sk_shutdown = sk->sk_shutdown;
newsk->sk_destruct = inet_sock_destruct;
- newsk->sk_zapped = 0;
newsk->sk_family = PF_INET;
newsk->sk_protocol = IPPROTO_SCTP;
newsk->sk_backlog_rcv = sk->sk_prot->backlog_rcv;
+ sock_reset_flag(newsk, SOCK_ZAPPED);
newinet = inet_sk(newsk);
diff -Nru linux-2.6.11-rc4.orig/net/sunrpc/xprt.c linux-2.6.11-rc4/net/sunrpc/xprt.c
--- linux-2.6.11-rc4.orig/net/sunrpc/xprt.c 2005-03-08 18:11:28.000000000 +0100
+++ linux-2.6.11-rc4/net/sunrpc/xprt.c 2005-03-08 23:51:06.000000000 +0100
@@ -1044,7 +1044,8 @@
dprintk("RPC: tcp_state_change client %p...\n", xprt);
dprintk("RPC: state %x conn %d dead %d zapped %d\n",
sk->sk_state, xprt_connected(xprt),
- sock_flag(sk, SOCK_DEAD), sk->sk_zapped);
+ sock_flag(sk, SOCK_DEAD),
+ sock_flag(sk, SOCK_ZAPPED));
switch (sk->sk_state) {
case TCP_ESTABLISHED:
diff -Nru linux-2.6.11-rc4.orig/net/wanrouter/af_wanpipe.c linux-2.6.11-rc4/net/wanrouter/af_wanpipe.c
--- linux-2.6.11-rc4.orig/net/wanrouter/af_wanpipe.c 2005-03-08 18:11:28.000000000 +0100
+++ linux-2.6.11-rc4/net/wanrouter/af_wanpipe.c 2005-03-08 23:51:06.000000000 +0100
@@ -394,7 +394,7 @@
chan->lcn = mbox_ptr->cmd.lcn;
card->u.x.svc_to_dev_map[(chan->lcn%MAX_X25_LCN)] = dev;
- newsk->sk_zapped = 0;
+ sock_reset_flag(newsk, SOCK_ZAPPED);
newwp->num = htons(X25_PROT);
if (wanpipe_do_bind(newsk, dev, newwp->num)) {
@@ -546,7 +546,7 @@
int ifindex, err, reserve = 0;
- if (!sk->sk_zapped)
+ if (!sock_flag(sk, SOCK_ZAPPED))
return -ENETDOWN;
if (sk->sk_state != WANSOCK_CONNECTED)
@@ -672,7 +672,7 @@
return;
}
- if (sk->sk_state != WANSOCK_CONNECTED || !sk->sk_zapped) {
+ if (sk->sk_state != WANSOCK_CONNECTED || !sock_flag(sk, SOCK_ZAPPED)) {
clear_bit(0, &wp->timer);
DBG_PRINTK(KERN_INFO "wansock: Tx Timer, State not CONNECTED\n");
return;
@@ -865,7 +865,7 @@
struct net_device *dev;
wanpipe_common_t *chan=NULL;
- sk->sk_zapped = 0;
+ sock_reset_flag(sk, SOCK_ZAPPED);
sk->sk_state = WANSOCK_DISCONNECTED;
wp_sk(sk)->dev = NULL;
@@ -914,7 +914,7 @@
chan->mbox = wp->mbox;
chan->tx_timer = &wp->tx_timer;
wp->dev = dev;
- sk->sk_zapped = 1;
+ sock_set_flag(sk, SOCK_ZAPPED);
clear_bit(0,&chan->common_critical);
}
@@ -964,7 +964,7 @@
*/
if (wp->num == htons(X25_PROT) &&
- sk->sk_state != WANSOCK_DISCONNECTED && sk->sk_zapped) {
+ sk->sk_state != WANSOCK_DISCONNECTED && sock_flag(sk, SOCK_ZAPPED)) {
struct net_device *dev = dev_get_by_index(sk->sk_bound_dev_if);
wanpipe_common_t *chan;
if (dev){
@@ -1075,15 +1075,15 @@
}
kfree_skb(skb);
}
- if (sk->sk_zapped)
+ if (sock_flag(sk, SOCK_ZAPPED))
wanpipe_unlink_card(sk);
}else{
- if (sk->sk_zapped)
+ if (sock_flag(sk, SOCK_ZAPPED))
wanpipe_unlink_driver(sk);
}
sk->sk_state = WANSOCK_DISCONNECTED;
sk->sk_bound_dev_if = 0;
- sk->sk_zapped = 0;
+ sock_reset_flag(sk, SOCK_ZAPPED);
wp = wp_sk(sk);
if (wp && wp->mbox) {
@@ -1261,7 +1261,7 @@
wanpipe_common_t *chan=NULL;
int err=0;
- if (sk->sk_zapped) {
+ if (sock_flag(sk, SOCK_ZAPPED)) {
err = -EALREADY;
goto bind_unlock_exit;
}
@@ -1515,7 +1515,7 @@
sock->ops = &wanpipe_ops;
sock_init_data(sock,sk);
- sk->sk_zapped = 0;
+ sock_reset_flag(sk, SOCK_ZAPPED);
sk->sk_family = PF_WANPIPE;
wp_sk(sk)->num = protocol;
sk->sk_state = WANSOCK_DISCONNECTED;
@@ -1721,7 +1721,7 @@
case NETDEV_UNREGISTER:
if (dev->ifindex == sk->sk_bound_dev_if) {
printk(KERN_INFO "wansock: Device down %s\n",dev->name);
- if (sk->sk_zapped) {
+ if (sock_flag(sk, SOCK_ZAPPED)) {
wanpipe_unlink_driver(sk);
sk->sk_err = ENETDOWN;
sk->sk_error_report(sk);
@@ -1737,7 +1737,7 @@
break;
case NETDEV_UP:
if (dev->ifindex == sk->sk_bound_dev_if &&
- po->num && !sk->sk_zapped) {
+ po->num && !sock_flag(sk, SOCK_ZAPPED)) {
printk(KERN_INFO "wansock: Registering Device: %s\n",
dev->name);
wanpipe_link_driver(dev,sk);
@@ -2160,7 +2160,7 @@
card->sk=sk;
card->func=wanpipe_listen_rcv;
- sk->sk_zapped = 1;
+ sock_set_flag(sk, SOCK_ZAPPED);
return 0;
}
@@ -2504,7 +2504,7 @@
dev_put(dev);
- if (!sk->sk_zapped) /* Must bind first - autobinding does not work */
+ if (!sock_flag(sk, SOCK_ZAPPED)) /* Must bind first - autobinding does not work */
return -EINVAL;
sock->state = SS_CONNECTING;
diff -Nru linux-2.6.11-rc4.orig/net/x25/af_x25.c linux-2.6.11-rc4/net/x25/af_x25.c
--- linux-2.6.11-rc4.orig/net/x25/af_x25.c 2005-03-08 18:11:28.000000000 +0100
+++ linux-2.6.11-rc4/net/x25/af_x25.c 2005-03-08 23:51:06.000000000 +0100
@@ -528,9 +528,11 @@
sk->sk_debug = osk->sk_debug;
sk->sk_state = TCP_ESTABLISHED;
sk->sk_sleep = osk->sk_sleep;
- sk->sk_zapped = osk->sk_zapped;
sk->sk_backlog_rcv = osk->sk_backlog_rcv;
+ if (sock_flag(osk, SOCK_ZAPPED))
+ sock_set_flag(sk, SOCK_ZAPPED);
+
ox25 = x25_sk(osk);
x25->t21 = ox25->t21;
x25->t22 = ox25->t22;
@@ -588,14 +590,14 @@
struct sock *sk = sock->sk;
struct sockaddr_x25 *addr = (struct sockaddr_x25 *)uaddr;
- if (!sk->sk_zapped ||
+ if (!sock_flag(sk, SOCK_ZAPPED) ||
addr_len != sizeof(struct sockaddr_x25) ||
addr->sx25_family != AF_X25)
return -EINVAL;
x25_sk(sk)->source_addr = addr->sx25_addr;
x25_insert_socket(sk);
- sk->sk_zapped = 0;
+ sock_reset_flag(sk, SOCK_ZAPPED);
SOCK_DEBUG(sk, "x25_bind: socket is bound\n");
return 0;
@@ -679,7 +681,7 @@
goto out_put_neigh;
rc = -EINVAL;
- if (sk->sk_zapped) /* Must bind first - autobinding does not work */
+ if (sock_flag(sk, SOCK_ZAPPED)) /* Must bind first - autobinding does not work */
goto out_put_neigh;
if (!strcmp(x25->source_addr.x25_addr, null_x25_address.x25_addr))
@@ -942,7 +944,7 @@
goto out;
rc = -EADDRNOTAVAIL;
- if (sk->sk_zapped)
+ if (sock_flag(sk, SOCK_ZAPPED))
goto out;
rc = -EPIPE;
^ permalink raw reply [flat|nested] 16+ messages in thread
* [PATCH 3/11] [NET] Convert sk_user_write_queue into SOCK_USE_WRITE_QUEUE flag
2005-03-09 19:45 [PATCHSET] [NET] Various sock struct reorderings Thomas Graf
2005-03-09 19:46 ` [PATCH 1/11] [NET] Reorder struct inet_sock Thomas Graf
2005-03-09 19:47 ` [PATCH 2/11] [NET] Convert sk_zapped into SOCK_ZAPPED flag Thomas Graf
@ 2005-03-09 19:47 ` Thomas Graf
2005-03-09 19:48 ` [PATCH 4/11] [NET] Convert sk_debug into SOCK_DBG flag Thomas Graf
` (7 subsequent siblings)
10 siblings, 0 replies; 16+ messages in thread
From: Thomas Graf @ 2005-03-09 19:47 UTC (permalink / raw)
To: David S. Miller; +Cc: netdev
Signed-off-by: Thomas Graf <tgraf@suug.ch>
diff -Nru linux-2.6.11-rc4.orig/include/net/sock.h linux-2.6.11-rc4/include/net/sock.h
--- linux-2.6.11-rc4.orig/include/net/sock.h 2005-03-09 00:21:18.000000000 +0100
+++ linux-2.6.11-rc4/include/net/sock.h 2005-03-09 00:21:55.000000000 +0100
@@ -116,7 +116,6 @@
* struct sock - network layer representation of sockets
* @__sk_common - shared layout with tcp_tw_bucket
* @sk_shutdown - mask of %SEND_SHUTDOWN and/or %RCV_SHUTDOWN
- * @sk_use_write_queue - wheter to call sk->sk_write_space in sock_wfree
* @sk_userlocks - %SO_SNDBUF and %SO_RCVBUF settings
* @sk_lock - synchronizer
* @sk_rcvbuf - size of receive buffer in bytes
@@ -191,7 +190,6 @@
#define sk_bind_node __sk_common.skc_bind_node
#define sk_refcnt __sk_common.skc_refcnt
unsigned char sk_shutdown;
- unsigned char sk_use_write_queue;
unsigned char sk_userlocks;
socket_lock_t sk_lock;
int sk_rcvbuf;
@@ -390,6 +388,7 @@
SOCK_BROADCAST,
SOCK_TIMESTAMP,
SOCK_ZAPPED,
+ SOCK_USE_WRITE_QUEUE, /* wheter to call sk->sk_write_space in sock_wfree */
};
static inline void sock_set_flag(struct sock *sk, enum sock_flags flag)
diff -Nru linux-2.6.11-rc4.orig/net/core/sock.c linux-2.6.11-rc4/net/core/sock.c
--- linux-2.6.11-rc4.orig/net/core/sock.c 2005-03-09 00:21:19.000000000 +0100
+++ linux-2.6.11-rc4/net/core/sock.c 2005-03-09 00:19:39.000000000 +0100
@@ -709,7 +709,7 @@
/* In case it might be waiting for more memory. */
atomic_sub(skb->truesize, &sk->sk_wmem_alloc);
- if (!sk->sk_use_write_queue)
+ if (!sock_flag(sk, SOCK_USE_WRITE_QUEUE))
sk->sk_write_space(sk);
sock_put(sk);
}
diff -Nru linux-2.6.11-rc4.orig/net/ipv4/tcp_ipv4.c linux-2.6.11-rc4/net/ipv4/tcp_ipv4.c
--- linux-2.6.11-rc4.orig/net/ipv4/tcp_ipv4.c 2005-03-08 18:11:28.000000000 +0100
+++ linux-2.6.11-rc4/net/ipv4/tcp_ipv4.c 2005-03-09 00:19:55.000000000 +0100
@@ -2064,7 +2064,7 @@
sk->sk_state = TCP_CLOSE;
sk->sk_write_space = sk_stream_write_space;
- sk->sk_use_write_queue = 1;
+ sock_set_flag(sk, SOCK_USE_WRITE_QUEUE);
tp->af_specific = &ipv4_specific;
diff -Nru linux-2.6.11-rc4.orig/net/ipv6/tcp_ipv6.c linux-2.6.11-rc4/net/ipv6/tcp_ipv6.c
--- linux-2.6.11-rc4.orig/net/ipv6/tcp_ipv6.c 2005-03-08 18:11:28.000000000 +0100
+++ linux-2.6.11-rc4/net/ipv6/tcp_ipv6.c 2005-03-09 00:20:06.000000000 +0100
@@ -2027,7 +2027,7 @@
tp->af_specific = &ipv6_specific;
sk->sk_write_space = sk_stream_write_space;
- sk->sk_use_write_queue = 1;
+ sock_set_flag(sk, SOCK_USE_WRITE_QUEUE);
sk->sk_sndbuf = sysctl_tcp_wmem[1];
sk->sk_rcvbuf = sysctl_tcp_rmem[1];
diff -Nru linux-2.6.11-rc4.orig/net/sctp/endpointola.c linux-2.6.11-rc4/net/sctp/endpointola.c
--- linux-2.6.11-rc4.orig/net/sctp/endpointola.c 2005-03-08 18:11:28.000000000 +0100
+++ linux-2.6.11-rc4/net/sctp/endpointola.c 2005-03-09 00:20:42.000000000 +0100
@@ -126,7 +126,7 @@
/* Use SCTP specific send buffer space queues. */
sk->sk_write_space = sctp_write_space;
- sk->sk_use_write_queue = 1;
+ sock_set_flag(sk, SOCK_USE_WRITE_QUEUE);
/* Initialize the secret key used with cookie. */
get_random_bytes(&ep->secret_key[0], SCTP_SECRET_SIZE);
^ permalink raw reply [flat|nested] 16+ messages in thread
* [PATCH 4/11] [NET] Convert sk_debug into SOCK_DBG flag
2005-03-09 19:45 [PATCHSET] [NET] Various sock struct reorderings Thomas Graf
` (2 preceding siblings ...)
2005-03-09 19:47 ` [PATCH 3/11] [NET] Convert sk_user_write_queue into SOCK_USE_WRITE_QUEUE flag Thomas Graf
@ 2005-03-09 19:48 ` Thomas Graf
2005-03-09 19:48 ` [PATCH 5/11] [NET] Convert sk_rcvtstamp into SOCK_RCVTSTAMP flag Thomas Graf
` (6 subsequent siblings)
10 siblings, 0 replies; 16+ messages in thread
From: Thomas Graf @ 2005-03-09 19:48 UTC (permalink / raw)
To: David S. Miller; +Cc: netdev
Signed-off-by: Thomas Graf <tgraf@suug.ch>
diff -Nru linux-2.6.11-rc4.orig/include/net/sock.h linux-2.6.11-rc4/include/net/sock.h
--- linux-2.6.11-rc4.orig/include/net/sock.h 2005-03-09 00:40:06.000000000 +0100
+++ linux-2.6.11-rc4/include/net/sock.h 2005-03-09 00:49:23.000000000 +0100
@@ -61,10 +61,10 @@
* the other protocols.
*/
-/* Define this to get the sk->sk_debug debugging facility. */
+/* Define this to get the SOCK_DBG debugging facility. */
#define SOCK_DEBUGGING
#ifdef SOCK_DEBUGGING
-#define SOCK_DEBUG(sk, msg...) do { if ((sk) && ((sk)->sk_debug)) \
+#define SOCK_DEBUG(sk, msg...) do { if ((sk) && sock_flag((sk), SOCK_DBG)) \
printk(KERN_DEBUG msg); } while (0)
#else
#define SOCK_DEBUG(sk, msg...) do { } while (0)
@@ -134,7 +134,6 @@
* @sk_sndbuf - size of send buffer in bytes
* @sk_flags - %SO_LINGER (l_onoff), %SO_BROADCAST, %SO_KEEPALIVE, %SO_OOBINLINE settings
* @sk_no_check - %SO_NO_CHECK setting, wether or not checkup packets
- * @sk_debug - %SO_DEBUG setting
* @sk_rcvtstamp - %SO_TIMESTAMP setting
* @sk_no_largesend - whether to sent large segments or not
* @sk_route_caps - route capabilities (e.g. %NETIF_F_TSO)
@@ -208,7 +207,6 @@
int sk_sndbuf;
unsigned long sk_flags;
char sk_no_check;
- unsigned char sk_debug;
unsigned char sk_rcvtstamp;
unsigned char sk_no_largesend;
int sk_route_caps;
@@ -389,6 +387,7 @@
SOCK_TIMESTAMP,
SOCK_ZAPPED,
SOCK_USE_WRITE_QUEUE, /* wheter to call sk->sk_write_space in sock_wfree */
+ SOCK_DBG, /* %SO_DEBUG setting */
};
static inline void sock_set_flag(struct sock *sk, enum sock_flags flag)
diff -Nru linux-2.6.11-rc4.orig/net/ax25/af_ax25.c linux-2.6.11-rc4/net/ax25/af_ax25.c
--- linux-2.6.11-rc4.orig/net/ax25/af_ax25.c 2005-03-09 00:21:19.000000000 +0100
+++ linux-2.6.11-rc4/net/ax25/af_ax25.c 2005-03-09 00:43:51.000000000 +0100
@@ -868,10 +868,12 @@
sk->sk_protocol = osk->sk_protocol;
sk->sk_rcvbuf = osk->sk_rcvbuf;
sk->sk_sndbuf = osk->sk_sndbuf;
- sk->sk_debug = osk->sk_debug;
sk->sk_state = TCP_ESTABLISHED;
sk->sk_sleep = osk->sk_sleep;
+ if (sock_flag(osk, SOCK_DBG))
+ sock_set_flag(sk, SOCK_DBG);
+
if (sock_flag(osk, SOCK_ZAPPED))
sock_set_flag(sk, SOCK_ZAPPED);
diff -Nru linux-2.6.11-rc4.orig/net/core/sock.c linux-2.6.11-rc4/net/core/sock.c
--- linux-2.6.11-rc4.orig/net/core/sock.c 2005-03-09 00:40:06.000000000 +0100
+++ linux-2.6.11-rc4/net/core/sock.c 2005-03-09 00:45:23.000000000 +0100
@@ -228,8 +228,10 @@
{
ret = -EACCES;
}
+ else if (valbool)
+ sock_set_flag(sk, SOCK_DBG);
else
- sk->sk_debug = valbool;
+ sock_reset_flag(sk, SOCK_DBG);
break;
case SO_REUSEADDR:
sk->sk_reuse = valbool;
@@ -463,7 +465,7 @@
switch(optname)
{
case SO_DEBUG:
- v.val = sk->sk_debug;
+ v.val = sock_flag(sk, SOCK_DBG);
break;
case SO_DONTROUTE:
diff -Nru linux-2.6.11-rc4.orig/net/netrom/af_netrom.c linux-2.6.11-rc4/net/netrom/af_netrom.c
--- linux-2.6.11-rc4.orig/net/netrom/af_netrom.c 2005-03-09 00:21:19.000000000 +0100
+++ linux-2.6.11-rc4/net/netrom/af_netrom.c 2005-03-09 00:46:08.000000000 +0100
@@ -476,13 +476,15 @@
sk->sk_protocol = osk->sk_protocol;
sk->sk_rcvbuf = osk->sk_rcvbuf;
sk->sk_sndbuf = osk->sk_sndbuf;
- sk->sk_debug = osk->sk_debug;
sk->sk_state = TCP_ESTABLISHED;
sk->sk_sleep = osk->sk_sleep;
if (sock_flag(osk, SOCK_ZAPPED))
sock_set_flag(sk, SOCK_ZAPPED);
+ if (sock_flag(osk, SOCK_DBG))
+ sock_set_flag(sk, SOCK_DBG);
+
skb_queue_head_init(&nr->ack_queue);
skb_queue_head_init(&nr->reseq_queue);
skb_queue_head_init(&nr->frag_queue);
diff -Nru linux-2.6.11-rc4.orig/net/rose/af_rose.c linux-2.6.11-rc4/net/rose/af_rose.c
--- linux-2.6.11-rc4.orig/net/rose/af_rose.c 2005-03-09 00:21:19.000000000 +0100
+++ linux-2.6.11-rc4/net/rose/af_rose.c 2005-03-09 00:46:28.000000000 +0100
@@ -572,13 +572,15 @@
sk->sk_protocol = osk->sk_protocol;
sk->sk_rcvbuf = osk->sk_rcvbuf;
sk->sk_sndbuf = osk->sk_sndbuf;
- sk->sk_debug = osk->sk_debug;
sk->sk_state = TCP_ESTABLISHED;
sk->sk_sleep = osk->sk_sleep;
if (sock_flag(osk, SOCK_ZAPPED))
sock_set_flag(sk, SOCK_ZAPPED);
+ if (sock_flag(osk, SOCK_DBG))
+ sock_set_flag(sk, SOCK_DBG);
+
init_timer(&rose->timer);
init_timer(&rose->idletimer);
diff -Nru linux-2.6.11-rc4.orig/net/wanrouter/af_wanpipe.c linux-2.6.11-rc4/net/wanrouter/af_wanpipe.c
--- linux-2.6.11-rc4.orig/net/wanrouter/af_wanpipe.c 2005-03-09 00:21:19.000000000 +0100
+++ linux-2.6.11-rc4/net/wanrouter/af_wanpipe.c 2005-03-09 00:46:50.000000000 +0100
@@ -468,10 +468,12 @@
wp_sk(sk)->num = wp_sk(osk)->num;
sk->sk_rcvbuf = osk->sk_rcvbuf;
sk->sk_sndbuf = osk->sk_sndbuf;
- sk->sk_debug = osk->sk_debug;
sk->sk_state = WANSOCK_CONNECTING;
sk->sk_sleep = osk->sk_sleep;
+ if (sock_flag(osk, SOCK_DBG))
+ sock_set_flag(sk, SOCK_DBG);
+
return sk;
}
diff -Nru linux-2.6.11-rc4.orig/net/x25/af_x25.c linux-2.6.11-rc4/net/x25/af_x25.c
--- linux-2.6.11-rc4.orig/net/x25/af_x25.c 2005-03-09 00:21:19.000000000 +0100
+++ linux-2.6.11-rc4/net/x25/af_x25.c 2005-03-09 00:47:10.000000000 +0100
@@ -525,13 +525,15 @@
sk->sk_protocol = osk->sk_protocol;
sk->sk_rcvbuf = osk->sk_rcvbuf;
sk->sk_sndbuf = osk->sk_sndbuf;
- sk->sk_debug = osk->sk_debug;
sk->sk_state = TCP_ESTABLISHED;
sk->sk_sleep = osk->sk_sleep;
sk->sk_backlog_rcv = osk->sk_backlog_rcv;
if (sock_flag(osk, SOCK_ZAPPED))
sock_set_flag(sk, SOCK_ZAPPED);
+
+ if (sock_flag(osk, SOCK_DBG))
+ sock_set_flag(sk, SOCK_DBG);
ox25 = x25_sk(osk);
x25->t21 = ox25->t21;
^ permalink raw reply [flat|nested] 16+ messages in thread
* [PATCH 5/11] [NET] Convert sk_rcvtstamp into SOCK_RCVTSTAMP flag
2005-03-09 19:45 [PATCHSET] [NET] Various sock struct reorderings Thomas Graf
` (3 preceding siblings ...)
2005-03-09 19:48 ` [PATCH 4/11] [NET] Convert sk_debug into SOCK_DBG flag Thomas Graf
@ 2005-03-09 19:48 ` Thomas Graf
2005-03-09 19:49 ` [PATCH 6/11] [NET] Convert sk_no_largesend into SOCK_NO_LARGESEND flag Thomas Graf
` (5 subsequent siblings)
10 siblings, 0 replies; 16+ messages in thread
From: Thomas Graf @ 2005-03-09 19:48 UTC (permalink / raw)
To: David S. Miller; +Cc: netdev
Signed-off-by: Thomas Graf <tgraf@suug.ch>
diff -Nru linux-2.6.11-rc4.orig/include/net/sock.h linux-2.6.11-rc4/include/net/sock.h
--- linux-2.6.11-rc4.orig/include/net/sock.h 2005-03-09 00:53:32.000000000 +0100
+++ linux-2.6.11-rc4/include/net/sock.h 2005-03-09 01:01:33.000000000 +0100
@@ -134,7 +134,6 @@
* @sk_sndbuf - size of send buffer in bytes
* @sk_flags - %SO_LINGER (l_onoff), %SO_BROADCAST, %SO_KEEPALIVE, %SO_OOBINLINE settings
* @sk_no_check - %SO_NO_CHECK setting, wether or not checkup packets
- * @sk_rcvtstamp - %SO_TIMESTAMP setting
* @sk_no_largesend - whether to sent large segments or not
* @sk_route_caps - route capabilities (e.g. %NETIF_F_TSO)
* @sk_lingertime - %SO_LINGER l_linger setting
@@ -207,7 +206,6 @@
int sk_sndbuf;
unsigned long sk_flags;
char sk_no_check;
- unsigned char sk_rcvtstamp;
unsigned char sk_no_largesend;
int sk_route_caps;
unsigned long sk_lingertime;
@@ -388,6 +386,7 @@
SOCK_ZAPPED,
SOCK_USE_WRITE_QUEUE, /* wheter to call sk->sk_write_space in sock_wfree */
SOCK_DBG, /* %SO_DEBUG setting */
+ SOCK_RCVTSTAMP, /* %SO_TIMESTAMP setting */
};
static inline void sock_set_flag(struct sock *sk, enum sock_flags flag)
@@ -1237,7 +1236,7 @@
sock_recv_timestamp(struct msghdr *msg, struct sock *sk, struct sk_buff *skb)
{
struct timeval *stamp = &skb->stamp;
- if (sk->sk_rcvtstamp) {
+ if (sock_flag(sk, SOCK_RCVTSTAMP)) {
/* Race occurred between timestamp enabling and packet
receiving. Fill in the current time for now. */
if (stamp->tv_sec == 0)
diff -Nru linux-2.6.11-rc4.orig/net/core/sock.c linux-2.6.11-rc4/net/core/sock.c
--- linux-2.6.11-rc4.orig/net/core/sock.c 2005-03-09 00:53:32.000000000 +0100
+++ linux-2.6.11-rc4/net/core/sock.c 2005-03-09 00:58:43.000000000 +0100
@@ -339,9 +339,11 @@
break;
case SO_TIMESTAMP:
- sk->sk_rcvtstamp = valbool;
- if (valbool)
+ if (valbool) {
+ sock_set_flag(sk, SOCK_RCVTSTAMP);
sock_enable_timestamp(sk);
+ } else
+ sock_reset_flag(sk, SOCK_RCVTSTAMP);
break;
case SO_RCVLOWAT:
@@ -525,7 +527,7 @@
break;
case SO_TIMESTAMP:
- v.val = sk->sk_rcvtstamp;
+ v.val = sock_flag(sk, SOCK_RCVTSTAMP);
break;
case SO_RCVTIMEO:
^ permalink raw reply [flat|nested] 16+ messages in thread
* [PATCH 6/11] [NET] Convert sk_no_largesend into SOCK_NO_LARGESEND flag
2005-03-09 19:45 [PATCHSET] [NET] Various sock struct reorderings Thomas Graf
` (4 preceding siblings ...)
2005-03-09 19:48 ` [PATCH 5/11] [NET] Convert sk_rcvtstamp into SOCK_RCVTSTAMP flag Thomas Graf
@ 2005-03-09 19:49 ` Thomas Graf
2005-03-09 19:49 ` [PATCH 7/11] [NET] Convert sk_localroute into SOCK_LOCALROUTE flag Thomas Graf
` (4 subsequent siblings)
10 siblings, 0 replies; 16+ messages in thread
From: Thomas Graf @ 2005-03-09 19:49 UTC (permalink / raw)
To: David S. Miller; +Cc: netdev
Signed-off-by: Thomas Graf <tgraf@suug.ch>
diff -Nru linux-2.6.11-rc4.orig/include/net/sock.h linux-2.6.11-rc4/include/net/sock.h
--- linux-2.6.11-rc4.orig/include/net/sock.h 2005-03-09 01:03:45.000000000 +0100
+++ linux-2.6.11-rc4/include/net/sock.h 2005-03-09 01:08:01.000000000 +0100
@@ -134,7 +134,6 @@
* @sk_sndbuf - size of send buffer in bytes
* @sk_flags - %SO_LINGER (l_onoff), %SO_BROADCAST, %SO_KEEPALIVE, %SO_OOBINLINE settings
* @sk_no_check - %SO_NO_CHECK setting, wether or not checkup packets
- * @sk_no_largesend - whether to sent large segments or not
* @sk_route_caps - route capabilities (e.g. %NETIF_F_TSO)
* @sk_lingertime - %SO_LINGER l_linger setting
* @sk_hashent - hash entry in several tables (e.g. tcp_ehash)
@@ -206,7 +205,6 @@
int sk_sndbuf;
unsigned long sk_flags;
char sk_no_check;
- unsigned char sk_no_largesend;
int sk_route_caps;
unsigned long sk_lingertime;
int sk_hashent;
@@ -387,6 +385,7 @@
SOCK_USE_WRITE_QUEUE, /* wheter to call sk->sk_write_space in sock_wfree */
SOCK_DBG, /* %SO_DEBUG setting */
SOCK_RCVTSTAMP, /* %SO_TIMESTAMP setting */
+ SOCK_NO_LARGESEND, /* whether to sent large segments or not */
};
static inline void sock_set_flag(struct sock *sk, enum sock_flags flag)
diff -Nru linux-2.6.11-rc4.orig/include/net/tcp.h linux-2.6.11-rc4/include/net/tcp.h
--- linux-2.6.11-rc4.orig/include/net/tcp.h 2005-03-08 18:11:24.000000000 +0100
+++ linux-2.6.11-rc4/include/net/tcp.h 2005-03-09 01:06:29.000000000 +0100
@@ -1914,7 +1914,7 @@
{
sk->sk_route_caps = dst->dev->features;
if (sk->sk_route_caps & NETIF_F_TSO) {
- if (sk->sk_no_largesend || dst->header_len)
+ if (sock_flag(sk, SOCK_NO_LARGESEND) || dst->header_len)
sk->sk_route_caps &= ~NETIF_F_TSO;
}
}
diff -Nru linux-2.6.11-rc4.orig/include/net/tcp_ecn.h linux-2.6.11-rc4/include/net/tcp_ecn.h
--- linux-2.6.11-rc4.orig/include/net/tcp_ecn.h 2005-03-08 18:11:24.000000000 +0100
+++ linux-2.6.11-rc4/include/net/tcp_ecn.h 2005-03-09 01:06:42.000000000 +0100
@@ -33,7 +33,7 @@
if (sysctl_tcp_ecn && !(sk->sk_route_caps & NETIF_F_TSO)) {
TCP_SKB_CB(skb)->flags |= TCPCB_FLAG_ECE|TCPCB_FLAG_CWR;
tp->ecn_flags = TCP_ECN_OK;
- sk->sk_no_largesend = 1;
+ sock_set_flag(sk, SOCK_NO_LARGESEND);
}
}
diff -Nru linux-2.6.11-rc4.orig/net/ipv4/tcp_input.c linux-2.6.11-rc4/net/ipv4/tcp_input.c
--- linux-2.6.11-rc4.orig/net/ipv4/tcp_input.c 2005-03-08 18:11:28.000000000 +0100
+++ linux-2.6.11-rc4/net/ipv4/tcp_input.c 2005-03-09 01:07:20.000000000 +0100
@@ -977,7 +977,7 @@
* Not good, but alternative is to resegment the queue. */
if (sk->sk_route_caps & NETIF_F_TSO) {
sk->sk_route_caps &= ~NETIF_F_TSO;
- sk->sk_no_largesend = 1;
+ sock_set_flag(sk, SOCK_NO_LARGESEND);
tp->mss_cache = tp->mss_cache_std;
}
@@ -4507,7 +4507,7 @@
TCP_ECN_rcv_synack(tp, th);
if (tp->ecn_flags&TCP_ECN_OK)
- sk->sk_no_largesend = 1;
+ sock_set_flag(sk, SOCK_NO_LARGESEND);
tp->snd_wl1 = TCP_SKB_CB(skb)->seq;
tcp_ack(sk, skb, FLAG_SLOWPATH);
@@ -4645,7 +4645,7 @@
TCP_ECN_rcv_syn(tp, th);
if (tp->ecn_flags&TCP_ECN_OK)
- sk->sk_no_largesend = 1;
+ sock_set_flag(sk, SOCK_NO_LARGESEND);
tcp_sync_mss(sk, tp->pmtu_cookie);
tcp_initialize_rcv_mss(sk);
diff -Nru linux-2.6.11-rc4.orig/net/ipv4/tcp_minisocks.c linux-2.6.11-rc4/net/ipv4/tcp_minisocks.c
--- linux-2.6.11-rc4.orig/net/ipv4/tcp_minisocks.c 2005-03-08 18:11:28.000000000 +0100
+++ linux-2.6.11-rc4/net/ipv4/tcp_minisocks.c 2005-03-09 01:07:30.000000000 +0100
@@ -841,7 +841,7 @@
newtp->rx_opt.mss_clamp = req->mss;
TCP_ECN_openreq_child(newtp, req);
if (newtp->ecn_flags&TCP_ECN_OK)
- newsk->sk_no_largesend = 1;
+ sock_set_flag(newsk, SOCK_NO_LARGESEND);
tcp_ca_init(newtp);
diff -Nru linux-2.6.11-rc4.orig/net/ipv4/tcp_output.c linux-2.6.11-rc4/net/ipv4/tcp_output.c
--- linux-2.6.11-rc4.orig/net/ipv4/tcp_output.c 2005-03-08 18:11:28.000000000 +0100
+++ linux-2.6.11-rc4/net/ipv4/tcp_output.c 2005-03-09 01:07:56.000000000 +0100
@@ -1040,7 +1040,7 @@
if (sk->sk_route_caps & NETIF_F_TSO) {
sk->sk_route_caps &= ~NETIF_F_TSO;
- sk->sk_no_largesend = 1;
+ sock_set_flag(sk, SOCK_NO_LARGESEND);
tp->mss_cache = tp->mss_cache_std;
}
@@ -1669,7 +1669,7 @@
/* SWS override triggered forced fragmentation.
* Disable TSO, the connection is too sick. */
if (sk->sk_route_caps & NETIF_F_TSO) {
- sk->sk_no_largesend = 1;
+ sock_set_flag(sk, SOCK_NO_LARGESEND);
sk->sk_route_caps &= ~NETIF_F_TSO;
tp->mss_cache = tp->mss_cache_std;
}
^ permalink raw reply [flat|nested] 16+ messages in thread
* [PATCH 7/11] [NET] Convert sk_localroute into SOCK_LOCALROUTE flag
2005-03-09 19:45 [PATCHSET] [NET] Various sock struct reorderings Thomas Graf
` (5 preceding siblings ...)
2005-03-09 19:49 ` [PATCH 6/11] [NET] Convert sk_no_largesend into SOCK_NO_LARGESEND flag Thomas Graf
@ 2005-03-09 19:49 ` Thomas Graf
2005-03-09 19:50 ` [PATCH 8/11] [NET] Convert sk_queue_shrunk into SOCK_QUEUE_SHRUNK flag Thomas Graf
` (3 subsequent siblings)
10 siblings, 0 replies; 16+ messages in thread
From: Thomas Graf @ 2005-03-09 19:49 UTC (permalink / raw)
To: David S. Miller; +Cc: netdev
Also converts two manual routing TOS calculations to use the correct
macro.
Signed-off-by: Thomas Graf <tgraf@suug.ch>
diff -Nru linux-2.6.11-rc4.orig/include/net/route.h linux-2.6.11-rc4/include/net/route.h
--- linux-2.6.11-rc4.orig/include/net/route.h 2005-03-08 18:11:24.000000000 +0100
+++ linux-2.6.11-rc4/include/net/route.h 2005-03-09 01:24:35.000000000 +0100
@@ -44,7 +44,7 @@
/* RTO_CONN is not used (being alias for 0), but preserved not to break
* some modules referring to it. */
-#define RT_CONN_FLAGS(sk) (RT_TOS(inet_sk(sk)->tos) | sk->sk_localroute)
+#define RT_CONN_FLAGS(sk) (RT_TOS(inet_sk(sk)->tos) | sock_flag(sk, SOCK_LOCALROUTE))
struct inet_peer;
struct rtable
diff -Nru linux-2.6.11-rc4.orig/include/net/sock.h linux-2.6.11-rc4/include/net/sock.h
--- linux-2.6.11-rc4.orig/include/net/sock.h 2005-03-09 01:09:59.000000000 +0100
+++ linux-2.6.11-rc4/include/net/sock.h 2005-03-09 01:28:42.000000000 +0100
@@ -147,7 +147,6 @@
* @sk_max_ack_backlog - listen backlog set in listen()
* @sk_priority - %SO_PRIORITY setting
* @sk_type - socket type (%SOCK_STREAM, etc)
- * @sk_localroute - route locally only, %SO_DONTROUTE setting
* @sk_protocol - which protocol this socket belongs in this network family
* @sk_peercred - %SO_PEERCRED setting
* @sk_rcvlowat - %SO_RCVLOWAT setting
@@ -226,7 +225,6 @@
unsigned short sk_max_ack_backlog;
__u32 sk_priority;
unsigned short sk_type;
- unsigned char sk_localroute;
unsigned char sk_protocol;
struct ucred sk_peercred;
int sk_rcvlowat;
@@ -386,6 +384,7 @@
SOCK_DBG, /* %SO_DEBUG setting */
SOCK_RCVTSTAMP, /* %SO_TIMESTAMP setting */
SOCK_NO_LARGESEND, /* whether to sent large segments or not */
+ SOCK_LOCALROUTE, /* route locally only, %SO_DONTROUTE setting */
};
static inline void sock_set_flag(struct sock *sk, enum sock_flags flag)
diff -Nru linux-2.6.11-rc4.orig/net/core/sock.c linux-2.6.11-rc4/net/core/sock.c
--- linux-2.6.11-rc4.orig/net/core/sock.c 2005-03-09 01:03:45.000000000 +0100
+++ linux-2.6.11-rc4/net/core/sock.c 2005-03-09 01:25:16.000000000 +0100
@@ -241,7 +241,10 @@
ret = -ENOPROTOOPT;
break;
case SO_DONTROUTE:
- sk->sk_localroute = valbool;
+ if (valbool)
+ sock_set_flag(sk, SOCK_LOCALROUTE);
+ else
+ sock_reset_flag(sk, SOCK_LOCALROUTE);
break;
case SO_BROADCAST:
sock_valbool_flag(sk, SOCK_BROADCAST, valbool);
@@ -471,7 +474,7 @@
break;
case SO_DONTROUTE:
- v.val = sk->sk_localroute;
+ v.val = sock_flag(sk, SOCK_LOCALROUTE);
break;
case SO_BROADCAST:
diff -Nru linux-2.6.11-rc4.orig/net/ipv4/raw.c linux-2.6.11-rc4/net/ipv4/raw.c
--- linux-2.6.11-rc4.orig/net/ipv4/raw.c 2005-03-08 18:11:28.000000000 +0100
+++ linux-2.6.11-rc4/net/ipv4/raw.c 2005-03-09 01:26:29.000000000 +0100
@@ -457,7 +457,7 @@
daddr = ipc.opt->faddr;
}
}
- tos = RT_TOS(inet->tos) | sk->sk_localroute;
+ tos = RT_CONN_FLAGS(sk);
if (msg->msg_flags & MSG_DONTROUTE)
tos |= RTO_ONLINK;
diff -Nru linux-2.6.11-rc4.orig/net/ipv4/tcp_ipv4.c linux-2.6.11-rc4/net/ipv4/tcp_ipv4.c
--- linux-2.6.11-rc4.orig/net/ipv4/tcp_ipv4.c 2005-03-09 00:40:06.000000000 +0100
+++ linux-2.6.11-rc4/net/ipv4/tcp_ipv4.c 2005-03-09 01:27:06.000000000 +0100
@@ -1866,7 +1866,7 @@
/* Query new route. */
err = ip_route_connect(&rt, daddr, 0,
- RT_TOS(inet->tos) | sk->sk_localroute,
+ RT_CONN_FLAGS(sk),
sk->sk_bound_dev_if,
IPPROTO_TCP,
inet->sport, inet->dport, sk);
diff -Nru linux-2.6.11-rc4.orig/net/ipv4/udp.c linux-2.6.11-rc4/net/ipv4/udp.c
--- linux-2.6.11-rc4.orig/net/ipv4/udp.c 2005-03-08 18:11:28.000000000 +0100
+++ linux-2.6.11-rc4/net/ipv4/udp.c 2005-03-09 01:27:32.000000000 +0100
@@ -574,7 +574,8 @@
connected = 0;
}
tos = RT_TOS(inet->tos);
- if (sk->sk_localroute || (msg->msg_flags & MSG_DONTROUTE) ||
+ if (sock_flag(sk, SOCK_LOCALROUTE) ||
+ (msg->msg_flags & MSG_DONTROUTE) ||
(ipc.opt && ipc.opt->is_strictroute)) {
tos |= RTO_ONLINK;
connected = 0;
^ permalink raw reply [flat|nested] 16+ messages in thread
* [PATCH 8/11] [NET] Convert sk_queue_shrunk into SOCK_QUEUE_SHRUNK flag
2005-03-09 19:45 [PATCHSET] [NET] Various sock struct reorderings Thomas Graf
` (6 preceding siblings ...)
2005-03-09 19:49 ` [PATCH 7/11] [NET] Convert sk_localroute into SOCK_LOCALROUTE flag Thomas Graf
@ 2005-03-09 19:50 ` Thomas Graf
2005-03-09 19:51 ` [PATCH 9/11] [NET] Reorder struct sock Thomas Graf
` (2 subsequent siblings)
10 siblings, 0 replies; 16+ messages in thread
From: Thomas Graf @ 2005-03-09 19:50 UTC (permalink / raw)
To: David S. Miller; +Cc: netdev
Signed-off-by: Thomas Graf <tgraf@suug.ch>
diff -Nru linux-2.6.11-rc4.orig/include/net/sock.h linux-2.6.11-rc4/include/net/sock.h
--- linux-2.6.11-rc4.orig/include/net/sock.h 2005-03-09 01:31:21.000000000 +0100
+++ linux-2.6.11-rc4/include/net/sock.h 2005-03-09 02:48:15.000000000 +0100
@@ -164,7 +164,6 @@
* @sk_sndmsg_off - cached offset for sendmsg
* @sk_send_head - front of stuff to transmit
* @sk_write_pending - a write to stream socket waits to start
- * @sk_queue_shrunk - write queue has been shrunk recently
* @sk_state_change - callback to indicate change in the state of the sock
* @sk_data_ready - callback to indicate there is data to be processed
* @sk_write_space - callback to indicate there is bf sending space available
@@ -243,7 +242,6 @@
struct sk_buff *sk_send_head;
int sk_write_pending;
void *sk_security;
- __u8 sk_queue_shrunk;
/* three bytes hole, try to pack */
void (*sk_state_change)(struct sock *sk);
void (*sk_data_ready)(struct sock *sk, int bytes);
@@ -385,6 +383,7 @@
SOCK_RCVTSTAMP, /* %SO_TIMESTAMP setting */
SOCK_NO_LARGESEND, /* whether to sent large segments or not */
SOCK_LOCALROUTE, /* route locally only, %SO_DONTROUTE setting */
+ SOCK_QUEUE_SHRUNK, /* write queue has been shrunk recently */
};
static inline void sock_set_flag(struct sock *sk, enum sock_flags flag)
@@ -449,7 +448,7 @@
static inline void sk_stream_free_skb(struct sock *sk, struct sk_buff *skb)
{
- sk->sk_queue_shrunk = 1;
+ sock_set_flag(sk, SOCK_QUEUE_SHRUNK);
sk->sk_wmem_queued -= skb->truesize;
sk->sk_forward_alloc += skb->truesize;
__kfree_skb(skb);
diff -Nru linux-2.6.11-rc4.orig/net/ipv4/tcp_input.c linux-2.6.11-rc4/net/ipv4/tcp_input.c
--- linux-2.6.11-rc4.orig/net/ipv4/tcp_input.c 2005-03-09 01:09:59.000000000 +0100
+++ linux-2.6.11-rc4/net/ipv4/tcp_input.c 2005-03-09 02:48:13.000000000 +0100
@@ -3935,7 +3935,7 @@
/* When incoming ACK allowed to free some skb from write_queue,
- * we remember this event in flag sk->sk_queue_shrunk and wake up socket
+ * we remember this event in flag SOCK_QUEUE_SHRUNK and wake up socket
* on the exit from tcp input handler.
*
* PROBLEM: sndbuf expansion does not work well with largesend.
@@ -3963,8 +3963,8 @@
static inline void tcp_check_space(struct sock *sk)
{
- if (sk->sk_queue_shrunk) {
- sk->sk_queue_shrunk = 0;
+ if (sock_flag(sk, SOCK_QUEUE_SHRUNK)) {
+ sock_reset_flag(sk, SOCK_QUEUE_SHRUNK);
if (sk->sk_socket &&
test_bit(SOCK_NOSPACE, &sk->sk_socket->flags))
tcp_new_space(sk);
diff -Nru linux-2.6.11-rc4.orig/net/ipv4/tcp_output.c linux-2.6.11-rc4/net/ipv4/tcp_output.c
--- linux-2.6.11-rc4.orig/net/ipv4/tcp_output.c 2005-03-09 01:09:59.000000000 +0100
+++ linux-2.6.11-rc4/net/ipv4/tcp_output.c 2005-03-09 02:47:14.000000000 +0100
@@ -593,9 +593,9 @@
skb->ip_summed = CHECKSUM_HW;
skb->truesize -= len;
- sk->sk_queue_shrunk = 1;
sk->sk_wmem_queued -= len;
sk->sk_forward_alloc += len;
+ sock_set_flag(sk, SOCK_QUEUE_SHRUNK);
/* Any change of skb->len requires recalculation of tso
* factor and mss.
^ permalink raw reply [flat|nested] 16+ messages in thread
* [PATCH 9/11] [NET] Reorder struct sock
2005-03-09 19:45 [PATCHSET] [NET] Various sock struct reorderings Thomas Graf
` (7 preceding siblings ...)
2005-03-09 19:50 ` [PATCH 8/11] [NET] Convert sk_queue_shrunk into SOCK_QUEUE_SHRUNK flag Thomas Graf
@ 2005-03-09 19:51 ` Thomas Graf
2005-03-09 19:51 ` [PATCH 10/11] [NET] Reorder struct ipv6_pinfo Thomas Graf
2005-03-09 19:52 ` [PATCH 11/11] [NET] Reorder struct tcp_options_received Thomas Graf
10 siblings, 0 replies; 16+ messages in thread
From: Thomas Graf @ 2005-03-09 19:51 UTC (permalink / raw)
To: David S. Miller; +Cc: netdev
Reorders struct sock to avoid padding and shrinks the following
fields to more appropriate sizes saving 12 bytes and some more
on 64bit architectures.
sk_shutdown: char -> 2 bits
sk_no_checks: char -> 2 bits
sk_userlocks: char -> 4 bits
Signed-off-by: Thomas Graf <tgraf@suug.ch>
--- linux-2.6.11-rc4.orig/include/net/sock.h 2005-03-09 15:22:43.000000000 +0100
+++ linux-2.6.11-rc4/include/net/sock.h 2005-03-09 15:33:33.000000000 +0100
@@ -184,28 +184,30 @@
#define sk_node __sk_common.skc_node
#define sk_bind_node __sk_common.skc_bind_node
#define sk_refcnt __sk_common.skc_refcnt
- unsigned char sk_shutdown;
- unsigned char sk_userlocks;
- socket_lock_t sk_lock;
+ unsigned char sk_shutdown : 2,
+ sk_no_check : 2,
+ sk_userlocks : 4;
+ unsigned char sk_protocol;
+ unsigned short sk_type;
int sk_rcvbuf;
+ socket_lock_t sk_lock;
wait_queue_head_t *sk_sleep;
struct dst_entry *sk_dst_cache;
- rwlock_t sk_dst_lock;
struct xfrm_policy *sk_policy[2];
+ rwlock_t sk_dst_lock;
atomic_t sk_rmem_alloc;
- struct sk_buff_head sk_receive_queue;
atomic_t sk_wmem_alloc;
- struct sk_buff_head sk_write_queue;
atomic_t sk_omem_alloc;
+ struct sk_buff_head sk_receive_queue;
+ struct sk_buff_head sk_write_queue;
int sk_wmem_queued;
int sk_forward_alloc;
unsigned int sk_allocation;
int sk_sndbuf;
- unsigned long sk_flags;
- char sk_no_check;
int sk_route_caps;
- unsigned long sk_lingertime;
int sk_hashent;
+ unsigned long sk_flags;
+ unsigned long sk_lingertime;
/*
* The backlog queue is special, it is always used with
* the per-socket spinlock held and requires low latency
@@ -215,16 +217,14 @@
struct sk_buff *head;
struct sk_buff *tail;
} sk_backlog;
- rwlock_t sk_callback_lock;
struct sk_buff_head sk_error_queue;
struct proto *sk_prot;
+ rwlock_t sk_callback_lock;
int sk_err,
sk_err_soft;
unsigned short sk_ack_backlog;
unsigned short sk_max_ack_backlog;
__u32 sk_priority;
- unsigned short sk_type;
- unsigned char sk_protocol;
struct ucred sk_peercred;
int sk_rcvlowat;
long sk_rcvtimeo;
@@ -238,11 +238,10 @@
void *sk_user_data;
struct module *sk_owner;
struct page *sk_sndmsg_page;
- __u32 sk_sndmsg_off;
struct sk_buff *sk_send_head;
+ __u32 sk_sndmsg_off;
int sk_write_pending;
void *sk_security;
- /* three bytes hole, try to pack */
void (*sk_state_change)(struct sock *sk);
void (*sk_data_ready)(struct sock *sk, int bytes);
void (*sk_write_space)(struct sock *sk);
^ permalink raw reply [flat|nested] 16+ messages in thread
* [PATCH 10/11] [NET] Reorder struct ipv6_pinfo
2005-03-09 19:45 [PATCHSET] [NET] Various sock struct reorderings Thomas Graf
` (8 preceding siblings ...)
2005-03-09 19:51 ` [PATCH 9/11] [NET] Reorder struct sock Thomas Graf
@ 2005-03-09 19:51 ` Thomas Graf
2005-03-09 19:52 ` [PATCH 11/11] [NET] Reorder struct tcp_options_received Thomas Graf
10 siblings, 0 replies; 16+ messages in thread
From: Thomas Graf @ 2005-03-09 19:51 UTC (permalink / raw)
To: David S. Miller; +Cc: netdev
Converts hop_limit and mcast_hops to signed 16 bits types saving 4 bytes
on 32bit archs and another 4 bytes on 64bit archs.
Signed-off-by: Thomas Graf <tgraf@suug.ch>
--- linux-2.6.11-rc4.orig/include/linux/ipv6.h 2005-03-09 19:05:01.000000000 +0100
+++ linux-2.6.11-rc4/include/linux/ipv6.h 2005-03-09 19:06:08.000000000 +0100
@@ -209,8 +209,8 @@
__u32 flow_label;
__u32 frag_size;
- int hop_limit;
- int mcast_hops;
+ __s16 hop_limit;
+ __s16 mcast_hops;
int mcast_oif;
/* pktoption flags */
@@ -233,10 +233,11 @@
pmtudisc:2,
ipv6only:1;
+ __u32 dst_cookie;
+
struct ipv6_mc_socklist *ipv6_mc_list;
struct ipv6_ac_socklist *ipv6_ac_list;
struct ipv6_fl_socklist *ipv6_fl_list;
- __u32 dst_cookie;
struct ipv6_txoptions *opt;
struct sk_buff *pktoptions;
^ permalink raw reply [flat|nested] 16+ messages in thread
* [PATCH 11/11] [NET] Reorder struct tcp_options_received
2005-03-09 19:45 [PATCHSET] [NET] Various sock struct reorderings Thomas Graf
` (9 preceding siblings ...)
2005-03-09 19:51 ` [PATCH 10/11] [NET] Reorder struct ipv6_pinfo Thomas Graf
@ 2005-03-09 19:52 ` Thomas Graf
10 siblings, 0 replies; 16+ messages in thread
From: Thomas Graf @ 2005-03-09 19:52 UTC (permalink / raw)
To: David S. Miller; +Cc: netdev
Reorders struct tcp_options_received to avoid padding and shrinks the
following fields to more appropriate sizes saving 8 bytes.
saw_tstamp: char -> 1 bit
tstamp_ok: char -> 1 bit
sack_ok: char -> 4 bits
wscale_ok: char -> 1 bit
snd_wscale: u8 -> 4 bits
rcv_wscale: u8 -> 4 bits
dsack: u8 -> 1 bit
Signed-off-by: Thomas Graf <tgraf@suug.ch>
diff -Nru linux-2.6.11-rc4.orig/include/linux/tcp.h linux-2.6.11-rc4/include/linux/tcp.h
--- linux-2.6.11-rc4.orig/include/linux/tcp.h 2005-03-09 14:16:28.000000000 +0100
+++ linux-2.6.11-rc4/include/linux/tcp.h 2005-03-09 17:07:48.000000000 +0100
@@ -216,17 +216,16 @@
__u32 ts_recent; /* Time stamp to echo next */
__u32 rcv_tsval; /* Time stamp value */
__u32 rcv_tsecr; /* Time stamp echo reply */
- char saw_tstamp; /* Saw TIMESTAMP on last packet */
- char tstamp_ok; /* TIMESTAMP seen on SYN packet */
- char sack_ok; /* SACK seen on SYN packet */
- char wscale_ok; /* Wscale seen on SYN packet */
- __u8 snd_wscale; /* Window scaling received from sender */
- __u8 rcv_wscale; /* Window scaling to send to receiver */
+ __u16 saw_tstamp : 1, /* Saw TIMESTAMP on last packet */
+ tstamp_ok : 1, /* TIMESTAMP seen on SYN packet */
+ dsack : 1, /* D-SACK is scheduled */
+ wscale_ok : 1, /* Wscale seen on SYN packet */
+ sack_ok : 4, /* SACK seen on SYN packet */
+ snd_wscale : 4, /* Window scaling received from sender */
+ rcv_wscale : 4; /* Window scaling to send to receiver */
/* SACKs data */
- __u8 dsack; /* D-SACK is scheduled */
__u8 eff_sacks; /* Size of SACK array to send with next packet */
__u8 num_sacks; /* Number of SACK blocks */
- __u8 __pad;
__u16 user_mss; /* mss requested by user in ioctl */
__u16 mss_clamp; /* Maximal mss, negotiated at connection setup */
};
diff -Nru linux-2.6.11-rc4.orig/net/ipv4/tcp_input.c linux-2.6.11-rc4/net/ipv4/tcp_input.c
--- linux-2.6.11-rc4.orig/net/ipv4/tcp_input.c 2005-03-09 15:22:43.000000000 +0100
+++ linux-2.6.11-rc4/net/ipv4/tcp_input.c 2005-03-09 16:59:40.000000000 +0100
@@ -3018,15 +3018,16 @@
case TCPOPT_WINDOW:
if(opsize==TCPOLEN_WINDOW && th->syn && !estab)
if (sysctl_tcp_window_scaling) {
+ __u8 snd_wscale = *(__u8 *) ptr;
opt_rx->wscale_ok = 1;
- opt_rx->snd_wscale = *(__u8 *)ptr;
- if(opt_rx->snd_wscale > 14) {
+ if (snd_wscale > 14) {
if(net_ratelimit())
printk(KERN_INFO "tcp_parse_options: Illegal window "
"scaling value %d >14 received.\n",
- opt_rx->snd_wscale);
- opt_rx->snd_wscale = 14;
+ snd_wscale);
+ snd_wscale = 14;
}
+ opt_rx->snd_wscale = snd_wscale;
}
break;
case TCPOPT_TIMESTAMP:
diff -Nru linux-2.6.11-rc4.orig/net/ipv4/tcp_output.c linux-2.6.11-rc4/net/ipv4/tcp_output.c
--- linux-2.6.11-rc4.orig/net/ipv4/tcp_output.c 2005-03-09 15:22:43.000000000 +0100
+++ linux-2.6.11-rc4/net/ipv4/tcp_output.c 2005-03-09 16:44:59.000000000 +0100
@@ -1427,6 +1427,7 @@
{
struct dst_entry *dst = __sk_dst_get(sk);
struct tcp_sock *tp = tcp_sk(sk);
+ __u8 rcv_wscale;
/* We'll fix this up when we get a response from the other end.
* See tcp_input.c:tcp_rcv_state_process case TCP_SYN_SENT.
@@ -1451,8 +1452,9 @@
&tp->rcv_wnd,
&tp->window_clamp,
sysctl_tcp_window_scaling,
- &tp->rx_opt.rcv_wscale);
+ &rcv_wscale);
+ tp->rx_opt.rcv_wscale = rcv_wscale;
tp->rcv_ssthresh = tp->rcv_wnd;
sk->sk_err = 0;
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH 2/11] [NET] Convert sk_zapped into SOCK_ZAPPED flag
2005-03-09 19:47 ` [PATCH 2/11] [NET] Convert sk_zapped into SOCK_ZAPPED flag Thomas Graf
@ 2005-03-09 19:54 ` Patrick McHardy
2005-03-09 19:56 ` Thomas Graf
0 siblings, 1 reply; 16+ messages in thread
From: Patrick McHardy @ 2005-03-09 19:54 UTC (permalink / raw)
To: Thomas Graf; +Cc: David S. Miller, netdev
Thomas Graf wrote:
> - volatile unsigned char sk_zapped;
> unsigned char sk_shutdown;
> unsigned char sk_use_write_queue;
> unsigned char sk_userlocks;
> @@ -391,6 +389,7 @@
> SOCK_DESTROY,
> SOCK_BROADCAST,
> SOCK_TIMESTAMP,
> + SOCK_ZAPPED,
What about volatile ? sock_set_flag() uses __set_bit(), so its not
the same.
Regards
Patrick
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH 2/11] [NET] Convert sk_zapped into SOCK_ZAPPED flag
2005-03-09 19:54 ` Patrick McHardy
@ 2005-03-09 19:56 ` Thomas Graf
2005-03-09 20:05 ` Patrick McHardy
0 siblings, 1 reply; 16+ messages in thread
From: Thomas Graf @ 2005-03-09 19:56 UTC (permalink / raw)
To: Patrick McHardy; +Cc: David S. Miller, netdev
* Patrick McHardy <422F5461.4080008@trash.net> 2005-03-09 20:54
> Thomas Graf wrote:
> >- volatile unsigned char sk_zapped;
> > unsigned char sk_shutdown;
> > unsigned char sk_use_write_queue;
> > unsigned char sk_userlocks;
> >@@ -391,6 +389,7 @@
> > SOCK_DESTROY,
> > SOCK_BROADCAST,
> > SOCK_TIMESTAMP,
> >+ SOCK_ZAPPED,
>
> What about volatile ? sock_set_flag() uses __set_bit(), so its not
> the same.
I thought about this for a while but couldn't find a reason
why it shouldn't work. Actually I don't even see any reason for
having sk_zapped be volatile.
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH 2/11] [NET] Convert sk_zapped into SOCK_ZAPPED flag
2005-03-09 19:56 ` Thomas Graf
@ 2005-03-09 20:05 ` Patrick McHardy
2005-03-09 20:23 ` Thomas Graf
0 siblings, 1 reply; 16+ messages in thread
From: Patrick McHardy @ 2005-03-09 20:05 UTC (permalink / raw)
To: Thomas Graf; +Cc: David S. Miller, netdev
Thomas Graf wrote:
> * Patrick McHardy <422F5461.4080008@trash.net> 2005-03-09 20:54
>>
>>What about volatile ? sock_set_flag() uses __set_bit(), so its not
>>the same.
>
>
> I thought about this for a while but couldn't find a reason
> why it shouldn't work. Actually I don't even see any reason for
> having sk_zapped be volatile.
You're probably right. I believe this piece of code from 2.4 is the
reason for it beeing volatile:
#ifdef TCP_DEBUG
if (sk->zapped) {
printk(KERN_DEBUG "TCP: double destroy sk=%p\n", sk);
sock_hold(sk);
}
sk->zapped = 1;
#endif
Regards
Patrick
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH 2/11] [NET] Convert sk_zapped into SOCK_ZAPPED flag
2005-03-09 20:05 ` Patrick McHardy
@ 2005-03-09 20:23 ` Thomas Graf
0 siblings, 0 replies; 16+ messages in thread
From: Thomas Graf @ 2005-03-09 20:23 UTC (permalink / raw)
To: Patrick McHardy; +Cc: David S. Miller, netdev
* Patrick McHardy <422F571E.2020708@trash.net> 2005-03-09 21:05
> Thomas Graf wrote:
> >* Patrick McHardy <422F5461.4080008@trash.net> 2005-03-09 20:54
> >>
> >>What about volatile ? sock_set_flag() uses __set_bit(), so its not
> >>the same.
> >
> >
> >I thought about this for a while but couldn't find a reason
> >why it shouldn't work. Actually I don't even see any reason for
> >having sk_zapped be volatile.
>
> You're probably right. I believe this piece of code from 2.4 is the
> reason for it beeing volatile:
>
> #ifdef TCP_DEBUG
> if (sk->zapped) {
> printk(KERN_DEBUG "TCP: double destroy sk=%p\n", sk);
> sock_hold(sk);
> }
> sk->zapped = 1;
> #endif
Yes, this makes sense. I haven't spotted any places in 2.6 where
any of the flags I've converted would suffer from a reordering.
Since all the flags have been chars the missing atomicy shouldn't
be an issue either.
^ permalink raw reply [flat|nested] 16+ messages in thread
end of thread, other threads:[~2005-03-09 20:23 UTC | newest]
Thread overview: 16+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-03-09 19:45 [PATCHSET] [NET] Various sock struct reorderings Thomas Graf
2005-03-09 19:46 ` [PATCH 1/11] [NET] Reorder struct inet_sock Thomas Graf
2005-03-09 19:47 ` [PATCH 2/11] [NET] Convert sk_zapped into SOCK_ZAPPED flag Thomas Graf
2005-03-09 19:54 ` Patrick McHardy
2005-03-09 19:56 ` Thomas Graf
2005-03-09 20:05 ` Patrick McHardy
2005-03-09 20:23 ` Thomas Graf
2005-03-09 19:47 ` [PATCH 3/11] [NET] Convert sk_user_write_queue into SOCK_USE_WRITE_QUEUE flag Thomas Graf
2005-03-09 19:48 ` [PATCH 4/11] [NET] Convert sk_debug into SOCK_DBG flag Thomas Graf
2005-03-09 19:48 ` [PATCH 5/11] [NET] Convert sk_rcvtstamp into SOCK_RCVTSTAMP flag Thomas Graf
2005-03-09 19:49 ` [PATCH 6/11] [NET] Convert sk_no_largesend into SOCK_NO_LARGESEND flag Thomas Graf
2005-03-09 19:49 ` [PATCH 7/11] [NET] Convert sk_localroute into SOCK_LOCALROUTE flag Thomas Graf
2005-03-09 19:50 ` [PATCH 8/11] [NET] Convert sk_queue_shrunk into SOCK_QUEUE_SHRUNK flag Thomas Graf
2005-03-09 19:51 ` [PATCH 9/11] [NET] Reorder struct sock Thomas Graf
2005-03-09 19:51 ` [PATCH 10/11] [NET] Reorder struct ipv6_pinfo Thomas Graf
2005-03-09 19:52 ` [PATCH 11/11] [NET] Reorder struct tcp_options_received Thomas Graf
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).