X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fcommon%2Fqat%2Fqat_device.h;h=e6337c688dbbc8dc74dfa322a8c3e3d1a32171be;hb=38f9369d2496f66ca19b0389dfbc622f8e5efd8a;hp=9599fc596178c399813482f412278d737b3897d8;hpb=c0c90bc4cade706f9ea271b1235f05f78870fe55;p=dpdk.git diff --git a/drivers/common/qat/qat_device.h b/drivers/common/qat/qat_device.h index 9599fc5961..e6337c688d 100644 --- a/drivers/common/qat/qat_device.h +++ b/drivers/common/qat/qat_device.h @@ -16,6 +16,53 @@ #define QAT_DEV_NAME_MAX_LEN 64 +#define SYM_ENQ_THRESHOLD_NAME "qat_sym_enq_threshold" +#define ASYM_ENQ_THRESHOLD_NAME "qat_asym_enq_threshold" +#define COMP_ENQ_THRESHOLD_NAME "qat_comp_enq_threshold" +#define MAX_QP_THRESHOLD_SIZE 32 + +struct qat_dev_cmd_param { + const char *name; + uint16_t val; +}; + +enum qat_comp_num_im_buffers { + QAT_NUM_INTERM_BUFS_GEN1 = 12, + QAT_NUM_INTERM_BUFS_GEN2 = 20, + QAT_NUM_INTERM_BUFS_GEN3 = 20 +}; + +struct qat_device_info { + const struct rte_memzone *mz; + /**< mz to store the qat_pci_device so it can be + * shared across processes + */ + struct rte_pci_device *pci_dev; + struct rte_device sym_rte_dev; + /**< This represents the crypto sym 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 + */ + + struct rte_device asym_rte_dev; + /**< This represents the crypto asym 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 + */ + + struct rte_device comp_rte_dev; + /**< This represents the compression subset of this pci device. + * Register with this rather than with the one in + * pci_dev so that its driver can have a compression-specific name + */ +}; + +extern struct qat_device_info qat_pci_devs[]; + +struct qat_sym_dev_private; +struct qat_asym_dev_private; +struct qat_comp_dev_private; + /* * This struct holds all the data about a QAT pci device * including data about all services it supports. @@ -23,26 +70,20 @@ * - hw_data * - config data * - runtime data + * Note: as this data can be shared in a multi-process scenario, + * any pointers in it must also point to shared memory. */ -struct qat_sym_dev_private; -struct qat_comp_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. */ + /**< Id of device instance for this qat pci device */ 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 */ @@ -50,42 +91,45 @@ struct qat_pci_device { /* 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 */ - struct qat_comp_dev_private *comp_dev; - /**< link back to compressdev private data */ + int qat_sym_driver_id; + /**< Symmetric driver id used by this device */ /* Data relating to asymmetric crypto service */ + struct qat_asym_dev_private *asym_dev; + /**< link back to cryptodev private data */ + + int qat_asym_driver_id; + /**< Symmetric driver id used by this device */ + /* Data relating to compression service */ + struct qat_comp_dev_private *comp_dev; + /**< link back to compressdev private data */ }; struct qat_gen_hw_data { enum qat_device_gen dev_gen; const struct qat_qp_hw_data (*qp_hw_data)[ADF_MAX_QPS_ON_ANY_SERVICE]; + enum qat_comp_num_im_buffers comp_num_im_bufs_required; }; 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); +qat_pci_device_allocate(struct rte_pci_device *pci_dev, + struct qat_dev_cmd_param *qat_dev_cmd_param); struct qat_pci_device * qat_get_qat_dev_from_pci_dev(struct rte_pci_device *pci_dev); /* declaration needed for weak functions */ int -qat_sym_dev_create(struct qat_pci_device *qat_pci_dev __rte_unused); +qat_sym_dev_create(struct qat_pci_device *qat_pci_dev __rte_unused, + struct qat_dev_cmd_param *qat_dev_cmd_param); int -qat_asym_dev_create(struct qat_pci_device *qat_pci_dev __rte_unused); +qat_asym_dev_create(struct qat_pci_device *qat_pci_dev __rte_unused, + struct qat_dev_cmd_param *qat_dev_cmd_param); int qat_sym_dev_destroy(struct qat_pci_device *qat_pci_dev __rte_unused); @@ -94,7 +138,8 @@ int qat_asym_dev_destroy(struct qat_pci_device *qat_pci_dev __rte_unused); int -qat_comp_dev_create(struct qat_pci_device *qat_pci_dev __rte_unused); +qat_comp_dev_create(struct qat_pci_device *qat_pci_dev __rte_unused, + struct qat_dev_cmd_param *qat_dev_cmd_param); int qat_comp_dev_destroy(struct qat_pci_device *qat_pci_dev __rte_unused);