Skip to contentSkip to conversation

net/e1000: build on Windows

PATCH Superseded William Tu 7 participants 21 messages Oct 7, 2021 – Oct 21, 2021

Subsystems (2)
lore
Share & tools
lore

William Tu

author
#0 lore raw

PATCH 1/1 net/e1000: build on Windows

This patch enables building the e1000 driver for Windows. I tested using two Windows VM on top of VMware Fusion, creating two e1000 devices with device ID 0x10D3, verifying rx/tx works correctly using dpdk-testpmd.exe rxonly and txonly mode.

---
Example when running:
PS C:\dpdk> .\build\app\dpdk-testpmd.exe
EAL: Detected CPU lcores: 4
EAL: Detected NUMA nodes: 1
EAL: Multi-process support is requested, but not available.
EAL: WARNING: TSC frequency estimated roughly - clock timings may be less accurate.
EAL: Probe PCI driver: net_e1000_em (8086:10d3) device: 0000:03:00.0 (socket 0)
EAL: Requested device 0000:1b:00.0 cannot be used
testpmd: create a new mbuf pool <mb_pool_0>: n=171456, size=2176, socket=0
testpmd: preferred mempool ops selected: ring_mp_mc

Warning! port-topology=paired and odd forward ports number, the last port will p air with itself.
Configuring Port 0 (socket 0)
Port 0: 00:50:56:3A:4D:A6
Checking link statuses...
Done
No commandline core given, start packet forwarding
allocation mode: native
Logical Core 1 (socket 0) forwards packets on 1 streams:
RX P=0/Q=0 (socket 0) -> TX P=0/Q=0 (socket 0) peer=02:00:00:00:00:00

io packet forwarding packets/burst=32
nb forwarding cores=1 - nb forwarding ports=1
port 0: RX queue number: 1 Tx queue number: 1
Rx offloads=0x0 Tx offloads=0x0
RX queue: 0
RX desc=256 - RX free threshold=0
TX desc=256 - TX free threshold=32
TX offloads=0x0 - TX RS bit threshold=32
Press enter to exit

Telling cores to stop...
Waiting for lcores to finish...

---------------------- Forward statistics for port 0 ------------------

  RX-packets: 40361          RX-dropped: 0             RX-total: 40361
  TX-packets: 40616          TX-dropped: 0             TX-total: 40616

------------------------------------------------------------------------

+++++++++++++++ Accumulated forward statistics for all ports+++++++++++

  RX-packets: 40361          RX-dropped: 0             RX-total: 40361
  TX-packets: 40616          TX-dropped: 0             TX-total: 40616

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

--

---
 drivers/net/e1000/base/e1000_osdep.h | 2 ++
 drivers/net/e1000/e1000_ethdev.h     | 1 +
 drivers/net/e1000/meson.build        | 6 ------
 3 files changed, 3 insertions(+), 6 deletions(-)
drivers/net/e1000/base/e1000_osdep.h +2 -0
index 94a49f3404..cd90228cef 100644
@@ -34,7 +34,9 @@
 #define DEBUGOUT6(S, args...)   DEBUGOUT(S, ##args)
 #define DEBUGOUT7(S, args...)   DEBUGOUT(S, ##args)
 
+#ifndef UNREFERENCED_PARAMETER
 #define UNREFERENCED_PARAMETER(_p)
+#endif
 #define UNREFERENCED_1PARAMETER(_p)
 #define UNREFERENCED_2PARAMETER(_p, _q)
 #define UNREFERENCED_3PARAMETER(_p, _q, _r)
drivers/net/e1000/e1000_ethdev.h +1 -0
index 3b4d9c3ee6..613b81f030 100644
@@ -6,6 +6,7 @@
 #define _E1000_ETHDEV_H_
 
 #include <stdint.h>
+#include <sys/queue.h>
 
 #include <rte_flow.h>
 #include <rte_time.h>
drivers/net/e1000/meson.build +0 -6
index c5e48c6bc7..296ec25f2c 100644
@@ -1,12 +1,6 @@
 # SPDX-License-Identifier: BSD-3-Clause
 # Copyright(c) 2017 Intel Corporation
 
-if is_windows
-    build = false
-    reason = 'not supported on Windows'
-    subdir_done()
-endif
-
 subdir('base')
 objs = [base_objs]
 
Signature · 1 line
2.30.2
#1 lore raw
Quoted 8 lines · William Tu

This patch enables building the e1000 driver for Windows. I tested using two Windows VM on top of VMware Fusion, creating two e1000 devices with device ID 0x10D3, verifying rx/tx works correctly using dpdk-testpmd.exe rxonly and txonly mode.

Please, Cc: driver maintainers when touching one.
You can pass --to-cmd or --cc-cmd ./devtools/get-maintainer.sh when calling git send-email as suggested in the contributing howto.
https://doc.dpdk.org/guides/contributing/patches.html#sending-patches

Quoted 9 lines

---
Example when running:
PS C:\dpdk> .\build\app\dpdk-testpmd.exe
EAL: Detected CPU lcores: 4
EAL: Detected NUMA nodes: 1
EAL: Multi-process support is requested, but not available.
EAL: WARNING: TSC frequency estimated roughly - clock timings may be less accurate.
EAL: Probe PCI driver: net_e1000_em (8086:10d3) device: 0000:03:00.0 (socket 0)
EAL: Requested device 0000:1b:00.0 cannot be used

Odd to read this, and still see testpmd getting one port afterwards.

Could you enable debug logs?
It will be verbose but let's try with --log-level=*:debug.

Quoted 22 lines

testpmd: create a new mbuf pool <mb_pool_0>: n=171456, size=2176, socket=0
testpmd: preferred mempool ops selected: ring_mp_mc

Warning! port-topology=paired and odd forward ports number, the last port will p air with itself.
Configuring Port 0 (socket 0)
Port 0: 00:50:56:3A:4D:A6
Checking link statuses...
Done
No commandline core given, start packet forwarding
allocation mode: native
Logical Core 1 (socket 0) forwards packets on 1 streams:
RX P=0/Q=0 (socket 0) -> TX P=0/Q=0 (socket 0) peer=02:00:00:00:00:00

