drivers/net: build i40e and mlx5 on Windows
authorPallavi Kadam <pallavi.kadam@intel.com>
Tue, 22 Dec 2020 00:45:11 +0000 (16:45 -0800)
committerThomas Monjalon <thomas@monjalon.net>
Thu, 14 Jan 2021 22:51:24 +0000 (23:51 +0100)
Allows i40e and mlx5 PMDs to compile on Windows and disable other drivers.

Disable few i40e warnings with Clang such as comparison of integers of
different signs and macro redefinitions.

Signed-off-by: Pallavi Kadam <pallavi.kadam@intel.com>
Reviewed-by: Ranjit Menon <ranjit.menon@intel.com>
Acked-by: Tal Shnaiderman <talshn@nvidia.com>
Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
44 files changed:
drivers/net/af_xdp/meson.build
drivers/net/ark/meson.build
drivers/net/atlantic/meson.build
drivers/net/bnx2x/meson.build
drivers/net/bnxt/meson.build
drivers/net/bonding/meson.build
drivers/net/cxgbe/meson.build
drivers/net/e1000/meson.build
drivers/net/ena/meson.build
drivers/net/enic/meson.build
drivers/net/failsafe/meson.build
drivers/net/fm10k/meson.build
drivers/net/hinic/meson.build
drivers/net/i40e/base/i40e_osdep.h
drivers/net/i40e/i40e_ethdev_vf.c
drivers/net/i40e/i40e_hash.c
drivers/net/i40e/i40e_rxtx_vec_avx2.c
drivers/net/i40e/i40e_tm.c
drivers/net/iavf/meson.build
drivers/net/ice/meson.build
drivers/net/igc/meson.build
drivers/net/ionic/meson.build
drivers/net/ipn3ke/meson.build
drivers/net/ixgbe/meson.build
drivers/net/kni/meson.build
drivers/net/liquidio/meson.build
drivers/net/meson.build
drivers/net/mvneta/meson.build
drivers/net/mvpp2/meson.build
drivers/net/netvsc/meson.build
drivers/net/nfb/meson.build
drivers/net/null/meson.build
drivers/net/octeontx/meson.build
drivers/net/octeontx2/meson.build
drivers/net/pcap/meson.build
drivers/net/qede/meson.build
drivers/net/ring/meson.build
drivers/net/sfc/meson.build
drivers/net/szedata2/meson.build
drivers/net/thunderx/meson.build
drivers/net/txgbe/meson.build
drivers/net/vhost/meson.build
drivers/net/virtio/meson.build
drivers/net/vmxnet3/meson.build

index fead8dd..dce1230 100644 (file)
@@ -1,6 +1,12 @@
 # SPDX-License-Identifier: BSD-3-Clause
 # Copyright(c) 2019 Intel Corporation
 
+if is_windows
+       build = false
+       reason = 'not supported on Windows'
+       subdir_done()
+endif
+
 sources = files('rte_eth_af_xdp.c')
 
 bpf_dep = dependency('libbpf', required: false)
index 80bce94..aea3ba4 100644 (file)
@@ -1,6 +1,12 @@
 # SPDX-License-Identifier: BSD-3-Clause
 # Copyright(c) 2018 Intel Corporation
 
