Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
authorDavid S. Miller <davem@davemloft.net>
Tue, 15 Nov 2016 15:54:36 +0000 (10:54 -0500)
committerDavid S. Miller <davem@davemloft.net>
Tue, 15 Nov 2016 15:54:36 +0000 (10:54 -0500)
Several cases of bug fixes in 'net' overlapping other changes in
'net-next-.

Signed-off-by: David S. Miller <davem@davemloft.net>
71 files changed:
1  2 
MAINTAINERS
drivers/firewire/net.c
drivers/net/ethernet/apm/xgene/xgene_enet_main.c
drivers/net/ethernet/broadcom/bgmac.c
drivers/net/ethernet/broadcom/bnx2.c
drivers/net/ethernet/broadcom/bnxt/bnxt.c
drivers/net/ethernet/brocade/bna/bnad.c
drivers/net/ethernet/ibm/ehea/ehea_main.c
drivers/net/ethernet/ibm/ibmvnic.c
drivers/net/ethernet/marvell/mv643xx_eth.c
drivers/net/ethernet/mellanox/mlx4/en_netdev.c
drivers/net/ethernet/mellanox/mlx5/core/en_main.c
drivers/net/ethernet/mellanox/mlx5/core/en_rep.c
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
drivers/net/ethernet/mellanox/mlx5/core/main.c
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
drivers/net/ethernet/qlogic/qed/qed_hsi.h
drivers/net/ethernet/qlogic/qed/qed_main.c
drivers/net/ethernet/qlogic/qede/qede_ethtool.c
drivers/net/ethernet/qlogic/qede/qede_main.c
drivers/net/ethernet/sfc/efx.c
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
drivers/net/ethernet/toshiba/ps3_gelic_wireless.c
drivers/net/ethernet/xscale/ixp4xx_eth.c
drivers/net/macvlan.c
drivers/net/phy/phy_device.c
drivers/net/usb/ax88179_178a.c
drivers/net/usb/r8152.c
drivers/net/virtio_net.c
drivers/net/vxlan.c
drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
drivers/net/xen-netfront.c
drivers/usb/gadget/function/u_ether.c
include/linux/ipv6.h
include/linux/netdevice.h
include/net/ip.h
include/net/netfilter/nf_tables.h
include/net/sock.h
kernel/bpf/syscall.c
kernel/taskstats.c
net/core/dev.c
net/core/filter.c
net/core/flow_dissector.c
net/core/sock.c
net/dccp/ipv4.c
net/dccp/ipv6.c
net/ipv4/icmp.c
net/ipv4/ip_output.c
net/ipv4/ipmr.c
net/ipv4/netfilter/nft_dup_ipv4.c
net/ipv4/route.c
net/ipv4/tcp.c
net/ipv4/tcp_ipv4.c
net/ipv6/icmp.c
net/ipv6/ip6_output.c
net/ipv6/netfilter/nft_dup_ipv6.c
net/ipv6/route.c
net/ipv6/tcp_ipv6.c
net/netfilter/ipvs/ip_vs_ctl.c
net/netfilter/nf_conntrack_core.c
net/netfilter/nft_dynset.c
net/netlink/genetlink.c
net/socket.c
net/sunrpc/xprtsock.c
net/unix/af_unix.c
samples/bpf/Makefile

