X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=lib%2Flibrte_bbdev%2Frte_bbdev.c;h=f6fe05acafdb718802349c406f93b0a7d1c9fd7b;hb=b8c0372bc5ac46ca4b935c945532827ee49946dd;hp=db1c00a1f9a16a3be244826e9898d13303198f14;hpb=77b7b81e32e94e79d2a65b259769ae11725be8bf;p=dpdk.git diff --git a/lib/librte_bbdev/rte_bbdev.c b/lib/librte_bbdev/rte_bbdev.c index db1c00a1f9..f6fe05acaf 100644 --- a/lib/librte_bbdev/rte_bbdev.c +++ b/lib/librte_bbdev/rte_bbdev.c @@ -28,6 +28,17 @@ #define DEV_NAME "BBDEV" +/* BBDev library logging ID */ +static int bbdev_logtype; + +/* Helper macro for logging */ +#define rte_bbdev_log(level, fmt, ...) \ + rte_log(RTE_LOG_ ## level, bbdev_logtype, fmt "\n", ##__VA_ARGS__) + +#define rte_bbdev_log_debug(fmt, ...) \ + rte_bbdev_log(DEBUG, RTE_STR(__LINE__) ":%s() " fmt, __func__, \ + ##__VA_ARGS__) + /* Helper macro to check dev_id is valid */ #define VALID_DEV_OR_RET_ERR(dev, dev_id) do { \ if (dev == NULL) { \ @@ -161,7 +172,7 @@ find_free_dev_id(void) return RTE_BBDEV_MAX_DEVS; } -struct rte_bbdev * __rte_experimental +struct rte_bbdev * rte_bbdev_allocate(const char *name) { int ret; @@ -220,7 +231,7 @@ rte_bbdev_allocate(const char *name) return bbdev; } -int __rte_experimental +int rte_bbdev_release(struct rte_bbdev *bbdev) { uint16_t dev_id; @@ -254,7 +265,7 @@ rte_bbdev_release(struct rte_bbdev *bbdev) return 0; } -struct rte_bbdev * __rte_experimental +struct rte_bbdev * rte_bbdev_get_named_dev(const char *name) { unsigned int i; @@ -274,13 +285,13 @@ rte_bbdev_get_named_dev(const char *name) return NULL; } -uint16_t __rte_experimental +uint16_t rte_bbdev_count(void) { return num_devs; } -bool __rte_experimental +bool rte_bbdev_is_valid(uint16_t dev_id) { if ((dev_id < RTE_BBDEV_MAX_DEVS) && @@ -289,7 +300,7 @@ rte_bbdev_is_valid(uint16_t dev_id) return false; } -uint16_t __rte_experimental +uint16_t rte_bbdev_find_next(uint16_t dev_id) { dev_id++; @@ -299,7 +310,7 @@ rte_bbdev_find_next(uint16_t dev_id) return dev_id; } -int __rte_experimental +int rte_bbdev_setup_queues(uint16_t dev_id, uint16_t num_queues, int socket_id) { unsigned int i; @@ -389,7 +400,7 @@ error: return ret; } -int __rte_experimental +int rte_bbdev_intr_enable(uint16_t dev_id) { int ret; @@ -421,7 +432,7 @@ rte_bbdev_intr_enable(uint16_t dev_id) return -ENOTSUP; } -int __rte_experimental +int rte_bbdev_queue_configure(uint16_t dev_id, uint16_t queue_id, const struct rte_bbdev_queue_conf *conf) { @@ -484,11 +495,20 @@ rte_bbdev_queue_configure(uint16_t dev_id, uint16_t queue_id, conf->queue_size, queue_id, dev_id); return -EINVAL; } - if (conf->priority > dev_info.max_queue_priority) { + if (conf->op_type == RTE_BBDEV_OP_TURBO_DEC && + conf->priority > dev_info.max_ul_queue_priority) { + rte_bbdev_log(ERR, + "Priority (%u) of queue %u of bbdev %u must be <= %u", + conf->priority, queue_id, dev_id, + dev_info.max_ul_queue_priority); + return -EINVAL; + } + if (conf->op_type == RTE_BBDEV_OP_TURBO_ENC && + conf->priority > dev_info.max_dl_queue_priority) { rte_bbdev_log(ERR, - "Priority (%u) of queue %u of bdev %u must be <= %u", + "Priority (%u) of queue %u of bbdev %u must be <= %u", conf->priority, queue_id, dev_id, - dev_info.max_queue_priority); + dev_info.max_dl_queue_priority); return -EINVAL; } } @@ -530,7 +550,7 @@ rte_bbdev_queue_configure(uint16_t dev_id, uint16_t queue_id, return 0; } -int __rte_experimental +int rte_bbdev_start(uint16_t dev_id) { int i; @@ -562,7 +582,7 @@ rte_bbdev_start(uint16_t dev_id) return 0; } -int __rte_experimental +int rte_bbdev_stop(uint16_t dev_id) { struct rte_bbdev *dev = get_dev(dev_id); @@ -583,7 +603,7 @@ rte_bbdev_stop(uint16_t dev_id) return 0; } -int __rte_experimental +int rte_bbdev_close(uint16_t dev_id) { int ret; @@ -628,7 +648,7 @@ rte_bbdev_close(uint16_t dev_id) return 0; } -int __rte_experimental +int rte_bbdev_queue_start(uint16_t dev_id, uint16_t queue_id) { struct rte_bbdev *dev = get_dev(dev_id); @@ -658,7 +678,7 @@ rte_bbdev_queue_start(uint16_t dev_id, uint16_t queue_id) return 0; } -int __rte_experimental +int rte_bbdev_queue_stop(uint16_t dev_id, uint16_t queue_id) { struct rte_bbdev *dev = get_dev(dev_id); @@ -718,7 +738,7 @@ reset_stats_in_queues(struct rte_bbdev *dev) rte_bbdev_log_debug("Reset stats on %u", dev->data->dev_id); } -int __rte_experimental +int rte_bbdev_stats_get(uint16_t dev_id, struct rte_bbdev_stats *stats) { struct rte_bbdev *dev = get_dev(dev_id); @@ -741,7 +761,7 @@ rte_bbdev_stats_get(uint16_t dev_id, struct rte_bbdev_stats *stats) return 0; } -int __rte_experimental +int rte_bbdev_stats_reset(uint16_t dev_id) { struct rte_bbdev *dev = get_dev(dev_id); @@ -758,7 +778,7 @@ rte_bbdev_stats_reset(uint16_t dev_id) return 0; } -int __rte_experimental +int rte_bbdev_info_get(uint16_t dev_id, struct rte_bbdev_info *dev_info) { struct rte_bbdev *dev = get_dev(dev_id); @@ -775,7 +795,7 @@ rte_bbdev_info_get(uint16_t dev_id, struct rte_bbdev_info *dev_info) memset(dev_info, 0, sizeof(*dev_info)); dev_info->dev_name = dev->data->name; dev_info->num_queues = dev->data->num_queues; - dev_info->bus = rte_bus_find_by_device(dev->device); + dev_info->device = dev->device; dev_info->socket_id = dev->data->socket_id; dev_info->started = dev->data->started; @@ -786,7 +806,7 @@ rte_bbdev_info_get(uint16_t dev_id, struct rte_bbdev_info *dev_info) return 0; } -int __rte_experimental +int rte_bbdev_queue_info_get(uint16_t dev_id, uint16_t queue_id, struct rte_bbdev_queue_info *queue_info) { @@ -826,6 +846,12 @@ get_bbdev_op_size(enum rte_bbdev_op_type type) case RTE_BBDEV_OP_TURBO_ENC: result = sizeof(struct rte_bbdev_enc_op); break; + case RTE_BBDEV_OP_LDPC_DEC: + result = sizeof(struct rte_bbdev_dec_op); + break; + case RTE_BBDEV_OP_LDPC_ENC: + result = sizeof(struct rte_bbdev_enc_op); + break; default: break; } @@ -840,18 +866,19 @@ bbdev_op_init(struct rte_mempool *mempool, void *arg, void *element, { enum rte_bbdev_op_type type = *(enum rte_bbdev_op_type *)arg; - if (type == RTE_BBDEV_OP_TURBO_DEC) { + if (type == RTE_BBDEV_OP_TURBO_DEC || type == RTE_BBDEV_OP_LDPC_DEC) { struct rte_bbdev_dec_op *op = element; memset(op, 0, mempool->elt_size); op->mempool = mempool; - } else if (type == RTE_BBDEV_OP_TURBO_ENC) { + } else if (type == RTE_BBDEV_OP_TURBO_ENC || + type == RTE_BBDEV_OP_LDPC_ENC) { struct rte_bbdev_enc_op *op = element; memset(op, 0, mempool->elt_size); op->mempool = mempool; } } -struct rte_mempool * __rte_experimental +struct rte_mempool * rte_bbdev_op_pool_create(const char *name, enum rte_bbdev_op_type type, unsigned int num_elements, unsigned int cache_size, int socket_id) @@ -898,7 +925,7 @@ rte_bbdev_op_pool_create(const char *name, enum rte_bbdev_op_type type, return mp; } -int __rte_experimental +int rte_bbdev_callback_register(uint16_t dev_id, enum rte_bbdev_event_type event, rte_bbdev_cb_fn cb_fn, void *cb_arg) { @@ -943,7 +970,7 @@ rte_bbdev_callback_register(uint16_t dev_id, enum rte_bbdev_event_type event, return (user_cb == NULL) ? -ENOMEM : 0; } -int __rte_experimental +int rte_bbdev_callback_unregister(uint16_t dev_id, enum rte_bbdev_event_type event, rte_bbdev_cb_fn cb_fn, void *cb_arg) { @@ -988,7 +1015,7 @@ rte_bbdev_callback_unregister(uint16_t dev_id, enum rte_bbdev_event_type event, return ret; } -void __rte_experimental +void rte_bbdev_pmd_callback_process(struct rte_bbdev *dev, enum rte_bbdev_event_type event, void *ret_param) { @@ -1030,7 +1057,7 @@ rte_bbdev_pmd_callback_process(struct rte_bbdev *dev, rte_spinlock_unlock(&rte_bbdev_cb_lock); } -int __rte_experimental +int rte_bbdev_queue_intr_enable(uint16_t dev_id, uint16_t queue_id) { struct rte_bbdev *dev = get_dev(dev_id); @@ -1041,7 +1068,7 @@ rte_bbdev_queue_intr_enable(uint16_t dev_id, uint16_t queue_id) return dev->dev_ops->queue_intr_enable(dev, queue_id); } -int __rte_experimental +int rte_bbdev_queue_intr_disable(uint16_t dev_id, uint16_t queue_id) { struct rte_bbdev *dev = get_dev(dev_id); @@ -1052,7 +1079,7 @@ rte_bbdev_queue_intr_disable(uint16_t dev_id, uint16_t queue_id) return dev->dev_ops->queue_intr_disable(dev, queue_id); } -int __rte_experimental +int rte_bbdev_queue_intr_ctl(uint16_t dev_id, uint16_t queue_id, int epfd, int op, void *data) { @@ -1089,13 +1116,15 @@ rte_bbdev_queue_intr_ctl(uint16_t dev_id, uint16_t queue_id, int epfd, int op, } -const char * __rte_experimental +const char * rte_bbdev_op_type_str(enum rte_bbdev_op_type op_type) { static const char * const op_types[] = { "RTE_BBDEV_OP_NONE", "RTE_BBDEV_OP_TURBO_DEC", "RTE_BBDEV_OP_TURBO_ENC", + "RTE_BBDEV_OP_LDPC_DEC", + "RTE_BBDEV_OP_LDPC_ENC", }; if (op_type < RTE_BBDEV_OP_TYPE_COUNT) @@ -1105,12 +1134,7 @@ rte_bbdev_op_type_str(enum rte_bbdev_op_type op_type) return NULL; } - -int bbdev_logtype; - -RTE_INIT(rte_bbdev_init_log); -static void -rte_bbdev_init_log(void) +RTE_INIT(rte_bbdev_init_log) { bbdev_logtype = rte_log_register("lib.bbdev"); if (bbdev_logtype >= 0)