diff --git a/hmp.c b/hmp.c
index 873962f7104c9db888db8b791f073c32f60762ba..9b31e9f8a784ce63390691c5877ecfbe1d5d2af2 100644
--- a/hmp.c
+++ b/hmp.c
@@ -14,7 +14,7 @@
  */
 
 #include "hmp.h"
-#include "net.h"
+#include "net/net.h"
 #include "qemu-char.h"
 #include "qemu-option.h"
 #include "qemu-timer.h"
diff --git a/hw/axis_dev88.c b/hw/axis_dev88.c
index aa1ac9e479e1778f0a00938c6b9b27d53e25bc18..50ddbc920ddfd77977d86400f8e0359f0071852e 100644
--- a/hw/axis_dev88.c
+++ b/hw/axis_dev88.c
@@ -23,7 +23,7 @@
  */
 
 #include "sysbus.h"
-#include "net.h"
+#include "net/net.h"
 #include "flash.h"
 #include "boards.h"
 #include "etraxfs.h"
diff --git a/hw/cadence_gem.c b/hw/cadence_gem.c
index 0c037a299311c80c97c7b0718c22a49e3cd7c4bf..40a239973cfdee0353fead6f16f7e46f1ee61f25 100644
--- a/hw/cadence_gem.c
+++ b/hw/cadence_gem.c
@@ -25,7 +25,7 @@
 #include <zlib.h> /* For crc32 */
 
 #include "sysbus.h"
-#include "net.h"
+#include "net/net.h"
 #include "net/checksum.h"
 
 #ifdef CADENCE_GEM_ERR_DEBUG
diff --git a/hw/dp8393x.c b/hw/dp8393x.c
index 3f6386eee8b0b618384ae2314ffb640d831f5d78..d59b6118ada738f261a9fdbabfe9c059c0041ec9 100644
--- a/hw/dp8393x.c
+++ b/hw/dp8393x.c
@@ -19,7 +19,7 @@
 
 #include "hw.h"
 #include "qemu-timer.h"
-#include "net.h"
+#include "net/net.h"
 #include "mips.h"
 
 //#define DEBUG_SONIC
diff --git a/hw/e1000.c b/hw/e1000.c
index c89c8d22ab20b2652a50364fd947b9e9a4c52700..aeee3e61f41b8fa58adcfd52639aa84860fd1719 100644
--- a/hw/e1000.c
+++ b/hw/e1000.c
@@ -27,7 +27,7 @@
 
 #include "hw.h"
 #include "pci/pci.h"
-#include "net.h"
+#include "net/net.h"
 #include "net/checksum.h"
 #include "loader.h"
 #include "sysemu.h"
diff --git a/hw/eepro100.c b/hw/eepro100.c
index 992f03ace7fcffa4b90855ce9d1c6f845a2321ba..9e2be4ea0df77c42af9c60f912731b33cf1160f8 100644
--- a/hw/eepro100.c
+++ b/hw/eepro100.c
@@ -43,7 +43,7 @@
 #include <stddef.h>             /* offsetof */
 #include "hw.h"
 #include "pci/pci.h"
-#include "net.h"
+#include "net/net.h"
 #include "eeprom93xx.h"
 #include "sysemu.h"
 #include "dma.h"
diff --git a/hw/etraxfs.h b/hw/etraxfs.h
index 725bb9e14215793e970ddbb671117058c1af7408..bc60713633063b9b1611a41fcee7c2f339a43fea 100644
--- a/hw/etraxfs.h
+++ b/hw/etraxfs.h
@@ -22,7 +22,7 @@
  * THE SOFTWARE.
  */
 
-#include "net.h"
+#include "net/net.h"
 #include "etraxfs_dma.h"
 
 qemu_irq *cris_pic_init_cpu(CPUCRISState *env);
diff --git a/hw/etraxfs_eth.c b/hw/etraxfs_eth.c
index 3d4242682365fd2da14e8d679b1d23a171bf946a..289a810edc577210c6489b1f405b019daabe4182 100644
--- a/hw/etraxfs_eth.c
+++ b/hw/etraxfs_eth.c
@@ -24,7 +24,7 @@
 
 #include <stdio.h>
 #include "sysbus.h"
-#include "net.h"
+#include "net/net.h"
 #include "etraxfs.h"
 
 #define D(x)
diff --git a/hw/exynos4_boards.c b/hw/exynos4_boards.c
index bc815bbae320c37582550f2c0e6fcdc17e2e1be4..c375f16479eb7cc7b1d689cc4b24ffa25075c429 100644
--- a/hw/exynos4_boards.c
+++ b/hw/exynos4_boards.c
@@ -23,7 +23,7 @@
 
 #include "sysemu.h"
 #include "sysbus.h"
-#include "net.h"
+#include "net/net.h"
 #include "arm-misc.h"
 #include "exec-memory.h"
 #include "exynos4210.h"
diff --git a/hw/gumstix.c b/hw/gumstix.c
index 4103a88b804472a7af8b069f328b800f9715e266..545b92fd954eb0188adaaf5eb626535c23f51e08 100644
--- a/hw/gumstix.c
+++ b/hw/gumstix.c
@@ -36,7 +36,7 @@
 
 #include "hw.h"
 #include "pxa.h"
-#include "net.h"
+#include "net/net.h"
 #include "flash.h"
 #include "devices.h"
 #include "boards.h"
diff --git a/hw/highbank.c b/hw/highbank.c
index 8e35127c8a00131019247ff8265ed01670500637..90f7cb5ef20b067e909b65f5ee583df6e3339d76 100644
--- a/hw/highbank.c
+++ b/hw/highbank.c
@@ -21,7 +21,7 @@
 #include "arm-misc.h"
 #include "devices.h"
 #include "loader.h"
-#include "net.h"
+#include "net/net.h"
 #include "sysemu.h"
 #include "boards.h"
 #include "sysbus.h"
diff --git a/hw/integratorcp.c b/hw/integratorcp.c
index 77807c39e37a81462c3ae7861cb338e52dde3259..2b59fea9f166a916c26f3865f80a210e647e30b3 100644
--- a/hw/integratorcp.c
+++ b/hw/integratorcp.c
@@ -11,7 +11,7 @@
 #include "devices.h"
 #include "boards.h"
 #include "arm-misc.h"
-#include "net.h"
+#include "net/net.h"
 #include "exec-memory.h"
 #include "sysemu.h"
 
diff --git a/hw/kzm.c b/hw/kzm.c
index 687daf3b2c3a0c5f47e69bac12f936800f454e28..a27ecbba840780f0acc2343164a337af3be3d71b 100644
--- a/hw/kzm.c
+++ b/hw/kzm.c
@@ -18,7 +18,7 @@
 #include "hw.h"
 #include "arm-misc.h"
 #include "devices.h"
-#include "net.h"
+#include "net/net.h"
 #include "sysemu.h"
 #include "boards.h"
 #include "serial.h"
diff --git a/hw/lan9118.c b/hw/lan9118.c
index f724e1c301800b2368cd175dfb54c6b168ec017d..4c72d0d98e58695b036cee4481e846965cebe883 100644
--- a/hw/lan9118.c
+++ b/hw/lan9118.c
@@ -11,7 +11,7 @@
  */
 
 #include "sysbus.h"
-#include "net.h"
+#include "net/net.h"
 #include "devices.h"
 #include "sysemu.h"
 #include "ptimer.h"
