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
@@@ -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);
@@@ -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
@@@ -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
@@@ -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
@@@ -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
@@@ -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
@@@ -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