#include <linux/interrupt.h>
#include <linux/module.h>
#include "cptvf.h"
#define DRV_NAME …
#define DRV_VERSION …
struct cptvf_wqe { … };
struct cptvf_wqe_info { … };
static void vq_work_handler(unsigned long data)
{ … }
static int init_worker_threads(struct cpt_vf *cptvf)
{ … }
static void cleanup_worker_threads(struct cpt_vf *cptvf)
{ … }
static void free_pending_queues(struct pending_qinfo *pqinfo)
{ … }
static int alloc_pending_queues(struct pending_qinfo *pqinfo, u32 qlen,
u32 nr_queues)
{ … }
static int init_pending_queues(struct cpt_vf *cptvf, u32 qlen, u32 nr_queues)
{ … }
static void cleanup_pending_queues(struct cpt_vf *cptvf)
{ … }
static void free_command_queues(struct cpt_vf *cptvf,
struct command_qinfo *cqinfo)
{ … }
static int alloc_command_queues(struct cpt_vf *cptvf,
struct command_qinfo *cqinfo, size_t cmd_size,
u32 qlen)
{ … }
static int init_command_queues(struct cpt_vf *cptvf, u32 qlen)
{ … }
static void cleanup_command_queues(struct cpt_vf *cptvf)
{ … }
static void cptvf_sw_cleanup(struct cpt_vf *cptvf)
{ … }
static int cptvf_sw_init(struct cpt_vf *cptvf, u32 qlen, u32 nr_queues)
{ … }
static void cptvf_free_irq_affinity(struct cpt_vf *cptvf, int vec)
{ … }
static void cptvf_write_vq_ctl(struct cpt_vf *cptvf, bool val)
{ … }
void cptvf_write_vq_doorbell(struct cpt_vf *cptvf, u32 val)
{ … }
static void cptvf_write_vq_inprog(struct cpt_vf *cptvf, u8 val)
{ … }
static void cptvf_write_vq_done_numwait(struct cpt_vf *cptvf, u32 val)
{ … }
static void cptvf_write_vq_done_timewait(struct cpt_vf *cptvf, u16 time)
{ … }
static void cptvf_enable_swerr_interrupts(struct cpt_vf *cptvf)
{ … }
static void cptvf_enable_mbox_interrupts(struct cpt_vf *cptvf)
{ … }
static void cptvf_enable_done_interrupts(struct cpt_vf *cptvf)
{ … }
static void cptvf_clear_dovf_intr(struct cpt_vf *cptvf)
{ … }
static void cptvf_clear_irde_intr(struct cpt_vf *cptvf)
{ … }
static void cptvf_clear_nwrp_intr(struct cpt_vf *cptvf)
{ … }
static void cptvf_clear_mbox_intr(struct cpt_vf *cptvf)
{ … }
static void cptvf_clear_swerr_intr(struct cpt_vf *cptvf)
{ … }
static u64 cptvf_read_vf_misc_intr_status(struct cpt_vf *cptvf)
{ … }
static irqreturn_t cptvf_misc_intr_handler(int irq, void *cptvf_irq)
{ … }
static inline struct cptvf_wqe *get_cptvf_vq_wqe(struct cpt_vf *cptvf,
int qno)
{ … }
static inline u32 cptvf_read_vq_done_count(struct cpt_vf *cptvf)
{ … }
static inline void cptvf_write_vq_done_ack(struct cpt_vf *cptvf,
u32 ackcnt)
{ … }
static irqreturn_t cptvf_done_intr_handler(int irq, void *cptvf_irq)
{ … }
static void cptvf_set_irq_affinity(struct cpt_vf *cptvf, int vec)
{ … }
static void cptvf_write_vq_saddr(struct cpt_vf *cptvf, u64 val)
{ … }
static void cptvf_device_init(struct cpt_vf *cptvf)
{ … }
static int cptvf_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
{ … }
static void cptvf_remove(struct pci_dev *pdev)
{ … }
static void cptvf_shutdown(struct pci_dev *pdev)
{ … }
static const struct pci_device_id cptvf_id_table[] = …;
static struct pci_driver cptvf_pci_driver = …;
module_pci_driver(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;
MODULE_VERSION(…);
MODULE_DEVICE_TABLE(pci, cptvf_id_table);