io packet forwarding packets/burst=32
nb forwarding cores=1 - nb forwarding ports=1
port 0: RX queue number: 1 Tx queue number: 1
Rx offloads=0x0 Tx offloads=0x0
RX queue: 0
RX desc=256 - RX free threshold=0
TX desc=256 - TX free threshold=32
TX offloads=0x0 - TX RS bit threshold=32

Signature · 1 line
David Marchand
#2 lore raw
Quoted 9 lines · David Marchand
Quoted 7 lines · William Tu

This patch enables building the e1000 driver for Windows. I tested using two Windows VM on top of VMware Fusion, creating two e1000 devices with device ID 0x10D3, verifying rx/tx works correctly using dpdk-testpmd.exe rxonly and txonly mode.

Quoted 3 lines
Quoted 1 line

Please, Cc: driver maintainers when touching one.

And I pressed Send before adding Haiyue... fixed.

Signature · 1 line
David Marchand
author
#3 lore raw
In reply to David Marchand
Quoted 9 lines · David Marchand
Quoted 7 lines · William Tu

This patch enables building the e1000 driver for Windows. I tested using two Windows VM on top of VMware Fusion, creating two e1000 devices with device ID 0x10D3, verifying rx/tx works correctly using dpdk-testpmd.exe rxonly and txonly mode.

Quoted 6 lines
Quoted 1 line

Please, Cc: driver maintainers when touching one.
You can pass --to-cmd or --cc-cmd ./devtools/get-maintainer.sh when calling git send-email as suggested in the contributing howto.
https://doc.dpdk.org/guides/contributing/patches.html#sending-patches

Got it, thanks.

Quoted 12 lines
Quoted 11 lines

---
Example when running:
PS C:\dpdk> .\build\app\dpdk-testpmd.exe
EAL: Detected CPU lcores: 4
EAL: Detected NUMA nodes: 1
EAL: Multi-process support is requested, but not available.
EAL: WARNING: TSC frequency estimated roughly - clock timings may be less accurate.
EAL: Probe PCI driver: net_e1000_em (8086:10d3) device: 0000:03:00.0 (socket 0)
EAL: Requested device 0000:1b:00.0 cannot be used

Quoted 1 line

Odd to read this, and still see testpmd getting one port afterwards.

This is expected. Because I only enable 1 dpdk port (0000:03:00.0) The 0000:1b:00.0 is still running kernel driver. I will mention it in next version.

Thanks
William

#4 lore raw
Quoted 9 lines · William Tu
Quoted 9 lines
Quoted 8 lines

Example when running:
PS C:\dpdk> .\build\app\dpdk-testpmd.exe
EAL: Detected CPU lcores: 4
EAL: Detected NUMA nodes: 1
EAL: Multi-process support is requested, but not available.
EAL: WARNING: TSC frequency estimated roughly - clock timings may be less accurate.
EAL: Probe PCI driver: net_e1000_em (8086:10d3) device: 0000:03:00.0 (socket 0)
EAL: Requested device 0000:1b:00.0 cannot be used

Quoted 4 lines
Quoted 1 line

Odd to read this, and still see testpmd getting one port afterwards.

This is expected. Because I only enable 1 dpdk port (0000:03:00.0) The 0000:1b:00.0 is still running kernel driver. I will mention it in next version.

Ok sorry, I did not notice.
No need to mention, simply start testpmd with -a 0000:03:00.0.

Signature · 1 line
David Marchand
author
#5 lore raw

PATCH v2 1/1 net/e1000: build on Windows

In reply to William Tu

This patch enables building the e1000 driver for Windows. I tested using two Windows VM on top of VMware Fusion, creating two e1000 devices with device ID 0x10D3, verifying rx/tx works correctly using dpdk-testpmd.exe rxonly and txonly mode.

---
A short demo:
https://youtu.be/UZ9hm2jQa2Y

Example when running:
PS C:\dpdk> .\build\app\dpdk-testpmd.exe
EAL: Detected CPU lcores: 4
EAL: Detected NUMA nodes: 1
EAL: Multi-process support is requested, but not available.
EAL: WARNING: TSC frequency estimated roughly - clock timings may be less accurate.
EAL: Probe PCI driver: net_e1000_em (8086:10d3) device: 0000:03:00.0 (socket 0)
EAL: Requested device 0000:1b:00.0 cannot be used
testpmd: create a new mbuf pool <mb_pool_0>: n=171456, size=2176, socket=0
testpmd: preferred mempool ops selected: ring_mp_mc

Warning! port-topology=paired and odd forward ports number, the last port will p air with itself.
Configuring Port 0 (socket 0)
Port 0: 00:50:56:3A:4D:A6
Checking link statuses...
Done
No commandline core given, start packet forwarding
allocation mode: native
Logical Core 1 (socket 0) forwards packets on 1 streams:
RX P=0/Q=0 (socket 0) -> TX P=0/Q=0 (socket 0) peer=02:00:00:00:00:00

io packet forwarding packets/burst=32
nb forwarding cores=1 - nb forwarding ports=1
port 0: RX queue number: 1 Tx queue number: 1
Rx offloads=0x0 Tx offloads=0x0
RX queue: 0
RX desc=256 - RX free threshold=0
TX desc=256 - TX free threshold=32
TX offloads=0x0 - TX RS bit threshold=32
Press enter to exit

Telling cores to stop...
Waiting for lcores to finish...

---------------------- Forward statistics for port 0 ------------------

  RX-packets: 40361          RX-dropped: 0             RX-total: 40361
  TX-packets: 40616          TX-dropped: 0             TX-total: 40616

------------------------------------------------------------------------

+++++++++++++++ Accumulated forward statistics for all ports+++++++++++

  RX-packets: 40361          RX-dropped: 0             RX-total: 40361
  TX-packets: 40616          TX-dropped: 0             TX-total: 40616

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

