For supported kernel versions, refer to the *DPDK Release Notes*.
+.. _intel_vf_kvm:
+
Setting Up a KVM Virtual Machine Monitor
----------------------------------------
#. Create a Virtual Machine and install Fedora 14 on the Virtual Machine.
This is referred to as the Guest Operating System (Guest OS).
-#. Download and install the latest ixgbe driver from:
-
- `http://downloadcenter.intel.com/Detail_Desc.aspx?agr=Y&DwnldID=14687 <http://downloadcenter.intel.com/Detail_Desc.aspx?agr=Y&DwnldID=14687>`_
+#. Download and install the latest ixgbe driver from
+ `intel.com <https://downloadcenter.intel.com/download/14687>`_.
#. In the Host OS
.. figure:: img/inter_vm_comms.*
Inter-VM Communication
+
+
+Windows Support
+---------------
+
+* IAVF PMD currently is supported only inside Windows guest created on Linux host.
+
+* Physical PCI resources are exposed as virtual functions
+ into Windows VM using SR-IOV pass-through feature.
+
+* Create a Windows guest on Linux host using KVM hypervisor.
+ Refer to the steps mentioned in the above section: :ref:`intel_vf_kvm`.
+
+* In the Host machine, download and install the kernel Ethernet driver
+ for `i40e <https://downloadcenter.intel.com/download/24411>`_
+ or `ice <https://downloadcenter.intel.com/download/29746>`_.
+
+* For Windows guest, install NetUIO driver
+ in place of existing built-in (inbox) Virtual Function driver.
+
+* To load NetUIO driver, follow the steps mentioned in `dpdk-kmods repository
+ <https://git.dpdk.org/dpdk-kmods/tree/windows/netuio/README.rst>`_.
* Implement support for tunnel offload.
* Updated HWRM API to version 1.10.2.44
+* **Updated Intel iavf driver.**
+
+ * Added Intel iavf support on Windows.
+
* **Updated Intel ice driver.**
* Added 1PPS out support by a devargs.
static inline int
_atomic_set_cmd(struct iavf_info *vf, enum virtchnl_ops ops)
{
- int ret = rte_atomic32_cmpset(&vf->pend_cmd, VIRTCHNL_OP_UNKNOWN, ops);
+ int ret = rte_atomic32_cmpset((volatile uint32_t *)&vf->pend_cmd,
+ VIRTCHNL_OP_UNKNOWN, ops);
if (!ret)
PMD_DRV_LOG(ERR, "There is incomplete cmd %d", vf->pend_cmd);
#include "iavf_rxtx_vec_common.h"
-#include <x86intrin.h>
+#include <rte_vect.h>
#ifndef __INTEL_COMPILER
#pragma GCC diagnostic ignored "-Wcast-qual"
#include "iavf_rxtx_vec_common.h"
-#include <x86intrin.h>
+#include <rte_vect.h>
#ifndef __INTEL_COMPILER
#pragma GCC diagnostic ignored "-Wcast-qual"
}
/* 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;
# 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']
if arch_subdir == 'x86'
sources += files('iavf_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