| 62 | } |
| 63 | |
| 64 | static const struct rte_memzone * |
| 65 | queue_dma_zone_reserve(const char *queue_name, uint32_t queue_size, |
| 66 | int socket_id, unsigned int align) |
| 67 | { |
| 68 | const struct rte_memzone *mz; |
| 69 | |
| 70 | mz = rte_memzone_lookup(queue_name); |
| 71 | if (mz != NULL) { |
| 72 | if (((size_t)queue_size <= mz->len) && |
| 73 | (socket_id == SOCKET_ID_ANY || |
| 74 | socket_id == mz->socket_id)) { |
| 75 | BCMFS_LOG(DEBUG, "re-use memzone already " |
| 76 | "allocated for %s", queue_name); |
| 77 | return mz; |
| 78 | } |
| 79 | |
| 80 | BCMFS_LOG(ERR, "Incompatible memzone already " |
| 81 | "allocated %s, size %u, socket %d. " |
| 82 | "Requested size %u, socket %u", |
| 83 | queue_name, (uint32_t)mz->len, |
| 84 | mz->socket_id, queue_size, socket_id); |
| 85 | return NULL; |
| 86 | } |
| 87 | |
| 88 | BCMFS_LOG(DEBUG, "Allocate memzone for %s, size %u on socket %u", |
| 89 | queue_name, queue_size, socket_id); |
| 90 | return rte_memzone_reserve_aligned(queue_name, queue_size, |
| 91 | socket_id, RTE_MEMZONE_IOVA_CONTIG, align); |
| 92 | } |
| 93 | |
| 94 | static int |
| 95 | bcmfs_queue_create(struct bcmfs_queue *queue, |
no test coverage detected