| File: | home/bhubbard/working/src/ceph/src/spdk/dpdk/lib/librte_compressdev/rte_compressdev.c | 
| Warning: | line 45, column 21 Assigned value is garbage or undefined  | 
[?] Use j/k keys for keyboard navigation
| 1 | /* SPDX-License-Identifier: BSD-3-Clause | |||
| 2 | * Copyright(c) 2017-2018 Intel Corporation | |||
| 3 | */ | |||
| 4 | ||||
| 5 | #include <string.h> | |||
| 6 | #include <stdarg.h> | |||
| 7 | #include <stdio.h> | |||
| 8 | #include <inttypes.h> | |||
| 9 | ||||
| 10 | #include <rte_string_fns.h> | |||
| 11 | #include <rte_malloc.h> | |||
| 12 | #include <rte_eal.h> | |||
| 13 | #include <rte_memzone.h> | |||
| 14 | ||||
| 15 | #include "rte_compressdev.h" | |||
| 16 | #include "rte_compressdev_internal.h" | |||
| 17 | #include "rte_compressdev_pmd.h" | |||
| 18 | ||||
| 19 | #define RTE_COMPRESSDEV_DETACHED(0) (0) | |||
| 20 | #define RTE_COMPRESSDEV_ATTACHED(1) (1) | |||
| 21 | ||||
| 22 | static struct rte_compressdev rte_comp_devices[RTE_COMPRESS_MAX_DEVS64]; | |||
| 23 | ||||
| 24 | static struct rte_compressdev_global compressdev_globals = { | |||
| 25 | .devs = rte_comp_devices, | |||
| 26 | .data = { NULL((void*)0) }, | |||
| 27 | .nb_devs = 0, | |||
| 28 | .max_devs = RTE_COMPRESS_MAX_DEVS64 | |||
| 29 | }; | |||
| 30 | ||||
| 31 | const struct rte_compressdev_capabilities * __rte_experimental__attribute__((section(".text.experimental"))) | |||
| 32 | rte_compressdev_capability_get(uint8_t dev_id, | |||
| 33 | enum rte_comp_algorithm algo) | |||
| 34 | { | |||
| 35 | const struct rte_compressdev_capabilities *capability; | |||
| 36 | struct rte_compressdev_info dev_info; | |||
| 37 | int i = 0; | |||
| 38 | ||||
| 39 | if (dev_id >= compressdev_globals.nb_devs) { | |||
  | ||||
| 40 | 		COMPRESSDEV_LOG(ERR, "Invalid dev_id=%d", dev_id)rte_log(4U, compressdev_logtype, "%s(): ""Invalid dev_id=%d" "\n" , __func__, dev_id);  | |||
| 41 | return NULL((void*)0); | |||
| 42 | } | |||
| 43 | rte_compressdev_info_get(dev_id, &dev_info); | |||
| 44 | ||||
| 45 | while ((capability = &dev_info.capabilities[i++])->algo != | |||
  | ||||
| 46 | RTE_COMP_ALGO_UNSPECIFIED){ | |||
| 47 | if (capability->algo == algo) | |||
| 48 | return capability; | |||
| 49 | } | |||
| 50 | ||||
| 51 | return NULL((void*)0); | |||
| 52 | } | |||
| 53 | ||||
| 54 | const char * __rte_experimental__attribute__((section(".text.experimental"))) | |||
| 55 | rte_compressdev_get_feature_name(uint64_t flag) | |||
| 56 | { | |||
| 57 | switch (flag) { | |||
| 58 | case RTE_COMPDEV_FF_HW_ACCELERATED(1ULL << 0): | |||
| 59 | return "HW_ACCELERATED"; | |||
| 60 | case RTE_COMPDEV_FF_CPU_SSE(1ULL << 1): | |||
| 61 | return "CPU_SSE"; | |||
| 62 | case RTE_COMPDEV_FF_CPU_AVX(1ULL << 2): | |||
| 63 | return "CPU_AVX"; | |||
| 64 | case RTE_COMPDEV_FF_CPU_AVX2(1ULL << 3): | |||
| 65 | return "CPU_AVX2"; | |||
| 66 | case RTE_COMPDEV_FF_CPU_AVX512(1ULL << 4): | |||
| 67 | return "CPU_AVX512"; | |||
| 68 | case RTE_COMPDEV_FF_CPU_NEON(1ULL << 5): | |||
| 69 | return "CPU_NEON"; | |||
| 70 | case RTE_COMPDEV_FF_OP_DONE_IN_DEQUEUE(1ULL << 6): | |||
| 71 | return "OP_DONE_IN_DEQ"; | |||
| 72 | default: | |||
| 73 | return NULL((void*)0); | |||
| 74 | } | |||
| 75 | } | |||
| 76 | ||||
| 77 | static struct rte_compressdev * | |||
| 78 | rte_compressdev_get_dev(uint8_t dev_id) | |||
| 79 | { | |||
| 80 | return &compressdev_globals.devs[dev_id]; | |||
| 81 | } | |||
| 82 | ||||
| 83 | struct rte_compressdev * __rte_experimental__attribute__((section(".text.experimental"))) | |||
| 84 | rte_compressdev_pmd_get_named_dev(const char *name) | |||
| 85 | { | |||
| 86 | struct rte_compressdev *dev; | |||
| 87 | unsigned int i; | |||
| 88 | ||||
| 89 | if (name == NULL((void*)0)) | |||
| 90 | return NULL((void*)0); | |||
| 91 | ||||
| 92 | for (i = 0; i < compressdev_globals.max_devs; i++) { | |||
| 93 | dev = &compressdev_globals.devs[i]; | |||
| 94 | ||||
| 95 | if ((dev->attached == RTE_COMPRESSDEV_ATTACHED(1)) && | |||
| 96 | 				(strcmp(dev->data->name, name)__extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (dev->data->name) && __builtin_constant_p (name ) && (__s1_len = __builtin_strlen (dev->data->name ), __s2_len = __builtin_strlen (name), (!((size_t)(const void *)((dev->data->name) + 1) - (size_t)(const void *)(dev ->data->name) == 1) || __s1_len >= 4) && (!( (size_t)(const void *)((name) + 1) - (size_t)(const void *)(name ) == 1) || __s2_len >= 4)) ? __builtin_strcmp (dev->data ->name, name) : (__builtin_constant_p (dev->data->name ) && ((size_t)(const void *)((dev->data->name) + 1) - (size_t)(const void *)(dev->data->name) == 1) && (__s1_len = __builtin_strlen (dev->data->name), __s1_len < 4) ? (__builtin_constant_p (name) && ((size_t)( const void *)((name) + 1) - (size_t)(const void *)(name) == 1 ) ? __builtin_strcmp (dev->data->name, name) : (__extension__ ({ const unsigned char *__s2 = (const unsigned char *) (const char *) (name); int __result = (((const unsigned char *) (const char *) (dev->data->name))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((const unsigned char *) (const char *) (dev->data->name))[1] - __s2[1] ); if (__s1_len > 1 && __result == 0) { __result = (((const unsigned char *) (const char *) (dev->data->name ))[2] - __s2[2]); if (__s1_len > 2 && __result == 0 ) __result = (((const unsigned char *) (const char *) (dev-> data->name))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p (name) && ((size_t)(const void *)((name) + 1) - (size_t )(const void *)(name) == 1) && (__s2_len = __builtin_strlen (name), __s2_len < 4) ? (__builtin_constant_p (dev->data ->name) && ((size_t)(const void *)((dev->data-> name) + 1) - (size_t)(const void *)(dev->data->name) == 1) ? __builtin_strcmp (dev->data->name, name) : (- (__extension__ ({ const unsigned char *__s2 = (const unsigned char *) (const char *) (dev->data->name); int __result = (((const unsigned char *) (const char *) (name))[0] - __s2[0]); if (__s2_len > 0 && __result == 0) { __result = (((const unsigned char *) (const char *) (name))[1] - __s2[1]); if (__s2_len > 1 && __result == 0) { __result = (((const unsigned char *) (const char *) (name))[2] - __s2[2]); if (__s2_len > 2 && __result == 0) __result = (((const unsigned char * ) (const char *) (name))[3] - __s2[3]); } } __result; })))) : __builtin_strcmp (dev->data->name, name)))); }) == 0))  | |||
| 97 | return dev; | |||
| 98 | } | |||
| 99 | ||||
| 100 | return NULL((void*)0); | |||
| 101 | } | |||
| 102 | ||||
| 103 | static unsigned int | |||
| 104 | rte_compressdev_is_valid_dev(uint8_t dev_id) | |||
| 105 | { | |||
| 106 | struct rte_compressdev *dev = NULL((void*)0); | |||
| 107 | ||||
| 108 | if (dev_id >= compressdev_globals.nb_devs) | |||
| 109 | return 0; | |||
| 110 | ||||
| 111 | dev = rte_compressdev_get_dev(dev_id); | |||
| 112 | if (dev->attached != RTE_COMPRESSDEV_ATTACHED(1)) | |||
| 113 | return 0; | |||
| 114 | else | |||
| 115 | return 1; | |||
| 116 | } | |||
| 117 | ||||
| 118 | ||||
| 119 | int __rte_experimental__attribute__((section(".text.experimental"))) | |||
| 120 | rte_compressdev_get_dev_id(const char *name) | |||
| 121 | { | |||
| 122 | unsigned int i; | |||
| 123 | ||||
| 124 | if (name == NULL((void*)0)) | |||
| 125 | return -1; | |||
| 126 | ||||
| 127 | for (i = 0; i < compressdev_globals.nb_devs; i++) | |||
| 128 | 		if ((strcmp(compressdev_globals.devs[i].data->name, name)__extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (compressdev_globals.devs[i].data->name) && __builtin_constant_p (name) && (__s1_len = __builtin_strlen (compressdev_globals .devs[i].data->name), __s2_len = __builtin_strlen (name), ( !((size_t)(const void *)((compressdev_globals.devs[i].data-> name) + 1) - (size_t)(const void *)(compressdev_globals.devs[ i].data->name) == 1) || __s1_len >= 4) && (!((size_t )(const void *)((name) + 1) - (size_t)(const void *)(name) == 1) || __s2_len >= 4)) ? __builtin_strcmp (compressdev_globals .devs[i].data->name, name) : (__builtin_constant_p (compressdev_globals .devs[i].data->name) && ((size_t)(const void *)((compressdev_globals .devs[i].data->name) + 1) - (size_t)(const void *)(compressdev_globals .devs[i].data->name) == 1) && (__s1_len = __builtin_strlen (compressdev_globals.devs[i].data->name), __s1_len < 4 ) ? (__builtin_constant_p (name) && ((size_t)(const void *)((name) + 1) - (size_t)(const void *)(name) == 1) ? __builtin_strcmp (compressdev_globals.devs[i].data->name, name) : (__extension__ ({ const unsigned char *__s2 = (const unsigned char *) (const char *) (name); int __result = (((const unsigned char *) (const char *) (compressdev_globals.devs[i].data->name))[0] - __s2 [0]); if (__s1_len > 0 && __result == 0) { __result = (((const unsigned char *) (const char *) (compressdev_globals .devs[i].data->name))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((const unsigned char *) (const char *) (compressdev_globals.devs[i].data->name))[2] - __s2 [2]); if (__s1_len > 2 && __result == 0) __result = (((const unsigned char *) (const char *) (compressdev_globals .devs[i].data->name))[3] - __s2[3]); } } __result; }))) : ( __builtin_constant_p (name) && ((size_t)(const void * )((name) + 1) - (size_t)(const void *)(name) == 1) && (__s2_len = __builtin_strlen (name), __s2_len < 4) ? (__builtin_constant_p (compressdev_globals.devs[i].data->name) && ((size_t )(const void *)((compressdev_globals.devs[i].data->name) + 1) - (size_t)(const void *)(compressdev_globals.devs[i].data ->name) == 1) ? __builtin_strcmp (compressdev_globals.devs [i].data->name, name) : (- (__extension__ ({ const unsigned char *__s2 = (const unsigned char *) (const char *) (compressdev_globals .devs[i].data->name); int __result = (((const unsigned char *) (const char *) (name))[0] - __s2[0]); if (__s2_len > 0 && __result == 0) { __result = (((const unsigned char *) (const char *) (name))[1] - __s2[1]); if (__s2_len > 1 && __result == 0) { __result = (((const unsigned char *) (const char *) (name))[2] - __s2[2]); if (__s2_len > 2 && __result == 0) __result = (((const unsigned char * ) (const char *) (name))[3] - __s2[3]); } } __result; })))) : __builtin_strcmp (compressdev_globals.devs[i].data->name, name)))); })  | |||
| 129 | == 0) && | |||
| 130 | (compressdev_globals.devs[i].attached == | |||
| 131 | RTE_COMPRESSDEV_ATTACHED(1))) | |||
| 132 | return i; | |||
| 133 | ||||
| 134 | return -1; | |||
| 135 | } | |||
| 136 | ||||
| 137 | uint8_t __rte_experimental__attribute__((section(".text.experimental"))) | |||
| 138 | rte_compressdev_count(void) | |||
| 139 | { | |||
| 140 | return compressdev_globals.nb_devs; | |||
| 141 | } | |||
| 142 | ||||
| 143 | uint8_t __rte_experimental__attribute__((section(".text.experimental"))) | |||
| 144 | rte_compressdev_devices_get(const char *driver_name, uint8_t *devices, | |||
| 145 | uint8_t nb_devices) | |||
| 146 | { | |||
| 147 | uint8_t i, count = 0; | |||
| 148 | struct rte_compressdev *devs = compressdev_globals.devs; | |||
| 149 | uint8_t max_devs = compressdev_globals.max_devs; | |||
| 150 | ||||
| 151 | for (i = 0; i < max_devs && count < nb_devices; i++) { | |||
| 152 | ||||
| 153 | if (devs[i].attached == RTE_COMPRESSDEV_ATTACHED(1)) { | |||
| 154 | int cmp; | |||
| 155 | ||||
| 156 | 			cmp = strncmp(devs[i].device->driver->name,(__extension__ (__builtin_constant_p (strlen(driver_name)) && ((__builtin_constant_p (devs[i].device->driver->name) && strlen (devs[i].device->driver->name) < ((size_t) ( strlen(driver_name)))) || (__builtin_constant_p (driver_name) && strlen (driver_name) < ((size_t) (strlen(driver_name ))))) ? __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (devs[i].device->driver->name) && __builtin_constant_p (driver_name) && (__s1_len = __builtin_strlen (devs[ i].device->driver->name), __s2_len = __builtin_strlen ( driver_name), (!((size_t)(const void *)((devs[i].device->driver ->name) + 1) - (size_t)(const void *)(devs[i].device->driver ->name) == 1) || __s1_len >= 4) && (!((size_t)( const void *)((driver_name) + 1) - (size_t)(const void *)(driver_name ) == 1) || __s2_len >= 4)) ? __builtin_strcmp (devs[i].device ->driver->name, driver_name) : (__builtin_constant_p (devs [i].device->driver->name) && ((size_t)(const void *)((devs[i].device->driver->name) + 1) - (size_t)(const void *)(devs[i].device->driver->name) == 1) && (__s1_len = __builtin_strlen (devs[i].device->driver-> name), __s1_len < 4) ? (__builtin_constant_p (driver_name) && ((size_t)(const void *)((driver_name) + 1) - (size_t )(const void *)(driver_name) == 1) ? __builtin_strcmp (devs[i ].device->driver->name, driver_name) : (__extension__ ( { const unsigned char *__s2 = (const unsigned char *) (const char *) (driver_name); int __result = (((const unsigned char *) ( const char *) (devs[i].device->driver->name))[0] - __s2 [0]); if (__s1_len > 0 && __result == 0) { __result = (((const unsigned char *) (const char *) (devs[i].device-> driver->name))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((const unsigned char *) (const char *) (devs[i].device->driver->name))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = ((( const unsigned char *) (const char *) (devs[i].device->driver ->name))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p (driver_name) && ((size_t)(const void *)((driver_name ) + 1) - (size_t)(const void *)(driver_name) == 1) && (__s2_len = __builtin_strlen (driver_name), __s2_len < 4) ? (__builtin_constant_p (devs[i].device->driver->name) && ((size_t)(const void *)((devs[i].device->driver ->name) + 1) - (size_t)(const void *)(devs[i].device->driver ->name) == 1) ? __builtin_strcmp (devs[i].device->driver ->name, driver_name) : (- (__extension__ ({ const unsigned char *__s2 = (const unsigned char *) (const char *) (devs[i] .device->driver->name); int __result = (((const unsigned char *) (const char *) (driver_name))[0] - __s2[0]); if (__s2_len > 0 && __result == 0) { __result = (((const unsigned char *) (const char *) (driver_name))[1] - __s2[1]); if (__s2_len > 1 && __result == 0) { __result = (((const unsigned char *) (const char *) (driver_name))[2] - __s2[2]); if (__s2_len > 2 && __result == 0) __result = (((const unsigned char *) (const char *) (driver_name))[3] - __s2[3]); } } __result ; })))) : __builtin_strcmp (devs[i].device->driver->name , driver_name)))); }) : strncmp (devs[i].device->driver-> name, driver_name, strlen(driver_name))))  | |||
| 157 | 					driver_name,(__extension__ (__builtin_constant_p (strlen(driver_name)) && ((__builtin_constant_p (devs[i].device->driver->name) && strlen (devs[i].device->driver->name) < ((size_t) ( strlen(driver_name)))) || (__builtin_constant_p (driver_name) && strlen (driver_name) < ((size_t) (strlen(driver_name ))))) ? __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (devs[i].device->driver->name) && __builtin_constant_p (driver_name) && (__s1_len = __builtin_strlen (devs[ i].device->driver->name), __s2_len = __builtin_strlen ( driver_name), (!((size_t)(const void *)((devs[i].device->driver ->name) + 1) - (size_t)(const void *)(devs[i].device->driver ->name) == 1) || __s1_len >= 4) && (!((size_t)( const void *)((driver_name) + 1) - (size_t)(const void *)(driver_name ) == 1) || __s2_len >= 4)) ? __builtin_strcmp (devs[i].device ->driver->name, driver_name) : (__builtin_constant_p (devs [i].device->driver->name) && ((size_t)(const void *)((devs[i].device->driver->name) + 1) - (size_t)(const void *)(devs[i].device->driver->name) == 1) && (__s1_len = __builtin_strlen (devs[i].device->driver-> name), __s1_len < 4) ? (__builtin_constant_p (driver_name) && ((size_t)(const void *)((driver_name) + 1) - (size_t )(const void *)(driver_name) == 1) ? __builtin_strcmp (devs[i ].device->driver->name, driver_name) : (__extension__ ( { const unsigned char *__s2 = (const unsigned char *) (const char *) (driver_name); int __result = (((const unsigned char *) ( const char *) (devs[i].device->driver->name))[0] - __s2 [0]); if (__s1_len > 0 && __result == 0) { __result = (((const unsigned char *) (const char *) (devs[i].device-> driver->name))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((const unsigned char *) (const char *) (devs[i].device->driver->name))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = ((( const unsigned char *) (const char *) (devs[i].device->driver ->name))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p (driver_name) && ((size_t)(const void *)((driver_name ) + 1) - (size_t)(const void *)(driver_name) == 1) && (__s2_len = __builtin_strlen (driver_name), __s2_len < 4) ? (__builtin_constant_p (devs[i].device->driver->name) && ((size_t)(const void *)((devs[i].device->driver ->name) + 1) - (size_t)(const void *)(devs[i].device->driver ->name) == 1) ? __builtin_strcmp (devs[i].device->driver ->name, driver_name) : (- (__extension__ ({ const unsigned char *__s2 = (const unsigned char *) (const char *) (devs[i] .device->driver->name); int __result = (((const unsigned char *) (const char *) (driver_name))[0] - __s2[0]); if (__s2_len > 0 && __result == 0) { __result = (((const unsigned char *) (const char *) (driver_name))[1] - __s2[1]); if (__s2_len > 1 && __result == 0) { __result = (((const unsigned char *) (const char *) (driver_name))[2] - __s2[2]); if (__s2_len > 2 && __result == 0) __result = (((const unsigned char *) (const char *) (driver_name))[3] - __s2[3]); } } __result ; })))) : __builtin_strcmp (devs[i].device->driver->name , driver_name)))); }) : strncmp (devs[i].device->driver-> name, driver_name, strlen(driver_name))))  | |||
| 158 | 					strlen(driver_name))(__extension__ (__builtin_constant_p (strlen(driver_name)) && ((__builtin_constant_p (devs[i].device->driver->name) && strlen (devs[i].device->driver->name) < ((size_t) ( strlen(driver_name)))) || (__builtin_constant_p (driver_name) && strlen (driver_name) < ((size_t) (strlen(driver_name ))))) ? __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (devs[i].device->driver->name) && __builtin_constant_p (driver_name) && (__s1_len = __builtin_strlen (devs[ i].device->driver->name), __s2_len = __builtin_strlen ( driver_name), (!((size_t)(const void *)((devs[i].device->driver ->name) + 1) - (size_t)(const void *)(devs[i].device->driver ->name) == 1) || __s1_len >= 4) && (!((size_t)( const void *)((driver_name) + 1) - (size_t)(const void *)(driver_name ) == 1) || __s2_len >= 4)) ? __builtin_strcmp (devs[i].device ->driver->name, driver_name) : (__builtin_constant_p (devs [i].device->driver->name) && ((size_t)(const void *)((devs[i].device->driver->name) + 1) - (size_t)(const void *)(devs[i].device->driver->name) == 1) && (__s1_len = __builtin_strlen (devs[i].device->driver-> name), __s1_len < 4) ? (__builtin_constant_p (driver_name) && ((size_t)(const void *)((driver_name) + 1) - (size_t )(const void *)(driver_name) == 1) ? __builtin_strcmp (devs[i ].device->driver->name, driver_name) : (__extension__ ( { const unsigned char *__s2 = (const unsigned char *) (const char *) (driver_name); int __result = (((const unsigned char *) ( const char *) (devs[i].device->driver->name))[0] - __s2 [0]); if (__s1_len > 0 && __result == 0) { __result = (((const unsigned char *) (const char *) (devs[i].device-> driver->name))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((const unsigned char *) (const char *) (devs[i].device->driver->name))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = ((( const unsigned char *) (const char *) (devs[i].device->driver ->name))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p (driver_name) && ((size_t)(const void *)((driver_name ) + 1) - (size_t)(const void *)(driver_name) == 1) && (__s2_len = __builtin_strlen (driver_name), __s2_len < 4) ? (__builtin_constant_p (devs[i].device->driver->name) && ((size_t)(const void *)((devs[i].device->driver ->name) + 1) - (size_t)(const void *)(devs[i].device->driver ->name) == 1) ? __builtin_strcmp (devs[i].device->driver ->name, driver_name) : (- (__extension__ ({ const unsigned char *__s2 = (const unsigned char *) (const char *) (devs[i] .device->driver->name); int __result = (((const unsigned char *) (const char *) (driver_name))[0] - __s2[0]); if (__s2_len > 0 && __result == 0) { __result = (((const unsigned char *) (const char *) (driver_name))[1] - __s2[1]); if (__s2_len > 1 && __result == 0) { __result = (((const unsigned char *) (const char *) (driver_name))[2] - __s2[2]); if (__s2_len > 2 && __result == 0) __result = (((const unsigned char *) (const char *) (driver_name))[3] - __s2[3]); } } __result ; })))) : __builtin_strcmp (devs[i].device->driver->name , driver_name)))); }) : strncmp (devs[i].device->driver-> name, driver_name, strlen(driver_name))));  | |||
| 159 | ||||
| 160 | if (cmp == 0) | |||
| 161 | devices[count++] = devs[i].data->dev_id; | |||
| 162 | } | |||
| 163 | } | |||
| 164 | ||||
| 165 | return count; | |||
| 166 | } | |||
| 167 | ||||
| 168 | int __rte_experimental__attribute__((section(".text.experimental"))) | |||
| 169 | rte_compressdev_socket_id(uint8_t dev_id) | |||
| 170 | { | |||
| 171 | struct rte_compressdev *dev; | |||
| 172 | ||||
| 173 | if (!rte_compressdev_is_valid_dev(dev_id)) | |||
| 174 | return -1; | |||
| 175 | ||||
| 176 | dev = rte_compressdev_get_dev(dev_id); | |||
| 177 | ||||
| 178 | return dev->data->socket_id; | |||
| 179 | } | |||
| 180 | ||||
| 181 | static inline int | |||
| 182 | rte_compressdev_data_alloc(uint8_t dev_id, struct rte_compressdev_data **data, | |||
| 183 | int socket_id) | |||
| 184 | { | |||
| 185 | char mz_name[RTE_COMPRESSDEV_NAME_MAX_LEN(64)]; | |||
| 186 | const struct rte_memzone *mz; | |||
| 187 | int n; | |||
| 188 | ||||
| 189 | /* generate memzone name */ | |||
| 190 | n = snprintf(mz_name, sizeof(mz_name), | |||
| 191 | "rte_compressdev_data_%u", dev_id); | |||
| 192 | if (n >= (int)sizeof(mz_name)) | |||
| 193 | return -EINVAL22; | |||
| 194 | ||||
| 195 | if (rte_eal_process_type() == RTE_PROC_PRIMARY) { | |||
| 196 | mz = rte_memzone_reserve(mz_name, | |||
| 197 | sizeof(struct rte_compressdev_data), | |||
| 198 | socket_id, 0); | |||
| 199 | } else | |||
| 200 | mz = rte_memzone_lookup(mz_name); | |||
| 201 | ||||
| 202 | if (mz == NULL((void*)0)) | |||
| 203 | return -ENOMEM12; | |||
| 204 | ||||
| 205 | *data = mz->addr; | |||
| 206 | if (rte_eal_process_type() == RTE_PROC_PRIMARY) | |||
| 207 | memset(*data, 0, sizeof(struct rte_compressdev_data)); | |||
| 208 | ||||
| 209 | return 0; | |||
| 210 | } | |||
| 211 | ||||
| 212 | static uint8_t | |||
| 213 | rte_compressdev_find_free_device_index(void) | |||
| 214 | { | |||
| 215 | uint8_t dev_id; | |||
| 216 | ||||
| 217 | for (dev_id = 0; dev_id < RTE_COMPRESS_MAX_DEVS64; dev_id++) { | |||
| 218 | if (rte_comp_devices[dev_id].attached == | |||
| 219 | RTE_COMPRESSDEV_DETACHED(0)) | |||
| 220 | return dev_id; | |||
| 221 | } | |||
| 222 | return RTE_COMPRESS_MAX_DEVS64; | |||
| 223 | } | |||
| 224 | ||||
| 225 | struct rte_compressdev * __rte_experimental__attribute__((section(".text.experimental"))) | |||
| 226 | rte_compressdev_pmd_allocate(const char *name, int socket_id) | |||
| 227 | { | |||
| 228 | struct rte_compressdev *compressdev; | |||
| 229 | uint8_t dev_id; | |||
| 230 | ||||
| 231 | if (rte_compressdev_pmd_get_named_dev(name) != NULL((void*)0)) { | |||
| 232 | 		COMPRESSDEV_LOG(ERR,rte_log(4U, compressdev_logtype, "%s(): ""comp device with name %s already allocated!" "\n", __func__, name)  | |||
| 233 | 			"comp device with name %s already allocated!", name)rte_log(4U, compressdev_logtype, "%s(): ""comp device with name %s already allocated!" "\n", __func__, name);  | |||
| 234 | return NULL((void*)0); | |||
| 235 | } | |||
| 236 | ||||
| 237 | dev_id = rte_compressdev_find_free_device_index(); | |||
| 238 | if (dev_id == RTE_COMPRESS_MAX_DEVS64) { | |||
| 239 | 		COMPRESSDEV_LOG(ERR, "Reached maximum number of comp devices")rte_log(4U, compressdev_logtype, "%s(): ""Reached maximum number of comp devices" "\n", __func__);  | |||
| 240 | return NULL((void*)0); | |||
| 241 | } | |||
| 242 | compressdev = rte_compressdev_get_dev(dev_id); | |||
| 243 | ||||
| 244 | if (compressdev->data == NULL((void*)0)) { | |||
| 245 | struct rte_compressdev_data *compressdev_data = | |||
| 246 | compressdev_globals.data[dev_id]; | |||
| 247 | ||||
| 248 | int retval = rte_compressdev_data_alloc(dev_id, | |||
| 249 | &compressdev_data, socket_id); | |||
| 250 | ||||
| 251 | if (retval < 0 || compressdev_data == NULL((void*)0)) | |||
| 252 | return NULL((void*)0); | |||
| 253 | ||||
| 254 | compressdev->data = compressdev_data; | |||
| 255 | ||||
| 256 | strlcpy(compressdev->data->name, name,rte_strlcpy(compressdev->data->name, name, (64)) | |||
| 257 | RTE_COMPRESSDEV_NAME_MAX_LEN)rte_strlcpy(compressdev->data->name, name, (64)); | |||
| 258 | ||||
| 259 | compressdev->data->dev_id = dev_id; | |||
| 260 | compressdev->data->socket_id = socket_id; | |||
| 261 | compressdev->data->dev_started = 0; | |||
| 262 | ||||
| 263 | compressdev->attached = RTE_COMPRESSDEV_ATTACHED(1); | |||
| 264 | ||||
| 265 | compressdev_globals.nb_devs++; | |||
| 266 | } | |||
| 267 | ||||
| 268 | return compressdev; | |||
| 269 | } | |||
| 270 | ||||
| 271 | int __rte_experimental__attribute__((section(".text.experimental"))) | |||
| 272 | rte_compressdev_pmd_release_device(struct rte_compressdev *compressdev) | |||
| 273 | { | |||
| 274 | int ret; | |||
| 275 | ||||
| 276 | if (compressdev == NULL((void*)0)) | |||
| 277 | return -EINVAL22; | |||
| 278 | ||||
| 279 | /* Close device only if device operations have been set */ | |||
| 280 | if (compressdev->dev_ops) { | |||
| 281 | ret = rte_compressdev_close(compressdev->data->dev_id); | |||
| 282 | if (ret < 0) | |||
| 283 | return ret; | |||
| 284 | } | |||
| 285 | ||||
| 286 | compressdev->attached = RTE_COMPRESSDEV_DETACHED(0); | |||
| 287 | compressdev_globals.nb_devs--; | |||
| 288 | return 0; | |||
| 289 | } | |||
| 290 | ||||
| 291 | uint16_t __rte_experimental__attribute__((section(".text.experimental"))) | |||
| 292 | rte_compressdev_queue_pair_count(uint8_t dev_id) | |||
| 293 | { | |||
| 294 | struct rte_compressdev *dev; | |||
| 295 | ||||
| 296 | dev = &rte_comp_devices[dev_id]; | |||
| 297 | return dev->data->nb_queue_pairs; | |||
| 298 | } | |||
| 299 | ||||
| 300 | static int | |||
| 301 | rte_compressdev_queue_pairs_config(struct rte_compressdev *dev, | |||
| 302 | uint16_t nb_qpairs, int socket_id) | |||
| 303 | { | |||
| 304 | struct rte_compressdev_info dev_info; | |||
| 305 | void **qp; | |||
| 306 | unsigned int i; | |||
| 307 | ||||
| 308 | if ((dev == NULL((void*)0)) || (nb_qpairs < 1)) { | |||
| 309 | 		COMPRESSDEV_LOG(ERR, "invalid param: dev %p, nb_queues %u",rte_log(4U, compressdev_logtype, "%s(): ""invalid param: dev %p, nb_queues %u" "\n", __func__, dev, nb_qpairs)  | |||
| 310 | 							dev, nb_qpairs)rte_log(4U, compressdev_logtype, "%s(): ""invalid param: dev %p, nb_queues %u" "\n", __func__, dev, nb_qpairs);  | |||
| 311 | return -EINVAL22; | |||
| 312 | } | |||
| 313 | ||||
| 314 | 	COMPRESSDEV_LOG(DEBUG, "Setup %d queues pairs on device %u",rte_log(8U, compressdev_logtype, "%s(): ""Setup %d queues pairs on device %u" "\n", __func__, nb_qpairs, dev->data->dev_id)  | |||
| 315 | 			nb_qpairs, dev->data->dev_id)rte_log(8U, compressdev_logtype, "%s(): ""Setup %d queues pairs on device %u" "\n", __func__, nb_qpairs, dev->data->dev_id);  | |||
| 316 | ||||
| 317 | memset(&dev_info, 0, sizeof(struct rte_compressdev_info)); | |||
| 318 | ||||
| 319 | 	RTE_FUNC_PTR_OR_ERR_RET(*dev->dev_ops->dev_infos_get, -ENOTSUP)do { if ((*dev->dev_ops->dev_infos_get) == ((void*)0)) return -95; } while (0);  | |||
| 320 | (*dev->dev_ops->dev_infos_get)(dev, &dev_info); | |||
| 321 | ||||
| 322 | if ((dev_info.max_nb_queue_pairs != 0) && | |||
| 323 | (nb_qpairs > dev_info.max_nb_queue_pairs)) { | |||
| 324 | 		COMPRESSDEV_LOG(ERR, "Invalid num queue_pairs (%u) for dev %u",rte_log(4U, compressdev_logtype, "%s(): ""Invalid num queue_pairs (%u) for dev %u" "\n", __func__, nb_qpairs, dev->data->dev_id)  | |||
| 325 | 				nb_qpairs, dev->data->dev_id)rte_log(4U, compressdev_logtype, "%s(): ""Invalid num queue_pairs (%u) for dev %u" "\n", __func__, nb_qpairs, dev->data->dev_id);  | |||
| 326 | return -EINVAL22; | |||
| 327 | } | |||
| 328 | ||||
| 329 | if (dev->data->queue_pairs == NULL((void*)0)) { /* first time configuration */ | |||
| 330 | dev->data->queue_pairs = rte_zmalloc_socket( | |||
| 331 | "compressdev->queue_pairs", | |||
| 332 | sizeof(dev->data->queue_pairs[0]) * nb_qpairs, | |||
| 333 | RTE_CACHE_LINE_SIZE64, socket_id); | |||
| 334 | ||||
| 335 | if (dev->data->queue_pairs == NULL((void*)0)) { | |||
| 336 | dev->data->nb_queue_pairs = 0; | |||
| 337 | 			COMPRESSDEV_LOG(ERR,rte_log(4U, compressdev_logtype, "%s(): ""failed to get memory for qp meta data, nb_queues %u" "\n", __func__, nb_qpairs)  | |||
| 338 | 			"failed to get memory for qp meta data, nb_queues %u",rte_log(4U, compressdev_logtype, "%s(): ""failed to get memory for qp meta data, nb_queues %u" "\n", __func__, nb_qpairs)  | |||
| 339 | 							nb_qpairs)rte_log(4U, compressdev_logtype, "%s(): ""failed to get memory for qp meta data, nb_queues %u" "\n", __func__, nb_qpairs);  | |||
| 340 | return -(ENOMEM12); | |||
| 341 | } | |||
| 342 | } else { /* re-configure */ | |||
| 343 | int ret; | |||
| 344 | uint16_t old_nb_queues = dev->data->nb_queue_pairs; | |||
| 345 | ||||
| 346 | qp = dev->data->queue_pairs; | |||
| 347 | ||||
| 348 | 		RTE_FUNC_PTR_OR_ERR_RET(*dev->dev_ops->queue_pair_release,do { if ((*dev->dev_ops->queue_pair_release) == ((void* )0)) return -95; } while (0)  | |||
| 349 | 				-ENOTSUP)do { if ((*dev->dev_ops->queue_pair_release) == ((void* )0)) return -95; } while (0);  | |||
| 350 | ||||
| 351 | for (i = nb_qpairs; i < old_nb_queues; i++) { | |||
| 352 | ret = (*dev->dev_ops->queue_pair_release)(dev, i); | |||
| 353 | if (ret < 0) | |||
| 354 | return ret; | |||
| 355 | } | |||
| 356 | ||||
| 357 | qp = rte_realloc(qp, sizeof(qp[0]) * nb_qpairs, | |||
| 358 | RTE_CACHE_LINE_SIZE64); | |||
| 359 | if (qp == NULL((void*)0)) { | |||
| 360 | 			COMPRESSDEV_LOG(ERR,rte_log(4U, compressdev_logtype, "%s(): ""failed to realloc qp meta data, nb_queues %u" "\n", __func__, nb_qpairs)  | |||
| 361 | 			"failed to realloc qp meta data, nb_queues %u",rte_log(4U, compressdev_logtype, "%s(): ""failed to realloc qp meta data, nb_queues %u" "\n", __func__, nb_qpairs)  | |||
| 362 | 						nb_qpairs)rte_log(4U, compressdev_logtype, "%s(): ""failed to realloc qp meta data, nb_queues %u" "\n", __func__, nb_qpairs);  | |||
| 363 | return -(ENOMEM12); | |||
| 364 | } | |||
| 365 | ||||
| 366 | if (nb_qpairs > old_nb_queues) { | |||
| 367 | uint16_t new_qs = nb_qpairs - old_nb_queues; | |||
| 368 | ||||
| 369 | memset(qp + old_nb_queues, 0, | |||
| 370 | sizeof(qp[0]) * new_qs); | |||
| 371 | } | |||
| 372 | ||||
| 373 | dev->data->queue_pairs = qp; | |||
| 374 | ||||
| 375 | } | |||
| 376 | dev->data->nb_queue_pairs = nb_qpairs; | |||
| 377 | return 0; | |||
| 378 | } | |||
| 379 | ||||
| 380 | static int | |||
| 381 | rte_compressdev_queue_pairs_release(struct rte_compressdev *dev) | |||
| 382 | { | |||
| 383 | uint16_t num_qps, i; | |||
| 384 | int ret; | |||
| 385 | ||||
| 386 | if (dev == NULL((void*)0)) { | |||
| 387 | 		COMPRESSDEV_LOG(ERR, "invalid param: dev %p", dev)rte_log(4U, compressdev_logtype, "%s(): ""invalid param: dev %p" "\n", __func__, dev);  | |||
| 388 | return -EINVAL22; | |||
| 389 | } | |||
| 390 | ||||
| 391 | num_qps = dev->data->nb_queue_pairs; | |||
| 392 | ||||
| 393 | if (num_qps == 0) | |||
| 394 | return 0; | |||
| 395 | ||||
| 396 | 	COMPRESSDEV_LOG(DEBUG, "Free %d queues pairs on device %u",rte_log(8U, compressdev_logtype, "%s(): ""Free %d queues pairs on device %u" "\n", __func__, dev->data->nb_queue_pairs, dev->data ->dev_id)  | |||
| 397 | 			dev->data->nb_queue_pairs, dev->data->dev_id)rte_log(8U, compressdev_logtype, "%s(): ""Free %d queues pairs on device %u" "\n", __func__, dev->data->nb_queue_pairs, dev->data ->dev_id);  | |||
| 398 | ||||
| 399 | 	RTE_FUNC_PTR_OR_ERR_RET(*dev->dev_ops->queue_pair_release,do { if ((*dev->dev_ops->queue_pair_release) == ((void* )0)) return -95; } while (0)  | |||
| 400 | 				-ENOTSUP)do { if ((*dev->dev_ops->queue_pair_release) == ((void* )0)) return -95; } while (0);  | |||
| 401 | ||||
| 402 | for (i = 0; i < num_qps; i++) { | |||
| 403 | ret = (*dev->dev_ops->queue_pair_release)(dev, i); | |||
| 404 | if (ret < 0) | |||
| 405 | return ret; | |||
| 406 | } | |||
| 407 | ||||
| 408 | if (dev->data->queue_pairs != NULL((void*)0)) | |||
| 409 | rte_free(dev->data->queue_pairs); | |||
| 410 | dev->data->queue_pairs = NULL((void*)0); | |||
| 411 | dev->data->nb_queue_pairs = 0; | |||
| 412 | ||||
| 413 | return 0; | |||
| 414 | } | |||
| 415 | ||||
| 416 | int __rte_experimental__attribute__((section(".text.experimental"))) | |||
| 417 | rte_compressdev_configure(uint8_t dev_id, struct rte_compressdev_config *config) | |||
| 418 | { | |||
| 419 | struct rte_compressdev *dev; | |||
| 420 | int diag; | |||
| 421 | ||||
| 422 | if (!rte_compressdev_is_valid_dev(dev_id)) { | |||
| 423 | 		COMPRESSDEV_LOG(ERR, "Invalid dev_id=%" PRIu8, dev_id)rte_log(4U, compressdev_logtype, "%s(): ""Invalid dev_id=%" "u" "\n", __func__, dev_id);  | |||
| 424 | return -EINVAL22; | |||
| 425 | } | |||
| 426 | ||||
| 427 | dev = &rte_comp_devices[dev_id]; | |||
| 428 | ||||
| 429 | if (dev->data->dev_started) { | |||
| 430 | 		COMPRESSDEV_LOG(ERR,rte_log(4U, compressdev_logtype, "%s(): ""device %d must be stopped to allow configuration" "\n", __func__, dev_id)  | |||
| 431 | 		    "device %d must be stopped to allow configuration", dev_id)rte_log(4U, compressdev_logtype, "%s(): ""device %d must be stopped to allow configuration" "\n", __func__, dev_id);  | |||
| 432 | return -EBUSY16; | |||
| 433 | } | |||
| 434 | ||||
| 435 | 	RTE_FUNC_PTR_OR_ERR_RET(*dev->dev_ops->dev_configure, -ENOTSUP)do { if ((*dev->dev_ops->dev_configure) == ((void*)0)) return -95; } while (0);  | |||
| 436 | ||||
| 437 | /* Setup new number of queue pairs and reconfigure device. */ | |||
| 438 | diag = rte_compressdev_queue_pairs_config(dev, config->nb_queue_pairs, | |||
| 439 | config->socket_id); | |||
| 440 | if (diag != 0) { | |||
| 441 | 		COMPRESSDEV_LOG(ERR,rte_log(4U, compressdev_logtype, "%s(): ""dev%d rte_comp_dev_queue_pairs_config = %d" "\n", __func__, dev_id, diag)  | |||
| 442 | 			"dev%d rte_comp_dev_queue_pairs_config = %d",rte_log(4U, compressdev_logtype, "%s(): ""dev%d rte_comp_dev_queue_pairs_config = %d" "\n", __func__, dev_id, diag)  | |||
| 443 | 				dev_id, diag)rte_log(4U, compressdev_logtype, "%s(): ""dev%d rte_comp_dev_queue_pairs_config = %d" "\n", __func__, dev_id, diag);  | |||
| 444 | return diag; | |||
| 445 | } | |||
| 446 | ||||
| 447 | return (*dev->dev_ops->dev_configure)(dev, config); | |||
| 448 | } | |||
| 449 | ||||
| 450 | int __rte_experimental__attribute__((section(".text.experimental"))) | |||
| 451 | rte_compressdev_start(uint8_t dev_id) | |||
| 452 | { | |||
| 453 | struct rte_compressdev *dev; | |||
| 454 | int diag; | |||
| 455 | ||||
| 456 | 	COMPRESSDEV_LOG(DEBUG, "Start dev_id=%" PRIu8, dev_id)rte_log(8U, compressdev_logtype, "%s(): ""Start dev_id=%" "u" "\n", __func__, dev_id);  | |||
| 457 | ||||
| 458 | if (!rte_compressdev_is_valid_dev(dev_id)) { | |||
| 459 | 		COMPRESSDEV_LOG(ERR, "Invalid dev_id=%" PRIu8, dev_id)rte_log(4U, compressdev_logtype, "%s(): ""Invalid dev_id=%" "u" "\n", __func__, dev_id);  | |||
| 460 | return -EINVAL22; | |||
| 461 | } | |||
| 462 | ||||
| 463 | dev = &rte_comp_devices[dev_id]; | |||
| 464 | ||||
| 465 | 	RTE_FUNC_PTR_OR_ERR_RET(*dev->dev_ops->dev_start, -ENOTSUP)do { if ((*dev->dev_ops->dev_start) == ((void*)0)) return -95; } while (0);  | |||
| 466 | ||||
| 467 | if (dev->data->dev_started != 0) { | |||
| 468 | 		COMPRESSDEV_LOG(ERR,rte_log(4U, compressdev_logtype, "%s(): ""Device with dev_id=%" "u" " already started" "\n", __func__, dev_id)  | |||
| 469 | 		    "Device with dev_id=%" PRIu8 " already started", dev_id)rte_log(4U, compressdev_logtype, "%s(): ""Device with dev_id=%" "u" " already started" "\n", __func__, dev_id);  | |||
| 470 | return 0; | |||
| 471 | } | |||
| 472 | ||||
| 473 | diag = (*dev->dev_ops->dev_start)(dev); | |||
| 474 | if (diag == 0) | |||
| 475 | dev->data->dev_started = 1; | |||
| 476 | else | |||
| 477 | return diag; | |||
| 478 | ||||
| 479 | return 0; | |||
| 480 | } | |||
| 481 | ||||
| 482 | void __rte_experimental__attribute__((section(".text.experimental"))) | |||
| 483 | rte_compressdev_stop(uint8_t dev_id) | |||
| 484 | { | |||
| 485 | struct rte_compressdev *dev; | |||
| 486 | ||||
| 487 | if (!rte_compressdev_is_valid_dev(dev_id)) { | |||
| 488 | 		COMPRESSDEV_LOG(ERR, "Invalid dev_id=%" PRIu8, dev_id)rte_log(4U, compressdev_logtype, "%s(): ""Invalid dev_id=%" "u" "\n", __func__, dev_id);  | |||
| 489 | return; | |||
| 490 | } | |||
| 491 | ||||
| 492 | dev = &rte_comp_devices[dev_id]; | |||
| 493 | ||||
| 494 | 	RTE_FUNC_PTR_OR_RET(*dev->dev_ops->dev_stop)do { if ((*dev->dev_ops->dev_stop) == ((void*)0)) return ; } while (0);  | |||
| 495 | ||||
| 496 | if (dev->data->dev_started == 0) { | |||
| 497 | 		COMPRESSDEV_LOG(ERR,rte_log(4U, compressdev_logtype, "%s(): ""Device with dev_id=%" "u" " already stopped" "\n", __func__, dev_id)  | |||
| 498 | 		    "Device with dev_id=%" PRIu8 " already stopped", dev_id)rte_log(4U, compressdev_logtype, "%s(): ""Device with dev_id=%" "u" " already stopped" "\n", __func__, dev_id);  | |||
| 499 | return; | |||
| 500 | } | |||
| 501 | ||||
| 502 | (*dev->dev_ops->dev_stop)(dev); | |||
| 503 | dev->data->dev_started = 0; | |||
| 504 | } | |||
| 505 | ||||
| 506 | int __rte_experimental__attribute__((section(".text.experimental"))) | |||
| 507 | rte_compressdev_close(uint8_t dev_id) | |||
| 508 | { | |||
| 509 | struct rte_compressdev *dev; | |||
| 510 | int retval; | |||
| 511 | ||||
| 512 | if (!rte_compressdev_is_valid_dev(dev_id)) { | |||
| 513 | 		COMPRESSDEV_LOG(ERR, "Invalid dev_id=%" PRIu8, dev_id)rte_log(4U, compressdev_logtype, "%s(): ""Invalid dev_id=%" "u" "\n", __func__, dev_id);  | |||
| 514 | return -1; | |||
| 515 | } | |||
| 516 | ||||
| 517 | dev = &rte_comp_devices[dev_id]; | |||
| 518 | ||||
| 519 | /* Device must be stopped before it can be closed */ | |||
| 520 | if (dev->data->dev_started == 1) { | |||
| 521 | 		COMPRESSDEV_LOG(ERR, "Device %u must be stopped before closing",rte_log(4U, compressdev_logtype, "%s(): ""Device %u must be stopped before closing" "\n", __func__, dev_id)  | |||
| 522 | 				dev_id)rte_log(4U, compressdev_logtype, "%s(): ""Device %u must be stopped before closing" "\n", __func__, dev_id);  | |||
| 523 | return -EBUSY16; | |||
| 524 | } | |||
| 525 | ||||
| 526 | /* Free queue pairs memory */ | |||
| 527 | retval = rte_compressdev_queue_pairs_release(dev); | |||
| 528 | ||||
| 529 | if (retval < 0) | |||
| 530 | return retval; | |||
| 531 | ||||
| 532 | 	RTE_FUNC_PTR_OR_ERR_RET(*dev->dev_ops->dev_close, -ENOTSUP)do { if ((*dev->dev_ops->dev_close) == ((void*)0)) return -95; } while (0);  | |||
| 533 | retval = (*dev->dev_ops->dev_close)(dev); | |||
| 534 | ||||
| 535 | if (retval < 0) | |||
| 536 | return retval; | |||
| 537 | ||||
| 538 | return 0; | |||
| 539 | } | |||
| 540 | ||||
| 541 | int __rte_experimental__attribute__((section(".text.experimental"))) | |||
| 542 | rte_compressdev_queue_pair_setup(uint8_t dev_id, uint16_t queue_pair_id, | |||
| 543 | uint32_t max_inflight_ops, int socket_id) | |||
| 544 | { | |||
| 545 | struct rte_compressdev *dev; | |||
| 546 | ||||
| 547 | if (!rte_compressdev_is_valid_dev(dev_id)) { | |||
| 548 | 		COMPRESSDEV_LOG(ERR, "Invalid dev_id=%" PRIu8, dev_id)rte_log(4U, compressdev_logtype, "%s(): ""Invalid dev_id=%" "u" "\n", __func__, dev_id);  | |||
| 549 | return -EINVAL22; | |||
| 550 | } | |||
| 551 | ||||
| 552 | dev = &rte_comp_devices[dev_id]; | |||
| 553 | if (queue_pair_id >= dev->data->nb_queue_pairs) { | |||
| 554 | 		COMPRESSDEV_LOG(ERR, "Invalid queue_pair_id=%d", queue_pair_id)rte_log(4U, compressdev_logtype, "%s(): ""Invalid queue_pair_id=%d" "\n", __func__, queue_pair_id);  | |||
| 555 | return -EINVAL22; | |||
| 556 | } | |||
| 557 | ||||
| 558 | if (dev->data->dev_started) { | |||
| 559 | 		COMPRESSDEV_LOG(ERR,rte_log(4U, compressdev_logtype, "%s(): ""device %d must be stopped to allow configuration" "\n", __func__, dev_id)  | |||
| 560 | 		    "device %d must be stopped to allow configuration", dev_id)rte_log(4U, compressdev_logtype, "%s(): ""device %d must be stopped to allow configuration" "\n", __func__, dev_id);  | |||
| 561 | return -EBUSY16; | |||
| 562 | } | |||
| 563 | ||||
| 564 | if (max_inflight_ops == 0) { | |||
| 565 | 		COMPRESSDEV_LOG(ERR,rte_log(4U, compressdev_logtype, "%s(): ""Invalid maximum number of inflight operations" "\n", __func__)  | |||
| 566 | 			"Invalid maximum number of inflight operations")rte_log(4U, compressdev_logtype, "%s(): ""Invalid maximum number of inflight operations" "\n", __func__);  | |||
| 567 | return -EINVAL22; | |||
| 568 | } | |||
| 569 | ||||
| 570 | 	RTE_FUNC_PTR_OR_ERR_RET(*dev->dev_ops->queue_pair_setup, -ENOTSUP)do { if ((*dev->dev_ops->queue_pair_setup) == ((void*)0 )) return -95; } while (0);  | |||
| 571 | ||||
| 572 | return (*dev->dev_ops->queue_pair_setup)(dev, queue_pair_id, | |||
| 573 | max_inflight_ops, socket_id); | |||
| 574 | } | |||
| 575 | ||||
| 576 | uint16_t __rte_experimental__attribute__((section(".text.experimental"))) | |||
| 577 | rte_compressdev_dequeue_burst(uint8_t dev_id, uint16_t qp_id, | |||
| 578 | struct rte_comp_op **ops, uint16_t nb_ops) | |||
| 579 | { | |||
| 580 | struct rte_compressdev *dev = &rte_comp_devices[dev_id]; | |||
| 581 | ||||
| 582 | nb_ops = (*dev->dequeue_burst) | |||
| 583 | (dev->data->queue_pairs[qp_id], ops, nb_ops); | |||
| 584 | ||||
| 585 | return nb_ops; | |||
| 586 | } | |||
| 587 | ||||
| 588 | uint16_t __rte_experimental__attribute__((section(".text.experimental"))) | |||
| 589 | rte_compressdev_enqueue_burst(uint8_t dev_id, uint16_t qp_id, | |||
| 590 | struct rte_comp_op **ops, uint16_t nb_ops) | |||
| 591 | { | |||
| 592 | struct rte_compressdev *dev = &rte_comp_devices[dev_id]; | |||
| 593 | ||||
| 594 | return (*dev->enqueue_burst)( | |||
| 595 | dev->data->queue_pairs[qp_id], ops, nb_ops); | |||
| 596 | } | |||
| 597 | ||||
| 598 | int __rte_experimental__attribute__((section(".text.experimental"))) | |||
| 599 | rte_compressdev_stats_get(uint8_t dev_id, struct rte_compressdev_stats *stats) | |||
| 600 | { | |||
| 601 | struct rte_compressdev *dev; | |||
| 602 | ||||
| 603 | if (!rte_compressdev_is_valid_dev(dev_id)) { | |||
| 604 | 		COMPRESSDEV_LOG(ERR, "Invalid dev_id=%d", dev_id)rte_log(4U, compressdev_logtype, "%s(): ""Invalid dev_id=%d" "\n" , __func__, dev_id);  | |||
| 605 | return -ENODEV19; | |||
| 606 | } | |||
| 607 | ||||
| 608 | if (stats == NULL((void*)0)) { | |||
| 609 | 		COMPRESSDEV_LOG(ERR, "Invalid stats ptr")rte_log(4U, compressdev_logtype, "%s(): ""Invalid stats ptr" "\n" , __func__);  | |||
| 610 | return -EINVAL22; | |||
| 611 | } | |||
| 612 | ||||
| 613 | dev = &rte_comp_devices[dev_id]; | |||
| 614 | memset(stats, 0, sizeof(*stats)); | |||
| 615 | ||||
| 616 | 	RTE_FUNC_PTR_OR_ERR_RET(*dev->dev_ops->stats_get, -ENOTSUP)do { if ((*dev->dev_ops->stats_get) == ((void*)0)) return -95; } while (0);  | |||
| 617 | (*dev->dev_ops->stats_get)(dev, stats); | |||
| 618 | return 0; | |||
| 619 | } | |||
| 620 | ||||
| 621 | void __rte_experimental__attribute__((section(".text.experimental"))) | |||
| 622 | rte_compressdev_stats_reset(uint8_t dev_id) | |||
| 623 | { | |||
| 624 | struct rte_compressdev *dev; | |||
| 625 | ||||
| 626 | if (!rte_compressdev_is_valid_dev(dev_id)) { | |||
| 627 | 		COMPRESSDEV_LOG(ERR, "Invalid dev_id=%" PRIu8, dev_id)rte_log(4U, compressdev_logtype, "%s(): ""Invalid dev_id=%" "u" "\n", __func__, dev_id);  | |||
| 628 | return; | |||
| 629 | } | |||
| 630 | ||||
| 631 | dev = &rte_comp_devices[dev_id]; | |||
| 632 | ||||
| 633 | 	RTE_FUNC_PTR_OR_RET(*dev->dev_ops->stats_reset)do { if ((*dev->dev_ops->stats_reset) == ((void*)0)) return ; } while (0);  | |||
| 634 | (*dev->dev_ops->stats_reset)(dev); | |||
| 635 | } | |||
| 636 | ||||
| 637 | ||||
| 638 | void __rte_experimental__attribute__((section(".text.experimental"))) | |||
| 639 | rte_compressdev_info_get(uint8_t dev_id, struct rte_compressdev_info *dev_info) | |||
| 640 | { | |||
| 641 | struct rte_compressdev *dev; | |||
| 642 | ||||
| 643 | if (dev_id >= compressdev_globals.nb_devs) { | |||
| 644 | 		COMPRESSDEV_LOG(ERR, "Invalid dev_id=%d", dev_id)rte_log(4U, compressdev_logtype, "%s(): ""Invalid dev_id=%d" "\n" , __func__, dev_id);  | |||
| 645 | return; | |||
| 646 | } | |||
| 647 | ||||
| 648 | dev = &rte_comp_devices[dev_id]; | |||
| 649 | ||||
| 650 | memset(dev_info, 0, sizeof(struct rte_compressdev_info)); | |||
| 651 | ||||
| 652 | 	RTE_FUNC_PTR_OR_RET(*dev->dev_ops->dev_infos_get)do { if ((*dev->dev_ops->dev_infos_get) == ((void*)0)) return ; } while (0);  | |||
| 653 | (*dev->dev_ops->dev_infos_get)(dev, dev_info); | |||
| 654 | ||||
| 655 | dev_info->driver_name = dev->device->driver->name; | |||
| 656 | } | |||
| 657 | ||||
| 658 | int __rte_experimental__attribute__((section(".text.experimental"))) | |||
| 659 | rte_compressdev_private_xform_create(uint8_t dev_id, | |||
| 660 | const struct rte_comp_xform *xform, | |||
| 661 | void **priv_xform) | |||
| 662 | { | |||
| 663 | struct rte_compressdev *dev; | |||
| 664 | int ret; | |||
| 665 | ||||
| 666 | dev = rte_compressdev_get_dev(dev_id); | |||
| 667 | ||||
| 668 | if (xform == NULL((void*)0) || priv_xform == NULL((void*)0) || dev == NULL((void*)0)) | |||
| 669 | return -EINVAL22; | |||
| 670 | ||||
| 671 | 	RTE_FUNC_PTR_OR_ERR_RET(*dev->dev_ops->private_xform_create, -ENOTSUP)do { if ((*dev->dev_ops->private_xform_create) == ((void *)0)) return -95; } while (0);  | |||
| 672 | ret = (*dev->dev_ops->private_xform_create)(dev, xform, priv_xform); | |||
| 673 | if (ret < 0) { | |||
| 674 | 		COMPRESSDEV_LOG(ERR,rte_log(4U, compressdev_logtype, "%s(): ""dev_id %d failed to create private_xform: err=%d" "\n", __func__, dev_id, ret)  | |||
| 675 | 			"dev_id %d failed to create private_xform: err=%d",rte_log(4U, compressdev_logtype, "%s(): ""dev_id %d failed to create private_xform: err=%d" "\n", __func__, dev_id, ret)  | |||
| 676 | 			dev_id, ret)rte_log(4U, compressdev_logtype, "%s(): ""dev_id %d failed to create private_xform: err=%d" "\n", __func__, dev_id, ret);  | |||
| 677 | return ret; | |||
| 678 | }; | |||
| 679 | ||||
| 680 | return 0; | |||
| 681 | } | |||
| 682 | ||||
| 683 | int __rte_experimental__attribute__((section(".text.experimental"))) | |||
| 684 | rte_compressdev_private_xform_free(uint8_t dev_id, void *priv_xform) | |||
| 685 | { | |||
| 686 | struct rte_compressdev *dev; | |||
| 687 | int ret; | |||
| 688 | ||||
| 689 | dev = rte_compressdev_get_dev(dev_id); | |||
| 690 | ||||
| 691 | if (dev == NULL((void*)0) || priv_xform == NULL((void*)0)) | |||
| 692 | return -EINVAL22; | |||
| 693 | ||||
| 694 | 	RTE_FUNC_PTR_OR_ERR_RET(*dev->dev_ops->private_xform_free, -ENOTSUP)do { if ((*dev->dev_ops->private_xform_free) == ((void* )0)) return -95; } while (0);  | |||
| 695 | ret = dev->dev_ops->private_xform_free(dev, priv_xform); | |||
| 696 | if (ret < 0) { | |||
| 697 | 		COMPRESSDEV_LOG(ERR,rte_log(4U, compressdev_logtype, "%s(): ""dev_id %d failed to free private xform: err=%d" "\n", __func__, dev_id, ret)  | |||
| 698 | 			"dev_id %d failed to free private xform: err=%d",rte_log(4U, compressdev_logtype, "%s(): ""dev_id %d failed to free private xform: err=%d" "\n", __func__, dev_id, ret)  | |||
| 699 | 			dev_id, ret)rte_log(4U, compressdev_logtype, "%s(): ""dev_id %d failed to free private xform: err=%d" "\n", __func__, dev_id, ret);  | |||
| 700 | return ret; | |||
| 701 | }; | |||
| 702 | ||||
| 703 | return 0; | |||
| 704 | } | |||
| 705 | ||||
| 706 | int __rte_experimental__attribute__((section(".text.experimental"))) | |||
| 707 | rte_compressdev_stream_create(uint8_t dev_id, | |||
| 708 | const struct rte_comp_xform *xform, | |||
| 709 | void **stream) | |||
| 710 | { | |||
| 711 | struct rte_compressdev *dev; | |||
| 712 | int ret; | |||
| 713 | ||||
| 714 | dev = rte_compressdev_get_dev(dev_id); | |||
| 715 | ||||
| 716 | if (xform == NULL((void*)0) || dev == NULL((void*)0) || stream == NULL((void*)0)) | |||
| 717 | return -EINVAL22; | |||
| 718 | ||||
| 719 | 	RTE_FUNC_PTR_OR_ERR_RET(*dev->dev_ops->stream_create, -ENOTSUP)do { if ((*dev->dev_ops->stream_create) == ((void*)0)) return -95; } while (0);  | |||
| 720 | ret = (*dev->dev_ops->stream_create)(dev, xform, stream); | |||
| 721 | if (ret < 0) { | |||
| 722 | 		COMPRESSDEV_LOG(ERR,rte_log(4U, compressdev_logtype, "%s(): ""dev_id %d failed to create stream: err=%d" "\n", __func__, dev_id, ret)  | |||
| 723 | 			"dev_id %d failed to create stream: err=%d",rte_log(4U, compressdev_logtype, "%s(): ""dev_id %d failed to create stream: err=%d" "\n", __func__, dev_id, ret)  | |||
| 724 | 			dev_id, ret)rte_log(4U, compressdev_logtype, "%s(): ""dev_id %d failed to create stream: err=%d" "\n", __func__, dev_id, ret);  | |||
| 725 | return ret; | |||
| 726 | }; | |||
| 727 | ||||
| 728 | return 0; | |||
| 729 | } | |||
| 730 | ||||
| 731 | ||||
| 732 | int __rte_experimental__attribute__((section(".text.experimental"))) | |||
| 733 | rte_compressdev_stream_free(uint8_t dev_id, void *stream) | |||
| 734 | { | |||
| 735 | struct rte_compressdev *dev; | |||
| 736 | int ret; | |||
| 737 | ||||
| 738 | dev = rte_compressdev_get_dev(dev_id); | |||
| 739 | ||||
| 740 | if (dev == NULL((void*)0) || stream == NULL((void*)0)) | |||
| 741 | return -EINVAL22; | |||
| 742 | ||||
| 743 | 	RTE_FUNC_PTR_OR_ERR_RET(*dev->dev_ops->stream_free, -ENOTSUP)do { if ((*dev->dev_ops->stream_free) == ((void*)0)) return -95; } while (0);  | |||
| 744 | ret = dev->dev_ops->stream_free(dev, stream); | |||
| 745 | if (ret < 0) { | |||
| 746 | 		COMPRESSDEV_LOG(ERR,rte_log(4U, compressdev_logtype, "%s(): ""dev_id %d failed to free stream: err=%d" "\n", __func__, dev_id, ret)  | |||
| 747 | 			"dev_id %d failed to free stream: err=%d",rte_log(4U, compressdev_logtype, "%s(): ""dev_id %d failed to free stream: err=%d" "\n", __func__, dev_id, ret)  | |||
| 748 | 			dev_id, ret)rte_log(4U, compressdev_logtype, "%s(): ""dev_id %d failed to free stream: err=%d" "\n", __func__, dev_id, ret);  | |||
| 749 | return ret; | |||
| 750 | }; | |||
| 751 | ||||
| 752 | return 0; | |||
| 753 | } | |||
| 754 | ||||
| 755 | const char * __rte_experimental__attribute__((section(".text.experimental"))) | |||
| 756 | rte_compressdev_name_get(uint8_t dev_id) | |||
| 757 | { | |||
| 758 | struct rte_compressdev *dev = rte_compressdev_get_dev(dev_id); | |||
| 759 | ||||
| 760 | if (dev == NULL((void*)0)) | |||
| 761 | return NULL((void*)0); | |||
| 762 | ||||
| 763 | return dev->data->name; | |||
| 764 | } | |||
| 765 | ||||
| 766 | RTE_INIT(rte_compressdev_log)static void __attribute__((constructor(65535), used)) rte_compressdev_log (void)  | |||
| 767 | { | |||
| 768 | compressdev_logtype = rte_log_register("lib.compressdev"); | |||
| 769 | if (compressdev_logtype >= 0) | |||
| 770 | rte_log_set_level(compressdev_logtype, RTE_LOG_NOTICE6U); | |||
| 771 | } |