int ret;
  
        /* Enable 64 clock MDIO */
 -      phy_write(phydev, MII_BCM7XXX_AUX_MODE, MII_BCM7XX_64CLK_MDIO);
 +      phy_write(phydev, MII_BCM7XXX_AUX_MODE, MII_BCM7XXX_64CLK_MDIO);
        phy_read(phydev, MII_BCM7XXX_AUX_MODE);
  
-       /* Workaround only required for 100Mbits/sec capable PHYs */
-       if (phydev->supported & PHY_GBIT_FEATURES)
-               return 0;
- 
        /* set shadow mode 2 */
        ret = phy_set_clr_bits(phydev, MII_BCM7XXX_TEST,
                        MII_BCM7XXX_SHD_MODE_2, MII_BCM7XXX_SHD_MODE_2);
        BCM7XXX_28NM_GPHY(PHY_ID_BCM7439, "Broadcom BCM7439"),
        BCM7XXX_28NM_GPHY(PHY_ID_BCM7439_2, "Broadcom BCM7439 (2)"),
        BCM7XXX_28NM_GPHY(PHY_ID_BCM7445, "Broadcom BCM7445"),
 -{
 -      .phy_id         = PHY_ID_BCM7425,
 -      .phy_id_mask    = 0xfffffff0,
 -      .name           = "Broadcom BCM7425",
 -      .features       = PHY_BASIC_FEATURES |
 -                        SUPPORTED_Pause | SUPPORTED_Asym_Pause,
 -      .flags          = PHY_IS_INTERNAL,
 -      .config_init    = bcm7xxx_config_init,
 -      .config_aneg    = genphy_config_aneg,
 -      .read_status    = genphy_read_status,
 -      .suspend        = bcm7xxx_suspend,
 -      .resume         = bcm7xxx_config_init,
 -}, {
 -      .phy_id         = PHY_ID_BCM7429,
 -      .phy_id_mask    = 0xfffffff0,
 -      .name           = "Broadcom BCM7429",
 -      .features       = PHY_BASIC_FEATURES |
 -                        SUPPORTED_Pause | SUPPORTED_Asym_Pause,
 -      .flags          = PHY_IS_INTERNAL,
 -      .config_init    = bcm7xxx_config_init,
 -      .config_aneg    = genphy_config_aneg,
 -      .read_status    = genphy_read_status,
 -      .suspend        = bcm7xxx_suspend,
 -      .resume         = bcm7xxx_config_init,
 -}, {
 -      .phy_id         = PHY_ID_BCM7435,
 -      .phy_id_mask    = 0xfffffff0,
 -      .name           = "Broadcom BCM7435",
 -      .features       = PHY_BASIC_FEATURES |
 -                        SUPPORTED_Pause | SUPPORTED_Asym_Pause,
 -      .flags          = PHY_IS_INTERNAL,
 -      .config_init    = bcm7xxx_config_init,
 -      .config_aneg    = genphy_config_aneg,
 -      .read_status    = genphy_read_status,
 -      .suspend        = bcm7xxx_suspend,
 -      .resume         = bcm7xxx_config_init,
 -} };
 +      BCM7XXX_40NM_EPHY(PHY_ID_BCM7425, "Broadcom BCM7425"),
 +      BCM7XXX_40NM_EPHY(PHY_ID_BCM7429, "Broadcom BCM7429"),
 +      BCM7XXX_40NM_EPHY(PHY_ID_BCM7435, "Broadcom BCM7435"),
- {
-       .phy_id         = PHY_BCM_OUI_4,
-       .phy_id_mask    = 0xffff0000,
-       .name           = "Broadcom BCM7XXX 40nm",
-       .features       = PHY_GBIT_FEATURES |
-                         SUPPORTED_Pause | SUPPORTED_Asym_Pause,
-       .flags          = PHY_IS_INTERNAL,
-       .config_init    = bcm7xxx_config_init,
-       .config_aneg    = genphy_config_aneg,
-       .read_status    = genphy_read_status,
-       .suspend        = bcm7xxx_suspend,
-       .resume         = bcm7xxx_config_init,
- }, {
-       .phy_id         = PHY_BCM_OUI_5,
-       .phy_id_mask    = 0xffffff00,
-       .name           = "Broadcom BCM7XXX 65nm",
-       .features       = PHY_BASIC_FEATURES |
-                         SUPPORTED_Pause | SUPPORTED_Asym_Pause,
-       .flags          = PHY_IS_INTERNAL,
-       .config_init    = bcm7xxx_dummy_config_init,
-       .config_aneg    = genphy_config_aneg,
-       .read_status    = genphy_read_status,
-       .suspend        = bcm7xxx_suspend,
-       .resume         = bcm7xxx_config_init,
- } };
++};
  
  static struct mdio_device_id __maybe_unused bcm7xxx_tbl[] = {
        { PHY_ID_BCM7250, 0xfffffff0, },
 
        return 0;
  }
  
 -static int egress_ipv4_tun_info(struct net_device *dev, struct sk_buff *skb,
 -                              struct ip_tunnel_info *info,
 -                              __be16 sport, __be16 dport)
 -{
 -      struct vxlan_dev *vxlan = netdev_priv(dev);
 -      struct rtable *rt;
 -      struct flowi4 fl4;
 -
 -      memset(&fl4, 0, sizeof(fl4));
 -      fl4.flowi4_tos = RT_TOS(info->key.tos);
 -      fl4.flowi4_mark = skb->mark;
 -      fl4.flowi4_proto = IPPROTO_UDP;
 -      fl4.daddr = info->key.u.ipv4.dst;
 -
 -      rt = ip_route_output_key(vxlan->net, &fl4);
 -      if (IS_ERR(rt))
 -              return PTR_ERR(rt);
 -      ip_rt_put(rt);
 -
 -      info->key.u.ipv4.src = fl4.saddr;
 -      info->key.tp_src = sport;
 -      info->key.tp_dst = dport;
 -      return 0;
 -}
 -
+ static int vxlan_change_mtu(struct net_device *dev, int new_mtu)
+ {
+       struct vxlan_dev *vxlan = netdev_priv(dev);
+       struct vxlan_rdst *dst = &vxlan->default_dst;
+       struct net_device *lowerdev = __dev_get_by_index(vxlan->net,
+                                                        dst->remote_ifindex);
+       return __vxlan_change_mtu(dev, lowerdev, dst, new_mtu, true);
+ }
+ 
  static int vxlan_fill_metadata_dst(struct net_device *dev, struct sk_buff *skb)
  {
        struct vxlan_dev *vxlan = netdev_priv(dev);