#include <inttypes.h>
#include <string.h>
+#include <rte_string_fns.h>
#include <rte_log.h>
#include <rte_mbuf.h>
#include <rte_eal_memconfig.h>
#include <rte_errno.h>
#include <rte_malloc.h>
+#include <rte_tailq.h>
#include "rte_reorder.h"
}
memset(b, 0, bufsize);
- snprintf(b->name, sizeof(b->name), "%s", name);
+ strlcpy(b->name, name, sizeof(b->name));
b->memsize = bufsize;
b->order_buf.size = b->ready_buf.size = size;
b->order_buf.mask = b->ready_buf.mask = size - 1;
return NULL;
}
- rte_rwlock_write_lock(RTE_EAL_TAILQ_RWLOCK);
+ rte_mcfg_tailq_write_lock();
/* guarantee there's no existing */
TAILQ_FOREACH(te, reorder_list, next) {
}
exit:
- rte_rwlock_write_unlock(RTE_EAL_TAILQ_RWLOCK);
+ rte_mcfg_tailq_write_unlock();
return b;
}
char name[RTE_REORDER_NAMESIZE];
rte_reorder_free_mbufs(b);
- snprintf(name, sizeof(name), "%s", b->name);
+ strlcpy(name, b->name, sizeof(name));
/* No error checking as current values should be valid */
rte_reorder_init(b, b->memsize, name, b->order_buf.size);
}
reorder_list = RTE_TAILQ_CAST(rte_reorder_tailq.head, rte_reorder_list);
- rte_rwlock_write_lock(RTE_EAL_TAILQ_RWLOCK);
+ rte_mcfg_tailq_write_lock();
/* find our tailq entry */
TAILQ_FOREACH(te, reorder_list, next) {
break;
}
if (te == NULL) {
- rte_rwlock_write_unlock(RTE_EAL_TAILQ_RWLOCK);
+ rte_mcfg_tailq_write_unlock();
return;
}
TAILQ_REMOVE(reorder_list, te, next);
- rte_rwlock_write_unlock(RTE_EAL_TAILQ_RWLOCK);
+ rte_mcfg_tailq_write_unlock();
rte_reorder_free_mbufs(b);
struct rte_tailq_entry *te;
struct rte_reorder_list *reorder_list;
+ if (name == NULL) {
+ rte_errno = EINVAL;
+ return NULL;
+ }
+
reorder_list = RTE_TAILQ_CAST(rte_reorder_tailq.head, rte_reorder_list);
- rte_rwlock_read_lock(RTE_EAL_TAILQ_RWLOCK);
+ rte_mcfg_tailq_read_lock();
TAILQ_FOREACH(te, reorder_list, next) {
b = (struct rte_reorder_buffer *) te->data;
if (strncmp(name, b->name, RTE_REORDER_NAMESIZE) == 0)
break;
}
- rte_rwlock_read_unlock(RTE_EAL_TAILQ_RWLOCK);
+ rte_mcfg_tailq_read_unlock();
if (te == NULL) {
rte_errno = ENOENT;
rte_reorder_insert(struct rte_reorder_buffer *b, struct rte_mbuf *mbuf)
{
uint32_t offset, position;
- struct cir_buffer *order_buf = &b->order_buf;
+ struct cir_buffer *order_buf;
+
+ if (b == NULL || mbuf == NULL) {
+ rte_errno = EINVAL;
+ return -1;
+ }
+ order_buf = &b->order_buf;
if (!b->is_initialized) {
b->min_seqn = mbuf->seqn;
b->is_initialized = 1;