diff --git a/include/kernel-version.mk b/include/kernel-version.mk
index 43f891c1c9..4be674ccdd 100644
--- a/include/kernel-version.mk
+++ b/include/kernel-version.mk
@@ -5,12 +5,12 @@ LINUX_RELEASE?=1
 LINUX_VERSION-3.18 = .71
 LINUX_VERSION-4.4 = .121
 LINUX_VERSION-4.9 = .91
-LINUX_VERSION-4.14 = .29
+LINUX_VERSION-4.14 = .32
 
 LINUX_KERNEL_HASH-3.18.71 = 5abc9778ad44ce02ed6c8ab52ece8a21c6d20d21f6ed8a19287b4a38a50c1240
 LINUX_KERNEL_HASH-4.4.121 = 44a88268b5088dc326b30c9b9133ac35a9a200b636b7268d08f32abeae6ca729
 LINUX_KERNEL_HASH-4.9.91 = 60caa752ec9fa1c426f6a2f37db3f268d0961b67a723b6443949112167b39832
-LINUX_KERNEL_HASH-4.14.29 = 18f67b70ce9922c7ef95791bfd91f46e52ee9eb3e310978bb6ef6d2e93c14619
+LINUX_KERNEL_HASH-4.14.32 = cb0979bec663089a43b10cfbeae0cf9673544b0ff5968c33ede614ec0f43b680
 
 remove_uri_prefix=$(subst git://,,$(subst http://,,$(subst https://,,$(1))))
 sanitize_uri=$(call qstrip,$(subst @,_,$(subst :,_,$(subst .,_,$(subst -,_,$(subst /,_,$(1)))))))
diff --git a/target/linux/generic/hack-4.14/207-disable-modorder.patch b/target/linux/generic/hack-4.14/207-disable-modorder.patch
index 8f817f32a7..8f99cde617 100644
--- a/target/linux/generic/hack-4.14/207-disable-modorder.patch
+++ b/target/linux/generic/hack-4.14/207-disable-modorder.patch
@@ -15,7 +15,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
 
 --- a/Makefile
 +++ b/Makefile
-@@ -1224,7 +1224,6 @@ all: modules
+@@ -1233,7 +1233,6 @@ all: modules
  
  PHONY += modules
  modules: $(vmlinux-dirs) $(if $(KBUILD_BUILTIN),vmlinux) modules.builtin
@@ -23,7 +23,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
  	@$(kecho) '  Building modules, stage 2.';
  	$(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost
  
-@@ -1253,7 +1252,6 @@ _modinst_:
+@@ -1262,7 +1261,6 @@ _modinst_:
  		rm -f $(MODLIB)/build ; \
  		ln -s $(CURDIR) $(MODLIB)/build ; \
  	fi
diff --git a/target/linux/generic/hack-4.14/702-phy_add_aneg_done_function.patch b/target/linux/generic/hack-4.14/702-phy_add_aneg_done_function.patch
index 61e460fda7..0453112a1f 100644
--- a/target/linux/generic/hack-4.14/702-phy_add_aneg_done_function.patch
+++ b/target/linux/generic/hack-4.14/702-phy_add_aneg_done_function.patch
@@ -15,7 +15,7 @@
  
 --- a/drivers/net/phy/phy_device.c
 +++ b/drivers/net/phy/phy_device.c
-@@ -1451,6 +1451,9 @@ int genphy_update_link(struct phy_device
+@@ -1458,6 +1458,9 @@ int genphy_update_link(struct phy_device
  {
  	int status;
  
diff --git a/target/linux/generic/pending-4.14/120-Fix-alloc_node_mem_map-with-ARCH_PFN_OFFSET-calcu.patch b/target/linux/generic/pending-4.14/120-Fix-alloc_node_mem_map-with-ARCH_PFN_OFFSET-calcu.patch
index 43a1483c56..5ee89be5ad 100644
--- a/target/linux/generic/pending-4.14/120-Fix-alloc_node_mem_map-with-ARCH_PFN_OFFSET-calcu.patch
+++ b/target/linux/generic/pending-4.14/120-Fix-alloc_node_mem_map-with-ARCH_PFN_OFFSET-calcu.patch
@@ -71,7 +71,7 @@ Signed-off-by: Tobias Wolf <dev-NTEO@vplace.de>
 
 --- a/mm/page_alloc.c
 +++ b/mm/page_alloc.c
-@@ -6156,7 +6156,7 @@ static void __ref alloc_node_mem_map(str
+@@ -6147,7 +6147,7 @@ static void __ref alloc_node_mem_map(str
  		mem_map = NODE_DATA(0)->node_mem_map;
  #if defined(CONFIG_HAVE_MEMBLOCK_NODE_MAP) || defined(CONFIG_FLATMEM)
  		if (page_to_pfn(mem_map) != pgdat->node_start_pfn)
diff --git a/target/linux/generic/pending-4.14/680-NET-skip-GRO-for-foreign-MAC-addresses.patch b/target/linux/generic/pending-4.14/680-NET-skip-GRO-for-foreign-MAC-addresses.patch
index 4fd8978835..9ac505e85e 100644
--- a/target/linux/generic/pending-4.14/680-NET-skip-GRO-for-foreign-MAC-addresses.patch
+++ b/target/linux/generic/pending-4.14/680-NET-skip-GRO-for-foreign-MAC-addresses.patch
@@ -32,7 +32,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
  	__u16			tc_index;	/* traffic control index */
 --- a/net/core/dev.c
 +++ b/net/core/dev.c
-@@ -4775,6 +4775,9 @@ static enum gro_result dev_gro_receive(s
+@@ -4783,6 +4783,9 @@ static enum gro_result dev_gro_receive(s
  	enum gro_result ret;
  	int grow;
  
@@ -42,7 +42,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
  	if (netif_elide_gro(skb->dev))
  		goto normal;
  
-@@ -6245,6 +6248,48 @@ static void __netdev_adjacent_dev_unlink
+@@ -6253,6 +6256,48 @@ static void __netdev_adjacent_dev_unlink
  					   &upper_dev->adj_list.lower);
  }
  
@@ -91,7 +91,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
  static int __netdev_upper_dev_link(struct net_device *dev,
  				   struct net_device *upper_dev, bool master,
  				   void *upper_priv, void *upper_info)
-@@ -6283,6 +6328,7 @@ static int __netdev_upper_dev_link(struc
+@@ -6291,6 +6336,7 @@ static int __netdev_upper_dev_link(struc
  	if (ret)
  		return ret;
  
@@ -99,7 +99,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
  	ret = call_netdevice_notifiers_info(NETDEV_CHANGEUPPER, dev,
  					    &changeupper_info.info);
  	ret = notifier_to_errno(ret);
-@@ -6360,6 +6406,7 @@ void netdev_upper_dev_unlink(struct net_
+@@ -6368,6 +6414,7 @@ void netdev_upper_dev_unlink(struct net_
  
  	__netdev_adjacent_dev_unlink_neighbour(dev, upper_dev);
  
@@ -107,7 +107,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
  	call_netdevice_notifiers_info(NETDEV_CHANGEUPPER, dev,
  				      &changeupper_info.info);
  }
-@@ -6930,6 +6977,7 @@ int dev_set_mac_address(struct net_devic
+@@ -6938,6 +6985,7 @@ int dev_set_mac_address(struct net_devic
  	if (err)
  		return err;
  	dev->addr_assign_type = NET_ADDR_SET;
diff --git a/target/linux/generic/pending-4.14/701-phy_extension.patch b/target/linux/generic/pending-4.14/701-phy_extension.patch
index 2529505801..1b380e24a9 100644
--- a/target/linux/generic/pending-4.14/701-phy_extension.patch
+++ b/target/linux/generic/pending-4.14/701-phy_extension.patch
@@ -85,7 +85,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
   * @phydev: the phy_device struct
 --- a/include/linux/phy.h
 +++ b/include/linux/phy.h
-@@ -906,6 +906,7 @@ void phy_ethtool_ksettings_get(struct ph
+@@ -905,6 +905,7 @@ void phy_ethtool_ksettings_get(struct ph
  			       struct ethtool_link_ksettings *cmd);
  int phy_ethtool_ksettings_set(struct phy_device *phydev,
  			      const struct ethtool_link_ksettings *cmd);
diff --git a/target/linux/generic/pending-4.14/703-phy-add-detach-callback-to-struct-phy_driver.patch b/target/linux/generic/pending-4.14/703-phy-add-detach-callback-to-struct-phy_driver.patch
index 3d5f8fc5ed..11436a2166 100644
--- a/target/linux/generic/pending-4.14/703-phy-add-detach-callback-to-struct-phy_driver.patch
+++ b/target/linux/generic/pending-4.14/703-phy-add-detach-callback-to-struct-phy_driver.patch
@@ -11,7 +11,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
 
 --- a/drivers/net/phy/phy_device.c
 +++ b/drivers/net/phy/phy_device.c
-@@ -1095,6 +1095,9 @@ void phy_detach(struct phy_device *phyde
+@@ -1102,6 +1102,9 @@ void phy_detach(struct phy_device *phyde
  	struct module *ndev_owner = dev->dev.parent->driver->owner;
  	struct mii_bus *bus;
  
diff --git a/target/linux/generic/pending-4.14/834-ledtrig-libata.patch b/target/linux/generic/pending-4.14/834-ledtrig-libata.patch
index 1ceffc5a29..83bc42fe33 100644
--- a/target/linux/generic/pending-4.14/834-ledtrig-libata.patch
+++ b/target/linux/generic/pending-4.14/834-ledtrig-libata.patch
@@ -65,7 +65,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
  /**
   *	ata_build_rw_tf - Build ATA taskfile for given read/write request
   *	@tf: Target ATA taskfile
-@@ -5090,6 +5103,9 @@ struct ata_queued_cmd *ata_qc_new_init(s
+@@ -5111,6 +5124,9 @@ struct ata_queued_cmd *ata_qc_new_init(s
  		if (tag < 0)
  			return NULL;
  	}
@@ -75,7 +75,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
  
  	qc = __ata_qc_from_tag(ap, tag);
  	qc->tag = tag;
-@@ -5992,6 +6008,9 @@ struct ata_port *ata_port_alloc(struct a
+@@ -6012,6 +6028,9 @@ struct ata_port *ata_port_alloc(struct a
  	ap->stats.unhandled_irq = 1;
  	ap->stats.idle_irq = 1;
  #endif
@@ -85,7 +85,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
  	ata_sff_port_init(ap);
  
  	return ap;
-@@ -6013,6 +6032,12 @@ static void ata_host_release(struct devi
+@@ -6033,6 +6052,12 @@ static void ata_host_release(struct devi
  
  		kfree(ap->pmp_link);
  		kfree(ap->slave_link);
@@ -98,7 +98,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
  		kfree(ap);
  		host->ports[i] = NULL;
  	}
-@@ -6459,7 +6484,23 @@ int ata_host_register(struct ata_host *h
+@@ -6479,7 +6504,23 @@ int ata_host_register(struct ata_host *h
  		host->ports[i]->print_id = atomic_inc_return(&ata_print_id);
  		host->ports[i]->local_port_no = i + 1;
  	}
diff --git a/target/linux/lantiq/patches-4.14/0001-MIPS-lantiq-add-pcie-driver.patch b/target/linux/lantiq/patches-4.14/0001-MIPS-lantiq-add-pcie-driver.patch
index ecabe81e5d..77351e1791 100644
--- a/target/linux/lantiq/patches-4.14/0001-MIPS-lantiq-add-pcie-driver.patch
+++ b/target/linux/lantiq/patches-4.14/0001-MIPS-lantiq-add-pcie-driver.patch
@@ -41,7 +41,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
 
 --- a/arch/mips/lantiq/Kconfig
 +++ b/arch/mips/lantiq/Kconfig
-@@ -18,6 +18,7 @@ config SOC_XWAY
+@@ -20,6 +20,7 @@ config SOC_XWAY
  	bool "XWAY"
  	select SOC_TYPE_XWAY
  	select HW_HAS_PCI
@@ -49,7 +49,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
  	select MFD_SYSCON
  	select MFD_CORE
  
-@@ -50,6 +51,15 @@ config PCI_LANTIQ
+@@ -52,6 +53,15 @@ config PCI_LANTIQ
  	bool "PCI Support"
  	depends on SOC_XWAY && PCI
  
diff --git a/target/linux/lantiq/patches-4.14/0052-MIPS-lantiq-fix-usb-clocks.patch b/target/linux/lantiq/patches-4.14/0052-MIPS-lantiq-fix-usb-clocks.patch
deleted file mode 100644
index aa3069ed9d..0000000000
--- a/target/linux/lantiq/patches-4.14/0052-MIPS-lantiq-fix-usb-clocks.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From 11e84fdfad0331555ca889c4ac6a9d5f37ae83df Mon Sep 17 00:00:00 2001
-From: Mathias Kresin <dev@kresin.me>
-Date: Sat, 20 Jan 2018 14:38:40 +0100
-Subject: [PATCH] MIPS: lantiq: fix danube usb clock
-
-On danube the USB0 registers are at 1e101000 similar to all other lantiq
-SoCs.
-
-Fixes: dea54fbad332 ("phy: Add an USB PHY driver for the Lantiq SoCs using the RCU module")
-Signed-off-by: Mathias Kresin <dev@kresin.me>
----
- arch/mips/lantiq/xway/sysctrl.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
---- a/arch/mips/lantiq/xway/sysctrl.c
-+++ b/arch/mips/lantiq/xway/sysctrl.c
-@@ -581,7 +581,7 @@ void __init ltq_soc_init(void)
- 	} else {
- 		clkdev_add_static(ltq_danube_cpu_hz(), ltq_danube_fpi_hz(),
- 				ltq_danube_fpi_hz(), ltq_danube_pp32_hz());
--		clkdev_add_pmu("1f203018.usb2-phy", "ctrl", 1, 0, PMU_USB0);
-+		clkdev_add_pmu("1e101000.usb", "otg", 1, 0, PMU_USB0);
- 		clkdev_add_pmu("1f203018.usb2-phy", "phy", 1, 0, PMU_USB0_P);
- 		clkdev_add_pmu("1e103000.sdio", NULL, 1, 0, PMU_SDIO);
- 		clkdev_add_pmu("1e103100.deu", NULL, 1, 0, PMU_DEU);
diff --git a/target/linux/lantiq/patches-4.14/0053-MIPS-lantiq-enable-AHB-Bus-for-USB.patch b/target/linux/lantiq/patches-4.14/0053-MIPS-lantiq-enable-AHB-Bus-for-USB.patch
deleted file mode 100644
index 314ec3d8fd..0000000000
--- a/target/linux/lantiq/patches-4.14/0053-MIPS-lantiq-enable-AHB-Bus-for-USB.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From 2f57c45efb9acb5eea2d8af211ab87b3ccfbf584 Mon Sep 17 00:00:00 2001
-From: Mathias Kresin <dev@kresin.me>
-Date: Sat, 20 Jan 2018 14:38:40 +0100
-Subject: [PATCH] MIPS: lantiq: enable AHB Bus for USB
-
-On Danube and AR9 the USB core is connected to the AHB bus, hence we need
-to enable the AHB Bus as well.
-
-Fixes: dea54fbad332 ("phy: Add an USB PHY driver for the Lantiq SoCs using the RCU module")
-Signed-off-by: Mathias Kresin <dev@kresin.me>
----
- arch/mips/lantiq/xway/sysctrl.c | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
---- a/arch/mips/lantiq/xway/sysctrl.c
-+++ b/arch/mips/lantiq/xway/sysctrl.c
-@@ -570,9 +570,9 @@ void __init ltq_soc_init(void)
- 		clkdev_add_static(ltq_ar9_cpu_hz(), ltq_ar9_fpi_hz(),
- 				ltq_ar9_fpi_hz(), CLOCK_250M);
- 		clkdev_add_pmu("1f203018.usb2-phy", "phy", 1, 0, PMU_USB0_P);
--		clkdev_add_pmu("1e101000.usb", "otg", 1, 0, PMU_USB0);
-+		clkdev_add_pmu("1e101000.usb", "otg", 1, 0, PMU_USB0 | PMU_AHBM);
- 		clkdev_add_pmu("1f203034.usb2-phy", "phy", 1, 0, PMU_USB1_P);
--		clkdev_add_pmu("1e106000.usb", "otg", 1, 0, PMU_USB1);
-+		clkdev_add_pmu("1e106000.usb", "otg", 1, 0, PMU_USB1 | PMU_AHBM);
- 		clkdev_add_pmu("1e180000.etop", "switch", 1, 0, PMU_SWITCH);
- 		clkdev_add_pmu("1e103000.sdio", NULL, 1, 0, PMU_SDIO);
- 		clkdev_add_pmu("1e103100.deu", NULL, 1, 0, PMU_DEU);
-@@ -581,7 +581,7 @@ void __init ltq_soc_init(void)
- 	} else {
- 		clkdev_add_static(ltq_danube_cpu_hz(), ltq_danube_fpi_hz(),
- 				ltq_danube_fpi_hz(), ltq_danube_pp32_hz());
--		clkdev_add_pmu("1e101000.usb", "otg", 1, 0, PMU_USB0);
-+		clkdev_add_pmu("1e101000.usb", "otg", 1, 0, PMU_USB0 | PMU_AHBM);
- 		clkdev_add_pmu("1f203018.usb2-phy", "phy", 1, 0, PMU_USB0_P);
- 		clkdev_add_pmu("1e103000.sdio", NULL, 1, 0, PMU_SDIO);
- 		clkdev_add_pmu("1e103100.deu", NULL, 1, 0, PMU_DEU);
diff --git a/target/linux/lantiq/patches-4.14/0060-lantiq-ase-enable-MFD-SYSCON.patch b/target/linux/lantiq/patches-4.14/0060-lantiq-ase-enable-MFD-SYSCON.patch
deleted file mode 100644
index a74f551898..0000000000
--- a/target/linux/lantiq/patches-4.14/0060-lantiq-ase-enable-MFD-SYSCON.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-From 24af63c6cce57cf88eda7c863035208fba59ee1c Mon Sep 17 00:00:00 2001
-From: Mathias Kresin <dev@kresin.me>
-Date: Tue, 23 Jan 2018 22:14:28 +0100
-Subject: [PATCH] MIPS: lantiq: ase: Enable MFD_SYSCON
-
-Enable syscon to use it for the RCU MFD on Amazon SE as well.
-
-Fixes: 2b6639d4c794 ("MIPS: lantiq: Enable MFD_SYSCON to be able to use it for the RCU MFD")
-Signed-off-by: Mathias Kresin <dev@kresin.me>
----
- arch/mips/lantiq/Kconfig | 2 ++
- 1 file changed, 2 insertions(+)
-
---- a/arch/mips/lantiq/Kconfig
-+++ b/arch/mips/lantiq/Kconfig
-@@ -13,6 +13,8 @@ choice
- config SOC_AMAZON_SE
- 	bool "Amazon SE"
- 	select SOC_TYPE_XWAY
-+	select MFD_SYSCON
-+	select MFD_CORE
- 
- config SOC_XWAY
- 	bool "XWAY"
diff --git a/target/linux/mediatek/patches-4.14/0048-net-core-add-RPS-balancer.patch b/target/linux/mediatek/patches-4.14/0048-net-core-add-RPS-balancer.patch
index a3f4fe8060..6cb5fa7495 100644
--- a/target/linux/mediatek/patches-4.14/0048-net-core-add-RPS-balancer.patch
+++ b/target/linux/mediatek/patches-4.14/0048-net-core-add-RPS-balancer.patch
@@ -10,7 +10,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
 
 --- a/net/core/dev.c
 +++ b/net/core/dev.c
-@@ -3628,6 +3628,58 @@ set_rps_cpu(struct net_device *dev, stru
+@@ -3636,6 +3636,58 @@ set_rps_cpu(struct net_device *dev, stru
  	return rflow;
  }
  
@@ -69,7 +69,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
  /*
   * get_rps_cpu is called from netif_receive_skb and returns the target
   * CPU from the RPS map of the receiving queue for a given skb.
-@@ -3717,7 +3769,7 @@ static int get_rps_cpu(struct net_device
+@@ -3725,7 +3777,7 @@ static int get_rps_cpu(struct net_device
  try_rps:
  
  	if (map) {
@@ -78,7 +78,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
  		if (cpu_online(tcpu)) {
  			cpu = tcpu;
  			goto done;
-@@ -8802,6 +8854,9 @@ static int __init net_dev_init(void)
+@@ -8810,6 +8862,9 @@ static int __init net_dev_init(void)
  		sd->backlog.weight = weight_p;
  	}
  
diff --git a/target/linux/mediatek/patches-4.14/0052-net-phy-add-FC.patch b/target/linux/mediatek/patches-4.14/0052-net-phy-add-FC.patch
index 021f713157..3c4fc5a7ce 100644
--- a/target/linux/mediatek/patches-4.14/0052-net-phy-add-FC.patch
+++ b/target/linux/mediatek/patches-4.14/0052-net-phy-add-FC.patch
@@ -10,7 +10,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
 
 --- a/drivers/net/phy/phy_device.c
 +++ b/drivers/net/phy/phy_device.c
-@@ -1922,7 +1922,7 @@ static struct phy_driver genphy_driver =
+@@ -1929,7 +1929,7 @@ static struct phy_driver genphy_driver =
  	.config_init	= genphy_config_init,
  	.features	= PHY_GBIT_FEATURES | SUPPORTED_MII |
  			  SUPPORTED_AUI | SUPPORTED_FIBRE |
diff --git a/target/linux/mvebu/patches-4.14/411-sfp-add-sfp-compatible.patch b/target/linux/mvebu/patches-4.14/411-sfp-add-sfp-compatible.patch
index a0462e766e..b775116cda 100644
--- a/target/linux/mvebu/patches-4.14/411-sfp-add-sfp-compatible.patch
+++ b/target/linux/mvebu/patches-4.14/411-sfp-add-sfp-compatible.patch
@@ -14,7 +14,7 @@ Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
 
 --- a/drivers/net/phy/sfp.c
 +++ b/drivers/net/phy/sfp.c
-@@ -1137,6 +1137,7 @@ static int sfp_remove(struct platform_de
+@@ -1136,6 +1136,7 @@ static int sfp_remove(struct platform_de
  
  static const struct of_device_id sfp_of_match[] = {
  	{ .compatible = "sff,sfp", },
diff --git a/target/linux/mvebu/patches-4.14/450-reprobe_sfp_phy.patch b/target/linux/mvebu/patches-4.14/450-reprobe_sfp_phy.patch
index a9a6634c23..e9a3d695da 100644
--- a/target/linux/mvebu/patches-4.14/450-reprobe_sfp_phy.patch
+++ b/target/linux/mvebu/patches-4.14/450-reprobe_sfp_phy.patch
@@ -22,20 +22,16 @@ Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
  {
  	struct phy_device *phy;
  	int err;
-@@ -497,12 +497,12 @@ static void sfp_sm_probe_phy(struct sfp
- 
+@@ -498,11 +498,11 @@ static void sfp_sm_probe_phy(struct sfp
  	phy = mdiobus_scan(sfp->i2c_mii, SFP_PHY_ADDR);
+ 	if (phy == ERR_PTR(-ENODEV)) {
+ 		dev_info(sfp->dev, "no PHY detected\n");
+-		return;
++		return -EAGAIN;
+ 	}
  	if (IS_ERR(phy)) {
-+		if (PTR_ERR(phy) == -ENODEV) {
-+			dev_dbg(sfp->dev, "no PHY detected\n");
-+			return -EAGAIN;
-+		}
  		dev_err(sfp->dev, "mdiobus scan returned %ld\n", PTR_ERR(phy));
 -		return;
--	}
--	if (!phy) {
--		dev_info(sfp->dev, "no PHY detected\n");
--		return;
 +		return PTR_ERR(phy);
  	}
  
diff --git a/target/linux/ramips/patches-4.14/0034-NET-multi-phy-support.patch b/target/linux/ramips/patches-4.14/0034-NET-multi-phy-support.patch
index 7c2777c467..e10f3a31a1 100644
--- a/target/linux/ramips/patches-4.14/0034-NET-multi-phy-support.patch
+++ b/target/linux/ramips/patches-4.14/0034-NET-multi-phy-support.patch
@@ -11,7 +11,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
 
 --- a/drivers/net/phy/phy.c
 +++ b/drivers/net/phy/phy.c
-@@ -981,7 +981,10 @@ void phy_state_machine(struct work_struc
+@@ -980,7 +980,10 @@ void phy_state_machine(struct work_struc
  		/* If the link is down, give up on negotiation for now */
  		if (!phydev->link) {
  			phydev->state = PHY_NOLINK;
@@ -23,7 +23,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
  			break;
  		}
  
-@@ -1068,7 +1071,10 @@ void phy_state_machine(struct work_struc
+@@ -1067,7 +1070,10 @@ void phy_state_machine(struct work_struc
  			phy_link_up(phydev);
  		} else {
  			phydev->state = PHY_NOLINK;
@@ -35,7 +35,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
  		}
  
  		if (phy_interrupt_is_valid(phydev))
-@@ -1078,7 +1084,10 @@ void phy_state_machine(struct work_struc
+@@ -1077,7 +1083,10 @@ void phy_state_machine(struct work_struc
  	case PHY_HALTED:
  		if (phydev->link) {
  			phydev->link = 0;
