[ovs-dev] [PATCH branch-2.11 1/1] dpdk: Use DPDK 18.11.6 release
Modify travis linux build script to use the latest DPDK stable release 18.11.6. Update docs for latest DPDK stable releases. Signed-off-by: Tomasz Konieczny --- .travis/linux-build.sh | 2 +- Documentation/faq/releases.rst | 2 +- Documentation/intro/install/dpdk.rst | 8 Documentation/topics/dpdk/vhost-user.rst | 6 +++--- NEWS | 2 +- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/.travis/linux-build.sh b/.travis/linux-build.sh index 5d91a36..a2bf23a 100755 --- a/.travis/linux-build.sh +++ b/.travis/linux-build.sh @@ -88,7 +88,7 @@ fi if [ "$DPDK" ] || [ "$DPDK_SHARED" ]; then if [ -z "$DPDK_VER" ]; then -DPDK_VER="18.11.5" +DPDK_VER="18.11.6" fi install_dpdk $DPDK_VER if [ "$CC" = "clang" ]; then diff --git a/Documentation/faq/releases.rst b/Documentation/faq/releases.rst index dbeb6c4..5868da3 100644 --- a/Documentation/faq/releases.rst +++ b/Documentation/faq/releases.rst @@ -176,7 +176,7 @@ Q: What DPDK version does each Open vSwitch release work with? 2.8.x17.05.2 2.9.x17.11.4 2.10.x 17.11.4 -2.11.x 18.11.5 +2.11.x 18.11.6 === Q: Are all the DPDK releases that OVS versions work with maintained? diff --git a/Documentation/intro/install/dpdk.rst b/Documentation/intro/install/dpdk.rst index 13aa8a1..78a28c1 100644 --- a/Documentation/intro/install/dpdk.rst +++ b/Documentation/intro/install/dpdk.rst @@ -42,7 +42,7 @@ Build requirements In addition to the requirements described in :doc:`general`, building Open vSwitch with DPDK will require the following: -- DPDK 18.11.5 +- DPDK 18.11.6 - A `DPDK supported NIC`_ @@ -71,9 +71,9 @@ Install DPDK #. Download the `DPDK sources`_, extract the file and set ``DPDK_DIR``:: $ cd /usr/src/ - $ wget http://fast.dpdk.org/rel/dpdk-18.11.5.tar.xz - $ tar xf dpdk-18.11.5.tar.xz - $ export DPDK_DIR=/usr/src/dpdk-stable-18.11.5 + $ wget http://fast.dpdk.org/rel/dpdk-18.11.6.tar.xz + $ tar xf dpdk-18.11.6.tar.xz + $ export DPDK_DIR=/usr/src/dpdk-stable-18.11.6 $ cd $DPDK_DIR #. (Optional) Configure DPDK as a shared library diff --git a/Documentation/topics/dpdk/vhost-user.rst b/Documentation/topics/dpdk/vhost-user.rst index ddfb609..7464e9b 100644 --- a/Documentation/topics/dpdk/vhost-user.rst +++ b/Documentation/topics/dpdk/vhost-user.rst @@ -320,9 +320,9 @@ To begin, instantiate a guest as described in :ref:`dpdk-vhost-user` or DPDK sources to VM and build DPDK:: $ cd /root/dpdk/ -$ wget http://fast.dpdk.org/rel/dpdk-18.11.5.tar.xz -$ tar xf dpdk-18.11.5.tar.xz -$ export DPDK_DIR=/root/dpdk/dpdk-stable-18.11.5 +$ wget http://fast.dpdk.org/rel/dpdk-18.11.6.tar.xz +$ tar xf dpdk-18.11.6.tar.xz +$ export DPDK_DIR=/root/dpdk/dpdk-stable-18.11.6 $ export DPDK_TARGET=x86_64-native-linuxapp-gcc $ export DPDK_BUILD=$DPDK_DIR/$DPDK_TARGET $ cd $DPDK_DIR diff --git a/NEWS b/NEWS index f01ea90..be1f38e 100644 --- a/NEWS +++ b/NEWS @@ -1,7 +1,7 @@ v2.11.4 - xx xxx - - DPDK - * OVS validated with DPDK 18.11.5, due to the inclusion of a fix for + * OVS validated with DPDK 18.11.6, due to the inclusion of a fix for CVE-2019-14818, this DPDK version is strongly recommended to be used. v2.11.3 - 06 Sep 2019 -- 2.7.4 ___ dev mailing list d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev
[ovs-dev] [branch-2.12 1/1] dpdk: Use DPDK 18.11.6 release
Modify travis linux build script to use the latest DPDK stable release 18.11.6. Update docs for latest DPDK stable releases. Signed-off-by: Tomasz Konieczny --- .travis/linux-build.sh | 2 +- Documentation/faq/releases.rst | 4 ++-- Documentation/intro/install/dpdk.rst | 8 Documentation/topics/dpdk/vhost-user.rst | 6 +++--- NEWS | 2 +- 5 files changed, 11 insertions(+), 11 deletions(-) diff --git a/.travis/linux-build.sh b/.travis/linux-build.sh index 1afa429..b58c661 100755 --- a/.travis/linux-build.sh +++ b/.travis/linux-build.sh @@ -105,7 +105,7 @@ fi if [ "$DPDK" ] || [ "$DPDK_SHARED" ]; then if [ -z "$DPDK_VER" ]; then -DPDK_VER="18.11.5" +DPDK_VER="18.11.6" fi install_dpdk $DPDK_VER if [ "$CC" = "clang" ]; then diff --git a/Documentation/faq/releases.rst b/Documentation/faq/releases.rst index cc06571..5de0ee6 100644 --- a/Documentation/faq/releases.rst +++ b/Documentation/faq/releases.rst @@ -178,8 +178,8 @@ Q: What DPDK version does each Open vSwitch release work with? 2.8.x17.05.2 2.9.x17.11.4 2.10.x 17.11.4 -2.11.x 18.11.5 -2.12.x 18.11.5 +2.11.x 18.11.6 +2.12.x 18.11.6 === Q: Are all the DPDK releases that OVS versions work with maintained? diff --git a/Documentation/intro/install/dpdk.rst b/Documentation/intro/install/dpdk.rst index 13aa8a1..78a28c1 100644 --- a/Documentation/intro/install/dpdk.rst +++ b/Documentation/intro/install/dpdk.rst @@ -42,7 +42,7 @@ Build requirements In addition to the requirements described in :doc:`general`, building Open vSwitch with DPDK will require the following: -- DPDK 18.11.5 +- DPDK 18.11.6 - A `DPDK supported NIC`_ @@ -71,9 +71,9 @@ Install DPDK #. Download the `DPDK sources`_, extract the file and set ``DPDK_DIR``:: $ cd /usr/src/ - $ wget http://fast.dpdk.org/rel/dpdk-18.11.5.tar.xz - $ tar xf dpdk-18.11.5.tar.xz - $ export DPDK_DIR=/usr/src/dpdk-stable-18.11.5 + $ wget http://fast.dpdk.org/rel/dpdk-18.11.6.tar.xz + $ tar xf dpdk-18.11.6.tar.xz + $ export DPDK_DIR=/usr/src/dpdk-stable-18.11.6 $ cd $DPDK_DIR #. (Optional) Configure DPDK as a shared library diff --git a/Documentation/topics/dpdk/vhost-user.rst b/Documentation/topics/dpdk/vhost-user.rst index a0d35cd..d9e6745 100644 --- a/Documentation/topics/dpdk/vhost-user.rst +++ b/Documentation/topics/dpdk/vhost-user.rst @@ -392,9 +392,9 @@ To begin, instantiate a guest as described in :ref:`dpdk-vhost-user` or DPDK sources to VM and build DPDK:: $ cd /root/dpdk/ -$ wget http://fast.dpdk.org/rel/dpdk-18.11.5.tar.xz -$ tar xf dpdk-18.11.5.tar.xz -$ export DPDK_DIR=/root/dpdk/dpdk-stable-18.11.5 +$ wget http://fast.dpdk.org/rel/dpdk-18.11.6.tar.xz +$ tar xf dpdk-18.11.6.tar.xz +$ export DPDK_DIR=/root/dpdk/dpdk-stable-18.11.6 $ export DPDK_TARGET=x86_64-native-linuxapp-gcc $ export DPDK_BUILD=$DPDK_DIR/$DPDK_TARGET $ cd $DPDK_DIR diff --git a/NEWS b/NEWS index b9be7f7..6cf2d7a 100644 --- a/NEWS +++ b/NEWS @@ -1,7 +1,7 @@ v2.12.1 - xx xxx - - DPDK: - * OVS validated with DPDK 18.11.5, due to the inclusion of a fix for + * OVS validated with DPDK 18.11.6, due to the inclusion of a fix for CVE-2019-14818, this DPDK version is strongly recommended to be used. v2.12.0 - 03 Sep 2019 -- 2.7.4 ___ dev mailing list d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev
[ovs-dev] [PATCH 1/1] docs: Update DPDK version table
Signed-off-by: Tomasz Konieczny --- Documentation/faq/releases.rst | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Documentation/faq/releases.rst b/Documentation/faq/releases.rst index 6702c58..6ff47d7 100644 --- a/Documentation/faq/releases.rst +++ b/Documentation/faq/releases.rst @@ -185,8 +185,9 @@ Q: What DPDK version does each Open vSwitch release work with? 2.8.x17.05.2 2.9.x17.11.4 2.10.x 17.11.4 -2.11.x 18.11.5 -2.12.x 18.11.5 +2.11.x 18.11.6 +2.12.x 18.11.6 +2.13.x 19.11.0 === Q: Are all the DPDK releases that OVS versions work with maintained? -- 2.7.4 ___ dev mailing list d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev
[ovs-dev] [PATCH 1/1] docs: Add flow control on i40e issue
There is an issue with flow control configuration on i40e devices and it has a work around. We add this to documentation as known issue until a permanent solution is developed. Signed-off-by: Tomasz Konieczny --- Documentation/intro/install/dpdk.rst | 6 ++ 1 file changed, 6 insertions(+) diff --git a/Documentation/intro/install/dpdk.rst b/Documentation/intro/install/dpdk.rst index dbf88ec..9bc29f4 100644 --- a/Documentation/intro/install/dpdk.rst +++ b/Documentation/intro/install/dpdk.rst @@ -687,6 +687,12 @@ Limitations around is temporary and is expected to be removed once a method is provided by DPDK to query the upper bound MTU value for a given device. +- Flow Control: When using i40e devices (Intel(R) 700 Series) it is recommended + to set Link State Change detection to interrupt mode. Otherwise it has been + observed that using the default polling mode, flow control changes may not be + applied, and flow control states will not be reflected correctly. + The issue is under investigation, this is a temporary work around. + Reporting Bugs -- -- 2.7.4 ___ dev mailing list d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev
[ovs-dev] [PATCH 1/1] docs: Add HWOL validated NIC
Signed-off-by: Tomasz Konieczny --- Documentation/howto/dpdk.rst | 19 +++ Documentation/intro/install/dpdk.rst | 4 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/Documentation/howto/dpdk.rst b/Documentation/howto/dpdk.rst index be950d7..e890323 100644 --- a/Documentation/howto/dpdk.rst +++ b/Documentation/howto/dpdk.rst @@ -377,10 +377,21 @@ drivers that support the configured rte_flow actions. Partial flow offload requires support of "MARK + RSS" actions. Full hardware offload requires support of the actions listed below. -The validated NICs are: - -- Mellanox (ConnectX-4, ConnectX-4 Lx, ConnectX-5) -- Napatech (NT200B01) +.. table:: Validated NICs + + +--+---+--+-+ + | Vendor | Model | Full offload | Partial offload | + +==+===+==+=+ + | Intel| 700 Series| no | yes | + +--+---+--+-+ + | Mellanox | ConnectX-4| | yes | + | +---+--+-+ + | | ConnectX-4 Lx | | yes | + | +---+--+-+ + | | ConnectX-5| | yes | + +--+---+--+-+ + | Napatech | NT200B01 | | yes | + +--+---+--+-+ Supported protocols for hardware offload matches are: diff --git a/Documentation/intro/install/dpdk.rst b/Documentation/intro/install/dpdk.rst index dbf88ec..db5910c 100644 --- a/Documentation/intro/install/dpdk.rst +++ b/Documentation/intro/install/dpdk.rst @@ -687,6 +687,10 @@ Limitations around is temporary and is expected to be removed once a method is provided by DPDK to query the upper bound MTU value for a given device. +- Flow Hardware Offload: i40e devices (Intel(R) 700 Series) do not support + L2: Ethernet and L4: ICMP for offload matches. Flow rule needs to specify + highest supported layer for traffic match. + Reporting Bugs -- -- 2.7.4 ___ dev mailing list d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev
[ovs-dev] [PATCH v2 1/1] docs: Add flow control on i40e issue
There is an issue with flow control configuration on i40e devices and it has a work around. We add this to documentation as known issue until a permanent solution is developed. Signed-off-by: Tomasz Konieczny --- Documentation/intro/install/dpdk.rst | 9 + Documentation/topics/dpdk/phy.rst| 2 ++ 2 files changed, 11 insertions(+) diff --git a/Documentation/intro/install/dpdk.rst b/Documentation/intro/install/dpdk.rst index dbf88ec..be47a11 100644 --- a/Documentation/intro/install/dpdk.rst +++ b/Documentation/intro/install/dpdk.rst @@ -687,6 +687,15 @@ Limitations around is temporary and is expected to be removed once a method is provided by DPDK to query the upper bound MTU value for a given device. +- Flow Control: When using i40e devices (Intel(R) 700 Series) it is recommended + to set Link State Change detection to interrupt mode. Otherwise it has been + observed that using the default polling mode, flow control changes may not be + applied, and flow control states will not be reflected correctly. + The issue is under investigation, this is a temporary work around. + + For information about setting Link State Change detection, refer to + :ref:`lsc-detection`. + Reporting Bugs -- diff --git a/Documentation/topics/dpdk/phy.rst b/Documentation/topics/dpdk/phy.rst index 38e52c8..55a98e2 100644 --- a/Documentation/topics/dpdk/phy.rst +++ b/Documentation/topics/dpdk/phy.rst @@ -385,6 +385,8 @@ Jumbo Frames DPDK physical ports can be configured to use Jumbo Frames. For more information, refer to :doc:`jumbo-frames`. +.. _lsc-detection: + Link State Change (LSC) detection configuration --- -- 2.7.4 ___ dev mailing list d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev
[ovs-dev] [PATCH v1] netdev-dpdk: Fix flow control configuration.
Currently OVS is unable to change flow control configuration in DPDK because new settings are being overwritten by current settings with rte_eth_dev_flow_ctrl_get(). The fix restores correct order of operations and at the same time does not trigger error on devices without flow control support when flow control not requested. Fixes: d95a8d2b0bd6 ("netdev-dpdk: Fix flow control configuration.") Signed-off-by: Tomasz Konieczny --- lib/netdev-dpdk.c | 10 ++ 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/lib/netdev-dpdk.c b/lib/netdev-dpdk.c index bc20d68..c02dea1 100644 --- a/lib/netdev-dpdk.c +++ b/lib/netdev-dpdk.c @@ -1856,17 +1856,19 @@ netdev_dpdk_set_config(struct netdev *netdev, const struct smap *args, rx_fc_en = smap_get_bool(args, "rx-flow-ctrl", false); tx_fc_en = smap_get_bool(args, "tx-flow-ctrl", false); autoneg = smap_get_bool(args, "flow-ctrl-autoneg", false); - fc_mode = fc_mode_set[tx_fc_en][rx_fc_en]; -if (dev->fc_conf.mode != fc_mode || autoneg != dev->fc_conf.autoneg) { -dev->fc_conf.mode = fc_mode; -dev->fc_conf.autoneg = autoneg; + +if (fc_mode != RTE_FC_NONE || autoneg != false) { /* Get the Flow control configuration for DPDK-ETH */ err = rte_eth_dev_flow_ctrl_get(dev->port_id, &dev->fc_conf); if (err) { VLOG_WARN("Cannot get flow control parameters on port " DPDK_PORT_ID_FMT", err=%d", dev->port_id, err); } +} +if (dev->fc_conf.mode != fc_mode || autoneg != dev->fc_conf.autoneg) { +dev->fc_conf.mode = fc_mode; +dev->fc_conf.autoneg = autoneg; dpdk_eth_flow_ctrl_setup(dev); } -- 2.7.4 ___ dev mailing list d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev
[ovs-dev] [PATCH v2] netdev-dpdk: Fix flow control not configuring.
Currently OVS is unable to change flow control configuration in DPDK because new settings are being overwritten by current settings with rte_eth_dev_flow_ctrl_get(). The fix restores correct order of operations and at the same time does not trigger error on devices without flow control support when flow control not requested. Fixes: 7e1de65e8dfb ("netdev-dpdk: Fix failure to configure flow control at netdev-init.") Signed-off-by: Tomasz Konieczny Co-authored-by: Ilya Maximets Signed-off-by: Ilya Maximets --- Version history: [PATCH v1] netdev-dpdk: Fix flow control configuration. --- lib/netdev-dpdk.c | 34 +++--- 1 file changed, 27 insertions(+), 7 deletions(-) diff --git a/lib/netdev-dpdk.c b/lib/netdev-dpdk.c index bc20d68..942bb86 100644 --- a/lib/netdev-dpdk.c +++ b/lib/netdev-dpdk.c @@ -1770,7 +1770,7 @@ netdev_dpdk_set_config(struct netdev *netdev, const struct smap *args, char **errp) { struct netdev_dpdk *dev = netdev_dpdk_cast(netdev); -bool rx_fc_en, tx_fc_en, autoneg, lsc_interrupt_mode; +bool rx_fc_en, tx_fc_en, autoneg, lsc_interrupt_mode, flow_control_requested; enum rte_eth_fc_mode fc_mode; static const enum rte_eth_fc_mode fc_mode_set[2][2] = { {RTE_FC_NONE, RTE_FC_TX_PAUSE}, @@ -1858,15 +1858,35 @@ netdev_dpdk_set_config(struct netdev *netdev, const struct smap *args, autoneg = smap_get_bool(args, "flow-ctrl-autoneg", false); fc_mode = fc_mode_set[tx_fc_en][rx_fc_en]; + +flow_control_requested = true; +if (!smap_get(args, "rx-flow-ctrl") && !smap_get(args, "tx-flow-ctrl") +&& !smap_get(args, "flow-ctrl-autoneg")) { +/* FIXME: User didn't ask for flow control configuration. + *For now we'll not print a warning if flow control is not + *supported by the DPDK port. */ +flow_control_requested = false; +} + +/* Get the Flow control configuration. */ +err = rte_eth_dev_flow_ctrl_get(dev->port_id, &dev->fc_conf); +if (err) { +if (err == -ENOTSUP) { +if (flow_control_requested) { +VLOG_WARN("%s: Flow control is not supported.", +netdev_get_name(netdev)); +} +err = 0; /* Not fatal. */ +} else { +VLOG_WARN("%s: Cannot get flow control parameters: %s", + netdev_get_name(netdev), rte_strerror(-err)); +} +goto out; +} + if (dev->fc_conf.mode != fc_mode || autoneg != dev->fc_conf.autoneg) { dev->fc_conf.mode = fc_mode; dev->fc_conf.autoneg = autoneg; -/* Get the Flow control configuration for DPDK-ETH */ -err = rte_eth_dev_flow_ctrl_get(dev->port_id, &dev->fc_conf); -if (err) { -VLOG_WARN("Cannot get flow control parameters on port " -DPDK_PORT_ID_FMT", err=%d", dev->port_id, err); -} dpdk_eth_flow_ctrl_setup(dev); } -- 2.7.4 ___ dev mailing list d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev
[ovs-dev] [PATCH v3] netdev-dpdk: Fix flow control not configuring.
Currently OVS is unable to change flow control configuration in DPDK because new settings are being overwritten by current settings with rte_eth_dev_flow_ctrl_get(). The fix restores correct order of operations and at the same time does not trigger error on devices without flow control support when flow control not requested. Fixes: 7e1de65e8dfb ("netdev-dpdk: Fix failure to configure flow control at netdev-init.") Signed-off-by: Tomasz Konieczny Co-authored-by: Ilya Maximets Signed-off-by: Ilya Maximets --- lib/netdev-dpdk.c | 32 ++-- 1 file changed, 26 insertions(+), 6 deletions(-) diff --git a/lib/netdev-dpdk.c b/lib/netdev-dpdk.c index bc20d68..62985c5 100644 --- a/lib/netdev-dpdk.c +++ b/lib/netdev-dpdk.c @@ -1771,6 +1771,7 @@ netdev_dpdk_set_config(struct netdev *netdev, const struct smap *args, { struct netdev_dpdk *dev = netdev_dpdk_cast(netdev); bool rx_fc_en, tx_fc_en, autoneg, lsc_interrupt_mode; +bool flow_control_requested = true; enum rte_eth_fc_mode fc_mode; static const enum rte_eth_fc_mode fc_mode_set[2][2] = { {RTE_FC_NONE, RTE_FC_TX_PAUSE}, @@ -1858,15 +1859,34 @@ netdev_dpdk_set_config(struct netdev *netdev, const struct smap *args, autoneg = smap_get_bool(args, "flow-ctrl-autoneg", false); fc_mode = fc_mode_set[tx_fc_en][rx_fc_en]; + +if (!smap_get(args, "rx-flow-ctrl") && !smap_get(args, "tx-flow-ctrl") +&& !smap_get(args, "flow-ctrl-autoneg")) { +/* FIXME: User didn't ask for flow control configuration. + *For now we'll not print a warning if flow control is not + *supported by the DPDK port. */ +flow_control_requested = false; +} + +/* Get the Flow control configuration. */ +err = rte_eth_dev_flow_ctrl_get(dev->port_id, &dev->fc_conf); +if (err) { +if (err == -ENOTSUP) { +if (flow_control_requested) { +VLOG_WARN("%s: Flow control is not supported.", +netdev_get_name(netdev)); +} +err = 0; /* Not fatal. */ +} else { +VLOG_WARN("%s: Cannot get flow control parameters: %s", + netdev_get_name(netdev), rte_strerror(-err)); +} +goto out; +} + if (dev->fc_conf.mode != fc_mode || autoneg != dev->fc_conf.autoneg) { dev->fc_conf.mode = fc_mode; dev->fc_conf.autoneg = autoneg; -/* Get the Flow control configuration for DPDK-ETH */ -err = rte_eth_dev_flow_ctrl_get(dev->port_id, &dev->fc_conf); -if (err) { -VLOG_WARN("Cannot get flow control parameters on port " -DPDK_PORT_ID_FMT", err=%d", dev->port_id, err); -} dpdk_eth_flow_ctrl_setup(dev); } -- 2.7.4 ___ dev mailing list d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev