From: David S. Miller Date: Thu, 4 Oct 2018 04:00:17 +0000 (-0700) Subject: Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net X-Git-Url: http://git.cdn.openwrt.org/?a=commitdiff_plain;h=6f41617bf23a17d9cb7cc6ca8161534f05f80293;p=openwrt%2Fstaging%2Fblogic.git Merge git://git./linux/kernel/git/davem/net Minor conflict in net/core/rtnetlink.c, David Ahern's bug fix in 'net' overlapped the renaming of a netlink attribute in net-next. Signed-off-by: David S. Miller --- 6f41617bf23a17d9cb7cc6ca8161534f05f80293 diff --cc drivers/net/ethernet/netronome/nfp/nfp_net_common.c index d05e37fcc1b2,c6d29fdbb880..24c8f5bb1eb4 --- a/drivers/net/ethernet/netronome/nfp/nfp_net_common.c +++ b/drivers/net/ethernet/netronome/nfp/nfp_net_common.c @@@ -2091,14 -2094,18 +2094,18 @@@ static void nfp_ctrl_poll(unsigned lon { struct nfp_net_r_vector *r_vec = (void *)arg; - spin_lock_bh(&r_vec->lock); + spin_lock(&r_vec->lock); nfp_net_tx_complete(r_vec->tx_ring, 0); __nfp_ctrl_tx_queued(r_vec); - spin_unlock_bh(&r_vec->lock); + spin_unlock(&r_vec->lock); - nfp_ctrl_rx(r_vec); - - nfp_net_irq_unmask(r_vec->nfp_net, r_vec->irq_entry); + if (nfp_ctrl_rx(r_vec)) { + nfp_net_irq_unmask(r_vec->nfp_net, r_vec->irq_entry); + } else { + tasklet_schedule(&r_vec->tasklet); + nn_dp_warn(&r_vec->nfp_net->dp, + "control message budget exceeded!\n"); + } } /* Setup and Configuration diff --cc drivers/net/tun.c index 3eb88b7147f0,50e9cc19023a..b1743420939b --- a/drivers/net/tun.c +++ b/drivers/net/tun.c @@@ -865,12 -867,9 +866,12 @@@ static int tun_attach(struct tun_struc tun_enable_queue(tfile); } else { sock_hold(&tfile->sk); - tun_napi_init(tun, tfile, napi); + tun_napi_init(tun, tfile, napi, napi_frags); } + if (rtnl_dereference(tun->xdp_prog)) + sock_set_flag(&tfile->sk, SOCK_XDP); + tun_set_real_num_queues(tun); /* device is allowed to go away first, so no need to hold extra diff --cc drivers/net/xen-netback/interface.c index 7e3ea39a1b39,f6ae23fc3f6b..182d6770f102 --- a/drivers/net/xen-netback/interface.c +++ b/drivers/net/xen-netback/interface.c @@@ -162,11 -162,11 +162,12 @@@ static u16 xenvif_select_queue(struct n if (size == 0) return skb_get_hash_raw(skb) % dev->real_num_tx_queues; - return vif->hash.mapping[skb_get_hash_raw(skb) % size]; + return vif->hash.mapping[vif->hash.mapping_sel] + [skb_get_hash_raw(skb) % size]; } -static int xenvif_start_xmit(struct sk_buff *skb, struct net_device *dev) +static netdev_tx_t +xenvif_start_xmit(struct sk_buff *skb, struct net_device *dev) { struct xenvif *vif = netdev_priv(dev); struct xenvif_queue *queue = NULL; diff --cc net/core/rtnetlink.c index 35162e1b06ad,448703312fed..57bf96d73e3b --- a/net/core/rtnetlink.c +++ b/net/core/rtnetlink.c @@@ -1910,13 -1895,11 +1910,11 @@@ static int rtnl_dump_ifinfo(struct sk_b if (nlmsg_parse(cb->nlh, hdrlen, tb, IFLA_MAX, ifla_policy, NULL) >= 0) { - if (tb[IFLA_IF_NETNSID]) { - netnsid = nla_get_s32(tb[IFLA_IF_NETNSID]); - tgt_net = get_target_net(skb->sk, netnsid); + if (tb[IFLA_TARGET_NETNSID]) { + netnsid = nla_get_s32(tb[IFLA_TARGET_NETNSID]); + tgt_net = rtnl_get_net_ns_capable(skb->sk, netnsid); - if (IS_ERR(tgt_net)) { - tgt_net = net; - netnsid = -1; - } + if (IS_ERR(tgt_net)) + return PTR_ERR(tgt_net); } if (tb[IFLA_EXT_MASK])