---
 doc/guides/nics/e1000em.rst            | 13 +++++++++++++
 doc/guides/nics/features/e1000.ini     |  1 +
 doc/guides/rel_notes/release_21_11.rst |  4 ++++
 drivers/net/e1000/base/e1000_osdep.h   |  2 ++
 drivers/net/e1000/e1000_ethdev.h       |  1 +
 drivers/net/e1000/meson.build          |  6 ------
 6 files changed, 21 insertions(+), 6 deletions(-)
doc/guides/nics/e1000em.rst +13 -0
index 041c9a09a3a5..03ae23838bfa 100644
@@ -1,6 +1,8 @@
 ..  SPDX-License-Identifier: BSD-3-Clause
     Copyright(c) 2010-2014 Intel Corporation.
 
+.. include:: <isonum.txt>
+
 Driver for VM Emulated Devices
 ==============================
 
@@ -153,3 +155,14 @@ The following are known limitations:
 #.  Qemu e1000 only supports one interrupt source, so link and Rx interrupt should be exclusive.
 
 #.  Qemu e1000 does not support interrupt auto-clear, application should disable interrupt immediately when woken up.
+
+Windows Configuration
+---------------------
+
+- Follow the :doc:`guide for Windows <../windows_gsg/run_apps>`
+  to setup the basic DPDK environment.
+
+- Identify the Intel\ |reg| Ethernet adapter.
+
+- To load NetUIO driver, follow the steps mentioned in `dpdk-kmods repository
+  <https://git.dpdk.org/dpdk-kmods/tree/windows/netuio/README.rst>`_.
doc/guides/nics/features/e1000.ini +1 -0
index 5af6040e375b..b33f5a86e2e9 100644
@@ -27,6 +27,7 @@ Tx descriptor status = Y
 Basic stats          = Y
 FreeBSD              = Y
 Linux                = Y
+Windows              = Y
 x86-32               = Y
 x86-64               = Y
 
doc/guides/rel_notes/release_21_11.rst +4 -0
index efeffe37a0e2..e4a092e562e3 100644
@@ -73,6 +73,10 @@ New Features
   * Implement support for tunnel offload.
   * Updated HWRM API to version 1.10.2.44
 
+* **Updated Intel e1000 emulated driver.**
+
+  * Added Intel e1000 support on Windows.
+
 * **Updated Intel iavf driver.**
 
   * Added Intel iavf support on Windows.
drivers/net/e1000/base/e1000_osdep.h +2 -0
index 94a49f340446..cd90228cef59 100644
@@ -34,7 +34,9 @@
 #define DEBUGOUT6(S, args...)   DEBUGOUT(S, ##args)
 #define DEBUGOUT7(S, args...)   DEBUGOUT(S, ##args)
 
+#ifndef UNREFERENCED_PARAMETER
 #define UNREFERENCED_PARAMETER(_p)
+#endif
 #define UNREFERENCED_1PARAMETER(_p)
 #define UNREFERENCED_2PARAMETER(_p, _q)
 #define UNREFERENCED_3PARAMETER(_p, _q, _r)
drivers/net/e1000/e1000_ethdev.h +1 -0
index 3b4d9c3ee6f4..613b81f03092 100644
@@ -6,6 +6,7 @@
 #define _E1000_ETHDEV_H_
 
 #include <stdint.h>
+#include <sys/queue.h>
 
 #include <rte_flow.h>
 #include <rte_time.h>
drivers/net/e1000/meson.build +0 -6
index c5e48c6bc7fc..296ec25f2ce7 100644
@@ -1,12 +1,6 @@
 # SPDX-License-Identifier: BSD-3-Clause
 # Copyright(c) 2017 Intel Corporation
 
-if is_windows
-    build = false
-    reason = 'not supported on Windows'
-    subdir_done()
-endif
-
 subdir('base')
 objs = [base_objs]
 
Signature · 1 line
2.33.0.windows.2
Acked-by on v2 1/1
#6 lore raw
Quoted 65 lines

-----Original Message-----
From: William Tu <[email protected]>
Sent: Friday, October 8, 2021 21:54
To: [email protected]
Cc: Kadam, Pallavi <[email protected]>; [email protected]; Wang, Haiyue <[email protected]>
Subject: [PATCH v2] net/e1000: build on Windows

This patch enables building the e1000 driver for Windows. I tested using two Windows VM on top of VMware Fusion, creating two e1000 devices with device ID 0x10D3, verifying rx/tx works correctly using dpdk-testpmd.exe rxonly and txonly mode.

---
A short demo:
https://youtu.be/UZ9hm2jQa2Y

Example when running:
PS C:\dpdk> .\build\app\dpdk-testpmd.exe
EAL: Detected CPU lcores: 4
EAL: Detected NUMA nodes: 1
EAL: Multi-process support is requested, but not available.
EAL: WARNING: TSC frequency estimated roughly - clock timings may be less accurate.
EAL: Probe PCI driver: net_e1000_em (8086:10d3) device: 0000:03:00.0 (socket 0)
EAL: Requested device 0000:1b:00.0 cannot be used
testpmd: create a new mbuf pool <mb_pool_0>: n=171456, size=2176, socket=0
testpmd: preferred mempool ops selected: ring_mp_mc

Warning! port-topology=paired and odd forward ports number, the last port will p air with itself.
Configuring Port 0 (socket 0)
Port 0: 00:50:56:3A:4D:A6
Checking link statuses...
Done
No commandline core given, start packet forwarding
allocation mode: native
Logical Core 1 (socket 0) forwards packets on 1 streams:
RX P=0/Q=0 (socket 0) -> TX P=0/Q=0 (socket 0) peer=02:00:00:00:00:00

io packet forwarding packets/burst=32
nb forwarding cores=1 - nb forwarding ports=1
port 0: RX queue number: 1 Tx queue number: 1
Rx offloads=0x0 Tx offloads=0x0
RX queue: 0
RX desc=256 - RX free threshold=0
TX desc=256 - TX free threshold=32
TX offloads=0x0 - TX RS bit threshold=32
Press enter to exit

Telling cores to stop...
Waiting for lcores to finish...

---------------------- Forward statistics for port 0 ------------------

  RX-packets: 40361          RX-dropped: 0             RX-total: 40361
  TX-packets: 40616          TX-dropped: 0             TX-total: 40616

