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); }
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; }
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)); }