diff --git a/hw/lance.c b/hw/lance.c
index a3e6dd91d57f27c59333f9778382d45cddd844c3..a38467615869c3580d0594b9a08617eaac25642c 100644
--- a/hw/lance.c
+++ b/hw/lance.c
@@ -36,7 +36,7 @@
  */
 
 #include "sysbus.h"
-#include "net.h"
+#include "net/net.h"
 #include "qemu-timer.h"
 #include "qemu_socket.h"
 #include "sun4m.h"
diff --git a/hw/mainstone.c b/hw/mainstone.c
index 5bbecb7304d7a21cb0ce105784e1ff67419792be..58c8b0748eb5772cfffd77967e4982a9d76f25f4 100644
--- a/hw/mainstone.c
+++ b/hw/mainstone.c
@@ -14,7 +14,7 @@
 #include "hw.h"
 #include "pxa.h"
 #include "arm-misc.h"
-#include "net.h"
+#include "net/net.h"
 #include "devices.h"
 #include "boards.h"
 #include "flash.h"
diff --git a/hw/mcf5208.c b/hw/mcf5208.c
index b1db54937e8f18d5e1668400fc04708215320794..6326624111e98787a921c7b66356b9389ed3ca29 100644
--- a/hw/mcf5208.c
+++ b/hw/mcf5208.c
@@ -10,7 +10,7 @@
 #include "qemu-timer.h"
 #include "ptimer.h"
 #include "sysemu.h"
-#include "net.h"
+#include "net/net.h"
 #include "boards.h"
 #include "loader.h"
 #include "elf.h"
diff --git a/hw/mcf_fec.c b/hw/mcf_fec.c
index 1ed193c5dbb3d875e65cc30edcc3ec22757b8a62..b5fb18f67f2bbaade047f73e09c5a6ddc72a4228 100644
--- a/hw/mcf_fec.c
+++ b/hw/mcf_fec.c
@@ -6,7 +6,7 @@
  * This code is licensed under the GPL
  */
 #include "hw.h"
-#include "net.h"
+#include "net/net.h"
 #include "mcf.h"
 /* For crc32 */
 #include <zlib.h>
diff --git a/hw/milkymist-hw.h b/hw/milkymist-hw.h
index 0253b7ab26ad8834fdd0d9b17ca326e668c70b2a..812ddd2bd13dac0d850137995a12176bbf8f64f9 100644
--- a/hw/milkymist-hw.h
+++ b/hw/milkymist-hw.h
@@ -3,7 +3,7 @@
 
 #include "qdev.h"
 #include "qdev-addr.h"
-#include "net.h"
+#include "net/net.h"
 
 static inline DeviceState *milkymist_uart_create(hwaddr base,
         qemu_irq irq)
diff --git a/hw/milkymist-minimac2.c b/hw/milkymist-minimac2.c
index b204e5f890ca11f70d93a3cc197f8157d77e31a3..926f7f9a8b19dee03b98c4bc0464c737bfd95d0b 100644
--- a/hw/milkymist-minimac2.c
+++ b/hw/milkymist-minimac2.c
@@ -25,7 +25,7 @@
 #include "hw.h"
 #include "sysbus.h"
 #include "trace.h"
-#include "net.h"
+#include "net/net.h"
 #include "qemu-error.h"
 #include "qdev-addr.h"
 
diff --git a/hw/mips_fulong2e.c b/hw/mips_fulong2e.c
index d5cf33b4b6ca83729589621bbfea76a75392a09d..bab96b27c1b0a24d8ae0c691e5122e73eef12234 100644
--- a/hw/mips_fulong2e.c
+++ b/hw/mips_fulong2e.c
@@ -22,7 +22,7 @@
 #include "pc.h"
 #include "serial.h"
 #include "fdc.h"
-#include "net.h"
+#include "net/net.h"
 #include "boards.h"
 #include "smbus.h"
 #include "block.h"
diff --git a/hw/mips_jazz.c b/hw/mips_jazz.c
index ea1416ae2f35d7c0fe0ebfd3d0c139a4d7643fbe..8e5e8ef1afaec0d832cc072f505a39cb63017344 100644
--- a/hw/mips_jazz.c
+++ b/hw/mips_jazz.c
@@ -32,7 +32,7 @@
 #include "sysemu.h"
 #include "arch_init.h"
 #include "boards.h"
-#include "net.h"
+#include "net/net.h"
 #include "esp.h"
 #include "mips-bios.h"
 #include "loader.h"
diff --git a/hw/mips_malta.c b/hw/mips_malta.c
index 571903dfc5745a19a6059b4f9d0dde82b38930ea..3f9f171385235aaafa00c51080616cc8d7d8494b 100644
--- a/hw/mips_malta.c
+++ b/hw/mips_malta.c
@@ -26,7 +26,7 @@
 #include "pc.h"
 #include "serial.h"
 #include "fdc.h"
-#include "net.h"
+#include "net/net.h"
 #include "boards.h"
 #include "smbus.h"
 #include "block.h"
diff --git a/hw/mips_mipssim.c b/hw/mips_mipssim.c
index 20b5f1a58cd165007f90e811e4590f106b092157..78317426a710e2b3db574c6f2b6da5d5fc90cf2f 100644
--- a/hw/mips_mipssim.c
+++ b/hw/mips_mipssim.c
@@ -29,7 +29,7 @@
 #include "mips_cpudevs.h"
 #include "serial.h"
 #include "isa.h"
-#include "net.h"
+#include "net/net.h"
 #include "sysemu.h"
 #include "boards.h"
 #include "mips-bios.h"
diff --git a/hw/mips_r4k.c b/hw/mips_r4k.c
index 325098a43aed06c8d2aeec83a48405ff2c910f3e..ec99d7d6a6154f5ee7bd118edfc7d968692fd0c2 100644
--- a/hw/mips_r4k.c
+++ b/hw/mips_r4k.c
@@ -13,7 +13,7 @@
 #include "pc.h"
 #include "serial.h"
 #include "isa.h"
-#include "net.h"
+#include "net/net.h"
 #include "sysemu.h"
 #include "boards.h"
 #include "flash.h"
diff --git a/hw/mipsnet.c b/hw/mipsnet.c
index bece332c4e95a0b0dbdceeb1668ba4480d8d8c0f..bb752d3950fc22f7905dabbafceeb778471fcda7 100644
--- a/hw/mipsnet.c
+++ b/hw/mipsnet.c
@@ -1,5 +1,5 @@
 #include "hw.h"
-#include "net.h"
+#include "net/net.h"
 #include "trace.h"
 #include "sysbus.h"
 
diff --git a/hw/musicpal.c b/hw/musicpal.c
index e0c57c84eb149dd6d2797b7756ec54ac9f765b58..4e8399ab636e0da58c4376906642c64f0687a014 100644
--- a/hw/musicpal.c
+++ b/hw/musicpal.c
@@ -12,7 +12,7 @@
 #include "sysbus.h"
 #include "arm-misc.h"
 #include "devices.h"
-#include "net.h"
+#include "net/net.h"
 #include "sysemu.h"
 #include "boards.h"
 #include "serial.h"
diff --git a/hw/ne2000-isa.c b/hw/ne2000-isa.c
index 69982a9abbb4724eecbec8d4cfe9bddec5268dfb..99477a412acdbf41b0777d9b4fbbfab0c0e485ba 100644
--- a/hw/ne2000-isa.c
+++ b/hw/ne2000-isa.c
@@ -25,7 +25,7 @@
 #include "pc.h"
 #include "isa.h"
 #include "qdev.h"
