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;
/* 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. */
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);
{
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);
}
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_);
}
}
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. */
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;