------------------------------------------------------------------------

+++++++++++++++ Accumulated forward statistics for all ports+++++++++++

  RX-packets: 40361          RX-dropped: 0             RX-total: 40361
  TX-packets: 40616          TX-dropped: 0             TX-total: 40616

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Quoted 9 lines
---
 doc/guides/nics/e1000em.rst            | 13 +++++++++++++
 doc/guides/nics/features/e1000.ini     |  1 +
 doc/guides/rel_notes/release_21_11.rst |  4 ++++
 drivers/net/e1000/base/e1000_osdep.h   |  2 ++
 drivers/net/e1000/e1000_ethdev.h       |  1 +
 drivers/net/e1000/meson.build          |  6 ------
 6 files changed, 21 insertions(+), 6 deletions(-)

LGTM, thanks!

Hi @ Pallavi, What do you think about the patch ?
Your one more ACK will be nice. ;-)

Quoted 3 lines

--
2.33.0.windows.2

#7 lore raw
Quoted 74 lines · Haiyue
Quoted 65 lines

-----Original Message-----
From: William Tu <[email protected]>
Sent: Friday, October 8, 2021 21:54
To: [email protected]
Cc: Kadam, Pallavi <[email protected]>; [email protected]; Wang, Haiyue <[email protected]>
Subject: [PATCH v2] net/e1000: build on Windows

This patch enables building the e1000 driver for Windows. I tested using two Windows VM on top of VMware Fusion, creating two e1000 devices with device ID 0x10D3, verifying rx/tx works correctly using dpdk-testpmd.exe rxonly and txonly mode.

---
A short demo:
https://youtu.be/UZ9hm2jQa2Y

Example when running:
PS C:\dpdk> .\build\app\dpdk-testpmd.exe
EAL: Detected CPU lcores: 4
EAL: Detected NUMA nodes: 1
EAL: Multi-process support is requested, but not available.
EAL: WARNING: TSC frequency estimated roughly - clock timings may be less accurate.
EAL: Probe PCI driver: net_e1000_em (8086:10d3) device: 0000:03:00.0 (socket 0)
EAL: Requested device 0000:1b:00.0 cannot be used
testpmd: create a new mbuf pool <mb_pool_0>: n=171456, size=2176, socket=0
testpmd: preferred mempool ops selected: ring_mp_mc

Warning! port-topology=paired and odd forward ports number, the last port will p air with itself.
Configuring Port 0 (socket 0)
Port 0: 00:50:56:3A:4D:A6
Checking link statuses...
Done
No commandline core given, start packet forwarding
allocation mode: native
Logical Core 1 (socket 0) forwards packets on 1 streams:
RX P=0/Q=0 (socket 0) -> TX P=0/Q=0 (socket 0) peer=02:00:00:00:00:00

io packet forwarding packets/burst=32
nb forwarding cores=1 - nb forwarding ports=1
port 0: RX queue number: 1 Tx queue number: 1
Rx offloads=0x0 Tx offloads=0x0
RX queue: 0
RX desc=256 - RX free threshold=0
TX desc=256 - TX free threshold=32
TX offloads=0x0 - TX RS bit threshold=32
Press enter to exit

Telling cores to stop...
Waiting for lcores to finish...

---------------------- Forward statistics for port 0 ------------------

   RX-packets: 40361          RX-dropped: 0             RX-total: 40361
   TX-packets: 40616          TX-dropped: 0             TX-total: 40616

------------------------------------------------------------------------

+++++++++++++++ Accumulated forward statistics for all ports+++++++++++

   RX-packets: 40361          RX-dropped: 0             RX-total: 40361
   TX-packets: 40616          TX-dropped: 0             TX-total: 40616

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Quoted 9 lines
---
  doc/guides/nics/e1000em.rst            | 13 +++++++++++++
  doc/guides/nics/features/e1000.ini     |  1 +
  doc/guides/rel_notes/release_21_11.rst |  4 ++++
  drivers/net/e1000/base/e1000_osdep.h   |  2 ++
  drivers/net/e1000/e1000_ethdev.h       |  1 +
  drivers/net/e1000/meson.build          |  6 ------
  6 files changed, 21 insertions(+), 6 deletions(-)
Quoted 6 lines

LGTM, thanks!

Hi @ Pallavi, What do you think about the patch ?
Your one more ACK will be nice. ;-)

Yes, code looks good to me. I actually don't have the exact same 1GbE device William is using.

We are trying to figure out some issues with the current 1GbE device that is installed.

So, will acknowledge as soon as we test it on Windows. Thanks,

Quoted 3 lines
Quoted 3 lines

--
2.33.0.windows.2

Tested-by on v2 1/1
#8 lore raw
In reply to William Tu

2021-10-08 06:53 (UTC-0700), William Tu:

Quoted 8 lines

This patch enables building the e1000 driver for Windows. I tested using two Windows VM on top of VMware Fusion, creating two e1000 devices with device ID 0x10D3, verifying rx/tx works correctly using dpdk-testpmd.exe rxonly and txonly mode.

Will there be an accompanying kmods patch to add the device ID to .inf?

With device ID added to netuio, in QEMU with -device e1000e,

Quoted 18 lines
doc/guides/nics/e1000em.rst +3 -0
index 041c9a09a3a5..03ae23838bfa 100644
@@ -1,6 +1,8 @@
 ..  SPDX-License-Identifier: BSD-3-Clause
     Copyright(c) 2010-2014 Intel Corporation.
 
+.. include:: <isonum.txt>
+
 Driver for VM Emulated Devices
 ==============================
 
@@ -153,3 +155,14 @@ The following are known limitations:
 #.  Qemu e1000 only supports one interrupt source, so link and Rx interrupt should be exclusive.
 
 #.  Qemu e1000 does not support interrupt auto-clear, application should disable interrupt immediately when woken up.
+

doc/guides/nics/e1000em.rst The following are known limitations: · line 168