-#include "net.h"
+#include "net/net.h"
 #include "ne2000.h"
 #include "exec-memory.h"
 
diff --git a/hw/ne2000.c b/hw/ne2000.c
index fb78e5b252bbe89a4e77f61afe1242db03e40bbd..2001264e14d3e7adb71118ca6540a15500924396 100644
--- a/hw/ne2000.c
+++ b/hw/ne2000.c
@@ -23,7 +23,7 @@
  */
 #include "hw.h"
 #include "pci/pci.h"
-#include "net.h"
+#include "net/net.h"
 #include "ne2000.h"
 #include "loader.h"
 #include "sysemu.h"
diff --git a/hw/opencores_eth.c b/hw/opencores_eth.c
index b2780b93348cc07c28b12a623fbfd12439485ecd..fd2f0f61c38175e0d6a4b327f754d61f12681b7b 100644
--- a/hw/opencores_eth.c
+++ b/hw/opencores_eth.c
@@ -33,7 +33,7 @@
 
 #include "hw.h"
 #include "sysbus.h"
-#include "net.h"
+#include "net/net.h"
 #include "sysemu.h"
 #include "trace.h"
 
diff --git a/hw/openrisc_sim.c b/hw/openrisc_sim.c
index 23c66df1fb13ca25798f82fde5f7b55660b97965..a879fb0dd01e26cc90fb8c07e14891760310a91a 100644
--- a/hw/openrisc_sim.c
+++ b/hw/openrisc_sim.c
@@ -22,7 +22,7 @@
 #include "boards.h"
 #include "elf.h"
 #include "serial.h"
-#include "net.h"
+#include "net/net.h"
 #include "loader.h"
 #include "exec-memory.h"
 #include "sysemu.h"
diff --git a/hw/pc.h b/hw/pc.h
index 2237e86446af120036dbcb0902d1da383c5c5bc6..5e4d1038133f9d6b83fa06272ed8eb705bee3100 100644
--- a/hw/pc.h
+++ b/hw/pc.h
@@ -6,7 +6,7 @@
 #include "ioport.h"
 #include "isa.h"
 #include "fdc.h"
-#include "net.h"
+#include "net/net.h"
 #include "memory.h"
 #include "ioapic.h"
 
diff --git a/hw/pc_piix.c b/hw/pc_piix.c
index c2b4cb07e54d5f27c454d9ff0919efc8780f56dc..7268dcd944d16664dfeaee5833b9c043e2e66293 100644
--- a/hw/pc_piix.c
+++ b/hw/pc_piix.c
@@ -30,7 +30,7 @@
 #include "pci/pci.h"
 #include "pci/pci_ids.h"
 #include "usb.h"
-#include "net.h"
+#include "net/net.h"
 #include "boards.h"
 #include "ide.h"
 #include "kvm.h"
diff --git a/hw/pci/pci-hotplug.c b/hw/pci/pci-hotplug.c
index 4b4c931c74feeffd23452530955b8074782b3450..b8504002526b89fd029a16abef755f573a4c54f5 100644
--- a/hw/pci/pci-hotplug.c
+++ b/hw/pci/pci-hotplug.c
@@ -25,7 +25,7 @@
 #include "hw/hw.h"
 #include "hw/boards.h"
 #include "hw/pci/pci.h"
-#include "net.h"
+#include "net/net.h"
 #include "hw/pc.h"
 #include "monitor.h"
 #include "hw/scsi.h"
diff --git a/hw/pci/pci.c b/hw/pci/pci.c
index 2e455e22d2c0eb8cab53932adad1d62fce3bd033..105fe9560e8aac163c6110fb41e0e46b4f6b5ece 100644
--- a/hw/pci/pci.c
+++ b/hw/pci/pci.c
@@ -26,7 +26,7 @@
 #include "hw/pci/pci_bridge.h"
 #include "hw/pci/pci_bus.h"
 #include "monitor.h"
-#include "net.h"
+#include "net/net.h"
 #include "sysemu.h"
 #include "hw/loader.h"
 #include "range.h"
diff --git a/hw/pcnet-pci.c b/hw/pcnet-pci.c
index c1abbf8d0d2c036424024301acc43f666e95db3f..c6768bcbdc367d0da2c87941474844d68739ebb1 100644
--- a/hw/pcnet-pci.c
+++ b/hw/pcnet-pci.c
@@ -28,7 +28,7 @@
  */
 
 #include "pci/pci.h"
-#include "net.h"
+#include "net/net.h"
 #include "loader.h"
 #include "qemu-timer.h"
 #include "dma.h"
diff --git a/hw/pcnet.c b/hw/pcnet.c
index 54eecd01d3a1eb6132fb3658d2f21c3fbdf69f46..5b03edecdd1282c55c964571b7e19e1553d2ccb2 100644
--- a/hw/pcnet.c
+++ b/hw/pcnet.c
@@ -36,7 +36,7 @@
  */
 
 #include "qdev.h"
-#include "net.h"
+#include "net/net.h"
 #include "qemu-timer.h"
 #include "qemu_socket.h"
 #include "sysemu.h"
diff --git a/hw/petalogix_ml605_mmu.c b/hw/petalogix_ml605_mmu.c
index 3589a4bc7faaf25851f3ad0c1aa33fefe29f42e8..df51a74450cae54bbb00bbd3b2818e0259f4b549 100644
--- a/hw/petalogix_ml605_mmu.c
+++ b/hw/petalogix_ml605_mmu.c
@@ -27,7 +27,7 @@
 
 #include "sysbus.h"
 #include "hw.h"
-#include "net.h"
+#include "net/net.h"
 #include "flash.h"
 #include "sysemu.h"
 #include "devices.h"
diff --git a/hw/petalogix_s3adsp1800_mmu.c b/hw/petalogix_s3adsp1800_mmu.c
index c5fd5e793a0960433c7bb42d37579e24826f3bcc..37b0d5595a852ca57975095133c25620c731520e 100644
--- a/hw/petalogix_s3adsp1800_mmu.c
+++ b/hw/petalogix_s3adsp1800_mmu.c
@@ -25,7 +25,7 @@
 
 #include "sysbus.h"
 #include "hw.h"
-#include "net.h"
+#include "net/net.h"
 #include "flash.h"
 #include "sysemu.h"
 #include "devices.h"
diff --git a/hw/ppc/e500.c b/hw/ppc/e500.c
index 2b1558b16e073c79d98831a60946f4bd925b0ece..4690bd8b00872c56b28f364a2b5a4666e2bb24c9 100644
--- a/hw/ppc/e500.c
+++ b/hw/ppc/e500.c
@@ -18,7 +18,7 @@
 #include "qemu-common.h"
 #include "e500.h"
 #include "e500-ccsr.h"
-#include "net.h"
+#include "net/net.h"
 #include "qemu-config.h"
 #include "hw/hw.h"
 #include "hw/serial.h"
diff --git a/hw/ppc440_bamboo.c b/hw/ppc440_bamboo.c
index 0b39a81ec59e68a284697e6873d978c6bbc46408..5193a0c4beb641948faa242472a0e0087ee0776d 100644
--- a/hw/ppc440_bamboo.c
+++ b/hw/ppc440_bamboo.c
@@ -13,7 +13,7 @@
 
 #include "config.h"
 #include "qemu-common.h"