+if is_windows
+       build = false
+       reason = 'not supported on Windows'
+       subdir_done()
+endif
+
 headers = files('rte_pmd_ark.h')
 
 sources = files('ark_ddm.c',
index 60b8468..01373f8 100644 (file)
@@ -1,6 +1,12 @@
 # SPDX-License-Identifier: BSD-3-Clause
 # Copyright(c) 2018 Aquantia Corporation
 
+if is_windows
+       build = false
+       reason = 'not supported on Windows'
+       subdir_done()
+endif
+
 sources = files(
        'atl_rxtx.c',
        'atl_ethdev.c',
index 4892bb2..8837ef4 100644 (file)
@@ -1,6 +1,12 @@
 # SPDX-License-Identifier: BSD-3-Clause
 # Copyright(c) 2018 Intel Corporation
 
+if is_windows
+       build = false
+       reason = 'not supported on Windows'
+       subdir_done()
+endif
+
 dep = dependency('zlib', required: false)
 build = dep.found()
 reason = 'missing dependency, "zlib"'
index 2896337..0926556 100644 (file)
@@ -2,6 +2,12 @@
 # Copyright(c) 2018 Intel Corporation
 # Copyright(c) 2020 Broadcom
 
+if is_windows
+       build = false
+       reason = 'not supported on Windows'
+       subdir_done()
+endif
+
 headers = files('rte_pmd_bnxt.h')
 
 includes += include_directories('tf_ulp')
index adf6462..4682903 100644 (file)
@@ -1,6 +1,12 @@
 # SPDX-License-Identifier: BSD-3-Clause
 # Copyright(c) 2017 Intel Corporation
 
+if is_windows
+       build = false
+       reason = 'not supported on Windows'
+       subdir_done()
+endif
+
 name = 'bond' #, james bond :-)
 sources = files('rte_eth_bond_api.c', 'rte_eth_bond_pmd.c', 'rte_eth_bond_flow.c',
        'rte_eth_bond_args.c', 'rte_eth_bond_8023ad.c', 'rte_eth_bond_alb.c')
index 3992aba..52896ea 100644 (file)
@@ -1,6 +1,12 @@
 # SPDX-License-Identifier: BSD-3-Clause
 # Copyright(c) 2018 Intel Corporation
 
+if is_windows
+       build = false
+       reason = 'not supported on Windows'
+       subdir_done()
+endif
+
 sources = files('cxgbe_ethdev.c',
        'cxgbe_main.c',
        'cxgbevf_ethdev.c',
index cf45699..43ad52c 100644 (file)
@@ -1,6 +1,12 @@
 # SPDX-License-Identifier: BSD-3-Clause
 # Copyright(c) 2017 Intel Corporation
 
+if is_windows
+       build = false
+       reason = 'not supported on Windows'
+       subdir_done()
+endif
+
 subdir('base')
 objs = [base_objs]
 
index 189903b..772fbfc 100644 (file)
@@ -1,6 +1,12 @@
 # SPDX-License-Identifier: BSD-3-Clause
 # Copyright(c) 2018 Intel Corporation
 
+if is_windows
+       build = false
+       reason = 'not supported on Windows'
+       subdir_done()
+endif
+
 sources = files('ena_ethdev.c',
        'base/ena_com.c',
        'base/ena_eth_com.c')
index 32c3312..94fcc79 100644 (file)
@@ -1,6 +1,12 @@
 # SPDX-License-Identifier: BSD-3-Clause
 # Copyright(c) 2018 Cisco Systems, Inc.
 
+if is_windows
+       build = false
+       reason = 'not supported on Windows'
+       subdir_done()
+endif
+
 sources = files(
        'base/vnic_cq.c',
        'base/vnic_dev.c',
index 56010e2..d8343be 100644 (file)
@@ -1,6 +1,12 @@
 # SPDX-License-Identifier: BSD-3-Clause
 # Copyright(c) 2018 Intel Corporation
 
+if is_windows
+       build = false
+       reason = 'not supported on Windows'
+       subdir_done()
+endif
+
 cflags += '-std=gnu99'
 cflags += '-D_DEFAULT_SOURCE'
 cflags += '-D_XOPEN_SOURCE=700'
index 2772ea4..fa264f4 100644 (file)
@@ -1,6 +1,12 @@
 # SPDX-License-Identifier: BSD-3-Clause
 # Copyright(c) 2017 Intel Corporation
 
+if is_windows
+       build = false
+       reason = 'not supported on Windows'
+       subdir_done()
+endif
+
 subdir('base')
 objs = [base_objs]
 
index bc7e246..61ea395 100644 (file)
@@ -1,6 +1,12 @@
 # SPDX-License-Identifier: BSD-3-Clause
 # Copyright(c) 2017 Huawei Technologies Co., Ltd
 
+if is_windows
+       build = false
+       reason = 'not supported on Windows'
+       subdir_done()
+endif
+
 subdir('base')
 objs = [base_objs]
 
index c9287ff..ec9712c 100644 (file)
@@ -20,6 +20,7 @@
 #include <rte_io.h>
 
 #include "../i40e_logs.h"
+#include "i40e_status.h"
 
 #define INLINE inline
 #define STATIC static
@@ -67,6 +68,15 @@ typedef enum i40e_status_code i40e_status;
 #define false           0
 #define true            1
 
+/* 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)
 
index dc076ae..346ec29 100644 (file)
@@ -1505,7 +1505,8 @@ i40evf_handle_aq_msg(struct rte_eth_dev *dev)
                                                       info.msg_len);
                        else {
                                /* read message and it's expected one */
-                               if (msg_opc == vf->pend_cmd) {
+                               if ((volatile uint32_t)msg_opc ==
+                                   vf->pend_cmd) {
                                        vf->cmd_retval = msg_ret;
                                        /* prevent compiler reordering */
                                        rte_compiler_barrier();
index e07f806..ae861ab 100644 (file)
@@ -354,9 +354,10 @@ i40e_hash_get_pattern_type(const struct rte_flow_item pattern[],
                }
 
                /* Check the previous item allows this sub-item. */
-               if (prev_item_type >= RTE_DIM(pattern_next_allow_items) ||
+               if (prev_item_type >= (enum rte_flow_item_type)
+                               RTE_DIM(pattern_next_allow_items) ||
                    !(pattern_next_allow_items[prev_item_type] &
-                   BIT_ULL(pattern->type)))
+                               BIT_ULL(pattern->type)))
                        goto not_sup;
 
                /* For VLAN item, it does no matter about to pattern type
@@ -372,7 +373,8 @@ i40e_hash_get_pattern_type(const struct rte_flow_item pattern[],
                }
 
                prev_item_type = last_item_type;
-               assert(last_item_type < RTE_DIM(pattern_item_header));
+               assert(last_item_type < (enum rte_flow_item_type)
+                               RTE_DIM(pattern_item_header));
                item_hdr = pattern_item_header[last_item_type];
                assert(item_hdr);
 
index fe6ec7d..e5a1dea 100644 (file)
@@ -12,7 +12,7 @@
 #include "i40e_rxtx.h"
 #include "i40e_rxtx_vec_common.h"
 
-#include <x86intrin.h>
+#include <rte_vect.h>
 
 #ifndef __INTEL_COMPILER
 #pragma GCC diagnostic ignored "-Wcast-qual"
index 5d722f9..cab296e 100644 (file)
@@ -554,7 +554,7 @@ i40e_node_add(struct rte_eth_dev *dev, uint32_t node_id,
        }
        /* check level */
        if (level_id != RTE_TM_NODE_LEVEL_ID_ANY &&
-           level_id != parent_node_type + 1) {
+           level_id != (uint32_t)parent_node_type + 1) {
                error->type = RTE_TM_ERROR_TYPE_NODE_PARAMS;
                error->message = "Wrong level";
                return -EINVAL;
index 26c02c4..ac2af81 100644 (file)
@@ -1,6 +1,12 @@
 # SPDX-License-Identifier: BSD-3-Clause
 # Copyright(c) 2018 Luca Boccassi <bluca@debian.org>
 
+if is_windows
+       build = false
+       reason = 'not supported on Windows'
+       subdir_done()
+endif
+
 cflags += ['-Wno-strict-aliasing']
 
 includes += include_directories('../../common/iavf')
index d589360..9a67c8f 100644 (file)
@@ -1,6 +1,12 @@
 # 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]
 
index fba119c..b971e6f 100644 (file)
@@ -1,6 +1,12 @@
 # SPDX-License-Identifier: BSD-3-Clause
 # Copyright(c) 2019-2020 Intel Corporation
 
+if is_windows
+       build = false
+       reason = 'not supported on Windows'
+       subdir_done()
+endif
+
 subdir('base')
 objs = [base_objs]
 
index 1c6362d..631ea27 100644 (file)
@@ -1,6 +1,12 @@
 # SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0)
 # Copyright(c) 2019 Pensando
 
+if is_windows
+       build = false
+       reason = 'not supported on Windows'
+       subdir_done()
+endif
+
 sources = files(
        'ionic_mac_api.c',
        'ionic_rx_filter.c',
index d5000d8..65de9d5 100644 (file)
@@ -1,6 +1,12 @@
 # SPDX-License-Identifier: BSD-3-Clause
 # Copyright(c) 2019 Intel Corporation
 
+if is_windows
+       build = false
+       reason = 'not supported on Windows'
+       subdir_done()
+endif
+
 #
 # Add the experimenatal APIs called from this PMD
 #  rte_eth_switch_domain_alloc()
index f104378..76cbfb8 100644 (file)
@@ -1,6 +1,12 @@
 # SPDX-License-Identifier: BSD-3-Clause
 # Copyright(c) 2017 Intel Corporation
 
+if is_windows
+       build = false
+       reason = 'not supported on Windows'
+       subdir_done()
+endif
+
 cflags += ['-DRTE_LIBRTE_IXGBE_BYPASS']
 
 subdir('base')
index d9fa898..4d5e5fe 100644 (file)
@@ -1,6 +1,12 @@
 # SPDX-License-Identifier: BSD-3-Clause
 # Copyright(c) 2018 Intel Corporation
 
+if is_windows
+       build = false
+       reason = 'not supported on Windows'
+       subdir_done()
+endif
+
 # this driver can be built if-and-only-if KNI library is buildable
 build = dpdk_conf.has('RTE_LIB_KNI')
 reason = 'missing dependency, DPDK KNI library'
index 9ae48e2..4965ebe 100644 (file)
@@ -1,6 +1,12 @@
 # SPDX-License-Identifier: BSD-3-Clause
 # Copyright(c) 2018 Intel Corporation
 
+if is_windows
+       build = false
+       reason = 'not supported on Windows'
+       subdir_done()
+endif
+
 sources = files('base/lio_23xx_vf.c',
        'base/lio_mbox.c',
        'lio_ethdev.c',
index 6e4aa6b..4948500 100644 (file)
@@ -1,9 +1,6 @@
 # SPDX-License-Identifier: BSD-3-Clause
 # Copyright(c) 2017 Intel Corporation
 
-if is_windows
-       subdir_done()
-endif
 
 drivers = ['af_packet',
        'af_xdp',
index c887ddc..4e073e0 100644 (file)
@@ -3,6 +3,12 @@
 # Copyright(c) 2018 Semihalf.
 # All rights reserved.
 
+if is_windows
+       build = false
+       reason = 'not supported on Windows'
+       subdir_done()
+endif
+
 dep = dependency('libmusdk', required: false)
 if not dep.found()
        build = false
index 3015a55..c509d89 100644 (file)
@@ -3,6 +3,12 @@
 # Copyright(c) 2018 Semihalf.
 # All rights reserved.
 
+if is_windows
+       build = false
+       reason = 'not supported on Windows'
+       subdir_done()
+endif
+
 dep = dependency('libmusdk', required: false)
 if not dep.found()
        build = false
index f3f52f7..c190124 100644 (file)
@@ -1,6 +1,12 @@
 # SPDX-License-Identifier: BSD-3-Clause
 # Copyright(c) 2018 Microsoft Corporation
 
+if is_windows
+       build = false
+       reason = 'not supported on Windows'
+       subdir_done()
+endif
+
 build = dpdk_conf.has('RTE_BUS_VMBUS')
 reason = 'missing dependency, DPDK VMBus driver'
 sources = files('hn_ethdev.c', 'hn_rxtx.c', 'hn_rndis.c', 'hn_nvs.c', 'hn_vf.c')
index d53e8ec..42f7921 100644 (file)
@@ -3,6 +3,12 @@
 # Copyright(c) 2019 Netcope Technologies, a.s. <info@netcope.com>
 # All rights reserved.
 
+if is_windows
+       build = false
+       reason = 'not supported on Windows'
+       subdir_done()
+endif
+
 dep = dependency('netcope-common', required: false)
 reason = 'missing dependency, "libnfb"'
 build = dep.found()
index 68ac0d2..d9fb88f 100644 (file)
@@ -1,4 +1,10 @@
 # SPDX-License-Identifier: BSD-3-Clause
 # Copyright(c) 2017 Intel Corporation
 
+if is_windows
+       build = false
+       reason = 'not supported on Windows'
+       subdir_done()
+endif
+
 sources = files('rte_eth_null.c')
index e8d3ff4..4e784b9 100644 (file)
@@ -1,6 +1,12 @@
 # SPDX-License-Identifier: BSD-3-Clause
 # Copyright(c) 2017 Cavium, Inc
 
+if is_windows
+       build = false
+       reason = 'not supported on Windows'
+       subdir_done()
+endif
+
 subdir('base')
 objs = [base_objs]
 
index 638c04a..e2c139a 100644 (file)
@@ -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'
index b680710..b65d91e 100644 (file)
@@ -1,6 +1,12 @@
 # SPDX-License-Identifier: BSD-3-Clause
 # Copyright(c) 2017 Intel Corporation
 
+if is_windows
+       build = false
+       reason = 'not supported on Windows'
+       subdir_done()
+endif
+
 if not dpdk_conf.has('RTE_PORT_PCAP')
        build = false
        reason = 'missing dependency, "libpcap"'
index ff0ac0b..05ce695 100644 (file)
@@ -1,6 +1,12 @@
 # SPDX-License-Identifier: BSD-3-Clause
 # Copyright(c) 2018 Luca Boccassi <bluca@debian.org>
 
+if is_windows
+       build = false
+       reason = 'not supported on Windows'
+       subdir_done()
+endif
+
 subdir('base')
 objs = [base_objs]
 
index 26a324e..fb6a5f7 100644 (file)
@@ -1,5 +1,11 @@
 # SPDX-License-Identifier: BSD-3-Clause
 # Copyright(c) 2017 Intel Corporation
 
+if is_windows
+       build = false
+       reason = 'not supported on Windows'
+       subdir_done()
+endif
+
 sources = files('rte_eth_ring.c')
 headers = files('rte_eth_ring.h')
index be888bd..c3ecdbe 100644 (file)
@@ -6,6 +6,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'
index b53fcbc..4c02830 100644 (file)
@@ -1,6 +1,12 @@
 # SPDX-License-Identifier: BSD-3-Clause
 # Copyright(c) 2018 Intel Corporation
 
+if is_windows
+       build = false
+       reason = 'not supported on Windows'
+       subdir_done()
+endif
+
 dep = dependency('libsze2', required: false)
 build = dep.found()
 reason = 'missing dependency, "libsze2"'
index 69819a9..dad5c59 100644 (file)
@@ -1,6 +1,12 @@
 # SPDX-License-Identifier: BSD-3-Clause
 # Copyright(c) 2017 Cavium, Inc
 
+if is_windows
+       build = false
+       reason = 'not supported on Windows'
+       subdir_done()
+endif
+
 subdir('base')
 objs = [base_objs]
 
index f6a51a9..60505e2 100644 (file)
@@ -1,6 +1,12 @@
 # SPDX-License-Identifier: BSD-3-Clause
 # Copyright(c) 2015-2020
 
+if is_windows
+       build = false
+       reason = 'not supported on Windows'
+       subdir_done()
+endif
+
 subdir('base')
 objs = [base_objs]
 
index 1ae4854..804b7a1 100644 (file)
@@ -1,6 +1,12 @@
 # SPDX-License-Identifier: BSD-3-Clause
 # Copyright(c) 2018 Intel Corporation
 
+if is_windows
+       build = false
+       reason = 'not supported on Windows'
+       subdir_done()
+endif
+
 build = dpdk_conf.has('RTE_LIB_VHOST')
 reason = 'missing dependency, DPDK vhost library'
 sources = files('rte_eth_vhost.c')
index 738d667..0e78d12 100644 (file)
@@ -1,6 +1,12 @@
 # SPDX-License-Identifier: BSD-3-Clause
 # Copyright(c) 2018 Intel Corporation
 
+if is_windows
+       build = false
+       reason = 'not supported on Windows'
+       subdir_done()
+endif
+
 sources += files('virtio_ethdev.c',
        'virtio_pci.c',
        'virtio_rxtx.c',
index 0641f77..1242386 100644 (file)
@@ -1,6 +1,12 @@
 # SPDX-License-Identifier: BSD-3-Clause
 # Copyright(c) 2018 Luca Boccassi <bluca@debian.org>
 
+if is_windows
+       build = false
+       reason = 'not supported on Windows'
+       subdir_done()
+endif
+
 sources += files(
        'vmxnet3_ethdev.c',
        'vmxnet3_rxtx.c',