bdev/virtio: use SPDK likely/unlikely macros

Replace the DPDK rte_branch_prediction.h likely/unlikely with
spdk/likely.h spdk_likely/spdk_unlikely.

Change-Id: I51ad42ee2b29b8f33436fa960deda67a0dd0b0f0
Signed-off-by: Daniel Verkamp <daniel.verkamp@intel.com>
Reviewed-on: https://review.gerrithub.io/382486
Tested-by: SPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: Dariusz Stojaczyk <dariuszx.stojaczyk@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Changpeng Liu <changpeng.liu@intel.com>
This commit is contained in:
Daniel Verkamp 2017-10-13 11:05:22 -07:00 committed by Jim Harris
parent aab8511796
commit f5c4413ca4
2 changed files with 10 additions and 9 deletions

View File

@ -40,7 +40,6 @@
#include <rte_cycles.h>
#include <rte_memory.h>
#include <rte_memzone.h>
#include <rte_branch_prediction.h>
#include <rte_prefetch.h>
#include "virtio_logs.h"
@ -100,7 +99,7 @@ virtqueue_dequeue_burst_rx(struct virtqueue *vq, struct virtio_req **rx_pkts,
len[i] = uep->len;
cookie = (struct virtio_req *)vq->vq_descx[desc_idx].cookie;
if (unlikely(cookie == NULL)) {
if (spdk_unlikely(cookie == NULL)) {
PMD_DRV_LOG(ERR, "vring descriptor with no mbuf cookie at %u",
vq->vq_used_cons_idx);
break;
@ -201,16 +200,16 @@ virtio_recv_pkts(struct virtqueue *vq, struct virtio_req **reqs, uint16_t nb_pkt
uint32_t i;
nb_rx = 0;
if (unlikely(vdev->started == 0))
if (spdk_unlikely(vdev->started == 0))
return nb_rx;
nb_used = VIRTQUEUE_NUSED(vq);
virtio_rmb();
num = (uint16_t)(likely(nb_used <= nb_pkts) ? nb_used : nb_pkts);
num = (uint16_t)(likely(num <= VIRTIO_MBUF_BURST_SZ) ? num : VIRTIO_MBUF_BURST_SZ);
if (likely(num > DESC_PER_CACHELINE))
num = (uint16_t)(spdk_likely(nb_used <= nb_pkts) ? nb_used : nb_pkts);
num = (uint16_t)(spdk_likely(num <= VIRTIO_MBUF_BURST_SZ) ? num : VIRTIO_MBUF_BURST_SZ);
if (spdk_likely(num > DESC_PER_CACHELINE))
num = num - ((vq->vq_used_cons_idx + num) % DESC_PER_CACHELINE);
num = virtqueue_dequeue_burst_rx(vq, rcv_pkts, len, num);
@ -234,7 +233,7 @@ virtio_xmit_pkts(struct virtqueue *vq, struct virtio_req *req)
{
struct virtio_dev *vdev = vq->vdev;
if (unlikely(vdev->started == 0))
if (spdk_unlikely(vdev->started == 0))
return 0;
virtio_rmb();
@ -243,7 +242,7 @@ virtio_xmit_pkts(struct virtqueue *vq, struct virtio_req *req)
vq_update_avail_idx(vq);
if (unlikely(virtqueue_kick_prepare(vq))) {
if (spdk_unlikely(virtqueue_kick_prepare(vq))) {
virtqueue_notify(vq);
PMD_TX_LOG(DEBUG, "Notified backend after xmit");
}

View File

@ -45,6 +45,8 @@
#include "virtio_dev.h"
#include "virtio_logs.h"
#include "spdk/likely.h"
/*
* Per virtio_config.h in Linux.
* For virtio_pci on SMP, we don't need to order with respect to MMIO
@ -156,7 +158,7 @@ vq_update_avail_ring(struct virtqueue *vq, uint16_t desc_idx)
* descriptor.
*/
avail_idx = (uint16_t)(vq->vq_avail_idx & (vq->vq_nentries - 1));
if (unlikely(vq->vq_ring.avail->ring[avail_idx] != desc_idx))
if (spdk_unlikely(vq->vq_ring.avail->ring[avail_idx] != desc_idx))
vq->vq_ring.avail->ring[avail_idx] = desc_idx;
vq->vq_avail_idx++;
}