-#include "net.h"
+#include "net/net.h"
 #include "hw.h"
 #include "pci/pci.h"
 #include "boards.h"
diff --git a/hw/ppc_newworld.c b/hw/ppc_newworld.c
index 2bf3094e9fe9e88e30743399afe0a5b1130719df..657f405f1ba4731901b9fb8f0ee06ef2eb097499 100644
--- a/hw/ppc_newworld.c
+++ b/hw/ppc_newworld.c
@@ -53,7 +53,7 @@
 #include "mac_dbdma.h"
 #include "nvram.h"
 #include "pci/pci.h"
-#include "net.h"
+#include "net/net.h"
 #include "sysemu.h"
 #include "boards.h"
 #include "fw_cfg.h"
diff --git a/hw/ppc_oldworld.c b/hw/ppc_oldworld.c
index 3bc29c619c4cd22b09b646ce4239b1c99c3f29d0..a149306cc918ece25bf22fa0e8cac9722f404689 100644
--- a/hw/ppc_oldworld.c
+++ b/hw/ppc_oldworld.c
@@ -30,7 +30,7 @@
 #include "mac_dbdma.h"
 #include "nvram.h"
 #include "sysemu.h"
-#include "net.h"
+#include "net/net.h"
 #include "isa.h"
 #include "pci/pci.h"
 #include "boards.h"
diff --git a/hw/ppc_prep.c b/hw/ppc_prep.c
index f6ffb593b7d2622ebedce3e53bb20b43f8d01ad8..25cc0490f936ab67c90b8a370506d4acb13efab4 100644
--- a/hw/ppc_prep.c
+++ b/hw/ppc_prep.c
@@ -26,7 +26,7 @@
 #include "pc.h"
 #include "serial.h"
 #include "fdc.h"
-#include "net.h"
+#include "net/net.h"
 #include "sysemu.h"
 #include "isa.h"
 #include "pci/pci.h"
diff --git a/hw/qdev-properties.c b/hw/qdev-properties.c
index b9cd3c007762cc85b028a2fde2c757423a5f3ad0..7ab55efe43e366e1b41539d9eecf36c96b440122 100644
--- a/hw/qdev-properties.c
+++ b/hw/qdev-properties.c
@@ -1,4 +1,4 @@
-#include "net.h"
+#include "net/net.h"
 #include "qdev.h"
 #include "qerror.h"
 #include "blockdev.h"
diff --git a/hw/qdev.c b/hw/qdev.c
index 599382cab23b9fafe18fef7736658b4f7e8e6c4c..6b91fb987bd53e37f972151c26eea65d142eebc4 100644
--- a/hw/qdev.c
+++ b/hw/qdev.c
@@ -25,7 +25,7 @@
    inherit from a particular bus (e.g. PCI or I2C) rather than
    this API directly.  */
 
-#include "net.h"
+#include "net/net.h"
 #include "qdev.h"
 #include "sysemu.h"
 #include "error.h"
diff --git a/hw/r2d.c b/hw/r2d.c
index e18c23b28bd0f44f7c4f46ca2b28213072709fd1..b1c278f73f1e852068cb4ea6cfc9bdb19bce4745 100644
--- a/hw/r2d.c
+++ b/hw/r2d.c
@@ -30,7 +30,7 @@
 #include "sysemu.h"
 #include "boards.h"
 #include "pci/pci.h"
-#include "net.h"
+#include "net/net.h"
 #include "sh7750_regs.h"
 #include "ide.h"
 #include "loader.h"
diff --git a/hw/realview.c b/hw/realview.c
index 5fbdcbf2b0ef54831603a17a84841cd02d275903..17d1ba2266106191f085286114e4635743540208 100644
--- a/hw/realview.c
+++ b/hw/realview.c
@@ -12,7 +12,7 @@
 #include "primecell.h"
 #include "devices.h"
 #include "pci/pci.h"
-#include "net.h"
+#include "net/net.h"
 #include "sysemu.h"
 #include "boards.h"
 #include "i2c.h"
diff --git a/hw/rtl8139.c b/hw/rtl8139.c
index e294a2a5e3e7e9b3273e29b99acea43f737fc25a..e024520b8bb5c243db47e68138128f5a03890d28 100644
--- a/hw/rtl8139.c
+++ b/hw/rtl8139.c
@@ -55,7 +55,7 @@
 #include "pci/pci.h"
 #include "dma.h"
 #include "qemu-timer.h"
-#include "net.h"
+#include "net/net.h"
 #include "loader.h"
 #include "sysemu.h"
 #include "iov.h"
diff --git a/hw/s390-virtio.c b/hw/s390-virtio.c
index 7aca0c4aadb3aa9ec531297edf076a839e3e3656..8c724b942cc01be1556f517b070d0bc676ab8b7e 100644
--- a/hw/s390-virtio.c
+++ b/hw/s390-virtio.c
@@ -21,7 +21,7 @@
 #include "block.h"
 #include "blockdev.h"
 #include "sysemu.h"
-#include "net.h"
+#include "net/net.h"
 #include "boards.h"
 #include "monitor.h"
 #include "loader.h"
diff --git a/hw/smc91c111.c b/hw/smc91c111.c
index 4ceed01a1a9b8917f9053edda0f49322482d2217..2161b4af7a79cf0542e1609bd859eeff0c7dc4ba 100644
--- a/hw/smc91c111.c
+++ b/hw/smc91c111.c
@@ -8,7 +8,7 @@
  */
 
 #include "sysbus.h"
-#include "net.h"
+#include "net/net.h"
 #include "devices.h"
 /* For crc32 */
 #include <zlib.h>
diff --git a/hw/spapr.c b/hw/spapr.c
index 7306ab368ab84198fa3d096ad3ea86faa16989a8..395c4ac69b4b351b5a7b0c13fed80ed8d264fed1 100644
--- a/hw/spapr.c
+++ b/hw/spapr.c
@@ -27,7 +27,7 @@
 #include "sysemu.h"
 #include "hw.h"
 #include "elf.h"
-#include "net.h"
+#include "net/net.h"
 #include "blockdev.h"
 #include "cpus.h"
 #include "kvm.h"
diff --git a/hw/spapr_llan.c b/hw/spapr_llan.c
index 09ad69f6b501b3a0d88b4a7e8a0e223d2e51c97a..8077eb94bc6e3fe64169da43af59c65b4afceb16 100644
--- a/hw/spapr_llan.c
+++ b/hw/spapr_llan.c
@@ -25,7 +25,7 @@
  *
  */
 #include "hw.h"
-#include "net.h"
+#include "net/net.h"
 #include "hw/qdev.h"
 #include "hw/spapr.h"
 #include "hw/spapr_vio.h"
diff --git a/hw/stellaris.c b/hw/stellaris.c
index b038f10f3aa7b2373435f0ac8c3c7fac51b9484e..f3eb4bbc01c4021af7183c4ddfe3418882a07d64 100644
--- a/hw/stellaris.c
+++ b/hw/stellaris.c
@@ -13,7 +13,7 @@
 #include "devices.h"
 #include "qemu-timer.h"
 #include "i2c.h"
-#include "net.h"
+#include "net/net.h"
 #include "boards.h"
 #include "exec-memory.h"
 