diff --cc MAINTAINERS
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
index 50fe8e8861bb14a8c87a33c50cc31b1e456f141a,d239f5d0ea3683d886a7e21dc9d7d6274e15a65e..731f28625cc3bf730349cd2e773b56cb18cd480a
@@@ -58,14 -57,14 +58,15 @@@ mlx5_eswitch_add_offloaded_rule(struct 
        if (esw->mode != SRIOV_OFFLOADS)
                return ERR_PTR(-EOPNOTSUPP);
  
-       flow_act.action = attr->action;
+       /* per flow vlan pop/push is emulated, don't set that into the firmware */
 -      action = attr->action & ~(MLX5_FLOW_CONTEXT_ACTION_VLAN_PUSH | MLX5_FLOW_CONTEXT_ACTION_VLAN_POP);
++      flow_act.action = attr->action & ~(MLX5_FLOW_CONTEXT_ACTION_VLAN_PUSH | MLX5_FLOW_CONTEXT_ACTION_VLAN_POP);
  
 -      if (action & MLX5_FLOW_CONTEXT_ACTION_FWD_DEST) {
 -              dest.type = MLX5_FLOW_DESTINATION_TYPE_VPORT;
 -              dest.vport_num = attr->out_rep->vport;
 -              action = MLX5_FLOW_CONTEXT_ACTION_FWD_DEST;
 -      } else if (action & MLX5_FLOW_CONTEXT_ACTION_COUNT) {
 +      if (flow_act.action & MLX5_FLOW_CONTEXT_ACTION_FWD_DEST) {
 +              dest[i].type = MLX5_FLOW_DESTINATION_TYPE_VPORT;
 +              dest[i].vport_num = attr->out_rep->vport;
 +              i++;
 +      }
 +      if (flow_act.action & MLX5_FLOW_CONTEXT_ACTION_COUNT) {
                counter = mlx5_fc_create(esw->dev, true);
                if (IS_ERR(counter))
                        return ERR_CAST(counter);
index df31f3861c4f33a843f1df8ce08e5c2bf67b6a5e,e83072da6272c6583ed72cc6546bbed2676580ce..164bd309e92b648cbbbabfab8551efde7ebad4f2
@@@ -1869,19 -1870,18 +1865,19 @@@ static int mlxsw_sp_router_set_abort_tr
        return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(ralue), ralue_pl);
  }
  
- static void mlxsw_sp_router_fib4_abort(struct mlxsw_sp *mlxsw_sp)
+ static void mlxsw_sp_router_fib_flush(struct mlxsw_sp *mlxsw_sp)
  {
 -      struct mlxsw_resources *resources;
        struct mlxsw_sp_fib_entry *fib_entry;
        struct mlxsw_sp_fib_entry *tmp;
        struct mlxsw_sp_vr *vr;
        int i;
-       int err;
  
 -      resources = mlxsw_core_resources_get(mlxsw_sp->core);
 -      for (i = 0; i < resources->max_virtual_routers; i++) {
 +      if (mlxsw_sp->router.aborted)
 +              return;
 +      dev_warn(mlxsw_sp->bus_info->dev, "FIB abort triggered. Note that FIB entries are no longer being offloaded to this device.\n");
 +      for (i = 0; i < MLXSW_CORE_RES_GET(mlxsw_sp->core, MAX_VRS); i++) {
                vr = &mlxsw_sp->router.vrs[i];
                if (!vr->used)
                        continue;
  
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
diff --cc net/core/dev.c
Simple merge
Simple merge
Simple merge
diff --cc net/core/sock.c
Simple merge
diff --cc net/dccp/ipv4.c
Simple merge
diff --cc net/dccp/ipv6.c
Simple merge
diff --cc net/ipv4/icmp.c
Simple merge
Simple merge
diff --cc net/ipv4/ipmr.c
Simple merge
index 7ab544fbc382ec2973476e52f9d816a0e5dfbb22,0c01a270bf9fb0a0a8d57a80633a78133e668c01..0af3d8df70dd713bbe30d469987bab33c295cf99
@@@ -28,9 -28,9 +28,9 @@@ static void nft_dup_ipv4_eval(const str
        struct in_addr gw = {
                .s_addr = (__force __be32)regs->data[priv->sreg_addr],
        };
-       int oif = regs->data[priv->sreg_dev];
+       int oif = priv->sreg_dev ? regs->data[priv->sreg_dev] : -1;
  
 -      nf_dup_ipv4(pkt->net, pkt->skb, pkt->hook, &gw, oif);
 +      nf_dup_ipv4(nft_net(pkt), pkt->skb, nft_hook(pkt), &gw, oif);
  }
  
  static int nft_dup_ipv4_init(const struct nft_ctx *ctx,
Simple merge
diff --cc net/ipv4/tcp.c
Simple merge
Simple merge
diff --cc net/ipv6/icmp.c
Simple merge
Simple merge
index 26074a8bada7930ece2db74aa4e6e25e6d15ede3,831f86e1ec08270b4aeed8924ebe09b978953e44..d8b5b60b7d5310d0bff6e16f9964b5a91c38a64f
@@@ -26,9 -26,9 +26,9 @@@ static void nft_dup_ipv6_eval(const str
  {
        struct nft_dup_ipv6 *priv = nft_expr_priv(expr);
        struct in6_addr *gw = (struct in6_addr *)&regs->data[priv->sreg_addr];
-       int oif = regs->data[priv->sreg_dev];
+       int oif = priv->sreg_dev ? regs->data[priv->sreg_dev] : -1;
  
 -      nf_dup_ipv6(pkt->net, pkt->skb, pkt->hook, gw, oif);
 +      nf_dup_ipv6(nft_net(pkt), pkt->skb, nft_hook(pkt), gw, oif);
  }
  
  static int nft_dup_ipv6_init(const struct nft_ctx *ctx,
Simple merge
Simple merge
index 6b85ded4f91d44abf0917cb74f259015fd8394c1,a6e44ef2ec9a97dfd23ced452f2ec260e57f884c..038c2ba0ae0fa5877d3ed63e8c7ade908a45261b
@@@ -3865,20 -3872,10 +3865,20 @@@ static const struct genl_ops ip_vs_genl
        },
  };
  
-       .maxattr        = IPVS_CMD_MAX,
 +static struct genl_family ip_vs_genl_family __ro_after_init = {
 +      .hdrsize        = 0,
 +      .name           = IPVS_GENL_NAME,
 +      .version        = IPVS_GENL_VERSION,
++      .maxattr        = IPVS_CMD_ATTR_MAX,
 +      .netnsok        = true,         /* Make ipvsadm to work on netns */
 +      .module         = THIS_MODULE,
 +      .ops            = ip_vs_genl_ops,
 +      .n_ops          = ARRAY_SIZE(ip_vs_genl_ops),
 +};
 +
  static int __init ip_vs_genl_register(void)
  {
 -      return genl_register_family_with_ops(&ip_vs_genl_family,
 -                                           ip_vs_genl_ops);
 +      return genl_register_family(&ip_vs_genl_family);
  }
  
  static void ip_vs_genl_unregister(void)
Simple merge
Simple merge
index bbd3bff885a1fa309f98982907f23a1984424de4,49c28e8ef01b986c068ecc8e86d4d8546088c8f7..fb6e10fdb2174320c96608aea63d3c484d3625a0
@@@ -381,13 -417,14 +381,14 @@@ int genl_register_family(struct genl_fa
  
        return 0;
  
 -errout_free:
 +errout_remove:
 +      idr_remove(&genl_fam_idr, family->id);
+       kfree(family->attrbuf);
  errout_locked:
        genl_unlock_all();
 -errout:
        return err;
  }
 -EXPORT_SYMBOL(__genl_register_family);
 +EXPORT_SYMBOL(genl_register_family);
  
  /**
   * genl_unregister_family - unregister generic netlink family
diff --cc net/socket.c
Simple merge
Simple merge
Simple merge
index 5c53fdb67ca75a920089e8b3b3a3e983f246463e,72c58675973e65bf7d0e503dff1ed28774cebc07..ac87f9c068ae72a96ec63fedc7ddc51f665fa081
@@@ -26,7 -27,10 +26,8 @@@ hostprogs-y += xdp
  hostprogs-y += test_current_task_under_cgroup
  hostprogs-y += trace_event
  hostprogs-y += sampleip
+ hostprogs-y += tc_l2_redirect
  
 -test_verifier-objs := test_verifier.o libbpf.o
 -test_maps-objs := test_maps.o libbpf.o
  sock_example-objs := sock_example.o libbpf.o
  fds_example-objs := bpf_load.o libbpf.o fds_example.o
  sockex1-objs := bpf_load.o libbpf.o sockex1_user.o