1 /* SPDX-License-Identifier: BSD-3-Clause 2 * Copyright(c) 2017-2018 Intel Corporation 3 */ 4 5 #ifndef _RTE_COMPRESSDEV_INTERNAL_H_ 6 #define _RTE_COMPRESSDEV_INTERNAL_H_ 7 8 #ifdef __cplusplus 9 extern "C" { 10 #endif 11 12 /* rte_compressdev_internal.h 13 * This file holds Compressdev private data structures. 14 */ 15 #include <rte_log.h> 16 17 #include "rte_comp.h" 18 19 #define RTE_COMPRESSDEV_NAME_MAX_LEN (64) 20 /**< Max length of name of comp PMD */ 21 22 /* Logging Macros */ 23 extern int compressdev_logtype; 24 #define COMPRESSDEV_LOG(level, fmt, args...) \ 25 rte_log(RTE_LOG_ ## level, compressdev_logtype, "%s(): " fmt "\n", \ 26 __func__, ##args) 27 28 /** 29 * Dequeue processed packets from queue pair of a device. 30 * 31 * @param qp 32 * The queue pair from which to retrieve 33 * processed operations. 34 * @param ops 35 * The address of an array of pointers to 36 * *rte_comp_op* structures that must be 37 * large enough to store *nb_ops* pointers in it 38 * @param nb_ops 39 * The maximum number of operations to dequeue 40 * @return 41 * - The number of operations actually dequeued, which is the number 42 * of pointers to *rte_comp_op* structures effectively supplied to the 43 * *ops* array. 44 */ 45 typedef uint16_t (*compressdev_dequeue_pkt_burst_t)(void *qp, 46 struct rte_comp_op **ops, uint16_t nb_ops); 47 48 /** 49 * Enqueue a burst of operations for processing. 50 * 51 * @param qp 52 * The queue pair on which operations 53 * are to be enqueued for processing 54 * @param ops 55 * The address of an array of *nb_ops* pointers 56 * to *rte_comp_op* structures which contain 57 * the operations to be processed 58 * @param nb_ops 59 * The number of operations to process 60 * @return 61 * The number of operations actually enqueued on the device. The return 62 * value can be less than the value of the *nb_ops* parameter when the 63 * comp devices queue is full or if invalid parameters are specified in 64 * a *rte_comp_op*. 65 */ 66 67 typedef uint16_t (*compressdev_enqueue_pkt_burst_t)(void *qp, 68 struct rte_comp_op **ops, uint16_t nb_ops); 69 70 /** The data structure associated with each comp device. */ 71 struct rte_compressdev { 72 compressdev_dequeue_pkt_burst_t dequeue_burst; 73 /**< Pointer to PMD receive function */ 74 compressdev_enqueue_pkt_burst_t enqueue_burst; 75 /**< Pointer to PMD transmit function */ 76 77 struct rte_compressdev_data *data; 78 /**< Pointer to device data */ 79 struct rte_compressdev_ops *dev_ops; 80 /**< Functions exported by PMD */ 81 uint64_t feature_flags; 82 /**< Supported features */ 83 struct rte_device *device; 84 /**< Backing device */ 85 86 __extension__ 87 uint8_t attached : 1; 88 /**< Flag indicating the device is attached */ 89 } __rte_cache_aligned; 90 91 /** 92 * 93 * The data part, with no function pointers, associated with each device. 94 * 95 * This structure is safe to place in shared memory to be common among 96 * different processes in a multi-process configuration. 97 */ 98 struct rte_compressdev_data { 99 uint8_t dev_id; 100 /**< Compress device identifier */ 101 int socket_id; 102 /**< Socket identifier where memory is allocated */ 103 char name[RTE_COMPRESSDEV_NAME_MAX_LEN]; 104 /**< Unique identifier name */ 105 106 __extension__ 107 uint8_t dev_started : 1; 108 /**< Device state: STARTED(1)/STOPPED(0) */ 109 110 void **queue_pairs; 111 /**< Array of pointers to queue pairs. */ 112 uint16_t nb_queue_pairs; 113 /**< Number of device queue pairs */ 114 115 void *dev_private; 116 /**< PMD-specific private data */ 117 } __rte_cache_aligned; 118 119 #ifdef __cplusplus 120 } 121 #endif 122 123 #endif 124