X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fcrypto%2Fqat%2Fqat_device.h;h=e18c8a706752dc56ee1b8bbade88dd8332132e23;hb=91614c73b67cad33750b04b9904dd99666b9a91e;hp=0983e3c2e03290a0d479401891e0a806a1bdf3a3;hpb=a2b7cbfe51ec90c35db8cd8e91d71e941dc8fec1;p=dpdk.git diff --git a/drivers/crypto/qat/qat_device.h b/drivers/crypto/qat/qat_device.h index 0983e3c2e0..e18c8a7067 100644 --- a/drivers/crypto/qat/qat_device.h +++ b/drivers/crypto/qat/qat_device.h @@ -4,51 +4,75 @@ #ifndef _QAT_DEVICE_H_ #define _QAT_DEVICE_H_ -#include #include + #include "qat_common.h" #include "qat_logs.h" #include "adf_transport_access_macros.h" #include "qat_qp.h" -extern uint8_t cryptodev_qat_driver_id; +#define QAT_DETACHED (0) +#define QAT_ATTACHED (1) -extern int qat_sym_qp_release(struct rte_cryptodev *dev, - uint16_t queue_pair_id); +#define QAT_DEV_NAME_MAX_LEN 64 -/** private data structure for each QAT device. - * In this context a QAT device is a device offering only one service, - * so there can be more than 1 device on a pci_dev (VF), - * one for symmetric crypto, one for compression +/* + * This struct holds all the data about a QAT pci device + * including data about all services it supports. + * It contains + * - hw_data + * - config data + * - runtime data */ -struct qat_pmd_private { - unsigned int max_nb_queue_pairs; - /**< Max number of queue pairs supported by device */ - unsigned int max_nb_sessions; - /**< Max number of sessions supported by device */ - enum qat_device_gen qat_dev_gen; - /**< QAT device generation */ - const struct rte_cryptodev_capabilities *qat_dev_capabilities; - /* QAT device capabilities */ +struct qat_sym_dev_private; +struct qat_pci_device { + + /* Data used by all services */ + char name[QAT_DEV_NAME_MAX_LEN]; + /**< Name of qat pci device */ + uint8_t qat_dev_id; + /**< Device instance for this qat pci device */ struct rte_pci_device *pci_dev; /**< PCI information. */ - uint8_t dev_id; - /**< Device ID for this instance */ + enum qat_device_gen qat_dev_gen; + /**< QAT device generation */ + rte_spinlock_t arb_csr_lock; + /**< lock to protect accesses to the arbiter CSR */ + __extension__ + uint8_t attached : 1; + /**< Flag indicating the device is attached */ + + struct qat_qp *qps_in_use[QAT_MAX_SERVICES][ADF_MAX_QPS_ON_ANY_SERVICE]; + /**< links to qps set up for each service, index same as on API */ + + /* Data relating to symmetric crypto service */ + struct qat_sym_dev_private *sym_dev; + /**< link back to cryptodev private data */ + struct rte_device sym_rte_dev; + /**< This represents the crypto subset of this pci device. + * Register with this rather than with the one in + * pci_dev so that its driver can have a crypto-specific name + */ + + /* Data relating to compression service */ + + /* Data relating to asymmetric crypto service */ + }; struct qat_gen_hw_data { enum qat_device_gen dev_gen; - const struct qat_qp_hw_data (*qp_hw_data)[ADF_MAX_QPS_PER_BUNDLE]; + const struct qat_qp_hw_data (*qp_hw_data)[ADF_MAX_QPS_ON_ANY_SERVICE]; }; -extern struct qat_gen_hw_data qp_gen_config[]; +extern struct qat_gen_hw_data qat_gen_config[]; + +struct qat_pci_device * +qat_pci_device_allocate(struct rte_pci_device *pci_dev); +int +qat_pci_device_release(struct rte_pci_device *pci_dev); +struct qat_pci_device * +qat_get_qat_dev_from_pci_dev(struct rte_pci_device *pci_dev); -int qat_dev_config(struct rte_cryptodev *dev, - struct rte_cryptodev_config *config); -int qat_dev_start(struct rte_cryptodev *dev); -void qat_dev_stop(struct rte_cryptodev *dev); -int qat_dev_close(struct rte_cryptodev *dev); -void qat_dev_info_get(struct rte_cryptodev *dev, - struct rte_cryptodev_info *info); #endif /* _QAT_DEVICE_H_ */