> Add crypto device operations for zsda devices. > > Signed-off-by: Hanxiao Li <li.hanx...@zte.com.cn> > --- > drivers/crypto/zsda/zsda_sym_pmd.c | 94 ++++++++++++++++++++++++++++-- > 1 file changed, 89 insertions(+), 5 deletions(-) > > diff --git a/drivers/crypto/zsda/zsda_sym_pmd.c > b/drivers/crypto/zsda/zsda_sym_pmd.c > index 0f4bf41958..22c8d482fb 100644 > --- a/drivers/crypto/zsda/zsda_sym_pmd.c > +++ b/drivers/crypto/zsda/zsda_sym_pmd.c > @@ -8,13 +8,95 @@ > > uint8_t zsda_sym_driver_id; > > +static int > +zsda_sym_dev_config(__rte_unused struct rte_cryptodev *dev, > + __rte_unused struct rte_cryptodev_config *config) > +{ > + return ZSDA_SUCCESS; > +} > + > +static int > +zsda_sym_dev_start(struct rte_cryptodev *dev) > +{ > + struct zsda_sym_dev_private *sym_dev = dev->data->dev_private; > + int ret; > + > + ret = zsda_queue_start(sym_dev->zsda_pci_dev->pci_dev); > + > + return ret; > +} > + > +static void > +zsda_sym_dev_stop(struct rte_cryptodev *dev) > +{ > + struct zsda_sym_dev_private *sym_dev = dev->data->dev_private; > + > + zsda_queue_stop(sym_dev->zsda_pci_dev->pci_dev); > +} > + > +static int > +zsda_sym_qp_release(struct rte_cryptodev *dev, uint16_t queue_pair_id) > +{ > + return zsda_queue_pair_release( > + (struct zsda_qp **)&(dev->data->queue_pairs[queue_pair_id])); > +} > + > +static int > +zsda_sym_dev_close(struct rte_cryptodev *dev) > +{ > + int ret = ZSDA_SUCCESS; > + uint16_t i; > + > + for (i = 0; i < dev->data->nb_queue_pairs; i++) > + ret |= zsda_sym_qp_release(dev, i); > + > + return ret; > +} > + > +static uint16_t > +zsda_sym_max_nb_qps(void) > +{ > + uint16_t encrypt = zsda_nb_qps.encrypt; > + uint16_t decrypt = zsda_nb_qps.decrypt; > + uint16_t hash = zsda_nb_qps.hash; > + uint16_t min = 0; > + > + if ((encrypt == MAX_QPS_ON_FUNCTION) || > + (decrypt == MAX_QPS_ON_FUNCTION) || > + (hash == MAX_QPS_ON_FUNCTION)) > + min = MAX_QPS_ON_FUNCTION; > + else { > + min = (encrypt < decrypt) ? encrypt : decrypt; > + min = (min < hash) ? min : hash; > + } > + > + if (min == 0) > + return MAX_QPS_ON_FUNCTION; > + return min; > +} > + > +static void > +zsda_sym_dev_info_get(struct rte_cryptodev *dev, > + struct rte_cryptodev_info *info) > +{ > + struct zsda_sym_dev_private *sym_dev_priv = dev->data->dev_private; > + > + if (info != NULL) { > + info->max_nb_queue_pairs = zsda_sym_max_nb_qps(); > + info->feature_flags = dev->feature_flags; > + info->capabilities = sym_dev_priv->zsda_dev_capabilities; > + info->driver_id = zsda_sym_driver_id; > + info->sym.max_nb_sessions = 0; > + } > +} > + > static struct rte_cryptodev_ops crypto_zsda_ops = { > > - .dev_configure = NULL, > - .dev_start = NULL, > - .dev_stop = NULL, > - .dev_close = NULL, > - .dev_infos_get = NULL, > + .dev_configure = zsda_sym_dev_config, > + .dev_start = zsda_sym_dev_start, > + .dev_stop = zsda_sym_dev_stop, > + .dev_close = zsda_sym_dev_close, > + .dev_infos_get = zsda_sym_dev_info_get,
I see that _sym_ prefix is added for all the APIs. In the future, you may add support for asym, but these APIs are likely to be same. My suggestion is to drop sym from the file name as well as APIs. You may use word crypto for APIs(like create/destroy) used in common to identify between crypto and compression APIs. For above static ops, there is no need for any prefix. > > .stats_get = NULL, > .stats_reset = NULL, > @@ -104,6 +186,8 @@ zsda_sym_dev_destroy(struct zsda_pci_device > *zsda_pci_dev) > if (rte_eal_process_type() == RTE_PROC_PRIMARY) > rte_memzone_free(sym_dev_priv->capa_mz); > > + zsda_sym_dev_close(sym_dev_priv->cryptodev); > + I think this was missed in previous patch. Please move it there. > rte_cryptodev_pmd_destroy(sym_dev_priv->cryptodev); > zsda_devs[zsda_pci_dev->zsda_dev_id].sym_rte_dev.name = NULL; > zsda_pci_dev->sym_dev_priv = NULL; > -- > 2.27.0