diff --git a/MAINTAINERS b/MAINTAINERS
index 1cb72da76e043bfa38136668ebc6fa79ca739fe4..5a4c8758973ec439188c167613214212ec773e31 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -5754,7 +5754,7 @@ M:	Steve Hodgson <shodgson@solarflare.com>
 M:	Ben Hutchings <bhutchings@solarflare.com>
 L:	netdev@vger.kernel.org
 S:	Supported
-F:	drivers/net/sfc/
+F:	drivers/net/ethernet/sfc/
 
 SGI GRU DRIVER
 M:	Jack Steiner <steiner@sgi.com>
diff --git a/drivers/net/Kconfig b/drivers/net/Kconfig
index 7977002fc81db3470fb2b991c7132c80026df193..fe227123a5f67d489a7d35fcebd830f44ce4e698 100644
--- a/drivers/net/Kconfig
+++ b/drivers/net/Kconfig
@@ -1598,8 +1598,6 @@ config BNA
 
 	  <http://support.brocade.com>
 
-source "drivers/net/sfc/Kconfig"
-
 source "drivers/net/benet/Kconfig"
 
 endif # NETDEV_10000
diff --git a/drivers/net/Makefile b/drivers/net/Makefile
index cfbb060c0c69a00114654648ef83673ee83e37a2..faf306865cbd11739baf52db6e8bedf228adb0ec 100644
--- a/drivers/net/Makefile
+++ b/drivers/net/Makefile
@@ -201,7 +201,6 @@ obj-$(CONFIG_NETCONSOLE) += netconsole.o
 obj-$(CONFIG_FS_ENET) += fs_enet/
 
 obj-$(CONFIG_VIRTIO_NET) += virtio_net.o
-obj-$(CONFIG_SFC) += sfc/
 
 obj-$(CONFIG_WIMAX) += wimax/
 obj-$(CONFIG_CAIF) += caif/
diff --git a/drivers/net/ethernet/Kconfig b/drivers/net/ethernet/Kconfig
index 5edd2371c53f7d1a223364d545be925fd8f62928..0bc6635b071b961b5e2465713beca58e76098489 100644
--- a/drivers/net/ethernet/Kconfig
+++ b/drivers/net/ethernet/Kconfig
@@ -20,6 +20,7 @@ source "drivers/net/ethernet/intel/Kconfig"
 source "drivers/net/ethernet/i825xx/Kconfig"
 source "drivers/net/ethernet/qlogic/Kconfig"
 source "drivers/net/ethernet/racal/Kconfig"
+source "drivers/net/ethernet/sfc/Kconfig"
 source "drivers/net/ethernet/smsc/Kconfig"
 source "drivers/net/ethernet/sun/Kconfig"
 
diff --git a/drivers/net/ethernet/Makefile b/drivers/net/ethernet/Makefile
index 18d8a893d78b225d7f35cf00a7d3cd1d136272e2..50faab53b95b3392155f494cea534a0bf26c5582 100644
--- a/drivers/net/ethernet/Makefile
+++ b/drivers/net/ethernet/Makefile
@@ -11,5 +11,6 @@ obj-$(CONFIG_NET_VENDOR_INTEL) += intel/
 obj-$(CONFIG_NET_VENDOR_I825XX) += i825xx/
 obj-$(CONFIG_NET_VENDOR_QLOGIC) += qlogic/
 obj-$(CONFIG_NET_VENDOR_RACAL) += racal/
+obj-$(CONFIG_SFC) += sfc/
 obj-$(CONFIG_NET_VENDOR_SMSC) += smsc/
 obj-$(CONFIG_NET_VENDOR_SUN) += sun/
diff --git a/drivers/net/sfc/Kconfig b/drivers/net/ethernet/sfc/Kconfig
similarity index 96%
rename from drivers/net/sfc/Kconfig
rename to drivers/net/ethernet/sfc/Kconfig
index a3d5bb9e39dc5cfb48fb0d696c06c3a1f4b5d7c1..5d18841f0f3d5393cb72d132f6a54c08f0a33254 100644
--- a/drivers/net/sfc/Kconfig
+++ b/drivers/net/ethernet/sfc/Kconfig
@@ -5,7 +5,7 @@ config SFC
 	select CRC32
 	select I2C
 	select I2C_ALGOBIT
-	help
+	---help---
 	  This driver supports 10-gigabit Ethernet cards based on
 	  the Solarflare SFC4000 and SFC9000-family controllers.
 
@@ -15,7 +15,7 @@ config SFC_MTD
 	bool "Solarflare SFC4000/SFC9000-family MTD support"
 	depends on SFC && MTD && !(SFC=y && MTD=m)
 	default y
