mbox

[v3,0/6] app/testpmd: enable testpmd on Windows

Message ID 1618334363-15147-1-git-send-email-jizh@linux.microsoft.com (mailing list archive)
Headers

Message

Jie Zhou April 13, 2021, 5:19 p.m. UTC
  This patch is to enable testpmd on windows. It mainly includes:
- Enable building libraries on Windows that TestPMD depends on
- Enable building testpmd on Windows
- Resolve name collisions with Windows types
- Add clock_gettime_monotic for testpmd on Windows
- Make printf format work for both Linux and Windows
- Add missing macros
- Add missing IPPROTO_RAW to in.h
- Replace htons with RTE_BE16
- Replace inet_aton with inet_pton
- Fix parse_fec_mode to return fec_capa to remove compilation warning
- ...

Issue under active investigation:
- Recent DPDK upstream change "eal: detach memsegs on cleanup" exposed
  failure at eal exit with "EAL: Could not unmap memory: No Error".
  Investigating KERNELBASE!UnmapViewOfFile. The issue will cause system
  crash. Currently temporarily remove cleanup at exit on Windows.
  Will revert after issue root caused and fixed

Future work:
- Some issues discovered at validation need further investigations
  * Perf inconsistency: TPUT fluctuated significantly from runs
  * After traffic stop, port stats shows pps being 0 while bps not
  * mempool allocation only succeed with native. Other methods failed
    at rte_mem_lock/VirtualLock.
- Hot-plug on Windows not supported yet

---
V3 changes:
    - Split one patch into patchset
    - Replace mman APIs with rte_mem_xxx APIs
    - Use OS independant rte_rand
    - Add device event stubs for Windows
    - Disable unsupported Apps

---
V2 changes:
    - Fix commit message log long line issue
    - Fix coding style issues of pointer location
    - Fix indentation issue
    - Fix FreeBSD2101 compilation issue of AF_INET undeclared
---


Jie Zhou (6):
  app/testpmd: build libraries that testpmd depends on
  app/testpmd: define IPPROTO_RAW in in.h
  app/testpmd: add required Macros
  app/testpmd: add device event stubs on Windows
  app/testpmd: add rte_mem_lockall in librte_eal
  app/testpmd: enable testpmd on Windows

 app/meson.build                             |  10 +-
 app/pdump/meson.build                       |   6 +
 app/proc-info/meson.build                   |   6 +
 app/test-acl/meson.build                    |   6 +
 app/test-bbdev/meson.build                  |   6 +
 app/test-cmdline/meson.build                |   6 +
 app/test-compress-perf/meson.build          |   6 +
 app/test-crypto-perf/meson.build            |   6 +
 app/test-eventdev/meson.build               |   6 +
 app/test-fib/meson.build                    |   6 +
 app/test-flow-perf/meson.build              |   6 +
 app/test-pipeline/meson.build               |   6 +
 app/test-pmd/cmdline.c                      |  12 +-
 app/test-pmd/cmdline_flow.c                 | 440 ++++++++++----------
 app/test-pmd/config.c                       |  35 +-
 app/test-pmd/csumonly.c                     |   2 +-
 app/test-pmd/icmpecho.c                     |   4 +-
 app/test-pmd/ieee1588fwd.c                  |  10 +-
 app/test-pmd/meson.build                    |   4 +
 app/test-pmd/parameters.c                   |   8 +-
 app/test-pmd/testpmd.c                      |  44 +-
 app/test-pmd/testpmd.h                      |   4 +-
 app/test-regex/meson.build                  |   6 +
 app/test-sad/meson.build                    |   6 +
 app/test/meson.build                        |   6 +
 lib/librte_eal/include/rte_eal_paging.h     |  20 +
 lib/librte_eal/unix/eal_unix_memory.c       |  13 +
 lib/librte_eal/version.map                  |   1 +
 lib/librte_eal/windows/eal_dev.c            |  35 ++
 lib/librte_eal/windows/eal_memory.c         |  10 +
 lib/librte_eal/windows/include/netinet/in.h |   1 +
 lib/librte_eal/windows/include/rte_os.h     |  16 +
 lib/librte_eal/windows/meson.build          |   1 +
 lib/meson.build                             |   7 +
 34 files changed, 500 insertions(+), 261 deletions(-)
 create mode 100644 lib/librte_eal/windows/eal_dev.c