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 travis to use DPDK18.11-rc4 (tarball only). Signed-off-by: Kevin Traynor <ktray...@redhat.com> --- .travis/linux-build.sh | 8 ++++---- lib/netdev-dpdk.c | 24 +++++++++++++----------- 2 files changed, 17 insertions(+), 15 deletions(-) diff --git a/.travis/linux-build.sh b/.travis/linux-build.sh index 4c9e95201..d7ca63d7e 100755 --- a/.travis/linux-build.sh +++ b/.travis/linux-build.sh @@ -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://git.dpdk.org/dpdk/snapshot/dpdk-$1.tar.xz + tar xvf dpdk-$1.tar.xy > /dev/null + DIR_NAME=$(tar -tf dpdk-$1.tar.xy | 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="d82e5db6f6561356990000cac40e78b59ba0c65f" fi install_dpdk $DPDK_VER diff --git a/lib/netdev-dpdk.c b/lib/netdev-dpdk.c index 1480bf8d1..af310b06b 100644 --- a/lib/netdev-dpdk.c +++ b/lib/netdev-dpdk.c @@ -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; @@ -3209,9 +3212,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); @@ -3232,6 +3234,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; -- 2.19.0 _______________________________________________ dev mailing list d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev