#include <sys/queue.h>
+#include <rte_spinlock.h>
#include <rte_bus_vdev.h>
#include "bcmfs_logs.h"
+#include "bcmfs_qp.h"
/* max number of dev nodes */
#define BCMFS_MAX_NODES 4
BCMFS_UNKNOWN
};
+/* A table to store registered queue pair operations */
+struct bcmfs_hw_queue_pair_ops_table {
+ rte_spinlock_t tl;
+ /* Number of used ops structs in the table. */
+ uint32_t num_ops;
+ /* Storage for all possible ops structs. */
+ struct bcmfs_hw_queue_pair_ops qp_ops[BCMFS_MAX_NODES];
+};
+
+/* HW queue pair ops register function */
+int
+bcmfs_hw_queue_pair_register_ops(const struct bcmfs_hw_queue_pair_ops *qp_ops);
+
struct bcmfs_device {
TAILQ_ENTRY(bcmfs_device) next;
/* Directory path for vfio */
uint8_t *mmap_addr;
/* mapped size */
uint32_t mmap_size;
+ /* max number of h/w queue pairs detected */
+ uint16_t max_hw_qps;
+ /* current qpairs in use */
+ struct bcmfs_qp *qps_in_use[BCMFS_MAX_HW_QUEUES];
+ /* queue pair ops exported by symmetric crypto hw */
+ struct bcmfs_hw_queue_pair_ops *sym_hw_qp_ops;
+ /* a cryptodevice attached to bcmfs device */
+ struct rte_cryptodev *cdev;
+ /* a rte_device to register with cryptodev */
+ struct rte_device sym_rte_dev;
+ /* private info to keep with cryptodev */
+ struct bcmfs_sym_dev_private *sym_dev;
};
#endif /* _BCMFS_DEVICE_H_ */