Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
authorDavid S. Miller <davem@davemloft.net>
Tue, 12 Jan 2016 04:55:43 +0000 (23:55 -0500)
committerDavid S. Miller <davem@davemloft.net>
Tue, 12 Jan 2016 04:55:43 +0000 (23:55 -0500)
Conflicts:
drivers/net/bonding/bond_main.c
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c

The bond_main.c and mellanox switch conflicts were cases of
overlapping changes.

Signed-off-by: David S. Miller <davem@davemloft.net>
20 files changed:
1  2 
drivers/net/bonding/bond_main.c
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
drivers/net/ethernet/renesas/ravb_main.c
drivers/net/ethernet/renesas/sh_eth.c
drivers/net/geneve.c
drivers/net/phy/micrel.c
drivers/net/usb/lan78xx.c
drivers/net/usb/qmi_wwan.c
drivers/net/usb/r8152.c
drivers/net/vxlan.c
net/batman-adv/bat_iv_ogm.c
net/core/pktgen.c
net/ipv4/ip_output.c
net/ipv4/udp_offload.c
net/ipv6/ip6_output.c
net/ipv6/tcp_ipv6.c
net/sctp/sm_sideeffect.c
net/sctp/sysctl.c
net/unix/af_unix.c

@@@ -1199,35 -1198,16 +1199,34 @@@ static rx_handler_result_t bond_handle_
        return ret;
  }
  
 -static int bond_master_upper_dev_link(struct net_device *bond_dev,
 -                                    struct net_device *slave_dev,
 -                                    struct slave *slave)
 +static enum netdev_lag_tx_type bond_lag_tx_type(struct bonding *bond)
  {
 +      switch (BOND_MODE(bond)) {
 +      case BOND_MODE_ROUNDROBIN:
 +              return NETDEV_LAG_TX_TYPE_ROUNDROBIN;
 +      case BOND_MODE_ACTIVEBACKUP:
 +              return NETDEV_LAG_TX_TYPE_ACTIVEBACKUP;
 +      case BOND_MODE_BROADCAST:
 +              return NETDEV_LAG_TX_TYPE_BROADCAST;
 +      case BOND_MODE_XOR:
 +      case BOND_MODE_8023AD:
 +              return NETDEV_LAG_TX_TYPE_HASH;
 +      default:
 +              return NETDEV_LAG_TX_TYPE_UNKNOWN;
 +      }
 +}
 +
 +static int bond_master_upper_dev_link(struct bonding *bond, struct slave *slave)
 +{
 +      struct netdev_lag_upper_info lag_upper_info;
        int err;
  
 -      err = netdev_master_upper_dev_link_private(slave_dev, bond_dev, slave);
 +      lag_upper_info.tx_type = bond_lag_tx_type(bond);
 +      err = netdev_master_upper_dev_link(slave->dev, bond->dev, slave,
 +                                         &lag_upper_info);
        if (err)
                return err;
-       slave->dev->flags |= IFF_SLAVE;
 -      rtmsg_ifinfo(RTM_NEWLINK, slave_dev, IFF_SLAVE, GFP_KERNEL);
 +      rtmsg_ifinfo(RTM_NEWLINK, slave->dev, IFF_SLAVE, GFP_KERNEL);
        return 0;
  }
  
@@@ -120,16 -63,13 +120,17 @@@ struct mlxsw_sp 
        } fdb_notify;
  #define MLXSW_SP_DEFAULT_AGEING_TIME 300
        u32 ageing_time;
 -      struct {
 -              struct net_device *dev;
 -              unsigned int ref_count;
 -      } master_bridge;
+       struct mutex fdb_lock;  /* Make sure FDB sessions are atomic. */
 +      struct mlxsw_sp_upper master_bridge;
 +      struct mlxsw_sp_upper lags[MLXSW_SP_LAG_MAX];
  };
  
 +static inline struct mlxsw_sp_upper *
 +mlxsw_sp_lag_get(struct mlxsw_sp *mlxsw_sp, u16 lag_id)
 +{
 +      return &mlxsw_sp->lags[lag_id];
 +}
 +
  struct mlxsw_sp_port_pcpu_stats {
        u64                     rx_packets;
        u64                     rx_bytes;
@@@ -1057,14 -650,7 +1057,15 @@@ static int mlxsw_sp_port_fdb_dump(struc
        if (!sfd_pl)
                return -ENOMEM;
  
+       mutex_lock(&mlxsw_sp_port->mlxsw_sp->fdb_lock);
 +      if (mlxsw_sp_port_is_vport(mlxsw_sp_port)) {
 +              u16 tmp;
 +
 +              tmp = mlxsw_sp_vport_vfid_get(mlxsw_sp_port);
 +              vport_fid = mlxsw_sp_vfid_to_fid(tmp);
 +              vport_vid = mlxsw_sp_vport_vid_get(mlxsw_sp_port);
 +      }
 +
        mlxsw_reg_sfd_pack(sfd_pl, MLXSW_REG_SFD_OP_QUERY_DUMP, 0);
        do {
                mlxsw_reg_sfd_num_rec_set(sfd_pl, MLXSW_REG_SFD_REC_MAX_COUNT);
Simple merge
Simple merge
@@@ -483,9 -470,17 +483,17 @@@ static int ksz9031_config_init(struct p
                "txd2-skew-ps", "txd3-skew-ps"
        };
        static const char *control_skews[2] = {"txen-skew-ps", "rxdv-skew-ps"};
+       const struct device *dev_walker;
  
-       if (!of_node && dev->parent->of_node)
-               of_node = dev->parent->of_node;
+       /* The Micrel driver has a deprecated option to place phy OF
+        * properties in the MAC node. Walk up the tree of devices to
+        * find a device with an OF node.
+        */
 -      dev_walker = &phydev->dev;
++      dev_walker = &phydev->mdio.dev;
+       do {
+               of_node = dev_walker->of_node;
+               dev_walker = dev_walker->parent;
+       } while (!of_node && dev_walker);
  
        if (of_node) {
                ksz9031_of_load_skew_values(phydev, of_node,
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