mirror of
https://github.com/openvswitch/ovs
synced 2025-08-31 06:15:47 +00:00
dpif-netdev: Reload each thread only once in do_add_port.
While adding of pmd interface with multiple queues several queues may be assigned to one thread and this thread will be reloaded one time for each added queue. Signed-off-by: Ilya Maximets <i.maximets@samsung.com> Acked-by: Flavio Leitner <fbl@sysclose.org> Signed-off-by: Daniele Di Proietto <diproiettod@vmware.com>
This commit is contained in:
committed by
Daniele Di Proietto
parent
ce179f1163
commit
762d146ab7
@@ -43,6 +43,7 @@
|
||||
#include "flow.h"
|
||||
#include "cmap.h"
|
||||
#include "coverage.h"
|
||||
#include "hmapx.h"
|
||||
#include "latch.h"
|
||||
#include "list.h"
|
||||
#include "match.h"
|
||||
@@ -1177,7 +1178,10 @@ do_add_port(struct dp_netdev *dp, const char *devname, const char *type,
|
||||
if (netdev_is_pmd(netdev)) {
|
||||
int numa_id = netdev_get_numa_id(netdev);
|
||||
struct dp_netdev_pmd_thread *pmd;
|
||||
struct hmapx to_reload;
|
||||
struct hmapx_node *node;
|
||||
|
||||
hmapx_init(&to_reload);
|
||||
/* Cannot create pmd threads for invalid numa node. */
|
||||
ovs_assert(ovs_numa_numa_id_is_valid(numa_id));
|
||||
|
||||
@@ -1193,8 +1197,14 @@ do_add_port(struct dp_netdev *dp, const char *devname, const char *type,
|
||||
ovs_mutex_lock(&pmd->poll_mutex);
|
||||
dp_netdev_add_rxq_to_pmd(pmd, port, port->rxq[i]);
|
||||
ovs_mutex_unlock(&pmd->poll_mutex);
|
||||
|
||||
hmapx_add(&to_reload, pmd);
|
||||
}
|
||||
HMAPX_FOR_EACH (node, &to_reload) {
|
||||
pmd = (struct dp_netdev_pmd_thread *) node->data;
|
||||
dp_netdev_reload_pmd__(pmd);
|
||||
}
|
||||
hmapx_destroy(&to_reload);
|
||||
}
|
||||
seq_change(dp->port_seq);
|
||||
|
||||
|
Reference in New Issue
Block a user