From: David S. Miller Date: Thu, 5 Feb 2015 22:33:28 +0000 (-0800) Subject: Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net X-Git-Url: http://drtracing.org/?a=commitdiff_plain;h=6e03f896b52c;p=deliverable%2Flinux.git Merge git://git./linux/kernel/git/davem/net Conflicts: drivers/net/vxlan.c drivers/vhost/net.c include/linux/if_vlan.h net/core/dev.c The net/core/dev.c conflict was the overlap of one commit marking an existing function static whilst another was adding a new function. In the include/linux/if_vlan.h case, the type used for a local variable was changed in 'net', whereas the function got rewritten to fix a stacked vlan bug in 'net-next'. In drivers/vhost/net.c, Al Viro's iov_iter conversions in 'net-next' overlapped with an endainness fix for VHOST 1.0 in 'net'. In drivers/net/vxlan.c, vxlan_find_vni() added a 'flags' parameter in 'net-next' whereas in 'net' there was a bug fix to pass in the correct network namespace pointer in calls to this function. Signed-off-by: David S. Miller --- 6e03f896b52cd2ca88942170c5c9c407ec0ede69 diff --cc drivers/net/ethernet/intel/igbvf/netdev.c index ad2b4897b392,edea13b0ee85..ebf9d4a42fdd --- a/drivers/net/ethernet/intel/igbvf/netdev.c +++ b/drivers/net/ethernet/intel/igbvf/netdev.c @@@ -2234,13 -2237,12 +2237,13 @@@ static netdev_tx_t igbvf_xmit_frame_rin return NETDEV_TX_BUSY; } - if (vlan_tx_tag_present(skb)) { + if (skb_vlan_tag_present(skb)) { tx_flags |= IGBVF_TX_FLAGS_VLAN; - tx_flags |= (vlan_tx_tag_get(skb) << IGBVF_TX_FLAGS_VLAN_SHIFT); + tx_flags |= (skb_vlan_tag_get(skb) << + IGBVF_TX_FLAGS_VLAN_SHIFT); } - if (skb->protocol == htons(ETH_P_IP)) + if (protocol == htons(ETH_P_IP)) tx_flags |= IGBVF_TX_FLAGS_IPV4; first = tx_ring->next_to_use; diff --cc drivers/net/ethernet/mellanox/mlx4/mlx4.h index 803f17653da7,210691c89b6c..1409d0cd6143 --- a/drivers/net/ethernet/mellanox/mlx4/mlx4.h +++ b/drivers/net/ethernet/mellanox/mlx4/mlx4.h @@@ -242,9 -234,9 +242,10 @@@ do { extern int mlx4_log_num_mgm_entry_size; extern int log_mtts_per_seg; +extern int mlx4_internal_err_reset; - #define MLX4_MAX_NUM_SLAVES (MLX4_MAX_NUM_PF + MLX4_MAX_NUM_VF) + #define MLX4_MAX_NUM_SLAVES (min(MLX4_MAX_NUM_PF + MLX4_MAX_NUM_VF, \ + MLX4_MFUNC_MAX)) #define ALL_SLAVES 0xff struct mlx4_bitmap { diff --cc drivers/net/virtio_net.c index 9bd71d53c5e0,059fdf1bf5ee..110a2cf67244 --- a/drivers/net/virtio_net.c +++ b/drivers/net/virtio_net.c @@@ -1762,11 -1751,11 +1755,13 @@@ static int virtnet_probe(struct virtio_ dev->hw_features |= NETIF_F_TSO6; if (virtio_has_feature(vdev, VIRTIO_NET_F_HOST_ECN)) dev->hw_features |= NETIF_F_TSO_ECN; + if (virtio_has_feature(vdev, VIRTIO_NET_F_HOST_UFO)) + dev->hw_features |= NETIF_F_UFO; + dev->features |= NETIF_F_GSO_ROBUST; + if (gso) - dev->features |= dev->hw_features & NETIF_F_ALL_TSO; + dev->features |= dev->hw_features & (NETIF_F_ALL_TSO|NETIF_F_UFO); /* (!csum && gso) case will be fixed by register_netdev() */ } if (virtio_has_feature(vdev, VIRTIO_NET_F_GUEST_CSUM)) diff --cc drivers/net/vxlan.c index d08072c10aa9,a8c755dcab14..e6ed3e66964d --- a/drivers/net/vxlan.c +++ b/drivers/net/vxlan.c @@@ -2750,19 -2557,8 +2750,19 @@@ static int vxlan_newlink(struct net *sr nla_get_u8(data[IFLA_VXLAN_UDP_ZERO_CSUM6_RX])) vxlan->flags |= VXLAN_F_UDP_ZERO_CSUM6_RX; + if (data[IFLA_VXLAN_REMCSUM_TX] && + nla_get_u8(data[IFLA_VXLAN_REMCSUM_TX])) + vxlan->flags |= VXLAN_F_REMCSUM_TX; + + if (data[IFLA_VXLAN_REMCSUM_RX] && + nla_get_u8(data[IFLA_VXLAN_REMCSUM_RX])) + vxlan->flags |= VXLAN_F_REMCSUM_RX; + + if (data[IFLA_VXLAN_GBP]) + vxlan->flags |= VXLAN_F_GBP; + - if (vxlan_find_vni(net, vni, use_ipv6 ? AF_INET6 : AF_INET, + if (vxlan_find_vni(src_net, vni, use_ipv6 ? AF_INET6 : AF_INET, - vxlan->dst_port)) { + vxlan->dst_port, vxlan->flags)) { pr_info("duplicate VNI %u\n", vni); return -EEXIST; } diff --cc drivers/vhost/net.c index e022cc40303d,9484d5652ca5..8dccca9013ed --- a/drivers/vhost/net.c +++ b/drivers/vhost/net.c @@@ -614,11 -649,13 +614,11 @@@ static void handle_rx(struct vhost_net vq->iov->iov_base); break; } - /* Supply (or replace) ->num_buffers if VIRTIO_NET_F_MRG_RXBUF - * TODO: Should check and handle checksum. - */ + /* TODO: Should check and handle checksum. */ + + hdr.num_buffers = cpu_to_vhost16(vq, headcount); if (likely(mergeable) && - copy_to_iter(&headcount, 2, &fixup) != 2) { - memcpy_toiovecend(nvq->hdr, (void *)&hdr.num_buffers, - offsetof(typeof(hdr), num_buffers), - sizeof hdr.num_buffers)) { ++ copy_to_iter(&hdr.num_buffers, 2, &fixup) != 2) { vq_err(vq, "Failed num_buffers write"); vhost_discard_vq_desc(vq, headcount); break; diff --cc net/core/dev.c index ede0b161b115,7fe82929f509..a3a96ffc67f4 --- a/net/core/dev.c +++ b/net/core/dev.c @@@ -5355,27 -5294,7 +5326,27 @@@ void netdev_upper_dev_unlink(struct net } EXPORT_SYMBOL(netdev_upper_dev_unlink); +/** + * netdev_bonding_info_change - Dispatch event about slave change + * @dev: device + * @netdev_bonding_info: info to dispatch + * + * Send NETDEV_BONDING_INFO to netdev notifiers with info. + * The caller must hold the RTNL lock. + */ +void netdev_bonding_info_change(struct net_device *dev, + struct netdev_bonding_info *bonding_info) +{ + struct netdev_notifier_bonding_info info; + + memcpy(&info.bonding_info, bonding_info, + sizeof(struct netdev_bonding_info)); + call_netdevice_notifiers_info(NETDEV_BONDING_INFO, dev, + &info.info); +} +EXPORT_SYMBOL(netdev_bonding_info_change); + - void netdev_adjacent_add_links(struct net_device *dev) + static void netdev_adjacent_add_links(struct net_device *dev) { struct netdev_adjacent *iter; diff --cc net/core/rtnetlink.c index 4cd5e350d129,446cbaf81185..5dad4f782f03 --- a/net/core/rtnetlink.c +++ b/net/core/rtnetlink.c @@@ -2933,10 -2881,23 +2933,13 @@@ static int rtnl_bridge_notify(struct ne goto errout; } - if ((!flags || (flags & BRIDGE_FLAGS_MASTER)) && - br_dev && br_dev->netdev_ops->ndo_bridge_getlink) { - err = br_dev->netdev_ops->ndo_bridge_getlink(skb, 0, 0, dev, 0); - if (err < 0) - goto errout; - } - - if ((flags & BRIDGE_FLAGS_SELF) && - dev->netdev_ops->ndo_bridge_getlink) { - err = dev->netdev_ops->ndo_bridge_getlink(skb, 0, 0, dev, 0); - if (err < 0) - goto errout; - } + err = dev->netdev_ops->ndo_bridge_getlink(skb, 0, 0, dev, 0); + if (err < 0) + goto errout; + if (!skb->len) + goto errout; + rtnl_notify(skb, net, 0, RTNLGRP_LINK, NULL, GFP_ATOMIC); return 0; errout: