diff options
author | Daniele Di Proietto <diproiettod@vmware.com> | 2016-06-06 17:05:49 -0700 |
---|---|---|
committer | Daniele Di Proietto <diproiettod@vmware.com> | 2016-06-24 14:15:04 -0700 |
commit | d537e73a42ac87a7d0a893b4020a36c09bd31121 (patch) | |
tree | f64b5c0858726eabcf457852918df8458d736036 /lib | |
parent | 256c6d1c213a56ec6db8d5a5f1b8eb3e0035e846 (diff) | |
download | openvswitch-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.c | 25 |
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; |