Hi Jan,
This is the diff between v4 and v5.
Regards,
Robert
diff --git a/Documentation/intro/install/dpdk.rst
b/Documentation/intro/install/dpdk.rst
index 14a6684..e3872e7 100644
--- a/Documentation/intro/install/dpdk.rst
+++ b/Documentation/intro/install/dpdk.rst
@@ -634,47 +634,34 @@ Link State Change (LSC) detection configuration
There are two methods to get the information when Link State Change (LSC)
happens on a network interface: by polling or interrupt.
-With polling method, a process is running in the background and repeatedly
-reads the link state with a short period. It continuously needs processor time
-and between 2 reading periods it can`t see the link state change, therefore
-the reaction time depends on the polling period. With higher rate, more
-processor time is needed. Another problem with the poll mode is that on some
-hardware a polling cycle takes too much time, which (in the end) leads to
-packet loss for certain systems.
+With the polling method, the main process checks the link state on a
+fixed interval. This fixed interval determines how fast a link change is
+detected. Another problem with the poll mode is that on some hardware a
+polling cycle takes too much time, which (in the end) leads to packet loss
+for certain systems.
If interrupts are used to get LSC information, the hardware itself triggers
-an interrupt when link state change happens, the thread wakes up from sleep,
-updates the information, and goes back to sleep mode. When no link state
-change happens (most of the time), the thread remains in sleep mode and
+an interrupt when link state change happens, the interrupt thread wakes up
+from sleep, updates the information, and goes back to sleep mode. When no link
+state change happens (most of the time), the thread remains in sleep mode and
doesn`t use processor time at all. The disadvantage of this method is that
-when interrupt happens, the processor has to handle it immediately, so it
+when an interrupt happens, the processor has to handle it immediately, so it
puts the currently running process to background, handles the interrupt, and
-takes the background process back. Another disadvantage is that some hardware
-can`t be configured to generate LSC interrupts.
+takes the background process back.
-The default configuration is polling mode. To set interrupt mode, option
-dpdk-lsc-interrupt has to be set to true.
-
-Global settings
-
-Command to set interrupt mode for all interfaces:
-ovs-vsctl set Open_vSwitch . other_config:dpdk-lsc-interrupt=true
+Note that not all PMD drivers support LSC interrupts.
-Command to set polling mode for all interfaces:
-ovs-vsctl set Open_vSwitch . other_config:dpdk-lsc-interrupt=false
-or:
-ovs-vsctl remove Open_vSwitch . other_config dpdk-lsc-interrupt
-
-Interface specific settings (override global settings)
+The default configuration is polling mode. To set interrupt mode, option
+``dpdk-lsc-interrupt`` has to be set to ``true``.
-Command to set interrupt mode for a specific interface:
-ovs-vsctl set interface <interface_name> options:dpdk-lsc-interrupt=true
+Command to set interrupt mode for a specific interface::
+ $ ovs-vsctl set interface <iface_name> options:dpdk-lsc-interrupt=true
-Command to set polling mode for a specific interface:
-ovs-vsctl set interface <interface_name> options:dpdk-lsc-interrupt=false
+Command to set polling mode for a specific interface::
+ $ ovs-vsctl set interface <iface_name> options:dpdk-lsc-interrupt=false
-Command to reset to globally defined mode for a specific interface:
-ovs-vsctl remove interface <interface_name> options dpdk-lsc-interrupt
+Command to remove ``dpdk-lsc-interrupt`` option::
+ $ ovs-vsctl remove interface <iface_name> options dpdk-lsc-interrupt
Limitations
------------
diff --git a/lib/netdev-dpdk.c b/lib/netdev-dpdk.c
index 73d0d4b..d092ef1 100644
--- a/lib/netdev-dpdk.c
+++ b/lib/netdev-dpdk.c
@@ -148,7 +148,7 @@ typedef uint16_t dpdk_port_t;
#define VHOST_ENQ_RETRY_NUM 8
#define IF_NAME_SZ (PATH_MAX > IFNAMSIZ ? PATH_MAX : IFNAMSIZ)
-static struct rte_eth_conf port_conf = {
+static const struct rte_eth_conf port_conf = {
.rxmode = {
.mq_mode = ETH_MQ_RX_RSS,
.split_hdr_size = 0,
@@ -167,10 +167,6 @@ static struct rte_eth_conf port_conf = {
.txmode = {
.mq_mode = ETH_MQ_TX_NONE,
},
- .intr_conf = {
- /* LSC interrupt mode disabled, polling mode used. */
- .lsc = 0,
- },
};
/*
@@ -469,18 +465,6 @@ int netdev_dpdk_get_vid(const struct netdev_dpdk *dev);
struct ingress_policer *
netdev_dpdk_get_ingress_policer(const struct netdev_dpdk *dev);
-void
-netdev_dpdk_set_default_lsc_detect_mode(bool enabled)
-{
- port_conf.intr_conf.lsc = enabled;
-}
-
-bool
-netdev_dpdk_get_def_lsc_int_mode_enabled(void)
-{
- return port_conf.intr_conf.lsc;
-}
-
static bool
is_dpdk_class(const struct netdev_class *class)
{
@@ -921,8 +905,7 @@ common_construct(struct netdev *netdev, dpdk_port_t port_no,
dev->flags = 0;
dev->requested_mtu = ETHER_MTU;
dev->max_packet_len = MTU_TO_FRAME_LEN(dev->mtu);
- dev->requested_lsc_interrupt_mode =
- netdev_dpdk_get_def_lsc_int_mode_enabled();
+ dev->requested_lsc_interrupt_mode = 0;
ovsrcu_index_init(&dev->vid, -1);
dev->vhost_reconfigured = false;
dev->attached = false;
@@ -1546,8 +1529,7 @@ netdev_dpdk_set_config(struct netdev *netdev, const
struct smap *args,
goto out;
}
- bool lsc_interrupt_mode = smap_get_bool(args, "dpdk-lsc-interrupt",
- netdev_dpdk_get_def_lsc_int_mode_enabled());
+ bool lsc_interrupt_mode = smap_get_bool(args, "dpdk-lsc-interrupt", false);
if (dev->requested_lsc_interrupt_mode != lsc_interrupt_mode) {
dev->requested_lsc_interrupt_mode = lsc_interrupt_mode;
netdev_request_reconfigure(netdev);
diff --git a/lib/netdev-dpdk.h b/lib/netdev-dpdk.h
index 8eb51bc..b7d02a7 100644
--- a/lib/netdev-dpdk.h
+++ b/lib/netdev-dpdk.h
@@ -27,8 +27,6 @@ struct dp_packet;
void netdev_dpdk_register(void);
void free_dpdk_buf(struct dp_packet *);
-void netdev_dpdk_set_def_lsc_int_mode_enabled(bool enabled);
-bool netdev_dpdk_get_def_lsc_int_mode_enabled(void);
#else
diff --git a/vswitchd/bridge.c b/vswitchd/bridge.c
index 87608a5..f44f950 100644
--- a/vswitchd/bridge.c
+++ b/vswitchd/bridge.c
@@ -68,9 +68,6 @@
#include "lib/vswitch-idl.h"
#include "xenserver.h"
#include "vlan-bitmap.h"
-#ifdef DPDK_NETDEV
-#include "./lib/netdev-provider.h"
-#endif
VLOG_DEFINE_THIS_MODULE(bridge);
@@ -604,11 +601,6 @@ bridge_reconfigure(const struct ovsrec_open_vswitch
*ovs_cfg)
ofproto_set_vlan_limit(smap_get_int(&ovs_cfg->other_config, "vlan-limit",
LEGACY_MAX_VLAN_HEADERS));
-#ifdef DPDK_NETDEV
- netdev_dpdk_set_def_lsc_int_mode_enabled(
- smap_get_bool(&ovs_cfg->other_config, "dpdk-lsc-interrupt", false));
-#endif
-
ofproto_set_threads(
smap_get_int(&ovs_cfg->other_config, "n-handler-threads", 0),
smap_get_int(&ovs_cfg->other_config, "n-revalidator-threads", 0));
diff --git a/vswitchd/vswitch.xml b/vswitchd/vswitch.xml
index 91a9003..3c9e637 100644
--- a/vswitchd/vswitch.xml
+++ b/vswitchd/vswitch.xml
@@ -320,29 +320,6 @@
</p>
</column>
- <column name="other_config" key="dpdk-lsc-interrupt"
- type='{"type": "boolean"}'>
- <p>
- Set this value to <code>true</code> to configure interrupt mode for
- Link State Change (LSC) detection instead of poll mode for DPDK
- interfaces.
- </p>
- <p>
- The default value is <code>false</code>.
- </p>
- <p>
- If this value is <code>false</code> at startup, poll mode is used for
- all netdev dpdk interfaces.
- </p>
- <p>
- This value can be overridden for a specific interface in the options
- section of that interface.
- </p>
- <p>
- This parameter has an effect only on netdev dpdk interfaces.
- </p>
- </column>
-
<column name="other_config" key="dpdk-extra"
type='{"type": "string"}'>
<p>
@@ -3663,12 +3640,7 @@ ovs-vsctl add-port br0 p0 -- set Interface p0 type=patch
options:peer=p1 \
interface.
</p>
<p>
- If this value is not set, the value is taken from the global
- settings.
- </p>
- <p>
- If this value is set, the global LSC interrupt settings are
- overridden.
+ If this value is not set, poll mode is configured.
</p>
<p>
This parameter has an effect only on netdev dpdk interfaces.
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev