DPDK patches and discussions
 help / color / mirror / Atom feed
* [dpdk-dev] Windows Draft Build
@ 2020-02-08  8:45 Dmitry Kozlyuk
  2020-02-10  5:03 ` Ranjit Menon
  0 siblings, 1 reply; 20+ messages in thread
From: Dmitry Kozlyuk @ 2020-02-08  8:45 UTC (permalink / raw)
  To: dev; +Cc: Pallavi Kadam, Ranjit Menon, Harini Ramakrishnan

[-- Attachment #1: Type: text/plain, Size: 588 bytes --]

Hi,

I'm having trouble building "dpdk.sln" from "windpdk-v18.08-clang" branch of
"dpdk-draft-windows" repository using Visual Studio 2019 Community Edition.
All projects are set up to use some "llvm" toolset. If I install LLVM Build
Tools and switch toolset to Clang-cl, build fails because Platform SDK is not
accessible. I tried to add Platform SDK include paths to Additional Include
Directories, but ended up with multiple errors, indicating incompatibilities
between Windows headers and Clang. Please find screenshots and logs attached.

"Netuio.sln" builds OK.

-- 
Dmitry Kozlyuk

[-- Attachment #2: librte_kvargs_project.png --]
[-- Type: image/png, Size: 37235 bytes --]

[-- Attachment #3: vs2019ce_installer.png --]
[-- Type: image/png, Size: 12837 bytes --]

[-- Attachment #4: librte_kvargs_build.txt --]
[-- Type: text/plain, Size: 40896 bytes --]

1>------ Rebuild All started: Project: librte_kvargs, Configuration: Debug x64 ------
1>In file included from <built-in>:1:
1>Z:\mk\exec-env\windows\..\..\..\lib\librte_eal\windows\rte_override\rte_windows.h(26,10): warning : non-portable path to file '<Windows.h>'; specified path differs in case from file name on disk [-Wnonportable-include-path]
1>In file included from <built-in>:1:
1>In file included from Z:\mk\exec-env\windows\..\..\..\lib\librte_eal\windows\rte_override\rte_windows.h:26:
1>In file included from C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\windows.h:171:
1>In file included from C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\shared\windef.h:24:
1>In file included from C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\shared\minwindef.h:182:
1>In file included from C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winnt.h:105:
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\shared\kernelspecs.h(36,10): warning : non-portable path to file '"driverspecs.h"'; specified path differs in case from file name on disk [-Wnonportable-include-path]
1>In file included from <built-in>:1:
1>In file included from Z:\mk\exec-env\windows\..\..\..\lib\librte_eal\windows\rte_override\rte_windows.h:26:
1>In file included from C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\windows.h:171:
1>In file included from C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\shared\windef.h:24:
1>In file included from C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\shared\minwindef.h:182:
1>In file included from C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winnt.h:198:
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\shared\basetsd.h(322,12): warning : cast to 'void * __ptr32' from smaller integer type 'unsigned long' [-Wint-to-void-pointer-cast]
1>In file included from <built-in>:1:
1>In file included from Z:\mk\exec-env\windows\..\..\..\lib\librte_eal\windows\rte_override\rte_windows.h:26:
1>In file included from C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\windows.h:171:
1>In file included from C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\shared\windef.h:24:
1>In file included from C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\shared\minwindef.h:182:
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winnt.h(2487,1): error : '__C_ASSERT__' declared as an array with a negative size
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winnt.h(193,47): message : expanded from macro 'C_ASSERT'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winnt.h(3245,19): warning : '__cpuidex' is not a recognized builtin; consider including <intrin.h> to access non-builtin intrinsics [-Wignored-pragma-intrinsic]
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winnt.h(3350,19): warning : '_m_prefetchw' is not a recognized builtin; consider including <intrin.h> to access non-builtin intrinsics [-Wignored-pragma-intrinsic]
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winnt.h(3398,19): warning : '__getcallerseflags' is not a recognized builtin; consider including <intrin.h> to access non-builtin intrinsics [-Wignored-pragma-intrinsic]
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winnt.h(3411,19): warning : '__segmentlimit' is not a recognized builtin; consider including <intrin.h> to access non-builtin intrinsics [-Wignored-pragma-intrinsic]
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winnt.h(3424,19): warning : '__readpmc' is not a recognized builtin; consider including <intrin.h> to access non-builtin intrinsics [-Wignored-pragma-intrinsic]
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winnt.h(3471,19): warning : '__movsb' is not a recognized builtin; consider including <intrin.h> to access non-builtin intrinsics [-Wignored-pragma-intrinsic]
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winnt.h(3472,19): warning : '__movsw' is not a recognized builtin; consider including <intrin.h> to access non-builtin intrinsics [-Wignored-pragma-intrinsic]
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winnt.h(3473,19): warning : '__movsd' is not a recognized builtin; consider including <intrin.h> to access non-builtin intrinsics [-Wignored-pragma-intrinsic]
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winnt.h(3474,19): warning : '__movsq' is not a recognized builtin; consider including <intrin.h> to access non-builtin intrinsics [-Wignored-pragma-intrinsic]
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winnt.h(3509,19): warning : '__stosw' is not a recognized builtin; consider including <intrin.h> to access non-builtin intrinsics [-Wignored-pragma-intrinsic]
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winnt.h(3510,19): warning : '__stosd' is not a recognized builtin; consider including <intrin.h> to access non-builtin intrinsics [-Wignored-pragma-intrinsic]
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winnt.h(3511,19): warning : '__stosq' is not a recognized builtin; consider including <intrin.h> to access non-builtin intrinsics [-Wignored-pragma-intrinsic]
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winnt.h(3715,19): warning : '__writegsbyte' is not a recognized builtin; consider including <intrin.h> to access non-builtin intrinsics [-Wignored-pragma-intrinsic]
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winnt.h(3716,19): warning : '__writegsword' is not a recognized builtin; consider including <intrin.h> to access non-builtin intrinsics [-Wignored-pragma-intrinsic]
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winnt.h(3717,19): warning : '__writegsdword' is not a recognized builtin; consider including <intrin.h> to access non-builtin intrinsics [-Wignored-pragma-intrinsic]
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winnt.h(3718,19): warning : '__writegsqword' is not a recognized builtin; consider including <intrin.h> to access non-builtin intrinsics [-Wignored-pragma-intrinsic]
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winnt.h(3886,35): warning : __declspec attribute 'no_init_all' is not supported [-Wignored-attributes]
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winnt.h(49,39): message : expanded from macro 'DECLSPEC_NOINITALL'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winnt.h(8670,10): warning : the current #pragma pack alignment value is modified in the included file [-Wpragma-pack]
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\shared\pshpack4.h(26,9): message : previous '#pragma pack' directive that modifies alignment is here
1>In file included from <built-in>:1:
1>In file included from Z:\mk\exec-env\windows\..\..\..\lib\librte_eal\windows\rte_override\rte_windows.h:26:
1>In file included from C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\windows.h:171:
1>In file included from C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\shared\windef.h:24:
1>In file included from C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\shared\minwindef.h:182:
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winnt.h(8770,10): warning : the current #pragma pack alignment value is modified in the included file [-Wpragma-pack]
1>note: previous '#pragma pack' directive that modifies alignment is here
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winnt.h(9004,10): warning : the current #pragma pack alignment value is modified in the included file [-Wpragma-pack]
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\shared\pshpack4.h(26,9): message : previous '#pragma pack' directive that modifies alignment is here
1>In file included from <built-in>:1:
1>In file included from Z:\mk\exec-env\windows\..\..\..\lib\librte_eal\windows\rte_override\rte_windows.h:26:
1>In file included from C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\windows.h:171:
1>In file included from C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\shared\windef.h:24:
1>In file included from C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\shared\minwindef.h:182:
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winnt.h(9013,10): warning : the current #pragma pack alignment value is modified in the included file [-Wpragma-pack]
1>note: previous '#pragma pack' directive that modifies alignment is here
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winnt.h(16662,10): warning : the current #pragma pack alignment value is modified in the included file [-Wpragma-pack]
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\shared\pshpack4.h(26,9): message : previous '#pragma pack' directive that modifies alignment is here
1>In file included from <built-in>:1:
1>In file included from Z:\mk\exec-env\windows\..\..\..\lib\librte_eal\windows\rte_override\rte_windows.h:26:
1>In file included from C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\windows.h:171:
1>In file included from C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\shared\windef.h:24:
1>In file included from C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\shared\minwindef.h:182:
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winnt.h(16670,10): warning : the current #pragma pack alignment value is modified in the included file [-Wpragma-pack]
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\shared\pshpack2.h(26,9): message : previous '#pragma pack' directive that modifies alignment is here
1>In file included from <built-in>:1:
1>In file included from Z:\mk\exec-env\windows\..\..\..\lib\librte_eal\windows\rte_override\rte_windows.h:26:
1>In file included from C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\windows.h:171:
1>In file included from C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\shared\windef.h:24:
1>In file included from C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\shared\minwindef.h:182:
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winnt.h(16792,10): warning : the current #pragma pack alignment value is modified in the included file [-Wpragma-pack]
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\shared\pshpack4.h(26,9): message : previous '#pragma pack' directive that modifies alignment is here
1>In file included from <built-in>:1:
1>In file included from Z:\mk\exec-env\windows\..\..\..\lib\librte_eal\windows\rte_override\rte_windows.h:26:
1>In file included from C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\windows.h:171:
1>In file included from C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\shared\windef.h:24:
1>In file included from C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\shared\minwindef.h:182:
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winnt.h(17202,10): warning : the current #pragma pack alignment value is modified in the included file [-Wpragma-pack]
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\shared\pshpack2.h(26,9): message : previous '#pragma pack' directive that modifies alignment is here
1>In file included from <built-in>:1:
1>In file included from Z:\mk\exec-env\windows\..\..\..\lib\librte_eal\windows\rte_override\rte_windows.h:26:
1>In file included from C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\windows.h:171:
1>In file included from C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\shared\windef.h:24:
1>In file included from C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\shared\minwindef.h:182:
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winnt.h(17904,10): warning : the current #pragma pack alignment value is modified in the included file [-Wpragma-pack]
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\shared\pshpack4.h(26,9): message : previous '#pragma pack' directive that modifies alignment is here
1>In file included from <built-in>:1:
1>In file included from Z:\mk\exec-env\windows\..\..\..\lib\librte_eal\windows\rte_override\rte_windows.h:26:
1>In file included from C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\windows.h:171:
1>In file included from C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\shared\windef.h:24:
1>In file included from C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\shared\minwindef.h:182:
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winnt.h(18006,10): warning : the current #pragma pack alignment value is modified in the included file [-Wpragma-pack]
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\shared\pshpack8.h(26,9): message : previous '#pragma pack' directive that modifies alignment is here
1>In file included from <built-in>:1:
1>In file included from Z:\mk\exec-env\windows\..\..\..\lib\librte_eal\windows\rte_override\rte_windows.h:26:
1>In file included from C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\windows.h:171:
1>In file included from C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\shared\windef.h:24:
1>In file included from C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\shared\minwindef.h:182:
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winnt.h(18018,10): warning : the current #pragma pack alignment value is modified in the included file [-Wpragma-pack]
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\shared\pshpack4.h(26,9): message : previous '#pragma pack' directive that modifies alignment is here
1>In file included from <built-in>:1:
1>In file included from Z:\mk\exec-env\windows\..\..\..\lib\librte_eal\windows\rte_override\rte_windows.h:26:
1>In file included from C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\windows.h:171:
1>In file included from C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\shared\windef.h:24:
1>In file included from C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\shared\minwindef.h:182:
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winnt.h(18288,10): warning : the current #pragma pack alignment value is modified in the included file [-Wpragma-pack]
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\shared\pshpack1.h(26,9): message : previous '#pragma pack' directive that modifies alignment is here
1>In file included from <built-in>:1:
1>In file included from Z:\mk\exec-env\windows\..\..\..\lib\librte_eal\windows\rte_override\rte_windows.h:26:
1>In file included from C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\windows.h:171:
1>In file included from C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\shared\windef.h:24:
1>In file included from C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\shared\minwindef.h:182:
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winnt.h(18322,10): warning : the current #pragma pack alignment value is modified in the included file [-Wpragma-pack]
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\shared\pshpack4.h(26,9): message : previous '#pragma pack' directive that modifies alignment is here
1>In file included from <built-in>:1:
1>In file included from Z:\mk\exec-env\windows\..\..\..\lib\librte_eal\windows\rte_override\rte_windows.h:26:
1>In file included from C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\windows.h:171:
1>In file included from C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\shared\windef.h:24:
1>In file included from C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\shared\minwindef.h:182:
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winnt.h(18346,10): warning : the current #pragma pack alignment value is modified in the included file [-Wpragma-pack]
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\shared\pshpack1.h(26,9): message : previous '#pragma pack' directive that modifies alignment is here
1>In file included from <built-in>:1:
1>In file included from Z:\mk\exec-env\windows\..\..\..\lib\librte_eal\windows\rte_override\rte_windows.h:26:
1>In file included from C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\windows.h:171:
1>In file included from C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\shared\windef.h:24:
1>In file included from C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\shared\minwindef.h:182:
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winnt.h(18386,10): warning : the current #pragma pack alignment value is modified in the included file [-Wpragma-pack]
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\shared\pshpack4.h(26,9): message : previous '#pragma pack' directive that modifies alignment is here
1>In file included from <built-in>:1:
1>In file included from Z:\mk\exec-env\windows\..\..\..\lib\librte_eal\windows\rte_override\rte_windows.h:26:
1>In file included from C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\windows.h:171:
1>In file included from C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\shared\windef.h:24:
1>In file included from C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\shared\minwindef.h:182:
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winnt.h(18929,10): warning : the current #pragma pack alignment value is modified in the included file [-Wpragma-pack]
1>note: previous '#pragma pack' directive that modifies alignment is here
1>In file included from <built-in>:1:
1>In file included from Z:\mk\exec-env\windows\..\..\..\lib\librte_eal\windows\rte_override\rte_windows.h:26:
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\windows.h(172,10): warning : non-portable path to file '<WinBase.h>'; specified path differs in case from file name on disk [-Wnonportable-include-path]
1>In file included from <built-in>:1:
1>In file included from Z:\mk\exec-env\windows\..\..\..\lib\librte_eal\windows\rte_override\rte_windows.h:26:
1>In file included from C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\windows.h:172:
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winbase.h(9305,5): warning : macro expansion producing 'defined' has undefined behavior [-Wexpansion-to-defined]
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winbase.h(9302,104): message : expanded from macro 'MICROSOFT_WINDOWS_WINBASE_H_DEFINE_INTERLOCKED_CPLUSPLUS_OVERLOADS'
1>In file included from <built-in>:1:
1>In file included from Z:\mk\exec-env\windows\..\..\..\lib\librte_eal\windows\rte_override\rte_windows.h:26:
1>In file included from C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\windows.h:173:
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\wingdi.h(615,10): warning : the current #pragma pack alignment value is modified in the included file [-Wpragma-pack]
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\shared\pshpack1.h(26,9): message : previous '#pragma pack' directive that modifies alignment is here
1>In file included from <built-in>:1:
1>In file included from Z:\mk\exec-env\windows\..\..\..\lib\librte_eal\windows\rte_override\rte_windows.h:26:
1>In file included from C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\windows.h:173:
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\wingdi.h(629,10): warning : the current #pragma pack alignment value is modified in the included file [-Wpragma-pack]
1>note: previous '#pragma pack' directive that modifies alignment is here
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\wingdi.h(932,10): warning : the current #pragma pack alignment value is modified in the included file [-Wpragma-pack]
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\shared\pshpack2.h(26,9): message : previous '#pragma pack' directive that modifies alignment is here
1>In file included from <built-in>:1:
1>In file included from Z:\mk\exec-env\windows\..\..\..\lib\librte_eal\windows\rte_override\rte_windows.h:26:
1>In file included from C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\windows.h:173:
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\wingdi.h(948,10): warning : the current #pragma pack alignment value is modified in the included file [-Wpragma-pack]
1>note: previous '#pragma pack' directive that modifies alignment is here
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\wingdi.h(1049,10): warning : the current #pragma pack alignment value is modified in the included file [-Wpragma-pack]
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\shared\pshpack2.h(26,9): message : previous '#pragma pack' directive that modifies alignment is here
1>In file included from <built-in>:1:
1>In file included from Z:\mk\exec-env\windows\..\..\..\lib\librte_eal\windows\rte_override\rte_windows.h:26:
1>In file included from C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\windows.h:173:
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\wingdi.h(1070,10): warning : the current #pragma pack alignment value is modified in the included file [-Wpragma-pack]
1>note: previous '#pragma pack' directive that modifies alignment is here
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\wingdi.h(1148,10): warning : the current #pragma pack alignment value is modified in the included file [-Wpragma-pack]
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\shared\pshpack4.h(26,9): message : previous '#pragma pack' directive that modifies alignment is here
1>In file included from <built-in>:1:
1>In file included from Z:\mk\exec-env\windows\..\..\..\lib\librte_eal\windows\rte_override\rte_windows.h:26:
1>In file included from C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\windows.h:173:
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\wingdi.h(1214,10): warning : the current #pragma pack alignment value is modified in the included file [-Wpragma-pack]
1>note: previous '#pragma pack' directive that modifies alignment is here
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\wingdi.h(1231,10): warning : the current #pragma pack alignment value is modified in the included file [-Wpragma-pack]
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\shared\pshpack4.h(26,9): message : previous '#pragma pack' directive that modifies alignment is here
1>In file included from <built-in>:1:
1>In file included from Z:\mk\exec-env\windows\..\..\..\lib\librte_eal\windows\rte_override\rte_windows.h:26:
1>In file included from C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\windows.h:173:
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\wingdi.h(1305,10): warning : the current #pragma pack alignment value is modified in the included file [-Wpragma-pack]
1>note: previous '#pragma pack' directive that modifies alignment is here
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\wingdi.h(5266,9): warning : unknown pragma ignored [-Wunknown-pragmas]
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\wingdi.h(5267,9): warning : unknown pragma ignored [-Wunknown-pragmas]
1>In file included from <built-in>:1:
1>In file included from Z:\mk\exec-env\windows\..\..\..\lib\librte_eal\windows\rte_override\rte_windows.h:26:
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\windows.h(174,10): warning : non-portable path to file '<WinUser.h>'; specified path differs in case from file name on disk [-Wnonportable-include-path]
1>In file included from <built-in>:1:
1>In file included from Z:\mk\exec-env\windows\..\..\..\lib\librte_eal\windows\rte_override\rte_windows.h:26:
1>In file included from C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\windows.h:174:
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winuser.h(1180,5): warning : anonymous structs are a Microsoft extension [-Wmicrosoft-anon-tag]
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winuser.h(4899,10): warning : the current #pragma pack alignment value is modified in the included file [-Wpragma-pack]
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\shared\pshpack2.h(26,9): message : previous '#pragma pack' directive that modifies alignment is here
1>In file included from <built-in>:1:
1>In file included from Z:\mk\exec-env\windows\..\..\..\lib\librte_eal\windows\rte_override\rte_windows.h:26:
1>In file included from C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\windows.h:174:
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winuser.h(4983,10): warning : the current #pragma pack alignment value is modified in the included file [-Wpragma-pack]
1>note: previous '#pragma pack' directive that modifies alignment is here
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winuser.h(13552,5): warning : anonymous structs are a Microsoft extension [-Wmicrosoft-anon-tag]
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winuser.h(13557,5): warning : anonymous structs are a Microsoft extension [-Wmicrosoft-anon-tag]
1>In file included from <built-in>:1:
1>In file included from Z:\mk\exec-env\windows\..\..\..\lib\librte_eal\windows\rte_override\rte_windows.h:26:
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\windows.h(176,10): warning : non-portable path to file '<WinNls.h>'; specified path differs in case from file name on disk [-Wnonportable-include-path]
1>In file included from <built-in>:1:
1>In file included from Z:\mk\exec-env\windows\..\..\..\lib\librte_eal\windows\rte_override\rte_windows.h:26:
1>In file included from C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\windows.h:176:
1>In file included from C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winnls.h:1457:
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\stringapiset.h(19,10): warning : non-portable path to file '<WinNls.h>'; specified path differs in case from file name on disk [-Wnonportable-include-path]
1>In file included from <built-in>:1:
1>In file included from Z:\mk\exec-env\windows\..\..\..\lib\librte_eal\windows\rte_override\rte_windows.h:26:
1>In file included from C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\windows.h:180:
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winver.h(18,10): warning : non-portable path to file '<specstrings.h>'; specified path differs in case from file name on disk [-Wnonportable-include-path]
1>In file included from <built-in>:1:
1>In file included from Z:\mk\exec-env\windows\..\..\..\lib\librte_eal\windows\rte_override\rte_windows.h:64:
1>In file included from Z:\mk\exec-env\windows\..\..\..\lib\librte_eal\common\include\rte_tailq.h:19:
1>In file included from C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\ucrt\stdio.h:13:
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\ucrt\corecrt_wstdio.h(1488,5): warning : attribute declaration must precede definition [-Wignored-attributes]
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\ucrt\corecrt.h(1853,17): message : expanded from macro '__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_2_ARGLIST_EX'
1>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.24.28314\include\vcruntime.h(311,55): message : expanded from macro '_CRT_INSECURE_DEPRECATE'
1>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.24.28314\include\vcruntime.h(301,47): message : expanded from macro '_CRT_DEPRECATE_TEXT'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\ucrt\corecrt_wstdio.h(1405,37): message : previous definition is here
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\ucrt\corecrt_wstdio.h(1488,5): warning : attribute declaration must precede definition [-Wignored-attributes]
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\ucrt\corecrt.h(1854,17): message : expanded from macro '__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_2_ARGLIST_EX'
1>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.24.28314\include\vcruntime.h(311,55): message : expanded from macro '_CRT_INSECURE_DEPRECATE'
1>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.24.28314\include\vcruntime.h(301,47): message : expanded from macro '_CRT_DEPRECATE_TEXT'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\ucrt\corecrt_wstdio.h(1207,37): message : previous definition is here
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\ucrt\corecrt_wstdio.h(1497,5): warning : attribute declaration must precede definition [-Wignored-attributes]
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\ucrt\corecrt.h(1849,17): message : expanded from macro '__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_1_ARGLIST_EX'
1>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.24.28314\include\vcruntime.h(311,55): message : expanded from macro '_CRT_INSECURE_DEPRECATE'
1>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.24.28314\include\vcruntime.h(301,47): message : expanded from macro '_CRT_DEPRECATE_TEXT'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\ucrt\corecrt_wstdio.h(1446,37): message : previous definition is here
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\ucrt\corecrt_wstdio.h(1497,5): warning : attribute declaration must precede definition [-Wignored-attributes]
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\ucrt\corecrt.h(1850,17): message : expanded from macro '__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_1_ARGLIST_EX'
1>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.24.28314\include\vcruntime.h(311,55): message : expanded from macro '_CRT_INSECURE_DEPRECATE'
1>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.24.28314\include\vcruntime.h(301,47): message : expanded from macro '_CRT_DEPRECATE_TEXT'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\ucrt\corecrt_wstdio.h(1223,37): message : previous definition is here
1>In file included from <built-in>:1:
1>In file included from Z:\mk\exec-env\windows\..\..\..\lib\librte_eal\windows\rte_override\rte_windows.h:64:
1>In file included from Z:\mk\exec-env\windows\..\..\..\lib\librte_eal\common\include\rte_tailq.h:19:
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\ucrt\stdio.h(1412,16): warning : '_vsnprintf_l' is deprecated: This function or variable may be unsafe. Consider using _vsnprintf_s_l instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. [-Wdeprecated-declarations]
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\ucrt\stdio.h(1378,24): message : '_vsnprintf_l' has been explicitly marked deprecated here
1>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.24.28314\include\vcruntime.h(311,55): message : expanded from macro '_CRT_INSECURE_DEPRECATE'
1>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.24.28314\include\vcruntime.h(301,47): message : expanded from macro '_CRT_DEPRECATE_TEXT'
1>In file included from <built-in>:1:
1>In file included from Z:\mk\exec-env\windows\..\..\..\lib\librte_eal\windows\rte_override\rte_windows.h:64:
1>In file included from Z:\mk\exec-env\windows\..\..\..\lib\librte_eal\common\include\rte_tailq.h:19:
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\ucrt\stdio.h(1788,19): warning : '_vsprintf_l' is deprecated: This function or variable may be unsafe. Consider using _vsprintf_s_l instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. [-Wdeprecated-declarations]
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\ucrt\stdio.h(1449,24): message : '_vsprintf_l' has been explicitly marked deprecated here
1>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.24.28314\include\vcruntime.h(311,55): message : expanded from macro '_CRT_INSECURE_DEPRECATE'
1>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.24.28314\include\vcruntime.h(301,47): message : expanded from macro '_CRT_DEPRECATE_TEXT'
1>In file included from <built-in>:1:
1>In file included from Z:\mk\exec-env\windows\..\..\..\lib\librte_eal\windows\rte_override\rte_windows.h:64:
1>In file included from Z:\mk\exec-env\windows\..\..\..\lib\librte_eal\common\include\rte_tailq.h:19:
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\ucrt\stdio.h(1800,5): warning : attribute declaration must precede definition [-Wignored-attributes]
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\ucrt\corecrt.h(766,5): message : expanded from macro '__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_1_ARGLIST'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\ucrt\corecrt.h(1849,17): message : expanded from macro '__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_1_ARGLIST_EX'
1>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.24.28314\include\vcruntime.h(311,55): message : expanded from macro '_CRT_INSECURE_DEPRECATE'
1>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.24.28314\include\vcruntime.h(301,47): message : expanded from macro '_CRT_DEPRECATE_TEXT'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\ucrt\stdio.h(1774,37): message : previous definition is here
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\ucrt\stdio.h(1980,5): warning : attribute declaration must precede definition [-Wignored-attributes]
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\ucrt\corecrt.h(1895,17): message : expanded from macro '__DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_2_ARGLIST_EX'
1>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.24.28314\include\vcruntime.h(311,55): message : expanded from macro '_CRT_INSECURE_DEPRECATE'
1>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.24.28314\include\vcruntime.h(301,47): message : expanded from macro '_CRT_DEPRECATE_TEXT'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\ucrt\stdio.h(1961,37): message : previous definition is here
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\ucrt\stdio.h(1980,5): warning : attribute declaration must precede definition [-Wignored-attributes]
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\ucrt\corecrt.h(1896,17): message : expanded from macro '__DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_2_ARGLIST_EX'
1>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.24.28314\include\vcruntime.h(311,55): message : expanded from macro '_CRT_INSECURE_DEPRECATE'
1>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.24.28314\include\vcruntime.h(301,47): message : expanded from macro '_CRT_DEPRECATE_TEXT'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\ucrt\stdio.h(1400,37): message : previous definition is here
1>In file included from <built-in>:1:
1>In file included from Z:\mk\exec-env\windows\..\..\..\lib\librte_eal\windows\rte_override\rte_windows.h:64:
1>In file included from Z:\mk\exec-env\windows\..\..\..\lib\librte_eal\common\include\rte_tailq.h:20:
1>In file included from Z:\mk\exec-env\windows\..\..\..\lib\librte_eal\windows\rte_override\rte_debug.h:13:
1>In file included from Z:\mk\exec-env\windows\..\..\..\lib\librte_eal\common\../common/include/rte_debug.h:17:
1>In file included from Z:\mk\exec-env\windows\..\..\..\lib\librte_eal\common\include/rte_log.h:25:
1>In file included from Z:\mk\exec-env\windows\..\..\..\lib\librte_eal\windows\rte_override\rte_common.h:18:
1>In file included from Z:\mk\exec-env\windows\..\..\..\lib\librte_eal\common\../common/include/rte_common.h:25:
1>Z:\mk\exec-env\windows\..\..\..\lib\librte_eal\windows\rte_override\rte_config.h(259,32): warning : extra tokens at end of #undef directive [-Wextra-tokens]
1>Z:\mk\exec-env\windows\..\..\..\lib\librte_eal\windows\rte_override\rte_config.h(260,31): warning : extra tokens at end of #undef directive [-Wextra-tokens]
1>In file included from <built-in>:1:
1>In file included from Z:\mk\exec-env\windows\..\..\..\lib\librte_eal\windows\rte_override\rte_windows.h:64:
1>In file included from Z:\mk\exec-env\windows\..\..\..\lib\librte_eal\common\include\rte_tailq.h:20:
1>In file included from Z:\mk\exec-env\windows\..\..\..\lib\librte_eal\windows\rte_override\rte_debug.h:13:
1>In file included from Z:\mk\exec-env\windows\..\..\..\lib\librte_eal\common\../common/include/rte_debug.h:17:
1>In file included from Z:\mk\exec-env\windows\..\..\..\lib\librte_eal\common\include/rte_log.h:26:
1>Z:\mk\exec-env\windows\..\..\..\lib\librte_eal\windows\rte_override\rte_config.h(259,32): warning : extra tokens at end of #undef directive [-Wextra-tokens]
1>Z:\mk\exec-env\windows\..\..\..\lib\librte_eal\windows\rte_override\rte_config.h(260,31): warning : extra tokens at end of #undef directive [-Wextra-tokens]
1>In file included from <built-in>:1:
1>Z:\mk\exec-env\windows\..\..\..\lib\librte_eal\windows\rte_override\rte_windows.h(65,26): warning : extra tokens at end of #ifdef directive [-Wextra-tokens]
1>Z:\mk\exec-env\windows\..\..\..\lib\librte_eal\windows\rte_override\rte_windows.h(66,26): warning : extra tokens at end of #undef directive [-Wextra-tokens]
1>In file included from <built-in>:1:
1>In file included from Z:\mk\exec-env\windows\..\..\..\lib\librte_eal\windows\rte_override\rte_windows.h:82:
1>In file included from Z:\mk\exec-env\windows\..\..\..\lib\librte_eal\common\include\rte_bus.h:53:
1>In file included from Z:\mk\exec-env\windows\..\..\..\lib\librte_eal\common\include\rte_dev.h:23:
1>Z:\mk\exec-env\windows\..\..\..\lib\librte_eal\windows\rte_override\rte_config.h(259,32): warning : extra tokens at end of #undef directive [-Wextra-tokens]
1>Z:\mk\exec-env\windows\..\..\..\lib\librte_eal\windows\rte_override\rte_config.h(260,31): warning : extra tokens at end of #undef directive [-Wextra-tokens]
1>In file included from <built-in>:1:
1>Z:\mk\exec-env\windows\..\..\..\lib\librte_eal\windows\rte_override\rte_windows.h(83,24): warning : extra tokens at end of #ifdef directive [-Wextra-tokens]
1>Z:\mk\exec-env\windows\..\..\..\lib\librte_eal\windows\rte_override\rte_windows.h(84,24): warning : extra tokens at end of #undef directive [-Wextra-tokens]
1>In file included from <built-in>:1:
1>In file included from Z:\mk\exec-env\windows\..\..\..\lib\librte_eal\windows\rte_override\rte_windows.h:186:
1>Z:\mk\exec-env\windows\..\..\..\lib\librte_eal\windows\rte_override/rte_config.h(259,32): warning : extra tokens at end of #undef directive [-Wextra-tokens]
1>Z:\mk\exec-env\windows\..\..\..\lib\librte_eal\windows\rte_override/rte_config.h(260,31): warning : extra tokens at end of #undef directive [-Wextra-tokens]
1>In file included from <built-in>:1:
1>In file included from Z:\mk\exec-env\windows\..\..\..\lib\librte_eal\windows\rte_override\rte_windows.h:196:
1>In file included from C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\ucrt\time.h:13:
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\ucrt\corecrt_wtime.h(188,20): warning : '_wctime64' is deprecated: This function or variable may be unsafe. Consider using _wctime64_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. [-Wdeprecated-declarations]
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\ucrt\corecrt_wtime.h(103,16): message : '_wctime64' has been explicitly marked deprecated here
1>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.24.28314\include\vcruntime.h(311,55): message : expanded from macro '_CRT_INSECURE_DEPRECATE'
1>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.24.28314\include\vcruntime.h(301,47): message : expanded from macro '_CRT_DEPRECATE_TEXT'
1><built-in>(1,10): warning : the current #pragma pack alignment value is modified in the included file [-Wpragma-pack]
1>Z:\mk\exec-env\windows\..\..\..\lib\librte_eal\windows\rte_override\rte_windows.h(169,9): message : previous '#pragma pack' directive that modifies alignment is here
1>Done building project "librte_kvargs.vcxproj" -- FAILED.
========== Rebuild All: 0 succeeded, 1 failed, 0 skipped ==========

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [dpdk-dev] Windows Draft Build
  2020-02-08  8:45 [dpdk-dev] Windows Draft Build Dmitry Kozlyuk
@ 2020-02-10  5:03 ` Ranjit Menon
  2020-02-10  6:14   ` Dmitry Kozlyuk
  0 siblings, 1 reply; 20+ messages in thread
From: Ranjit Menon @ 2020-02-10  5:03 UTC (permalink / raw)
  To: Dmitry Kozlyuk; +Cc: Pallavi Kadam, Harini Ramakrishnan, dev

On 2/8/2020 12:45 AM, Dmitry Kozlyuk wrote:
> Hi,
>
> I'm having trouble building "dpdk.sln" from "windpdk-v18.08-clang" branch of
> "dpdk-draft-windows" repository using Visual Studio 2019 Community Edition.
> All projects are set up to use some "llvm" toolset. If I install LLVM Build
> Tools and switch toolset to Clang-cl, build fails because Platform SDK is not
> accessible. I tried to add Platform SDK include paths to Additional Include
> Directories, but ended up with multiple errors, indicating incompatibilities
> between Windows headers and Clang. Please find screenshots and logs attached.
>
> "Netuio.sln" builds OK.
>
Dmitry...
Did you install the LLVM toolchain for VStudio:
https://marketplace.visualstudio.com/items?itemName=LLVMExtensions.llvm-toolchain

You will need to ensure VS is closed before installing it.
It says it supports VS2017, but it will also work with VS2019, if VS2017 is already installed.

ranjit m.



^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [dpdk-dev] Windows Draft Build
  2020-02-10  5:03 ` Ranjit Menon
@ 2020-02-10  6:14   ` Dmitry Kozlyuk
  2020-02-17  1:14     ` Dmitry Kozlyuk
  0 siblings, 1 reply; 20+ messages in thread
From: Dmitry Kozlyuk @ 2020-02-10  6:14 UTC (permalink / raw)
  To: Ranjit Menon; +Cc: Pallavi Kadam, Harini Ramakrishnan, dev

> Did you install the LLVM toolchain for VStudio:
> https://marketplace.visualstudio.com/items?itemName=LLVMExtensions.llvm-toolchain
> 
> You will need to ensure VS is closed before installing it.
> It says it supports VS2017, but it will also work with VS2019, if VS2017 is already installed.

Thanks Ranjit! Wouldn't have guessed I need VS2017 extension
for VS2019 development. "Dpdk.sln" builds OK, will try launching sample apps
a bit later. I'm planning to use QEMU and virtio PMD (modern interface,
because legacy uses PIO, which is not implemented by netuio) by adding a
project similar to existing "librte_pmd_i40e".

-- 
Dmitry Kozlyuk

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [dpdk-dev] Windows Draft Build
  2020-02-10  6:14   ` Dmitry Kozlyuk
@ 2020-02-17  1:14     ` Dmitry Kozlyuk
  2020-02-18 21:44       ` Ranjit Menon
  0 siblings, 1 reply; 20+ messages in thread
From: Dmitry Kozlyuk @ 2020-02-17  1:14 UTC (permalink / raw)
  To: Ranjit Menon; +Cc: Pallavi Kadam, Harini Ramakrishnan, dev

Hi,

> "Dpdk.sln" builds OK, will try launching sample apps
> a bit later.

Netuio driver consistently fails to install on Windows 10 in QEMU with
virtio-net (modern interface). Described below is my attempt to install the
driver from clean "windpdk-v18.08-clang" branch of "dpdk-draft-windows" repo.
The only change is hardware ID in INF file. What am I doing wrong here?

1. QEMU version: 4.2.0

QEMU command line:

    qemu-system-x86_64 \
        -enable-kvm \
        -cpu host -smp 'cores=4,sockets=1,threads=1' \
        -m 6G \
        -drive "file=$disk,format=qcow2" \
        -nic "user,id=winnet,model=e1000,smb=$HOME/src/dpdk" \
        -netdev 'socket,listen=:10000,id=dp0' -device 'virtio-net-pci,disable-modern=off,disable-legacy=on,netdev=dp0' \
        -netdev 'socket,listen=:10001,id=dp1' -device 'virtio-net-pci,disable-modern=off,disable-legacy=on,netdev=dp1' \
        \
        -vga qxl


2. Loading unsigned drivers is enabled as follows:

     Microsoft Windows [Version 10.0.18363.418]
     (c) 2019 Microsoft Corporation. All rights reserved.

     Z:\>bcdedit.exe -set loadoptions DISABLE_INTEGRITY_CHECKS
     The operation completed successfully.

     Z:\>bcdedit.exe -set TESTSIGNING ON
     The operation completed successfully.

     Z:\>shutdown -r -t 0

After that, the desktop message shows:

     Test Mode
     Windows 10 Pro
     Build 18362.19h1_release.190318-1202

Including this step FTR, it works for other drivers.


3. Device status (no conflicting drivers):

     The drivers for this device are not installed. (Code 28)

     There are no compatible drivers for this device.


     To find a driver for this device, click Update Driver.

Device event log (note the hardware ID part):

     Device PCI\VEN_1AF4&DEV_1041&SUBSYS_11001AF4&REV_01\3&13c0b0c5&0&20
     requires further installation.


4. INF file is modified to include corresponding hardware ID:

diff --git a/kernel/windows/netuio/netuio.inf b/kernel/windows/netuio/netuio.inf
index b1696cc50..b6fd2c798 100644
--- a/kernel/windows/netuio/netuio.inf
+++ b/kernel/windows/netuio/netuio.inf
@@ -55,6 +55,7 @@ DriverVer=
 %F158B.netuio.Description%=netuio_Device, PCI\VEN_8086&DEV_158B   ; I40E_DEV_ID_25G_SFP28
 %F37D0.netuio.Description%=netuio_Device, PCI\VEN_8086&DEV_37D0
 %F153B.netuio.Description%=netuio_Device, PCI\VEN_8086&DEV_153B
+%virtio.netuio.Description%=netuio_Device, PCI\VEN_1AF4&DEV_1041&SUBSYS_11001AF4&REV_01
 
 [netuio_Device.NT]
 CopyFiles=Drivers_Dir
@@ -121,5 +122,6 @@ F158A.netuio.Description = "DPDK netUIO for Intel(R) Ethernet Network Adapter XX
 F158B.netuio.Description = "DPDK netUIO for Intel(R) Ethernet Network Adapter XXV710-DA1"
 F37D0.netuio.Description = "DPDK netUIO for Intel(R) Ethernet Connection X722"
 F153B.netuio.Description = "DPDK netUIO for Intel(R) Ethernet Connection I217-V"
+virtio.netuio.Description = "DPDK netUIO for virtio-net (modern)"
 netuio.DeviceDesc = "netuio Device"
 netuio.SVCDESC = "netuio Service"


5. Installation command fails after waiting for several minutes:

     Z:\>pnputil /add-driver Z:\windows\x64\Debug\netuio\netuio\netuio.inf /install
     Microsoft PnP Utility

     Adding driver package:  netuio.inf
     Driver package added successfully.
     Published Name:         oem2.inf
     Unable to install driver package: This operation returned because the timeout period expired.

     Total driver packages:  1
     Added driver packages:  0

     Z:\>

Please find "C:\Windows\INF\setupapi.dev.log" attached as "clean_setupapi.dev.log".
Using devcon.exe from DDK yields similar result and log.

I also tried to add event tracing to the driver, but the driver doesn't even
get loaded, that is, DriverEntry is never called, so the cause shouldn't be
in driver code.


> I'm planning to use QEMU and virtio PMD (modern interface,
> because legacy uses PIO, which is not implemented by netuio) by adding a
> project similar to existing "librte_pmd_i40e".

Also tried doing this, attaching patches. Got the same result.

I start every new attempt to install a driver variant from clean system
restored from disk snapshot. "Userpci" driver from my port installs and binds
OK, so this is not an QEMU/Windows incompatibility issue.

-- 
Dmitry Kozlyuk

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [dpdk-dev] Windows Draft Build
  2020-02-17  1:14     ` Dmitry Kozlyuk
@ 2020-02-18 21:44       ` Ranjit Menon
  2020-02-25  2:37         ` Dmitry Kozlyuk
  0 siblings, 1 reply; 20+ messages in thread
From: Ranjit Menon @ 2020-02-18 21:44 UTC (permalink / raw)
  To: Dmitry Kozlyuk; +Cc: Pallavi Kadam, Harini Ramakrishnan, dev

On 2/16/2020 5:14 PM, Dmitry Kozlyuk wrote:
> Hi,
>
> > "Dpdk.sln" builds OK, will try launching sample apps
> > a bit later.
>
> Netuio driver consistently fails to install on Windows 10 in QEMU with
> virtio-net (modern interface). Described below is my attempt to install the
> driver from clean "windpdk-v18.08-clang" branch of "dpdk-draft-windows" repo.
> The only change is hardware ID in INF file. What am I doing wrong here?
>
> 1. QEMU version: 4.2.0
>
> QEMU command line:
>
>      qemu-system-x86_64 \
>          -enable-kvm \
>          -cpu host -smp 'cores=4,sockets=1,threads=1' \
>          -m 6G \
>          -drive "file=$disk,format=qcow2" \
>          -nic "user,id=winnet,model=e1000,smb=$HOME/src/dpdk" \
>          -netdev 'socket,listen=:10000,id=dp0' -device 'virtio-net-pci,disable-modern=off,disable-legacy=on,netdev=dp0' \
>          -netdev 'socket,listen=:10001,id=dp1' -device 'virtio-net-pci,disable-modern=off,disable-legacy=on,netdev=dp1' \
>          \
>          -vga qxl
>
>
> 2. Loading unsigned drivers is enabled as follows:
>
>       Microsoft Windows [Version 10.0.18363.418]
>       (c) 2019 Microsoft Corporation. All rights reserved.
>
>       Z:\>bcdedit.exe -set loadoptions DISABLE_INTEGRITY_CHECKS
>       The operation completed successfully.
>
>       Z:\>bcdedit.exe -set TESTSIGNING ON
>       The operation completed successfully.
>
>       Z:\>shutdown -r -t 0
>
> After that, the desktop message shows:
>
>       Test Mode
>       Windows 10 Pro
>       Build 18362.19h1_release.190318-1202
>
> Including this step FTR, it works for other drivers.
>
>
> 3. Device status (no conflicting drivers):
>
>       The drivers for this device are not installed. (Code 28)
>
>       There are no compatible drivers for this device.
>
>
>       To find a driver for this device, click Update Driver.
>
> Device event log (note the hardware ID part):
>
>       Device PCI\VEN_1AF4&DEV_1041&SUBSYS_11001AF4&REV_01\3&13c0b0c5&0&20
>       requires further installation.
>
>
> 4. INF file is modified to include corresponding hardware ID:
>
> diff --git a/kernel/windows/netuio/netuio.inf b/kernel/windows/netuio/netuio.inf
> index b1696cc50..b6fd2c798 100644
> --- a/kernel/windows/netuio/netuio.inf
> +++ b/kernel/windows/netuio/netuio.inf
> @@ -55,6 +55,7 @@ DriverVer=
>   %F158B.netuio.Description%=netuio_Device, PCI\VEN_8086&DEV_158B   ; I40E_DEV_ID_25G_SFP28
>   %F37D0.netuio.Description%=netuio_Device, PCI\VEN_8086&DEV_37D0
>   %F153B.netuio.Description%=netuio_Device, PCI\VEN_8086&DEV_153B
> +%virtio.netuio.Description%=netuio_Device, PCI\VEN_1AF4&DEV_1041&SUBSYS_11001AF4&REV_01
>
>   [netuio_Device.NT]
>   CopyFiles=Drivers_Dir
> @@ -121,5 +122,6 @@ F158A.netuio.Description = "DPDK netUIO for Intel(R) Ethernet Network Adapter XX
>   F158B.netuio.Description = "DPDK netUIO for Intel(R) Ethernet Network Adapter XXV710-DA1"
>   F37D0.netuio.Description = "DPDK netUIO for Intel(R) Ethernet Connection X722"
>   F153B.netuio.Description = "DPDK netUIO for Intel(R) Ethernet Connection I217-V"
> +virtio.netuio.Description = "DPDK netUIO for virtio-net (modern)"
>   netuio.DeviceDesc = "netuio Device"
>   netuio.SVCDESC = "netuio Service"
>
>
> 5. Installation command fails after waiting for several minutes:
>
>       Z:\>pnputil /add-driver Z:\windows\x64\Debug\netuio\netuio\netuio.inf /install
>       Microsoft PnP Utility
>
>       Adding driver package:  netuio.inf
>       Driver package added successfully.
>       Published Name:         oem2.inf
>       Unable to install driver package: This operation returned because the timeout period expired.
>
>       Total driver packages:  1
>       Added driver packages:  0
>
>       Z:\>
>
> Please find "C:\Windows\INF\setupapi.dev.log" attached as "clean_setupapi.dev.log".
> Using devcon.exe from DDK yields similar result and log.
>
> I also tried to add event tracing to the driver, but the driver doesn't even
> get loaded, that is, DriverEntry is never called, so the cause shouldn't be
> in driver code.
>
>
> > I'm planning to use QEMU and virtio PMD (modern interface,
> > because legacy uses PIO, which is not implemented by netuio) by adding a
> > project similar to existing "librte_pmd_i40e".
>
> Also tried doing this, attaching patches. Got the same result.
>
> I start every new attempt to install a driver variant from clean system
> restored from disk snapshot. "Userpci" driver from my port installs and binds
> OK, so this is not an QEMU/Windows incompatibility issue.
>
Oh boy! If DriverEntry() is not being called, the loader is finding something wrong and is unable to load the driver.

@Harini: Can Jeffrey (@MS) help here?

thanks,

Ranjit



^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [dpdk-dev] Windows Draft Build
  2020-02-18 21:44       ` Ranjit Menon
@ 2020-02-25  2:37         ` Dmitry Kozlyuk
  2020-02-25  9:06           ` Ranjit Menon
  0 siblings, 1 reply; 20+ messages in thread
From: Dmitry Kozlyuk @ 2020-02-25  2:37 UTC (permalink / raw)
  To: Ranjit Menon; +Cc: Pallavi Kadam, Harini Ramakrishnan, dev

> Oh boy! If DriverEntry() is not being called, the loader is finding something wrong and is unable to load the driver.
> 
> @Harini: Can Jeffrey (@MS) help here?

By trial and error I determined that changing device class from "Net" to a
custom one fixes the issue (see attached patch), root cause is still unknown.

From this point, running virtio PMD is blocked by lack of multi-BAR support
in NETUIO, which is a separate concern, outside of scope of this thread.

-- 
Dmitry Kozlyuk

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [dpdk-dev] Windows Draft Build
  2020-02-25  2:37         ` Dmitry Kozlyuk
@ 2020-02-25  9:06           ` Ranjit Menon
  2020-02-26  6:22             ` Dmitry Kozlyuk
  0 siblings, 1 reply; 20+ messages in thread
From: Ranjit Menon @ 2020-02-25  9:06 UTC (permalink / raw)
  To: Dmitry Kozlyuk
  Cc: Pallavi Kadam, Harini Ramakrishnan, dev, Narcisa Ana Maria Vasile

On 2/24/2020 6:37 PM, Dmitry Kozlyuk wrote:
> > Oh boy! If DriverEntry() is not being called, the loader is finding something wrong and is unable to load the driver.
> >
> > @Harini: Can Jeffrey (@MS) help here?
>
> By trial and error I determined that changing device class from "Net" to a
> custom one fixes the issue (see attached patch), root cause is still unknown.
>
>  From this point, running virtio PMD is blocked by lack of multi-BAR support
> in NETUIO, which is a separate concern, outside of scope of this thread.
>
Dmitry...
This is a very interesting find. Will this change to a custom class allow the driver to load in the native (bare-metal) case, too?
Also, Naty (Narcisa) has a patch for multi-BAR support, that we (Intel) were not able to successfully use...but it's working for her.
If you'd like to try it out, she can send it to you.

ranjit m.



^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [dpdk-dev] Windows Draft Build
  2020-02-25  9:06           ` Ranjit Menon
@ 2020-02-26  6:22             ` Dmitry Kozlyuk
  2020-02-27  4:11               ` Dmitry Kozlyuk
  0 siblings, 1 reply; 20+ messages in thread
From: Dmitry Kozlyuk @ 2020-02-26  6:22 UTC (permalink / raw)
  To: Ranjit Menon
  Cc: Pallavi Kadam, Harini Ramakrishnan, dev, Narcisa Ana Maria Vasile

Hi Ranjit,

> This is a very interesting find. Will this change to a custom class allow the driver to load in the native (bare-metal) case, too?

I don't have a DPDK-compatible hardware NIC right now, so I can't perform a
complete test. However, I was able to successfully install netUIO with
multi-BAR patches and custom class for QLogic BCM5706C 1GbE (bnx2 family,
hardware ID PCI\VEN_14E4&DEV_164A&SUBSYS_3070103C&REV_02) on bare-metal
Windows 10. Thus, installation and multi-BAR discovery works at least for
some hardware (can't tell for multi-BAR mapping).

-- 
Dmitry Kozlyuk

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [dpdk-dev] Windows Draft Build
  2020-02-26  6:22             ` Dmitry Kozlyuk
@ 2020-02-27  4:11               ` Dmitry Kozlyuk
  2020-02-27 15:25                 ` William Tu
  2020-02-28  6:07                 ` [dpdk-dev] [RFC PATCH 0/5] virtio-net support for Windows draft Dmitry Kozlyuk
  0 siblings, 2 replies; 20+ messages in thread
From: Dmitry Kozlyuk @ 2020-02-27  4:11 UTC (permalink / raw)
  To: Ranjit Menon
  Cc: Pallavi Kadam, Harini Ramakrishnan, dev, Narcisa Ana Maria Vasile

Finally managed to run l2fwd with virtio PMD. Providing details as promised.


1. For some reason, when l2fwd is running, virtual screen stops updating. The
system itself is NOT frozen: l2fwd forwards packets, processes can be
launched using QEMU guest agent, input is received and processed. Since this
doesn't happen with different driver and ported upstream DPDK, there is
obviously a software bug either in netUIO or in draft DPDK, not in QEMU.


2. Testing setup

Schematically:

  +-------------------+  +-------------------+  +-------------------+
  | Linux guest Alice |  | Windows guest     |  | Linux guest Bob   |
  |                   |  |                   |  |                   |
  | 172.16.0.1/24     |  |     __l2fwd__     |  | 172.16.0.2/24     |
  | 02:00:ac:10:00:01 |  |    /         \    |  | 02:00:ac:10:00:02 |
  |              ens4 |  | 00:04.0   00:05.0 |  | ens4              |
  +-------------------+  +-------------------+  +-------------------+
  | QEMU           dp |  | dp0    QEMU   dp1 |  | dp           QEMU |
  +-------------------+  +-------------------+  +-------------------+
              connect      listen     listen      connect
              :10000       :10000     :10001      :10001
  Linux host      \___________/           \_________/

Windows VM (Windows 10 Pro):

qemu-system-x86_64 \
    -enable-kvm -cpu host -smp 'cores=4,sockets=1,threads=1' -m 6G -drive "file=$disk,format=qcow2" \
    -netdev 'socket,listen=:10000,id=dp0' -device 'virtio-net-pci,disable-modern=off,disable-legacy=on,netdev=dp0' \
    -netdev 'socket,listen=:10001,id=dp1' -device 'virtio-net-pci,disable-modern=off,disable-legacy=on,netdev=dp1'

Linux VM "Alice" (Debian 10):

qemu-system-x86_64 \
    -enable-kvm -cpu host -smp 'cores=2,sockets=1,threads=1' -m 1G drive "file=$disk,format=qcow2" \
    -netdev "socket,connect=:10000,id=dp" -device 'virtio-net-pci,disable-modern=off,disable-legacy=on,netdev=dp'

Linux VM "Bob" (Debian 10):

qemu-system-x86_64 \
    -enable-kvm -cpu host -smp 'cores=2,sockets=1,threads=1' -m 1G drive "file=$disk,format=qcow2" \
    -netdev "socket,connect=:10001,id=dp" -device 'virtio-net-pci,disable-modern=off,disable-legacy=on,netdev=dp'

(Note: non-essential QEMU options omitted, like management NIC).

Driver: netUIO + multi-BAR patches from Narcisa + virtio HW ID patch.
DPDK: windpdk-v18.08-clang + PCI patch + patches for virtio.

Endpoint setup:

root@alice# ip link set ens4 address 02:00:ac:10:00:01
root@alice# ip address add 172.16.0.1/24 dev ens4
root@alice# ip link set ens4 up

root@bob# ip link set ens4 address 02:00:ac:10:00:02
root@bob# ip address add 172.16.0.2/24 dev ens4
root@bob# ip link set ens4 up

DUT setup:

Z:\dpdk\x64\Debug\netuio\netuio> pnputil /add-driver netuio.inf /install
Z:\dpdk\x64\Debug\l2fwd> l2fwd.exe -c3 -- -p3 -T1 --no-mac-updating
(display stops updating, exit later with Ctrl+C)

Validate connectivity:

root@alice# ping 172.16.0.2


3. Patch instruction is a bit involved:

* Base on windpdk-v18.08-clang.
* Import drivers/net/virtio from v18.08 (not attached due to size).
* Apply windpdk-virtio-1.patch (attached).
* Apply multi-BAR patches (not attached due to not being mine).
* Apply windpdk-virtio-2.patch (attached).

There is one patch in windpdk-virtio-2.patch that splits PCI config I/O of
arbitrary size to a series of 4/2/1 accesses. It is implemented in user-mode
because it was easier to debug, but maybe it should be moved to netUIO, so
that any region of PCI config space can be read/written in a single syscall.

-- 
Dmitry Kozlyuk

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [dpdk-dev] Windows Draft Build
  2020-02-27  4:11               ` Dmitry Kozlyuk
@ 2020-02-27 15:25                 ` William Tu
  2020-02-27 15:42                   ` David Marchand
  2020-02-28  6:07                 ` [dpdk-dev] [RFC PATCH 0/5] virtio-net support for Windows draft Dmitry Kozlyuk
  1 sibling, 1 reply; 20+ messages in thread
From: William Tu @ 2020-02-27 15:25 UTC (permalink / raw)
  To: Dmitry Kozlyuk
  Cc: Ranjit Menon, Pallavi Kadam, Harini Ramakrishnan, dev,
	Narcisa Ana Maria Vasile

> 3. Patch instruction is a bit involved:
>
> * Base on windpdk-v18.08-clang.
> * Import drivers/net/virtio from v18.08 (not attached due to size).
> * Apply windpdk-virtio-1.patch (attached).
> * Apply multi-BAR patches (not attached due to not being mine).
> * Apply windpdk-virtio-2.patch (attached).

Hi Dmitry,
I did not see any attachment of the above.
Can you send again?
Thanks
William

>
> There is one patch in windpdk-virtio-2.patch that splits PCI config I/O of
> arbitrary size to a series of 4/2/1 accesses. It is implemented in user-mode
> because it was easier to debug, but maybe it should be moved to netUIO, so
> that any region of PCI config space can be read/written in a single syscall.
>
> --
> Dmitry Kozlyuk

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [dpdk-dev] Windows Draft Build
  2020-02-27 15:25                 ` William Tu
@ 2020-02-27 15:42                   ` David Marchand
  0 siblings, 0 replies; 20+ messages in thread
From: David Marchand @ 2020-02-27 15:42 UTC (permalink / raw)
  To: William Tu, Dmitry Kozlyuk
  Cc: Ranjit Menon, Pallavi Kadam, Harini Ramakrishnan, dev,
	Narcisa Ana Maria Vasile

On Thu, Feb 27, 2020 at 4:27 PM William Tu <u9012063@gmail.com> wrote:
>
> > 3. Patch instruction is a bit involved:
> >
> > * Base on windpdk-v18.08-clang.
> > * Import drivers/net/virtio from v18.08 (not attached due to size).
> > * Apply windpdk-virtio-1.patch (attached).
> > * Apply multi-BAR patches (not attached due to not being mine).
> > * Apply windpdk-virtio-2.patch (attached).
>
> Hi Dmitry,
> I did not see any attachment of the above.
> Can you send again?

Attachments are dropped on the dev@ mailing list.
So please send the patches as you would do for a normal proposal,
adding a RFC prefix if you prefer to tag them.



-- 
David Marchand


^ permalink raw reply	[flat|nested] 20+ messages in thread

* [dpdk-dev] [RFC PATCH 0/5] virtio-net support for Windows draft
  2020-02-27  4:11               ` Dmitry Kozlyuk
  2020-02-27 15:25                 ` William Tu
@ 2020-02-28  6:07                 ` Dmitry Kozlyuk
  2020-02-28  6:07                   ` [dpdk-dev] [RFC PATCH 1/5] pci/windows: add stubs for port IO Dmitry Kozlyuk
                                     ` (4 more replies)
  1 sibling, 5 replies; 20+ messages in thread
From: Dmitry Kozlyuk @ 2020-02-28  6:07 UTC (permalink / raw)
  To: dev
  Cc: Dmitry Kozlyuk, Ranjit Menon, Pallavi Kadam, Harini Ramakrishnan,
	Narcisa Ana Maria Vasile, William Tu

This patchset provides reference of the changes made to run virtio-net PMD
with Windows draft DPDK, so that this could be reproduced. Is is not
intended to be merged neither soon, nor "as is".

Patches must be applied over "multi-BAR" patchset yet to be released by
Microsoft, those patches are not included. After applying Microsoft
patches, the whole drivers/net/virtio directory from upstream v18.08
must be imported. It is also not included for brevity.

Dmitry Kozlyuk (5):
  pci/windows: add stubs for port IO
  net: add stub for RARP packet generation on Windows
  pci/windows: split config I/O into series of fixed-size operations
  netuio: change class for Net to custom
  mk/windows: add virtio-net PMD

 drivers/bus/pci/windows/pci.c                 |  80 +-
 drivers/net/virtio/virtio_ethdev.c            |   4 +
 kernel/windows/netuio/netuio.inf              |  17 +-
 lib/librte_eal/windows/eal/eal.c              |   4 +
 lib/librte_net/rte_net.c                      |  12 +
 mk/exec-env/windows/dpdk.sln                  | 754 +++++++++---------
 mk/exec-env/windows/l2fwd/l2fwd.vcxproj       | 242 +++---
 mk/exec-env/windows/l3fwd/l3fwd.vcxproj       | 292 +++----
 .../librte_pmd_i40e.vcxproj.filters           | 198 +++++
 .../librte_pmd_net_virtio.vcxproj             | 129 +++
 10 files changed, 1075 insertions(+), 657 deletions(-)
 create mode 100644 mk/exec-env/windows/librte_pmd_net_virtio/librte_pmd_i40e.vcxproj.filters
 create mode 100644 mk/exec-env/windows/librte_pmd_net_virtio/librte_pmd_net_virtio.vcxproj

-- 
2.25.1


^ permalink raw reply	[flat|nested] 20+ messages in thread

* [dpdk-dev] [RFC PATCH 1/5] pci/windows: add stubs for port IO
  2020-02-28  6:07                 ` [dpdk-dev] [RFC PATCH 0/5] virtio-net support for Windows draft Dmitry Kozlyuk
@ 2020-02-28  6:07                   ` Dmitry Kozlyuk
  2020-02-28  6:07                   ` [dpdk-dev] [RFC PATCH 2/5] net: add stub for RARP packet generation on Windows Dmitry Kozlyuk
                                     ` (3 subsequent siblings)
  4 siblings, 0 replies; 20+ messages in thread
From: Dmitry Kozlyuk @ 2020-02-28  6:07 UTC (permalink / raw)
  To: dev; +Cc: Dmitry Kozlyuk

NetUIO does not currently implement port I/O, which is used by some
drivers, notable virtio-net in legacy mode.

Signed-off-by: Dmitry Kozlyuk <dmitry.kozliuk@gmail.com>
---
 drivers/bus/pci/windows/pci.c | 32 ++++++++++++++++++++++++++++++++
 1 file changed, 32 insertions(+)

diff --git a/drivers/bus/pci/windows/pci.c b/drivers/bus/pci/windows/pci.c
index 75168c542..387ed4f02 100644
--- a/drivers/bus/pci/windows/pci.c
+++ b/drivers/bus/pci/windows/pci.c
@@ -143,6 +143,38 @@ int rte_pci_write_config(const struct rte_pci_device *dev,
 	return pci_config_io(dev, (void *)buf, len, offset, PCI_IO_WRITE);
 }
 
