Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net
authorDavid S. Miller <davem@davemloft.net>
Sun, 24 May 2020 20:47:27 +0000 (13:47 -0700)
committerDavid S. Miller <davem@davemloft.net>
Sun, 24 May 2020 20:47:27 +0000 (13:47 -0700)
The MSCC bug fix in 'net' had to be slightly adjusted because the
register accesses are done slightly differently in net-next.

Signed-off-by: David S. Miller <davem@davemloft.net>
50 files changed:
1  2 
MAINTAINERS
drivers/net/dsa/b53/b53_srab.c
drivers/net/dsa/mt7530.c
drivers/net/dsa/mt7530.h
drivers/net/dsa/ocelot/felix.c
drivers/net/dsa/ocelot/felix.h
drivers/net/dsa/ocelot/felix_vsc9959.c
drivers/net/ethernet/mellanox/mlx5/core/en.h
drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ktls.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_rep.h
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
drivers/net/ethernet/mellanox/mlx5/core/en_tx.c
drivers/net/ethernet/mellanox/mlx5/core/eq.c
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
drivers/net/ethernet/mellanox/mlx5/core/ipoib/ipoib.c
drivers/net/ethernet/mellanox/mlx5/core/main.c
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
drivers/net/ethernet/mscc/ocelot.c
drivers/net/ethernet/realtek/r8169_main.c
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
drivers/net/ethernet/sun/cassini.c
drivers/net/ethernet/ti/am65-cpsw-nuss.c
drivers/net/ethernet/ti/cpsw.c
drivers/net/ethernet/ti/cpsw_priv.c
drivers/net/ethernet/ti/netcp_ethss.c
drivers/net/ipa/gsi.c
drivers/net/phy/mscc/mscc.h
drivers/net/phy/mscc/mscc_main.c
drivers/net/phy/phy_device.c
drivers/net/usb/r8152.c
drivers/net/wireless/intel/iwlwifi/pcie/drv.c
include/linux/mlx5/driver.h
include/net/act_api.h
kernel/bpf/syscall.c
kernel/sched/fair.c
net/core/dev.c
net/ethtool/netlink.c
net/ipv4/inet_connection_sock.c
net/ipv4/ipip.c
net/ipv4/ipmr.c
net/ipv4/nexthop.c
net/ipv4/route.c
net/ipv6/ip6_fib.c
net/mptcp/options.c
net/mptcp/protocol.h
net/mptcp/subflow.c
net/rxrpc/sysctl.c

diff --cc MAINTAINERS
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
@@@ -2712,10 -2714,11 +2712,11 @@@ void mlx5e_modify_tirs_hash(struct mlx5
                mlx5e_update_rx_hash_fields(&ttconfig, tt,
                                            rss->rx_hash_fields[tt]);
                mlx5e_build_indir_tir_ctx_hash(rss, &ttconfig, tirc, false);
 -              mlx5_core_modify_tir(mdev, priv->indir_tir[tt].tirn, in, inlen);
 +              mlx5_core_modify_tir(mdev, priv->indir_tir[tt].tirn, in);
        }
  
