Windows Plan

DPDK porting on Windows

Status

DPDK 21.08 supports running testpmd and examples with mlx5, i40e, and ice HW, vmxnet3 paravirtual devices in QEMU, or with PCAP virtual devices. It requires yet unsigned kernel-mode drivers to run (except mlx5). Only network PMDs are currently enabled.

Current focus is friction-less consumption by end-users and supporting more HW. Multi-process, and hence dpdk-pdump support is neither available nor scheduled.

Windows draft repository is suspended, all development happens in the upstream:

The DPDK documentation for Windows is updated along with upstream progress.

The PMD-specific documentation should be updated in the common NIC drivers guide.

Roadmap

Features and milestones may be noted here. This is not a commitment but plan of work. This list is obviously neither complete nor guaranteed.

Bringing support for Microsoft Visual Studio on Windows

Starting with release 23.11 integration will begin to formally support the Microsoft Visual Studio toolset. Patches are introduced that incrementally phase in full support of the core DPDK libraries, the DPDK unit tests and drivers.

The following is a draft plan of work targeting the 23.11 release. The plan is subject to change depending on delays and discussions from the review process. Contributions toward this plan from the community are welcome.

meson.build Changes

Meson does not fully abstract away command line arguments to toolchains so an initial series is available that unblocks the use of MSVC. This change is pre-requisite to undertake subsequent steps.

http://patches.dpdk.org/project/dpdk/list/?series=26662

MSVC CI Pipeline Prerequisite

Enablement of the DPDK CI pipeline is fundamental to efficiently progressing porting work for the MSVC toolset. A minimal patch series will be supplied to build the kvargs and telemetry libraries only.

MSVC CI Pipeline Bootstrap

Work will be done to onboard CI pipeline for the MSVC toolset. Initially the pipeline will only guarantee compilation but as additional libraries and tests are ported will also allow execution of the DPDK unit tests.

MSVC EAL porting

EAL is pre-requisite for porting all other libraries, drivers and unit tests. Porting of EAL will be broken down into multiple-patch series to address & decouple from the toolchain intrinsics topic.

Beginning with the DPDK 23.11 release a new option enable_stdatomic will be introduced to allow DPDK toolchain platform combinations to be built with or without C11 stdatomic.h. The use of either the standard atomics or traditional builtin intrinsics will be placed behind a thin macro based abstraction in the rte_ namespace.

Unit Test Library Porting

In addition to EAL there are several libraries required for the basic DPDK unit test harness. Multiple series will be submitted to port the appropriate libraries to allow the harness to be invoked.

Unit Test Enablement

Fundamental unit tests (typically those testing EAL functionality) will be ported to MSVC. For tests that depend only on EAL this is not expected to require code change but is just re-enabling compilation of the tests allowing them to be built and run.

MSVC CI Pipeline Test Enablement

With initial DPDK unit tests building & passing the CI pipeline will be updated to run the unit tests.

Driver Porting

Candidate drivers will be selected from the set currently built with clang. Multiple series will be submitted (probably per-driver) with changes to port to MSVC.

Nearing the 23.11 release timeframe the plan will be reviewed to understand and schedule porting work beyond the 23.11 release.

Kernel Mode Drivers

Concurrent work is in progress by Microsoft to provide functionality by the netuio driver for use by DPDK PMDs in the next release of Windows.

Partners and providers of hardware & PMDs will be able to use the WHQL certification process to sign driver packages containing PMDs that utilize netuio functionality.

For more information visit the following links:

https://learn.microsoft.com/en-us/windows-hardware/drivers/install/whql-release-signature

https://learn.microsoft.com/en-us/previous-versions/windows/hardware/hck/jj124227(v=vs.85)

General Availability

Feature Support

Miscellaneous

Future (unscheduled)