patch-2.0.31 linux/include/net/tcp.h
Next file: linux/include/scsi/scsi_ioctl.h
Previous file: linux/include/net/sock.h
Back to the patch index
Back to the overall index
- Lines: 52
- Date:
Wed Oct 15 15:23:56 1997
- Orig file:
v2.0.30/linux/include/net/tcp.h
- Orig date:
Tue Apr 8 08:47:47 1997
diff -u --recursive --new-file v2.0.30/linux/include/net/tcp.h linux/include/net/tcp.h
@@ -41,7 +41,23 @@
/* These are AF independant. */
static __inline__ int tcp_bhashfn(__u16 lport)
{
- return (lport ^ (lport >> 7)) & (TCP_BHTABLE_SIZE - 1);
+ return (lport ^ (lport >> 7)) & (TCP_BHTABLE_SIZE-1);
+}
+
+/* Find the next port that hashes h that is larger than lport.
+ * If you change the hash, change this function to match, or you will
+ * break TCP port selection. This function must also NOT wrap around
+ * when the next number exceeds the largest possible port (2^16-1).
+ */
+static __inline__ int tcp_bhashnext(__u16 lport, __u16 h)
+{
+ __u32 s; /* don't change this to a smaller type! */
+
+ s = (lport ^ (h ^ tcp_bhashfn(lport)));
+ if (s > lport)
+ return s;
+ s = lport + TCP_BHTABLE_SIZE;
+ return (s ^ (h ^ tcp_bhashfn(s)));
}
static __inline__ int tcp_sk_bhashfn(struct sock *sk)
@@ -116,7 +132,7 @@
stacks do signed 16bit maths! */
#define MIN_WINDOW 2048
#define MAX_ACK_BACKLOG 2
-#define MAX_DUP_ACKS 2
+#define MAX_DUP_ACKS 3
#define MIN_WRITE_SPACE 2048
#define TCP_WINDOW_DIFF 2048
@@ -221,6 +237,8 @@
extern int tcp_ioctl(struct sock *sk, int cmd, unsigned long arg);
+extern void tcp_v4_unhash(struct sock *sk);
+
extern void tcp_read_wakeup(struct sock *);
extern void tcp_write_xmit(struct sock *);
extern void tcp_time_wait(struct sock *);
@@ -342,6 +360,8 @@
break;
case TCP_CLOSE:
+ /* Preserve the invariant */
+ tcp_v4_unhash(sk);
/* Should be about 2 rtt's */
reset_timer(sk, TIME_DONE, min(sk->rtt * 2, TCP_DONE_TIME));
/* fall through */
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen, slshen@lbl.gov