+int
+rte_pci_ioport_map(struct rte_pci_device *dev, int bar,
+		struct rte_pci_ioport *p)
+{
+	RTE_SET_USED(dev);
+	RTE_SET_USED(bar);
+	RTE_SET_USED(p);
+	RTE_LOG(ERR, EAL, "I/O port mapping not supported for Windows\n");
+	return -1;
+}
+
+void
+rte_pci_ioport_read(struct rte_pci_ioport *p,
+		void *data, size_t len, off_t offset)
+{
+	RTE_SET_USED(p);
+	RTE_SET_USED(data);
+	RTE_SET_USED(len);
+	RTE_SET_USED(offset);
+	RTE_LOG(ERR, EAL, "I/O port read not implemented for Windows\n");
+}
+
+void
+rte_pci_ioport_write(struct rte_pci_ioport *p,
+		const void *data, size_t len, off_t offset)
+{
+	RTE_SET_USED(p);
+	RTE_SET_USED(data);
+	RTE_SET_USED(len);
+	RTE_SET_USED(offset);
+	RTE_LOG(ERR, EAL, "I/O port write not implemented for Windows\n");
+}
 
 static
 int send_ioctl(HANDLE f, DWORD ioctl,
-- 
2.25.1


^ permalink raw reply	[flat|nested] 20+ messages in thread

* [dpdk-dev] [RFC PATCH 2/5] net: add stub for RARP packet generation on Windows
  2020-02-28  6:07                 ` [dpdk-dev] [RFC PATCH 0/5] virtio-net support for Windows draft Dmitry Kozlyuk
  2020-02-28  6:07                   ` [dpdk-dev] [RFC PATCH 1/5] pci/windows: add stubs for port IO Dmitry Kozlyuk
@ 2020-02-28  6:07                   ` Dmitry Kozlyuk
  2020-02-28  6:07                   ` [dpdk-dev] [RFC PATCH 3/5] pci/windows: split config I/O into series of fixed-size operations Dmitry Kozlyuk
                                     ` (2 subsequent siblings)
  4 siblings, 0 replies; 20+ messages in thread
From: Dmitry Kozlyuk @ 2020-02-28  6:07 UTC (permalink / raw)
  To: dev; +Cc: Dmitry Kozlyuk

RARP packets are optionally generated by virtio-net PMD.

Signed-off-by: Dmitry Kozlyuk <dmitry.kozliuk@gmail.com>
---
 lib/librte_net/rte_net.c | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/lib/librte_net/rte_net.c b/lib/librte_net/rte_net.c
index 56a13e3c4..8391ceae7 100644
--- a/lib/librte_net/rte_net.c
+++ b/lib/librte_net/rte_net.c
@@ -487,3 +487,15 @@ uint32_t rte_net_get_ptype(const struct rte_mbuf *m,
 
 	return pkt_type;
 }
+
+#ifdef _WIN64
+struct rte_mbuf * __rte_experimental
+rte_net_make_rarp_packet(struct rte_mempool *mpool,
+		const struct ether_addr *mac)
+{
+	RTE_SET_USED(mpool);
+	RTE_SET_USED(mac);
+	RTE_LOG(ERR, EAL, "RARP packet creation not implemented for Windows\n");
+	return NULL;
+}
+#endif
-- 
2.25.1


^ permalink raw reply	[flat|nested] 20+ messages in thread

* [dpdk-dev] [RFC PATCH 3/5] pci/windows: split config I/O into series of fixed-size operations
  2020-02-28  6:07                 ` [dpdk-dev] [RFC PATCH 0/5] virtio-net support for Windows draft Dmitry Kozlyuk
  2020-02-28  6:07                   ` [dpdk-dev] [RFC PATCH 1/5] pci/windows: add stubs for port IO Dmitry Kozlyuk
  2020-02-28  6:07                   ` [dpdk-dev] [RFC PATCH 2/5] net: add stub for RARP packet generation on Windows Dmitry Kozlyuk
@ 2020-02-28  6:07                   ` Dmitry Kozlyuk
  2020-02-28  6:07                   ` [dpdk-dev] [RFC PATCH 4/5] netuio: change class for Net to custom Dmitry Kozlyuk
  2020-02-28  6:07                   ` [dpdk-dev] [RFC PATCH 5/5] mk/windows: add virtio-net PMD Dmitry Kozlyuk
  4 siblings, 0 replies; 20+ messages in thread
From: Dmitry Kozlyuk @ 2020-02-28  6:07 UTC (permalink / raw)
  To: dev; +Cc: Dmitry Kozlyuk

PCI bus kernel driver mandates accessing config space in a series of
reads/writes by 4, 2, or 1 bytes. NETUIO driver checks this requirement
before performing config space I/O. Users of DPDK PCI bus driver,
however, access config space without regard for this requirement.

Make DPDK PCI bus driver split config I/O to a series of 4-, 2-,
or 1-byte reads/writes. Each of these operations is a syscall to netUIO.

Signed-off-by: Dmitry Kozlyuk <dmitry.kozliuk@gmail.com>
---
 drivers/bus/pci/windows/pci.c | 45 ++++++++++++++++++++++++-----------
 1 file changed, 31 insertions(+), 14 deletions(-)

diff --git a/drivers/bus/pci/windows/pci.c b/drivers/bus/pci/windows/pci.c
index 387ed4f02..4ffa6a610 100644
--- a/drivers/bus/pci/windows/pci.c
+++ b/drivers/bus/pci/windows/pci.c
@@ -200,6 +200,32 @@ int send_ioctl(HANDLE f, DWORD ioctl,
 	return ERROR_SUCCESS;
 }
 
+static int
+pci_config_io_sized(HANDLE device, struct dpdk_pci_config_io *io,
+	void **buf, size_t *left_size, size_t access_size)
+{
+	uint64_t out;
+
+	io->access_size = access_size;
+
+	while (*left_size >= access_size) {
+		if (io->op == PCI_IO_WRITE)
+			memcpy(&io->data, *buf, access_size);
+
+		if (send_ioctl(device, IOCTL_NETUIO_PCI_CONFIG_IO,
+				io, sizeof(*io), &out, sizeof(out)) != ERROR_SUCCESS)
+			return -1;
+
+		if (io->op == PCI_IO_READ)
+			memcpy(*buf, &out, access_size);
+
+		io->offset += access_size;
+		*buf += access_size;
+		*left_size -= access_size;
+	}
+	return 0;
+}
+
 /* Send IOCTL to driver to read/write PCI configuration space */
 static
 int pci_config_io(const struct rte_pci_device *dev, void *buf,
@@ -227,23 +253,14 @@ int pci_config_io(const struct rte_pci_device *dev, void *buf,
 	pci_io.dev_addr.dev_num = dev->addr.devid;
 	pci_io.dev_addr.func_num = dev->addr.function;
 	pci_io.offset = offset;
-	pci_io.access_size = sizeof(UINT32);
 	pci_io.op = operation;
 
-	if (operation == PCI_IO_WRITE)
-	{
-		pci_io.data.u32 = *(UINT32 UNALIGNED*)buf;
-	}
-
-	uint64_t  outputbuf = 0;
-	if (send_ioctl(f, IOCTL_NETUIO_PCI_CONFIG_IO, &pci_io, sizeof(pci_io),
-				&outputbuf, sizeof(outputbuf)) != ERROR_SUCCESS)
+	if (pci_config_io_sized(f, &pci_io, &buf, &len, sizeof(uint32_t)) < 0)
+		goto error;
+	if (pci_config_io_sized(f, &pci_io, &buf, &len, sizeof(uint16_t)) < 0)
+		goto error;
+	if (pci_config_io_sized(f, &pci_io, &buf, &len, sizeof(uint8_t)) < 0)
 		goto error;
-
-	if (operation == PCI_IO_READ)
-	{
-		memcpy(buf, &outputbuf, sizeof(UINT32));
-	}
 
 	ret = 0;
 error:
-- 
2.25.1


^ permalink raw reply	[flat|nested] 20+ messages in thread

* [dpdk-dev] [RFC PATCH 4/5] netuio: change class for Net to custom
  2020-02-28  6:07                 ` [dpdk-dev] [RFC PATCH 0/5] virtio-net support for Windows draft Dmitry Kozlyuk
                                     ` (2 preceding siblings ...)
  2020-02-28  6:07                   ` [dpdk-dev] [RFC PATCH 3/5] pci/windows: split config I/O into series of fixed-size operations Dmitry Kozlyuk
@ 2020-02-28  6:07                   ` Dmitry Kozlyuk
  2020-02-28  6:07                   ` [dpdk-dev] [RFC PATCH 5/5] mk/windows: add virtio-net PMD Dmitry Kozlyuk
  4 siblings, 0 replies; 20+ messages in thread
From: Dmitry Kozlyuk @ 2020-02-28  6:07 UTC (permalink / raw)
  To: dev; +Cc: Dmitry Kozlyuk

This resolves the issue with timeout on driver loading.

Signed-off-by: Dmitry Kozlyuk <dmitry.kozliuk@gmail.com>
---
 drivers/bus/pci/windows/pci.c    |  3 ++-
 kernel/windows/netuio/netuio.inf | 11 +++++++++--
 2 files changed, 11 insertions(+), 3 deletions(-)

diff --git a/drivers/bus/pci/windows/pci.c b/drivers/bus/pci/windows/pci.c
index 4ffa6a610..de385bf89 100644
--- a/drivers/bus/pci/windows/pci.c
+++ b/drivers/bus/pci/windows/pci.c
@@ -731,7 +731,8 @@ rte_pci_scan(void)
 	SP_DEVINFO_DATA	    DeviceInfoData = { 0 };
 	int		    ret = -1;
 
-	hDevInfo = SetupDiGetClassDevs(&GUID_DEVCLASS_NET, NULL, NULL, DIGCF_PRESENT);
+	hDevInfo = SetupDiGetClassDevs(
+		NULL, L"PCI", NULL, DIGCF_ALLCLASSES | DIGCF_PRESENT);
 	if (INVALID_HANDLE_VALUE == hDevInfo) {
 		RTE_LOG(ERR, EAL, "Unable to enumerate PCI devices.\n", __func__);
 		goto end;
diff --git a/kernel/windows/netuio/netuio.inf b/kernel/windows/netuio/netuio.inf
index 4c4d5e047..e244bed3a 100644
--- a/kernel/windows/netuio/netuio.inf
+++ b/kernel/windows/netuio/netuio.inf
@@ -36,12 +36,19 @@
 
 [Version]
 Signature="$WINDOWS NT$"
-Class=Net
-ClassGuid={4d36e972-e325-11ce-bfc1-08002be10318}
+Class=UIO
+ClassGuid={86807C09-8149-4C34-9F2D-82575B8369DA}
 Provider=%Intel%
 CatalogFile=netuio.cat
 DriverVer=
 
+[ClassInstall32]
+Addreg=UioClassReg
+
+[UioClassReg]
+HKR,,,0,%ClassName%
+HKR,,Icon,,-5
+
 ;*****************************************
 ; Install Section
 ;*****************************************
-- 
2.25.1


^ permalink raw reply	[flat|nested] 20+ messages in thread

* [dpdk-dev] [RFC PATCH 5/5] mk/windows: add virtio-net PMD
  2020-02-28  6:07                 ` [dpdk-dev] [RFC PATCH 0/5] virtio-net support for Windows draft Dmitry Kozlyuk
                                     ` (3 preceding siblings ...)
  2020-02-28  6:07                   ` [dpdk-dev] [RFC PATCH 4/5] netuio: change class for Net to custom Dmitry Kozlyuk
@ 2020-02-28  6:07                   ` Dmitry Kozlyuk
  2021-08-14 15:55                     ` William Tu
  4 siblings, 1 reply; 20+ messages in thread
From: Dmitry Kozlyuk @ 2020-02-28  6:07 UTC (permalink / raw)
  To: dev; +Cc: Dmitry Kozlyuk

Signed-off-by: Dmitry Kozlyuk <dmitry.kozliuk@gmail.com>
---
 drivers/net/virtio/virtio_ethdev.c            |   4 +
 kernel/windows/netuio/netuio.inf              |   6 +
 lib/librte_eal/windows/eal/eal.c              |   4 +
 mk/exec-env/windows/dpdk.sln                  | 754 +++++++++---------
 mk/exec-env/windows/l2fwd/l2fwd.vcxproj       | 242 +++---
 mk/exec-env/windows/l3fwd/l3fwd.vcxproj       | 292 +++----
 .../librte_pmd_i40e.vcxproj.filters           | 198 +++++
 .../librte_pmd_net_virtio.vcxproj             | 129 +++
 8 files changed, 989 insertions(+), 640 deletions(-)
 create mode 100644 mk/exec-env/windows/librte_pmd_net_virtio/librte_pmd_i40e.vcxproj.filters
 create mode 100644 mk/exec-env/windows/librte_pmd_net_virtio/librte_pmd_net_virtio.vcxproj

diff --git a/drivers/net/virtio/virtio_ethdev.c b/drivers/net/virtio/virtio_ethdev.c
index 614357da7..aa951e351 100644
--- a/drivers/net/virtio/virtio_ethdev.c
+++ b/drivers/net/virtio/virtio_ethdev.c
@@ -1786,6 +1786,7 @@ static struct rte_pci_driver rte_virtio_pmd = {
 	.remove = eth_virtio_pci_remove,
 };
 
+#ifndef _WIN64
 RTE_INIT(rte_virtio_pmd_init)
 {
 	if (rte_eal_iopl_init() != 0) {
@@ -1795,6 +1796,9 @@ RTE_INIT(rte_virtio_pmd_init)
 
 	rte_pci_register(&rte_virtio_pmd);
 }
+#endif
+
+RTE_PMD_REGISTER_PCI(net_virtio, rte_virtio_pmd);
 
 static bool
 rx_offload_enabled(struct virtio_hw *hw)
diff --git a/kernel/windows/netuio/netuio.inf b/kernel/windows/netuio/netuio.inf
index e244bed3a..89d7c183c 100644
--- a/kernel/windows/netuio/netuio.inf
+++ b/kernel/windows/netuio/netuio.inf
@@ -56,6 +56,7 @@ HKR,,Icon,,-5
 [Manufacturer]
 %Intel%=Standard,NT$ARCH$
 %Broadcom%=Broadcom,NT$ARCH$
+%virtio%=virtio,NT$ARCH$
 
 [Standard.NT$ARCH$]
 %F1583.netuio.Description%=netuio_Device, PCI\VEN_8086&DEV_1583
@@ -67,6 +68,9 @@ HKR,,Icon,,-5
 [Broadcom.NT$ARCH$]
 %F16D7.netuio.Description%=netuio_Device, PCI\VEN_14E4&DEV_16D7
 
+[virtio.NT$ARCH$]
+%virtio.netuio.Description%=netuio_Device, PCI\VEN_1AF4&DEV_1041&SUBSYS_11001AF4&REV_01
+
 [netuio_Device.NT]
 CopyFiles=Drivers_Dir
 
@@ -126,6 +130,7 @@ KmdfLibraryVersion = $KMDFVERSION$
 SPSVCINST_ASSOCSERVICE= 0x00000002
 Intel = "Intel"
 Broadcom = "Broadcom Corporation"
+virtio = "virtio"
 ClassName = "Intel(R) DPDK netUIO Driver"
 DiskName = "DPDK netUIO Installation Disk"
 F1583.netuio.Description = "DPDK netUIO for Intel(R) Ethernet Converged Network Adapter XL710-Q2"
@@ -134,5 +139,6 @@ F158B.netuio.Description = "DPDK netUIO for Intel(R) Ethernet Network Adapter XX
 F37D0.netuio.Description = "DPDK netUIO for Intel(R) Ethernet Connection X722"
 F153B.netuio.Description = "DPDK netUIO for Intel(R) Ethernet Connection I217-V"
 F16D7.netuio.Description = "DPDK netUIO for Broadcom P225p NetXtreme-E Dual-port 10Gb/25Gb Ethernet PCIe Adapter"
+virtio.netuio.Description = "DPDK netUIO for virtio-net (modern)"
 netuio.DeviceDesc = "netuio Device"
 netuio.SVCDESC = "netuio Service"
diff --git a/lib/librte_eal/windows/eal/eal.c b/lib/librte_eal/windows/eal/eal.c
index 9c3e52e1f..0a35d46ef 100644
--- a/lib/librte_eal/windows/eal/eal.c
+++ b/lib/librte_eal/windows/eal/eal.c
@@ -80,11 +80,13 @@ extern void init_rte_lpm6_tailq(void);
 
 /* these functions are created by the RTE_PMD_REGISTER_PCI macro */
 extern void pciinitfn_net_i40e(void);
+extern void pciinitfn_net_virtio(void);
 
 /* these are more constructor-like function, that we'll need to call at the start */
 extern void rte_timer_init(void);
 extern void rte_log_init(void);
 extern void i40e_init_log(void);
+extern void virtio_init_log(void);
 
 /* Return a pointer to the configuration structure */
 struct rte_config *
@@ -475,6 +477,7 @@ eal_register_and_init_pmd()
 {
 	/* these functions are created by the RTE_PMD_REGISTER_PCI macro */
 	pciinitfn_net_i40e();  /* init the Intel 40GbE PMD */
+	pciinitfn_net_virtio();  /* init the virtio-net PMD */
 }
 
 /* Launch threads, called at application init(). */
@@ -516,6 +519,7 @@ rte_eal_init(int argc, char **argv)
 	rte_eal_log_init(NULL, 0);
 	rte_log_init();
 	i40e_init_log();
+	virtio_init_log();
 
 	eal_log_level_parse(argc, argv);
 
diff --git a/mk/exec-env/windows/dpdk.sln b/mk/exec-env/windows/dpdk.sln
index ed9197861..3abea0c41 100644
--- a/mk/exec-env/windows/dpdk.sln
+++ b/mk/exec-env/windows/dpdk.sln
@@ -1,373 +1,381 @@
-
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 15
-VisualStudioVersion = 15.0.27130.2010
-MinimumVisualStudioVersion = 10.0.40219.1
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "librte_mempool", "librte_mempool\librte_mempool.vcxproj", "{EEDD0F26-9B2E-460E-9D8F-C3F3C0B999B7}"
-	ProjectSection(ProjectDependencies) = postProject
-		{60499A5F-031F-41E1-86DE-425A27AE9680} = {60499A5F-031F-41E1-86DE-425A27AE9680}
-	EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "librte_ring", "librte_ring\librte_ring.vcxproj", "{0746F0FF-F42C-4ABA-BDE1-F3FD65A81DB8}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "librte_hash", "librte_hash\librte_hash.vcxproj", "{32FDBB89-3F26-45BB-972A-BED470AD166B}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "librte_distributor", "librte_distributor\librte_distributor.vcxproj", "{B2906C80-2E62-4ADE-9295-E4F98BE946B4}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "librte_ethdev", "librte_ethdev\librte_ethdev.vcxproj", "{7E0025BB-72B3-4906-B0DE-4B45A1E22B0A}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "librte_eal", "librte_eal\librte_eal.vcxproj", "{7380DC42-DE9A-4BA3-B153-FC0156DA20B7}"
-	ProjectSection(ProjectDependencies) = postProject
-		{EEDD0F26-9B2E-460E-9D8F-C3F3C0B999B7} = {EEDD0F26-9B2E-460E-9D8F-C3F3C0B999B7}
-		{16411548-CE6A-4D3F-9AA7-EE20A5D4B6FE} = {16411548-CE6A-4D3F-9AA7-EE20A5D4B6FE}
-		{C6145F57-70FE-485D-BF16-F0C88632B6E2} = {C6145F57-70FE-485D-BF16-F0C88632B6E2}
-		{32FDBB89-3F26-45BB-972A-BED470AD166B} = {32FDBB89-3F26-45BB-972A-BED470AD166B}
-		{7E0025BB-72B3-4906-B0DE-4B45A1E22B0A} = {7E0025BB-72B3-4906-B0DE-4B45A1E22B0A}
-		{0746F0FF-F42C-4ABA-BDE1-F3FD65A81DB8} = {0746F0FF-F42C-4ABA-BDE1-F3FD65A81DB8}
-	EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "librte_mbuf", "librte_mbuf\librte_mbuf.vcxproj", "{C6145F57-70FE-485D-BF16-F0C88632B6E2}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "l2fwd", "l2fwd\l2fwd.vcxproj", "{E92C8771-D35F-4636-BE19-C6C197B1573C}"
-	ProjectSection(ProjectDependencies) = postProject
-		{88279B01-E662-494D-B805-83BAFDE4A246} = {88279B01-E662-494D-B805-83BAFDE4A246}
-		{07671615-33E8-4B1D-8E1D-BE009D3448D3} = {07671615-33E8-4B1D-8E1D-BE009D3448D3}
-		{F74A831C-CD22-4D19-BE6F-A318D0376EFA} = {F74A831C-CD22-4D19-BE6F-A318D0376EFA}
-		{EEDD0F26-9B2E-460E-9D8F-C3F3C0B999B7} = {EEDD0F26-9B2E-460E-9D8F-C3F3C0B999B7}
-		{7380DC42-DE9A-4BA3-B153-FC0156DA20B7} = {7380DC42-DE9A-4BA3-B153-FC0156DA20B7}
-		{16411548-CE6A-4D3F-9AA7-EE20A5D4B6FE} = {16411548-CE6A-4D3F-9AA7-EE20A5D4B6FE}
-		{C6145F57-70FE-485D-BF16-F0C88632B6E2} = {C6145F57-70FE-485D-BF16-F0C88632B6E2}
-		{1307B35A-728B-4250-88FE-5CBFC3B2F847} = {1307B35A-728B-4250-88FE-5CBFC3B2F847}
-		{60499A5F-031F-41E1-86DE-425A27AE9680} = {60499A5F-031F-41E1-86DE-425A27AE9680}
-		{B2906C80-2E62-4ADE-9295-E4F98BE946B4} = {B2906C80-2E62-4ADE-9295-E4F98BE946B4}
-		{32FDBB89-3F26-45BB-972A-BED470AD166B} = {32FDBB89-3F26-45BB-972A-BED470AD166B}
-		{7E0025BB-72B3-4906-B0DE-4B45A1E22B0A} = {7E0025BB-72B3-4906-B0DE-4B45A1E22B0A}
-		{0746F0FF-F42C-4ABA-BDE1-F3FD65A81DB8} = {0746F0FF-F42C-4ABA-BDE1-F3FD65A81DB8}
-	EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "librte_pmd_i40e", "librte_pmd_i40e\librte_pmd_i40e.vcxproj", "{88279B01-E662-494D-B805-83BAFDE4A246}"
-	ProjectSection(ProjectDependencies) = postProject
-		{7E0025BB-72B3-4906-B0DE-4B45A1E22B0A} = {7E0025BB-72B3-4906-B0DE-4B45A1E22B0A}
-	EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "librte_lpm", "librte_lpm\librte_lpm.vcxproj", "{1307B35A-728B-4250-88FE-5CBFC3B2F847}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "l3fwd", "l3fwd\l3fwd.vcxproj", "{B9BB1F7A-40A3-4EC7-A888-8CAFE2C11D29}"
-	ProjectSection(ProjectDependencies) = postProject
-		{88279B01-E662-494D-B805-83BAFDE4A246} = {88279B01-E662-494D-B805-83BAFDE4A246}
-		{07671615-33E8-4B1D-8E1D-BE009D3448D3} = {07671615-33E8-4B1D-8E1D-BE009D3448D3}
-		{F74A831C-CD22-4D19-BE6F-A318D0376EFA} = {F74A831C-CD22-4D19-BE6F-A318D0376EFA}
-		{EEDD0F26-9B2E-460E-9D8F-C3F3C0B999B7} = {EEDD0F26-9B2E-460E-9D8F-C3F3C0B999B7}
-		{7380DC42-DE9A-4BA3-B153-FC0156DA20B7} = {7380DC42-DE9A-4BA3-B153-FC0156DA20B7}
-		{16411548-CE6A-4D3F-9AA7-EE20A5D4B6FE} = {16411548-CE6A-4D3F-9AA7-EE20A5D4B6FE}
-		{C6145F57-70FE-485D-BF16-F0C88632B6E2} = {C6145F57-70FE-485D-BF16-F0C88632B6E2}
-		{1307B35A-728B-4250-88FE-5CBFC3B2F847} = {1307B35A-728B-4250-88FE-5CBFC3B2F847}
-		{60499A5F-031F-41E1-86DE-425A27AE9680} = {60499A5F-031F-41E1-86DE-425A27AE9680}
-		{B2906C80-2E62-4ADE-9295-E4F98BE946B4} = {B2906C80-2E62-4ADE-9295-E4F98BE946B4}
-		{32FDBB89-3F26-45BB-972A-BED470AD166B} = {32FDBB89-3F26-45BB-972A-BED470AD166B}
-		{BDCB60AC-C588-4EF8-9797-CF6D42C54A27} = {BDCB60AC-C588-4EF8-9797-CF6D42C54A27}
-		{7E0025BB-72B3-4906-B0DE-4B45A1E22B0A} = {7E0025BB-72B3-4906-B0DE-4B45A1E22B0A}
-		{0746F0FF-F42C-4ABA-BDE1-F3FD65A81DB8} = {0746F0FF-F42C-4ABA-BDE1-F3FD65A81DB8}
-	EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "librte_cmdline", "librte_cmdline\librte_cmdline.vcxproj", "{BDCB60AC-C588-4EF8-9797-CF6D42C54A27}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "librte_kvargs", "librte_kvargs\librte_kvargs.vcxproj", "{F74A831C-CD22-4D19-BE6F-A318D0376EFA}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "librte_mempool_ring", "librte_mempool_ring\librte_mempool_ring.vcxproj", "{60499A5F-031F-41E1-86DE-425A27AE9680}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "librte_bus_pci", "librte_bus_pci\librte_bus_pci.vcxproj", "{16411548-CE6A-4D3F-9AA7-EE20A5D4B6FE}"
-	ProjectSection(ProjectDependencies) = postProject
-		{07671615-33E8-4B1D-8E1D-BE009D3448D3} = {07671615-33E8-4B1D-8E1D-BE009D3448D3}
-	EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "librte_pci", "librte_pci\librte_pci.vcxproj", "{07671615-33E8-4B1D-8E1D-BE009D3448D3}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "librte_timer", "librte_timer\librte_timer.vcxproj", "{B66DCE2E-0E2A-48A7-853B-DF1D90400935}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "librte_cryptodev", "librte_cryptodev\librte_cryptodev.vcxproj", "{90990494-5D98-4230-B7C8-E486E534BFE3}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "librte_bitratestats", "librte_bitratestats\librte_bitratestats.vcxproj", "{D211C8A6-5EEB-412C-817D-231983B100E0}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "librte_metrics", "librte_metrics\librte_metrics.vcxproj", "{4630B413-F62D-41FC-B149-117E5A3294DA}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "librte_gro", "librte_gro\librte_gro.vcxproj", "{BA3884E9-D3B3-4486-9C1E-20962538F72B}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "librte_gso", "librte_gso\librte_gso.vcxproj", "{0A52C239-B43F-4A88-94EA-FD7A63C7DB28}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "librte_reorder", "librte_reorder\librte_reorder.vcxproj", "{9696E989-C867-436D-B619-12BA1BBEA4E0}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "librte_sched", "librte_sched\librte_sched.vcxproj", "{6B238285-8FEC-425E-9F30-B3E2D9A0EA4B}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "librte_net", "librte_net\librte_net.vcxproj", "{6CD555F0-108B-4B17-9E6B-668270B383FB}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "librte_acl", "librte_acl\librte_acl.vcxproj", "{6353E0FE-F213-4639-B74F-2C1E8F369DC3}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "librte_table", "librte_table\librte_table.vcxproj", "{6D9EA859-41AD-4465-B386-5D84A6DF53B6}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "librte_port", "librte_port\librte_port.vcxproj", "{D70E097F-07B6-4841-94AF-570BE1671F0C}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "librte_pipeline", "librte_pipeline\librte_pipeline.vcxproj", "{DE3F48D3-43F0-4412-8D38-E13677FD0FFC}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "librte_cfgfile", "librte_cfgfile\librte_cfgfile.vcxproj", "{F19E8ED3-581B-41E5-9EC2-48F58F4BC9B8}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "librte_efd", "librte_efd\librte_efd.vcxproj", "{0505DE80-97CC-4B69-BCA1-8AAD5365C070}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "librte_member", "librte_member\librte_member.vcxproj", "{92F2835C-2094-473E-9FEF-E03D51993211}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "librte_eventdev", "librte_eventdev\librte_eventdev.vcxproj", "{0DFCAEB8-38D4-4AB4-895D-F6891D0B123C}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "librte_security", "librte_security\librte_security.vcxproj", "{8BFAD01C-E51C-45AF-9C8A-8D13763185EC}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "librte_ipfrag", "librte_ipfrag\librte_ipfrag.vcxproj", "{C804DFF0-7A44-44FA-8E7E-87F80A30B833}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "librte_latencystats", "librte_latencystats\librte_latencystats.vcxproj", "{D312B4B8-B775-4209-BDB8-21B7D3D70269}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "librte_flowclassify", "librte_flowclassify\librte_flowclassify.vcxproj", "{D050187B-D1B5-43D5-9EEA-14A2B57C3E81}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "librte_meter", "librte_meter\librte_meter.vcxproj", "{81F6BD5A-DD07-4AC0-9999-9B2031CD400A}"
-EndProject
-Global
-	GlobalSection(SolutionConfigurationPlatforms) = preSolution
-		Debug|x64 = Debug|x64
-		Debug|x86 = Debug|x86
-		Release|x64 = Release|x64
-		Release|x86 = Release|x86
-	EndGlobalSection
-	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{EEDD0F26-9B2E-460E-9D8F-C3F3C0B999B7}.Debug|x64.ActiveCfg = Debug|x64
-		{EEDD0F26-9B2E-460E-9D8F-C3F3C0B999B7}.Debug|x64.Build.0 = Debug|x64
-		{EEDD0F26-9B2E-460E-9D8F-C3F3C0B999B7}.Debug|x86.ActiveCfg = Debug|x64
-		{EEDD0F26-9B2E-460E-9D8F-C3F3C0B999B7}.Release|x64.ActiveCfg = Release|x64
-		{EEDD0F26-9B2E-460E-9D8F-C3F3C0B999B7}.Release|x64.Build.0 = Release|x64
-		{EEDD0F26-9B2E-460E-9D8F-C3F3C0B999B7}.Release|x86.ActiveCfg = Release|x64
-		{0746F0FF-F42C-4ABA-BDE1-F3FD65A81DB8}.Debug|x64.ActiveCfg = Debug|x64
-		{0746F0FF-F42C-4ABA-BDE1-F3FD65A81DB8}.Debug|x64.Build.0 = Debug|x64
-		{0746F0FF-F42C-4ABA-BDE1-F3FD65A81DB8}.Debug|x86.ActiveCfg = Debug|x64
-		{0746F0FF-F42C-4ABA-BDE1-F3FD65A81DB8}.Release|x64.ActiveCfg = Release|x64
-		{0746F0FF-F42C-4ABA-BDE1-F3FD65A81DB8}.Release|x64.Build.0 = Release|x64
-		{0746F0FF-F42C-4ABA-BDE1-F3FD65A81DB8}.Release|x86.ActiveCfg = Release|x64
-		{32FDBB89-3F26-45BB-972A-BED470AD166B}.Debug|x64.ActiveCfg = Debug|x64
-		{32FDBB89-3F26-45BB-972A-BED470AD166B}.Debug|x64.Build.0 = Debug|x64
-		{32FDBB89-3F26-45BB-972A-BED470AD166B}.Debug|x86.ActiveCfg = Debug|x64
-		{32FDBB89-3F26-45BB-972A-BED470AD166B}.Release|x64.ActiveCfg = Release|x64
-		{32FDBB89-3F26-45BB-972A-BED470AD166B}.Release|x64.Build.0 = Release|x64
-		{32FDBB89-3F26-45BB-972A-BED470AD166B}.Release|x86.ActiveCfg = Release|x64
-		{B2906C80-2E62-4ADE-9295-E4F98BE946B4}.Debug|x64.ActiveCfg = Debug|x64
-		{B2906C80-2E62-4ADE-9295-E4F98BE946B4}.Debug|x64.Build.0 = Debug|x64
-		{B2906C80-2E62-4ADE-9295-E4F98BE946B4}.Debug|x86.ActiveCfg = Debug|x64
-		{B2906C80-2E62-4ADE-9295-E4F98BE946B4}.Release|x64.ActiveCfg = Release|x64
-		{B2906C80-2E62-4ADE-9295-E4F98BE946B4}.Release|x64.Build.0 = Release|x64
-		{B2906C80-2E62-4ADE-9295-E4F98BE946B4}.Release|x86.ActiveCfg = Release|x64
-		{7E0025BB-72B3-4906-B0DE-4B45A1E22B0A}.Debug|x64.ActiveCfg = Debug|x64
-		{7E0025BB-72B3-4906-B0DE-4B45A1E22B0A}.Debug|x64.Build.0 = Debug|x64
-		{7E0025BB-72B3-4906-B0DE-4B45A1E22B0A}.Debug|x86.ActiveCfg = Debug|x64
-		{7E0025BB-72B3-4906-B0DE-4B45A1E22B0A}.Release|x64.ActiveCfg = Release|x64
-		{7E0025BB-72B3-4906-B0DE-4B45A1E22B0A}.Release|x64.Build.0 = Release|x64
-		{7E0025BB-72B3-4906-B0DE-4B45A1E22B0A}.Release|x86.ActiveCfg = Release|x64
-		{7380DC42-DE9A-4BA3-B153-FC0156DA20B7}.Debug|x64.ActiveCfg = Debug|x64
-		{7380DC42-DE9A-4BA3-B153-FC0156DA20B7}.Debug|x64.Build.0 = Debug|x64
-		{7380DC42-DE9A-4BA3-B153-FC0156DA20B7}.Debug|x86.ActiveCfg = Debug|x64
-		{7380DC42-DE9A-4BA3-B153-FC0156DA20B7}.Release|x64.ActiveCfg = Release|x64
-		{7380DC42-DE9A-4BA3-B153-FC0156DA20B7}.Release|x64.Build.0 = Release|x64
-		{7380DC42-DE9A-4BA3-B153-FC0156DA20B7}.Release|x86.ActiveCfg = Release|x64
-		{C6145F57-70FE-485D-BF16-F0C88632B6E2}.Debug|x64.ActiveCfg = Debug|x64
-		{C6145F57-70FE-485D-BF16-F0C88632B6E2}.Debug|x64.Build.0 = Debug|x64
-		{C6145F57-70FE-485D-BF16-F0C88632B6E2}.Debug|x86.ActiveCfg = Debug|x64
-		{C6145F57-70FE-485D-BF16-F0C88632B6E2}.Release|x64.ActiveCfg = Release|x64
-		{C6145F57-70FE-485D-BF16-F0C88632B6E2}.Release|x64.Build.0 = Release|x64
-		{C6145F57-70FE-485D-BF16-F0C88632B6E2}.Release|x86.ActiveCfg = Release|x64
-		{E92C8771-D35F-4636-BE19-C6C197B1573C}.Debug|x64.ActiveCfg = Debug|x64
-		{E92C8771-D35F-4636-BE19-C6C197B1573C}.Debug|x64.Build.0 = Debug|x64
-		{E92C8771-D35F-4636-BE19-C6C197B1573C}.Debug|x86.ActiveCfg = Debug|x64
-		{E92C8771-D35F-4636-BE19-C6C197B1573C}.Release|x64.ActiveCfg = Release|x64
-		{E92C8771-D35F-4636-BE19-C6C197B1573C}.Release|x64.Build.0 = Release|x64
-		{E92C8771-D35F-4636-BE19-C6C197B1573C}.Release|x86.ActiveCfg = Release|x64
-		{88279B01-E662-494D-B805-83BAFDE4A246}.Debug|x64.ActiveCfg = Debug|x64
-		{88279B01-E662-494D-B805-83BAFDE4A246}.Debug|x64.Build.0 = Debug|x64
-		{88279B01-E662-494D-B805-83BAFDE4A246}.Debug|x86.ActiveCfg = Debug|x64
-		{88279B01-E662-494D-B805-83BAFDE4A246}.Release|x64.ActiveCfg = Release|x64
-		{88279B01-E662-494D-B805-83BAFDE4A246}.Release|x64.Build.0 = Release|x64
-		{88279B01-E662-494D-B805-83BAFDE4A246}.Release|x86.ActiveCfg = Release|x64
-		{1307B35A-728B-4250-88FE-5CBFC3B2F847}.Debug|x64.ActiveCfg = Debug|x64
-		{1307B35A-728B-4250-88FE-5CBFC3B2F847}.Debug|x64.Build.0 = Debug|x64
-		{1307B35A-728B-4250-88FE-5CBFC3B2F847}.Debug|x86.ActiveCfg = Debug|x64
-		{1307B35A-728B-4250-88FE-5CBFC3B2F847}.Release|x64.ActiveCfg = Release|x64
-		{1307B35A-728B-4250-88FE-5CBFC3B2F847}.Release|x64.Build.0 = Release|x64
-		{1307B35A-728B-4250-88FE-5CBFC3B2F847}.Release|x86.ActiveCfg = Release|x64
-		{B9BB1F7A-40A3-4EC7-A888-8CAFE2C11D29}.Debug|x64.ActiveCfg = Debug|x64
-		{B9BB1F7A-40A3-4EC7-A888-8CAFE2C11D29}.Debug|x64.Build.0 = Debug|x64
-		{B9BB1F7A-40A3-4EC7-A888-8CAFE2C11D29}.Debug|x86.ActiveCfg = Debug|x64
-		{B9BB1F7A-40A3-4EC7-A888-8CAFE2C11D29}.Release|x64.ActiveCfg = Release|x64
-		{B9BB1F7A-40A3-4EC7-A888-8CAFE2C11D29}.Release|x64.Build.0 = Release|x64
-		{B9BB1F7A-40A3-4EC7-A888-8CAFE2C11D29}.Release|x86.ActiveCfg = Release|x64
-		{BDCB60AC-C588-4EF8-9797-CF6D42C54A27}.Debug|x64.ActiveCfg = Debug|x64
-		{BDCB60AC-C588-4EF8-9797-CF6D42C54A27}.Debug|x64.Build.0 = Debug|x64
-		{BDCB60AC-C588-4EF8-9797-CF6D42C54A27}.Debug|x86.ActiveCfg = Debug|x64
-		{BDCB60AC-C588-4EF8-9797-CF6D42C54A27}.Release|x64.ActiveCfg = Release|x64
-		{BDCB60AC-C588-4EF8-9797-CF6D42C54A27}.Release|x64.Build.0 = Release|x64
-		{BDCB60AC-C588-4EF8-9797-CF6D42C54A27}.Release|x86.ActiveCfg = Release|x64
-		{F74A831C-CD22-4D19-BE6F-A318D0376EFA}.Debug|x64.ActiveCfg = Debug|x64
-		{F74A831C-CD22-4D19-BE6F-A318D0376EFA}.Debug|x64.Build.0 = Debug|x64
-		{F74A831C-CD22-4D19-BE6F-A318D0376EFA}.Debug|x86.ActiveCfg = Debug|x64
-		{F74A831C-CD22-4D19-BE6F-A318D0376EFA}.Release|x64.ActiveCfg = Release|x64
-		{F74A831C-CD22-4D19-BE6F-A318D0376EFA}.Release|x64.Build.0 = Release|x64
-		{F74A831C-CD22-4D19-BE6F-A318D0376EFA}.Release|x86.ActiveCfg = Release|x64
-		{60499A5F-031F-41E1-86DE-425A27AE9680}.Debug|x64.ActiveCfg = Debug|x64
-		{60499A5F-031F-41E1-86DE-425A27AE9680}.Debug|x64.Build.0 = Debug|x64
-		{60499A5F-031F-41E1-86DE-425A27AE9680}.Debug|x86.ActiveCfg = Debug|x64
-		{60499A5F-031F-41E1-86DE-425A27AE9680}.Release|x64.ActiveCfg = Release|x64
-		{60499A5F-031F-41E1-86DE-425A27AE9680}.Release|x64.Build.0 = Release|x64
-		{60499A5F-031F-41E1-86DE-425A27AE9680}.Release|x86.ActiveCfg = Release|x64
-		{16411548-CE6A-4D3F-9AA7-EE20A5D4B6FE}.Debug|x64.ActiveCfg = Debug|x64
-		{16411548-CE6A-4D3F-9AA7-EE20A5D4B6FE}.Debug|x64.Build.0 = Debug|x64
-		{16411548-CE6A-4D3F-9AA7-EE20A5D4B6FE}.Debug|x86.ActiveCfg = Debug|x64
-		{16411548-CE6A-4D3F-9AA7-EE20A5D4B6FE}.Release|x64.ActiveCfg = Release|x64
-		{16411548-CE6A-4D3F-9AA7-EE20A5D4B6FE}.Release|x64.Build.0 = Release|x64
-		{16411548-CE6A-4D3F-9AA7-EE20A5D4B6FE}.Release|x86.ActiveCfg = Release|x64
-		{07671615-33E8-4B1D-8E1D-BE009D3448D3}.Debug|x64.ActiveCfg = Debug|x64
-		{07671615-33E8-4B1D-8E1D-BE009D3448D3}.Debug|x64.Build.0 = Debug|x64
-		{07671615-33E8-4B1D-8E1D-BE009D3448D3}.Debug|x86.ActiveCfg = Debug|x64
-		{07671615-33E8-4B1D-8E1D-BE009D3448D3}.Release|x64.ActiveCfg = Release|x64
-		{07671615-33E8-4B1D-8E1D-BE009D3448D3}.Release|x64.Build.0 = Release|x64
-		{07671615-33E8-4B1D-8E1D-BE009D3448D3}.Release|x86.ActiveCfg = Release|x64
-		{B66DCE2E-0E2A-48A7-853B-DF1D90400935}.Debug|x64.ActiveCfg = Debug|x64
-		{B66DCE2E-0E2A-48A7-853B-DF1D90400935}.Debug|x64.Build.0 = Debug|x64
-		{B66DCE2E-0E2A-48A7-853B-DF1D90400935}.Debug|x86.ActiveCfg = Debug|x64
-		{B66DCE2E-0E2A-48A7-853B-DF1D90400935}.Release|x64.ActiveCfg = Release|x64
-		{B66DCE2E-0E2A-48A7-853B-DF1D90400935}.Release|x64.Build.0 = Release|x64
-		{B66DCE2E-0E2A-48A7-853B-DF1D90400935}.Release|x86.ActiveCfg = Release|x64
-		{90990494-5D98-4230-B7C8-E486E534BFE3}.Debug|x64.ActiveCfg = Debug|x64
-		{90990494-5D98-4230-B7C8-E486E534BFE3}.Debug|x64.Build.0 = Debug|x64
-		{90990494-5D98-4230-B7C8-E486E534BFE3}.Debug|x86.ActiveCfg = Debug|x64
-		{90990494-5D98-4230-B7C8-E486E534BFE3}.Release|x64.ActiveCfg = Release|x64
-		{90990494-5D98-4230-B7C8-E486E534BFE3}.Release|x64.Build.0 = Release|x64
-		{90990494-5D98-4230-B7C8-E486E534BFE3}.Release|x86.ActiveCfg = Release|x64
-		{D211C8A6-5EEB-412C-817D-231983B100E0}.Debug|x64.ActiveCfg = Debug|x64
-		{D211C8A6-5EEB-412C-817D-231983B100E0}.Debug|x64.Build.0 = Debug|x64
-		{D211C8A6-5EEB-412C-817D-231983B100E0}.Debug|x86.ActiveCfg = Debug|x64
-		{D211C8A6-5EEB-412C-817D-231983B100E0}.Release|x64.ActiveCfg = Release|x64
-		{D211C8A6-5EEB-412C-817D-231983B100E0}.Release|x64.Build.0 = Release|x64
-		{D211C8A6-5EEB-412C-817D-231983B100E0}.Release|x86.ActiveCfg = Release|x64
-		{4630B413-F62D-41FC-B149-117E5A3294DA}.Debug|x64.ActiveCfg = Debug|x64
-		{4630B413-F62D-41FC-B149-117E5A3294DA}.Debug|x64.Build.0 = Debug|x64
-		{4630B413-F62D-41FC-B149-117E5A3294DA}.Debug|x86.ActiveCfg = Debug|x64
-		{4630B413-F62D-41FC-B149-117E5A3294DA}.Release|x64.ActiveCfg = Release|x64
-		{4630B413-F62D-41FC-B149-117E5A3294DA}.Release|x64.Build.0 = Release|x64
-		{4630B413-F62D-41FC-B149-117E5A3294DA}.Release|x86.ActiveCfg = Release|x64
-		{BA3884E9-D3B3-4486-9C1E-20962538F72B}.Debug|x64.ActiveCfg = Debug|x64
-		{BA3884E9-D3B3-4486-9C1E-20962538F72B}.Debug|x64.Build.0 = Debug|x64
-		{BA3884E9-D3B3-4486-9C1E-20962538F72B}.Debug|x86.ActiveCfg = Debug|x64
-		{BA3884E9-D3B3-4486-9C1E-20962538F72B}.Release|x64.ActiveCfg = Release|x64
-		{BA3884E9-D3B3-4486-9C1E-20962538F72B}.Release|x64.Build.0 = Release|x64
-		{BA3884E9-D3B3-4486-9C1E-20962538F72B}.Release|x86.ActiveCfg = Release|x64
-		{0A52C239-B43F-4A88-94EA-FD7A63C7DB28}.Debug|x64.ActiveCfg = Debug|x64
-		{0A52C239-B43F-4A88-94EA-FD7A63C7DB28}.Debug|x64.Build.0 = Debug|x64
-		{0A52C239-B43F-4A88-94EA-FD7A63C7DB28}.Debug|x86.ActiveCfg = Debug|x64
-		{0A52C239-B43F-4A88-94EA-FD7A63C7DB28}.Release|x64.ActiveCfg = Release|x64
-		{0A52C239-B43F-4A88-94EA-FD7A63C7DB28}.Release|x64.Build.0 = Release|x64
-		{0A52C239-B43F-4A88-94EA-FD7A63C7DB28}.Release|x86.ActiveCfg = Release|x64
-		{9696E989-C867-436D-B619-12BA1BBEA4E0}.Debug|x64.ActiveCfg = Debug|x64
-		{9696E989-C867-436D-B619-12BA1BBEA4E0}.Debug|x64.Build.0 = Debug|x64
-		{9696E989-C867-436D-B619-12BA1BBEA4E0}.Debug|x86.ActiveCfg = Debug|x64
-		{9696E989-C867-436D-B619-12BA1BBEA4E0}.Release|x64.ActiveCfg = Release|x64
-		{9696E989-C867-436D-B619-12BA1BBEA4E0}.Release|x64.Build.0 = Release|x64
-		{9696E989-C867-436D-B619-12BA1BBEA4E0}.Release|x86.ActiveCfg = Release|x64
-		{6B238285-8FEC-425E-9F30-B3E2D9A0EA4B}.Debug|x64.ActiveCfg = Debug|x64
-		{6B238285-8FEC-425E-9F30-B3E2D9A0EA4B}.Debug|x64.Build.0 = Debug|x64
-		{6B238285-8FEC-425E-9F30-B3E2D9A0EA4B}.Debug|x86.ActiveCfg = Debug|x64
-		{6B238285-8FEC-425E-9F30-B3E2D9A0EA4B}.Release|x64.ActiveCfg = Release|x64
-		{6B238285-8FEC-425E-9F30-B3E2D9A0EA4B}.Release|x64.Build.0 = Release|x64
-		{6B238285-8FEC-425E-9F30-B3E2D9A0EA4B}.Release|x86.ActiveCfg = Release|x64
-		{6CD555F0-108B-4B17-9E6B-668270B383FB}.Debug|x64.ActiveCfg = Debug|x64
-		{6CD555F0-108B-4B17-9E6B-668270B383FB}.Debug|x64.Build.0 = Debug|x64
-		{6CD555F0-108B-4B17-9E6B-668270B383FB}.Debug|x86.ActiveCfg = Debug|x64
-		{6CD555F0-108B-4B17-9E6B-668270B383FB}.Release|x64.ActiveCfg = Release|x64
-		{6CD555F0-108B-4B17-9E6B-668270B383FB}.Release|x64.Build.0 = Release|x64
-		{6CD555F0-108B-4B17-9E6B-668270B383FB}.Release|x86.ActiveCfg = Release|x64
-		{6353E0FE-F213-4639-B74F-2C1E8F369DC3}.Debug|x64.ActiveCfg = Debug|x64
-		{6353E0FE-F213-4639-B74F-2C1E8F369DC3}.Debug|x64.Build.0 = Debug|x64
-		{6353E0FE-F213-4639-B74F-2C1E8F369DC3}.Debug|x86.ActiveCfg = Debug|x64
-		{6353E0FE-F213-4639-B74F-2C1E8F369DC3}.Release|x64.ActiveCfg = Release|x64
-		{6353E0FE-F213-4639-B74F-2C1E8F369DC3}.Release|x64.Build.0 = Release|x64
-		{6353E0FE-F213-4639-B74F-2C1E8F369DC3}.Release|x86.ActiveCfg = Release|x64
-		{6D9EA859-41AD-4465-B386-5D84A6DF53B6}.Debug|x64.ActiveCfg = Debug|x64
-		{6D9EA859-41AD-4465-B386-5D84A6DF53B6}.Debug|x64.Build.0 = Debug|x64
-		{6D9EA859-41AD-4465-B386-5D84A6DF53B6}.Debug|x86.ActiveCfg = Debug|x64
-		{6D9EA859-41AD-4465-B386-5D84A6DF53B6}.Release|x64.ActiveCfg = Release|x64
-		{6D9EA859-41AD-4465-B386-5D84A6DF53B6}.Release|x64.Build.0 = Release|x64
-		{6D9EA859-41AD-4465-B386-5D84A6DF53B6}.Release|x86.ActiveCfg = Release|x64
-		{D70E097F-07B6-4841-94AF-570BE1671F0C}.Debug|x64.ActiveCfg = Debug|x64
-		{D70E097F-07B6-4841-94AF-570BE1671F0C}.Debug|x64.Build.0 = Debug|x64
-		{D70E097F-07B6-4841-94AF-570BE1671F0C}.Debug|x86.ActiveCfg = Debug|x64
-		{D70E097F-07B6-4841-94AF-570BE1671F0C}.Release|x64.ActiveCfg = Release|x64
-		{D70E097F-07B6-4841-94AF-570BE1671F0C}.Release|x64.Build.0 = Release|x64
-		{D70E097F-07B6-4841-94AF-570BE1671F0C}.Release|x86.ActiveCfg = Release|x64
-		{DE3F48D3-43F0-4412-8D38-E13677FD0FFC}.Debug|x64.ActiveCfg = Debug|x64
-		{DE3F48D3-43F0-4412-8D38-E13677FD0FFC}.Debug|x64.Build.0 = Debug|x64
-		{DE3F48D3-43F0-4412-8D38-E13677FD0FFC}.Debug|x86.ActiveCfg = Debug|x64
-		{DE3F48D3-43F0-4412-8D38-E13677FD0FFC}.Release|x64.ActiveCfg = Release|x64
-		{DE3F48D3-43F0-4412-8D38-E13677FD0FFC}.Release|x64.Build.0 = Release|x64
-		{DE3F48D3-43F0-4412-8D38-E13677FD0FFC}.Release|x86.ActiveCfg = Release|x64
-		{F19E8ED3-581B-41E5-9EC2-48F58F4BC9B8}.Debug|x64.ActiveCfg = Debug|x64
-		{F19E8ED3-581B-41E5-9EC2-48F58F4BC9B8}.Debug|x64.Build.0 = Debug|x64
-		{F19E8ED3-581B-41E5-9EC2-48F58F4BC9B8}.Debug|x86.ActiveCfg = Debug|x64
-		{F19E8ED3-581B-41E5-9EC2-48F58F4BC9B8}.Release|x64.ActiveCfg = Release|x64
-		{F19E8ED3-581B-41E5-9EC2-48F58F4BC9B8}.Release|x64.Build.0 = Release|x64
-		{F19E8ED3-581B-41E5-9EC2-48F58F4BC9B8}.Release|x86.ActiveCfg = Release|x64
-		{0505DE80-97CC-4B69-BCA1-8AAD5365C070}.Debug|x64.ActiveCfg = Debug|x64
-		{0505DE80-97CC-4B69-BCA1-8AAD5365C070}.Debug|x64.Build.0 = Debug|x64
-		{0505DE80-97CC-4B69-BCA1-8AAD5365C070}.Debug|x86.ActiveCfg = Debug|x64
-		{0505DE80-97CC-4B69-BCA1-8AAD5365C070}.Release|x64.ActiveCfg = Release|x64
-		{0505DE80-97CC-4B69-BCA1-8AAD5365C070}.Release|x64.Build.0 = Release|x64
-		{0505DE80-97CC-4B69-BCA1-8AAD5365C070}.Release|x86.ActiveCfg = Release|x64
-		{92F2835C-2094-473E-9FEF-E03D51993211}.Debug|x64.ActiveCfg = Debug|x64
-		{92F2835C-2094-473E-9FEF-E03D51993211}.Debug|x64.Build.0 = Debug|x64
-		{92F2835C-2094-473E-9FEF-E03D51993211}.Debug|x86.ActiveCfg = Debug|x64
-		{92F2835C-2094-473E-9FEF-E03D51993211}.Release|x64.ActiveCfg = Release|x64
-		{92F2835C-2094-473E-9FEF-E03D51993211}.Release|x64.Build.0 = Release|x64
-		{92F2835C-2094-473E-9FEF-E03D51993211}.Release|x86.ActiveCfg = Release|x64
-		{0DFCAEB8-38D4-4AB4-895D-F6891D0B123C}.Debug|x64.ActiveCfg = Debug|x64
-		{0DFCAEB8-38D4-4AB4-895D-F6891D0B123C}.Debug|x64.Build.0 = Debug|x64
-		{0DFCAEB8-38D4-4AB4-895D-F6891D0B123C}.Debug|x86.ActiveCfg = Debug|x64
-		{0DFCAEB8-38D4-4AB4-895D-F6891D0B123C}.Release|x64.ActiveCfg = Release|x64
-		{0DFCAEB8-38D4-4AB4-895D-F6891D0B123C}.Release|x64.Build.0 = Release|x64
-		{0DFCAEB8-38D4-4AB4-895D-F6891D0B123C}.Release|x86.ActiveCfg = Release|x64
-		{8BFAD01C-E51C-45AF-9C8A-8D13763185EC}.Debug|x64.ActiveCfg = Debug|x64
-		{8BFAD01C-E51C-45AF-9C8A-8D13763185EC}.Debug|x64.Build.0 = Debug|x64
-		{8BFAD01C-E51C-45AF-9C8A-8D13763185EC}.Debug|x86.ActiveCfg = Debug|x64
-		{8BFAD01C-E51C-45AF-9C8A-8D13763185EC}.Release|x64.ActiveCfg = Release|x64
-		{8BFAD01C-E51C-45AF-9C8A-8D13763185EC}.Release|x64.Build.0 = Release|x64
-		{8BFAD01C-E51C-45AF-9C8A-8D13763185EC}.Release|x86.ActiveCfg = Release|x64
-		{C804DFF0-7A44-44FA-8E7E-87F80A30B833}.Debug|x64.ActiveCfg = Debug|x64
-		{C804DFF0-7A44-44FA-8E7E-87F80A30B833}.Debug|x64.Build.0 = Debug|x64
-		{C804DFF0-7A44-44FA-8E7E-87F80A30B833}.Debug|x86.ActiveCfg = Debug|x64
-		{C804DFF0-7A44-44FA-8E7E-87F80A30B833}.Release|x64.ActiveCfg = Release|x64
-		{C804DFF0-7A44-44FA-8E7E-87F80A30B833}.Release|x64.Build.0 = Release|x64
-		{C804DFF0-7A44-44FA-8E7E-87F80A30B833}.Release|x86.ActiveCfg = Release|x64
-		{D312B4B8-B775-4209-BDB8-21B7D3D70269}.Debug|x64.ActiveCfg = Debug|x64
-		{D312B4B8-B775-4209-BDB8-21B7D3D70269}.Debug|x64.Build.0 = Debug|x64
-		{D312B4B8-B775-4209-BDB8-21B7D3D70269}.Debug|x86.ActiveCfg = Debug|x64
-		{D312B4B8-B775-4209-BDB8-21B7D3D70269}.Release|x64.ActiveCfg = Release|x64
-		{D312B4B8-B775-4209-BDB8-21B7D3D70269}.Release|x64.Build.0 = Release|x64
-		{D312B4B8-B775-4209-BDB8-21B7D3D70269}.Release|x86.ActiveCfg = Release|x64
-		{D050187B-D1B5-43D5-9EEA-14A2B57C3E81}.Debug|x64.ActiveCfg = Debug|x64
-		{D050187B-D1B5-43D5-9EEA-14A2B57C3E81}.Debug|x64.Build.0 = Debug|x64
-		{D050187B-D1B5-43D5-9EEA-14A2B57C3E81}.Debug|x86.ActiveCfg = Debug|x64
-		{D050187B-D1B5-43D5-9EEA-14A2B57C3E81}.Release|x64.ActiveCfg = Release|x64
-		{D050187B-D1B5-43D5-9EEA-14A2B57C3E81}.Release|x64.Build.0 = Release|x64
-		{D050187B-D1B5-43D5-9EEA-14A2B57C3E81}.Release|x86.ActiveCfg = Release|x64
-		{81F6BD5A-DD07-4AC0-9999-9B2031CD400A}.Debug|x64.ActiveCfg = Debug|x64
-		{81F6BD5A-DD07-4AC0-9999-9B2031CD400A}.Debug|x64.Build.0 = Debug|x64
-		{81F6BD5A-DD07-4AC0-9999-9B2031CD400A}.Debug|x86.ActiveCfg = Debug|x64
-		{81F6BD5A-DD07-4AC0-9999-9B2031CD400A}.Release|x64.ActiveCfg = Release|x64
-		{81F6BD5A-DD07-4AC0-9999-9B2031CD400A}.Release|x64.Build.0 = Release|x64
-		{81F6BD5A-DD07-4AC0-9999-9B2031CD400A}.Release|x86.ActiveCfg = Release|x64
-	EndGlobalSection
-	GlobalSection(SolutionProperties) = preSolution
-		HideSolutionNode = FALSE
-	EndGlobalSection
-	GlobalSection(ExtensibilityGlobals) = postSolution
-		SolutionGuid = {6CB597CF-1AD9-4A06-9C23-26B0EAEA3E63}
-	EndGlobalSection
-EndGlobal
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 16
+VisualStudioVersion = 16.0.29728.190
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "librte_mempool", "librte_mempool\librte_mempool.vcxproj", "{EEDD0F26-9B2E-460E-9D8F-C3F3C0B999B7}"
+	ProjectSection(ProjectDependencies) = postProject
+		{60499A5F-031F-41E1-86DE-425A27AE9680} = {60499A5F-031F-41E1-86DE-425A27AE9680}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "librte_ring", "librte_ring\librte_ring.vcxproj", "{0746F0FF-F42C-4ABA-BDE1-F3FD65A81DB8}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "librte_hash", "librte_hash\librte_hash.vcxproj", "{32FDBB89-3F26-45BB-972A-BED470AD166B}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "librte_distributor", "librte_distributor\librte_distributor.vcxproj", "{B2906C80-2E62-4ADE-9295-E4F98BE946B4}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "librte_ethdev", "librte_ethdev\librte_ethdev.vcxproj", "{7E0025BB-72B3-4906-B0DE-4B45A1E22B0A}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "librte_eal", "librte_eal\librte_eal.vcxproj", "{7380DC42-DE9A-4BA3-B153-FC0156DA20B7}"
+	ProjectSection(ProjectDependencies) = postProject
+		{EEDD0F26-9B2E-460E-9D8F-C3F3C0B999B7} = {EEDD0F26-9B2E-460E-9D8F-C3F3C0B999B7}
+		{16411548-CE6A-4D3F-9AA7-EE20A5D4B6FE} = {16411548-CE6A-4D3F-9AA7-EE20A5D4B6FE}
+		{C6145F57-70FE-485D-BF16-F0C88632B6E2} = {C6145F57-70FE-485D-BF16-F0C88632B6E2}
+		{32FDBB89-3F26-45BB-972A-BED470AD166B} = {32FDBB89-3F26-45BB-972A-BED470AD166B}
+		{7E0025BB-72B3-4906-B0DE-4B45A1E22B0A} = {7E0025BB-72B3-4906-B0DE-4B45A1E22B0A}
+		{0746F0FF-F42C-4ABA-BDE1-F3FD65A81DB8} = {0746F0FF-F42C-4ABA-BDE1-F3FD65A81DB8}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "librte_mbuf", "librte_mbuf\librte_mbuf.vcxproj", "{C6145F57-70FE-485D-BF16-F0C88632B6E2}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "l2fwd", "l2fwd\l2fwd.vcxproj", "{E92C8771-D35F-4636-BE19-C6C197B1573C}"
+	ProjectSection(ProjectDependencies) = postProject
+		{88279B01-E662-494D-B805-83BAFDE4A246} = {88279B01-E662-494D-B805-83BAFDE4A246}
+		{07671615-33E8-4B1D-8E1D-BE009D3448D3} = {07671615-33E8-4B1D-8E1D-BE009D3448D3}
+		{F74A831C-CD22-4D19-BE6F-A318D0376EFA} = {F74A831C-CD22-4D19-BE6F-A318D0376EFA}
+		{EEDD0F26-9B2E-460E-9D8F-C3F3C0B999B7} = {EEDD0F26-9B2E-460E-9D8F-C3F3C0B999B7}
+		{7380DC42-DE9A-4BA3-B153-FC0156DA20B7} = {7380DC42-DE9A-4BA3-B153-FC0156DA20B7}
+		{16411548-CE6A-4D3F-9AA7-EE20A5D4B6FE} = {16411548-CE6A-4D3F-9AA7-EE20A5D4B6FE}
+		{C6145F57-70FE-485D-BF16-F0C88632B6E2} = {C6145F57-70FE-485D-BF16-F0C88632B6E2}
+		{1307B35A-728B-4250-88FE-5CBFC3B2F847} = {1307B35A-728B-4250-88FE-5CBFC3B2F847}
+		{60499A5F-031F-41E1-86DE-425A27AE9680} = {60499A5F-031F-41E1-86DE-425A27AE9680}
+		{B2906C80-2E62-4ADE-9295-E4F98BE946B4} = {B2906C80-2E62-4ADE-9295-E4F98BE946B4}
+		{32FDBB89-3F26-45BB-972A-BED470AD166B} = {32FDBB89-3F26-45BB-972A-BED470AD166B}
+		{7E0025BB-72B3-4906-B0DE-4B45A1E22B0A} = {7E0025BB-72B3-4906-B0DE-4B45A1E22B0A}
+		{0746F0FF-F42C-4ABA-BDE1-F3FD65A81DB8} = {0746F0FF-F42C-4ABA-BDE1-F3FD65A81DB8}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "librte_pmd_i40e", "librte_pmd_i40e\librte_pmd_i40e.vcxproj", "{88279B01-E662-494D-B805-83BAFDE4A246}"
+	ProjectSection(ProjectDependencies) = postProject
+		{7E0025BB-72B3-4906-B0DE-4B45A1E22B0A} = {7E0025BB-72B3-4906-B0DE-4B45A1E22B0A}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "librte_lpm", "librte_lpm\librte_lpm.vcxproj", "{1307B35A-728B-4250-88FE-5CBFC3B2F847}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "l3fwd", "l3fwd\l3fwd.vcxproj", "{B9BB1F7A-40A3-4EC7-A888-8CAFE2C11D29}"
+	ProjectSection(ProjectDependencies) = postProject
+		{88279B01-E662-494D-B805-83BAFDE4A246} = {88279B01-E662-494D-B805-83BAFDE4A246}
+		{07671615-33E8-4B1D-8E1D-BE009D3448D3} = {07671615-33E8-4B1D-8E1D-BE009D3448D3}
+		{F74A831C-CD22-4D19-BE6F-A318D0376EFA} = {F74A831C-CD22-4D19-BE6F-A318D0376EFA}
+		{EEDD0F26-9B2E-460E-9D8F-C3F3C0B999B7} = {EEDD0F26-9B2E-460E-9D8F-C3F3C0B999B7}
+		{7380DC42-DE9A-4BA3-B153-FC0156DA20B7} = {7380DC42-DE9A-4BA3-B153-FC0156DA20B7}
+		{16411548-CE6A-4D3F-9AA7-EE20A5D4B6FE} = {16411548-CE6A-4D3F-9AA7-EE20A5D4B6FE}
+		{C6145F57-70FE-485D-BF16-F0C88632B6E2} = {C6145F57-70FE-485D-BF16-F0C88632B6E2}
+		{1307B35A-728B-4250-88FE-5CBFC3B2F847} = {1307B35A-728B-4250-88FE-5CBFC3B2F847}
+		{60499A5F-031F-41E1-86DE-425A27AE9680} = {60499A5F-031F-41E1-86DE-425A27AE9680}
+		{B2906C80-2E62-4ADE-9295-E4F98BE946B4} = {B2906C80-2E62-4ADE-9295-E4F98BE946B4}
+		{32FDBB89-3F26-45BB-972A-BED470AD166B} = {32FDBB89-3F26-45BB-972A-BED470AD166B}
+		{BDCB60AC-C588-4EF8-9797-CF6D42C54A27} = {BDCB60AC-C588-4EF8-9797-CF6D42C54A27}
+		{7E0025BB-72B3-4906-B0DE-4B45A1E22B0A} = {7E0025BB-72B3-4906-B0DE-4B45A1E22B0A}
+		{0746F0FF-F42C-4ABA-BDE1-F3FD65A81DB8} = {0746F0FF-F42C-4ABA-BDE1-F3FD65A81DB8}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "librte_cmdline", "librte_cmdline\librte_cmdline.vcxproj", "{BDCB60AC-C588-4EF8-9797-CF6D42C54A27}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "librte_kvargs", "librte_kvargs\librte_kvargs.vcxproj", "{F74A831C-CD22-4D19-BE6F-A318D0376EFA}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "librte_mempool_ring", "librte_mempool_ring\librte_mempool_ring.vcxproj", "{60499A5F-031F-41E1-86DE-425A27AE9680}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "librte_bus_pci", "librte_bus_pci\librte_bus_pci.vcxproj", "{16411548-CE6A-4D3F-9AA7-EE20A5D4B6FE}"
+	ProjectSection(ProjectDependencies) = postProject
+		{07671615-33E8-4B1D-8E1D-BE009D3448D3} = {07671615-33E8-4B1D-8E1D-BE009D3448D3}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "librte_pci", "librte_pci\librte_pci.vcxproj", "{07671615-33E8-4B1D-8E1D-BE009D3448D3}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "librte_timer", "librte_timer\librte_timer.vcxproj", "{B66DCE2E-0E2A-48A7-853B-DF1D90400935}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "librte_cryptodev", "librte_cryptodev\librte_cryptodev.vcxproj", "{90990494-5D98-4230-B7C8-E486E534BFE3}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "librte_bitratestats", "librte_bitratestats\librte_bitratestats.vcxproj", "{D211C8A6-5EEB-412C-817D-231983B100E0}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "librte_metrics", "librte_metrics\librte_metrics.vcxproj", "{4630B413-F62D-41FC-B149-117E5A3294DA}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "librte_gro", "librte_gro\librte_gro.vcxproj", "{BA3884E9-D3B3-4486-9C1E-20962538F72B}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "librte_gso", "librte_gso\librte_gso.vcxproj", "{0A52C239-B43F-4A88-94EA-FD7A63C7DB28}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "librte_reorder", "librte_reorder\librte_reorder.vcxproj", "{9696E989-C867-436D-B619-12BA1BBEA4E0}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "librte_sched", "librte_sched\librte_sched.vcxproj", "{6B238285-8FEC-425E-9F30-B3E2D9A0EA4B}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "librte_net", "librte_net\librte_net.vcxproj", "{6CD555F0-108B-4B17-9E6B-668270B383FB}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "librte_acl", "librte_acl\librte_acl.vcxproj", "{6353E0FE-F213-4639-B74F-2C1E8F369DC3}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "librte_table", "librte_table\librte_table.vcxproj", "{6D9EA859-41AD-4465-B386-5D84A6DF53B6}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "librte_port", "librte_port\librte_port.vcxproj", "{D70E097F-07B6-4841-94AF-570BE1671F0C}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "librte_pipeline", "librte_pipeline\librte_pipeline.vcxproj", "{DE3F48D3-43F0-4412-8D38-E13677FD0FFC}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "librte_cfgfile", "librte_cfgfile\librte_cfgfile.vcxproj", "{F19E8ED3-581B-41E5-9EC2-48F58F4BC9B8}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "librte_efd", "librte_efd\librte_efd.vcxproj", "{0505DE80-97CC-4B69-BCA1-8AAD5365C070}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "librte_member", "librte_member\librte_member.vcxproj", "{92F2835C-2094-473E-9FEF-E03D51993211}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "librte_eventdev", "librte_eventdev\librte_eventdev.vcxproj", "{0DFCAEB8-38D4-4AB4-895D-F6891D0B123C}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "librte_security", "librte_security\librte_security.vcxproj", "{8BFAD01C-E51C-45AF-9C8A-8D13763185EC}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "librte_ipfrag", "librte_ipfrag\librte_ipfrag.vcxproj", "{C804DFF0-7A44-44FA-8E7E-87F80A30B833}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "librte_latencystats", "librte_latencystats\librte_latencystats.vcxproj", "{D312B4B8-B775-4209-BDB8-21B7D3D70269}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "librte_flowclassify", "librte_flowclassify\librte_flowclassify.vcxproj", "{D050187B-D1B5-43D5-9EEA-14A2B57C3E81}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "librte_meter", "librte_meter\librte_meter.vcxproj", "{81F6BD5A-DD07-4AC0-9999-9B2031CD400A}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "librte_pmd_net_virtio", "librte_pmd_net_virtio\librte_pmd_net_virtio.vcxproj", "{300385EB-75BD-4D40-953F-6131FD371982}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|x64 = Debug|x64
+		Debug|x86 = Debug|x86
+		Release|x64 = Release|x64
+		Release|x86 = Release|x86
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{EEDD0F26-9B2E-460E-9D8F-C3F3C0B999B7}.Debug|x64.ActiveCfg = Debug|x64
+		{EEDD0F26-9B2E-460E-9D8F-C3F3C0B999B7}.Debug|x64.Build.0 = Debug|x64
+		{EEDD0F26-9B2E-460E-9D8F-C3F3C0B999B7}.Debug|x86.ActiveCfg = Debug|x64
+		{EEDD0F26-9B2E-460E-9D8F-C3F3C0B999B7}.Release|x64.ActiveCfg = Release|x64
+		{EEDD0F26-9B2E-460E-9D8F-C3F3C0B999B7}.Release|x64.Build.0 = Release|x64
+		{EEDD0F26-9B2E-460E-9D8F-C3F3C0B999B7}.Release|x86.ActiveCfg = Release|x64
+		{0746F0FF-F42C-4ABA-BDE1-F3FD65A81DB8}.Debug|x64.ActiveCfg = Debug|x64
+		{0746F0FF-F42C-4ABA-BDE1-F3FD65A81DB8}.Debug|x64.Build.0 = Debug|x64
+		{0746F0FF-F42C-4ABA-BDE1-F3FD65A81DB8}.Debug|x86.ActiveCfg = Debug|x64
+		{0746F0FF-F42C-4ABA-BDE1-F3FD65A81DB8}.Release|x64.ActiveCfg = Release|x64
+		{0746F0FF-F42C-4ABA-BDE1-F3FD65A81DB8}.Release|x64.Build.0 = Release|x64
+		{0746F0FF-F42C-4ABA-BDE1-F3FD65A81DB8}.Release|x86.ActiveCfg = Release|x64
+		{32FDBB89-3F26-45BB-972A-BED470AD166B}.Debug|x64.ActiveCfg = Debug|x64
+		{32FDBB89-3F26-45BB-972A-BED470AD166B}.Debug|x64.Build.0 = Debug|x64
+		{32FDBB89-3F26-45BB-972A-BED470AD166B}.Debug|x86.ActiveCfg = Debug|x64
+		{32FDBB89-3F26-45BB-972A-BED470AD166B}.Release|x64.ActiveCfg = Release|x64
+		{32FDBB89-3F26-45BB-972A-BED470AD166B}.Release|x64.Build.0 = Release|x64
+		{32FDBB89-3F26-45BB-972A-BED470AD166B}.Release|x86.ActiveCfg = Release|x64
+		{B2906C80-2E62-4ADE-9295-E4F98BE946B4}.Debug|x64.ActiveCfg = Debug|x64
+		{B2906C80-2E62-4ADE-9295-E4F98BE946B4}.Debug|x64.Build.0 = Debug|x64
+		{B2906C80-2E62-4ADE-9295-E4F98BE946B4}.Debug|x86.ActiveCfg = Debug|x64
+		{B2906C80-2E62-4ADE-9295-E4F98BE946B4}.Release|x64.ActiveCfg = Release|x64
+		{B2906C80-2E62-4ADE-9295-E4F98BE946B4}.Release|x64.Build.0 = Release|x64
+		{B2906C80-2E62-4ADE-9295-E4F98BE946B4}.Release|x86.ActiveCfg = Release|x64
+		{7E0025BB-72B3-4906-B0DE-4B45A1E22B0A}.Debug|x64.ActiveCfg = Debug|x64
+		{7E0025BB-72B3-4906-B0DE-4B45A1E22B0A}.Debug|x64.Build.0 = Debug|x64
+		{7E0025BB-72B3-4906-B0DE-4B45A1E22B0A}.Debug|x86.ActiveCfg = Debug|x64
+		{7E0025BB-72B3-4906-B0DE-4B45A1E22B0A}.Release|x64.ActiveCfg = Release|x64
+		{7E0025BB-72B3-4906-B0DE-4B45A1E22B0A}.Release|x64.Build.0 = Release|x64
+		{7E0025BB-72B3-4906-B0DE-4B45A1E22B0A}.Release|x86.ActiveCfg = Release|x64
+		{7380DC42-DE9A-4BA3-B153-FC0156DA20B7}.Debug|x64.ActiveCfg = Debug|x64
+		{7380DC42-DE9A-4BA3-B153-FC0156DA20B7}.Debug|x64.Build.0 = Debug|x64
+		{7380DC42-DE9A-4BA3-B153-FC0156DA20B7}.Debug|x86.ActiveCfg = Debug|x64
+		{7380DC42-DE9A-4BA3-B153-FC0156DA20B7}.Release|x64.ActiveCfg = Release|x64
+		{7380DC42-DE9A-4BA3-B153-FC0156DA20B7}.Release|x64.Build.0 = Release|x64
+		{7380DC42-DE9A-4BA3-B153-FC0156DA20B7}.Release|x86.ActiveCfg = Release|x64
+		{C6145F57-70FE-485D-BF16-F0C88632B6E2}.Debug|x64.ActiveCfg = Debug|x64
+		{C6145F57-70FE-485D-BF16-F0C88632B6E2}.Debug|x64.Build.0 = Debug|x64
+		{C6145F57-70FE-485D-BF16-F0C88632B6E2}.Debug|x86.ActiveCfg = Debug|x64
+		{C6145F57-70FE-485D-BF16-F0C88632B6E2}.Release|x64.ActiveCfg = Release|x64
+		{C6145F57-70FE-485D-BF16-F0C88632B6E2}.Release|x64.Build.0 = Release|x64
+		{C6145F57-70FE-485D-BF16-F0C88632B6E2}.Release|x86.ActiveCfg = Release|x64
+		{E92C8771-D35F-4636-BE19-C6C197B1573C}.Debug|x64.ActiveCfg = Debug|x64
+		{E92C8771-D35F-4636-BE19-C6C197B1573C}.Debug|x64.Build.0 = Debug|x64
+		{E92C8771-D35F-4636-BE19-C6C197B1573C}.Debug|x86.ActiveCfg = Debug|x64
+		{E92C8771-D35F-4636-BE19-C6C197B1573C}.Release|x64.ActiveCfg = Release|x64
+		{E92C8771-D35F-4636-BE19-C6C197B1573C}.Release|x64.Build.0 = Release|x64
+		{E92C8771-D35F-4636-BE19-C6C197B1573C}.Release|x86.ActiveCfg = Release|x64
+		{88279B01-E662-494D-B805-83BAFDE4A246}.Debug|x64.ActiveCfg = Debug|x64
+		{88279B01-E662-494D-B805-83BAFDE4A246}.Debug|x64.Build.0 = Debug|x64
+		{88279B01-E662-494D-B805-83BAFDE4A246}.Debug|x86.ActiveCfg = Debug|x64
+		{88279B01-E662-494D-B805-83BAFDE4A246}.Release|x64.ActiveCfg = Release|x64
+		{88279B01-E662-494D-B805-83BAFDE4A246}.Release|x64.Build.0 = Release|x64
+		{88279B01-E662-494D-B805-83BAFDE4A246}.Release|x86.ActiveCfg = Release|x64
+		{1307B35A-728B-4250-88FE-5CBFC3B2F847}.Debug|x64.ActiveCfg = Debug|x64
+		{1307B35A-728B-4250-88FE-5CBFC3B2F847}.Debug|x64.Build.0 = Debug|x64
+		{1307B35A-728B-4250-88FE-5CBFC3B2F847}.Debug|x86.ActiveCfg = Debug|x64
+		{1307B35A-728B-4250-88FE-5CBFC3B2F847}.Release|x64.ActiveCfg = Release|x64
+		{1307B35A-728B-4250-88FE-5CBFC3B2F847}.Release|x64.Build.0 = Release|x64
+		{1307B35A-728B-4250-88FE-5CBFC3B2F847}.Release|x86.ActiveCfg = Release|x64
+		{B9BB1F7A-40A3-4EC7-A888-8CAFE2C11D29}.Debug|x64.ActiveCfg = Debug|x64
+		{B9BB1F7A-40A3-4EC7-A888-8CAFE2C11D29}.Debug|x64.Build.0 = Debug|x64
+		{B9BB1F7A-40A3-4EC7-A888-8CAFE2C11D29}.Debug|x86.ActiveCfg = Debug|x64
+		{B9BB1F7A-40A3-4EC7-A888-8CAFE2C11D29}.Release|x64.ActiveCfg = Release|x64
+		{B9BB1F7A-40A3-4EC7-A888-8CAFE2C11D29}.Release|x64.Build.0 = Release|x64
+		{B9BB1F7A-40A3-4EC7-A888-8CAFE2C11D29}.Release|x86.ActiveCfg = Release|x64
+		{BDCB60AC-C588-4EF8-9797-CF6D42C54A27}.Debug|x64.ActiveCfg = Debug|x64
+		{BDCB60AC-C588-4EF8-9797-CF6D42C54A27}.Debug|x64.Build.0 = Debug|x64
+		{BDCB60AC-C588-4EF8-9797-CF6D42C54A27}.Debug|x86.ActiveCfg = Debug|x64
+		{BDCB60AC-C588-4EF8-9797-CF6D42C54A27}.Release|x64.ActiveCfg = Release|x64
+		{BDCB60AC-C588-4EF8-9797-CF6D42C54A27}.Release|x64.Build.0 = Release|x64
+		{BDCB60AC-C588-4EF8-9797-CF6D42C54A27}.Release|x86.ActiveCfg = Release|x64
+		{F74A831C-CD22-4D19-BE6F-A318D0376EFA}.Debug|x64.ActiveCfg = Debug|x64
+		{F74A831C-CD22-4D19-BE6F-A318D0376EFA}.Debug|x64.Build.0 = Debug|x64
+		{F74A831C-CD22-4D19-BE6F-A318D0376EFA}.Debug|x86.ActiveCfg = Debug|x64
+		{F74A831C-CD22-4D19-BE6F-A318D0376EFA}.Release|x64.ActiveCfg = Release|x64
+		{F74A831C-CD22-4D19-BE6F-A318D0376EFA}.Release|x64.Build.0 = Release|x64
+		{F74A831C-CD22-4D19-BE6F-A318D0376EFA}.Release|x86.ActiveCfg = Release|x64
+		{60499A5F-031F-41E1-86DE-425A27AE9680}.Debug|x64.ActiveCfg = Debug|x64
+		{60499A5F-031F-41E1-86DE-425A27AE9680}.Debug|x64.Build.0 = Debug|x64
+		{60499A5F-031F-41E1-86DE-425A27AE9680}.Debug|x86.ActiveCfg = Debug|x64
+		{60499A5F-031F-41E1-86DE-425A27AE9680}.Release|x64.ActiveCfg = Release|x64
+		{60499A5F-031F-41E1-86DE-425A27AE9680}.Release|x64.Build.0 = Release|x64
+		{60499A5F-031F-41E1-86DE-425A27AE9680}.Release|x86.ActiveCfg = Release|x64
+		{16411548-CE6A-4D3F-9AA7-EE20A5D4B6FE}.Debug|x64.ActiveCfg = Debug|x64
+		{16411548-CE6A-4D3F-9AA7-EE20A5D4B6FE}.Debug|x64.Build.0 = Debug|x64
+		{16411548-CE6A-4D3F-9AA7-EE20A5D4B6FE}.Debug|x86.ActiveCfg = Debug|x64
+		{16411548-CE6A-4D3F-9AA7-EE20A5D4B6FE}.Release|x64.ActiveCfg = Release|x64
+		{16411548-CE6A-4D3F-9AA7-EE20A5D4B6FE}.Release|x64.Build.0 = Release|x64
+		{16411548-CE6A-4D3F-9AA7-EE20A5D4B6FE}.Release|x86.ActiveCfg = Release|x64
+		{07671615-33E8-4B1D-8E1D-BE009D3448D3}.Debug|x64.ActiveCfg = Debug|x64
+		{07671615-33E8-4B1D-8E1D-BE009D3448D3}.Debug|x64.Build.0 = Debug|x64
+		{07671615-33E8-4B1D-8E1D-BE009D3448D3}.Debug|x86.ActiveCfg = Debug|x64
+		{07671615-33E8-4B1D-8E1D-BE009D3448D3}.Release|x64.ActiveCfg = Release|x64
+		{07671615-33E8-4B1D-8E1D-BE009D3448D3}.Release|x64.Build.0 = Release|x64
+		{07671615-33E8-4B1D-8E1D-BE009D3448D3}.Release|x86.ActiveCfg = Release|x64
+		{B66DCE2E-0E2A-48A7-853B-DF1D90400935}.Debug|x64.ActiveCfg = Debug|x64
+		{B66DCE2E-0E2A-48A7-853B-DF1D90400935}.Debug|x64.Build.0 = Debug|x64
+		{B66DCE2E-0E2A-48A7-853B-DF1D90400935}.Debug|x86.ActiveCfg = Debug|x64
+		{B66DCE2E-0E2A-48A7-853B-DF1D90400935}.Release|x64.ActiveCfg = Release|x64
+		{B66DCE2E-0E2A-48A7-853B-DF1D90400935}.Release|x64.Build.0 = Release|x64
+		{B66DCE2E-0E2A-48A7-853B-DF1D90400935}.Release|x86.ActiveCfg = Release|x64
+		{90990494-5D98-4230-B7C8-E486E534BFE3}.Debug|x64.ActiveCfg = Debug|x64
+		{90990494-5D98-4230-B7C8-E486E534BFE3}.Debug|x64.Build.0 = Debug|x64
+		{90990494-5D98-4230-B7C8-E486E534BFE3}.Debug|x86.ActiveCfg = Debug|x64
+		{90990494-5D98-4230-B7C8-E486E534BFE3}.Release|x64.ActiveCfg = Release|x64
+		{90990494-5D98-4230-B7C8-E486E534BFE3}.Release|x64.Build.0 = Release|x64
+		{90990494-5D98-4230-B7C8-E486E534BFE3}.Release|x86.ActiveCfg = Release|x64
+		{D211C8A6-5EEB-412C-817D-231983B100E0}.Debug|x64.ActiveCfg = Debug|x64
+		{D211C8A6-5EEB-412C-817D-231983B100E0}.Debug|x64.Build.0 = Debug|x64
+		{D211C8A6-5EEB-412C-817D-231983B100E0}.Debug|x86.ActiveCfg = Debug|x64
+		{D211C8A6-5EEB-412C-817D-231983B100E0}.Release|x64.ActiveCfg = Release|x64
+		{D211C8A6-5EEB-412C-817D-231983B100E0}.Release|x64.Build.0 = Release|x64
+		{D211C8A6-5EEB-412C-817D-231983B100E0}.Release|x86.ActiveCfg = Release|x64
+		{4630B413-F62D-41FC-B149-117E5A3294DA}.Debug|x64.ActiveCfg = Debug|x64
+		{4630B413-F62D-41FC-B149-117E5A3294DA}.Debug|x64.Build.0 = Debug|x64
+		{4630B413-F62D-41FC-B149-117E5A3294DA}.Debug|x86.ActiveCfg = Debug|x64
+		{4630B413-F62D-41FC-B149-117E5A3294DA}.Release|x64.ActiveCfg = Release|x64
+		{4630B413-F62D-41FC-B149-117E5A3294DA}.Release|x64.Build.0 = Release|x64
+		{4630B413-F62D-41FC-B149-117E5A3294DA}.Release|x86.ActiveCfg = Release|x64
+		{BA3884E9-D3B3-4486-9C1E-20962538F72B}.Debug|x64.ActiveCfg = Debug|x64
+		{BA3884E9-D3B3-4486-9C1E-20962538F72B}.Debug|x64.Build.0 = Debug|x64
+		{BA3884E9-D3B3-4486-9C1E-20962538F72B}.Debug|x86.ActiveCfg = Debug|x64
+		{BA3884E9-D3B3-4486-9C1E-20962538F72B}.Release|x64.ActiveCfg = Release|x64
+		{BA3884E9-D3B3-4486-9C1E-20962538F72B}.Release|x64.Build.0 = Release|x64
+		{BA3884E9-D3B3-4486-9C1E-20962538F72B}.Release|x86.ActiveCfg = Release|x64
+		{0A52C239-B43F-4A88-94EA-FD7A63C7DB28}.Debug|x64.ActiveCfg = Debug|x64
+		{0A52C239-B43F-4A88-94EA-FD7A63C7DB28}.Debug|x64.Build.0 = Debug|x64
+		{0A52C239-B43F-4A88-94EA-FD7A63C7DB28}.Debug|x86.ActiveCfg = Debug|x64
+		{0A52C239-B43F-4A88-94EA-FD7A63C7DB28}.Release|x64.ActiveCfg = Release|x64
+		{0A52C239-B43F-4A88-94EA-FD7A63C7DB28}.Release|x64.Build.0 = Release|x64
+		{0A52C239-B43F-4A88-94EA-FD7A63C7DB28}.Release|x86.ActiveCfg = Release|x64
+		{9696E989-C867-436D-B619-12BA1BBEA4E0}.Debug|x64.ActiveCfg = Debug|x64
+		{9696E989-C867-436D-B619-12BA1BBEA4E0}.Debug|x64.Build.0 = Debug|x64
+		{9696E989-C867-436D-B619-12BA1BBEA4E0}.Debug|x86.ActiveCfg = Debug|x64
+		{9696E989-C867-436D-B619-12BA1BBEA4E0}.Release|x64.ActiveCfg = Release|x64
+		{9696E989-C867-436D-B619-12BA1BBEA4E0}.Release|x64.Build.0 = Release|x64
+		{9696E989-C867-436D-B619-12BA1BBEA4E0}.Release|x86.ActiveCfg = Release|x64
+		{6B238285-8FEC-425E-9F30-B3E2D9A0EA4B}.Debug|x64.ActiveCfg = Debug|x64
+		{6B238285-8FEC-425E-9F30-B3E2D9A0EA4B}.Debug|x64.Build.0 = Debug|x64
+		{6B238285-8FEC-425E-9F30-B3E2D9A0EA4B}.Debug|x86.ActiveCfg = Debug|x64
+		{6B238285-8FEC-425E-9F30-B3E2D9A0EA4B}.Release|x64.ActiveCfg = Release|x64
+		{6B238285-8FEC-425E-9F30-B3E2D9A0EA4B}.Release|x64.Build.0 = Release|x64
+		{6B238285-8FEC-425E-9F30-B3E2D9A0EA4B}.Release|x86.ActiveCfg = Release|x64
+		{6CD555F0-108B-4B17-9E6B-668270B383FB}.Debug|x64.ActiveCfg = Debug|x64
+		{6CD555F0-108B-4B17-9E6B-668270B383FB}.Debug|x64.Build.0 = Debug|x64
+		{6CD555F0-108B-4B17-9E6B-668270B383FB}.Debug|x86.ActiveCfg = Debug|x64
+		{6CD555F0-108B-4B17-9E6B-668270B383FB}.Release|x64.ActiveCfg = Release|x64
+		{6CD555F0-108B-4B17-9E6B-668270B383FB}.Release|x64.Build.0 = Release|x64
+		{6CD555F0-108B-4B17-9E6B-668270B383FB}.Release|x86.ActiveCfg = Release|x64
+		{6353E0FE-F213-4639-B74F-2C1E8F369DC3}.Debug|x64.ActiveCfg = Debug|x64
+		{6353E0FE-F213-4639-B74F-2C1E8F369DC3}.Debug|x64.Build.0 = Debug|x64
+		{6353E0FE-F213-4639-B74F-2C1E8F369DC3}.Debug|x86.ActiveCfg = Debug|x64
+		{6353E0FE-F213-4639-B74F-2C1E8F369DC3}.Release|x64.ActiveCfg = Release|x64
+		{6353E0FE-F213-4639-B74F-2C1E8F369DC3}.Release|x64.Build.0 = Release|x64
+		{6353E0FE-F213-4639-B74F-2C1E8F369DC3}.Release|x86.ActiveCfg = Release|x64
+		{6D9EA859-41AD-4465-B386-5D84A6DF53B6}.Debug|x64.ActiveCfg = Debug|x64
+		{6D9EA859-41AD-4465-B386-5D84A6DF53B6}.Debug|x64.Build.0 = Debug|x64
+		{6D9EA859-41AD-4465-B386-5D84A6DF53B6}.Debug|x86.ActiveCfg = Debug|x64
+		{6D9EA859-41AD-4465-B386-5D84A6DF53B6}.Release|x64.ActiveCfg = Release|x64
+		{6D9EA859-41AD-4465-B386-5D84A6DF53B6}.Release|x64.Build.0 = Release|x64
+		{6D9EA859-41AD-4465-B386-5D84A6DF53B6}.Release|x86.ActiveCfg = Release|x64
+		{D70E097F-07B6-4841-94AF-570BE1671F0C}.Debug|x64.ActiveCfg = Debug|x64
+		{D70E097F-07B6-4841-94AF-570BE1671F0C}.Debug|x64.Build.0 = Debug|x64
+		{D70E097F-07B6-4841-94AF-570BE1671F0C}.Debug|x86.ActiveCfg = Debug|x64
+		{D70E097F-07B6-4841-94AF-570BE1671F0C}.Release|x64.ActiveCfg = Release|x64
+		{D70E097F-07B6-4841-94AF-570BE1671F0C}.Release|x64.Build.0 = Release|x64
+		{D70E097F-07B6-4841-94AF-570BE1671F0C}.Release|x86.ActiveCfg = Release|x64
+		{DE3F48D3-43F0-4412-8D38-E13677FD0FFC}.Debug|x64.ActiveCfg = Debug|x64
+		{DE3F48D3-43F0-4412-8D38-E13677FD0FFC}.Debug|x64.Build.0 = Debug|x64
+		{DE3F48D3-43F0-4412-8D38-E13677FD0FFC}.Debug|x86.ActiveCfg = Debug|x64
+		{DE3F48D3-43F0-4412-8D38-E13677FD0FFC}.Release|x64.ActiveCfg = Release|x64
+		{DE3F48D3-43F0-4412-8D38-E13677FD0FFC}.Release|x64.Build.0 = Release|x64
+		{DE3F48D3-43F0-4412-8D38-E13677FD0FFC}.Release|x86.ActiveCfg = Release|x64
+		{F19E8ED3-581B-41E5-9EC2-48F58F4BC9B8}.Debug|x64.ActiveCfg = Debug|x64
+		{F19E8ED3-581B-41E5-9EC2-48F58F4BC9B8}.Debug|x64.Build.0 = Debug|x64
+		{F19E8ED3-581B-41E5-9EC2-48F58F4BC9B8}.Debug|x86.ActiveCfg = Debug|x64
+		{F19E8ED3-581B-41E5-9EC2-48F58F4BC9B8}.Release|x64.ActiveCfg = Release|x64
+		{F19E8ED3-581B-41E5-9EC2-48F58F4BC9B8}.Release|x64.Build.0 = Release|x64
+		{F19E8ED3-581B-41E5-9EC2-48F58F4BC9B8}.Release|x86.ActiveCfg = Release|x64
+		{0505DE80-97CC-4B69-BCA1-8AAD5365C070}.Debug|x64.ActiveCfg = Debug|x64
+		{0505DE80-97CC-4B69-BCA1-8AAD5365C070}.Debug|x64.Build.0 = Debug|x64
+		{0505DE80-97CC-4B69-BCA1-8AAD5365C070}.Debug|x86.ActiveCfg = Debug|x64
+		{0505DE80-97CC-4B69-BCA1-8AAD5365C070}.Release|x64.ActiveCfg = Release|x64
+		{0505DE80-97CC-4B69-BCA1-8AAD5365C070}.Release|x64.Build.0 = Release|x64
+		{0505DE80-97CC-4B69-BCA1-8AAD5365C070}.Release|x86.ActiveCfg = Release|x64
+		{92F2835C-2094-473E-9FEF-E03D51993211}.Debug|x64.ActiveCfg = Debug|x64
+		{92F2835C-2094-473E-9FEF-E03D51993211}.Debug|x64.Build.0 = Debug|x64
+		{92F2835C-2094-473E-9FEF-E03D51993211}.Debug|x86.ActiveCfg = Debug|x64
+		{92F2835C-2094-473E-9FEF-E03D51993211}.Release|x64.ActiveCfg = Release|x64
+		{92F2835C-2094-473E-9FEF-E03D51993211}.Release|x64.Build.0 = Release|x64
+		{92F2835C-2094-473E-9FEF-E03D51993211}.Release|x86.ActiveCfg = Release|x64
+		{0DFCAEB8-38D4-4AB4-895D-F6891D0B123C}.Debug|x64.ActiveCfg = Debug|x64
+		{0DFCAEB8-38D4-4AB4-895D-F6891D0B123C}.Debug|x64.Build.0 = Debug|x64
+		{0DFCAEB8-38D4-4AB4-895D-F6891D0B123C}.Debug|x86.ActiveCfg = Debug|x64
+		{0DFCAEB8-38D4-4AB4-895D-F6891D0B123C}.Release|x64.ActiveCfg = Release|x64
+		{0DFCAEB8-38D4-4AB4-895D-F6891D0B123C}.Release|x64.Build.0 = Release|x64
+		{0DFCAEB8-38D4-4AB4-895D-F6891D0B123C}.Release|x86.ActiveCfg = Release|x64
+		{8BFAD01C-E51C-45AF-9C8A-8D13763185EC}.Debug|x64.ActiveCfg = Debug|x64
+		{8BFAD01C-E51C-45AF-9C8A-8D13763185EC}.Debug|x64.Build.0 = Debug|x64
+		{8BFAD01C-E51C-45AF-9C8A-8D13763185EC}.Debug|x86.ActiveCfg = Debug|x64
+		{8BFAD01C-E51C-45AF-9C8A-8D13763185EC}.Release|x64.ActiveCfg = Release|x64
+		{8BFAD01C-E51C-45AF-9C8A-8D13763185EC}.Release|x64.Build.0 = Release|x64
+		{8BFAD01C-E51C-45AF-9C8A-8D13763185EC}.Release|x86.ActiveCfg = Release|x64
+		{C804DFF0-7A44-44FA-8E7E-87F80A30B833}.Debug|x64.ActiveCfg = Debug|x64
+		{C804DFF0-7A44-44FA-8E7E-87F80A30B833}.Debug|x64.Build.0 = Debug|x64
+		{C804DFF0-7A44-44FA-8E7E-87F80A30B833}.Debug|x86.ActiveCfg = Debug|x64
+		{C804DFF0-7A44-44FA-8E7E-87F80A30B833}.Release|x64.ActiveCfg = Release|x64
+		{C804DFF0-7A44-44FA-8E7E-87F80A30B833}.Release|x64.Build.0 = Release|x64
+		{C804DFF0-7A44-44FA-8E7E-87F80A30B833}.Release|x86.ActiveCfg = Release|x64
+		{D312B4B8-B775-4209-BDB8-21B7D3D70269}.Debug|x64.ActiveCfg = Debug|x64
+		{D312B4B8-B775-4209-BDB8-21B7D3D70269}.Debug|x64.Build.0 = Debug|x64
+		{D312B4B8-B775-4209-BDB8-21B7D3D70269}.Debug|x86.ActiveCfg = Debug|x64
+		{D312B4B8-B775-4209-BDB8-21B7D3D70269}.Release|x64.ActiveCfg = Release|x64
+		{D312B4B8-B775-4209-BDB8-21B7D3D70269}.Release|x64.Build.0 = Release|x64
+		{D312B4B8-B775-4209-BDB8-21B7D3D70269}.Release|x86.ActiveCfg = Release|x64
+		{D050187B-D1B5-43D5-9EEA-14A2B57C3E81}.Debug|x64.ActiveCfg = Debug|x64
+		{D050187B-D1B5-43D5-9EEA-14A2B57C3E81}.Debug|x64.Build.0 = Debug|x64
+		{D050187B-D1B5-43D5-9EEA-14A2B57C3E81}.Debug|x86.ActiveCfg = Debug|x64
+		{D050187B-D1B5-43D5-9EEA-14A2B57C3E81}.Release|x64.ActiveCfg = Release|x64
+		{D050187B-D1B5-43D5-9EEA-14A2B57C3E81}.Release|x64.Build.0 = Release|x64
+		{D050187B-D1B5-43D5-9EEA-14A2B57C3E81}.Release|x86.ActiveCfg = Release|x64
+		{81F6BD5A-DD07-4AC0-9999-9B2031CD400A}.Debug|x64.ActiveCfg = Debug|x64
+		{81F6BD5A-DD07-4AC0-9999-9B2031CD400A}.Debug|x64.Build.0 = Debug|x64
+		{81F6BD5A-DD07-4AC0-9999-9B2031CD400A}.Debug|x86.ActiveCfg = Debug|x64
+		{81F6BD5A-DD07-4AC0-9999-9B2031CD400A}.Release|x64.ActiveCfg = Release|x64
+		{81F6BD5A-DD07-4AC0-9999-9B2031CD400A}.Release|x64.Build.0 = Release|x64
+		{81F6BD5A-DD07-4AC0-9999-9B2031CD400A}.Release|x86.ActiveCfg = Release|x64
+		{300385EB-75BD-4D40-953F-6131FD371982}.Debug|x64.ActiveCfg = Debug|x64
+		{300385EB-75BD-4D40-953F-6131FD371982}.Debug|x64.Build.0 = Debug|x64
+		{300385EB-75BD-4D40-953F-6131FD371982}.Debug|x86.ActiveCfg = Debug|x64
+		{300385EB-75BD-4D40-953F-6131FD371982}.Release|x64.ActiveCfg = Release|x64
+		{300385EB-75BD-4D40-953F-6131FD371982}.Release|x64.Build.0 = Release|x64
+		{300385EB-75BD-4D40-953F-6131FD371982}.Release|x86.ActiveCfg = Release|x64
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+	GlobalSection(ExtensibilityGlobals) = postSolution
+		SolutionGuid = {6CB597CF-1AD9-4A06-9C23-26B0EAEA3E63}
+	EndGlobalSection
+EndGlobal
diff --git a/mk/exec-env/windows/l2fwd/l2fwd.vcxproj b/mk/exec-env/windows/l2fwd/l2fwd.vcxproj
index 899a08b53..19725154c 100644
--- a/mk/exec-env/windows/l2fwd/l2fwd.vcxproj
+++ b/mk/exec-env/windows/l2fwd/l2fwd.vcxproj
@@ -1,122 +1,122 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{E92C8771-D35F-4636-BE19-C6C197B1573C}</ProjectGuid>
-    <Keyword>Win32Proj</Keyword>
-    <RootNamespace>l2fwd</RootNamespace>
-    <WindowsTargetPlatformVersion>10.0.17763.0</WindowsTargetPlatformVersion>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseDebugLibraries>true</UseDebugLibraries>
-    <PlatformToolset>llvm</PlatformToolset>
-    <CharacterSet>Unicode</CharacterSet>
-    <SpectreMitigation>false</SpectreMitigation>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseDebugLibraries>false</UseDebugLibraries>
-    <PlatformToolset>llvm</PlatformToolset>
-    <WholeProgramOptimization>true</WholeProgramOptimization>
-    <CharacterSet>Unicode</CharacterSet>
-    <SpectreMitigation>false</SpectreMitigation>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Label="Shared">
-  </ImportGroup>
-  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="..\DpdkRteLib.props" />
-  </ImportGroup>
-  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="..\DpdkRteLib.props" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <LinkIncremental>true</LinkIncremental>
-    <IntDir>$(RTE_SDK)\mk\exec-env\windows\$(Platform)\$(Configuration)\$(MSBuildProjectName)\</IntDir>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <LinkIncremental>false</LinkIncremental>
-    <IntDir>$(RTE_SDK)\mk\exec-env\windows\$(Platform)\$(Configuration)\$(MSBuildProjectName)\</IntDir>
-  </PropertyGroup>
-  <PropertyGroup Label="LLVM" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <LldLinkAdditionalOptions>
-    </LldLinkAdditionalOptions>
-    <UseLldLink>true</UseLldLink>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <ClCompile>
-      <PrecompiledHeader>NotUsing</PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <Optimization>Disabled</Optimization>
-      <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <SDLCheck>true</SDLCheck>
-      <StructMemberAlignment>1Byte</StructMemberAlignment>
-      <SupportJustMyCode>false</SupportJustMyCode>
-      <AdditionalOptions>
-      </AdditionalOptions>
-      <EnableEnhancedInstructionSet>AdvancedVectorExtensions2</EnableEnhancedInstructionSet>
-      <IntrinsicFunctions>true</IntrinsicFunctions>
-      <DebugInformationFormat>None</DebugInformationFormat>
-      <ConformanceMode>true</ConformanceMode>
-      <UseFullPaths>false</UseFullPaths>
-      <AdditionalIncludeDirectories>%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-    </ClCompile>
-    <Link>
-      <SubSystem>Console</SubSystem>
-      <GenerateDebugInformation>false</GenerateDebugInformation>
-      <AdditionalDependencies>setupapi.lib;dbghelp.lib;$(RTE_SDK)\$(Platform)\$(Configuration)\librte_bus_pci\librte_bus_pci.lib;$(RTE_SDK)\$(Platform)\$(Configuration)\librte_pci\librte_pci.lib;$(RTE_SDK)\$(Platform)\$(Configuration)\librte_eal\librte_eal.lib;$(RTE_SDK)\$(Platform)\$(Configuration)\librte_ethdev\librte_ethdev.lib;$(RTE_SDK)\$(Platform)\$(Configuration)\librte_mempool\librte_mempool.lib;$(RTE_SDK)\$(Platform)\$(Configuration)\librte_mempool_ring\librte_mempool_ring.lib;$(RTE_SDK)\$(Platform)\$(Configuration)\librte_mbuf\librte_mbuf.lib;$(RTE_SDK)\$(Platform)\$(Configuration)\librte_ring\librte_ring.lib;$(RTE_SDK)\$(Platform)\$(Configuration)\librte_hash\librte_hash.lib;$(RTE_SDK)\$(Platform)\$(Configuration)\librte_distributor\librte_distributor.lib;$(RTE_SDK)\$(Platform)\$(Configuration)\librte_lpm\librte_lpm.lib;$(RTE_SDK)\$(Platform)\$(Configuration)\librte_kvargs\librte_kvargs.lib;$(RTE_SDK)\$(Platform)\$(Configuration)\librte_pmd_i40e\librte_pmd_i40e.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <ClCompile>
-      <WarningLevel>Level3</WarningLevel>
-      <PrecompiledHeader>NotUsing</PrecompiledHeader>
-      <Optimization>MaxSpeed</Optimization>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <IntrinsicFunctions>true</IntrinsicFunctions>
-      <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <SDLCheck>true</SDLCheck>
-      <StructMemberAlignment>1Byte</StructMemberAlignment>
-      <DebugInformationFormat>None</DebugInformationFormat>
-      <ConformanceMode>true</ConformanceMode>
-      <AdditionalIncludeDirectories>%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <AdditionalOptions />
-      <EnableEnhancedInstructionSet>AdvancedVectorExtensions2</EnableEnhancedInstructionSet>
-    </ClCompile>
-    <Link>
-      <SubSystem>Console</SubSystem>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <OptimizeReferences>true</OptimizeReferences>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <AdditionalDependencies>setupapi.lib;dbghelp.lib;$(RTE_SDK)\$(Platform)\$(Configuration)\librte_bus_pci\librte_bus_pci.lib;$(RTE_SDK)\$(Platform)\$(Configuration)\librte_pci\librte_pci.lib;$(RTE_SDK)\$(Platform)\$(Configuration)\librte_eal\librte_eal.lib;$(RTE_SDK)\$(Platform)\$(Configuration)\librte_ethdev\librte_ethdev.lib;$(RTE_SDK)\$(Platform)\$(Configuration)\librte_mempool\librte_mempool.lib;$(RTE_SDK)\$(Platform)\$(Configuration)\librte_mempool_ring\librte_mempool_ring.lib;$(RTE_SDK)\$(Platform)\$(Configuration)\librte_mbuf\librte_mbuf.lib;$(RTE_SDK)\$(Platform)\$(Configuration)\librte_ring\librte_ring.lib;$(RTE_SDK)\$(Platform)\$(Configuration)\librte_hash\librte_hash.lib;$(RTE_SDK)\$(Platform)\$(Configuration)\librte_distributor\librte_distributor.lib;$(RTE_SDK)\$(Platform)\$(Configuration)\librte_lpm\librte_lpm.lib;$(RTE_SDK)\$(Platform)\$(Configuration)\librte_kvargs\librte_kvargs.lib;$(RTE_SDK)\$(Platform)\$(Configuration)\librte_pmd_i40e\librte_pmd_i40e.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClInclude Include="stdafx.h" />
-    <ClInclude Include="targetver.h" />
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\..\..\examples\l2fwd\main.c" />
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{E92C8771-D35F-4636-BE19-C6C197B1573C}</ProjectGuid>
+    <Keyword>Win32Proj</Keyword>
+    <RootNamespace>l2fwd</RootNamespace>
+    <WindowsTargetPlatformVersion>10.0.17763.0</WindowsTargetPlatformVersion>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>true</UseDebugLibraries>
+    <PlatformToolset>llvm</PlatformToolset>
+    <CharacterSet>Unicode</CharacterSet>
+    <SpectreMitigation>false</SpectreMitigation>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>false</UseDebugLibraries>
+    <PlatformToolset>llvm</PlatformToolset>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <CharacterSet>Unicode</CharacterSet>
+    <SpectreMitigation>false</SpectreMitigation>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Label="Shared">
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="..\DpdkRteLib.props" />
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="..\DpdkRteLib.props" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <LinkIncremental>true</LinkIncremental>
+    <IntDir>$(RTE_SDK)\mk\exec-env\windows\$(Platform)\$(Configuration)\$(MSBuildProjectName)\</IntDir>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <LinkIncremental>false</LinkIncremental>
+    <IntDir>$(RTE_SDK)\mk\exec-env\windows\$(Platform)\$(Configuration)\$(MSBuildProjectName)\</IntDir>
+  </PropertyGroup>
+  <PropertyGroup Label="LLVM" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <LldLinkAdditionalOptions>
+    </LldLinkAdditionalOptions>
+    <UseLldLink>true</UseLldLink>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <ClCompile>
+      <PrecompiledHeader>NotUsing</PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <Optimization>Disabled</Optimization>
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <SDLCheck>true</SDLCheck>
+      <StructMemberAlignment>1Byte</StructMemberAlignment>
+      <SupportJustMyCode>false</SupportJustMyCode>
+      <AdditionalOptions>
+      </AdditionalOptions>
+      <EnableEnhancedInstructionSet>AdvancedVectorExtensions2</EnableEnhancedInstructionSet>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <DebugInformationFormat>None</DebugInformationFormat>
+      <ConformanceMode>true</ConformanceMode>
+      <UseFullPaths>false</UseFullPaths>
+      <AdditionalIncludeDirectories>%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+    </ClCompile>
+    <Link>
+      <SubSystem>Console</SubSystem>
+      <GenerateDebugInformation>false</GenerateDebugInformation>
+      <AdditionalDependencies>setupapi.lib;dbghelp.lib;$(RTE_SDK)\$(Platform)\$(Configuration)\librte_bus_pci\librte_bus_pci.lib;$(RTE_SDK)\$(Platform)\$(Configuration)\librte_pci\librte_pci.lib;$(RTE_SDK)\$(Platform)\$(Configuration)\librte_eal\librte_eal.lib;$(RTE_SDK)\$(Platform)\$(Configuration)\librte_ethdev\librte_ethdev.lib;$(RTE_SDK)\$(Platform)\$(Configuration)\librte_mempool\librte_mempool.lib;$(RTE_SDK)\$(Platform)\$(Configuration)\librte_mempool_ring\librte_mempool_ring.lib;$(RTE_SDK)\$(Platform)\$(Configuration)\librte_mbuf\librte_mbuf.lib;$(RTE_SDK)\$(Platform)\$(Configuration)\librte_ring\librte_ring.lib;$(RTE_SDK)\$(Platform)\$(Configuration)\librte_hash\librte_hash.lib;$(RTE_SDK)\$(Platform)\$(Configuration)\librte_distributor\librte_distributor.lib;$(RTE_SDK)\$(Platform)\$(Configuration)\librte_lpm\librte_lpm.lib;$(RTE_SDK)\$(Platform)\$(Configuration)\librte_kvargs\librte_kvargs.lib;$(RTE_SDK)\$(Platform)\$(Configuration)\librte_net\librte_net.lib;$(RTE_SDK)\$(Platform)\$(Configuration)\librte_pmd_net_virtio\librte_pmd_net_virtio.lib;$(RTE_SDK)\$(Platform)\$(Configuration)\librte_pmd_i40e\librte_pmd_i40e.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <ClCompile>
+      <WarningLevel>Level3</WarningLevel>
+      <PrecompiledHeader>NotUsing</PrecompiledHeader>
+      <Optimization>MaxSpeed</Optimization>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <SDLCheck>true</SDLCheck>
+      <StructMemberAlignment>1Byte</StructMemberAlignment>
+      <DebugInformationFormat>None</DebugInformationFormat>
+      <ConformanceMode>true</ConformanceMode>
+      <AdditionalIncludeDirectories>%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalOptions />
+      <EnableEnhancedInstructionSet>AdvancedVectorExtensions2</EnableEnhancedInstructionSet>
+    </ClCompile>
+    <Link>
+      <SubSystem>Console</SubSystem>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <OptimizeReferences>true</OptimizeReferences>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <AdditionalDependencies>setupapi.lib;dbghelp.lib;$(RTE_SDK)\$(Platform)\$(Configuration)\librte_bus_pci\librte_bus_pci.lib;$(RTE_SDK)\$(Platform)\$(Configuration)\librte_pci\librte_pci.lib;$(RTE_SDK)\$(Platform)\$(Configuration)\librte_eal\librte_eal.lib;$(RTE_SDK)\$(Platform)\$(Configuration)\librte_ethdev\librte_ethdev.lib;$(RTE_SDK)\$(Platform)\$(Configuration)\librte_mempool\librte_mempool.lib;$(RTE_SDK)\$(Platform)\$(Configuration)\librte_mempool_ring\librte_mempool_ring.lib;$(RTE_SDK)\$(Platform)\$(Configuration)\librte_mbuf\librte_mbuf.lib;$(RTE_SDK)\$(Platform)\$(Configuration)\librte_ring\librte_ring.lib;$(RTE_SDK)\$(Platform)\$(Configuration)\librte_hash\librte_hash.lib;$(RTE_SDK)\$(Platform)\$(Configuration)\librte_distributor\librte_distributor.lib;$(RTE_SDK)\$(Platform)\$(Configuration)\librte_lpm\librte_lpm.lib;$(RTE_SDK)\$(Platform)\$(Configuration)\librte_kvargs\librte_kvargs.lib;$(RTE_SDK)\$(Platform)\$(Configuration)\librte_pmd_i40e\librte_pmd_i40e.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClInclude Include="stdafx.h" />
+    <ClInclude Include="targetver.h" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\..\..\examples\l2fwd\main.c" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
 </Project>
\ No newline at end of file
diff --git a/mk/exec-env/windows/l3fwd/l3fwd.vcxproj b/mk/exec-env/windows/l3fwd/l3fwd.vcxproj
index ef3e85e52..4b2bda66f 100644
--- a/mk/exec-env/windows/l3fwd/l3fwd.vcxproj
+++ b/mk/exec-env/windows/l3fwd/l3fwd.vcxproj
@@ -1,147 +1,147 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{B9BB1F7A-40A3-4EC7-A888-8CAFE2C11D29}</ProjectGuid>
-    <Keyword>Win32Proj</Keyword>
-    <RootNamespace>l3fwd</RootNamespace>
-    <WindowsTargetPlatformVersion>10.0.17763.0</WindowsTargetPlatformVersion>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseDebugLibraries>true</UseDebugLibraries>
-    <PlatformToolset>llvm</PlatformToolset>
-    <CharacterSet>Unicode</CharacterSet>
-    <SpectreMitigation>false</SpectreMitigation>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseDebugLibraries>false</UseDebugLibraries>
-    <PlatformToolset>llvm</PlatformToolset>
-    <WholeProgramOptimization>true</WholeProgramOptimization>
-    <CharacterSet>Unicode</CharacterSet>
-    <SpectreMitigation>false</SpectreMitigation>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Label="Shared">
-  </ImportGroup>
-  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="..\DpdkRteLib.props" />
-  </ImportGroup>
-  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="..\DpdkRteLib.props" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <LinkIncremental>false</LinkIncremental>
-    <OutDir>$(RTE_SDK)\$(Platform)\$(Configuration)\$(MSBuildProjectName)\</OutDir>
-    <IntDir>$(RTE_SDK)\mk\exec-env\windows\$(Platform)\$(Configuration)\$(MSBuildProjectName)\</IntDir>
-    <LibraryPath>$(LibraryPath)</LibraryPath>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <LinkIncremental>true</LinkIncremental>
-    <OutDir>$(RTE_SDK)\$(Platform)\$(Configuration)\$(MSBuildProjectName)\</OutDir>
-    <IntDir>$(RTE_SDK)\mk\exec-env\windows\$(Platform)\$(Configuration)\$(MSBuildProjectName)\</IntDir>
-  </PropertyGroup>
-  <PropertyGroup Label="LLVM" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <UseLldLink>true</UseLldLink>
-  </PropertyGroup>
-  <PropertyGroup Label="LLVM" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <UseLldLink>true</UseLldLink>
-    <LldLinkAdditionalOptions>
-    </LldLinkAdditionalOptions>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <ClCompile>
-      <PrecompiledHeader>NotUsing</PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <Optimization>Disabled</Optimization>
-      <PreprocessorDefinitions>RTE_MACHINE_CPUFLAG_SSE2;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <SDLCheck>true</SDLCheck>
-      <StructMemberAlignment>1Byte</StructMemberAlignment>
-      <AdditionalOptions>
-      </AdditionalOptions>
-      <SupportJustMyCode>false</SupportJustMyCode>
-      <EnableEnhancedInstructionSet>AdvancedVectorExtensions2</EnableEnhancedInstructionSet>
-      <IntrinsicFunctions>true</IntrinsicFunctions>
-      <EnableNeonCodegen>true</EnableNeonCodegen>
-      <DebugInformationFormat>None</DebugInformationFormat>
-      <Verbose>true</Verbose>
-      <CLanguageStandard>gnu99</CLanguageStandard>
-      <ConformanceMode>true</ConformanceMode>
-      <UseFullPaths>false</UseFullPaths>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <AdditionalIncludeDirectories>%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-    </ClCompile>
-    <Link>
-      <SubSystem>Console</SubSystem>
-      <GenerateDebugInformation>false</GenerateDebugInformation>
-      <AdditionalDependencies>setupapi.lib;dbghelp.lib;$(RTE_SDK)\$(Platform)\$(Configuration)\librte_bus_pci\librte_bus_pci.lib;$(RTE_SDK)\$(Platform)\$(Configuration)\librte_pci\librte_pci.lib;$(RTE_SDK)\$(Platform)\$(Configuration)\librte_eal\librte_eal.lib;$(RTE_SDK)\$(Platform)\$(Configuration)\librte_ethdev\librte_ethdev.lib;$(RTE_SDK)\$(Platform)\$(Configuration)\librte_mempool\librte_mempool.lib;$(RTE_SDK)\$(Platform)\$(Configuration)\librte_mempool_ring\librte_mempool_ring.lib;$(RTE_SDK)\$(Platform)\$(Configuration)\librte_mbuf\librte_mbuf.lib;$(RTE_SDK)\$(Platform)\$(Configuration)\librte_ring\librte_ring.lib;$(RTE_SDK)\$(Platform)\$(Configuration)\librte_hash\librte_hash.lib;$(RTE_SDK)\$(Platform)\$(Configuration)\librte_distributor\librte_distributor.lib;$(RTE_SDK)\$(Platform)\$(Configuration)\librte_lpm\librte_lpm.lib;$(RTE_SDK)\$(Platform)\$(Configuration)\librte_cmdline\librte_cmdline.lib;$(RTE_SDK)\$(Platform)\$(Configuration)\librte_kvargs\librte_kvargs.lib;$(RTE_SDK)\$(Platform)\$(Configuration)\librte_pmd_i40e\librte_pmd_i40e.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <TargetMachine>MachineX64</TargetMachine>
-      <AdditionalOptions>/VERBOSE %(AdditionalOptions)</AdditionalOptions>
-      <ShowProgress>LinkVerbose</ShowProgress>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <ClCompile>
-      <WarningLevel>Level3</WarningLevel>
-      <PrecompiledHeader>NotUsing</PrecompiledHeader>
-      <Optimization>MaxSpeed</Optimization>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <IntrinsicFunctions>true</IntrinsicFunctions>
-      <PreprocessorDefinitions>RTE_MACHINE_CPUFLAG_SSE2;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <SDLCheck>true</SDLCheck>
-      <StructMemberAlignment>1Byte</StructMemberAlignment>
-      <DebugInformationFormat>None</DebugInformationFormat>
-      <ConformanceMode>true</ConformanceMode>
-      <AdditionalIncludeDirectories>%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <EnableEnhancedInstructionSet>AdvancedVectorExtensions2</EnableEnhancedInstructionSet>
-      <AdditionalOptions />
-    </ClCompile>
-    <Link>
-      <SubSystem>Console</SubSystem>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <OptimizeReferences>true</OptimizeReferences>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <AdditionalDependencies>setupapi.lib;dbghelp.lib;$(RTE_SDK)\$(Platform)\$(Configuration)\librte_bus_pci\librte_bus_pci.lib;$(RTE_SDK)\$(Platform)\$(Configuration)\librte_pci\librte_pci.lib;$(RTE_SDK)\$(Platform)\$(Configuration)\librte_eal\librte_eal.lib;$(RTE_SDK)\$(Platform)\$(Configuration)\librte_ethdev\librte_ethdev.lib;$(RTE_SDK)\$(Platform)\$(Configuration)\librte_mempool\librte_mempool.lib;$(RTE_SDK)\$(Platform)\$(Configuration)\librte_mempool_ring\librte_mempool_ring.lib;$(RTE_SDK)\$(Platform)\$(Configuration)\librte_mbuf\librte_mbuf.lib;$(RTE_SDK)\$(Platform)\$(Configuration)\librte_ring\librte_ring.lib;$(RTE_SDK)\$(Platform)\$(Configuration)\librte_hash\librte_hash.lib;$(RTE_SDK)\$(Platform)\$(Configuration)\librte_distributor\librte_distributor.lib;$(RTE_SDK)\$(Platform)\$(Configuration)\librte_lpm\librte_lpm.lib;$(RTE_SDK)\$(Platform)\$(Configuration)\librte_cmdline\librte_cmdline.lib;$(RTE_SDK)\$(Platform)\$(Configuration)\librte_kvargs\librte_kvargs.lib;$(RTE_SDK)\$(Platform)\$(Configuration)\librte_pmd_i40e\librte_pmd_i40e.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClInclude Include="..\..\..\..\examples\l3fwd\l3fwd_common.h" />
-    <ClInclude Include="..\..\..\..\examples\l3fwd\l3fwd_em.h" />
-    <ClInclude Include="..\..\..\..\examples\l3fwd\l3fwd_em_hlm.h" />
-    <ClInclude Include="..\..\..\..\examples\l3fwd\l3fwd_em_hlm_neon.h" />
-    <ClInclude Include="..\..\..\..\examples\l3fwd\l3fwd_em_hlm_sse.h" />
-    <ClInclude Include="..\..\..\..\examples\l3fwd\l3fwd_em_sequential.h" />
-    <ClInclude Include="..\..\..\..\examples\l3fwd\l3fwd_lpm.h" />
-    <ClInclude Include="..\..\..\..\examples\l3fwd\l3fwd_lpm_neon.h" />
-    <ClInclude Include="..\..\..\..\examples\l3fwd\l3fwd_lpm_sse.h" />
-    <ClInclude Include="..\..\..\..\examples\l3fwd\l3fwd_neon.h" />
-    <ClInclude Include="..\..\..\..\examples\l3fwd\l3fwd_sse.h" />
-    <ClInclude Include="stdafx.h" />
-    <ClInclude Include="targetver.h" />
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\..\..\examples\l3fwd\l3fwd_em.c" />
-    <ClCompile Include="..\..\..\..\examples\l3fwd\l3fwd_lpm.c" />
-    <ClCompile Include="..\..\..\..\examples\l3fwd\main.c" />
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{B9BB1F7A-40A3-4EC7-A888-8CAFE2C11D29}</ProjectGuid>
+    <Keyword>Win32Proj</Keyword>
+    <RootNamespace>l3fwd</RootNamespace>
+    <WindowsTargetPlatformVersion>10.0.17763.0</WindowsTargetPlatformVersion>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>true</UseDebugLibraries>
+    <PlatformToolset>llvm</PlatformToolset>
+    <CharacterSet>Unicode</CharacterSet>
+    <SpectreMitigation>false</SpectreMitigation>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>false</UseDebugLibraries>
+    <PlatformToolset>llvm</PlatformToolset>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <CharacterSet>Unicode</CharacterSet>
+    <SpectreMitigation>false</SpectreMitigation>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Label="Shared">
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="..\DpdkRteLib.props" />
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="..\DpdkRteLib.props" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <LinkIncremental>false</LinkIncremental>
+    <OutDir>$(RTE_SDK)\$(Platform)\$(Configuration)\$(MSBuildProjectName)\</OutDir>
+    <IntDir>$(RTE_SDK)\mk\exec-env\windows\$(Platform)\$(Configuration)\$(MSBuildProjectName)\</IntDir>
+    <LibraryPath>$(LibraryPath)</LibraryPath>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <LinkIncremental>true</LinkIncremental>
+    <OutDir>$(RTE_SDK)\$(Platform)\$(Configuration)\$(MSBuildProjectName)\</OutDir>
+    <IntDir>$(RTE_SDK)\mk\exec-env\windows\$(Platform)\$(Configuration)\$(MSBuildProjectName)\</IntDir>
+  </PropertyGroup>
+  <PropertyGroup Label="LLVM" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <UseLldLink>true</UseLldLink>
+  </PropertyGroup>
+  <PropertyGroup Label="LLVM" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <UseLldLink>true</UseLldLink>
+    <LldLinkAdditionalOptions>
+    </LldLinkAdditionalOptions>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <ClCompile>
+      <PrecompiledHeader>NotUsing</PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <Optimization>Disabled</Optimization>
+      <PreprocessorDefinitions>RTE_MACHINE_CPUFLAG_SSE2;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <SDLCheck>true</SDLCheck>
+      <StructMemberAlignment>1Byte</StructMemberAlignment>
+      <AdditionalOptions>
+      </AdditionalOptions>
+      <SupportJustMyCode>false</SupportJustMyCode>
+      <EnableEnhancedInstructionSet>AdvancedVectorExtensions2</EnableEnhancedInstructionSet>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <EnableNeonCodegen>true</EnableNeonCodegen>
+      <DebugInformationFormat>None</DebugInformationFormat>
+      <Verbose>true</Verbose>
+      <CLanguageStandard>gnu99</CLanguageStandard>
+      <ConformanceMode>true</ConformanceMode>
+      <UseFullPaths>false</UseFullPaths>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <AdditionalIncludeDirectories>%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+    </ClCompile>
+    <Link>
+      <SubSystem>Console</SubSystem>
+      <GenerateDebugInformation>false</GenerateDebugInformation>
+      <AdditionalDependencies>setupapi.lib;dbghelp.lib;$(RTE_SDK)\$(Platform)\$(Configuration)\librte_bus_pci\librte_bus_pci.lib;$(RTE_SDK)\$(Platform)\$(Configuration)\librte_pci\librte_pci.lib;$(RTE_SDK)\$(Platform)\$(Configuration)\librte_eal\librte_eal.lib;$(RTE_SDK)\$(Platform)\$(Configuration)\librte_ethdev\librte_ethdev.lib;$(RTE_SDK)\$(Platform)\$(Configuration)\librte_mempool\librte_mempool.lib;$(RTE_SDK)\$(Platform)\$(Configuration)\librte_mempool_ring\librte_mempool_ring.lib;$(RTE_SDK)\$(Platform)\$(Configuration)\librte_mbuf\librte_mbuf.lib;$(RTE_SDK)\$(Platform)\$(Configuration)\librte_ring\librte_ring.lib;$(RTE_SDK)\$(Platform)\$(Configuration)\librte_hash\librte_hash.lib;$(RTE_SDK)\$(Platform)\$(Configuration)\librte_distributor\librte_distributor.lib;$(RTE_SDK)\$(Platform)\$(Configuration)\librte_lpm\librte_lpm.lib;$(RTE_SDK)\$(Platform)\$(Configuration)\librte_net\librte_net.lib;$(RTE_SDK)\$(Platform)\$(Configuration)\librte_cmdline\librte_cmdline.lib;$(RTE_SDK)\$(Platform)\$(Configuration)\librte_kvargs\librte_kvargs.lib;$(RTE_SDK)\$(Platform)\$(Configuration)\librte_pmd_i40e\librte_pmd_i40e.lib;$(RTE_SDK)\$(Platform)\$(Configuration)\librte_pmd_net_virtio\librte_pmd_net_virtio.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <TargetMachine>MachineX64</TargetMachine>
+      <AdditionalOptions>/VERBOSE %(AdditionalOptions)</AdditionalOptions>
+      <ShowProgress>LinkVerbose</ShowProgress>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <ClCompile>
+      <WarningLevel>Level3</WarningLevel>
+      <PrecompiledHeader>NotUsing</PrecompiledHeader>
+      <Optimization>MaxSpeed</Optimization>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <PreprocessorDefinitions>RTE_MACHINE_CPUFLAG_SSE2;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <SDLCheck>true</SDLCheck>
+      <StructMemberAlignment>1Byte</StructMemberAlignment>
+      <DebugInformationFormat>None</DebugInformationFormat>
+      <ConformanceMode>true</ConformanceMode>
+      <AdditionalIncludeDirectories>%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <EnableEnhancedInstructionSet>AdvancedVectorExtensions2</EnableEnhancedInstructionSet>
+      <AdditionalOptions />
+    </ClCompile>
+    <Link>
+      <SubSystem>Console</SubSystem>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <OptimizeReferences>true</OptimizeReferences>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <AdditionalDependencies>setupapi.lib;dbghelp.lib;$(RTE_SDK)\$(Platform)\$(Configuration)\librte_bus_pci\librte_bus_pci.lib;$(RTE_SDK)\$(Platform)\$(Configuration)\librte_pci\librte_pci.lib;$(RTE_SDK)\$(Platform)\$(Configuration)\librte_eal\librte_eal.lib;$(RTE_SDK)\$(Platform)\$(Configuration)\librte_ethdev\librte_ethdev.lib;$(RTE_SDK)\$(Platform)\$(Configuration)\librte_mempool\librte_mempool.lib;$(RTE_SDK)\$(Platform)\$(Configuration)\librte_mempool_ring\librte_mempool_ring.lib;$(RTE_SDK)\$(Platform)\$(Configuration)\librte_mbuf\librte_mbuf.lib;$(RTE_SDK)\$(Platform)\$(Configuration)\librte_ring\librte_ring.lib;$(RTE_SDK)\$(Platform)\$(Configuration)\librte_hash\librte_hash.lib;$(RTE_SDK)\$(Platform)\$(Configuration)\librte_distributor\librte_distributor.lib;$(RTE_SDK)\$(Platform)\$(Configuration)\librte_lpm\librte_lpm.lib;$(RTE_SDK)\$(Platform)\$(Configuration)\librte_cmdline\librte_cmdline.lib;$(RTE_SDK)\$(Platform)\$(Configuration)\librte_kvargs\librte_kvargs.lib;$(RTE_SDK)\$(Platform)\$(Configuration)\librte_pmd_i40e\librte_pmd_i40e.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClInclude Include="..\..\..\..\examples\l3fwd\l3fwd_common.h" />
+    <ClInclude Include="..\..\..\..\examples\l3fwd\l3fwd_em.h" />
+    <ClInclude Include="..\..\..\..\examples\l3fwd\l3fwd_em_hlm.h" />
+    <ClInclude Include="..\..\..\..\examples\l3fwd\l3fwd_em_hlm_neon.h" />
+    <ClInclude Include="..\..\..\..\examples\l3fwd\l3fwd_em_hlm_sse.h" />
+    <ClInclude Include="..\..\..\..\examples\l3fwd\l3fwd_em_sequential.h" />
+    <ClInclude Include="..\..\..\..\examples\l3fwd\l3fwd_lpm.h" />
+    <ClInclude Include="..\..\..\..\examples\l3fwd\l3fwd_lpm_neon.h" />
+    <ClInclude Include="..\..\..\..\examples\l3fwd\l3fwd_lpm_sse.h" />
+    <ClInclude Include="..\..\..\..\examples\l3fwd\l3fwd_neon.h" />
+    <ClInclude Include="..\..\..\..\examples\l3fwd\l3fwd_sse.h" />
+    <ClInclude Include="stdafx.h" />
+    <ClInclude Include="targetver.h" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\..\..\examples\l3fwd\l3fwd_em.c" />
+    <ClCompile Include="..\..\..\..\examples\l3fwd\l3fwd_lpm.c" />
+    <ClCompile Include="..\..\..\..\examples\l3fwd\main.c" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
 </Project>
\ No newline at end of file
diff --git a/mk/exec-env/windows/librte_pmd_net_virtio/librte_pmd_i40e.vcxproj.filters b/mk/exec-env/windows/librte_pmd_net_virtio/librte_pmd_i40e.vcxproj.filters
new file mode 100644
index 000000000..930d7f2d4
--- /dev/null
+++ b/mk/exec-env/windows/librte_pmd_net_virtio/librte_pmd_i40e.vcxproj.filters
@@ -0,0 +1,198 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup>
+    <Filter Include="Source Files">
+      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+    </Filter>
+    <Filter Include="Header Files">
+      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+      <Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions>
+    </Filter>
+    <Filter Include="Resource Files">
+      <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+      <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
+    </Filter>
+    <Filter Include="Header Files\windows override">
+      <UniqueIdentifier>{1deb2987-1a3d-4449-94d1-66950716e0db}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Source Files\base">
+      <UniqueIdentifier>{20a0182d-0b32-4ef5-b4bd-99308a0393d4}</UniqueIdentifier>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\..\..\drivers\net\i40e\i40e_rxtx.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\..\drivers\net\i40e\i40e_ethdev.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\..\drivers\net\i40e\base\i40e_common.c">
+      <Filter>Source Files\base</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\..\drivers\net\i40e\base\i40e_adminq.c">
+      <Filter>Source Files\base</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\..\drivers\net\i40e\base\i40e_lan_hmc.c">
+      <Filter>Source Files\base</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\..\drivers\net\i40e\base\i40e_nvm.c">
+      <Filter>Source Files\base</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\..\drivers\net\i40e\i40e_pf.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\..\drivers\net\i40e\base\i40e_hmc.c">
+      <Filter>Source Files\base</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\..\drivers\net\i40e\i40e_fdir.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\..\drivers\net\i40e\base\i40e_diag.c">
+      <Filter>Source Files\base</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\..\drivers\net\i40e\i40e_flow.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\..\drivers\net\i40e\i40e_tm.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\..\drivers\net\i40e\rte_pmd_i40e.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\..\drivers\net\i40e\base\i40e_dcb.c">
+      <Filter>Source Files\base</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\..\drivers\net\i40e\i40e_rxtx_vec_sse.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\..\drivers\net\i40e\i40e_rxtx_vec_avx2.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\..\drivers\net\i40e\i40e_vf_representor.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\..\..\..\drivers\net\i40e\i40e_rxtx.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\..\drivers\net\i40e\i40e_ethdev.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\..\drivers\net\i40e\i40e_logs.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\..\lib\librte_ether\rte_eth_ctrl.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\..\drivers\net\i40e\base\i40e_adminq_cmd.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\..\drivers\net\i40e\base\i40e_osdep.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\..\drivers\net\i40e\base\i40e_register.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\..\drivers\net\i40e\base\i40e_type.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\..\drivers\net\i40e\base\i40e_prototype.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\..\drivers\net\i40e\i40e_pf.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\..\drivers\net\i40e\base\i40e_alloc.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\..\drivers\net\i40e\base\i40e_hmc.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\..\drivers\net\i40e\base\i40e_lan_hmc.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\..\drivers\net\i40e\base\i40e_status.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\..\drivers\net\i40e\base\i40e_adminq.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\..\lib\librte_eal\windows\rte_override\rte_memcpy.h">
+      <Filter>Header Files\windows override</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\..\lib\librte_eal\windows\rte_override\rte_spinlock.h">
+      <Filter>Header Files\windows override</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\..\lib\librte_eal\windows\rte_override\rte_common.h">
+      <Filter>Header Files\windows override</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\..\lib\librte_eal\windows\rte_override\rte_cycles.h">
+      <Filter>Header Files\windows override</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\..\lib\librte_eal\windows\rte_override\rte_byteorder.h">
+      <Filter>Header Files\windows override</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\..\lib\librte_eal\common\include\rte_log.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\..\lib\librte_eal\common\include\rte_common.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\..\lib\librte_eal\common\include\generic\rte_cycles.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\..\lib\librte_eal\common\include\generic\rte_spinlock.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\..\lib\librte_eal\common\include\generic\rte_byteorder.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\..\lib\librte_eal\windows\rte_override\rte_pci.h">
+      <Filter>Header Files\windows override</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\..\lib\librte_eal\common\include\rte_pci.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\..\lib\librte_eal\common\include\rte_memzone.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\..\lib\librte_eal\common\include\rte_malloc.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\..\lib\librte_ether\rte_ethdev.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\..\lib\librte_ether\rte_ether.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\..\lib\librte_eal\common\include\rte_pci_dev_ids.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\..\lib\librte_eal\common\include\rte_dev.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\..\drivers\net\i40e\base\i40e_diag.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\..\drivers\net\i40e\base\i40e_devids.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\..\drivers\net\i40e\i40e_regs.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\..\drivers\net\i40e\rte_pmd_i40e.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\..\drivers\net\i40e\base\i40e_dcb.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\..\drivers\net\i40e\base\virtchnl.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\..\drivers\net\i40e\i40e_rxtx_vec_common.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+  </ItemGroup>
+</Project>
\ No newline at end of file
diff --git a/mk/exec-env/windows/librte_pmd_net_virtio/librte_pmd_net_virtio.vcxproj b/mk/exec-env/windows/librte_pmd_net_virtio/librte_pmd_net_virtio.vcxproj
new file mode 100644
index 000000000..e7cdd3b8f
--- /dev/null
+++ b/mk/exec-env/windows/librte_pmd_net_virtio/librte_pmd_net_virtio.vcxproj
@@ -0,0 +1,129 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\..\..\drivers\net\virtio\virtio_ethdev.c" />
+    <ClCompile Include="..\..\..\..\drivers\net\virtio\virtio_pci.c" />
+    <ClCompile Include="..\..\..\..\drivers\net\virtio\virtio_rxtx.c" />
+    <ClCompile Include="..\..\..\..\drivers\net\virtio\virtio_rxtx_simple.c" />
+    <ClCompile Include="..\..\..\..\drivers\net\virtio\virtio_rxtx_simple_sse.c" />
+    <ClCompile Include="..\..\..\..\drivers\net\virtio\virtqueue.c" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\..\..\..\drivers\net\virtio\virtio_ethdev.h" />
+    <ClInclude Include="..\..\..\..\drivers\net\virtio\virtio_logs.h" />
+    <ClInclude Include="..\..\..\..\drivers\net\virtio\virtio_pci.h" />
+    <ClInclude Include="..\..\..\..\drivers\net\virtio\virtio_ring.h" />
+    <ClInclude Include="..\..\..\..\drivers\net\virtio\virtio_rxtx.h" />
+    <ClInclude Include="..\..\..\..\drivers\net\virtio\virtio_rxtx_simple.h" />
+    <ClInclude Include="..\..\..\..\drivers\net\virtio\virtqueue.h" />
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{300385EB-75BD-4D40-953F-6131FD371982}</ProjectGuid>
+    <Keyword>Win32Proj</Keyword>
+    <RootNamespace>librte_pmd_i40e</RootNamespace>
+    <WindowsTargetPlatformVersion>10.0.17763.0</WindowsTargetPlatformVersion>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <UseDebugLibraries>true</UseDebugLibraries>
+    <PlatformToolset>llvm</PlatformToolset>
+    <CharacterSet>Unicode</CharacterSet>
+    <SpectreMitigation>false</SpectreMitigation>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <UseDebugLibraries>false</UseDebugLibraries>
+    <PlatformToolset>llvm</PlatformToolset>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <CharacterSet>Unicode</CharacterSet>
+    <SpectreMitigation>false</SpectreMitigation>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Label="Shared">
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="..\DpdkRteLib.props" />
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="..\DpdkRteLib.props" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <IntDir>$(RTE_SDK)\mk\exec-env\windows\$(Platform)\$(Configuration)\$(MSBuildProjectName)\</IntDir>
+    <OutDir>$(RTE_SDK)\$(Platform)\$(Configuration)\$(MSBuildProjectName)\</OutDir>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <IntDir>$(RTE_SDK)\mk\exec-env\windows\$(Platform)\$(Configuration)\$(MSBuildProjectName)\</IntDir>
+    <OutDir>$(RTE_SDK)\$(Platform)\$(Configuration)\$(MSBuildProjectName)\</OutDir>
+  </PropertyGroup>
+  <PropertyGroup Label="LLVM" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <UseLldLink>true</UseLldLink>
+  </PropertyGroup>
+  <PropertyGroup Label="LLVM" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <ClangClAdditionalOptions>
+    </ClangClAdditionalOptions>
+    <UseLldLink>true</UseLldLink>
+    <LldLinkAdditionalOptions>
+    </LldLinkAdditionalOptions>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <ClCompile>
+      <PrecompiledHeader>NotUsing</PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <Optimization>Disabled</Optimization>
+      <PreprocessorDefinitions>_DEBUG;_LIB;%(PreprocessorDefinitions);PF_DRIVER</PreprocessorDefinitions>
+      <SDLCheck>true</SDLCheck>
+      <StructMemberAlignment>1Byte</StructMemberAlignment>
+      <AdditionalOptions>
+      </AdditionalOptions>
+      <SupportJustMyCode>false</SupportJustMyCode>
+      <EnableEnhancedInstructionSet>AdvancedVectorExtensions2</EnableEnhancedInstructionSet>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <ConformanceMode>true</ConformanceMode>
+      <UseFullPaths>false</UseFullPaths>
+      <AdditionalIncludeDirectories>%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+    </ClCompile>
+    <Link>
+      <SubSystem>Windows</SubSystem>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <ClCompile>
+      <WarningLevel>Level3</WarningLevel>
+      <PrecompiledHeader>NotUsing</PrecompiledHeader>
+      <Optimization>MaxSpeed</Optimization>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <PreprocessorDefinitions>NDEBUG;_LIB;%(PreprocessorDefinitions);PF_DRIVER</PreprocessorDefinitions>
+      <SDLCheck>true</SDLCheck>
+      <StructMemberAlignment>1Byte</StructMemberAlignment>
+      <AdditionalIncludeDirectories>%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <ConformanceMode>true</ConformanceMode>
+      <AdditionalOptions />
+      <EnableEnhancedInstructionSet>AdvancedVectorExtensions2</EnableEnhancedInstructionSet>
+    </ClCompile>
+    <Link>
+      <SubSystem>Windows</SubSystem>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <OptimizeReferences>true</OptimizeReferences>
+    </Link>
+  </ItemDefinitionGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
\ No newline at end of file
-- 
2.25.1


^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [dpdk-dev] [RFC PATCH 5/5] mk/windows: add virtio-net PMD
  2020-02-28  6:07                   ` [dpdk-dev] [RFC PATCH 5/5] mk/windows: add virtio-net PMD Dmitry Kozlyuk
@ 2021-08-14 15:55                     ` William Tu
  2021-08-14 17:00                       ` Dmitry Kozlyuk
  0 siblings, 1 reply; 20+ messages in thread
From: William Tu @ 2021-08-14 15:55 UTC (permalink / raw)
  To: Dmitry Kozlyuk; +Cc: dpdk-dev

Hi Dmitry,

I'm looking at this patch and have some questions.

On Thu, Feb 27, 2020 at 10:08 PM Dmitry Kozlyuk
<dmitry.kozliuk@gmail.com> wrote:
>
> Signed-off-by: Dmitry Kozlyuk <dmitry.kozliuk@gmail.com>
> ---
>  drivers/net/virtio/virtio_ethdev.c            |   4 +
>  kernel/windows/netuio/netuio.inf              |   6 +
>  lib/librte_eal/windows/eal/eal.c              |   4 +

Why do we need these change below?
I thought to add a new Windows driver support, we only need to
compile the drivers/net/xxx, and add the device ID to netuio.inf,
at the dpdk-kmod repo?

>  mk/exec-env/windows/dpdk.sln                  | 754 +++++++++---------
>  mk/exec-env/windows/l2fwd/l2fwd.vcxproj       | 242 +++---
>  mk/exec-env/windows/l3fwd/l3fwd.vcxproj       | 292 +++----
>  .../librte_pmd_i40e.vcxproj.filters           | 198 +++++
>  .../librte_pmd_net_virtio.vcxproj             | 129 +++
>  8 files changed, 989 insertions(+), 640 deletions(-)
>  create mode 100644 mk/exec-env/windows/librte_pmd_net_virtio/librte_pmd_i40e.vcxproj.filters
>  create mode 100644 mk/exec-env/windows/librte_pmd_net_virtio/librte_pmd_net_virtio.vcxproj

Thanks
William

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [dpdk-dev] [RFC PATCH 5/5] mk/windows: add virtio-net PMD
  2021-08-14 15:55                     ` William Tu
@ 2021-08-14 17:00                       ` Dmitry Kozlyuk
  2021-08-15 14:28                         ` William Tu
  0 siblings, 1 reply; 20+ messages in thread
From: Dmitry Kozlyuk @ 2021-08-14 17:00 UTC (permalink / raw)
  To: William Tu; +Cc: dpdk-dev

2021-08-14 08:55 (UTC-0700), William Tu:
> Hi Dmitry,
> 
> I'm looking at this patch and have some questions.
> 
> On Thu, Feb 27, 2020 at 10:08 PM Dmitry Kozlyuk
> <dmitry.kozliuk@gmail.com> wrote:
> >
> > Signed-off-by: Dmitry Kozlyuk <dmitry.kozliuk@gmail.com>
> > ---
> >  drivers/net/virtio/virtio_ethdev.c            |   4 +
> >  kernel/windows/netuio/netuio.inf              |   6 +
> >  lib/librte_eal/windows/eal/eal.c              |   4 +  
> 
> Why do we need these change below?

1. At the time of the patch there was no dpdk-kmods repo.

2. The patch is for dpdk-draft-windows repo,
   which was using Vistual Studio projects instead of meson.

> I thought to add a new Windows driver support, we only need to
> compile the drivers/net/xxx, and add the device ID to netuio.inf,
> at the dpdk-kmod repo?

Yes.
Particularly for virtio it would also be required to support reading PCI
config space in bus/pci/windows (netuio already provides the support).

> 
> >  mk/exec-env/windows/dpdk.sln                  | 754 +++++++++---------
> >  mk/exec-env/windows/l2fwd/l2fwd.vcxproj       | 242 +++---
> >  mk/exec-env/windows/l3fwd/l3fwd.vcxproj       | 292 +++----
> >  .../librte_pmd_i40e.vcxproj.filters           | 198 +++++
> >  .../librte_pmd_net_virtio.vcxproj             | 129 +++
> >  8 files changed, 989 insertions(+), 640 deletions(-)
> >  create mode 100644 mk/exec-env/windows/librte_pmd_net_virtio/librte_pmd_i40e.vcxproj.filters
> >  create mode 100644 mk/exec-env/windows/librte_pmd_net_virtio/librte_pmd_net_virtio.vcxproj  
> 
> Thanks
> William


^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [dpdk-dev] [RFC PATCH 5/5] mk/windows: add virtio-net PMD
  2021-08-14 17:00                       ` Dmitry Kozlyuk
@ 2021-08-15 14:28                         ` William Tu
  0 siblings, 0 replies; 20+ messages in thread
From: William Tu @ 2021-08-15 14:28 UTC (permalink / raw)
  To: Dmitry Kozlyuk; +Cc: dpdk-dev

On Sat, Aug 14, 2021 at 10:01 AM Dmitry Kozlyuk
<dmitry.kozliuk@gmail.com> wrote:
>
> 2021-08-14 08:55 (UTC-0700), William Tu:
> > Hi Dmitry,
> >
> > I'm looking at this patch and have some questions.
> >
> > On Thu, Feb 27, 2020 at 10:08 PM Dmitry Kozlyuk
> > <dmitry.kozliuk@gmail.com> wrote:
> > >
> > > Signed-off-by: Dmitry Kozlyuk <dmitry.kozliuk@gmail.com>
> > > ---
> > >  drivers/net/virtio/virtio_ethdev.c            |   4 +
> > >  kernel/windows/netuio/netuio.inf              |   6 +
> > >  lib/librte_eal/windows/eal/eal.c              |   4 +
> >
> > Why do we need these change below?
>
> 1. At the time of the patch there was no dpdk-kmods repo.
>
> 2. The patch is for dpdk-draft-windows repo,
>    which was using Vistual Studio projects instead of meson.
>
> > I thought to add a new Windows driver support, we only need to
> > compile the drivers/net/xxx, and add the device ID to netuio.inf,
> > at the dpdk-kmod repo?
>
> Yes.
> Particularly for virtio it would also be required to support reading PCI
> config space in bus/pci/windows (netuio already provides the support).
>
Now I understand, thanks. William

^ permalink raw reply	[flat|nested] 20+ messages in thread

end of thread, other threads:[~2021-08-15 14:28 UTC | newest]

Thread overview: 20+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-02-08  8:45 [dpdk-dev] Windows Draft Build Dmitry Kozlyuk
2020-02-10  5:03 ` Ranjit Menon
2020-02-10  6:14   ` Dmitry Kozlyuk
2020-02-17  1:14     ` Dmitry Kozlyuk
2020-02-18 21:44       ` Ranjit Menon
2020-02-25  2:37         ` Dmitry Kozlyuk
2020-02-25  9:06           ` Ranjit Menon
2020-02-26  6:22             ` Dmitry Kozlyuk
2020-02-27  4:11               ` Dmitry Kozlyuk
2020-02-27 15:25                 ` William Tu
2020-02-27 15:42                   ` David Marchand
2020-02-28  6:07                 ` [dpdk-dev] [RFC PATCH 0/5] virtio-net support for Windows draft Dmitry Kozlyuk
2020-02-28  6:07                   ` [dpdk-dev] [RFC PATCH 1/5] pci/windows: add stubs for port IO Dmitry Kozlyuk
2020-02-28  6:07                   ` [dpdk-dev] [RFC PATCH 2/5] net: add stub for RARP packet generation on Windows Dmitry Kozlyuk
2020-02-28  6:07                   ` [dpdk-dev] [RFC PATCH 3/5] pci/windows: split config I/O into series of fixed-size operations Dmitry Kozlyuk
2020-02-28  6:07                   ` [dpdk-dev] [RFC PATCH 4/5] netuio: change class for Net to custom Dmitry Kozlyuk
2020-02-28  6:07                   ` [dpdk-dev] [RFC PATCH 5/5] mk/windows: add virtio-net PMD Dmitry Kozlyuk
2021-08-14 15:55                     ` William Tu
2021-08-14 17:00                       ` Dmitry Kozlyuk
2021-08-15 14:28                         ` William Tu

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).