netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [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).