Quoted 10 lines
doc/guides/nics/e1000em.rst +10 -0
+Windows Configuration
+---------------------
+
+- Follow the :doc:`guide for Windows <../windows_gsg/run_apps>`
+  to setup the basic DPDK environment.
+
+- Identify the Intel\ |reg| Ethernet adapter.
+
+- To load NetUIO driver, follow the steps mentioned in `dpdk-kmods repository
+  <https://git.dpdk.org/dpdk-kmods/tree/windows/netuio/README.rst>`_.

There is nothing special about setting up this device on Windows. I think we don't need this part.

author
#9 lore raw
Quoted 32 lines · Dmitry Kozlyuk

2021-10-08 06:53 (UTC-0700), William Tu:

Quoted 8 lines

This patch enables building the e1000 driver for Windows. I tested using two Windows VM on top of VMware Fusion, creating two e1000 devices with device ID 0x10D3, verifying rx/tx works correctly using dpdk-testpmd.exe rxonly and txonly mode.

Will there be an accompanying kmods patch to add the device ID to .inf?

With device ID added to netuio, in QEMU with -device e1000e,

Quoted 16 lines
doc/guides/nics/e1000em.rst +2 -0
index 041c9a09a3a5..03ae23838bfa 100644
@@ -1,6 +1,8 @@
 ..  SPDX-License-Identifier: BSD-3-Clause
     Copyright(c) 2010-2014 Intel Corporation.
 
+.. include:: <isonum.txt>
+
 Driver for VM Emulated Devices
 ==============================
 
@@ -153,3 +155,14 @@ The following are known limitations:
 #.  Qemu e1000 only supports one interrupt source, so link and Rx interrupt should be exclusive.
 
Quoted 15 lines

doc/guides/nics/e1000em.rst The following are known limitations: · line 168

Quoted 12 lines
doc/guides/nics/e1000em.rst +11 -0
 #.  Qemu e1000 does not support interrupt auto-clear, application should disable interrupt immediately when woken up.
+
+Windows Configuration
+---------------------
+
+- Follow the :doc:`guide for Windows <../windows_gsg/run_apps>`
+  to setup the basic DPDK environment.
+
+- Identify the Intel\ |reg| Ethernet adapter.
+
+- To load NetUIO driver, follow the steps mentioned in `dpdk-kmods repository
+  <https://git.dpdk.org/dpdk-kmods/tree/windows/netuio/README.rst>`_.

There is nothing special about setting up this device on Windows. I think we don't need this part.

Thank you. I will add the Device ID to netuio.inf file and remove the above part.
Will wait for Pallavi's test and resend the patch.

Thanks
William

author
#10 lore raw
In reply to Dmitry Kozlyuk
Quoted 5 lines
Quoted 5 lines
doc/guides/nics/e1000em.rst +5 -0
+Windows Configuration
+---------------------
+
+- Follow the :doc:`guide for Windows <../windows_gsg/run_apps>`
+  to setup the basic DPDK environment.
Quoted 8 lines

doc/guides/nics/e1000em.rst The following are known limitations: · line 168

Quoted 5 lines
doc/guides/nics/e1000em.rst +5 -0
+
+- Identify the Intel\ |reg| Ethernet adapter.
+
+- To load NetUIO driver, follow the steps mentioned in `dpdk-kmods repository
+  <https://git.dpdk.org/dpdk-kmods/tree/windows/netuio/README.rst>`_.

There is nothing special about setting up this device on Windows. I think we don't need this part.

Hi Dmitry,

I keep this part in my v3 patch.
However, I think we should move or copy the netuio configuration guide to DPDK repo
https://doc.dpdk.org/guides/windows_gsg/run_apps.html
maybe
4.2: Load the virt2phys driver
4.3: Load the NetUIO driver
4.4: Run helloworld example

Thanks
William

Tested-by Acked-by on v2 1/1
#11 lore raw
In reply to William Tu
Quoted 9 lines · William Tu

This patch enables building the e1000 driver for Windows. I tested using two Windows VM on top of VMware Fusion, creating two e1000 devices with device ID 0x10D3, verifying rx/tx works correctly using dpdk-testpmd.exe rxonly and txonly mode.

---

author
#12 lore raw
Quoted 9 lines · Pallavi
Quoted 6 lines · William Tu

This patch enables building the e1000 driver for Windows. I tested using two Windows VM on top of VMware Fusion, creating two e1000 devices with device ID 0x10D3, verifying rx/tx works correctly using dpdk-testpmd.exe rxonly and txonly mode.

Quoted 7 lines
Quoted 3 lines

---

Thanks!
I'm curious, what device ID are you testing so I can also add it to the netuio.inf.
William

#13 lore raw
Quoted 12 lines · William Tu
Quoted 11 lines · Pallavi
Quoted 9 lines · William Tu

This patch enables building the e1000 driver for Windows. I tested using two Windows VM on top of VMware Fusion, creating two e1000 devices with device ID 0x10D3, verifying rx/tx works correctly using dpdk-testpmd.exe rxonly and txonly mode.

---

Quoted 7 lines
Quoted 3 lines

Thanks!
I'm curious, what device ID are you testing so I can also add it to the netuio.inf.
William

The Device ID is: 1521

Used the following string:

Intel.E1521NC.Description = "Intel(R) I350 Gigabit Network Connection"

Thanks,

Pallavi

author
#14 lore raw

PATCH v3 1/1 net/e1000: build on Windows

In reply to William Tu

This patch enables building the e1000 driver for Windows. I tested using two Windows VM on top of VMware Fusion, creating two e1000 devices with device ID 0x10D3 (8274L), verifying rx/tx works correctly using dpdk-testpmd.exe rxonly and txonly mode.

---
v3:
* Add acked and tested by tags
* @Dmitry: I think it's better keep the doc for people to reference NetUIO setup.
* I will send corresponding netuio device id patch to dpdk-kmods

