@@ -57,7 +57,7 @@ function install_dpdk()
git checkout tags/v$1
else
- wget http://fast.dpdk.org/rel/dpdk-$1.tar.gz
- tar xzvf dpdk-$1.tar.gz > /dev/null
- DIR_NAME=$(tar -tf dpdk-$1.tar.gz | head -1 | cut -f1 -d"/")
+ wget https://fast.dpdk.org/rel/dpdk-$1.tar.xz
+ tar xvf dpdk-$1.tar.xz > /dev/null
+ DIR_NAME=$(tar -tf dpdk-$1.tar.xz | head -1 | cut -f1 -d"/")
if [ $DIR_NAME != "dpdk-$1" ]; then mv $DIR_NAME dpdk-$1; fi
cd dpdk-$1
@@ -84,5 +84,5 @@ fi
if [ "$DPDK" ]; then
if [ -z "$DPDK_VER" ]; then
- DPDK_VER="18.08"
+ DPDK_VER="18.11"
fi
install_dpdk $DPDK_VER
@@ -43,5 +43,5 @@ In addition to the requirements described in :doc:`general`, building Open
vSwitch with DPDK will require the following:
-- DPDK 18.08.0
+- DPDK 18.11
- A `DPDK supported NIC`_
@@ -72,7 +72,7 @@ Install DPDK
$ cd /usr/src/
- $ wget http://fast.dpdk.org/rel/dpdk-18.08.tar.xz
- $ tar xf dpdk-18.08.tar.xz
- $ export DPDK_DIR=/usr/src/dpdk-stable-18.08
+ $ wget http://fast.dpdk.org/rel/dpdk-18.11.tar.xz
+ $ tar xf dpdk-18.11.tar.xz
+ $ export DPDK_DIR=/usr/src/dpdk-18.11
$ cd $DPDK_DIR
@@ -673,5 +673,6 @@ Limitations
release notes`_.
-.. _DPDK release notes: http://dpdk.org/doc/guides/rel_notes/release_18_08.html
+.. _DPDK release notes:
+ https://doc.dpdk.org/guides/rel_notes/release_18_11.html
- Upper bound MTU: DPDK device drivers differ in how the L2 frame for a
@@ -83,3 +83,3 @@ DPDK. However, this functionality was removed because:
guests
-.. _DPDK documentation: https://dpdk.readthedocs.io/en/v17.11/prog_guide/ring_lib.html
+.. _DPDK documentation: https://doc.dpdk.org/guides/prog_guide/ring_lib.html
@@ -321,7 +321,7 @@ DPDK sources to VM and build DPDK::
$ cd /root/dpdk/
- $ wget http://fast.dpdk.org/rel/dpdk-18.08.tar.xz
- $ tar xf dpdk-18.08.tar.xz
- $ export DPDK_DIR=/root/dpdk/dpdk-stable-18.08
+ $ wget http://fast.dpdk.org/rel/dpdk-18.11.tar.xz
+ $ tar xf dpdk-18.11.tar.xz
+ $ export DPDK_DIR=/root/dpdk/dpdk-18.11
$ export DPDK_TARGET=x86_64-native-linuxapp-gcc
$ export DPDK_BUILD=$DPDK_DIR/$DPDK_TARGET
@@ -503,3 +503,3 @@ Because of this limitation, this feature is considered 'experimental'.
Further information can be found in the
`DPDK documentation
-<http://dpdk.readthedocs.io/en/v17.11/prog_guide/vhost_lib.html>`__
+<https://doc.dpdk.org/guides/prog_guide/vhost_lib.html>`__
@@ -13,4 +13,5 @@ Post-v2.10.0
* Add option for simple round-robin based Rxq to PMD assignment.
It can be set with pmd-rxq-assign.
+ * Add support for DPDK 18.11
- Add 'symmetric_l3' hash function.
- OVS now honors 'updelay' and 'downdelay' for bonds with LACP configured.
@@ -930,6 +930,7 @@ dpdk_eth_dev_port_config(struct netdev_dpdk *dev, int n_rxq, int n_txq)
}
- if (dev->hw_ol_features & NETDEV_RX_HW_CRC_STRIP) {
- conf.rxmode.offloads |= DEV_RX_OFFLOAD_CRC_STRIP;
+ if (!(dev->hw_ol_features & NETDEV_RX_HW_CRC_STRIP)
+ && info.rx_offload_capa & DEV_RX_OFFLOAD_KEEP_CRC) {
+ conf.rxmode.offloads |= DEV_RX_OFFLOAD_KEEP_CRC;
}
@@ -1351,5 +1352,5 @@ netdev_dpdk_destruct(struct netdev *netdev)
{
struct netdev_dpdk *dev = netdev_dpdk_cast(netdev);
- char devname[RTE_ETH_NAME_MAX_LEN];
+ struct rte_eth_dev_info dev_info;
ovs_mutex_lock(&dpdk_mutex);
@@ -1360,8 +1361,9 @@ netdev_dpdk_destruct(struct netdev *netdev)
if (dev->attached) {
rte_eth_dev_close(dev->port_id);
- if (rte_eth_dev_detach(dev->port_id, devname) < 0) {
+ rte_eth_dev_info_get(dev->port_id, &dev_info);
+ if (dev_info.device && !rte_dev_remove(dev_info.device)) {
+ VLOG_INFO("Device '%s' has been detached", dev->devargs);
+ } else {
VLOG_ERR("Device '%s' can not be detached", dev->devargs);
- } else {
- VLOG_INFO("Device '%s' has been detached", devname);
}
}
@@ -1653,5 +1655,6 @@ netdev_dpdk_process_devargs(struct netdev_dpdk *dev,
|| !rte_eth_dev_is_valid_port(new_port_id)) {
/* Device not found in DPDK, attempt to attach it */
- if (!rte_eth_dev_attach(devargs, &new_port_id)) {
+ if (!rte_dev_probe(devargs)
+ && !rte_eth_dev_get_port_by_name(name, &new_port_id)) {
/* Attach successful */
dev->attached = true;
@@ -3229,9 +3232,8 @@ netdev_dpdk_detach(struct unixctl_conn *conn, int argc OVS_UNUSED,
const char *argv[], void *aux OVS_UNUSED)
{
- int ret;
char *response;
dpdk_port_t port_id;
- char devname[RTE_ETH_NAME_MAX_LEN];
struct netdev_dpdk *dev;
+ struct rte_eth_dev_info dev_info;
ovs_mutex_lock(&dpdk_mutex);
@@ -3252,6 +3254,6 @@ netdev_dpdk_detach(struct unixctl_conn *conn, int argc OVS_UNUSED,
rte_eth_dev_close(port_id);
- ret = rte_eth_dev_detach(port_id, devname);
- if (ret < 0) {
+ rte_eth_dev_info_get(port_id, &dev_info);
+ if (!dev_info.device || rte_dev_remove(dev_info.device)) {
response = xasprintf("Device '%s' can not be detached", argv[1]);
goto error;
DEV_RX_OFFLOAD_CRC_STRIP has been removed from DPDK 18.11. DEV_RX_OFFLOAD_KEEP_CRC can now be used to keep the CRC. Use the correct flag and check it is supported. rte_eth_dev_attach/detach have been removed from DPDK 18.11. Replace them with rte_dev_probe/remove. Update docs and travis to use DPDK18.11. Signed-off-by: Kevin Traynor <ktraynor@redhat.com> --- .travis/linux-build.sh | 8 ++++---- Documentation/intro/install/dpdk.rst | 11 ++++++----- Documentation/topics/dpdk/ring.rst | 2 +- Documentation/topics/dpdk/vhost-user.rst | 8 ++++---- NEWS | 1 + lib/netdev-dpdk.c | 24 +++++++++++++----------- 6 files changed, 29 insertions(+), 25 deletions(-)