diff options
author | David S. Miller <davem@davemloft.net> | 2008-03-05 15:26:41 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2008-03-05 15:26:41 -0500 |
commit | 255333c1db3ec63921de29b134418a4e56e5921e (patch) | |
tree | b1cd99373cabfa6fed020496d4d74500e7bc7e92 /net/ipv4 | |
parent | 9a43b709a230705ca40a6f854a334a02334a3c1c (diff) | |
parent | 0d66afe7805b169b6bf3c7a88cf8163298b8ef05 (diff) |
Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
Conflicts:
net/mac80211/rc80211_pid_algo.c
Diffstat (limited to 'net/ipv4')
-rw-r--r-- | net/ipv4/Kconfig | 2 | ||||
-rw-r--r-- | net/ipv4/ipconfig.c | 4 | ||||
-rw-r--r-- | net/ipv4/tcp_bic.c | 5 | ||||
-rw-r--r-- | net/ipv4/tcp_input.c | 14 |
4 files changed, 15 insertions, 10 deletions
diff --git a/net/ipv4/Kconfig b/net/ipv4/Kconfig index efe3832c4ad8..5098fd2ff4d0 100644 --- a/net/ipv4/Kconfig +++ b/net/ipv4/Kconfig | |||
@@ -343,7 +343,7 @@ config INET_ESP | |||
343 | tristate "IP: ESP transformation" | 343 | tristate "IP: ESP transformation" |
344 | select XFRM | 344 | select XFRM |
345 | select CRYPTO | 345 | select CRYPTO |
346 | select CRYPTO_AEAD | 346 | select CRYPTO_AUTHENC |
347 | select CRYPTO_HMAC | 347 | select CRYPTO_HMAC |
348 | select CRYPTO_MD5 | 348 | select CRYPTO_MD5 |
349 | select CRYPTO_CBC | 349 | select CRYPTO_CBC |
diff --git a/net/ipv4/ipconfig.c b/net/ipv4/ipconfig.c index f84041d1f623..4afce0572806 100644 --- a/net/ipv4/ipconfig.c +++ b/net/ipv4/ipconfig.c | |||
@@ -750,9 +750,9 @@ static void __init ic_bootp_send_if(struct ic_device *d, unsigned long jiffies_d | |||
750 | printk("Unknown ARP type 0x%04x for device %s\n", dev->type, dev->name); | 750 | printk("Unknown ARP type 0x%04x for device %s\n", dev->type, dev->name); |
751 | b->htype = dev->type; /* can cause undefined behavior */ | 751 | b->htype = dev->type; /* can cause undefined behavior */ |
752 | } | 752 | } |
753 | |||
754 | /* server_ip and your_ip address are both already zero per RFC2131 */ | ||
753 | b->hlen = dev->addr_len; | 755 | b->hlen = dev->addr_len; |
754 | b->your_ip = NONE; | ||
755 | b->server_ip = NONE; | ||
756 | memcpy(b->hw_addr, dev->dev_addr, dev->addr_len); | 756 | memcpy(b->hw_addr, dev->dev_addr, dev->addr_len); |
757 | b->secs = htons(jiffies_diff / HZ); | 757 | b->secs = htons(jiffies_diff / HZ); |
758 | b->xid = d->xid; | 758 | b->xid = d->xid; |
diff --git a/net/ipv4/tcp_bic.c b/net/ipv4/tcp_bic.c index 5212ed9b0c98..7eb7636db0d0 100644 --- a/net/ipv4/tcp_bic.c +++ b/net/ipv4/tcp_bic.c | |||
@@ -1,12 +1,13 @@ | |||
1 | /* | 1 | /* |
2 | * Binary Increase Congestion control for TCP | 2 | * Binary Increase Congestion control for TCP |
3 | * | 3 | * Home page: |
4 | * http://netsrv.csc.ncsu.edu/twiki/bin/view/Main/BIC | ||
4 | * This is from the implementation of BICTCP in | 5 | * This is from the implementation of BICTCP in |
5 | * Lison-Xu, Kahaled Harfoush, and Injong Rhee. | 6 | * Lison-Xu, Kahaled Harfoush, and Injong Rhee. |
6 | * "Binary Increase Congestion Control for Fast, Long Distance | 7 | * "Binary Increase Congestion Control for Fast, Long Distance |
7 | * Networks" in InfoComm 2004 | 8 | * Networks" in InfoComm 2004 |
8 | * Available from: | 9 | * Available from: |
9 | * http://www.csc.ncsu.edu/faculty/rhee/export/bitcp.pdf | 10 | * http://netsrv.csc.ncsu.edu/export/bitcp.pdf |
10 | * | 11 | * |
11 | * Unless BIC is enabled and congestion window is large | 12 | * Unless BIC is enabled and congestion window is large |
12 | * this behaves the same as the original Reno. | 13 | * this behaves the same as the original Reno. |
diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c index 93e128c239c4..c4679f343675 100644 --- a/net/ipv4/tcp_input.c +++ b/net/ipv4/tcp_input.c | |||
@@ -1367,7 +1367,7 @@ static struct sk_buff *tcp_sacktag_walk(struct sk_buff *skb, struct sock *sk, | |||
1367 | * a normal way | 1367 | * a normal way |
1368 | */ | 1368 | */ |
1369 | static struct sk_buff *tcp_sacktag_skip(struct sk_buff *skb, struct sock *sk, | 1369 | static struct sk_buff *tcp_sacktag_skip(struct sk_buff *skb, struct sock *sk, |
1370 | u32 skip_to_seq) | 1370 | u32 skip_to_seq, int *fack_count) |
1371 | { | 1371 | { |
1372 | tcp_for_write_queue_from(skb, sk) { | 1372 | tcp_for_write_queue_from(skb, sk) { |
1373 | if (skb == tcp_send_head(sk)) | 1373 | if (skb == tcp_send_head(sk)) |
@@ -1375,6 +1375,8 @@ static struct sk_buff *tcp_sacktag_skip(struct sk_buff *skb, struct sock *sk, | |||
1375 | 1375 | ||
1376 | if (!before(TCP_SKB_CB(skb)->end_seq, skip_to_seq)) | 1376 | if (!before(TCP_SKB_CB(skb)->end_seq, skip_to_seq)) |
1377 | break; | 1377 | break; |
1378 | |||
1379 | *fack_count += tcp_skb_pcount(skb); | ||
1378 | } | 1380 | } |
1379 | return skb; | 1381 | return skb; |
1380 | } | 1382 | } |
@@ -1390,7 +1392,7 @@ static struct sk_buff *tcp_maybe_skipping_dsack(struct sk_buff *skb, | |||
1390 | return skb; | 1392 | return skb; |
1391 | 1393 | ||
1392 | if (before(next_dup->start_seq, skip_to_seq)) { | 1394 | if (before(next_dup->start_seq, skip_to_seq)) { |
1393 | skb = tcp_sacktag_skip(skb, sk, next_dup->start_seq); | 1395 | skb = tcp_sacktag_skip(skb, sk, next_dup->start_seq, fack_count); |
1394 | tcp_sacktag_walk(skb, sk, NULL, | 1396 | tcp_sacktag_walk(skb, sk, NULL, |
1395 | next_dup->start_seq, next_dup->end_seq, | 1397 | next_dup->start_seq, next_dup->end_seq, |
1396 | 1, fack_count, reord, flag); | 1398 | 1, fack_count, reord, flag); |
@@ -1537,7 +1539,8 @@ tcp_sacktag_write_queue(struct sock *sk, struct sk_buff *ack_skb, | |||
1537 | 1539 | ||
1538 | /* Head todo? */ | 1540 | /* Head todo? */ |
1539 | if (before(start_seq, cache->start_seq)) { | 1541 | if (before(start_seq, cache->start_seq)) { |
1540 | skb = tcp_sacktag_skip(skb, sk, start_seq); | 1542 | skb = tcp_sacktag_skip(skb, sk, start_seq, |
1543 | &fack_count); | ||
1541 | skb = tcp_sacktag_walk(skb, sk, next_dup, | 1544 | skb = tcp_sacktag_walk(skb, sk, next_dup, |
1542 | start_seq, | 1545 | start_seq, |
1543 | cache->start_seq, | 1546 | cache->start_seq, |
@@ -1565,7 +1568,8 @@ tcp_sacktag_write_queue(struct sock *sk, struct sk_buff *ack_skb, | |||
1565 | goto walk; | 1568 | goto walk; |
1566 | } | 1569 | } |
1567 | 1570 | ||
1568 | skb = tcp_sacktag_skip(skb, sk, cache->end_seq); | 1571 | skb = tcp_sacktag_skip(skb, sk, cache->end_seq, |
1572 | &fack_count); | ||
1569 | /* Check overlap against next cached too (past this one already) */ | 1573 | /* Check overlap against next cached too (past this one already) */ |
1570 | cache++; | 1574 | cache++; |
1571 | continue; | 1575 | continue; |
@@ -1577,7 +1581,7 @@ tcp_sacktag_write_queue(struct sock *sk, struct sk_buff *ack_skb, | |||
1577 | break; | 1581 | break; |
1578 | fack_count = tp->fackets_out; | 1582 | fack_count = tp->fackets_out; |
1579 | } | 1583 | } |
1580 | skb = tcp_sacktag_skip(skb, sk, start_seq); | 1584 | skb = tcp_sacktag_skip(skb, sk, start_seq, &fack_count); |
1581 | 1585 | ||
1582 | walk: | 1586 | walk: |
1583 | skb = tcp_sacktag_walk(skb, sk, next_dup, start_seq, end_seq, | 1587 | skb = tcp_sacktag_walk(skb, sk, next_dup, start_seq, end_seq, |