diff --git a/hw/stellaris_enet.c b/hw/stellaris_enet.c
index a530b105989d0a4c06761500b43099c8fcc3b7b5..d7e1e21ff9403aa6afedbb9d67956e279ca0b1c3 100644
--- a/hw/stellaris_enet.c
+++ b/hw/stellaris_enet.c
@@ -7,7 +7,7 @@
  * This code is licensed under the GPL.
  */
 #include "sysbus.h"
-#include "net.h"
+#include "net/net.h"
 #include <zlib.h>
 
 //#define DEBUG_STELLARIS_ENET 1
diff --git a/hw/sun4m.c b/hw/sun4m.c
index 52cf82b681d94dcb9d2e93e0abfac3975a25a1c5..9a784dfd04c5bd00dff55f3990417e0b7b9721e6 100644
--- a/hw/sun4m.c
+++ b/hw/sun4m.c
@@ -28,7 +28,7 @@
 #include "sparc32_dma.h"
 #include "fdc.h"
 #include "sysemu.h"
-#include "net.h"
+#include "net/net.h"
 #include "boards.h"
 #include "firmware_abi.h"
 #include "esp.h"
diff --git a/hw/sun4u.c b/hw/sun4u.c
index 47bcf9382dd530dd9499d3dbd21b279394af905b..d9e752fe83ee817218fa4277085977d286274492 100644
--- a/hw/sun4u.c
+++ b/hw/sun4u.c
@@ -28,7 +28,7 @@
 #include "serial.h"
 #include "nvram.h"
 #include "fdc.h"
-#include "net.h"
+#include "net/net.h"
 #include "qemu-timer.h"
 #include "sysemu.h"
 #include "boards.h"
diff --git a/hw/usb/dev-network.c b/hw/usb/dev-network.c
index 0552e6f4380bd1f9d2ed5514c5514c71301f3b56..bf289ff5a601d1db8b88093cf95c8cf2d54b6666 100644
--- a/hw/usb/dev-network.c
+++ b/hw/usb/dev-network.c
@@ -26,7 +26,7 @@
 #include "qemu-common.h"
 #include "hw/usb.h"
 #include "hw/usb/desc.h"
-#include "net.h"
+#include "net/net.h"
 #include "qemu-queue.h"
 #include "qemu-config.h"
 #include "sysemu.h"
diff --git a/hw/versatilepb.c b/hw/versatilepb.c
index f5a742b37f5aed4a16f938ac1d2d8db8d0ff79cf..af398d9cca6ad87b5707846cc87ee27c1d5d6a2b 100644
--- a/hw/versatilepb.c
+++ b/hw/versatilepb.c
@@ -10,7 +10,7 @@
 #include "sysbus.h"
 #include "arm-misc.h"
 #include "devices.h"
-#include "net.h"
+#include "net/net.h"
 #include "sysemu.h"
 #include "pci/pci.h"
 #include "i2c.h"
diff --git a/hw/vexpress.c b/hw/vexpress.c
index e89694c86ee0601c098667cb028399e0ce87ea63..5c9c08b99123b3c8146bf84d16295cb2a6e6ec23 100644
--- a/hw/vexpress.c
+++ b/hw/vexpress.c
@@ -25,7 +25,7 @@
 #include "arm-misc.h"
 #include "primecell.h"
 #include "devices.h"
-#include "net.h"
+#include "net/net.h"
 #include "sysemu.h"
 #include "boards.h"
 #include "exec-memory.h"
diff --git a/hw/vhost_net.c b/hw/vhost_net.c
index 8241601539c1ee9043cf2afc547c17215133241f..93ad89a11c159dc579fa8641de735398bbe75b85 100644
--- a/hw/vhost_net.c
+++ b/hw/vhost_net.c
@@ -13,7 +13,7 @@
  * GNU GPL, version 2 or (at your option) any later version.
  */
 
-#include "net.h"
+#include "net/net.h"
 #include "net/tap.h"
 
 #include "virtio-net.h"
diff --git a/hw/vhost_net.h b/hw/vhost_net.h
index a9db23423c3b0402b9a72eea329061a3d8a0b6d7..012aba41482d8f82016a1686a070a77bd5c94ba4 100644
--- a/hw/vhost_net.h
+++ b/hw/vhost_net.h
@@ -1,7 +1,7 @@
 #ifndef VHOST_NET_H
 #define VHOST_NET_H
 
-#include "net.h"
+#include "net/net.h"
 
 struct vhost_net;
 typedef struct vhost_net VHostNetState;
diff --git a/hw/virtio-net.c b/hw/virtio-net.c
index 108ce07cfcff57bafc53e792f4b8fa4518c014a8..dc7c6d6b565efbb3699ca0e1826e29b35bc243d4 100644
--- a/hw/virtio-net.c
+++ b/hw/virtio-net.c
@@ -13,7 +13,7 @@
 
 #include "iov.h"
 #include "virtio.h"
-#include "net.h"
+#include "net/net.h"
 #include "net/checksum.h"
 #include "net/tap.h"
 #include "qemu-error.h"
diff --git a/hw/virtio-net.h b/hw/virtio-net.h
index 2566ea13ece10a76a3c3b060fdba5e8a42c72746..d46fb9840f41812054d0b941ffaa63425a8b7043 100644
--- a/hw/virtio-net.h
+++ b/hw/virtio-net.h
@@ -73,33 +73,6 @@ struct virtio_net_config
     uint16_t status;
 } QEMU_PACKED;
 
-/* This is the first element of the scatter-gather list.  If you don't
- * specify GSO or CSUM features, you can simply ignore the header. */
-struct virtio_net_hdr
-{
-#define VIRTIO_NET_HDR_F_NEEDS_CSUM     1       // Use csum_start, csum_offset
-#define VIRTIO_NET_HDR_F_DATA_VALID	2	// Csum is valid
-    uint8_t flags;
-#define VIRTIO_NET_HDR_GSO_NONE         0       // Not a GSO frame
-#define VIRTIO_NET_HDR_GSO_TCPV4        1       // GSO frame, IPv4 TCP (TSO)
-#define VIRTIO_NET_HDR_GSO_UDP          3       // GSO frame, IPv4 UDP (UFO)
-#define VIRTIO_NET_HDR_GSO_TCPV6        4       // GSO frame, IPv6 TCP
-#define VIRTIO_NET_HDR_GSO_ECN          0x80    // TCP has ECN set
-    uint8_t gso_type;
-    uint16_t hdr_len;
-    uint16_t gso_size;
-    uint16_t csum_start;
-    uint16_t csum_offset;
-};
-
-/* This is the version of the header to use when the MRG_RXBUF
- * feature has been negotiated. */
-struct virtio_net_hdr_mrg_rxbuf
-{
-    struct virtio_net_hdr hdr;
-    uint16_t num_buffers;   /* Number of merged rx buffers */
-};
-
 /*
  * Control virtqueue data structures
  *
diff --git a/hw/virtio.h b/hw/virtio.h
index 7c17f7ba0bb0512bafebe70783c8cf3e68bc59ff..cdcb490733fb16ee752d5cfe76b2df941f255921 100644
--- a/hw/virtio.h
+++ b/hw/virtio.h
@@ -15,7 +15,7 @@
 #define _QEMU_VIRTIO_H
 
 #include "hw.h"
-#include "net.h"
+#include "net/net.h"
 #include "qdev.h"
 #include "sysemu.h"
 #include "event_notifier.h"
diff --git a/hw/xen_backend.h b/hw/xen_backend.h
index 330563090349075c5d3fd4b27193482727de301e..92ab501d374469950f23bcd196334ac0ed890941 100644
--- a/hw/xen_backend.h
+++ b/hw/xen_backend.h
@@ -3,7 +3,7 @@
 
 #include "xen_common.h"
 #include "sysemu.h"
-#include "net.h"
+#include "net/net.h"
 
 /* ------------------------------------------------------------- */
 
