Commit f5c4413c authored by Daniel Verkamp's avatar Daniel Verkamp Committed by Jim Harris
Browse files

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: default avatarDaniel Verkamp <daniel.verkamp@intel.com>
Reviewed-on: https://review.gerrithub.io/382486


Tested-by: default avatarSPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: default avatarDariusz Stojaczyk <dariuszx.stojaczyk@intel.com>
Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
Reviewed-by: default avatarChangpeng Liu <changpeng.liu@intel.com>
parent aab85117
Loading
Loading
Loading
Loading
+7 −8
Original line number Diff line number Diff line
@@ -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");
	}
+3 −1
Original line number Diff line number Diff line
@@ -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++;
}