-       if (!mlx5e_tunnel_inner_ft_supported(priv->mdev))
+       /* Verify inner tirs resources allocated */
+       if (!priv->inner_indir_tir[0].tirn)
                return;
  
        for (tt = 0; tt < MLX5E_NUM_INDIR_TIRS; tt++) {
@@@ -219,10 -203,20 +219,15 @@@ void mlx5e_handle_rx_cqe_rep(struct mlx
  void mlx5e_handle_rx_cqe_mpwrq_rep(struct mlx5e_rq *rq,
                                   struct mlx5_cqe64 *cqe);
  
 -int mlx5e_rep_encap_entry_attach(struct mlx5e_priv *priv,
 -                               struct mlx5e_encap_entry *e);
 -void mlx5e_rep_encap_entry_detach(struct mlx5e_priv *priv,
 -                                struct mlx5e_encap_entry *e);
 -
  void mlx5e_rep_queue_neigh_stats_work(struct mlx5e_priv *priv);
  
- bool mlx5e_eswitch_rep(struct net_device *netdev);
+ bool mlx5e_eswitch_vf_rep(struct net_device *netdev);
  bool mlx5e_eswitch_uplink_rep(struct net_device *netdev);
+ static inline bool mlx5e_eswitch_rep(struct net_device *netdev)
+ {
+       return mlx5e_eswitch_vf_rep(netdev) ||
+              mlx5e_eswitch_uplink_rep(netdev);
+ }
  
  #else /* CONFIG_MLX5_ESWITCH */
  static inline bool mlx5e_is_uplink_rep(struct mlx5e_priv *priv) { return false; }
@@@ -3411,12 -3295,8 +3416,12 @@@ static inline int hash_encap_info(struc
                     key->tc_tunnel->tunnel_type);
  }
  
 +static inline int hash_decap_info(struct mlx5e_decap_key *key)
 +{
 +      return jhash(&key->key, sizeof(key->key), 0);
 +}
  
- static bool is_merged_eswitch_dev(struct mlx5e_priv *priv,
+ static bool is_merged_eswitch_vfs(struct mlx5e_priv *priv,
                                  struct net_device *peer_netdev)
  {
        struct mlx5e_priv *peer_priv;
@@@ -1208,9 -1233,10 +1212,10 @@@ err_load
                mlx5_cleanup_once(dev);
  function_teardown:
        mlx5_function_teardown(dev, boot);
+ err_function:
        dev->state = MLX5_DEVICE_STATE_INTERNAL_ERROR;
 +out:
        mutex_unlock(&dev->intf_state_mutex);
 -
        return err;
  }
  
Simple merge
@@@ -1035,11 -1065,14 +1042,14 @@@ DECLARE_RTL_COND(rtl_eriar_cond
  static void _rtl_eri_write(struct rtl8169_private *tp, int addr, u32 mask,
                           u32 val, int type)
  {
+       u32 cmd = ERIAR_WRITE_CMD | type | mask | addr;
        BUG_ON((addr & 3) || (mask == 0));
        RTL_W32(tp, ERIDR, val);
-       RTL_W32(tp, ERIAR, ERIAR_WRITE_CMD | type | mask | addr);
+       r8168fp_adjust_ocp_cmd(tp, &cmd, type);
+       RTL_W32(tp, ERIAR, cmd);
  
 -      rtl_udelay_loop_wait_low(tp, &rtl_eriar_cond, 100, 100);
 +      rtl_loop_wait_low(tp, &rtl_eriar_cond, 100, 100);
  }
  
  static void rtl_eri_write(struct rtl8169_private *tp, int addr, u32 mask,
  
  static u32 _rtl_eri_read(struct rtl8169_private *tp, int addr, int type)
  {
-       RTL_W32(tp, ERIAR, ERIAR_READ_CMD | type | ERIAR_MASK_1111 | addr);
+       u32 cmd = ERIAR_READ_CMD | type | ERIAR_MASK_1111 | addr;
+       r8168fp_adjust_ocp_cmd(tp, &cmd, type);
+       RTL_W32(tp, ERIAR, cmd);
  
 -      return rtl_udelay_loop_wait_high(tp, &rtl_eriar_cond, 100, 100) ?
 +      return rtl_loop_wait_high(tp, &rtl_eriar_cond, 100, 100) ?
                RTL_R32(tp, ERIDR) : ~0;
  }
  
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
@@@ -353,6 -353,9 +353,8 @@@ struct vsc8531_private 
        const struct vsc85xx_hw_stat *hw_stats;
        u64 *stats;
        int nstats;
 -      bool pkg_init;
+       /* PHY address within the package. */
+       u8 addr;
        /* For multiple port PHYs; the MDIO address of the base PHY in the
         * package.
         */
        return ret;
  }
  
 -/* Check if one PHY has already done the init of the parts common to all PHYs
 - * in the Quad PHY package.
 - */
 -static bool vsc8584_is_pkg_init(struct phy_device *phydev, bool reversed)
 +static void vsc8584_get_base_addr(struct phy_device *phydev)
  {
 -      struct mdio_device **map = phydev->mdio.bus->mdio_map;
 -      struct vsc8531_private *vsc8531;
 -      struct phy_device *phy;
 -      int i, addr;
 -
 -      /* VSC8584 is a Quad PHY */
 -      for (i = 0; i < 4; i++) {
 -              vsc8531 = phydev->priv;
 -
 -              if (reversed)
 -                      addr = vsc8531->base_addr - i;
 -              else
 -                      addr = vsc8531->base_addr + i;
 +      struct vsc8531_private *vsc8531 = phydev->priv;
 +      u16 val, addr;
  
 -              if (!map[addr])
 -                      continue;
 +      mutex_lock(&phydev->mdio.bus->mdio_lock);
 +      __phy_write(phydev, MSCC_EXT_PAGE_ACCESS, MSCC_PHY_PAGE_EXTENDED);
  
 -              phy = container_of(map[addr], struct phy_device, mdio);
 +      addr = __phy_read(phydev, MSCC_PHY_EXT_PHY_CNTL_4);
 +      addr >>= PHY_CNTL_4_ADDR_POS;
  
 -              if ((phy->phy_id & phydev->drv->phy_id_mask) !=
 -                  (phydev->drv->phy_id & phydev->drv->phy_id_mask))
 -                      continue;
 +      val = __phy_read(phydev, MSCC_PHY_ACTIPHY_CNTL);
  
 -              vsc8531 = phy->priv;
 +      __phy_write(phydev, MSCC_EXT_PAGE_ACCESS, MSCC_PHY_PAGE_STANDARD);
 +      mutex_unlock(&phydev->mdio.bus->mdio_lock);
  
 -              if (vsc8531 && vsc8531->pkg_init)
 -                      return true;
 -      }
 +      if (val & PHY_ADDR_REVERSED)
 +              vsc8531->base_addr = phydev->mdio.addr + addr;
 +      else
 +              vsc8531->base_addr = phydev->mdio.addr - addr;
 -      return false;
++      vsc8531->addr = addr;
  }
  
  static int vsc8584_config_init(struct phy_device *phydev)
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/ipv4/ipip.c
Simple merge
diff --cc net/ipv4/ipmr.c
Simple merge
@@@ -473,20 -433,11 +474,20 @@@ static int nh_check_attr_group(struct n
                }
                if (!valid_group_nh(nh, len, extack))
                        return -EINVAL;
 +
 +              if (nhg_fdb && nh_check_attr_fdb_group(nh, &nh_family, extack))
 +                      return -EINVAL;
 +
 +              if (!nhg_fdb && nh->is_fdb_nh) {
 +                      NL_SET_ERR_MSG(extack, "Non FDB nexthop group cannot have fdb nexthops");
 +                      return -EINVAL;
 +              }
        }
-       for (i = NHA_GROUP + 1; i < __NHA_MAX; ++i) {
+       for (i = NHA_GROUP_TYPE + 1; i < __NHA_MAX; ++i) {
                if (!tb[i])
                        continue;
 -
 +              if (tb[NHA_FDB])
 +                      continue;
                NL_SET_ERR_MSG(extack,
                               "No other attributes can be set in nexthop groups");
                return -EINVAL;
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge