1 /* SPDX-License-Identifier: BSD-3-Clause 2 * Copyright(C) 2021 Marvell. 3 */ 4 5 #include "eventdev_pmd.h" 6 #include "rte_eventdev.h" 7 8 static uint16_t 9 dummy_event_enqueue(__rte_unused void *port, 10 __rte_unused const struct rte_event *ev) 11 { 12 RTE_EDEV_LOG_ERR( 13 "event enqueue requested for unconfigured event device"); 14 return 0; 15 } 16 17 static uint16_t 18 dummy_event_enqueue_burst(__rte_unused void *port, 19 __rte_unused const struct rte_event ev[], 20 __rte_unused uint16_t nb_events) 21 { 22 RTE_EDEV_LOG_ERR( 23 "event enqueue burst requested for unconfigured event device"); 24 return 0; 25 } 26 27 static uint16_t 28 dummy_event_dequeue(__rte_unused void *port, __rte_unused struct rte_event *ev, 29 __rte_unused uint64_t timeout_ticks) 30 { 31 RTE_EDEV_LOG_ERR( 32 "event dequeue requested for unconfigured event device"); 33 return 0; 34 } 35 36 static uint16_t 37 dummy_event_dequeue_burst(__rte_unused void *port, 38 __rte_unused struct rte_event ev[], 39 __rte_unused uint16_t nb_events, 40 __rte_unused uint64_t timeout_ticks) 41 { 42 RTE_EDEV_LOG_ERR( 43 "event dequeue burst requested for unconfigured event device"); 44 return 0; 45 } 46 47 static void 48 dummy_event_maintain(__rte_unused void *port, __rte_unused int op) 49 { 50 RTE_EDEV_LOG_ERR( 51 "maintenance requested for unconfigured event device"); 52 } 53 54 static uint16_t 55 dummy_event_tx_adapter_enqueue(__rte_unused void *port, 56 __rte_unused struct rte_event ev[], 57 __rte_unused uint16_t nb_events) 58 { 59 RTE_EDEV_LOG_ERR( 60 "event Tx adapter enqueue requested for unconfigured event device"); 61 return 0; 62 } 63 64 static uint16_t 65 dummy_event_tx_adapter_enqueue_same_dest(__rte_unused void *port, 66 __rte_unused struct rte_event ev[], 67 __rte_unused uint16_t nb_events) 68 { 69 RTE_EDEV_LOG_ERR( 70 "event Tx adapter enqueue same destination requested for unconfigured event device"); 71 return 0; 72 } 73 74 static uint16_t 75 dummy_event_crypto_adapter_enqueue(__rte_unused void *port, 76 __rte_unused struct rte_event ev[], 77 __rte_unused uint16_t nb_events) 78 { 79 RTE_EDEV_LOG_ERR( 80 "event crypto adapter enqueue requested for unconfigured event device"); 81 return 0; 82 } 83 84 static uint16_t 85 dummy_event_dma_adapter_enqueue(__rte_unused void *port, __rte_unused struct rte_event ev[], 86 __rte_unused uint16_t nb_events) 87 { 88 RTE_EDEV_LOG_ERR("event DMA adapter enqueue requested for unconfigured event device"); 89 return 0; 90 } 91 92 static int 93 dummy_event_port_profile_switch(__rte_unused void *port, __rte_unused uint8_t profile_id) 94 { 95 RTE_EDEV_LOG_ERR("change profile requested for unconfigured event device"); 96 return -EINVAL; 97 } 98 99 static int 100 dummy_event_port_preschedule_modify(__rte_unused void *port, 101 __rte_unused enum rte_event_dev_preschedule_type preschedule) 102 { 103 RTE_EDEV_LOG_ERR("modify pre-schedule requested for unconfigured event device"); 104 return -EINVAL; 105 } 106 107 static int 108 dummy_event_port_preschedule_modify_hint( 109 __rte_unused void *port, __rte_unused enum rte_event_dev_preschedule_type preschedule) 110 { 111 return -ENOTSUP; 112 } 113 114 static void 115 dummy_event_port_preschedule(__rte_unused void *port, 116 __rte_unused enum rte_event_dev_preschedule_type preschedule) 117 { 118 RTE_EDEV_LOG_ERR("pre-schedule requested for unconfigured event device"); 119 } 120 121 static void 122 dummy_event_port_preschedule_hint(__rte_unused void *port, 123 __rte_unused enum rte_event_dev_preschedule_type preschedule) 124 { 125 } 126 127 void 128 event_dev_fp_ops_reset(struct rte_event_fp_ops *fp_op) 129 { 130 static void *dummy_data[RTE_MAX_QUEUES_PER_PORT]; 131 static const struct rte_event_fp_ops dummy = { 132 .enqueue = dummy_event_enqueue, 133 .enqueue_burst = dummy_event_enqueue_burst, 134 .enqueue_new_burst = dummy_event_enqueue_burst, 135 .enqueue_forward_burst = dummy_event_enqueue_burst, 136 .dequeue = dummy_event_dequeue, 137 .dequeue_burst = dummy_event_dequeue_burst, 138 .maintain = dummy_event_maintain, 139 .txa_enqueue = dummy_event_tx_adapter_enqueue, 140 .txa_enqueue_same_dest = dummy_event_tx_adapter_enqueue_same_dest, 141 .ca_enqueue = dummy_event_crypto_adapter_enqueue, 142 .dma_enqueue = dummy_event_dma_adapter_enqueue, 143 .profile_switch = dummy_event_port_profile_switch, 144 .preschedule_modify = dummy_event_port_preschedule_modify, 145 .preschedule = dummy_event_port_preschedule, 146 .data = dummy_data, 147 }; 148 149 *fp_op = dummy; 150 } 151 152 void 153 event_dev_fp_ops_set(struct rte_event_fp_ops *fp_op, 154 const struct rte_eventdev *dev) 155 { 156 fp_op->enqueue = dev->enqueue; 157 fp_op->enqueue_burst = dev->enqueue_burst; 158 fp_op->enqueue_new_burst = dev->enqueue_new_burst; 159 fp_op->enqueue_forward_burst = dev->enqueue_forward_burst; 160 fp_op->dequeue = dev->dequeue; 161 fp_op->dequeue_burst = dev->dequeue_burst; 162 fp_op->maintain = dev->maintain; 163 fp_op->txa_enqueue = dev->txa_enqueue; 164 fp_op->txa_enqueue_same_dest = dev->txa_enqueue_same_dest; 165 fp_op->ca_enqueue = dev->ca_enqueue; 166 fp_op->dma_enqueue = dev->dma_enqueue; 167 fp_op->profile_switch = dev->profile_switch; 168 fp_op->preschedule_modify = dev->preschedule_modify; 169 fp_op->preschedule = dev->preschedule; 170 fp_op->data = dev->data->ports; 171 172 if (fp_op->preschedule_modify == NULL) 173 fp_op->preschedule_modify = dummy_event_port_preschedule_modify_hint; 174 175 if (fp_op->preschedule == NULL) 176 fp_op->preschedule = dummy_event_port_preschedule_hint; 177 } 178