summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorDaniele Di Proietto <diproiettod@vmware.com>2016-06-06 17:05:49 -0700
committerDaniele Di Proietto <diproiettod@vmware.com>2016-06-24 14:15:04 -0700
commitd537e73a42ac87a7d0a893b4020a36c09bd31121 (patch)
treef64b5c0858726eabcf457852918df8458d736036 /lib
parent256c6d1c213a56ec6db8d5a5f1b8eb3e0035e846 (diff)
downloadopenvswitch-d537e73a42ac87a7d0a893b4020a36c09bd31121.tar.gz
netdev-dummy: Allow configuring the numa_id for testing purposes.
This commit introduces an (undocumented) option for dummy Interfaces to specify a dummy numa_id, to which the device belongs. It will be used to test the pmd threads in dpif-netdev. Signed-off-by: Daniele Di Proietto <diproiettod@vmware.com> Acked-by: Ben Pfaff <blp@ovn.org>
Diffstat (limited to 'lib')
-rw-r--r--lib/netdev-dummy.c25
1 files changed, 19 insertions, 6 deletions
diff --git a/lib/netdev-dummy.c b/lib/netdev-dummy.c
index 127b6ae01..24c107e26 100644
--- a/lib/netdev-dummy.c
+++ b/lib/netdev-dummy.c
@@ -111,6 +111,7 @@ struct netdev_dummy {
struct netdev_stats stats OVS_GUARDED;
enum netdev_flags flags OVS_GUARDED;
int ifindex OVS_GUARDED;
+ int numa_id OVS_GUARDED;
struct dummy_packet_conn conn OVS_GUARDED;
@@ -123,8 +124,9 @@ struct netdev_dummy {
/* The following properties are for dummy-pmd and they cannot be changed
* when a device is running, so we remember the request and update them
* next time netdev_dummy_reconfigure() is called. */
- int requested_n_txq;
- int requested_n_rxq;
+ int requested_n_txq OVS_GUARDED;
+ int requested_n_rxq OVS_GUARDED;
+ int requested_numa_id OVS_GUARDED;
};
/* Max 'recv_queue_len' in struct netdev_dummy. */
@@ -671,6 +673,7 @@ netdev_dummy_construct(struct netdev *netdev_)
netdev->ifindex = -EOPNOTSUPP;
netdev->requested_n_rxq = netdev_->n_rxq;
netdev->requested_n_txq = netdev_->n_txq;
+ netdev->numa_id = 0;
dummy_packet_conn_init(&netdev->conn);
@@ -818,7 +821,7 @@ netdev_dummy_set_config(struct netdev *netdev_, const struct smap *args)
{
struct netdev_dummy *netdev = netdev_dummy_cast(netdev_);
const char *pcap;
- int new_n_rxq;
+ int new_n_rxq, new_numa_id;
ovs_mutex_lock(&netdev->mutex);
netdev->ifindex = smap_get_int(args, "ifindex", -EOPNOTSUPP);
@@ -855,8 +858,11 @@ netdev_dummy_set_config(struct netdev *netdev_, const struct smap *args)
}
new_n_rxq = MAX(smap_get_int(args, "n_rxq", netdev->requested_n_rxq), 1);
- if (new_n_rxq != netdev->requested_n_rxq) {
+ new_numa_id = smap_get_int(args, "numa_id", 0);
+ if (new_n_rxq != netdev->requested_n_rxq
+ || new_numa_id != netdev->requested_numa_id) {
netdev->requested_n_rxq = new_n_rxq;
+ netdev->requested_numa_id = new_numa_id;
netdev_request_reconfigure(netdev_);
}
@@ -866,9 +872,15 @@ exit:
}
static int
-netdev_dummy_get_numa_id(const struct netdev *netdev_ OVS_UNUSED)
+netdev_dummy_get_numa_id(const struct netdev *netdev_)
{
- return 0;
+ struct netdev_dummy *netdev = netdev_dummy_cast(netdev_);
+
+ ovs_mutex_lock(&netdev->mutex);
+ int numa_id = netdev->numa_id;
+ ovs_mutex_unlock(&netdev->mutex);
+
+ return numa_id;
}
/* Requests the number of tx queues for the dummy PMD interface. */
@@ -901,6 +913,7 @@ netdev_dummy_reconfigure(struct netdev *netdev_)
netdev_->n_txq = netdev->requested_n_txq;
netdev_->n_rxq = netdev->requested_n_rxq;
+ netdev->numa_id = netdev->requested_numa_id;
ovs_mutex_unlock(&netdev->mutex);
return 0;