Commit 8557b1c2 authored by Pawel Wodkowski's avatar Pawel Wodkowski Committed by Ben Walker
Browse files

env: add single-producer, single-consumer ring type



This case will be used in incoming vhost patches.

Change-Id: I62d569c01e9b8bf25c9293dff827d1b4406cea04
Signed-off-by: default avatarPawel Wodkowski <pawelx.wodkowski@intel.com>
Reviewed-on: https://review.gerrithub.io/362334


Reviewed-by: default avatarTomasz Zawadzki <tomasz.zawadzki@intel.com>
Tested-by: default avatarSPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: default avatarDaniel Verkamp <daniel.verkamp@intel.com>
Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
Reviewed-by: default avatarBen Walker <benjamin.walker@intel.com>
parent fadfd849
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -230,6 +230,7 @@ void spdk_delay_us(unsigned int us);
struct spdk_ring;

enum spdk_ring_type {
	SPDK_RING_TYPE_SP_SC,		/* Single-producer, single-consumer */
	SPDK_RING_TYPE_MP_SC,		/* Multi-producer, single-consumer */
};

+11 −3
Original line number Diff line number Diff line
@@ -264,15 +264,23 @@ spdk_ring_create(enum spdk_ring_type type, size_t count, size_t ele_size, int so
{
	char ring_name[64];
	static uint32_t ring_num = 0;

	if (type != SPDK_RING_TYPE_MP_SC) {
	unsigned flags = 0;

	switch (type) {
	case SPDK_RING_TYPE_SP_SC:
		flags = RING_F_SP_ENQ | RING_F_SC_DEQ;
		break;
	case SPDK_RING_TYPE_MP_SC:
		flags = RING_F_SC_DEQ;
		break;
	default:
		return NULL;
	}

	snprintf(ring_name, sizeof(ring_name), "spdk_ring_%u",
		 __sync_fetch_and_add(&ring_num, 1));

	return (struct spdk_ring *)rte_ring_create(ring_name, count, socket_id, RING_F_SC_DEQ);
	return (struct spdk_ring *)rte_ring_create(ring_name, count, socket_id, flags);
}

void