Пример #1
0
static void init_pktio_entry(pktio_entry_t *entry)
{
	set_taken(entry);

	/* Currently classifier is enabled by default. It should be enabled
	   only when used. */
	entry->s.cls_enabled = 1;
	entry->s.inq_default = ODP_QUEUE_INVALID;

	pktio_classifier_init(entry);
}
Пример #2
0
static odp_pktio_t alloc_lock_pktio_entry(odp_pktio_params_t *params)
{
	odp_pktio_t id;
	pktio_entry_t *entry;
	int i;
	(void)params;
	for (i = 0; i < ODP_CONFIG_PKTIO_ENTRIES; ++i) {
		entry = &pktio_tbl->entries[i];
		if (is_free(entry)) {
			lock_entry(entry);
			if (is_free(entry)) {
				set_taken(entry);
				entry->s.inq_default = ODP_QUEUE_INVALID;
				entry->s.outq_default = ODP_QUEUE_INVALID;
				id = i + 1;
				return id; /* return with entry locked! */
			}
			unlock_entry(entry);
		}
	}

	return ODP_PKTIO_INVALID;
}
Пример #3
0
static void init_pktio_entry(pktio_entry_t *entry, odp_pktio_params_t *params)
{
	set_taken(entry);
	entry->s.inq_default = ODP_QUEUE_INVALID;
	switch (params->type) {
	case ODP_PKTIO_TYPE_SOCKET_BASIC:
	case ODP_PKTIO_TYPE_SOCKET_MMSG:
	case ODP_PKTIO_TYPE_SOCKET_MMAP:
		memset(&entry->s.pkt_sock, 0, sizeof(entry->s.pkt_sock));
		memset(&entry->s.pkt_sock_mmap, 0,
		      sizeof(entry->s.pkt_sock_mmap));
		break;
#ifdef ODP_HAVE_NETMAP
	case ODP_PKTIO_TYPE_NETMAP:
		memset(&entry->s.pkt_nm, 0, sizeof(entry->s.pkt_nm));
		break;
#endif
	default:
		ODP_ERR("Packet I/O type not supported. Please recompile\n");
		break;
	}
	/* Save pktio parameters, type is the most useful */
	memcpy(&entry->s.params, params, sizeof(*params));
}