A short demo:
https://youtu.be/UZ9hm2jQa2Y
Example when running:
PS C:\dpdk> .\build\app\dpdk-testpmd.exe
EAL: Detected CPU lcores: 4
EAL: Detected NUMA nodes: 1
EAL: Multi-process support is requested, but not available.
EAL: WARNING: TSC frequency estimated roughly - clock timings may be less accurate.
EAL: Probe PCI driver: net_e1000_em (8086:10d3) device: 0000:03:00.0 (socket 0)
EAL: Requested device 0000:1b:00.0 cannot be used
testpmd: create a new mbuf pool <mb_pool_0>: n=171456, size=2176, socket=0
testpmd: preferred mempool ops selected: ring_mp_mc

Warning! port-topology=paired and odd forward ports number, the last port will p air with itself.
Configuring Port 0 (socket 0)
Port 0: 00:50:56:3A:4D:A6
Checking link statuses...
Done
No commandline core given, start packet forwarding
allocation mode: native
Logical Core 1 (socket 0) forwards packets on 1 streams:
RX P=0/Q=0 (socket 0) -> TX P=0/Q=0 (socket 0) peer=02:00:00:00:00:00

io packet forwarding packets/burst=32
nb forwarding cores=1 - nb forwarding ports=1
port 0: RX queue number: 1 Tx queue number: 1
Rx offloads=0x0 Tx offloads=0x0
RX queue: 0
RX desc=256 - RX free threshold=0
TX desc=256 - TX free threshold=32
TX offloads=0x0 - TX RS bit threshold=32
Press enter to exit

Telling cores to stop...
Waiting for lcores to finish...

---------------------- Forward statistics for port 0 ------------------

  RX-packets: 40361          RX-dropped: 0             RX-total: 40361
  TX-packets: 40616          TX-dropped: 0             TX-total: 40616

------------------------------------------------------------------------

+++++++++++++++ Accumulated forward statistics for all ports+++++++++++

  RX-packets: 40361          RX-dropped: 0             RX-total: 40361
  TX-packets: 40616          TX-dropped: 0             TX-total: 40616

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

--

---
 doc/guides/nics/e1000em.rst            | 13 +++++++++++++
 doc/guides/nics/features/e1000.ini     |  1 +
 doc/guides/rel_notes/release_21_11.rst |  4 ++++
 drivers/net/e1000/base/e1000_osdep.h   |  2 ++
 drivers/net/e1000/e1000_ethdev.h       |  1 +
 drivers/net/e1000/meson.build          |  6 ------
 6 files changed, 21 insertions(+), 6 deletions(-)
doc/guides/nics/e1000em.rst +13 -0
index 041c9a09a3a5..03ae23838bfa 100644
@@ -1,6 +1,8 @@
 ..  SPDX-License-Identifier: BSD-3-Clause
     Copyright(c) 2010-2014 Intel Corporation.
 
+.. include:: <isonum.txt>
+
 Driver for VM Emulated Devices
 ==============================
 
@@ -153,3 +155,14 @@ The following are known limitations:
 #.  Qemu e1000 only supports one interrupt source, so link and Rx interrupt should be exclusive.
 
 #.  Qemu e1000 does not support interrupt auto-clear, application should disable interrupt immediately when woken up.
+
+Windows Configuration
+---------------------
+
+- Follow the :doc:`guide for Windows <../windows_gsg/run_apps>`
+  to setup the basic DPDK environment.
+
+- Identify the Intel\ |reg| Ethernet adapter.
+
+- To load NetUIO driver, follow the steps mentioned in `dpdk-kmods repository
+  <https://git.dpdk.org/dpdk-kmods/tree/windows/netuio/README.rst>`_.
doc/guides/nics/features/e1000.ini +1 -0
index 5af6040e375b..b33f5a86e2e9 100644
@@ -27,6 +27,7 @@ Tx descriptor status = Y
 Basic stats          = Y
 FreeBSD              = Y
 Linux                = Y
+Windows              = Y
 x86-32               = Y
 x86-64               = Y
 
doc/guides/rel_notes/release_21_11.rst +4 -0
index efeffe37a0e2..e4a092e562e3 100644
@@ -73,6 +73,10 @@ New Features
   * Implement support for tunnel offload.
   * Updated HWRM API to version 1.10.2.44
 
+* **Updated Intel e1000 emulated driver.**
+
+  * Added Intel e1000 support on Windows.
+
 * **Updated Intel iavf driver.**
 
   * Added Intel iavf support on Windows.
drivers/net/e1000/base/e1000_osdep.h +2 -0
index 94a49f340446..cd90228cef59 100644
@@ -34,7 +34,9 @@
 #define DEBUGOUT6(S, args...)   DEBUGOUT(S, ##args)
 #define DEBUGOUT7(S, args...)   DEBUGOUT(S, ##args)
 
+#ifndef UNREFERENCED_PARAMETER
 #define UNREFERENCED_PARAMETER(_p)
+#endif
 #define UNREFERENCED_1PARAMETER(_p)
 #define UNREFERENCED_2PARAMETER(_p, _q)
 #define UNREFERENCED_3PARAMETER(_p, _q, _r)
drivers/net/e1000/e1000_ethdev.h +1 -0
index 3b4d9c3ee6f4..613b81f03092 100644
@@ -6,6 +6,7 @@
 #define _E1000_ETHDEV_H_
 
 #include <stdint.h>
+#include <sys/queue.h>
 
 #include <rte_flow.h>
 #include <rte_time.h>
drivers/net/e1000/meson.build +0 -6
index c5e48c6bc7fc..296ec25f2ce7 100644
@@ -1,12 +1,6 @@
 # SPDX-License-Identifier: BSD-3-Clause
 # Copyright(c) 2017 Intel Corporation
 
-if is_windows
-    build = false
-    reason = 'not supported on Windows'
-    subdir_done()
-endif
-
 subdir('base')
 objs = [base_objs]
 
Signature · 1 line
2.33.0.windows.2
#15 lore raw

2021-10-09 09:31 (UTC-0700), William Tu:

Quoted 3 lines

[...]
* @Dmitry: I think it's better keep the doc for
people to reference NetUIO setup.

I won't insist, especially since Intel is OK with this. I've sent a patch to put the link in Windows GSG so that we won't need to repeat it for each PMD:
http://inbox.dpdk.org/dev/[email protected]/T/#u