diff --git a/hw/xen_nic.c b/hw/xen_nic.c
index dadacb1fb5702ceaf612271829b24e22c837be4d..dc12110dba7ea5ea852d20114b2a093983e61341 100644
--- a/hw/xen_nic.c
+++ b/hw/xen_nic.c
@@ -36,7 +36,7 @@
 #include <sys/wait.h>
 
 #include "hw.h"
-#include "net.h"
+#include "net/net.h"
 #include "net/checksum.h"
 #include "net/util.h"
 #include "xen_backend.h"
diff --git a/hw/xgmac.c b/hw/xgmac.c
index ec50c745d00276b51d6c3d93cbbbdc16a32a8589..d0d510ed6a84920dd901970ad4257dd46be09f01 100644
--- a/hw/xgmac.c
+++ b/hw/xgmac.c
@@ -27,7 +27,7 @@
 #include "sysbus.h"
 #include "qemu-char.h"
 #include "qemu-log.h"
-#include "net.h"
+#include "net/net.h"
 #include "net/checksum.h"
 
 #ifdef DEBUG_XGMAC
diff --git a/hw/xilinx.h b/hw/xilinx.h
index 9323fd07c6ec326527bcb2ddb203e82f1ab8587a..735f8e257d62be2790fb999b9499edb39b060431 100644
--- a/hw/xilinx.h
+++ b/hw/xilinx.h
@@ -1,6 +1,6 @@
 #include "stream.h"
 #include "qemu-common.h"
-#include "net.h"
+#include "net/net.h"
 
 static inline DeviceState *
 xilinx_intc_create(hwaddr base, qemu_irq irq, int kind_of_intr)
diff --git a/hw/xilinx_axienet.c b/hw/xilinx_axienet.c
index c859fde09e742cc57f210d4e8b5d2d2225d745e1..35979e65c93ebd16032d3448c63f71171345f971 100644
--- a/hw/xilinx_axienet.c
+++ b/hw/xilinx_axienet.c
@@ -24,7 +24,7 @@
 
 #include "sysbus.h"
 #include "qemu-log.h"
-#include "net.h"
+#include "net/net.h"
 #include "net/checksum.h"
 
 #include "stream.h"
diff --git a/hw/xilinx_ethlite.c b/hw/xilinx_ethlite.c
index 13bd45613d7cb8f6a55b35be000c6617d9231f3c..4de4a53a0bf6d0322e463ef5f00499b1976136e4 100644
--- a/hw/xilinx_ethlite.c
+++ b/hw/xilinx_ethlite.c
@@ -24,7 +24,7 @@
 
 #include "sysbus.h"
 #include "hw.h"
-#include "net.h"
+#include "net/net.h"
 
 #define D(x)
 #define R_TX_BUF0     0
diff --git a/hw/xilinx_zynq.c b/hw/xilinx_zynq.c
index 9ca22a4e7de8601e1b60575c7bd45872dd2c98f4..67adc52725d4573a9eb007f355cd5f9c993bb33d 100644
--- a/hw/xilinx_zynq.c
+++ b/hw/xilinx_zynq.c
@@ -17,7 +17,7 @@
 
 #include "sysbus.h"
 #include "arm-misc.h"
-#include "net.h"
+#include "net/net.h"
 #include "exec-memory.h"
 #include "sysemu.h"
 #include "boards.h"
diff --git a/hw/xtensa_lx60.c b/hw/xtensa_lx60.c
index bc10d3161f4280951958b759c47d763e10c94461..0399de777e08d19b7dacf48f9c030a6521091f83 100644
--- a/hw/xtensa_lx60.c
+++ b/hw/xtensa_lx60.c
@@ -32,7 +32,7 @@
 #include "memory.h"
 #include "exec-memory.h"
 #include "serial.h"
-#include "net.h"
+#include "net/net.h"
 #include "sysbus.h"
 #include "flash.h"
 #include "blockdev.h"
diff --git a/net/checksum.h b/include/net/checksum.h
similarity index 100%
rename from net/checksum.h
rename to include/net/checksum.h
diff --git a/net.h b/include/net/net.h
similarity index 98%
rename from net.h
rename to include/net/net.h
index 1d0816bc0a2aa70f9cac23529d13ffccfdb2a7a5..9ff9305d7a7e3e083a9dac7597a2d084305c6d38 100644
--- a/net.h
+++ b/include/net/net.h
@@ -147,6 +147,9 @@ void net_host_device_remove(Monitor *mon, const QDict *qdict);
 void netdev_add(QemuOpts *opts, Error **errp);
 int qmp_netdev_add(Monitor *mon, const QDict *qdict, QObject **ret);
 
+int net_hub_id_for_client(NetClientState *nc, int *id);
+NetClientState *net_hub_port_find(int hub_id);
+
 #define DEFAULT_NETWORK_SCRIPT "/etc/qemu-ifup"
 #define DEFAULT_NETWORK_DOWN_SCRIPT "/etc/qemu-ifdown"
 #define DEFAULT_BRIDGE_HELPER CONFIG_QEMU_HELPERDIR "/qemu-bridge-helper"
diff --git a/net/queue.h b/include/net/queue.h
similarity index 100%
rename from net/queue.h
rename to include/net/queue.h
diff --git a/net/slirp.h b/include/net/slirp.h
similarity index 100%
rename from net/slirp.h
rename to include/net/slirp.h
diff --git a/include/net/tap.h b/include/net/tap.h
new file mode 100644
index 0000000000000000000000000000000000000000..bb7efb5439add8f62aa4adb9d72851133fb64dc6
--- /dev/null
+++ b/include/net/tap.h
@@ -0,0 +1,67 @@
+/*
+ * QEMU System Emulator
+ *
+ * Copyright (c) 2003-2008 Fabrice Bellard
+ * Copyright (c) 2009 Red Hat, Inc.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+#ifndef QEMU_NET_TAP_H
+#define QEMU_NET_TAP_H
+
+#include "qemu-common.h"
+#include "qapi-types.h"
+
+int tap_has_ufo(NetClientState *nc);
+int tap_has_vnet_hdr(NetClientState *nc);
+int tap_has_vnet_hdr_len(NetClientState *nc, int len);
+void tap_using_vnet_hdr(NetClientState *nc, int using_vnet_hdr);
+void tap_set_offload(NetClientState *nc, int csum, int tso4, int tso6, int ecn, int ufo);
+void tap_set_vnet_hdr_len(NetClientState *nc, int len);
+
+int tap_get_fd(NetClientState *nc);
+
+struct vhost_net;
+struct vhost_net *tap_get_vhost_net(NetClientState *nc);
+
+struct virtio_net_hdr
+{
+#define VIRTIO_NET_HDR_F_NEEDS_CSUM     1       // Use csum_start, csum_offset
+#define VIRTIO_NET_HDR_F_DATA_VALID    2       // Csum is valid
+    uint8_t flags;
+#define VIRTIO_NET_HDR_GSO_NONE         0       // Not a GSO frame
+#define VIRTIO_NET_HDR_GSO_TCPV4        1       // GSO frame, IPv4 TCP (TSO)
+#define VIRTIO_NET_HDR_GSO_UDP          3       // GSO frame, IPv4 UDP (UFO)
+#define VIRTIO_NET_HDR_GSO_TCPV6        4       // GSO frame, IPv6 TCP
+#define VIRTIO_NET_HDR_GSO_ECN          0x80    // TCP has ECN set
+    uint8_t gso_type;
+    uint16_t hdr_len;
+    uint16_t gso_size;
+    uint16_t csum_start;
+    uint16_t csum_offset;
+};
+
+struct virtio_net_hdr_mrg_rxbuf
+{
+    struct virtio_net_hdr hdr;
+    uint16_t num_buffers;   /* Number of merged rx buffers */
+};
+
+#endif /* QEMU_NET_TAP_H */
diff --git a/monitor.c b/monitor.c
index bd63768c271c56ebdd86127772177169f563bb71..37b9d20299edc8d4f4552e8b87b489531e8167fb 100644
--- a/monitor.c
+++ b/monitor.c
@@ -31,7 +31,7 @@
 #include "hw/watchdog.h"
 #include "hw/loader.h"
 #include "gdbstub.h"
