From ae034edaa6c05149bde923237ba1bdb3c94e1e2b Mon Sep 17 00:00:00 2001 From: Jianfeng Tan Date: Wed, 14 Feb 2018 05:01:00 +0100 Subject: [PATCH] vhost: avoid function call in data path Previously, get_device() is a function call. It's OK for slow path configuration, but takes some cycles for data path. To avoid that, we turn this function to inline type. Signed-off-by: Jianfeng Tan Reviewed-by: Maxime Coquelin --- lib/librte_vhost/vhost.c | 13 ------------- lib/librte_vhost/vhost.h | 13 ++++++++++++- 2 files changed, 12 insertions(+), 14 deletions(-) diff --git a/lib/librte_vhost/vhost.c b/lib/librte_vhost/vhost.c index a407067e2e..f6f12a03b2 100644 --- a/lib/librte_vhost/vhost.c +++ b/lib/librte_vhost/vhost.c @@ -68,19 +68,6 @@ __vhost_iova_to_vva(struct virtio_net *dev, struct vhost_virtqueue *vq, return 0; } -struct virtio_net * -get_device(int vid) -{ - struct virtio_net *dev = vhost_devices[vid]; - - if (unlikely(!dev)) { - RTE_LOG(ERR, VHOST_CONFIG, - "(%d) device not found.\n", vid); - } - - return dev; -} - void cleanup_vq(struct vhost_virtqueue *vq, int destroy) { diff --git a/lib/librte_vhost/vhost.h b/lib/librte_vhost/vhost.h index ecd5b7b035..3fce13bd9c 100644 --- a/lib/librte_vhost/vhost.h +++ b/lib/librte_vhost/vhost.h @@ -343,7 +343,18 @@ gpa_to_hpa(struct virtio_net *dev, uint64_t gpa, uint64_t size) return 0; } -struct virtio_net *get_device(int vid); +static __rte_always_inline struct virtio_net * +get_device(int vid) +{ + struct virtio_net *dev = vhost_devices[vid]; + + if (unlikely(!dev)) { + RTE_LOG(ERR, VHOST_CONFIG, + "(%d) device not found.\n", vid); + } + + return dev; +} int vhost_new_device(void); void cleanup_device(struct virtio_net *dev, int destroy); -- 2.20.1