#16 lore raw
Quoted 8 lines

-----Original Message-----
From: Dmitry Kozlyuk <[email protected]>
Sent: Sunday, October 10, 2021 01:28
To: William Tu <[email protected]>
Cc: [email protected]; Wang, Haiyue <[email protected]>; Kadam, Pallavi <[email protected]>
Subject: Re: [PATCH v3] net/e1000: build on Windows

2021-10-09 09:31 (UTC-0700), William Tu:

Quoted 8 lines
Quoted 3 lines

[...]
* @Dmitry: I think it's better keep the doc for
people to reference NetUIO setup.

I won't insist, especially since Intel is OK with this. I've sent a patch to put the link in Windows GSG so that we won't need to repeat it for each PMD:
http://inbox.dpdk.org/dev/[email protected]/T/#u

+1, This is better.

For PMD itself, it just need to set 'Windows = Y' in *ini if it supports Windows.

author
#17 lore raw
In reply to William Tu

Hi Thomas,
Can we apply this patch?
Thanks
William

Quoted 178 lines · William Tu

This patch enables building the e1000 driver for Windows. I tested using two Windows VM on top of VMware Fusion, creating two e1000 devices with device ID 0x10D3 (8274L), verifying rx/tx works correctly using dpdk-testpmd.exe rxonly and txonly mode.

---
v3:
* Add acked and tested by tags
* @Dmitry: I think it's better keep the doc for people to reference NetUIO setup.
* I will send corresponding netuio device id patch to dpdk-kmods

A short demo:
https://youtu.be/UZ9hm2jQa2Y
Example when running:
PS C:\dpdk> .\build\app\dpdk-testpmd.exe
EAL: Detected CPU lcores: 4
EAL: Detected NUMA nodes: 1
EAL: Multi-process support is requested, but not available.
EAL: WARNING: TSC frequency estimated roughly - clock timings may be less accurate.
EAL: Probe PCI driver: net_e1000_em (8086:10d3) device: 0000:03:00.0 (socket 0)
EAL: Requested device 0000:1b:00.0 cannot be used
testpmd: create a new mbuf pool <mb_pool_0>: n=171456, size=2176, socket=0
testpmd: preferred mempool ops selected: ring_mp_mc

Warning! port-topology=paired and odd forward ports number, the last port will p air with itself.
Configuring Port 0 (socket 0)
Port 0: 00:50:56:3A:4D:A6
Checking link statuses...
Done
No commandline core given, start packet forwarding
allocation mode: native
Logical Core 1 (socket 0) forwards packets on 1 streams:
RX P=0/Q=0 (socket 0) -> TX P=0/Q=0 (socket 0) peer=02:00:00:00:00:00

io packet forwarding packets/burst=32
nb forwarding cores=1 - nb forwarding ports=1
port 0: RX queue number: 1 Tx queue number: 1
Rx offloads=0x0 Tx offloads=0x0
RX queue: 0
RX desc=256 - RX free threshold=0
TX desc=256 - TX free threshold=32
TX offloads=0x0 - TX RS bit threshold=32
Press enter to exit

Telling cores to stop...
Waiting for lcores to finish...

---------------------- Forward statistics for port 0 ------------------

  RX-packets: 40361          RX-dropped: 0             RX-total: 40361
  TX-packets: 40616          TX-dropped: 0             TX-total: 40616

------------------------------------------------------------------------

+++++++++++++++ Accumulated forward statistics for all ports+++++++++++

  RX-packets: 40361          RX-dropped: 0             RX-total: 40361
  TX-packets: 40616          TX-dropped: 0             TX-total: 40616

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

--

---
 doc/guides/nics/e1000em.rst            | 13 +++++++++++++
 doc/guides/nics/features/e1000.ini     |  1 +
 doc/guides/rel_notes/release_21_11.rst |  4 ++++
 drivers/net/e1000/base/e1000_osdep.h   |  2 ++
 drivers/net/e1000/e1000_ethdev.h       |  1 +
 drivers/net/e1000/meson.build          |  6 ------
 6 files changed, 21 insertions(+), 6 deletions(-)
doc/guides/nics/e1000em.rst +13 -0
index 041c9a09a3a5..03ae23838bfa 100644
@@ -1,6 +1,8 @@
 ..  SPDX-License-Identifier: BSD-3-Clause
     Copyright(c) 2010-2014 Intel Corporation.
 
+.. include:: <isonum.txt>
+
 Driver for VM Emulated Devices
 ==============================
 
@@ -153,3 +155,14 @@ The following are known limitations:
 #.  Qemu e1000 only supports one interrupt source, so link and Rx interrupt should be exclusive.
 
 #.  Qemu e1000 does not support interrupt auto-clear, application should disable interrupt immediately when woken up.
+
+Windows Configuration
+---------------------
+
+- Follow the :doc:`guide for Windows <../windows_gsg/run_apps>`
+  to setup the basic DPDK environment.
+
+- Identify the Intel\ |reg| Ethernet adapter.
+
+- To load NetUIO driver, follow the steps mentioned in `dpdk-kmods repository
+  <https://git.dpdk.org/dpdk-kmods/tree/windows/netuio/README.rst>`_.
doc/guides/nics/features/e1000.ini +1 -0
index 5af6040e375b..b33f5a86e2e9 100644
@@ -27,6 +27,7 @@ Tx descriptor status = Y
 Basic stats          = Y
 FreeBSD              = Y
 Linux                = Y
+Windows              = Y
 x86-32               = Y
 x86-64               = Y
 
doc/guides/rel_notes/release_21_11.rst +4 -0
index efeffe37a0e2..e4a092e562e3 100644
@@ -73,6 +73,10 @@ New Features
   * Implement support for tunnel offload.
   * Updated HWRM API to version 1.10.2.44
 
+* **Updated Intel e1000 emulated driver.**
+
+  * Added Intel e1000 support on Windows.
+
 * **Updated Intel iavf driver.**
 
   * Added Intel iavf support on Windows.
