diff options
author | David S. Miller <davem@davemloft.net> | 2013-02-05 14:12:20 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2013-02-05 14:12:20 -0500 |
commit | 188d1f76d0dd3715ceeadfa31376867c3395eb41 (patch) | |
tree | b8976427ec21d3c346f2a993160b368c620c249a /net/ipv6 | |
parent | 577ae39ddb037242964f5fe87fd50b0b89e3263b (diff) | |
parent | bf414b369f158bb527f9f29174ada815f961b44c (diff) |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Conflicts:
drivers/net/ethernet/intel/e1000e/ethtool.c
drivers/net/vmxnet3/vmxnet3_drv.c
drivers/net/wireless/iwlwifi/dvm/tx.c
net/ipv6/route.c
The ipv6 route.c conflict is simple, just ignore the 'net' side change
as we fixed the same problem in 'net-next' by eliminating cached
neighbours from ipv6 routes.
The e1000e conflict is an addition of a new statistic in the ethtool
code, trivial.
The vmxnet3 conflict is about one change in 'net' removing a guarding
conditional, whilst in 'net-next' we had a netdev_info() conversion.
The iwlwifi conflict is dealing with a WARN_ON() conversion in
'net-next' vs. a revert happening in 'net'.
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv6')
-rw-r--r-- | net/ipv6/addrconf.c | 1 | ||||
-rw-r--r-- | net/ipv6/datagram.c | 16 | ||||
-rw-r--r-- | net/ipv6/ip6_flowlabel.c | 4 | ||||
-rw-r--r-- | net/ipv6/ipv6_sockglue.c | 6 | ||||
-rw-r--r-- | net/ipv6/raw.c | 6 | ||||
-rw-r--r-- | net/ipv6/tcp_ipv6.c | 6 | ||||
-rw-r--r-- | net/ipv6/udp.c | 6 |
7 files changed, 26 insertions, 19 deletions
diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c index 7f7332b44699..bd9f9360f769 100644 --- a/net/ipv6/addrconf.c +++ b/net/ipv6/addrconf.c | |||
@@ -1656,6 +1656,7 @@ static int addrconf_ifid_eui64(u8 *eui, struct net_device *dev) | |||
1656 | if (dev->addr_len != IEEE802154_ADDR_LEN) | 1656 | if (dev->addr_len != IEEE802154_ADDR_LEN) |
1657 | return -1; | 1657 | return -1; |
1658 | memcpy(eui, dev->dev_addr, 8); | 1658 | memcpy(eui, dev->dev_addr, 8); |
1659 | eui[0] ^= 2; | ||
1659 | return 0; | 1660 | return 0; |
1660 | } | 1661 | } |
1661 | 1662 | ||
diff --git a/net/ipv6/datagram.c b/net/ipv6/datagram.c index 33be36398a78..f5a54782a340 100644 --- a/net/ipv6/datagram.c +++ b/net/ipv6/datagram.c | |||
@@ -380,7 +380,7 @@ int ipv6_recv_error(struct sock *sk, struct msghdr *msg, int len) | |||
380 | if (skb->protocol == htons(ETH_P_IPV6)) { | 380 | if (skb->protocol == htons(ETH_P_IPV6)) { |
381 | sin->sin6_addr = ipv6_hdr(skb)->saddr; | 381 | sin->sin6_addr = ipv6_hdr(skb)->saddr; |
382 | if (np->rxopt.all) | 382 | if (np->rxopt.all) |
383 | datagram_recv_ctl(sk, msg, skb); | 383 | ip6_datagram_recv_ctl(sk, msg, skb); |
384 | if (ipv6_addr_type(&sin->sin6_addr) & IPV6_ADDR_LINKLOCAL) | 384 | if (ipv6_addr_type(&sin->sin6_addr) & IPV6_ADDR_LINKLOCAL) |
385 | sin->sin6_scope_id = IP6CB(skb)->iif; | 385 | sin->sin6_scope_id = IP6CB(skb)->iif; |
386 | } else { | 386 | } else { |
@@ -468,7 +468,8 @@ out: | |||
468 | } | 468 | } |
469 | 469 | ||
470 | 470 | ||
471 | int datagram_recv_ctl(struct sock *sk, struct msghdr *msg, struct sk_buff *skb) | 471 | int ip6_datagram_recv_ctl(struct sock *sk, struct msghdr *msg, |
472 | struct sk_buff *skb) | ||
472 | { | 473 | { |
473 | struct ipv6_pinfo *np = inet6_sk(sk); | 474 | struct ipv6_pinfo *np = inet6_sk(sk); |
474 | struct inet6_skb_parm *opt = IP6CB(skb); | 475 | struct inet6_skb_parm *opt = IP6CB(skb); |
@@ -598,11 +599,12 @@ int datagram_recv_ctl(struct sock *sk, struct msghdr *msg, struct sk_buff *skb) | |||
598 | } | 599 | } |
599 | return 0; | 600 | return 0; |
600 | } | 601 | } |
602 | EXPORT_SYMBOL_GPL(ip6_datagram_recv_ctl); | ||
601 | 603 | ||
602 | int datagram_send_ctl(struct net *net, struct sock *sk, | 604 | int ip6_datagram_send_ctl(struct net *net, struct sock *sk, |
603 | struct msghdr *msg, struct flowi6 *fl6, | 605 | struct msghdr *msg, struct flowi6 *fl6, |
604 | struct ipv6_txoptions *opt, | 606 | struct ipv6_txoptions *opt, |
605 | int *hlimit, int *tclass, int *dontfrag) | 607 | int *hlimit, int *tclass, int *dontfrag) |
606 | { | 608 | { |
607 | struct in6_pktinfo *src_info; | 609 | struct in6_pktinfo *src_info; |
608 | struct cmsghdr *cmsg; | 610 | struct cmsghdr *cmsg; |
@@ -872,4 +874,4 @@ int datagram_send_ctl(struct net *net, struct sock *sk, | |||
872 | exit_f: | 874 | exit_f: |
873 | return err; | 875 | return err; |
874 | } | 876 | } |
875 | EXPORT_SYMBOL_GPL(datagram_send_ctl); | 877 | EXPORT_SYMBOL_GPL(ip6_datagram_send_ctl); |
diff --git a/net/ipv6/ip6_flowlabel.c b/net/ipv6/ip6_flowlabel.c index 22494afd981c..ea42bf40a997 100644 --- a/net/ipv6/ip6_flowlabel.c +++ b/net/ipv6/ip6_flowlabel.c | |||
@@ -390,8 +390,8 @@ fl_create(struct net *net, struct sock *sk, struct in6_flowlabel_req *freq, | |||
390 | msg.msg_control = (void*)(fl->opt+1); | 390 | msg.msg_control = (void*)(fl->opt+1); |
391 | memset(&flowi6, 0, sizeof(flowi6)); | 391 | memset(&flowi6, 0, sizeof(flowi6)); |
392 | 392 | ||
393 | err = datagram_send_ctl(net, sk, &msg, &flowi6, fl->opt, &junk, | 393 | err = ip6_datagram_send_ctl(net, sk, &msg, &flowi6, fl->opt, |
394 | &junk, &junk); | 394 | &junk, &junk, &junk); |
395 | if (err) | 395 | if (err) |
396 | goto done; | 396 | goto done; |
397 | err = -EINVAL; | 397 | err = -EINVAL; |
diff --git a/net/ipv6/ipv6_sockglue.c b/net/ipv6/ipv6_sockglue.c index ee94d31c9d4d..d1e2e8ef29c5 100644 --- a/net/ipv6/ipv6_sockglue.c +++ b/net/ipv6/ipv6_sockglue.c | |||
@@ -476,8 +476,8 @@ sticky_done: | |||
476 | msg.msg_controllen = optlen; | 476 | msg.msg_controllen = optlen; |
477 | msg.msg_control = (void*)(opt+1); | 477 | msg.msg_control = (void*)(opt+1); |
478 | 478 | ||
479 | retv = datagram_send_ctl(net, sk, &msg, &fl6, opt, &junk, &junk, | 479 | retv = ip6_datagram_send_ctl(net, sk, &msg, &fl6, opt, &junk, |
480 | &junk); | 480 | &junk, &junk); |
481 | if (retv) | 481 | if (retv) |
482 | goto done; | 482 | goto done; |
483 | update: | 483 | update: |
@@ -1002,7 +1002,7 @@ static int do_ipv6_getsockopt(struct sock *sk, int level, int optname, | |||
1002 | release_sock(sk); | 1002 | release_sock(sk); |
1003 | 1003 | ||
1004 | if (skb) { | 1004 | if (skb) { |
1005 | int err = datagram_recv_ctl(sk, &msg, skb); | 1005 | int err = ip6_datagram_recv_ctl(sk, &msg, skb); |
1006 | kfree_skb(skb); | 1006 | kfree_skb(skb); |
1007 | if (err) | 1007 | if (err) |
1008 | return err; | 1008 | return err; |
diff --git a/net/ipv6/raw.c b/net/ipv6/raw.c index 6cd29b1e8b92..70fa81449997 100644 --- a/net/ipv6/raw.c +++ b/net/ipv6/raw.c | |||
@@ -507,7 +507,7 @@ static int rawv6_recvmsg(struct kiocb *iocb, struct sock *sk, | |||
507 | sock_recv_ts_and_drops(msg, sk, skb); | 507 | sock_recv_ts_and_drops(msg, sk, skb); |
508 | 508 | ||
509 | if (np->rxopt.all) | 509 | if (np->rxopt.all) |
510 | datagram_recv_ctl(sk, msg, skb); | 510 | ip6_datagram_recv_ctl(sk, msg, skb); |
511 | 511 | ||
512 | err = copied; | 512 | err = copied; |
513 | if (flags & MSG_TRUNC) | 513 | if (flags & MSG_TRUNC) |
@@ -822,8 +822,8 @@ static int rawv6_sendmsg(struct kiocb *iocb, struct sock *sk, | |||
822 | memset(opt, 0, sizeof(struct ipv6_txoptions)); | 822 | memset(opt, 0, sizeof(struct ipv6_txoptions)); |
823 | opt->tot_len = sizeof(struct ipv6_txoptions); | 823 | opt->tot_len = sizeof(struct ipv6_txoptions); |
824 | 824 | ||
825 | err = datagram_send_ctl(sock_net(sk), sk, msg, &fl6, opt, | 825 | err = ip6_datagram_send_ctl(sock_net(sk), sk, msg, &fl6, opt, |
826 | &hlimit, &tclass, &dontfrag); | 826 | &hlimit, &tclass, &dontfrag); |
827 | if (err < 0) { | 827 | if (err < 0) { |
828 | fl6_sock_release(flowlabel); | 828 | fl6_sock_release(flowlabel); |
829 | return err; | 829 | return err; |
diff --git a/net/ipv6/tcp_ipv6.c b/net/ipv6/tcp_ipv6.c index 06087e58738a..bbb28ae7e5f3 100644 --- a/net/ipv6/tcp_ipv6.c +++ b/net/ipv6/tcp_ipv6.c | |||
@@ -423,6 +423,7 @@ static void tcp_v6_err(struct sk_buff *skb, struct inet6_skb_parm *opt, | |||
423 | } | 423 | } |
424 | 424 | ||
425 | inet_csk_reqsk_queue_drop(sk, req, prev); | 425 | inet_csk_reqsk_queue_drop(sk, req, prev); |
426 | NET_INC_STATS_BH(sock_net(sk), LINUX_MIB_LISTENDROPS); | ||
426 | goto out; | 427 | goto out; |
427 | 428 | ||
428 | case TCP_SYN_SENT: | 429 | case TCP_SYN_SENT: |
@@ -959,8 +960,10 @@ static int tcp_v6_conn_request(struct sock *sk, struct sk_buff *skb) | |||
959 | goto drop; | 960 | goto drop; |
960 | } | 961 | } |
961 | 962 | ||
962 | if (sk_acceptq_is_full(sk) && inet_csk_reqsk_queue_young(sk) > 1) | 963 | if (sk_acceptq_is_full(sk) && inet_csk_reqsk_queue_young(sk) > 1) { |
964 | NET_INC_STATS_BH(sock_net(sk), LINUX_MIB_LISTENOVERFLOWS); | ||
963 | goto drop; | 965 | goto drop; |
966 | } | ||
964 | 967 | ||
965 | req = inet6_reqsk_alloc(&tcp6_request_sock_ops); | 968 | req = inet6_reqsk_alloc(&tcp6_request_sock_ops); |
966 | if (req == NULL) | 969 | if (req == NULL) |
@@ -1109,6 +1112,7 @@ drop_and_release: | |||
1109 | drop_and_free: | 1112 | drop_and_free: |
1110 | reqsk_free(req); | 1113 | reqsk_free(req); |
1111 | drop: | 1114 | drop: |
1115 | NET_INC_STATS_BH(sock_net(sk), LINUX_MIB_LISTENDROPS); | ||
1112 | return 0; /* don't send reset */ | 1116 | return 0; /* don't send reset */ |
1113 | } | 1117 | } |
1114 | 1118 | ||
diff --git a/net/ipv6/udp.c b/net/ipv6/udp.c index cb5bf497c09c..599e1ba6d1ce 100644 --- a/net/ipv6/udp.c +++ b/net/ipv6/udp.c | |||
@@ -467,7 +467,7 @@ try_again: | |||
467 | ip_cmsg_recv(msg, skb); | 467 | ip_cmsg_recv(msg, skb); |
468 | } else { | 468 | } else { |
469 | if (np->rxopt.all) | 469 | if (np->rxopt.all) |
470 | datagram_recv_ctl(sk, msg, skb); | 470 | ip6_datagram_recv_ctl(sk, msg, skb); |
471 | } | 471 | } |
472 | 472 | ||
473 | err = copied; | 473 | err = copied; |
@@ -1143,8 +1143,8 @@ do_udp_sendmsg: | |||
1143 | memset(opt, 0, sizeof(struct ipv6_txoptions)); | 1143 | memset(opt, 0, sizeof(struct ipv6_txoptions)); |
1144 | opt->tot_len = sizeof(*opt); | 1144 | opt->tot_len = sizeof(*opt); |
1145 | 1145 | ||
1146 | err = datagram_send_ctl(sock_net(sk), sk, msg, &fl6, opt, | 1146 | err = ip6_datagram_send_ctl(sock_net(sk), sk, msg, &fl6, opt, |
1147 | &hlimit, &tclass, &dontfrag); | 1147 | &hlimit, &tclass, &dontfrag); |
1148 | if (err < 0) { | 1148 | if (err < 0) { |
1149 | fl6_sock_release(flowlabel); | 1149 | fl6_sock_release(flowlabel); |
1150 | return err; | 1150 | return err; |