-#include "net.h"
+#include "net/net.h"
 #include "net/slirp.h"
 #include "qemu-char.h"
 #include "ui/qemu-spice.h"
diff --git a/net/clients.h b/net/clients.h
index c58cc6087ceb89b9392c4c4dbef8200255b86663..77932942bdde29cc4406bd4c72f216f5c5395d7a 100644
--- a/net/clients.h
+++ b/net/clients.h
@@ -24,7 +24,7 @@
 #ifndef QEMU_NET_CLIENTS_H
 #define QEMU_NET_CLIENTS_H
 
-#include "net.h"
+#include "net/net.h"
 #include "qapi-types.h"
 
 int net_init_dump(const NetClientOptions *opts, const char *name,
diff --git a/net/hub.c b/net/hub.c
index be413012bb72aedab5d08feadeb3d778355ad802..8508ecf380880f890c9e265d8315568d65c951d4 100644
--- a/net/hub.c
+++ b/net/hub.c
@@ -13,7 +13,7 @@
  */
 
 #include "monitor.h"
-#include "net.h"
+#include "net/net.h"
 #include "clients.h"
 #include "hub.h"
 #include "iov.h"
diff --git a/net/hub.h b/net/hub.h
index 4cbfdb128b63272739d2472840c7c2d5fa3c2024..583ada89d8abe52e4ee41ded6192f36c4ec5092d 100644
--- a/net/hub.h
+++ b/net/hub.h
@@ -20,8 +20,6 @@
 NetClientState *net_hub_add_port(int hub_id, const char *name);
 NetClientState *net_hub_find_client_by_name(int hub_id, const char *name);
 void net_hub_info(Monitor *mon);
-int net_hub_id_for_client(NetClientState *nc, int *id);
 void net_hub_check_clients(void);
-NetClientState *net_hub_port_find(int hub_id);
 
 #endif /* NET_HUB_H */
diff --git a/net/net.c b/net/net.c
index 7b1600f17c8c7ac0981ae805b821924033357890..a4395be140a7da3b5d2138b13c9b1ff6d7efae7a 100644
--- a/net/net.c
+++ b/net/net.c
@@ -23,10 +23,10 @@
  */
 #include "config-host.h"
 
-#include "net.h"
+#include "net/net.h"
 #include "clients.h"
 #include "hub.h"
-#include "slirp.h"
+#include "net/slirp.h"
 #include "util.h"
 
 #include "monitor.h"
diff --git a/net/queue.c b/net/queue.c
index 254f28013a656116d8e586693e4155a777e8f32a..542c549b1ace4855420b94824b0adf7f1ab6f0f9 100644
--- a/net/queue.c
+++ b/net/queue.c
@@ -23,7 +23,7 @@
 
 #include "net/queue.h"
 #include "qemu-queue.h"
-#include "net.h"
+#include "net/net.h"
 
 /* The delivery handler may only return zero if it will call
  * qemu_net_queue_flush() when it determines that it is once again able
diff --git a/net/slirp.c b/net/slirp.c
index f117412badb5dc3a603a99558a8bf65a91ecee75..5a11ac5859322926eb7d0c603fecadd801ea8478 100644
--- a/net/slirp.c
+++ b/net/slirp.c
@@ -29,7 +29,7 @@
 #include <pwd.h>
 #include <sys/wait.h>
 #endif
-#include "net.h"
+#include "net/net.h"
 #include "clients.h"
 #include "hub.h"
 #include "monitor.h"
diff --git a/net/socket.c b/net/socket.c
index cf309cd5b9612f70e1c3fc6c53bc7a039fee9829..8430f1a161985620926649f47efc7fa2850a1b67 100644
--- a/net/socket.c
+++ b/net/socket.c
@@ -23,7 +23,7 @@
  */
 #include "config-host.h"
 
-#include "net.h"
+#include "net/net.h"
 #include "clients.h"
 #include "monitor.h"
 #include "qemu-common.h"
diff --git a/net/tap-aix.c b/net/tap-aix.c
index f27c17729e0e9a763063133b93d23bd028dfb9f1..aff6c527e9f4e8f8b13d7df040c071dc72808c62 100644
--- a/net/tap-aix.c
+++ b/net/tap-aix.c
@@ -22,7 +22,7 @@
  * THE SOFTWARE.
  */
 
-#include "net/tap.h"
+#include "tap_int.h"
 #include <stdio.h>
 
 int tap_open(char *ifname, int ifname_size, int *vnet_hdr, int vnet_hdr_required)
diff --git a/net/tap-bsd.c b/net/tap-bsd.c
index a3b717dd1c4cbce7656f0e0dc89922d046959cb2..a1c55ad3def3e746e8450754942383c425abbf74 100644
--- a/net/tap-bsd.c
+++ b/net/tap-bsd.c
@@ -22,7 +22,7 @@
  * THE SOFTWARE.
  */
 
-#include "net/tap.h"
+#include "tap_int.h"
 #include "qemu-common.h"
 #include "sysemu.h"
 #include "qemu-error.h"
diff --git a/net/tap-haiku.c b/net/tap-haiku.c
index 34739d15624491ece3f525a4ee1a4d52d1e4e69a..08cc034cee3d86566dbd50de06e5f07e1a5a6ab2 100644
--- a/net/tap-haiku.c
+++ b/net/tap-haiku.c
@@ -22,7 +22,7 @@
  * THE SOFTWARE.
  */
 
-#include "net/tap.h"
+#include "tap_int.h"
 #include <stdio.h>
 
 int tap_open(char *ifname, int ifname_size, int *vnet_hdr, int vnet_hdr_required)
diff --git a/net/tap-linux.c b/net/tap-linux.c
index 3eaedc40ad3d18cb135b6592a5fd9701ae81f070..3de7b3b6ce7af6abd4be8b973b68b78f48e3dfca 100644
--- a/net/tap-linux.c
+++ b/net/tap-linux.c
@@ -23,8 +23,9 @@
  * THE SOFTWARE.
  */
 
+#include "tap_int.h"
+#include "tap-linux.h"
 #include "net/tap.h"
-#include "net/tap-linux.h"
 
 #include <net/if.h>
 #include <sys/ioctl.h>
diff --git a/net/tap-linux.h b/net/tap-linux.h
index 659e98122b53166db09071bb36b92b68e8671c05..cb2a6d480ae89ff602c0e14964a00b88fdb27960 100644
--- a/net/tap-linux.h
+++ b/net/tap-linux.h
@@ -13,8 +13,8 @@
  *  GNU General Public License for more details.
  */
 
-#ifndef QEMU_TAP_H
-#define QEMU_TAP_H
+#ifndef QEMU_TAP_LINUX_H
+#define QEMU_TAP_LINUX_H
 
 #include <stdint.h>
 #ifdef __linux__
@@ -44,20 +44,4 @@
 #define TUN_F_TSO_ECN	0x08	/* I can handle TSO with ECN bits. */
 #define TUN_F_UFO	0x10	/* I can handle UFO packets */
 
-struct virtio_net_hdr
-{
-    uint8_t flags;
-    uint8_t gso_type;
-    uint16_t hdr_len;
-    uint16_t gso_size;
-    uint16_t csum_start;
-    uint16_t csum_offset;
-};
-
-struct virtio_net_hdr_mrg_rxbuf
-{
-    struct virtio_net_hdr hdr;
-    uint16_t num_buffers;   /* Number of merged rx buffers */
-};
-
 #endif /* QEMU_TAP_H */
diff --git a/net/tap-solaris.c b/net/tap-solaris.c
index 5d6ac42f249265a4902169127c88b0d16d892cf7..f228fffb6d2c0d238203c0775fa52923207ff677 100644
--- a/net/tap-solaris.c
+++ b/net/tap-solaris.c
@@ -22,7 +22,7 @@
  * THE SOFTWARE.
  */
 
-#include "net/tap.h"
+#include "tap_int.h"
 #include "sysemu.h"
 
 #include <sys/stat.h>
diff --git a/net/tap-win32.c b/net/tap-win32.c
index f9bd74109cffbf9811a1d282c7e12c9f8bf9df21..e37d8ee458c01e17d6aa54fee3f557f1365d9da5 100644
--- a/net/tap-win32.c
+++ b/net/tap-win32.c
@@ -26,11 +26,11 @@
  *  distribution); if not, see <http://www.gnu.org/licenses/>.
  */
 