drivers/net/e1000/base/e1000_osdep.h +2 -0
index 94a49f340446..cd90228cef59 100644
@@ -34,7 +34,9 @@
 #define DEBUGOUT6(S, args...)   DEBUGOUT(S, ##args)
 #define DEBUGOUT7(S, args...)   DEBUGOUT(S, ##args)
 
+#ifndef UNREFERENCED_PARAMETER
 #define UNREFERENCED_PARAMETER(_p)
+#endif
 #define UNREFERENCED_1PARAMETER(_p)
 #define UNREFERENCED_2PARAMETER(_p, _q)
 #define UNREFERENCED_3PARAMETER(_p, _q, _r)
drivers/net/e1000/e1000_ethdev.h +1 -0
index 3b4d9c3ee6f4..613b81f03092 100644
@@ -6,6 +6,7 @@
 #define _E1000_ETHDEV_H_
 
 #include <stdint.h>
+#include <sys/queue.h>
 
 #include <rte_flow.h>
 #include <rte_time.h>
drivers/net/e1000/meson.build +0 -7
index c5e48c6bc7fc..296ec25f2ce7 100644
@@ -1,12 +1,6 @@
 # SPDX-License-Identifier: BSD-3-Clause
 # Copyright(c) 2017 Intel Corporation
 
-if is_windows
-    build = false
-    reason = 'not supported on Windows'
-    subdir_done()
-endif
-
 subdir('base')
 objs = [base_objs]
 
--

2.33.0.windows.2

#18 lore raw

19/10/2021 21:05, William Tu:

Quoted 2 lines

Hi Thomas,
Can we apply this patch?

The net driver patches are managed in next-net by Ferruh.

Quoted 12 lines · William Tu
Quoted 11 lines

This patch enables building the e1000 driver for Windows. I tested using two Windows VM on top of VMware Fusion, creating two e1000 devices with device ID 0x10D3 (8274L), verifying rx/tx works correctly using dpdk-testpmd.exe rxonly and txonly mode.

author
#19 lore raw

PATCH v4 1/1 net/e1000: build on Windows

In reply to William Tu

This patch enables building the e1000 driver for Windows. I tested using two Windows VM on top of VMware Fusion, creating two e1000 devices with device ID 0x10D3 (8274L), verifying rx/tx works correctly using dpdk-testpmd.exe rxonly and txonly mode.

---
v4:
* remove the documentation about Windows setup. this is already mention in doc/windows_gsg
v3:
* Add acked and tested by tags
* @Dmitry: I think it's better keep the doc for people to reference NetUIO setup.
* I will send corresponding netuio device id patch to dpdk-kmods
* A short demo:
https://youtu.be/UZ9hm2jQa2Y

---
 doc/guides/nics/features/e1000.ini     | 1 +
 doc/guides/rel_notes/release_21_11.rst | 4 ++++
 drivers/net/e1000/base/e1000_osdep.h   | 2 ++
 drivers/net/e1000/e1000_ethdev.h       | 1 +
 drivers/net/e1000/meson.build          | 6 ------
 5 files changed, 8 insertions(+), 6 deletions(-)
doc/guides/nics/features/e1000.ini +1 -0
index 5af6040e375b..b33f5a86e2e9 100644
@@ -27,6 +27,7 @@ Tx descriptor status = Y
 Basic stats          = Y
 FreeBSD              = Y
 Linux                = Y
+Windows              = Y
 x86-32               = Y
 x86-64               = Y
 
doc/guides/rel_notes/release_21_11.rst +4 -0
index 3362c52a738c..876b5f1886bb 100644
@@ -91,6 +91,10 @@ New Features
   * Implement support for tunnel offload.
   * Updated HWRM API to version 1.10.2.44
 
+* **Updated Intel e1000 emulated driver.**
+
+  * Added Intel e1000 support on Windows.
+
 * **Updated Intel iavf driver.**
 
   * Added Intel iavf support on Windows.
drivers/net/e1000/base/e1000_osdep.h +2 -0
index 94a49f340446..cd90228cef59 100644
@@ -34,7 +34,9 @@
 #define DEBUGOUT6(S, args...)   DEBUGOUT(S, ##args)
 #define DEBUGOUT7(S, args...)   DEBUGOUT(S, ##args)
 
+#ifndef UNREFERENCED_PARAMETER
 #define UNREFERENCED_PARAMETER(_p)
+#endif
 #define UNREFERENCED_1PARAMETER(_p)
 #define UNREFERENCED_2PARAMETER(_p, _q)
 #define UNREFERENCED_3PARAMETER(_p, _q, _r)
drivers/net/e1000/e1000_ethdev.h +1 -0
index 8e10e2777e64..bf0e902991a7 100644
@@ -6,6 +6,7 @@
 #define _E1000_ETHDEV_H_
 
 #include <stdint.h>
+#include <sys/queue.h>
 
 #include <rte_flow.h>
 #include <rte_time.h>
drivers/net/e1000/meson.build +0 -6
index c5e48c6bc7fc..296ec25f2ce7 100644
@@ -1,12 +1,6 @@
 # SPDX-License-Identifier: BSD-3-Clause
 # Copyright(c) 2017 Intel Corporation
 
-if is_windows
-    build = false
-    reason = 'not supported on Windows'
-    subdir_done()
-endif
-
 subdir('base')
 objs = [base_objs]
 
Signature · 1 line
2.33.0.windows.2
Applied
#20 lore raw
Quoted 15 lines

-----Original Message-----
From: dev <[email protected]> On Behalf Of William Tu
Sent: Wednesday, October 20, 2021 11:48 AM
To: [email protected]
Cc: Wang, Haiyue <[email protected]>; Kadam, Pallavi <[email protected]>; Dmitry Kozlyuk <[email protected]>
Subject: [dpdk-dev] [PATCH v4] net/e1000: build on Windows

This patch enables building the e1000 driver for Windows.
I tested using two Windows VM on top of VMware Fusion, creating two e1000 devices with device ID 0x10D3 (8274L), verifying rx/tx works correctly using dpdk-testpmd.exe rxonly and txonly mode.

Quoted 5 lines

Applied to dpdk-next-net-intel.

Thanks
Qi