mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-29 03:01:39 -04:00
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 <[email protected]>
This commit is contained in:
commit
188d1f76d0
38 changed files with 291 additions and 166 deletions
|
|
@ -1656,6 +1656,7 @@ static int addrconf_ifid_eui64(u8 *eui, struct net_device *dev)
|
|||
if (dev->addr_len != IEEE802154_ADDR_LEN)
|
||||
return -1;
|
||||
memcpy(eui, dev->dev_addr, 8);
|
||||
eui[0] ^= 2;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -380,7 +380,7 @@ int ipv6_recv_error(struct sock *sk, struct msghdr *msg, int len)
|
|||
if (skb->protocol == htons(ETH_P_IPV6)) {
|
||||
sin->sin6_addr = ipv6_hdr(skb)->saddr;
|
||||
if (np->rxopt.all)
|
||||
datagram_recv_ctl(sk, msg, skb);
|
||||
ip6_datagram_recv_ctl(sk, msg, skb);
|
||||
if (ipv6_addr_type(&sin->sin6_addr) & IPV6_ADDR_LINKLOCAL)
|
||||
sin->sin6_scope_id = IP6CB(skb)->iif;
|
||||
} else {
|
||||
|
|
@ -468,7 +468,8 @@ out:
|
|||
}
|
||||
|
||||
|
||||
int datagram_recv_ctl(struct sock *sk, struct msghdr *msg, struct sk_buff *skb)
|
||||
int ip6_datagram_recv_ctl(struct sock *sk, struct msghdr *msg,
|
||||
struct sk_buff *skb)
|
||||
{
|
||||
struct ipv6_pinfo *np = inet6_sk(sk);
|
||||
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)
|
|||
}
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(ip6_datagram_recv_ctl);
|
||||
|
||||
int datagram_send_ctl(struct net *net, struct sock *sk,
|
||||
struct msghdr *msg, struct flowi6 *fl6,
|
||||
struct ipv6_txoptions *opt,
|
||||
int *hlimit, int *tclass, int *dontfrag)
|
||||
int ip6_datagram_send_ctl(struct net *net, struct sock *sk,
|
||||
struct msghdr *msg, struct flowi6 *fl6,
|
||||
struct ipv6_txoptions *opt,
|
||||
int *hlimit, int *tclass, int *dontfrag)
|
||||
{
|
||||
struct in6_pktinfo *src_info;
|
||||
struct cmsghdr *cmsg;
|
||||
|
|
@ -872,4 +874,4 @@ int datagram_send_ctl(struct net *net, struct sock *sk,
|
|||
exit_f:
|
||||
return err;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(datagram_send_ctl);
|
||||
EXPORT_SYMBOL_GPL(ip6_datagram_send_ctl);
|
||||
|
|
|
|||
|
|
@ -390,8 +390,8 @@ fl_create(struct net *net, struct sock *sk, struct in6_flowlabel_req *freq,
|
|||
msg.msg_control = (void*)(fl->opt+1);
|
||||
memset(&flowi6, 0, sizeof(flowi6));
|
||||
|
||||
err = datagram_send_ctl(net, sk, &msg, &flowi6, fl->opt, &junk,
|
||||
&junk, &junk);
|
||||
err = ip6_datagram_send_ctl(net, sk, &msg, &flowi6, fl->opt,
|
||||
&junk, &junk, &junk);
|
||||
if (err)
|
||||
goto done;
|
||||
err = -EINVAL;
|
||||
|
|
|
|||
|
|
@ -476,8 +476,8 @@ sticky_done:
|
|||
msg.msg_controllen = optlen;
|
||||
msg.msg_control = (void*)(opt+1);
|
||||
|
||||
retv = datagram_send_ctl(net, sk, &msg, &fl6, opt, &junk, &junk,
|
||||
&junk);
|
||||
retv = ip6_datagram_send_ctl(net, sk, &msg, &fl6, opt, &junk,
|
||||
&junk, &junk);
|
||||
if (retv)
|
||||
goto done;
|
||||
update:
|
||||
|
|
@ -1002,7 +1002,7 @@ static int do_ipv6_getsockopt(struct sock *sk, int level, int optname,
|
|||
release_sock(sk);
|
||||
|
||||
if (skb) {
|
||||
int err = datagram_recv_ctl(sk, &msg, skb);
|
||||
int err = ip6_datagram_recv_ctl(sk, &msg, skb);
|
||||
kfree_skb(skb);
|
||||
if (err)
|
||||
return err;
|
||||
|
|
|
|||
|
|
@ -507,7 +507,7 @@ static int rawv6_recvmsg(struct kiocb *iocb, struct sock *sk,
|
|||
sock_recv_ts_and_drops(msg, sk, skb);
|
||||
|
||||
if (np->rxopt.all)
|
||||
datagram_recv_ctl(sk, msg, skb);
|
||||
ip6_datagram_recv_ctl(sk, msg, skb);
|
||||
|
||||
err = copied;
|
||||
if (flags & MSG_TRUNC)
|
||||
|
|
@ -822,8 +822,8 @@ static int rawv6_sendmsg(struct kiocb *iocb, struct sock *sk,
|
|||
memset(opt, 0, sizeof(struct ipv6_txoptions));
|
||||
opt->tot_len = sizeof(struct ipv6_txoptions);
|
||||
|
||||
err = datagram_send_ctl(sock_net(sk), sk, msg, &fl6, opt,
|
||||
&hlimit, &tclass, &dontfrag);
|
||||
err = ip6_datagram_send_ctl(sock_net(sk), sk, msg, &fl6, opt,
|
||||
&hlimit, &tclass, &dontfrag);
|
||||
if (err < 0) {
|
||||
fl6_sock_release(flowlabel);
|
||||
return err;
|
||||
|
|
|
|||
|
|
@ -423,6 +423,7 @@ static void tcp_v6_err(struct sk_buff *skb, struct inet6_skb_parm *opt,
|
|||
}
|
||||
|
||||
inet_csk_reqsk_queue_drop(sk, req, prev);
|
||||
NET_INC_STATS_BH(sock_net(sk), LINUX_MIB_LISTENDROPS);
|
||||
goto out;
|
||||
|
||||
case TCP_SYN_SENT:
|
||||
|
|
@ -959,8 +960,10 @@ static int tcp_v6_conn_request(struct sock *sk, struct sk_buff *skb)
|
|||
goto drop;
|
||||
}
|
||||
|
||||
if (sk_acceptq_is_full(sk) && inet_csk_reqsk_queue_young(sk) > 1)
|
||||
if (sk_acceptq_is_full(sk) && inet_csk_reqsk_queue_young(sk) > 1) {
|
||||
NET_INC_STATS_BH(sock_net(sk), LINUX_MIB_LISTENOVERFLOWS);
|
||||
goto drop;
|
||||
}
|
||||
|
||||
req = inet6_reqsk_alloc(&tcp6_request_sock_ops);
|
||||
if (req == NULL)
|
||||
|
|
@ -1109,6 +1112,7 @@ drop_and_release:
|
|||
drop_and_free:
|
||||
reqsk_free(req);
|
||||
drop:
|
||||
NET_INC_STATS_BH(sock_net(sk), LINUX_MIB_LISTENDROPS);
|
||||
return 0; /* don't send reset */
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -467,7 +467,7 @@ try_again:
|
|||
ip_cmsg_recv(msg, skb);
|
||||
} else {
|
||||
if (np->rxopt.all)
|
||||
datagram_recv_ctl(sk, msg, skb);
|
||||
ip6_datagram_recv_ctl(sk, msg, skb);
|
||||
}
|
||||
|
||||
err = copied;
|
||||
|
|
@ -1143,8 +1143,8 @@ do_udp_sendmsg:
|
|||
memset(opt, 0, sizeof(struct ipv6_txoptions));
|
||||
opt->tot_len = sizeof(*opt);
|
||||
|
||||
err = datagram_send_ctl(sock_net(sk), sk, msg, &fl6, opt,
|
||||
&hlimit, &tclass, &dontfrag);
|
||||
err = ip6_datagram_send_ctl(sock_net(sk), sk, msg, &fl6, opt,
|
||||
&hlimit, &tclass, &dontfrag);
|
||||
if (err < 0) {
|
||||
fl6_sock_release(flowlabel);
|
||||
return err;
|
||||
|
|
|
|||
Loading…
Reference in a new issue