-	help
+	---help---
 	  This exposes the on-board flash memory as MTD devices (e.g.
 	  /dev/mtd1).  This makes it possible to upload new firmware
 	  to the NIC.
diff --git a/drivers/net/sfc/Makefile b/drivers/net/ethernet/sfc/Makefile
similarity index 100%
rename from drivers/net/sfc/Makefile
rename to drivers/net/ethernet/sfc/Makefile
diff --git a/drivers/net/sfc/bitfield.h b/drivers/net/ethernet/sfc/bitfield.h
similarity index 100%
rename from drivers/net/sfc/bitfield.h
rename to drivers/net/ethernet/sfc/bitfield.h
diff --git a/drivers/net/sfc/efx.c b/drivers/net/ethernet/sfc/efx.c
similarity index 100%
rename from drivers/net/sfc/efx.c
rename to drivers/net/ethernet/sfc/efx.c
diff --git a/drivers/net/sfc/efx.h b/drivers/net/ethernet/sfc/efx.h
similarity index 100%
rename from drivers/net/sfc/efx.h
rename to drivers/net/ethernet/sfc/efx.h
diff --git a/drivers/net/sfc/enum.h b/drivers/net/ethernet/sfc/enum.h
similarity index 100%
rename from drivers/net/sfc/enum.h
rename to drivers/net/ethernet/sfc/enum.h
diff --git a/drivers/net/sfc/ethtool.c b/drivers/net/ethernet/sfc/ethtool.c
similarity index 100%
rename from drivers/net/sfc/ethtool.c
rename to drivers/net/ethernet/sfc/ethtool.c
diff --git a/drivers/net/sfc/falcon.c b/drivers/net/ethernet/sfc/falcon.c
similarity index 100%
rename from drivers/net/sfc/falcon.c
rename to drivers/net/ethernet/sfc/falcon.c
diff --git a/drivers/net/sfc/falcon_boards.c b/drivers/net/ethernet/sfc/falcon_boards.c
similarity index 100%
rename from drivers/net/sfc/falcon_boards.c
rename to drivers/net/ethernet/sfc/falcon_boards.c
diff --git a/drivers/net/sfc/falcon_xmac.c b/drivers/net/ethernet/sfc/falcon_xmac.c
similarity index 100%
rename from drivers/net/sfc/falcon_xmac.c
rename to drivers/net/ethernet/sfc/falcon_xmac.c
diff --git a/drivers/net/sfc/filter.c b/drivers/net/ethernet/sfc/filter.c
similarity index 100%
rename from drivers/net/sfc/filter.c
rename to drivers/net/ethernet/sfc/filter.c
diff --git a/drivers/net/sfc/filter.h b/drivers/net/ethernet/sfc/filter.h
similarity index 100%
rename from drivers/net/sfc/filter.h
rename to drivers/net/ethernet/sfc/filter.h
diff --git a/drivers/net/sfc/io.h b/drivers/net/ethernet/sfc/io.h
similarity index 100%
rename from drivers/net/sfc/io.h
rename to drivers/net/ethernet/sfc/io.h
diff --git a/drivers/net/sfc/mac.h b/drivers/net/ethernet/sfc/mac.h
similarity index 100%
rename from drivers/net/sfc/mac.h
rename to drivers/net/ethernet/sfc/mac.h
diff --git a/drivers/net/sfc/mcdi.c b/drivers/net/ethernet/sfc/mcdi.c
similarity index 100%
rename from drivers/net/sfc/mcdi.c
rename to drivers/net/ethernet/sfc/mcdi.c
diff --git a/drivers/net/sfc/mcdi.h b/drivers/net/ethernet/sfc/mcdi.h
similarity index 100%
rename from drivers/net/sfc/mcdi.h
rename to drivers/net/ethernet/sfc/mcdi.h
diff --git a/drivers/net/sfc/mcdi_mac.c b/drivers/net/ethernet/sfc/mcdi_mac.c
similarity index 100%
rename from drivers/net/sfc/mcdi_mac.c
rename to drivers/net/ethernet/sfc/mcdi_mac.c
diff --git a/drivers/net/sfc/mcdi_pcol.h b/drivers/net/ethernet/sfc/mcdi_pcol.h
similarity index 100%
rename from drivers/net/sfc/mcdi_pcol.h
rename to drivers/net/ethernet/sfc/mcdi_pcol.h
diff --git a/drivers/net/sfc/mcdi_phy.c b/drivers/net/ethernet/sfc/mcdi_phy.c
similarity index 100%
rename from drivers/net/sfc/mcdi_phy.c
rename to drivers/net/ethernet/sfc/mcdi_phy.c
diff --git a/drivers/net/sfc/mdio_10g.c b/drivers/net/ethernet/sfc/mdio_10g.c
similarity index 100%
rename from drivers/net/sfc/mdio_10g.c
rename to drivers/net/ethernet/sfc/mdio_10g.c
diff --git a/drivers/net/sfc/mdio_10g.h b/drivers/net/ethernet/sfc/mdio_10g.h
similarity index 100%
rename from drivers/net/sfc/mdio_10g.h
rename to drivers/net/ethernet/sfc/mdio_10g.h
diff --git a/drivers/net/sfc/mtd.c b/drivers/net/ethernet/sfc/mtd.c
similarity index 100%
rename from drivers/net/sfc/mtd.c
rename to drivers/net/ethernet/sfc/mtd.c
diff --git a/drivers/net/sfc/net_driver.h b/drivers/net/ethernet/sfc/net_driver.h
similarity index 100%
rename from drivers/net/sfc/net_driver.h
rename to drivers/net/ethernet/sfc/net_driver.h
diff --git a/drivers/net/sfc/nic.c b/drivers/net/ethernet/sfc/nic.c
similarity index 100%
rename from drivers/net/sfc/nic.c
rename to drivers/net/ethernet/sfc/nic.c
diff --git a/drivers/net/sfc/nic.h b/drivers/net/ethernet/sfc/nic.h
similarity index 100%
rename from drivers/net/sfc/nic.h
rename to drivers/net/ethernet/sfc/nic.h
diff --git a/drivers/net/sfc/phy.h b/drivers/net/ethernet/sfc/phy.h
similarity index 100%
rename from drivers/net/sfc/phy.h
rename to drivers/net/ethernet/sfc/phy.h
diff --git a/drivers/net/sfc/qt202x_phy.c b/drivers/net/ethernet/sfc/qt202x_phy.c
similarity index 100%
rename from drivers/net/sfc/qt202x_phy.c
rename to drivers/net/ethernet/sfc/qt202x_phy.c
diff --git a/drivers/net/sfc/regs.h b/drivers/net/ethernet/sfc/regs.h
similarity index 100%
rename from drivers/net/sfc/regs.h
rename to drivers/net/ethernet/sfc/regs.h
diff --git a/drivers/net/sfc/rx.c b/drivers/net/ethernet/sfc/rx.c
similarity index 100%
rename from drivers/net/sfc/rx.c
rename to drivers/net/ethernet/sfc/rx.c
diff --git a/drivers/net/sfc/selftest.c b/drivers/net/ethernet/sfc/selftest.c
similarity index 100%
rename from drivers/net/sfc/selftest.c
rename to drivers/net/ethernet/sfc/selftest.c
diff --git a/drivers/net/sfc/selftest.h b/drivers/net/ethernet/sfc/selftest.h
similarity index 100%
rename from drivers/net/sfc/selftest.h
rename to drivers/net/ethernet/sfc/selftest.h
diff --git a/drivers/net/sfc/siena.c b/drivers/net/ethernet/sfc/siena.c
similarity index 100%
rename from drivers/net/sfc/siena.c
rename to drivers/net/ethernet/sfc/siena.c
diff --git a/drivers/net/sfc/spi.h b/drivers/net/ethernet/sfc/spi.h
similarity index 100%
rename from drivers/net/sfc/spi.h
rename to drivers/net/ethernet/sfc/spi.h
diff --git a/drivers/net/sfc/tenxpress.c b/drivers/net/ethernet/sfc/tenxpress.c
similarity index 100%
rename from drivers/net/sfc/tenxpress.c
rename to drivers/net/ethernet/sfc/tenxpress.c
diff --git a/drivers/net/sfc/tx.c b/drivers/net/ethernet/sfc/tx.c
similarity index 100%
rename from drivers/net/sfc/tx.c
rename to drivers/net/ethernet/sfc/tx.c
diff --git a/drivers/net/sfc/txc43128_phy.c b/drivers/net/ethernet/sfc/txc43128_phy.c
similarity index 100%
rename from drivers/net/sfc/txc43128_phy.c
rename to drivers/net/ethernet/sfc/txc43128_phy.c
diff --git a/drivers/net/sfc/workarounds.h b/drivers/net/ethernet/sfc/workarounds.h
similarity index 100%
rename from drivers/net/sfc/workarounds.h
rename to drivers/net/ethernet/sfc/workarounds.h