* [dpdk-dev] [PATCH 0/4] Support ice PMD on Windows @ 2021-03-03 21:59 Pallavi Kadam 2021-03-03 21:59 ` [dpdk-dev] [PATCH 1/4] build: enable iavf driver " Pallavi Kadam ` (4 more replies) 0 siblings, 5 replies; 32+ messages in thread From: Pallavi Kadam @ 2021-03-03 21:59 UTC (permalink / raw) To: dev, thomas Cc: ranjit.menon, qiming.yang, qi.z.zhang, ferruh.yigit, pallavi.kadam This patch-set enables building the Intel ice PMD on Windows. Depends-on: series-15230 ("bus/pci: fix probing for non-netuio bound devices") Pallavi Kadam (4): build: enable iavf driver on Windows net/ice: build on Windows net/ice: disable ice DDP package on Windows doc: update ice PMD and 21.05 release notes doc/guides/nics/features/ice.ini | 1 + doc/guides/nics/ice.rst | 16 ++++++++++++++-- doc/guides/rel_notes/release_21_05.rst | 4 ++++ drivers/common/cpt/meson.build | 6 ++++++ drivers/common/iavf/iavf_osdep.h | 9 +++++++++ drivers/common/meson.build | 3 --- drivers/common/mvep/meson.build | 6 ++++++ drivers/common/octeontx/meson.build | 6 ++++++ drivers/common/octeontx2/meson.build | 6 ++++++ drivers/common/qat/meson.build | 6 ++++++ drivers/common/sfc_efx/meson.build | 6 ++++++ drivers/net/ice/base/ice_flow.c | 2 +- drivers/net/ice/base/ice_flow.h | 2 +- drivers/net/ice/base/ice_osdep.h | 15 +++++++++++++++ drivers/net/ice/base/ice_switch.c | 2 +- drivers/net/ice/base/ice_vlan_mode.h | 1 + drivers/net/ice/ice_dcf_ethdev.c | 1 - drivers/net/ice/ice_dcf_parent.c | 10 +++++----- drivers/net/ice/ice_ethdev.c | 12 +++++++++--- drivers/net/ice/ice_rxtx_vec_avx2.c | 2 +- drivers/net/ice/ice_rxtx_vec_avx512.c | 2 +- drivers/net/ice/meson.build | 10 ++++------ 22 files changed, 103 insertions(+), 25 deletions(-) -- 2.18.0.windows.1 ^ permalink raw reply [flat|nested] 32+ messages in thread
* [dpdk-dev] [PATCH 1/4] build: enable iavf driver on Windows 2021-03-03 21:59 [dpdk-dev] [PATCH 0/4] Support ice PMD on Windows Pallavi Kadam @ 2021-03-03 21:59 ` Pallavi Kadam 2021-03-03 21:59 ` [dpdk-dev] [PATCH 2/4] net/ice: build " Pallavi Kadam ` (3 subsequent siblings) 4 siblings, 0 replies; 32+ messages in thread From: Pallavi Kadam @ 2021-03-03 21:59 UTC (permalink / raw) To: dev, thomas Cc: ranjit.menon, qiming.yang, qi.z.zhang, ferruh.yigit, pallavi.kadam Enable IAVF driver to build on Windows as it is required to build ice PMD. Disable all other drivers from common directory. This patch also includes fix for a macro redefinition warning in the IAVF driver. Signed-off-by: Pallavi Kadam <pallavi.kadam@intel.com> Reviewed-by: Ranjit Menon <ranjit.menon@intel.com> --- drivers/common/cpt/meson.build | 6 ++++++ drivers/common/iavf/iavf_osdep.h | 9 +++++++++ drivers/common/meson.build | 3 --- drivers/common/mvep/meson.build | 6 ++++++ drivers/common/octeontx/meson.build | 6 ++++++ drivers/common/octeontx2/meson.build | 6 ++++++ drivers/common/qat/meson.build | 6 ++++++ drivers/common/sfc_efx/meson.build | 6 ++++++ 8 files changed, 45 insertions(+), 3 deletions(-) diff --git a/drivers/common/cpt/meson.build b/drivers/common/cpt/meson.build index beecf0da3..1127267ba 100644 --- a/drivers/common/cpt/meson.build +++ b/drivers/common/cpt/meson.build @@ -1,6 +1,12 @@ # SPDX-License-Identifier: BSD-3-Clause # Copyright(c) 2018 Cavium, Inc +if is_windows + build = false + reason = 'not supported on Windows' + subdir_done() +endif + sources = files('cpt_fpm_tables.c', 'cpt_pmd_ops_helper.c') diff --git a/drivers/common/iavf/iavf_osdep.h b/drivers/common/iavf/iavf_osdep.h index eaefde88e..76c186a5b 100644 --- a/drivers/common/iavf/iavf_osdep.h +++ b/drivers/common/iavf/iavf_osdep.h @@ -55,6 +55,15 @@ typedef uint64_t s64; #define __be64 uint64_t #endif +/* Avoid macro redefinition warning on Windows */ +#ifdef RTE_EXEC_ENV_WINDOWS +#ifdef min +#undef min +#endif +#ifdef max +#undef max +#endif +#endif #define min(a, b) RTE_MIN(a, b) #define max(a, b) RTE_MAX(a, b) diff --git a/drivers/common/meson.build b/drivers/common/meson.build index ba6325adf..2a0c43054 100644 --- a/drivers/common/meson.build +++ b/drivers/common/meson.build @@ -1,9 +1,6 @@ # SPDX-License-Identifier: BSD-3-Clause # Copyright(c) 2018 Cavium, Inc -if is_windows - subdir_done() -endif std_deps = ['eal'] drivers = ['cpt', 'dpaax', 'iavf', 'mvep', 'octeontx', 'octeontx2', 'sfc_efx'] diff --git a/drivers/common/mvep/meson.build b/drivers/common/mvep/meson.build index 7cd968b38..a929e2311 100644 --- a/drivers/common/mvep/meson.build +++ b/drivers/common/mvep/meson.build @@ -4,6 +4,12 @@ # All rights reserved. # +if is_windows + build = false + reason = 'not supported on Windows' + subdir_done() +endif + dep = dependency('libmusdk', required: false, method: 'pkg-config') if not dep.found() build = false diff --git a/drivers/common/octeontx/meson.build b/drivers/common/octeontx/meson.build index 203d1ef49..02b57b95c 100644 --- a/drivers/common/octeontx/meson.build +++ b/drivers/common/octeontx/meson.build @@ -2,4 +2,10 @@ # Copyright(c) 2018 Cavium, Inc # +if is_windows + build = false + reason = 'not supported on Windows' + subdir_done() +endif + sources = files('octeontx_mbox.c') diff --git a/drivers/common/octeontx2/meson.build b/drivers/common/octeontx2/meson.build index 84fb11524..97293d1a7 100644 --- a/drivers/common/octeontx2/meson.build +++ b/drivers/common/octeontx2/meson.build @@ -2,6 +2,12 @@ # Copyright(C) 2019 Marvell International Ltd. # +if is_windows + build = false + reason = 'not supported on Windows' + subdir_done() +endif + if not dpdk_conf.get('RTE_ARCH_64') build = false reason = 'only supported on 64-bit' diff --git a/drivers/common/qat/meson.build b/drivers/common/qat/meson.build index 67f7aca97..3ad7dd501 100644 --- a/drivers/common/qat/meson.build +++ b/drivers/common/qat/meson.build @@ -1,6 +1,12 @@ # SPDX-License-Identifier: BSD-3-Clause # Copyright(c) 2017-2018 Intel Corporation +if is_windows + build = false + reason = 'not supported on Windows' + subdir_done() +endif + qat_crypto = true qat_crypto_path = 'crypto/qat' qat_crypto_relpath = '../../' + qat_crypto_path diff --git a/drivers/common/sfc_efx/meson.build b/drivers/common/sfc_efx/meson.build index 6cb9f0737..a2dfed0ec 100644 --- a/drivers/common/sfc_efx/meson.build +++ b/drivers/common/sfc_efx/meson.build @@ -5,6 +5,12 @@ # This software was jointly developed between OKTET Labs (under contract # for Solarflare) and Solarflare Communications, Inc. +if is_windows + build = false + reason = 'not supported on Windows' + subdir_done() +endif + if (arch_subdir != 'x86' or not dpdk_conf.get('RTE_ARCH_64')) and (arch_subdir != 'arm' or not host_machine.cpu_family().startswith('aarch64')) build = false reason = 'only supported on x86_64 and aarch64' -- 2.18.0.windows.1 ^ permalink raw reply [flat|nested] 32+ messages in thread
* [dpdk-dev] [PATCH 2/4] net/ice: build on Windows 2021-03-03 21:59 [dpdk-dev] [PATCH 0/4] Support ice PMD on Windows Pallavi Kadam 2021-03-03 21:59 ` [dpdk-dev] [PATCH 1/4] build: enable iavf driver " Pallavi Kadam @ 2021-03-03 21:59 ` Pallavi Kadam 2021-03-04 12:56 ` David Marchand 2021-03-03 21:59 ` [dpdk-dev] [PATCH 3/4] net/ice: disable ice DDP package " Pallavi Kadam ` (2 subsequent siblings) 4 siblings, 1 reply; 32+ messages in thread From: Pallavi Kadam @ 2021-03-03 21:59 UTC (permalink / raw) To: dev, thomas Cc: ranjit.menon, qiming.yang, qi.z.zhang, ferruh.yigit, pallavi.kadam Add Intel ice PMD support on Windows. Remove #include sys/ioctl header file as it is not needed. Replace x86intrin.h with rte_vect.h to avoid __m_prefetchw conflicting types. Replace POSIX usleep() API with rte API. Add a new macro for the access() API as the original function has been deprecated on Windows. Add extra cflags '-fno-asynchronous-unwind-tables' to avoid MinGW build error: Error: invalid register for .seh_savexmm Signed-off-by: Pallavi Kadam <pallavi.kadam@intel.com> Reviewed-by: Ranjit Menon <ranjit.menon@intel.com> --- drivers/net/ice/base/ice_flow.c | 2 +- drivers/net/ice/base/ice_flow.h | 2 +- drivers/net/ice/base/ice_osdep.h | 15 +++++++++++++++ drivers/net/ice/base/ice_switch.c | 2 +- drivers/net/ice/base/ice_vlan_mode.h | 1 + drivers/net/ice/ice_dcf_ethdev.c | 1 - drivers/net/ice/ice_dcf_parent.c | 10 +++++----- drivers/net/ice/ice_ethdev.c | 6 +++--- drivers/net/ice/ice_rxtx_vec_avx2.c | 2 +- drivers/net/ice/ice_rxtx_vec_avx512.c | 2 +- drivers/net/ice/meson.build | 10 ++++------ 11 files changed, 33 insertions(+), 20 deletions(-) diff --git a/drivers/net/ice/base/ice_flow.c b/drivers/net/ice/base/ice_flow.c index a081fbe5a..a4c233d4c 100644 --- a/drivers/net/ice/base/ice_flow.c +++ b/drivers/net/ice/base/ice_flow.c @@ -3139,7 +3139,7 @@ enum ice_status ice_flow_rem_entry(struct ice_hw *hw, enum ice_block blk, if (entry_h == ICE_FLOW_ENTRY_HANDLE_INVAL) return ICE_ERR_PARAM; - entry = ICE_FLOW_ENTRY_PTR((unsigned long)entry_h); + entry = ICE_FLOW_ENTRY_PTR((intptr_t)entry_h); /* Retain the pointer to the flow profile as the entry will be freed */ prof = entry->prof; diff --git a/drivers/net/ice/base/ice_flow.h b/drivers/net/ice/base/ice_flow.h index c3bce1319..af15ecb0f 100644 --- a/drivers/net/ice/base/ice_flow.h +++ b/drivers/net/ice/base/ice_flow.h @@ -446,7 +446,7 @@ struct ice_flow_entry { u8 acts_cnt; }; -#define ICE_FLOW_ENTRY_HNDL(e) ((unsigned long)e) +#define ICE_FLOW_ENTRY_HNDL(e) ((intptr_t)e) #define ICE_FLOW_ENTRY_PTR(h) ((struct ice_flow_entry *)(h)) struct ice_flow_prof { diff --git a/drivers/net/ice/base/ice_osdep.h b/drivers/net/ice/base/ice_osdep.h index 46ac86834..f4cc762e9 100644 --- a/drivers/net/ice/base/ice_osdep.h +++ b/drivers/net/ice/base/ice_osdep.h @@ -62,9 +62,24 @@ typedef uint64_t s64; #define __be64 uint64_t #endif +/* Avoid macro redefinition warning on Windows */ +#ifdef RTE_EXEC_ENV_WINDOWS +#ifdef min +#undef min +#endif +#ifdef max +#undef max +#endif +#endif #define min(a, b) RTE_MIN(a, b) #define max(a, b) RTE_MAX(a, b) +#ifdef RTE_EXEC_ENV_WINDOWS +#define ice_access _access +#else +#define ice_access access +#endif + #define FIELD_SIZEOF(t, f) RTE_SIZEOF_FIELD(t, f) #define ARRAY_SIZE(arr) RTE_DIM(arr) diff --git a/drivers/net/ice/base/ice_switch.c b/drivers/net/ice/base/ice_switch.c index 4568242c1..b546e3d4e 100644 --- a/drivers/net/ice/base/ice_switch.c +++ b/drivers/net/ice/base/ice_switch.c @@ -6684,7 +6684,7 @@ ice_fill_valid_words(struct ice_adv_lkup_elem *rule, for (j = 0; j < sizeof(rule->m_u) / sizeof(u16); j++) if (((u16 *)&rule->m_u)[j] && - rule->type < ARRAY_SIZE(ice_prot_ext)) { + (unsigned long long)rule->type < ARRAY_SIZE(ice_prot_ext)) { /* No more space to accommodate */ if (word >= ICE_MAX_CHAIN_WORDS) return 0; diff --git a/drivers/net/ice/base/ice_vlan_mode.h b/drivers/net/ice/base/ice_vlan_mode.h index e9f13e781..bcb6ff713 100644 --- a/drivers/net/ice/base/ice_vlan_mode.h +++ b/drivers/net/ice/base/ice_vlan_mode.h @@ -6,6 +6,7 @@ #define _ICE_VLAN_MODE_H_ #include "ice_osdep.h" +#include "ice_status.h" struct ice_hw; diff --git a/drivers/net/ice/ice_dcf_ethdev.c b/drivers/net/ice/ice_dcf_ethdev.c index e0772295e..af4731f55 100644 --- a/drivers/net/ice/ice_dcf_ethdev.c +++ b/drivers/net/ice/ice_dcf_ethdev.c @@ -5,7 +5,6 @@ #include <errno.h> #include <stdbool.h> #include <sys/types.h> -#include <sys/ioctl.h> #include <unistd.h> #include <rte_interrupts.h> diff --git a/drivers/net/ice/ice_dcf_parent.c b/drivers/net/ice/ice_dcf_parent.c index 476fd4906..a8571b35e 100644 --- a/drivers/net/ice/ice_dcf_parent.c +++ b/drivers/net/ice/ice_dcf_parent.c @@ -121,7 +121,7 @@ ice_dcf_vsi_update_service_handler(void *param) struct ice_dcf_hw *hw = reset_param->dcf_hw; struct ice_dcf_adapter *adapter; - usleep(ICE_DCF_VSI_UPDATE_SERVICE_INTERVAL); + rte_delay_us(ICE_DCF_VSI_UPDATE_SERVICE_INTERVAL); rte_spinlock_lock(&vsi_update_lock); @@ -315,24 +315,24 @@ ice_dcf_request_pkg_name(struct ice_hw *hw, char *pkg_name) snprintf(pkg_name, ICE_MAX_PKG_FILENAME_SIZE, ICE_PKG_FILE_SEARCH_PATH_UPDATES "ice-%016llx.pkg", (unsigned long long)dsn); - if (!access(pkg_name, 0)) + if (!ice_access(pkg_name, 0)) return 0; snprintf(pkg_name, ICE_MAX_PKG_FILENAME_SIZE, ICE_PKG_FILE_SEARCH_PATH_DEFAULT "ice-%016llx.pkg", (unsigned long long)dsn); - if (!access(pkg_name, 0)) + if (!ice_access(pkg_name, 0)) return 0; pkg_file_direct: snprintf(pkg_name, ICE_MAX_PKG_FILENAME_SIZE, "%s", ICE_PKG_FILE_UPDATES); - if (!access(pkg_name, 0)) + if (!ice_access(pkg_name, 0)) return 0; snprintf(pkg_name, ICE_MAX_PKG_FILENAME_SIZE, "%s", ICE_PKG_FILE_DEFAULT); - if (!access(pkg_name, 0)) + if (!ice_access(pkg_name, 0)) return 0; return -1; diff --git a/drivers/net/ice/ice_ethdev.c b/drivers/net/ice/ice_ethdev.c index dfd99ace9..d22bc92ff 100644 --- a/drivers/net/ice/ice_ethdev.c +++ b/drivers/net/ice/ice_ethdev.c @@ -1674,17 +1674,17 @@ ice_pkg_file_search_path(struct rte_pci_device *pci_dev, char *pkg_file) strncpy(pkg_file, ICE_PKG_FILE_SEARCH_PATH_UPDATES, ICE_MAX_PKG_FILENAME_SIZE); - if (!access(strcat(pkg_file, opt_ddp_filename), 0)) + if (!ice_access(strcat(pkg_file, opt_ddp_filename), 0)) return 0; strncpy(pkg_file, ICE_PKG_FILE_SEARCH_PATH_DEFAULT, ICE_MAX_PKG_FILENAME_SIZE); - if (!access(strcat(pkg_file, opt_ddp_filename), 0)) + if (!ice_access(strcat(pkg_file, opt_ddp_filename), 0)) return 0; fail_dsn: strncpy(pkg_file, ICE_PKG_FILE_UPDATES, ICE_MAX_PKG_FILENAME_SIZE); - if (!access(pkg_file, 0)) + if (!ice_access(pkg_file, 0)) return 0; strncpy(pkg_file, ICE_PKG_FILE_DEFAULT, ICE_MAX_PKG_FILENAME_SIZE); return 0; diff --git a/drivers/net/ice/ice_rxtx_vec_avx2.c b/drivers/net/ice/ice_rxtx_vec_avx2.c index 7838e1778..a56fdd9a9 100644 --- a/drivers/net/ice/ice_rxtx_vec_avx2.c +++ b/drivers/net/ice/ice_rxtx_vec_avx2.c @@ -4,7 +4,7 @@ #include "ice_rxtx_vec_common.h" -#include <x86intrin.h> +#include <rte_vect.h> #ifndef __INTEL_COMPILER #pragma GCC diagnostic ignored "-Wcast-qual" diff --git a/drivers/net/ice/ice_rxtx_vec_avx512.c b/drivers/net/ice/ice_rxtx_vec_avx512.c index fd5d72432..00de45479 100644 --- a/drivers/net/ice/ice_rxtx_vec_avx512.c +++ b/drivers/net/ice/ice_rxtx_vec_avx512.c @@ -4,7 +4,7 @@ #include "ice_rxtx_vec_common.h" -#include <x86intrin.h> +#include <rte_vect.h> #ifndef __INTEL_COMPILER #pragma GCC diagnostic ignored "-Wcast-qual" diff --git a/drivers/net/ice/meson.build b/drivers/net/ice/meson.build index 9a67c8f7b..44ef64b4c 100644 --- a/drivers/net/ice/meson.build +++ b/drivers/net/ice/meson.build @@ -1,12 +1,6 @@ # SPDX-License-Identifier: BSD-3-Clause # Copyright(c) 2018 Intel Corporation -if is_windows - build = false - reason = 'not supported on Windows' - subdir_done() -endif - subdir('base') objs = [base_objs] @@ -26,6 +20,10 @@ includes += include_directories('base', '../../common/iavf') if arch_subdir == 'x86' sources += files('ice_rxtx_vec_sse.c') + if is_windows and cc.get_id() != 'clang' + cflags += ['-fno-asynchronous-unwind-tables'] + endif + # compile AVX2 version if either: # a. we have AVX supported in minimum instruction set baseline # b. it's not minimum instruction set, but supported by compiler -- 2.18.0.windows.1 ^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: [dpdk-dev] [PATCH 2/4] net/ice: build on Windows 2021-03-03 21:59 ` [dpdk-dev] [PATCH 2/4] net/ice: build " Pallavi Kadam @ 2021-03-04 12:56 ` David Marchand 2021-03-08 23:30 ` Kadam, Pallavi 0 siblings, 1 reply; 32+ messages in thread From: David Marchand @ 2021-03-04 12:56 UTC (permalink / raw) To: Pallavi Kadam Cc: dev, Thomas Monjalon, Ranjit Menon, Qiming Yang, Qi Zhang, Yigit, Ferruh On Wed, Mar 3, 2021 at 10:27 PM Pallavi Kadam <pallavi.kadam@intel.com> wrote: > > Add Intel ice PMD support on Windows. > Remove #include sys/ioctl header file as it is not needed. > Replace x86intrin.h with rte_vect.h to avoid __m_prefetchw conflicting > types. > Replace POSIX usleep() API with rte API. > Add a new macro for the access() API as the original function > has been deprecated on Windows. > Add extra cflags '-fno-asynchronous-unwind-tables' > to avoid MinGW build error: > Error: invalid register for .seh_savexmm Fyi, caught at the UNH lab: http://mails.dpdk.org/archives/test-report/2021-March/180813.html [205/277] Compiling C object drivers/net/ice/base/a42f040@@ice_base at sta/ice_acl_ctrl.c.obj. [206/277] Compiling C object drivers/net/ice/base/a42f040@@ice_base at sta/ice_flow.c.obj. FAILED: drivers/net/ice/base/a42f040@@ice_base at sta/ice_flow.c.obj gcc @drivers/net/ice/base/a42f040@@ice_base at sta/ice_flow.c.obj.rsp {standard input}: Assembler messages: {standard input}:1677: Error: invalid register for .seh_savexmm {standard input}:3985: Error: invalid register for .seh_savexmm [207/277] Linking static target drivers/libtmp_rte_net_i40e.a. [208/277] Compiling C object drivers/net/ice/base/a42f040@@ice_base at sta/ice_sched.c.obj. [209/277] Compiling C object drivers/net/ice/base/a42f040@@ice_base at sta/ice_dcb.c.obj. [210/277] Compiling C object drivers/net/ice/base/a42f040@@ice_base at sta/ice_flex_pipe.c.obj. [211/277] Compiling C object drivers/a715181@@tmp_rte_net_ice at sta/net_ice_ice_ethdev.c.obj. ninja: build stopped: subcommand failed. I suppose this is because "-fno-asynchronous-unwind-tables" is not passed to the base driver cflags. Bonus question: should we make this workaround global for mingw compilation? -- David Marchand ^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: [dpdk-dev] [PATCH 2/4] net/ice: build on Windows 2021-03-04 12:56 ` David Marchand @ 2021-03-08 23:30 ` Kadam, Pallavi 0 siblings, 0 replies; 32+ messages in thread From: Kadam, Pallavi @ 2021-03-08 23:30 UTC (permalink / raw) To: David Marchand Cc: dev, Thomas Monjalon, Ranjit Menon, Qiming Yang, Qi Zhang, Yigit, Ferruh Hi David On 3/4/2021 4:56 AM, David Marchand wrote: > On Wed, Mar 3, 2021 at 10:27 PM Pallavi Kadam <pallavi.kadam@intel.com> wrote: >> Add Intel ice PMD support on Windows. >> Remove #include sys/ioctl header file as it is not needed. >> Replace x86intrin.h with rte_vect.h to avoid __m_prefetchw conflicting >> types. >> Replace POSIX usleep() API with rte API. >> Add a new macro for the access() API as the original function >> has been deprecated on Windows. >> Add extra cflags '-fno-asynchronous-unwind-tables' >> to avoid MinGW build error: >> Error: invalid register for .seh_savexmm > Fyi, caught at the UNH lab: > > http://mails.dpdk.org/archives/test-report/2021-March/180813.html > > [205/277] Compiling C object drivers/net/ice/base/a42f040@@ice_base at > sta/ice_acl_ctrl.c.obj. > [206/277] Compiling C object drivers/net/ice/base/a42f040@@ice_base at > sta/ice_flow.c.obj. > FAILED: drivers/net/ice/base/a42f040@@ice_base at sta/ice_flow.c.obj > gcc @drivers/net/ice/base/a42f040@@ice_base at sta/ice_flow.c.obj.rsp > {standard input}: Assembler messages: > {standard input}:1677: Error: invalid register for .seh_savexmm > {standard input}:3985: Error: invalid register for .seh_savexmm > [207/277] Linking static target drivers/libtmp_rte_net_i40e.a. > [208/277] Compiling C object drivers/net/ice/base/a42f040@@ice_base at > sta/ice_sched.c.obj. > [209/277] Compiling C object drivers/net/ice/base/a42f040@@ice_base at > sta/ice_dcb.c.obj. > [210/277] Compiling C object drivers/net/ice/base/a42f040@@ice_base at > sta/ice_flex_pipe.c.obj. > [211/277] Compiling C object drivers/a715181@@tmp_rte_net_ice at > sta/net_ice_ice_ethdev.c.obj. > ninja: build stopped: subcommand failed. > > I suppose this is because "-fno-asynchronous-unwind-tables" is not > passed to the base driver cflags. > Bonus question: should we make this workaround global for mingw compilation? Thanks for the log. We will send a fix by passing the cflag to the base driver in v2. However, I am not able to reproduce this error on my system. I tried using the same version as UNH lab has: gcc 8.1.0 "gcc (x86_64-posix-seh-rev0, Built by MinGW-W64 project) 8.1.0" > > ^ permalink raw reply [flat|nested] 32+ messages in thread
* [dpdk-dev] [PATCH 3/4] net/ice: disable ice DDP package on Windows 2021-03-03 21:59 [dpdk-dev] [PATCH 0/4] Support ice PMD on Windows Pallavi Kadam 2021-03-03 21:59 ` [dpdk-dev] [PATCH 1/4] build: enable iavf driver " Pallavi Kadam 2021-03-03 21:59 ` [dpdk-dev] [PATCH 2/4] net/ice: build " Pallavi Kadam @ 2021-03-03 21:59 ` Pallavi Kadam 2021-03-03 23:12 ` Dmitry Kozlyuk 2021-03-03 21:59 ` [dpdk-dev] [PATCH 4/4] doc: update ice PMD and 21.05 release notes Pallavi Kadam 2021-03-11 1:58 ` [dpdk-dev] [PATCH v2 0/3] Support ice PMD on Windows Pallavi Kadam 4 siblings, 1 reply; 32+ messages in thread From: Pallavi Kadam @ 2021-03-03 21:59 UTC (permalink / raw) To: dev, thomas Cc: ranjit.menon, qiming.yang, qi.z.zhang, ferruh.yigit, pallavi.kadam Disable loading of private DDP packages in ice PMD on Windows. Signed-off-by: Pallavi Kadam <pallavi.kadam@intel.com> Reviewed-by: Ranjit Menon <ranjit.menon@intel.com> --- drivers/net/ice/ice_ethdev.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/drivers/net/ice/ice_ethdev.c b/drivers/net/ice/ice_ethdev.c index d22bc92ff..1f5f16d42 100644 --- a/drivers/net/ice/ice_ethdev.c +++ b/drivers/net/ice/ice_ethdev.c @@ -1652,6 +1652,7 @@ ice_pf_setup(struct ice_pf *pf) * Extract device serial number from PCIe Configuration Space and * determine the pkg file path according to the DSN. */ +#ifndef RTE_EXEC_ENV_WINDOWS static int ice_pkg_file_search_path(struct rte_pci_device *pci_dev, char *pkg_file) { @@ -1689,6 +1690,7 @@ ice_pkg_file_search_path(struct rte_pci_device *pci_dev, char *pkg_file) strncpy(pkg_file, ICE_PKG_FILE_DEFAULT, ICE_MAX_PKG_FILENAME_SIZE); return 0; } +#endif enum ice_pkg_type ice_load_pkg_type(struct ice_hw *hw) @@ -1714,6 +1716,7 @@ ice_load_pkg_type(struct ice_hw *hw) return package_type; } +#ifndef RTE_EXEC_ENV_WINDOWS static int ice_load_pkg(struct rte_eth_dev *dev) { struct ice_hw *hw = ICE_DEV_PRIVATE_TO_HW(dev->data->dev_private); @@ -1785,6 +1788,7 @@ static int ice_load_pkg(struct rte_eth_dev *dev) rte_free(buf); return err; } +#endif static void ice_base_queue_get(struct ice_pf *pf) @@ -2065,6 +2069,7 @@ ice_dev_init(struct rte_eth_dev *dev) return -EINVAL; } +#ifndef RTE_EXEC_ENV_WINDOWS ret = ice_load_pkg(dev); if (ret) { if (ad->devargs.safe_mode_support == 0) { @@ -2077,6 +2082,7 @@ ice_dev_init(struct rte_eth_dev *dev) "Entering Safe Mode"); ad->is_safe_mode = 1; } +#endif PMD_INIT_LOG(INFO, "FW %d.%d.%05d API %d.%d", hw->fw_maj_ver, hw->fw_min_ver, hw->fw_build, -- 2.18.0.windows.1 ^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: [dpdk-dev] [PATCH 3/4] net/ice: disable ice DDP package on Windows 2021-03-03 21:59 ` [dpdk-dev] [PATCH 3/4] net/ice: disable ice DDP package " Pallavi Kadam @ 2021-03-03 23:12 ` Dmitry Kozlyuk 2021-03-05 0:31 ` Kadam, Pallavi 0 siblings, 1 reply; 32+ messages in thread From: Dmitry Kozlyuk @ 2021-03-03 23:12 UTC (permalink / raw) To: Pallavi Kadam Cc: dev, thomas, ranjit.menon, qiming.yang, qi.z.zhang, ferruh.yigit 2021-03-03 13:59, Pallavi Kadam: > Disable loading of private DDP packages in ice PMD on Windows. > > Signed-off-by: Pallavi Kadam <pallavi.kadam@intel.com> > Reviewed-by: Ranjit Menon <ranjit.menon@intel.com> > --- > drivers/net/ice/ice_ethdev.c | 6 ++++++ > 1 file changed, 6 insertions(+) Are DDP packages unavailable on Windows or is their loading disabled because reading from PCI config space is not implemented by netuio? In the former case, please document the reason in commit (and probably in used guide?). In the latter case, could you instead fix rte_pci_config_read() to return (-1) on Windows, so that DDP loading automatically fails at reading capabilities? This would ensure ICE PMD remains portable by compiling all of its code in every platform. ^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: [dpdk-dev] [PATCH 3/4] net/ice: disable ice DDP package on Windows 2021-03-03 23:12 ` Dmitry Kozlyuk @ 2021-03-05 0:31 ` Kadam, Pallavi 0 siblings, 0 replies; 32+ messages in thread From: Kadam, Pallavi @ 2021-03-05 0:31 UTC (permalink / raw) To: Dmitry Kozlyuk Cc: dev, thomas, ranjit.menon, qiming.yang, qi.z.zhang, ferruh.yigit Hi Dmitry, On 3/3/2021 3:12 PM, Dmitry Kozlyuk wrote: > 2021-03-03 13:59, Pallavi Kadam: >> Disable loading of private DDP packages in ice PMD on Windows. >> >> Signed-off-by: Pallavi Kadam <pallavi.kadam@intel.com> >> Reviewed-by: Ranjit Menon <ranjit.menon@intel.com> >> --- >> drivers/net/ice/ice_ethdev.c | 6 ++++++ >> 1 file changed, 6 insertions(+) > Are DDP packages unavailable on Windows or is their loading disabled because > reading from PCI config space is not implemented by netuio? In the former > case, please document the reason in commit (and probably in used guide?). > In the latter case, could you instead fix rte_pci_config_read() to return (-1) > on Windows, so that DDP loading automatically fails at reading capabilities? > This would ensure ICE PMD remains portable by compiling all of its code in > every platform. Yes, loading of external DDP package is not supported on Windows. Will update the commit message and the ice user guide accordingly in v2. ^ permalink raw reply [flat|nested] 32+ messages in thread
* [dpdk-dev] [PATCH 4/4] doc: update ice PMD and 21.05 release notes 2021-03-03 21:59 [dpdk-dev] [PATCH 0/4] Support ice PMD on Windows Pallavi Kadam ` (2 preceding siblings ...) 2021-03-03 21:59 ` [dpdk-dev] [PATCH 3/4] net/ice: disable ice DDP package " Pallavi Kadam @ 2021-03-03 21:59 ` Pallavi Kadam 2021-03-03 23:13 ` Dmitry Kozlyuk 2021-03-11 1:58 ` [dpdk-dev] [PATCH v2 0/3] Support ice PMD on Windows Pallavi Kadam 4 siblings, 1 reply; 32+ messages in thread From: Pallavi Kadam @ 2021-03-03 21:59 UTC (permalink / raw) To: dev, thomas Cc: ranjit.menon, qiming.yang, qi.z.zhang, ferruh.yigit, pallavi.kadam [-- Warning: decoded text below may be mangled, UTF-8 assumed --] [-- Attachment #1: Type: text/plain; charset=y, Size: 2757 bytes --] Add documentation to support ice PMD on Windows. Update the release notes and features list for the same. Signed-off-by: Pallavi Kadam <pallavi.kadam@intel.com> Reviewed-by: Ranjit Menon <ranjit.menon@intel.com> --- doc/guides/nics/features/ice.ini | 1 + doc/guides/nics/ice.rst | 16 ++++++++++++++-- doc/guides/rel_notes/release_21_05.rst | 4 ++++ 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/doc/guides/nics/features/ice.ini b/doc/guides/nics/features/ice.ini index e30a7d2e5..2b93872b1 100644 --- a/doc/guides/nics/features/ice.ini +++ b/doc/guides/nics/features/ice.ini @@ -40,5 +40,6 @@ Module EEPROM dump = Y Multiprocess aware = Y FreeBSD = Y Linux = Y +Windows = Y x86-32 = Y x86-64 = Y diff --git a/doc/guides/nics/ice.rst b/doc/guides/nics/ice.rst index ccda26f82..d9d4da505 100644 --- a/doc/guides/nics/ice.rst +++ b/doc/guides/nics/ice.rst @@ -8,8 +8,8 @@ The ice PMD (**librte_net_ice**) provides poll mode driver support for 10/25/50/100 Gbps Intel® Ethernet 800 Series Network Adapters based on the Intel Ethernet Controller E810 and Intel Ethernet Connection E822/E823. -Prerequisites -------------- +Linux Prerequisites +------------------- - Follow the DPDK :ref:`Getting Started Guide for Linux <linux_gsg>` to setup the basic DPDK environment. @@ -25,6 +25,18 @@ Prerequisites - To understand DDP for COMMs usage with DPDK, please review `Intel® Ethernet 800 Series Telecommunication (Comms) Dynamic Device Personalization (DDP) Package <https://cdrdv2.intel.com/v1/dl/getContent/618651>`_. +Windows Prerequisites +--------------------- + +- Follow the DPDK `Getting Started Guide for Windows <https://doc.dpdk.org/guides/windows_gsg/index.html>`_ to setup the basic DPDK environment. + +- Identify the Intel® Ethernet adapter and get the latest NVM/FW version. + +- To access any Intel® Ethernet hardware, load the NetUIO driver in place of existing built-in (inbox) driver. + +- To load NetUIO driver, follow the steps mentioned in `dpdk-kmods repository + <https://git.dpdk.org/dpdk-kmods/tree/windows/netuio/README.rst>`_. + Recommended Matching List ------------------------- diff --git a/doc/guides/rel_notes/release_21_05.rst b/doc/guides/rel_notes/release_21_05.rst index 5aa9ed7db..e28d9a6c8 100644 --- a/doc/guides/rel_notes/release_21_05.rst +++ b/doc/guides/rel_notes/release_21_05.rst @@ -55,6 +55,10 @@ New Features Also, make sure to start the actual text at the margin. ======================================================= +* **Updated Intel ice driver.** + + * Added Intel ice support on Windows. + Removed Items ------------- -- 2.18.0.windows.1 ^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: [dpdk-dev] [PATCH 4/4] doc: update ice PMD and 21.05 release notes 2021-03-03 21:59 ` [dpdk-dev] [PATCH 4/4] doc: update ice PMD and 21.05 release notes Pallavi Kadam @ 2021-03-03 23:13 ` Dmitry Kozlyuk 2021-03-05 0:25 ` Kadam, Pallavi 0 siblings, 1 reply; 32+ messages in thread From: Dmitry Kozlyuk @ 2021-03-03 23:13 UTC (permalink / raw) To: Pallavi Kadam Cc: dev, thomas, ranjit.menon, qiming.yang, qi.z.zhang, ferruh.yigit 2021-03-03 13:59, Pallavi Kadam: > Add documentation to support ice PMD on Windows. > Update the release notes and features list for the same. > > Signed-off-by: Pallavi Kadam <pallavi.kadam@intel.com> > Reviewed-by: Ranjit Menon <ranjit.menon@intel.com> > --- > doc/guides/nics/features/ice.ini | 1 + > doc/guides/nics/ice.rst | 16 ++++++++++++++-- > doc/guides/rel_notes/release_21_05.rst | 4 ++++ > 3 files changed, 19 insertions(+), 2 deletions(-) It is preferred to update docs in single commit with code. ^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: [dpdk-dev] [PATCH 4/4] doc: update ice PMD and 21.05 release notes 2021-03-03 23:13 ` Dmitry Kozlyuk @ 2021-03-05 0:25 ` Kadam, Pallavi 0 siblings, 0 replies; 32+ messages in thread From: Kadam, Pallavi @ 2021-03-05 0:25 UTC (permalink / raw) To: Dmitry Kozlyuk Cc: dev, thomas, ranjit.menon, qiming.yang, qi.z.zhang, ferruh.yigit On 3/3/2021 3:13 PM, Dmitry Kozlyuk wrote: > 2021-03-03 13:59, Pallavi Kadam: >> Add documentation to support ice PMD on Windows. >> Update the release notes and features list for the same. >> >> Signed-off-by: Pallavi Kadam <pallavi.kadam@intel.com> >> Reviewed-by: Ranjit Menon <ranjit.menon@intel.com> >> --- >> doc/guides/nics/features/ice.ini | 1 + >> doc/guides/nics/ice.rst | 16 ++++++++++++++-- >> doc/guides/rel_notes/release_21_05.rst | 4 ++++ >> 3 files changed, 19 insertions(+), 2 deletions(-) > It is preferred to update docs in single commit with code. Thanks, Dmitry. Ok, will include the doc changes in the same patch where the ice PMD code is enabled. ^ permalink raw reply [flat|nested] 32+ messages in thread
* [dpdk-dev] [PATCH v2 0/3] Support ice PMD on Windows 2021-03-03 21:59 [dpdk-dev] [PATCH 0/4] Support ice PMD on Windows Pallavi Kadam ` (3 preceding siblings ...) 2021-03-03 21:59 ` [dpdk-dev] [PATCH 4/4] doc: update ice PMD and 21.05 release notes Pallavi Kadam @ 2021-03-11 1:58 ` Pallavi Kadam 2021-03-11 1:58 ` [dpdk-dev] [PATCH v2 1/3] build: enable iavf base code to build on windows Pallavi Kadam ` (3 more replies) 4 siblings, 4 replies; 32+ messages in thread From: Pallavi Kadam @ 2021-03-11 1:58 UTC (permalink / raw) To: dev, thomas Cc: dmitry.kozliuk, ranjit.menon, qiming.yang, qi.z.zhang, ferruh.yigit, pallavi.kadam This patch-set enables building the Intel ice PMD on Windows. v2 changes: - Updated patch#1 title to reflect the iavf base code support - Added cflag '-fno-asynchronous-unwind-tables' to base driver - Updated doc patch with the DDP documentation and integrated it with the respective code commit Depends-on: series-15230 ("bus/pci: fix probing for non-netuio bound devices") Pallavi Kadam (3): build: enable iavf base code to build on windows net/ice: build on Windows net/ice: disable ice DDP package on Windows doc/guides/nics/features/ice.ini | 1 + doc/guides/nics/ice.rst | 18 ++++++++++++++++-- doc/guides/rel_notes/release_21_05.rst | 4 ++++ drivers/common/cpt/meson.build | 6 ++++++ drivers/common/iavf/iavf_osdep.h | 9 +++++++++ drivers/common/meson.build | 3 --- drivers/common/mvep/meson.build | 6 ++++++ drivers/common/octeontx/meson.build | 6 ++++++ drivers/common/octeontx2/meson.build | 6 ++++++ drivers/common/qat/meson.build | 6 ++++++ drivers/common/sfc_efx/meson.build | 6 ++++++ drivers/net/ice/base/ice_flow.c | 2 +- drivers/net/ice/base/ice_flow.h | 2 +- drivers/net/ice/base/ice_osdep.h | 15 +++++++++++++++ drivers/net/ice/base/ice_switch.c | 2 +- drivers/net/ice/base/ice_vlan_mode.h | 1 + drivers/net/ice/base/meson.build | 4 ++++ drivers/net/ice/ice_dcf_ethdev.c | 1 - drivers/net/ice/ice_dcf_parent.c | 10 +++++----- drivers/net/ice/ice_ethdev.c | 12 +++++++++--- drivers/net/ice/ice_rxtx_vec_avx2.c | 2 +- drivers/net/ice/ice_rxtx_vec_avx512.c | 2 +- drivers/net/ice/meson.build | 10 ++++------ 23 files changed, 109 insertions(+), 25 deletions(-) -- 2.18.0.windows.1 ^ permalink raw reply [flat|nested] 32+ messages in thread
* [dpdk-dev] [PATCH v2 1/3] build: enable iavf base code to build on windows 2021-03-11 1:58 ` [dpdk-dev] [PATCH v2 0/3] Support ice PMD on Windows Pallavi Kadam @ 2021-03-11 1:58 ` Pallavi Kadam 2021-03-25 16:41 ` Jie Zhou 2021-03-26 11:41 ` Ferruh Yigit 2021-03-11 1:58 ` [dpdk-dev] [PATCH v2 2/3] net/ice: build on Windows Pallavi Kadam ` (2 subsequent siblings) 3 siblings, 2 replies; 32+ messages in thread From: Pallavi Kadam @ 2021-03-11 1:58 UTC (permalink / raw) To: dev, thomas Cc: dmitry.kozliuk, ranjit.menon, qiming.yang, qi.z.zhang, ferruh.yigit, pallavi.kadam Enable IAVF driver to build on Windows as it is required to build ice PMD. Disable all other drivers from common directory. This patch also includes fix for a macro redefinition warning in the IAVF driver. Signed-off-by: Pallavi Kadam <pallavi.kadam@intel.com> Reviewed-by: Ranjit Menon <ranjit.menon@intel.com> --- drivers/common/cpt/meson.build | 6 ++++++ drivers/common/iavf/iavf_osdep.h | 9 +++++++++ drivers/common/meson.build | 3 --- drivers/common/mvep/meson.build | 6 ++++++ drivers/common/octeontx/meson.build | 6 ++++++ drivers/common/octeontx2/meson.build | 6 ++++++ drivers/common/qat/meson.build | 6 ++++++ drivers/common/sfc_efx/meson.build | 6 ++++++ 8 files changed, 45 insertions(+), 3 deletions(-) diff --git a/drivers/common/cpt/meson.build b/drivers/common/cpt/meson.build index beecf0da3..1127267ba 100644 --- a/drivers/common/cpt/meson.build +++ b/drivers/common/cpt/meson.build @@ -1,6 +1,12 @@ # SPDX-License-Identifier: BSD-3-Clause # Copyright(c) 2018 Cavium, Inc +if is_windows + build = false + reason = 'not supported on Windows' + subdir_done() +endif + sources = files('cpt_fpm_tables.c', 'cpt_pmd_ops_helper.c') diff --git a/drivers/common/iavf/iavf_osdep.h b/drivers/common/iavf/iavf_osdep.h index eaefde88e..76c186a5b 100644 --- a/drivers/common/iavf/iavf_osdep.h +++ b/drivers/common/iavf/iavf_osdep.h @@ -55,6 +55,15 @@ typedef uint64_t s64; #define __be64 uint64_t #endif +/* Avoid macro redefinition warning on Windows */ +#ifdef RTE_EXEC_ENV_WINDOWS +#ifdef min +#undef min +#endif +#ifdef max +#undef max +#endif +#endif #define min(a, b) RTE_MIN(a, b) #define max(a, b) RTE_MAX(a, b) diff --git a/drivers/common/meson.build b/drivers/common/meson.build index ba6325adf..2a0c43054 100644 --- a/drivers/common/meson.build +++ b/drivers/common/meson.build @@ -1,9 +1,6 @@ # SPDX-License-Identifier: BSD-3-Clause # Copyright(c) 2018 Cavium, Inc -if is_windows - subdir_done() -endif std_deps = ['eal'] drivers = ['cpt', 'dpaax', 'iavf', 'mvep', 'octeontx', 'octeontx2', 'sfc_efx'] diff --git a/drivers/common/mvep/meson.build b/drivers/common/mvep/meson.build index 7cd968b38..a929e2311 100644 --- a/drivers/common/mvep/meson.build +++ b/drivers/common/mvep/meson.build @@ -4,6 +4,12 @@ # All rights reserved. # +if is_windows + build = false + reason = 'not supported on Windows' + subdir_done() +endif + dep = dependency('libmusdk', required: false, method: 'pkg-config') if not dep.found() build = false diff --git a/drivers/common/octeontx/meson.build b/drivers/common/octeontx/meson.build index 203d1ef49..02b57b95c 100644 --- a/drivers/common/octeontx/meson.build +++ b/drivers/common/octeontx/meson.build @@ -2,4 +2,10 @@ # Copyright(c) 2018 Cavium, Inc # +if is_windows + build = false + reason = 'not supported on Windows' + subdir_done() +endif + sources = files('octeontx_mbox.c') diff --git a/drivers/common/octeontx2/meson.build b/drivers/common/octeontx2/meson.build index 84fb11524..97293d1a7 100644 --- a/drivers/common/octeontx2/meson.build +++ b/drivers/common/octeontx2/meson.build @@ -2,6 +2,12 @@ # Copyright(C) 2019 Marvell International Ltd. # +if is_windows + build = false + reason = 'not supported on Windows' + subdir_done() +endif + if not dpdk_conf.get('RTE_ARCH_64') build = false reason = 'only supported on 64-bit' diff --git a/drivers/common/qat/meson.build b/drivers/common/qat/meson.build index 67f7aca97..3ad7dd501 100644 --- a/drivers/common/qat/meson.build +++ b/drivers/common/qat/meson.build @@ -1,6 +1,12 @@ # SPDX-License-Identifier: BSD-3-Clause # Copyright(c) 2017-2018 Intel Corporation +if is_windows + build = false + reason = 'not supported on Windows' + subdir_done() +endif + qat_crypto = true qat_crypto_path = 'crypto/qat' qat_crypto_relpath = '../../' + qat_crypto_path diff --git a/drivers/common/sfc_efx/meson.build b/drivers/common/sfc_efx/meson.build index 6cb9f0737..a2dfed0ec 100644 --- a/drivers/common/sfc_efx/meson.build +++ b/drivers/common/sfc_efx/meson.build @@ -5,6 +5,12 @@ # This software was jointly developed between OKTET Labs (under contract # for Solarflare) and Solarflare Communications, Inc. +if is_windows + build = false + reason = 'not supported on Windows' + subdir_done() +endif + if (arch_subdir != 'x86' or not dpdk_conf.get('RTE_ARCH_64')) and (arch_subdir != 'arm' or not host_machine.cpu_family().startswith('aarch64')) build = false reason = 'only supported on x86_64 and aarch64' -- 2.18.0.windows.1 ^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: [dpdk-dev] [PATCH v2 1/3] build: enable iavf base code to build on windows 2021-03-11 1:58 ` [dpdk-dev] [PATCH v2 1/3] build: enable iavf base code to build on windows Pallavi Kadam @ 2021-03-25 16:41 ` Jie Zhou 2021-03-26 11:41 ` Ferruh Yigit 1 sibling, 0 replies; 32+ messages in thread From: Jie Zhou @ 2021-03-25 16:41 UTC (permalink / raw) To: Pallavi Kadam Cc: dev, thomas, dmitry.kozliuk, ranjit.menon, qiming.yang, qi.z.zhang, ferruh.yigit On Wed, Mar 10, 2021 at 05:58:46PM -0800, Pallavi Kadam wrote: > Enable IAVF driver to build on Windows as it is required > to build ice PMD. > Disable all other drivers from common directory. > This patch also includes fix for a macro redefinition warning > in the IAVF driver. > > Signed-off-by: Pallavi Kadam <pallavi.kadam@intel.com> > Reviewed-by: Ranjit Menon <ranjit.menon@intel.com> Acked-by: Jie Zhou <jizh@microsoft.com> > --- > drivers/common/cpt/meson.build | 6 ++++++ > drivers/common/iavf/iavf_osdep.h | 9 +++++++++ > drivers/common/meson.build | 3 --- > drivers/common/mvep/meson.build | 6 ++++++ > drivers/common/octeontx/meson.build | 6 ++++++ > drivers/common/octeontx2/meson.build | 6 ++++++ > drivers/common/qat/meson.build | 6 ++++++ > drivers/common/sfc_efx/meson.build | 6 ++++++ > 8 files changed, 45 insertions(+), 3 deletions(-) > ^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: [dpdk-dev] [PATCH v2 1/3] build: enable iavf base code to build on windows 2021-03-11 1:58 ` [dpdk-dev] [PATCH v2 1/3] build: enable iavf base code to build on windows Pallavi Kadam 2021-03-25 16:41 ` Jie Zhou @ 2021-03-26 11:41 ` Ferruh Yigit 2021-03-28 2:05 ` Kadam, Pallavi 1 sibling, 1 reply; 32+ messages in thread From: Ferruh Yigit @ 2021-03-26 11:41 UTC (permalink / raw) To: Pallavi Kadam, dev, thomas Cc: dmitry.kozliuk, ranjit.menon, qiming.yang, qi.z.zhang On 3/11/2021 1:58 AM, Pallavi Kadam wrote: > Enable IAVF driver to build on Windows as it is required > to build ice PMD. > Disable all other drivers from common directory. > This patch also includes fix for a macro redefinition warning > in the IAVF driver. > > Signed-off-by: Pallavi Kadam <pallavi.kadam@intel.com> > Reviewed-by: Ranjit Menon <ranjit.menon@intel.com> <...> > index 6cb9f0737..a2dfed0ec 100644 > --- a/drivers/common/sfc_efx/meson.build > +++ b/drivers/common/sfc_efx/meson.build > @@ -5,6 +5,12 @@ > # This software was jointly developed between OKTET Labs (under contract > # for Solarflare) and Solarflare Communications, Inc. > > +if is_windows > + build = false > + reason = 'not supported on Windows' > + subdir_done() > +endif > + 'common/sfc_efx/meson.build' already has similar update in the upstream, can you please rebase on latest head of the repo. ^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: [dpdk-dev] [PATCH v2 1/3] build: enable iavf base code to build on windows 2021-03-26 11:41 ` Ferruh Yigit @ 2021-03-28 2:05 ` Kadam, Pallavi 0 siblings, 0 replies; 32+ messages in thread From: Kadam, Pallavi @ 2021-03-28 2:05 UTC (permalink / raw) To: Ferruh Yigit, dev, thomas Cc: dmitry.kozliuk, ranjit.menon, qiming.yang, qi.z.zhang On 3/26/2021 4:41 AM, Ferruh Yigit wrote: > On 3/11/2021 1:58 AM, Pallavi Kadam wrote: >> Enable IAVF driver to build on Windows as it is required >> to build ice PMD. >> Disable all other drivers from common directory. >> This patch also includes fix for a macro redefinition warning >> in the IAVF driver. >> >> Signed-off-by: Pallavi Kadam <pallavi.kadam@intel.com> >> Reviewed-by: Ranjit Menon <ranjit.menon@intel.com> > > <...> > >> index 6cb9f0737..a2dfed0ec 100644 >> --- a/drivers/common/sfc_efx/meson.build >> +++ b/drivers/common/sfc_efx/meson.build >> @@ -5,6 +5,12 @@ >> # This software was jointly developed between OKTET Labs (under >> contract >> # for Solarflare) and Solarflare Communications, Inc. >> +if is_windows >> + build = false >> + reason = 'not supported on Windows' >> + subdir_done() >> +endif >> + > > 'common/sfc_efx/meson.build' already has similar update in the > upstream, can you please rebase on latest head of the repo. Sure, I'll rebase the code in v3 along with other suggested changes. Thank you. ^ permalink raw reply [flat|nested] 32+ messages in thread
* [dpdk-dev] [PATCH v2 2/3] net/ice: build on Windows 2021-03-11 1:58 ` [dpdk-dev] [PATCH v2 0/3] Support ice PMD on Windows Pallavi Kadam 2021-03-11 1:58 ` [dpdk-dev] [PATCH v2 1/3] build: enable iavf base code to build on windows Pallavi Kadam @ 2021-03-11 1:58 ` Pallavi Kadam 2021-03-25 16:48 ` Jie Zhou ` (2 more replies) 2021-03-11 1:58 ` [dpdk-dev] [PATCH v2 3/3] net/ice: disable ice DDP package " Pallavi Kadam 2021-04-02 1:26 ` [dpdk-dev] [PATCH v3 0/3] Support ice PMD " Pallavi Kadam 3 siblings, 3 replies; 32+ messages in thread From: Pallavi Kadam @ 2021-03-11 1:58 UTC (permalink / raw) To: dev, thomas Cc: dmitry.kozliuk, ranjit.menon, qiming.yang, qi.z.zhang, ferruh.yigit, pallavi.kadam [-- Warning: decoded text below may be mangled, UTF-8 assumed --] [-- Attachment #1: Type: text/plain; charset=y, Size: 11165 bytes --] - Add Intel ice PMD support on Windows. - Remove #include sys/ioctl header file as it is not needed. - Replace x86intrin.h with rte_vect.h to avoid __m_prefetchw conflicting types. - Replace POSIX usleep() API with rte API. - Add a new macro for the access() API as the original function has been deprecated on Windows. - Add extra cflags '-fno-asynchronous-unwind-tables' to avoid MinGW build error: Error: invalid register for .seh_savexmm - Add documentation to support ice PMD on Windows. Update the release notes and features list for the same. Signed-off-by: Pallavi Kadam <pallavi.kadam@intel.com> Reviewed-by: Ranjit Menon <ranjit.menon@intel.com> --- doc/guides/nics/features/ice.ini | 1 + doc/guides/nics/ice.rst | 18 ++++++++++++++++-- doc/guides/rel_notes/release_21_05.rst | 4 ++++ drivers/net/ice/base/ice_flow.c | 2 +- drivers/net/ice/base/ice_flow.h | 2 +- drivers/net/ice/base/ice_osdep.h | 15 +++++++++++++++ drivers/net/ice/base/ice_switch.c | 2 +- drivers/net/ice/base/ice_vlan_mode.h | 1 + drivers/net/ice/base/meson.build | 4 ++++ drivers/net/ice/ice_dcf_ethdev.c | 1 - drivers/net/ice/ice_dcf_parent.c | 10 +++++----- drivers/net/ice/ice_ethdev.c | 6 +++--- drivers/net/ice/ice_rxtx_vec_avx2.c | 2 +- drivers/net/ice/ice_rxtx_vec_avx512.c | 2 +- drivers/net/ice/meson.build | 10 ++++------ 15 files changed, 58 insertions(+), 22 deletions(-) diff --git a/doc/guides/nics/features/ice.ini b/doc/guides/nics/features/ice.ini index e30a7d2e5..2b93872b1 100644 --- a/doc/guides/nics/features/ice.ini +++ b/doc/guides/nics/features/ice.ini @@ -40,5 +40,6 @@ Module EEPROM dump = Y Multiprocess aware = Y FreeBSD = Y Linux = Y +Windows = Y x86-32 = Y x86-64 = Y diff --git a/doc/guides/nics/ice.rst b/doc/guides/nics/ice.rst index ccda26f82..100086132 100644 --- a/doc/guides/nics/ice.rst +++ b/doc/guides/nics/ice.rst @@ -8,8 +8,8 @@ The ice PMD (**librte_net_ice**) provides poll mode driver support for 10/25/50/100 Gbps Intel® Ethernet 800 Series Network Adapters based on the Intel Ethernet Controller E810 and Intel Ethernet Connection E822/E823. -Prerequisites -------------- +Linux Prerequisites +------------------- - Follow the DPDK :ref:`Getting Started Guide for Linux <linux_gsg>` to setup the basic DPDK environment. @@ -25,6 +25,20 @@ Prerequisites - To understand DDP for COMMs usage with DPDK, please review `Intel® Ethernet 800 Series Telecommunication (Comms) Dynamic Device Personalization (DDP) Package <https://cdrdv2.intel.com/v1/dl/getContent/618651>`_. +Windows Prerequisites +--------------------- + +- Follow the DPDK `Getting Started Guide for Windows <https://doc.dpdk.org/guides/windows_gsg/index.html>`_ to setup the basic DPDK environment. + +- Identify the Intel® Ethernet adapter and get the latest NVM/FW version. + +- To access any Intel® Ethernet hardware, load the NetUIO driver in place of existing built-in (inbox) driver. + +- To load NetUIO driver, follow the steps mentioned in `dpdk-kmods repository + <https://git.dpdk.org/dpdk-kmods/tree/windows/netuio/README.rst>`_. + +- Loading of private Dynamic Device Personalization (DDP) package is not supported on Windows. + Recommended Matching List ------------------------- diff --git a/doc/guides/rel_notes/release_21_05.rst b/doc/guides/rel_notes/release_21_05.rst index 23f7f0bff..15b812ac5 100644 --- a/doc/guides/rel_notes/release_21_05.rst +++ b/doc/guides/rel_notes/release_21_05.rst @@ -70,6 +70,10 @@ New Features * Added command to display Rx queue used descriptor count. ``show port (port_id) rxq (queue_id) desc used count`` +* **Updated Intel ice driver.** + + * Added Intel ice support on Windows. + Removed Items ------------- diff --git a/drivers/net/ice/base/ice_flow.c b/drivers/net/ice/base/ice_flow.c index a081fbe5a..a4c233d4c 100644 --- a/drivers/net/ice/base/ice_flow.c +++ b/drivers/net/ice/base/ice_flow.c @@ -3139,7 +3139,7 @@ enum ice_status ice_flow_rem_entry(struct ice_hw *hw, enum ice_block blk, if (entry_h == ICE_FLOW_ENTRY_HANDLE_INVAL) return ICE_ERR_PARAM; - entry = ICE_FLOW_ENTRY_PTR((unsigned long)entry_h); + entry = ICE_FLOW_ENTRY_PTR((intptr_t)entry_h); /* Retain the pointer to the flow profile as the entry will be freed */ prof = entry->prof; diff --git a/drivers/net/ice/base/ice_flow.h b/drivers/net/ice/base/ice_flow.h index c3bce1319..af15ecb0f 100644 --- a/drivers/net/ice/base/ice_flow.h +++ b/drivers/net/ice/base/ice_flow.h @@ -446,7 +446,7 @@ struct ice_flow_entry { u8 acts_cnt; }; -#define ICE_FLOW_ENTRY_HNDL(e) ((unsigned long)e) +#define ICE_FLOW_ENTRY_HNDL(e) ((intptr_t)e) #define ICE_FLOW_ENTRY_PTR(h) ((struct ice_flow_entry *)(h)) struct ice_flow_prof { diff --git a/drivers/net/ice/base/ice_osdep.h b/drivers/net/ice/base/ice_osdep.h index 46ac86834..f4cc762e9 100644 --- a/drivers/net/ice/base/ice_osdep.h +++ b/drivers/net/ice/base/ice_osdep.h @@ -62,9 +62,24 @@ typedef uint64_t s64; #define __be64 uint64_t #endif +/* Avoid macro redefinition warning on Windows */ +#ifdef RTE_EXEC_ENV_WINDOWS +#ifdef min +#undef min +#endif +#ifdef max +#undef max +#endif +#endif #define min(a, b) RTE_MIN(a, b) #define max(a, b) RTE_MAX(a, b) +#ifdef RTE_EXEC_ENV_WINDOWS +#define ice_access _access +#else +#define ice_access access +#endif + #define FIELD_SIZEOF(t, f) RTE_SIZEOF_FIELD(t, f) #define ARRAY_SIZE(arr) RTE_DIM(arr) diff --git a/drivers/net/ice/base/ice_switch.c b/drivers/net/ice/base/ice_switch.c index 4568242c1..b546e3d4e 100644 --- a/drivers/net/ice/base/ice_switch.c +++ b/drivers/net/ice/base/ice_switch.c @@ -6684,7 +6684,7 @@ ice_fill_valid_words(struct ice_adv_lkup_elem *rule, for (j = 0; j < sizeof(rule->m_u) / sizeof(u16); j++) if (((u16 *)&rule->m_u)[j] && - rule->type < ARRAY_SIZE(ice_prot_ext)) { + (unsigned long long)rule->type < ARRAY_SIZE(ice_prot_ext)) { /* No more space to accommodate */ if (word >= ICE_MAX_CHAIN_WORDS) return 0; diff --git a/drivers/net/ice/base/ice_vlan_mode.h b/drivers/net/ice/base/ice_vlan_mode.h index e9f13e781..bcb6ff713 100644 --- a/drivers/net/ice/base/ice_vlan_mode.h +++ b/drivers/net/ice/base/ice_vlan_mode.h @@ -6,6 +6,7 @@ #define _ICE_VLAN_MODE_H_ #include "ice_osdep.h" +#include "ice_status.h" struct ice_hw; diff --git a/drivers/net/ice/base/meson.build b/drivers/net/ice/base/meson.build index b82d05fe7..01f8f409d 100644 --- a/drivers/net/ice/base/meson.build +++ b/drivers/net/ice/base/meson.build @@ -29,6 +29,10 @@ foreach flag: error_cflags endif endforeach +if is_windows and cc.get_id() != 'clang' + cflags += ['-fno-asynchronous-unwind-tables'] +endif + base_lib = static_library('ice_base', sources, dependencies: static_rte_eal, c_args: c_args) diff --git a/drivers/net/ice/ice_dcf_ethdev.c b/drivers/net/ice/ice_dcf_ethdev.c index e0772295e..af4731f55 100644 --- a/drivers/net/ice/ice_dcf_ethdev.c +++ b/drivers/net/ice/ice_dcf_ethdev.c @@ -5,7 +5,6 @@ #include <errno.h> #include <stdbool.h> #include <sys/types.h> -#include <sys/ioctl.h> #include <unistd.h> #include <rte_interrupts.h> diff --git a/drivers/net/ice/ice_dcf_parent.c b/drivers/net/ice/ice_dcf_parent.c index 476fd4906..a8571b35e 100644 --- a/drivers/net/ice/ice_dcf_parent.c +++ b/drivers/net/ice/ice_dcf_parent.c @@ -121,7 +121,7 @@ ice_dcf_vsi_update_service_handler(void *param) struct ice_dcf_hw *hw = reset_param->dcf_hw; struct ice_dcf_adapter *adapter; - usleep(ICE_DCF_VSI_UPDATE_SERVICE_INTERVAL); + rte_delay_us(ICE_DCF_VSI_UPDATE_SERVICE_INTERVAL); rte_spinlock_lock(&vsi_update_lock); @@ -315,24 +315,24 @@ ice_dcf_request_pkg_name(struct ice_hw *hw, char *pkg_name) snprintf(pkg_name, ICE_MAX_PKG_FILENAME_SIZE, ICE_PKG_FILE_SEARCH_PATH_UPDATES "ice-%016llx.pkg", (unsigned long long)dsn); - if (!access(pkg_name, 0)) + if (!ice_access(pkg_name, 0)) return 0; snprintf(pkg_name, ICE_MAX_PKG_FILENAME_SIZE, ICE_PKG_FILE_SEARCH_PATH_DEFAULT "ice-%016llx.pkg", (unsigned long long)dsn); - if (!access(pkg_name, 0)) + if (!ice_access(pkg_name, 0)) return 0; pkg_file_direct: snprintf(pkg_name, ICE_MAX_PKG_FILENAME_SIZE, "%s", ICE_PKG_FILE_UPDATES); - if (!access(pkg_name, 0)) + if (!ice_access(pkg_name, 0)) return 0; snprintf(pkg_name, ICE_MAX_PKG_FILENAME_SIZE, "%s", ICE_PKG_FILE_DEFAULT); - if (!access(pkg_name, 0)) + if (!ice_access(pkg_name, 0)) return 0; return -1; diff --git a/drivers/net/ice/ice_ethdev.c b/drivers/net/ice/ice_ethdev.c index dfd99ace9..d22bc92ff 100644 --- a/drivers/net/ice/ice_ethdev.c +++ b/drivers/net/ice/ice_ethdev.c @@ -1674,17 +1674,17 @@ ice_pkg_file_search_path(struct rte_pci_device *pci_dev, char *pkg_file) strncpy(pkg_file, ICE_PKG_FILE_SEARCH_PATH_UPDATES, ICE_MAX_PKG_FILENAME_SIZE); - if (!access(strcat(pkg_file, opt_ddp_filename), 0)) + if (!ice_access(strcat(pkg_file, opt_ddp_filename), 0)) return 0; strncpy(pkg_file, ICE_PKG_FILE_SEARCH_PATH_DEFAULT, ICE_MAX_PKG_FILENAME_SIZE); - if (!access(strcat(pkg_file, opt_ddp_filename), 0)) + if (!ice_access(strcat(pkg_file, opt_ddp_filename), 0)) return 0; fail_dsn: strncpy(pkg_file, ICE_PKG_FILE_UPDATES, ICE_MAX_PKG_FILENAME_SIZE); - if (!access(pkg_file, 0)) + if (!ice_access(pkg_file, 0)) return 0; strncpy(pkg_file, ICE_PKG_FILE_DEFAULT, ICE_MAX_PKG_FILENAME_SIZE); return 0; diff --git a/drivers/net/ice/ice_rxtx_vec_avx2.c b/drivers/net/ice/ice_rxtx_vec_avx2.c index 1cc54903c..25efd30e6 100644 --- a/drivers/net/ice/ice_rxtx_vec_avx2.c +++ b/drivers/net/ice/ice_rxtx_vec_avx2.c @@ -4,7 +4,7 @@ #include "ice_rxtx_vec_common.h" -#include <x86intrin.h> +#include <rte_vect.h> #ifndef __INTEL_COMPILER #pragma GCC diagnostic ignored "-Wcast-qual" diff --git a/drivers/net/ice/ice_rxtx_vec_avx512.c b/drivers/net/ice/ice_rxtx_vec_avx512.c index 0e5a676e6..835d0aa70 100644 --- a/drivers/net/ice/ice_rxtx_vec_avx512.c +++ b/drivers/net/ice/ice_rxtx_vec_avx512.c @@ -4,7 +4,7 @@ #include "ice_rxtx_vec_common.h" -#include <x86intrin.h> +#include <rte_vect.h> #ifndef __INTEL_COMPILER #pragma GCC diagnostic ignored "-Wcast-qual" diff --git a/drivers/net/ice/meson.build b/drivers/net/ice/meson.build index 9a67c8f7b..44ef64b4c 100644 --- a/drivers/net/ice/meson.build +++ b/drivers/net/ice/meson.build @@ -1,12 +1,6 @@ # SPDX-License-Identifier: BSD-3-Clause # Copyright(c) 2018 Intel Corporation -if is_windows - build = false - reason = 'not supported on Windows' - subdir_done() -endif - subdir('base') objs = [base_objs] @@ -26,6 +20,10 @@ includes += include_directories('base', '../../common/iavf') if arch_subdir == 'x86' sources += files('ice_rxtx_vec_sse.c') + if is_windows and cc.get_id() != 'clang' + cflags += ['-fno-asynchronous-unwind-tables'] + endif + # compile AVX2 version if either: # a. we have AVX supported in minimum instruction set baseline # b. it's not minimum instruction set, but supported by compiler -- 2.18.0.windows.1 ^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: [dpdk-dev] [PATCH v2 2/3] net/ice: build on Windows 2021-03-11 1:58 ` [dpdk-dev] [PATCH v2 2/3] net/ice: build on Windows Pallavi Kadam @ 2021-03-25 16:48 ` Jie Zhou 2021-03-26 11:51 ` Ferruh Yigit 2021-03-26 11:58 ` Ferruh Yigit 2 siblings, 0 replies; 32+ messages in thread From: Jie Zhou @ 2021-03-25 16:48 UTC (permalink / raw) To: Pallavi Kadam Cc: dev, thomas, dmitry.kozliuk, ranjit.menon, qiming.yang, qi.z.zhang, ferruh.yigit On Wed, Mar 10, 2021 at 05:58:47PM -0800, Pallavi Kadam wrote: > - Add Intel ice PMD support on Windows. > - Remove #include sys/ioctl header file as it is not needed. > - Replace x86intrin.h with rte_vect.h to avoid __m_prefetchw conflicting > types. > - Replace POSIX usleep() API with rte API. > - Add a new macro for the access() API as the original function > has been deprecated on Windows. > - Add extra cflags '-fno-asynchronous-unwind-tables' > to avoid MinGW build error: > Error: invalid register for .seh_savexmm > - Add documentation to support ice PMD on Windows. > Update the release notes and features list for the same. > > Signed-off-by: Pallavi Kadam <pallavi.kadam@intel.com> > Reviewed-by: Ranjit Menon <ranjit.menon@intel.com> Acked-by: Jie Zhou <jizh@microsoft.com> > --- > doc/guides/nics/features/ice.ini | 1 + > doc/guides/nics/ice.rst | 18 ++++++++++++++++-- > doc/guides/rel_notes/release_21_05.rst | 4 ++++ > drivers/net/ice/base/ice_flow.c | 2 +- > drivers/net/ice/base/ice_flow.h | 2 +- > drivers/net/ice/base/ice_osdep.h | 15 +++++++++++++++ > drivers/net/ice/base/ice_switch.c | 2 +- > drivers/net/ice/base/ice_vlan_mode.h | 1 + > drivers/net/ice/base/meson.build | 4 ++++ > drivers/net/ice/ice_dcf_ethdev.c | 1 - > drivers/net/ice/ice_dcf_parent.c | 10 +++++----- > drivers/net/ice/ice_ethdev.c | 6 +++--- > drivers/net/ice/ice_rxtx_vec_avx2.c | 2 +- > drivers/net/ice/ice_rxtx_vec_avx512.c | 2 +- > drivers/net/ice/meson.build | 10 ++++------ > 15 files changed, 58 insertions(+), 22 deletions(-) > ^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: [dpdk-dev] [PATCH v2 2/3] net/ice: build on Windows 2021-03-11 1:58 ` [dpdk-dev] [PATCH v2 2/3] net/ice: build on Windows Pallavi Kadam 2021-03-25 16:48 ` Jie Zhou @ 2021-03-26 11:51 ` Ferruh Yigit 2021-03-28 2:00 ` Kadam, Pallavi 2021-03-26 11:58 ` Ferruh Yigit 2 siblings, 1 reply; 32+ messages in thread From: Ferruh Yigit @ 2021-03-26 11:51 UTC (permalink / raw) To: Pallavi Kadam, dev, thomas Cc: dmitry.kozliuk, ranjit.menon, qiming.yang, qi.z.zhang On 3/11/2021 1:58 AM, Pallavi Kadam wrote: > - Add Intel ice PMD support on Windows. > - Remove #include sys/ioctl header file as it is not needed. > - Replace x86intrin.h with rte_vect.h to avoid __m_prefetchw conflicting > types. > - Replace POSIX usleep() API with rte API. > - Add a new macro for the access() API as the original function > has been deprecated on Windows. > - Add extra cflags '-fno-asynchronous-unwind-tables' > to avoid MinGW build error: > Error: invalid register for .seh_savexmm > - Add documentation to support ice PMD on Windows. > Update the release notes and features list for the same. > > Signed-off-by: Pallavi Kadam <pallavi.kadam@intel.com> > Reviewed-by: Ranjit Menon <ranjit.menon@intel.com> <...> > --- a/drivers/net/ice/base/ice_switch.c > +++ b/drivers/net/ice/base/ice_switch.c > @@ -6684,7 +6684,7 @@ ice_fill_valid_words(struct ice_adv_lkup_elem *rule, > > for (j = 0; j < sizeof(rule->m_u) / sizeof(u16); j++) > if (((u16 *)&rule->m_u)[j] && > - rule->type < ARRAY_SIZE(ice_prot_ext)) { > + (unsigned long long)rule->type < ARRAY_SIZE(ice_prot_ext)) { isn't 'ARRAY_SIZE' return type is 'size_t', if 'size_t' is supported in Windows why not cast to it, instead of "unsigned long long". <...> > index b82d05fe7..01f8f409d 100644 > --- a/drivers/net/ice/base/meson.build > +++ b/drivers/net/ice/base/meson.build > @@ -29,6 +29,10 @@ foreach flag: error_cflags > endif > endforeach > > +if is_windows and cc.get_id() != 'clang' > + cflags += ['-fno-asynchronous-unwind-tables'] > +endif > + This seems not having affect [1], may be because 'cflags' is not used for build but 'c_args', moving the block above "c_args = cflags" assignment may work. [1] http://mails.dpdk.org/archives/test-report/2021-March/182218.html ^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: [dpdk-dev] [PATCH v2 2/3] net/ice: build on Windows 2021-03-26 11:51 ` Ferruh Yigit @ 2021-03-28 2:00 ` Kadam, Pallavi 0 siblings, 0 replies; 32+ messages in thread From: Kadam, Pallavi @ 2021-03-28 2:00 UTC (permalink / raw) To: Ferruh Yigit, dev, thomas Cc: dmitry.kozliuk, ranjit.menon, qiming.yang, qi.z.zhang On 3/26/2021 4:51 AM, Ferruh Yigit wrote: > On 3/11/2021 1:58 AM, Pallavi Kadam wrote: >> - Add Intel ice PMD support on Windows. >> - Remove #include sys/ioctl header file as it is not needed. >> - Replace x86intrin.h with rte_vect.h to avoid __m_prefetchw conflicting >> types. >> - Replace POSIX usleep() API with rte API. >> - Add a new macro for the access() API as the original function >> has been deprecated on Windows. >> - Add extra cflags '-fno-asynchronous-unwind-tables' >> to avoid MinGW build error: >> Error: invalid register for .seh_savexmm >> - Add documentation to support ice PMD on Windows. >> Update the release notes and features list for the same. >> >> Signed-off-by: Pallavi Kadam <pallavi.kadam@intel.com> >> Reviewed-by: Ranjit Menon <ranjit.menon@intel.com> > > <...> > >> --- a/drivers/net/ice/base/ice_switch.c >> +++ b/drivers/net/ice/base/ice_switch.c >> @@ -6684,7 +6684,7 @@ ice_fill_valid_words(struct ice_adv_lkup_elem >> *rule, >> for (j = 0; j < sizeof(rule->m_u) / sizeof(u16); j++) >> if (((u16 *)&rule->m_u)[j] && >> - rule->type < ARRAY_SIZE(ice_prot_ext)) { >> + (unsigned long long)rule->type < >> ARRAY_SIZE(ice_prot_ext)) { > > isn't 'ARRAY_SIZE' return type is 'size_t', if 'size_t' is supported > in Windows why not cast to it, instead of "unsigned long long". Ok. Yes, size_t works on Windows. Will replace it in v3. > > <...> > >> index b82d05fe7..01f8f409d 100644 >> --- a/drivers/net/ice/base/meson.build >> +++ b/drivers/net/ice/base/meson.build >> @@ -29,6 +29,10 @@ foreach flag: error_cflags >> endif >> endforeach >> +if is_windows and cc.get_id() != 'clang' >> + cflags += ['-fno-asynchronous-unwind-tables'] >> +endif >> + > > This seems not having affect [1], may be because 'cflags' is not used > for build but 'c_args', moving the block above "c_args = cflags" > assignment may work. > > [1] > http://mails.dpdk.org/archives/test-report/2021-March/182218.html Thanks, Ferrruh. Ok, will move this cflag above the assignment and give it a try. Either way I am not able to reproduce this error. Let's see if UNH lab still reports it. ^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: [dpdk-dev] [PATCH v2 2/3] net/ice: build on Windows 2021-03-11 1:58 ` [dpdk-dev] [PATCH v2 2/3] net/ice: build on Windows Pallavi Kadam 2021-03-25 16:48 ` Jie Zhou 2021-03-26 11:51 ` Ferruh Yigit @ 2021-03-26 11:58 ` Ferruh Yigit 2021-03-28 2:04 ` Kadam, Pallavi 2 siblings, 1 reply; 32+ messages in thread From: Ferruh Yigit @ 2021-03-26 11:58 UTC (permalink / raw) To: Pallavi Kadam, dev, thomas Cc: dmitry.kozliuk, ranjit.menon, qiming.yang, qi.z.zhang On 3/11/2021 1:58 AM, Pallavi Kadam wrote: > - Add Intel ice PMD support on Windows. > - Remove #include sys/ioctl header file as it is not needed. > - Replace x86intrin.h with rte_vect.h to avoid __m_prefetchw conflicting > types. > - Replace POSIX usleep() API with rte API. > - Add a new macro for the access() API as the original function > has been deprecated on Windows. > - Add extra cflags '-fno-asynchronous-unwind-tables' > to avoid MinGW build error: > Error: invalid register for .seh_savexmm > - Add documentation to support ice PMD on Windows. > Update the release notes and features list for the same. > > Signed-off-by: Pallavi Kadam <pallavi.kadam@intel.com> > Reviewed-by: Ranjit Menon <ranjit.menon@intel.com> <...> > index 23f7f0bff..15b812ac5 100644 > --- a/doc/guides/rel_notes/release_21_05.rst > +++ b/doc/guides/rel_notes/release_21_05.rst > @@ -70,6 +70,10 @@ New Features > * Added command to display Rx queue used descriptor count. > ``show port (port_id) rxq (queue_id) desc used count`` > > +* **Updated Intel ice driver.** > + > + * Added Intel ice support on Windows. > + > Can you please move the update just after 'Hisilicon' PMD update, we are trying to keep PMD updates in order base on vendor alphabetical order. Overall the release note update order is described more in the section comment of the document. ^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: [dpdk-dev] [PATCH v2 2/3] net/ice: build on Windows 2021-03-26 11:58 ` Ferruh Yigit @ 2021-03-28 2:04 ` Kadam, Pallavi 0 siblings, 0 replies; 32+ messages in thread From: Kadam, Pallavi @ 2021-03-28 2:04 UTC (permalink / raw) To: Ferruh Yigit, dev, thomas Cc: dmitry.kozliuk, ranjit.menon, qiming.yang, qi.z.zhang On 3/26/2021 4:58 AM, Ferruh Yigit wrote: > On 3/11/2021 1:58 AM, Pallavi Kadam wrote: >> - Add Intel ice PMD support on Windows. >> - Remove #include sys/ioctl header file as it is not needed. >> - Replace x86intrin.h with rte_vect.h to avoid __m_prefetchw conflicting >> types. >> - Replace POSIX usleep() API with rte API. >> - Add a new macro for the access() API as the original function >> has been deprecated on Windows. >> - Add extra cflags '-fno-asynchronous-unwind-tables' >> to avoid MinGW build error: >> Error: invalid register for .seh_savexmm >> - Add documentation to support ice PMD on Windows. >> Update the release notes and features list for the same. >> >> Signed-off-by: Pallavi Kadam <pallavi.kadam@intel.com> >> Reviewed-by: Ranjit Menon <ranjit.menon@intel.com> > > <...> > >> index 23f7f0bff..15b812ac5 100644 >> --- a/doc/guides/rel_notes/release_21_05.rst >> +++ b/doc/guides/rel_notes/release_21_05.rst >> @@ -70,6 +70,10 @@ New Features >> * Added command to display Rx queue used descriptor count. >> ``show port (port_id) rxq (queue_id) desc used count`` >> +* **Updated Intel ice driver.** >> + >> + * Added Intel ice support on Windows. >> + >> > > Can you please move the update just after 'Hisilicon' PMD update, we > are trying to keep PMD updates in order base on vendor alphabetical > order. > Overall the release note update order is described more in the section > comment of the document. Ok, I'll update the order in v3. ^ permalink raw reply [flat|nested] 32+ messages in thread
* [dpdk-dev] [PATCH v2 3/3] net/ice: disable ice DDP package on Windows 2021-03-11 1:58 ` [dpdk-dev] [PATCH v2 0/3] Support ice PMD on Windows Pallavi Kadam 2021-03-11 1:58 ` [dpdk-dev] [PATCH v2 1/3] build: enable iavf base code to build on windows Pallavi Kadam 2021-03-11 1:58 ` [dpdk-dev] [PATCH v2 2/3] net/ice: build on Windows Pallavi Kadam @ 2021-03-11 1:58 ` Pallavi Kadam 2021-03-25 16:55 ` Jie Zhou 2021-03-26 11:53 ` Ferruh Yigit 2021-04-02 1:26 ` [dpdk-dev] [PATCH v3 0/3] Support ice PMD " Pallavi Kadam 3 siblings, 2 replies; 32+ messages in thread From: Pallavi Kadam @ 2021-03-11 1:58 UTC (permalink / raw) To: dev, thomas Cc: dmitry.kozliuk, ranjit.menon, qiming.yang, qi.z.zhang, ferruh.yigit, pallavi.kadam Disable loading of external DDP package as it is not supported on Windows. Signed-off-by: Pallavi Kadam <pallavi.kadam@intel.com> Reviewed-by: Ranjit Menon <ranjit.menon@intel.com> --- drivers/net/ice/ice_ethdev.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/drivers/net/ice/ice_ethdev.c b/drivers/net/ice/ice_ethdev.c index d22bc92ff..1f5f16d42 100644 --- a/drivers/net/ice/ice_ethdev.c +++ b/drivers/net/ice/ice_ethdev.c @@ -1652,6 +1652,7 @@ ice_pf_setup(struct ice_pf *pf) * Extract device serial number from PCIe Configuration Space and * determine the pkg file path according to the DSN. */ +#ifndef RTE_EXEC_ENV_WINDOWS static int ice_pkg_file_search_path(struct rte_pci_device *pci_dev, char *pkg_file) { @@ -1689,6 +1690,7 @@ ice_pkg_file_search_path(struct rte_pci_device *pci_dev, char *pkg_file) strncpy(pkg_file, ICE_PKG_FILE_DEFAULT, ICE_MAX_PKG_FILENAME_SIZE); return 0; } +#endif enum ice_pkg_type ice_load_pkg_type(struct ice_hw *hw) @@ -1714,6 +1716,7 @@ ice_load_pkg_type(struct ice_hw *hw) return package_type; } +#ifndef RTE_EXEC_ENV_WINDOWS static int ice_load_pkg(struct rte_eth_dev *dev) { struct ice_hw *hw = ICE_DEV_PRIVATE_TO_HW(dev->data->dev_private); @@ -1785,6 +1788,7 @@ static int ice_load_pkg(struct rte_eth_dev *dev) rte_free(buf); return err; } +#endif static void ice_base_queue_get(struct ice_pf *pf) @@ -2065,6 +2069,7 @@ ice_dev_init(struct rte_eth_dev *dev) return -EINVAL; } +#ifndef RTE_EXEC_ENV_WINDOWS ret = ice_load_pkg(dev); if (ret) { if (ad->devargs.safe_mode_support == 0) { @@ -2077,6 +2082,7 @@ ice_dev_init(struct rte_eth_dev *dev) "Entering Safe Mode"); ad->is_safe_mode = 1; } +#endif PMD_INIT_LOG(INFO, "FW %d.%d.%05d API %d.%d", hw->fw_maj_ver, hw->fw_min_ver, hw->fw_build, -- 2.18.0.windows.1 ^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: [dpdk-dev] [PATCH v2 3/3] net/ice: disable ice DDP package on Windows 2021-03-11 1:58 ` [dpdk-dev] [PATCH v2 3/3] net/ice: disable ice DDP package " Pallavi Kadam @ 2021-03-25 16:55 ` Jie Zhou 2021-03-26 11:53 ` Ferruh Yigit 1 sibling, 0 replies; 32+ messages in thread From: Jie Zhou @ 2021-03-25 16:55 UTC (permalink / raw) To: Pallavi Kadam Cc: dev, thomas, dmitry.kozliuk, ranjit.menon, qiming.yang, qi.z.zhang, ferruh.yigit On Wed, Mar 10, 2021 at 05:58:48PM -0800, Pallavi Kadam wrote: > Disable loading of external DDP package as it is not > supported on Windows. > > Signed-off-by: Pallavi Kadam <pallavi.kadam@intel.com> > Reviewed-by: Ranjit Menon <ranjit.menon@intel.com> Acked-by: Jie Zhou <jizh@microsoft.com> > --- > drivers/net/ice/ice_ethdev.c | 6 ++++++ > 1 file changed, 6 insertions(+) > ^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: [dpdk-dev] [PATCH v2 3/3] net/ice: disable ice DDP package on Windows 2021-03-11 1:58 ` [dpdk-dev] [PATCH v2 3/3] net/ice: disable ice DDP package " Pallavi Kadam 2021-03-25 16:55 ` Jie Zhou @ 2021-03-26 11:53 ` Ferruh Yigit 2021-03-28 2:02 ` Kadam, Pallavi 1 sibling, 1 reply; 32+ messages in thread From: Ferruh Yigit @ 2021-03-26 11:53 UTC (permalink / raw) To: Pallavi Kadam, dev, thomas Cc: dmitry.kozliuk, ranjit.menon, qiming.yang, qi.z.zhang On 3/11/2021 1:58 AM, Pallavi Kadam wrote: > Disable loading of external DDP package as it is not > supported on Windows. > Should this be documented in driver documentation as Windows support limitation? > Signed-off-by: Pallavi Kadam <pallavi.kadam@intel.com> > Reviewed-by: Ranjit Menon <ranjit.menon@intel.com> <...> ^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: [dpdk-dev] [PATCH v2 3/3] net/ice: disable ice DDP package on Windows 2021-03-26 11:53 ` Ferruh Yigit @ 2021-03-28 2:02 ` Kadam, Pallavi 0 siblings, 0 replies; 32+ messages in thread From: Kadam, Pallavi @ 2021-03-28 2:02 UTC (permalink / raw) To: Ferruh Yigit, dev, thomas Cc: dmitry.kozliuk, ranjit.menon, qiming.yang, qi.z.zhang On 3/26/2021 4:53 AM, Ferruh Yigit wrote: > On 3/11/2021 1:58 AM, Pallavi Kadam wrote: >> Disable loading of external DDP package as it is not >> supported on Windows. >> > > Should this be documented in driver documentation as Windows support > limitation? We have mentioned about it in Windows prerequisite section. Yes, we can include it in the Windows limitation section as well. Will add it in v3. > >> Signed-off-by: Pallavi Kadam <pallavi.kadam@intel.com> >> Reviewed-by: Ranjit Menon <ranjit.menon@intel.com> > > <...> > > ^ permalink raw reply [flat|nested] 32+ messages in thread
* [dpdk-dev] [PATCH v3 0/3] Support ice PMD on Windows 2021-03-11 1:58 ` [dpdk-dev] [PATCH v2 0/3] Support ice PMD on Windows Pallavi Kadam ` (2 preceding siblings ...) 2021-03-11 1:58 ` [dpdk-dev] [PATCH v2 3/3] net/ice: disable ice DDP package " Pallavi Kadam @ 2021-04-02 1:26 ` Pallavi Kadam 2021-04-02 1:26 ` [dpdk-dev] [PATCH v3 1/3] build: enable iavf base code to build on windows Pallavi Kadam ` (3 more replies) 3 siblings, 4 replies; 32+ messages in thread From: Pallavi Kadam @ 2021-04-02 1:26 UTC (permalink / raw) To: dev, thomas Cc: dmitry.kozliuk, ranjit.menon, qiming.yang, qi.z.zhang, ferruh.yigit, pallavi.kadam This patch-set enables building the Intel ice PMD on Windows. v3 changes: - Rebase on latest head - Replaced 'unsigned long long' with 'size_t' - Moved cflag '-fno-asynchronous-unwind-tables' above the assignment "c_args = cflags" - Updated release notes to add ice support on Windows in alphabetical order - Added a note on Windows limitation in ice driver document v2 changes: - Updated patch#1 title to reflect the iavf base code support - Added cflag '-fno-asynchronous-unwind-tables' to base driver - Updated doc patch with the DDP documentation and integrated it with the respective code commit Pallavi Kadam (3): build: enable iavf base code to build on windows net/ice: build on Windows net/ice: disable ice DDP package on Windows doc/guides/nics/features/ice.ini | 1 + doc/guides/nics/ice.rst | 23 +++++++++++++++++++++-- doc/guides/rel_notes/release_21_05.rst | 4 ++++ drivers/common/cpt/meson.build | 6 ++++++ drivers/common/iavf/iavf_osdep.h | 9 +++++++++ drivers/common/meson.build | 3 --- drivers/common/mvep/meson.build | 6 ++++++ drivers/common/octeontx/meson.build | 6 ++++++ drivers/common/octeontx2/meson.build | 6 ++++++ drivers/common/qat/meson.build | 6 ++++++ drivers/net/ice/base/ice_flow.c | 2 +- drivers/net/ice/base/ice_flow.h | 2 +- drivers/net/ice/base/ice_osdep.h | 15 +++++++++++++++ drivers/net/ice/base/ice_switch.c | 2 +- drivers/net/ice/base/ice_vlan_mode.h | 1 + drivers/net/ice/base/meson.build | 5 +++++ drivers/net/ice/ice_dcf_ethdev.c | 1 - drivers/net/ice/ice_dcf_parent.c | 10 +++++----- drivers/net/ice/ice_ethdev.c | 12 +++++++++--- drivers/net/ice/ice_rxtx_vec_avx2.c | 2 +- drivers/net/ice/ice_rxtx_vec_avx512.c | 2 +- drivers/net/ice/meson.build | 10 ++++------ 22 files changed, 109 insertions(+), 25 deletions(-) -- 2.18.0.windows.1 ^ permalink raw reply [flat|nested] 32+ messages in thread
* [dpdk-dev] [PATCH v3 1/3] build: enable iavf base code to build on windows 2021-04-02 1:26 ` [dpdk-dev] [PATCH v3 0/3] Support ice PMD " Pallavi Kadam @ 2021-04-02 1:26 ` Pallavi Kadam 2021-04-02 1:26 ` [dpdk-dev] [PATCH v3 2/3] net/ice: build on Windows Pallavi Kadam ` (2 subsequent siblings) 3 siblings, 0 replies; 32+ messages in thread From: Pallavi Kadam @ 2021-04-02 1:26 UTC (permalink / raw) To: dev, thomas Cc: dmitry.kozliuk, ranjit.menon, qiming.yang, qi.z.zhang, ferruh.yigit, pallavi.kadam Enable IAVF driver to build on Windows as it is required to build ice PMD. Disable all other drivers from common directory. This patch also includes fix for a macro redefinition warning in the IAVF driver. Signed-off-by: Pallavi Kadam <pallavi.kadam@intel.com> Reviewed-by: Ranjit Menon <ranjit.menon@intel.com> Acked-by: Jie Zhou <jizh@microsoft.com> --- drivers/common/cpt/meson.build | 6 ++++++ drivers/common/iavf/iavf_osdep.h | 9 +++++++++ drivers/common/meson.build | 3 --- drivers/common/mvep/meson.build | 6 ++++++ drivers/common/octeontx/meson.build | 6 ++++++ drivers/common/octeontx2/meson.build | 6 ++++++ drivers/common/qat/meson.build | 6 ++++++ 7 files changed, 39 insertions(+), 3 deletions(-) diff --git a/drivers/common/cpt/meson.build b/drivers/common/cpt/meson.build index beecf0da3..1127267ba 100644 --- a/drivers/common/cpt/meson.build +++ b/drivers/common/cpt/meson.build @@ -1,6 +1,12 @@ # SPDX-License-Identifier: BSD-3-Clause # Copyright(c) 2018 Cavium, Inc +if is_windows + build = false + reason = 'not supported on Windows' + subdir_done() +endif + sources = files('cpt_fpm_tables.c', 'cpt_pmd_ops_helper.c') diff --git a/drivers/common/iavf/iavf_osdep.h b/drivers/common/iavf/iavf_osdep.h index eaefde88e..76c186a5b 100644 --- a/drivers/common/iavf/iavf_osdep.h +++ b/drivers/common/iavf/iavf_osdep.h @@ -55,6 +55,15 @@ typedef uint64_t s64; #define __be64 uint64_t #endif +/* Avoid macro redefinition warning on Windows */ +#ifdef RTE_EXEC_ENV_WINDOWS +#ifdef min +#undef min +#endif +#ifdef max +#undef max +#endif +#endif #define min(a, b) RTE_MIN(a, b) #define max(a, b) RTE_MAX(a, b) diff --git a/drivers/common/meson.build b/drivers/common/meson.build index 66e12143b..438302e76 100644 --- a/drivers/common/meson.build +++ b/drivers/common/meson.build @@ -1,9 +1,6 @@ # SPDX-License-Identifier: BSD-3-Clause # Copyright(c) 2018 Cavium, Inc -if is_windows - subdir_done() -endif std_deps = ['eal'] drivers = ['cpt', 'dpaax', 'iavf', 'mvep', 'octeontx', 'octeontx2'] diff --git a/drivers/common/mvep/meson.build b/drivers/common/mvep/meson.build index 7cd968b38..a929e2311 100644 --- a/drivers/common/mvep/meson.build +++ b/drivers/common/mvep/meson.build @@ -4,6 +4,12 @@ # All rights reserved. # +if is_windows + build = false + reason = 'not supported on Windows' + subdir_done() +endif + dep = dependency('libmusdk', required: false, method: 'pkg-config') if not dep.found() build = false diff --git a/drivers/common/octeontx/meson.build b/drivers/common/octeontx/meson.build index 203d1ef49..02b57b95c 100644 --- a/drivers/common/octeontx/meson.build +++ b/drivers/common/octeontx/meson.build @@ -2,4 +2,10 @@ # Copyright(c) 2018 Cavium, Inc # +if is_windows + build = false + reason = 'not supported on Windows' + subdir_done() +endif + sources = files('octeontx_mbox.c') diff --git a/drivers/common/octeontx2/meson.build b/drivers/common/octeontx2/meson.build index 84fb11524..97293d1a7 100644 --- a/drivers/common/octeontx2/meson.build +++ b/drivers/common/octeontx2/meson.build @@ -2,6 +2,12 @@ # Copyright(C) 2019 Marvell International Ltd. # +if is_windows + build = false + reason = 'not supported on Windows' + subdir_done() +endif + if not dpdk_conf.get('RTE_ARCH_64') build = false reason = 'only supported on 64-bit' diff --git a/drivers/common/qat/meson.build b/drivers/common/qat/meson.build index 67f7aca97..3ad7dd501 100644 --- a/drivers/common/qat/meson.build +++ b/drivers/common/qat/meson.build @@ -1,6 +1,12 @@ # SPDX-License-Identifier: BSD-3-Clause # Copyright(c) 2017-2018 Intel Corporation +if is_windows + build = false + reason = 'not supported on Windows' + subdir_done() +endif + qat_crypto = true qat_crypto_path = 'crypto/qat' qat_crypto_relpath = '../../' + qat_crypto_path -- 2.18.0.windows.1 ^ permalink raw reply [flat|nested] 32+ messages in thread
* [dpdk-dev] [PATCH v3 2/3] net/ice: build on Windows 2021-04-02 1:26 ` [dpdk-dev] [PATCH v3 0/3] Support ice PMD " Pallavi Kadam 2021-04-02 1:26 ` [dpdk-dev] [PATCH v3 1/3] build: enable iavf base code to build on windows Pallavi Kadam @ 2021-04-02 1:26 ` Pallavi Kadam 2021-04-02 1:26 ` [dpdk-dev] [PATCH v3 3/3] net/ice: disable ice DDP package " Pallavi Kadam 2021-04-06 16:40 ` [dpdk-dev] [PATCH v3 0/3] Support ice PMD " Ferruh Yigit 3 siblings, 0 replies; 32+ messages in thread From: Pallavi Kadam @ 2021-04-02 1:26 UTC (permalink / raw) To: dev, thomas Cc: dmitry.kozliuk, ranjit.menon, qiming.yang, qi.z.zhang, ferruh.yigit, pallavi.kadam [-- Warning: decoded text below may be mangled, UTF-8 assumed --] [-- Attachment #1: Type: text/plain; charset=y, Size: 11200 bytes --] - Add Intel ice PMD support on Windows. - Remove #include sys/ioctl header file as it is not needed. - Replace x86intrin.h with rte_vect.h to avoid __m_prefetchw conflicting types. - Replace POSIX usleep() API with rte API. - Add a new macro for the access() API as the original function has been deprecated on Windows. - Add extra cflags '-fno-asynchronous-unwind-tables' to avoid MinGW build error: Error: invalid register for .seh_savexmm - Add documentation to support ice PMD on Windows. Update the release notes and features list for the same. Signed-off-by: Pallavi Kadam <pallavi.kadam@intel.com> Reviewed-by: Ranjit Menon <ranjit.menon@intel.com> Acked-by: Jie Zhou <jizh@microsoft.com> --- doc/guides/nics/features/ice.ini | 1 + doc/guides/nics/ice.rst | 18 ++++++++++++++++-- doc/guides/rel_notes/release_21_05.rst | 4 ++++ drivers/net/ice/base/ice_flow.c | 2 +- drivers/net/ice/base/ice_flow.h | 2 +- drivers/net/ice/base/ice_osdep.h | 15 +++++++++++++++ drivers/net/ice/base/ice_switch.c | 2 +- drivers/net/ice/base/ice_vlan_mode.h | 1 + drivers/net/ice/base/meson.build | 5 +++++ drivers/net/ice/ice_dcf_ethdev.c | 1 - drivers/net/ice/ice_dcf_parent.c | 10 +++++----- drivers/net/ice/ice_ethdev.c | 6 +++--- drivers/net/ice/ice_rxtx_vec_avx2.c | 2 +- drivers/net/ice/ice_rxtx_vec_avx512.c | 2 +- drivers/net/ice/meson.build | 10 ++++------ 15 files changed, 59 insertions(+), 22 deletions(-) diff --git a/doc/guides/nics/features/ice.ini b/doc/guides/nics/features/ice.ini index e30a7d2e5..2b93872b1 100644 --- a/doc/guides/nics/features/ice.ini +++ b/doc/guides/nics/features/ice.ini @@ -40,5 +40,6 @@ Module EEPROM dump = Y Multiprocess aware = Y FreeBSD = Y Linux = Y +Windows = Y x86-32 = Y x86-64 = Y diff --git a/doc/guides/nics/ice.rst b/doc/guides/nics/ice.rst index ccda26f82..100086132 100644 --- a/doc/guides/nics/ice.rst +++ b/doc/guides/nics/ice.rst @@ -8,8 +8,8 @@ The ice PMD (**librte_net_ice**) provides poll mode driver support for 10/25/50/100 Gbps Intel® Ethernet 800 Series Network Adapters based on the Intel Ethernet Controller E810 and Intel Ethernet Connection E822/E823. -Prerequisites -------------- +Linux Prerequisites +------------------- - Follow the DPDK :ref:`Getting Started Guide for Linux <linux_gsg>` to setup the basic DPDK environment. @@ -25,6 +25,20 @@ Prerequisites - To understand DDP for COMMs usage with DPDK, please review `Intel® Ethernet 800 Series Telecommunication (Comms) Dynamic Device Personalization (DDP) Package <https://cdrdv2.intel.com/v1/dl/getContent/618651>`_. +Windows Prerequisites +--------------------- + +- Follow the DPDK `Getting Started Guide for Windows <https://doc.dpdk.org/guides/windows_gsg/index.html>`_ to setup the basic DPDK environment. + +- Identify the Intel® Ethernet adapter and get the latest NVM/FW version. + +- To access any Intel® Ethernet hardware, load the NetUIO driver in place of existing built-in (inbox) driver. + +- To load NetUIO driver, follow the steps mentioned in `dpdk-kmods repository + <https://git.dpdk.org/dpdk-kmods/tree/windows/netuio/README.rst>`_. + +- Loading of private Dynamic Device Personalization (DDP) package is not supported on Windows. + Recommended Matching List ------------------------- diff --git a/doc/guides/rel_notes/release_21_05.rst b/doc/guides/rel_notes/release_21_05.rst index 19cec62c7..935ac088b 100644 --- a/doc/guides/rel_notes/release_21_05.rst +++ b/doc/guides/rel_notes/release_21_05.rst @@ -97,6 +97,10 @@ New Features * Added flow filter to support GTPU inner L3/L4 fields matching. +* **Updated Intel ice driver.** + + * Added Intel ice support on Windows. + * **Updated NXP DPAA driver.** * Added support for shared ethernet interface. diff --git a/drivers/net/ice/base/ice_flow.c b/drivers/net/ice/base/ice_flow.c index bceb257d6..c12ddfa24 100644 --- a/drivers/net/ice/base/ice_flow.c +++ b/drivers/net/ice/base/ice_flow.c @@ -3144,7 +3144,7 @@ enum ice_status ice_flow_rem_entry(struct ice_hw *hw, enum ice_block blk, if (entry_h == ICE_FLOW_ENTRY_HANDLE_INVAL) return ICE_ERR_PARAM; - entry = ICE_FLOW_ENTRY_PTR((unsigned long)entry_h); + entry = ICE_FLOW_ENTRY_PTR((intptr_t)entry_h); /* Retain the pointer to the flow profile as the entry will be freed */ prof = entry->prof; diff --git a/drivers/net/ice/base/ice_flow.h b/drivers/net/ice/base/ice_flow.h index c3bce1319..af15ecb0f 100644 --- a/drivers/net/ice/base/ice_flow.h +++ b/drivers/net/ice/base/ice_flow.h @@ -446,7 +446,7 @@ struct ice_flow_entry { u8 acts_cnt; }; -#define ICE_FLOW_ENTRY_HNDL(e) ((unsigned long)e) +#define ICE_FLOW_ENTRY_HNDL(e) ((intptr_t)e) #define ICE_FLOW_ENTRY_PTR(h) ((struct ice_flow_entry *)(h)) struct ice_flow_prof { diff --git a/drivers/net/ice/base/ice_osdep.h b/drivers/net/ice/base/ice_osdep.h index 46ac86834..f4cc762e9 100644 --- a/drivers/net/ice/base/ice_osdep.h +++ b/drivers/net/ice/base/ice_osdep.h @@ -62,9 +62,24 @@ typedef uint64_t s64; #define __be64 uint64_t #endif +/* Avoid macro redefinition warning on Windows */ +#ifdef RTE_EXEC_ENV_WINDOWS +#ifdef min +#undef min +#endif +#ifdef max +#undef max +#endif +#endif #define min(a, b) RTE_MIN(a, b) #define max(a, b) RTE_MAX(a, b) +#ifdef RTE_EXEC_ENV_WINDOWS +#define ice_access _access +#else +#define ice_access access +#endif + #define FIELD_SIZEOF(t, f) RTE_SIZEOF_FIELD(t, f) #define ARRAY_SIZE(arr) RTE_DIM(arr) diff --git a/drivers/net/ice/base/ice_switch.c b/drivers/net/ice/base/ice_switch.c index 3dc764266..9233c5fd2 100644 --- a/drivers/net/ice/base/ice_switch.c +++ b/drivers/net/ice/base/ice_switch.c @@ -6683,7 +6683,7 @@ ice_fill_valid_words(struct ice_adv_lkup_elem *rule, for (j = 0; j < sizeof(rule->m_u) / sizeof(u16); j++) if (((u16 *)&rule->m_u)[j] && - rule->type < ARRAY_SIZE(ice_prot_ext)) { + (size_t)rule->type < ARRAY_SIZE(ice_prot_ext)) { /* No more space to accommodate */ if (word >= ICE_MAX_CHAIN_WORDS) return 0; diff --git a/drivers/net/ice/base/ice_vlan_mode.h b/drivers/net/ice/base/ice_vlan_mode.h index e9f13e781..bcb6ff713 100644 --- a/drivers/net/ice/base/ice_vlan_mode.h +++ b/drivers/net/ice/base/ice_vlan_mode.h @@ -6,6 +6,7 @@ #define _ICE_VLAN_MODE_H_ #include "ice_osdep.h" +#include "ice_status.h" struct ice_hw; diff --git a/drivers/net/ice/base/meson.build b/drivers/net/ice/base/meson.build index b82d05fe7..c44d0e035 100644 --- a/drivers/net/ice/base/meson.build +++ b/drivers/net/ice/base/meson.build @@ -21,6 +21,11 @@ error_cflags = ['-Wno-unused-value', '-Wno-unused-variable', '-Wno-unused-parameter', ] + +if is_windows and cc.get_id() != 'clang' + cflags += ['-fno-asynchronous-unwind-tables'] +endif + c_args = cflags foreach flag: error_cflags diff --git a/drivers/net/ice/ice_dcf_ethdev.c b/drivers/net/ice/ice_dcf_ethdev.c index 215d71e1b..b937cbbb0 100644 --- a/drivers/net/ice/ice_dcf_ethdev.c +++ b/drivers/net/ice/ice_dcf_ethdev.c @@ -5,7 +5,6 @@ #include <errno.h> #include <stdbool.h> #include <sys/types.h> -#include <sys/ioctl.h> #include <unistd.h> #include <rte_interrupts.h> diff --git a/drivers/net/ice/ice_dcf_parent.c b/drivers/net/ice/ice_dcf_parent.c index 476fd4906..a8571b35e 100644 --- a/drivers/net/ice/ice_dcf_parent.c +++ b/drivers/net/ice/ice_dcf_parent.c @@ -121,7 +121,7 @@ ice_dcf_vsi_update_service_handler(void *param) struct ice_dcf_hw *hw = reset_param->dcf_hw; struct ice_dcf_adapter *adapter; - usleep(ICE_DCF_VSI_UPDATE_SERVICE_INTERVAL); + rte_delay_us(ICE_DCF_VSI_UPDATE_SERVICE_INTERVAL); rte_spinlock_lock(&vsi_update_lock); @@ -315,24 +315,24 @@ ice_dcf_request_pkg_name(struct ice_hw *hw, char *pkg_name) snprintf(pkg_name, ICE_MAX_PKG_FILENAME_SIZE, ICE_PKG_FILE_SEARCH_PATH_UPDATES "ice-%016llx.pkg", (unsigned long long)dsn); - if (!access(pkg_name, 0)) + if (!ice_access(pkg_name, 0)) return 0; snprintf(pkg_name, ICE_MAX_PKG_FILENAME_SIZE, ICE_PKG_FILE_SEARCH_PATH_DEFAULT "ice-%016llx.pkg", (unsigned long long)dsn); - if (!access(pkg_name, 0)) + if (!ice_access(pkg_name, 0)) return 0; pkg_file_direct: snprintf(pkg_name, ICE_MAX_PKG_FILENAME_SIZE, "%s", ICE_PKG_FILE_UPDATES); - if (!access(pkg_name, 0)) + if (!ice_access(pkg_name, 0)) return 0; snprintf(pkg_name, ICE_MAX_PKG_FILENAME_SIZE, "%s", ICE_PKG_FILE_DEFAULT); - if (!access(pkg_name, 0)) + if (!ice_access(pkg_name, 0)) return 0; return -1; diff --git a/drivers/net/ice/ice_ethdev.c b/drivers/net/ice/ice_ethdev.c index f0dc54357..81558fd8d 100644 --- a/drivers/net/ice/ice_ethdev.c +++ b/drivers/net/ice/ice_ethdev.c @@ -1678,17 +1678,17 @@ ice_pkg_file_search_path(struct rte_pci_device *pci_dev, char *pkg_file) strncpy(pkg_file, ICE_PKG_FILE_SEARCH_PATH_UPDATES, ICE_MAX_PKG_FILENAME_SIZE); - if (!access(strcat(pkg_file, opt_ddp_filename), 0)) + if (!ice_access(strcat(pkg_file, opt_ddp_filename), 0)) return 0; strncpy(pkg_file, ICE_PKG_FILE_SEARCH_PATH_DEFAULT, ICE_MAX_PKG_FILENAME_SIZE); - if (!access(strcat(pkg_file, opt_ddp_filename), 0)) + if (!ice_access(strcat(pkg_file, opt_ddp_filename), 0)) return 0; fail_dsn: strncpy(pkg_file, ICE_PKG_FILE_UPDATES, ICE_MAX_PKG_FILENAME_SIZE); - if (!access(pkg_file, 0)) + if (!ice_access(pkg_file, 0)) return 0; strncpy(pkg_file, ICE_PKG_FILE_DEFAULT, ICE_MAX_PKG_FILENAME_SIZE); return 0; diff --git a/drivers/net/ice/ice_rxtx_vec_avx2.c b/drivers/net/ice/ice_rxtx_vec_avx2.c index 1cc54903c..25efd30e6 100644 --- a/drivers/net/ice/ice_rxtx_vec_avx2.c +++ b/drivers/net/ice/ice_rxtx_vec_avx2.c @@ -4,7 +4,7 @@ #include "ice_rxtx_vec_common.h" -#include <x86intrin.h> +#include <rte_vect.h> #ifndef __INTEL_COMPILER #pragma GCC diagnostic ignored "-Wcast-qual" diff --git a/drivers/net/ice/ice_rxtx_vec_avx512.c b/drivers/net/ice/ice_rxtx_vec_avx512.c index 0e5a676e6..835d0aa70 100644 --- a/drivers/net/ice/ice_rxtx_vec_avx512.c +++ b/drivers/net/ice/ice_rxtx_vec_avx512.c @@ -4,7 +4,7 @@ #include "ice_rxtx_vec_common.h" -#include <x86intrin.h> +#include <rte_vect.h> #ifndef __INTEL_COMPILER #pragma GCC diagnostic ignored "-Wcast-qual" diff --git a/drivers/net/ice/meson.build b/drivers/net/ice/meson.build index 9a67c8f7b..44ef64b4c 100644 --- a/drivers/net/ice/meson.build +++ b/drivers/net/ice/meson.build @@ -1,12 +1,6 @@ # SPDX-License-Identifier: BSD-3-Clause # Copyright(c) 2018 Intel Corporation -if is_windows - build = false - reason = 'not supported on Windows' - subdir_done() -endif - subdir('base') objs = [base_objs] @@ -26,6 +20,10 @@ includes += include_directories('base', '../../common/iavf') if arch_subdir == 'x86' sources += files('ice_rxtx_vec_sse.c') + if is_windows and cc.get_id() != 'clang' + cflags += ['-fno-asynchronous-unwind-tables'] + endif + # compile AVX2 version if either: # a. we have AVX supported in minimum instruction set baseline # b. it's not minimum instruction set, but supported by compiler -- 2.18.0.windows.1 ^ permalink raw reply [flat|nested] 32+ messages in thread
* [dpdk-dev] [PATCH v3 3/3] net/ice: disable ice DDP package on Windows 2021-04-02 1:26 ` [dpdk-dev] [PATCH v3 0/3] Support ice PMD " Pallavi Kadam 2021-04-02 1:26 ` [dpdk-dev] [PATCH v3 1/3] build: enable iavf base code to build on windows Pallavi Kadam 2021-04-02 1:26 ` [dpdk-dev] [PATCH v3 2/3] net/ice: build on Windows Pallavi Kadam @ 2021-04-02 1:26 ` Pallavi Kadam 2021-04-06 16:40 ` [dpdk-dev] [PATCH v3 0/3] Support ice PMD " Ferruh Yigit 3 siblings, 0 replies; 32+ messages in thread From: Pallavi Kadam @ 2021-04-02 1:26 UTC (permalink / raw) To: dev, thomas Cc: dmitry.kozliuk, ranjit.menon, qiming.yang, qi.z.zhang, ferruh.yigit, pallavi.kadam Disable loading of external DDP package as it is not supported on Windows. Signed-off-by: Pallavi Kadam <pallavi.kadam@intel.com> Reviewed-by: Ranjit Menon <ranjit.menon@intel.com> Acked-by: Jie Zhou <jizh@microsoft.com> --- doc/guides/nics/ice.rst | 5 +++++ drivers/net/ice/ice_ethdev.c | 6 ++++++ 2 files changed, 11 insertions(+) diff --git a/doc/guides/nics/ice.rst b/doc/guides/nics/ice.rst index 100086132..8d40d1741 100644 --- a/doc/guides/nics/ice.rst +++ b/doc/guides/nics/ice.rst @@ -330,3 +330,8 @@ is stored in ``ice_adapter->active_pkg_type``. A symbolic link to the DDP package file is also ok. The same package file is used by both the kernel driver and the DPDK PMD. + + .. Note:: + + Windows support: The DDP package is not supported on Windows so, + loading of the package is disabled on Windows. diff --git a/drivers/net/ice/ice_ethdev.c b/drivers/net/ice/ice_ethdev.c index 81558fd8d..1dea6421c 100644 --- a/drivers/net/ice/ice_ethdev.c +++ b/drivers/net/ice/ice_ethdev.c @@ -1650,6 +1650,7 @@ ice_pf_setup(struct ice_pf *pf) * Extract device serial number from PCIe Configuration Space and * determine the pkg file path according to the DSN. */ +#ifndef RTE_EXEC_ENV_WINDOWS static int ice_pkg_file_search_path(struct rte_pci_device *pci_dev, char *pkg_file) { @@ -1693,6 +1694,7 @@ ice_pkg_file_search_path(struct rte_pci_device *pci_dev, char *pkg_file) strncpy(pkg_file, ICE_PKG_FILE_DEFAULT, ICE_MAX_PKG_FILENAME_SIZE); return 0; } +#endif enum ice_pkg_type ice_load_pkg_type(struct ice_hw *hw) @@ -1718,6 +1720,7 @@ ice_load_pkg_type(struct ice_hw *hw) return package_type; } +#ifndef RTE_EXEC_ENV_WINDOWS static int ice_load_pkg(struct rte_eth_dev *dev) { struct ice_hw *hw = ICE_DEV_PRIVATE_TO_HW(dev->data->dev_private); @@ -1793,6 +1796,7 @@ static int ice_load_pkg(struct rte_eth_dev *dev) rte_free(buf); return err; } +#endif static void ice_base_queue_get(struct ice_pf *pf) @@ -2073,6 +2077,7 @@ ice_dev_init(struct rte_eth_dev *dev) return -EINVAL; } +#ifndef RTE_EXEC_ENV_WINDOWS ret = ice_load_pkg(dev); if (ret) { if (ad->devargs.safe_mode_support == 0) { @@ -2085,6 +2090,7 @@ ice_dev_init(struct rte_eth_dev *dev) "Entering Safe Mode"); ad->is_safe_mode = 1; } +#endif PMD_INIT_LOG(INFO, "FW %d.%d.%05d API %d.%d", hw->fw_maj_ver, hw->fw_min_ver, hw->fw_build, -- 2.18.0.windows.1 ^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: [dpdk-dev] [PATCH v3 0/3] Support ice PMD on Windows 2021-04-02 1:26 ` [dpdk-dev] [PATCH v3 0/3] Support ice PMD " Pallavi Kadam ` (2 preceding siblings ...) 2021-04-02 1:26 ` [dpdk-dev] [PATCH v3 3/3] net/ice: disable ice DDP package " Pallavi Kadam @ 2021-04-06 16:40 ` Ferruh Yigit 2021-04-06 17:22 ` Ferruh Yigit 3 siblings, 1 reply; 32+ messages in thread From: Ferruh Yigit @ 2021-04-06 16:40 UTC (permalink / raw) To: Pallavi Kadam, dev, thomas Cc: dmitry.kozliuk, ranjit.menon, qiming.yang, qi.z.zhang On 4/2/2021 2:26 AM, Pallavi Kadam wrote: > This patch-set enables building the Intel ice PMD on Windows. > > v3 changes: > - Rebase on latest head > - Replaced 'unsigned long long' with 'size_t' > - Moved cflag '-fno-asynchronous-unwind-tables' above the assignment > "c_args = cflags" > - Updated release notes to add ice support on Windows in alphabetical > order > - Added a note on Windows limitation in ice driver document > > v2 changes: > - Updated patch#1 title to reflect the iavf base code support > - Added cflag '-fno-asynchronous-unwind-tables' to base driver > - Updated doc patch with the DDP documentation and > integrated it with the respective code commit > > Pallavi Kadam (3): > build: enable iavf base code to build on windows > net/ice: build on Windows > net/ice: disable ice DDP package on Windows > For series, Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com> ^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: [dpdk-dev] [PATCH v3 0/3] Support ice PMD on Windows 2021-04-06 16:40 ` [dpdk-dev] [PATCH v3 0/3] Support ice PMD " Ferruh Yigit @ 2021-04-06 17:22 ` Ferruh Yigit 0 siblings, 0 replies; 32+ messages in thread From: Ferruh Yigit @ 2021-04-06 17:22 UTC (permalink / raw) To: Pallavi Kadam, dev, thomas Cc: dmitry.kozliuk, ranjit.menon, qiming.yang, qi.z.zhang On 4/6/2021 5:40 PM, Ferruh Yigit wrote: > On 4/2/2021 2:26 AM, Pallavi Kadam wrote: >> This patch-set enables building the Intel ice PMD on Windows. >> >> v3 changes: >> - Rebase on latest head >> - Replaced 'unsigned long long' with 'size_t' >> - Moved cflag '-fno-asynchronous-unwind-tables' above the assignment >> "c_args = cflags" >> - Updated release notes to add ice support on Windows in alphabetical >> order >> - Added a note on Windows limitation in ice driver document >> >> v2 changes: >> - Updated patch#1 title to reflect the iavf base code support >> - Added cflag '-fno-asynchronous-unwind-tables' to base driver >> - Updated doc patch with the DDP documentation and >> integrated it with the respective code commit >> >> Pallavi Kadam (3): >> build: enable iavf base code to build on windows >> net/ice: build on Windows >> net/ice: disable ice DDP package on Windows >> > > For series, > Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com> Series applied to dpdk-next-net/main, thanks. ^ permalink raw reply [flat|nested] 32+ messages in thread
end of thread, other threads:[~2021-04-06 17:22 UTC | newest] Thread overview: 32+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2021-03-03 21:59 [dpdk-dev] [PATCH 0/4] Support ice PMD on Windows Pallavi Kadam 2021-03-03 21:59 ` [dpdk-dev] [PATCH 1/4] build: enable iavf driver " Pallavi Kadam 2021-03-03 21:59 ` [dpdk-dev] [PATCH 2/4] net/ice: build " Pallavi Kadam 2021-03-04 12:56 ` David Marchand 2021-03-08 23:30 ` Kadam, Pallavi 2021-03-03 21:59 ` [dpdk-dev] [PATCH 3/4] net/ice: disable ice DDP package " Pallavi Kadam 2021-03-03 23:12 ` Dmitry Kozlyuk 2021-03-05 0:31 ` Kadam, Pallavi 2021-03-03 21:59 ` [dpdk-dev] [PATCH 4/4] doc: update ice PMD and 21.05 release notes Pallavi Kadam 2021-03-03 23:13 ` Dmitry Kozlyuk 2021-03-05 0:25 ` Kadam, Pallavi 2021-03-11 1:58 ` [dpdk-dev] [PATCH v2 0/3] Support ice PMD on Windows Pallavi Kadam 2021-03-11 1:58 ` [dpdk-dev] [PATCH v2 1/3] build: enable iavf base code to build on windows Pallavi Kadam 2021-03-25 16:41 ` Jie Zhou 2021-03-26 11:41 ` Ferruh Yigit 2021-03-28 2:05 ` Kadam, Pallavi 2021-03-11 1:58 ` [dpdk-dev] [PATCH v2 2/3] net/ice: build on Windows Pallavi Kadam 2021-03-25 16:48 ` Jie Zhou 2021-03-26 11:51 ` Ferruh Yigit 2021-03-28 2:00 ` Kadam, Pallavi 2021-03-26 11:58 ` Ferruh Yigit 2021-03-28 2:04 ` Kadam, Pallavi 2021-03-11 1:58 ` [dpdk-dev] [PATCH v2 3/3] net/ice: disable ice DDP package " Pallavi Kadam 2021-03-25 16:55 ` Jie Zhou 2021-03-26 11:53 ` Ferruh Yigit 2021-03-28 2:02 ` Kadam, Pallavi 2021-04-02 1:26 ` [dpdk-dev] [PATCH v3 0/3] Support ice PMD " Pallavi Kadam 2021-04-02 1:26 ` [dpdk-dev] [PATCH v3 1/3] build: enable iavf base code to build on windows Pallavi Kadam 2021-04-02 1:26 ` [dpdk-dev] [PATCH v3 2/3] net/ice: build on Windows Pallavi Kadam 2021-04-02 1:26 ` [dpdk-dev] [PATCH v3 3/3] net/ice: disable ice DDP package " Pallavi Kadam 2021-04-06 16:40 ` [dpdk-dev] [PATCH v3 0/3] Support ice PMD " Ferruh Yigit 2021-04-06 17:22 ` Ferruh Yigit
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).