diff options
author | Ralf Baechle <ralf@linux-mips.org> | 1997-12-01 04:02:08 +0000 |
---|---|---|
committer | Ralf Baechle <ralf@linux-mips.org> | 1997-12-01 04:02:08 +0000 |
commit | fd095d09f2d475dc2e8599b1b8bae1cd65e91685 (patch) | |
tree | 217f87a997699505e0dd752931409b9f10fffe65 /net/ipv4 | |
parent | c02e0599c4233f97071928f8118841954bacdadf (diff) |
Merge with 2.1.56 as first part of merging back my code.
Diffstat (limited to 'net/ipv4')
-rw-r--r-- | net/ipv4/arp.c | 5 | ||||
-rw-r--r-- | net/ipv4/tcp_output.c | 7 |
2 files changed, 8 insertions, 4 deletions
diff --git a/net/ipv4/arp.c b/net/ipv4/arp.c index ebf2c6c6b..472f64811 100644 --- a/net/ipv4/arp.c +++ b/net/ipv4/arp.c @@ -797,10 +797,11 @@ static struct arp_table * arp_alloc(int how) entry = (struct arp_table *)neigh_alloc(sizeof(struct arp_table), &arp_neigh_ops); - atomic_set(&entry->u.neigh.refcnt, 1); if (entry != NULL) { + atomic_set(&entry->u.neigh.refcnt, 1); + if (how) atomic_inc(&arp_size); @@ -1265,7 +1266,7 @@ void arp_send(int type, int ptype, u32 dest_ip, arp = (struct arphdr *) skb_put(skb,sizeof(struct arphdr) + 2*(dev->addr_len+4)); skb->arp = 1; skb->dev = dev; - skb->protocol = htons (ETH_P_IP); + skb->protocol = htons (ETH_P_ARP); /* * Fill the device header for the ARP frame diff --git a/net/ipv4/tcp_output.c b/net/ipv4/tcp_output.c index ddb398938..74dbd2266 100644 --- a/net/ipv4/tcp_output.c +++ b/net/ipv4/tcp_output.c @@ -5,7 +5,7 @@ * * Implementation of the Transmission Control Protocol(TCP). * - * Version: $Id: tcp_output.c,v 1.1.1.1 1997/06/01 03:16:26 ralf Exp $ + * Version: $Id: tcp_output.c,v 1.2 1997/09/12 01:34:42 ralf Exp $ * * Authors: Ross Biro, <bir7@leland.Stanford.Edu> * Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG> @@ -605,11 +605,14 @@ static int tcp_retrans_try_collapse(struct sock *sk, struct sk_buff *skb) memcpy(skb_put(skb, size2), ((char *) th2) + (th2->doff << 2), size2); /* Update sizes on original skb, both TCP and IP. */ - skb->end_seq += size2; + skb->end_seq += buff->end_seq - buff->seq; if (th2->urg) { th1->urg = 1; th1->urg_ptr = th2->urg_ptr + size1; } + if (th2->fin) { + th1->fin = 1; + } /* ... and off you go. */ kfree_skb(buff, FREE_WRITE); |