-#include "tap.h"
+#include "tap_int.h"
 
 #include "qemu-common.h"
 #include "clients.h"            /* net_init_tap */
-#include "net.h"
+#include "net/net.h"
 #include "sysemu.h"
 #include "qemu-error.h"
 #include <stdio.h>
diff --git a/net/tap.c b/net/tap.c
index 5ff78934dc59d16b19006645fb74b16a5d986aff..f8cabc4f86d8be5e36b9fcaeeabd5a51564ee4b7 100644
--- a/net/tap.c
+++ b/net/tap.c
@@ -23,7 +23,7 @@
  * THE SOFTWARE.
  */
 
-#include "tap.h"
+#include "tap_int.h"
 
 #include "config-host.h"
 
@@ -33,14 +33,14 @@
 #include <sys/socket.h>
 #include <net/if.h>
 
-#include "net.h"
+#include "net/net.h"
 #include "clients.h"
 #include "monitor.h"
 #include "sysemu.h"
 #include "qemu-common.h"
 #include "qemu-error.h"
 
-#include "net/tap-linux.h"
+#include "net/tap.h"
 
 #include "hw/vhost_net.h"
 
diff --git a/net/tap.h b/net/tap_int.h
similarity index 77%
rename from net/tap.h
rename to net/tap_int.h
index d44d83ae73f468e89891b21a96c4d711d54c9612..1dffe12a452c5178b6ca8cbebf4cc199789844e8 100644
--- a/net/tap.h
+++ b/net/tap_int.h
@@ -23,8 +23,8 @@
  * THE SOFTWARE.
  */
 
-#ifndef QEMU_NET_TAP_H
-#define QEMU_NET_TAP_H
+#ifndef QEMU_TAP_H
+#define QEMU_TAP_H
 
 #include "qemu-common.h"
 #include "qapi-types.h"
@@ -36,13 +36,6 @@ int tap_open(char *ifname, int ifname_size, int *vnet_hdr, int vnet_hdr_required
 
 ssize_t tap_read_packet(int tapfd, uint8_t *buf, int maxlen);
 
-int tap_has_ufo(NetClientState *nc);
-int tap_has_vnet_hdr(NetClientState *nc);
-int tap_has_vnet_hdr_len(NetClientState *nc, int len);
-void tap_using_vnet_hdr(NetClientState *nc, int using_vnet_hdr);
-void tap_set_offload(NetClientState *nc, int csum, int tso4, int tso6, int ecn, int ufo);
-void tap_set_vnet_hdr_len(NetClientState *nc, int len);
-
 int tap_set_sndbuf(int fd, const NetdevTapOptions *tap);
 int tap_probe_vnet_hdr(int fd);
 int tap_probe_vnet_hdr_len(int fd, int len);
@@ -50,9 +43,4 @@ int tap_probe_has_ufo(int fd);
 void tap_fd_set_offload(int fd, int csum, int tso4, int tso6, int ecn, int ufo);
 void tap_fd_set_vnet_hdr_len(int fd, int len);
 
-int tap_get_fd(NetClientState *nc);
-
-struct vhost_net;
-struct vhost_net *tap_get_vhost_net(NetClientState *nc);
-
-#endif /* QEMU_NET_TAP_H */
+#endif /* QEMU_TAP_H */
diff --git a/net/util.c b/net/util.c
index 1e9afbc1ae1e9fbc70da7382d53b281ea927abad..7e9507679d74a42ba78f4730636f2574eae57041 100644
--- a/net/util.c
+++ b/net/util.c
@@ -22,7 +22,7 @@
  * THE SOFTWARE.
  */
 
-#include "net/util.h"
+#include "util.h"
 #include <errno.h>
 #include <stdlib.h>
 
diff --git a/net/vde.c b/net/vde.c
index cc5a07d65ef655e252ffd42610c9b4848be8e4ca..52d4f19fba16891c5295a79925de5d765ce7c12e 100644
--- a/net/vde.c
+++ b/net/vde.c
@@ -25,7 +25,7 @@
 
 #include <libvdeplug.h>
 
-#include "net.h"
+#include "net/net.h"
 #include "clients.h"
 #include "qemu-common.h"
 #include "qemu-option.h"
diff --git a/savevm.c b/savevm.c
index f5886ce772be5f3805dcbac3a2fd44433f876e36..ae8787868fffded1e3d606fe97da9702101d9a9e 100644
--- a/savevm.c
+++ b/savevm.c
@@ -72,7 +72,7 @@
 #include "qemu-common.h"
 #include "hw/hw.h"
 #include "hw/qdev.h"
-#include "net.h"
+#include "net/net.h"
 #include "monitor.h"
 #include "sysemu.h"
 #include "qemu-timer.h"
diff --git a/vl.c b/vl.c
index 571a49b9315b5d63652ac488c9b01570df2e66ae..a7eeafc26ecb54b29e70502a21da0c340595a79e 100644
--- a/vl.c
+++ b/vl.c
@@ -127,7 +127,7 @@ int main(int argc, char **argv)
 #include "hw/qdev.h"
 #include "hw/loader.h"
 #include "bt-host.h"
-#include "net.h"
+#include "net/net.h"
 #include "net/slirp.h"
 #include "monitor.h"
 #include "console.h"