#include <linux/module.h>
#include <linux/pci.h>
#include <linux/utsname.h>
#include <linux/version.h>
#include <rdma/ib_user_verbs.h>
#include <rdma/uverbs_ioctl.h>
#include "efa.h"
#define PCI_DEV_ID_EFA0_VF …
#define PCI_DEV_ID_EFA1_VF …
#define PCI_DEV_ID_EFA2_VF …
#define PCI_DEV_ID_EFA3_VF …
static const struct pci_device_id efa_pci_tbl[] = …;
MODULE_AUTHOR(…) …;
MODULE_LICENSE(…) …;
MODULE_DESCRIPTION(…);
MODULE_DEVICE_TABLE(pci, efa_pci_tbl);
#define EFA_REG_BAR …
#define EFA_MEM_BAR …
#define EFA_BASE_BAR_MASK …
#define EFA_AENQ_ENABLED_GROUPS …
extern const struct uapi_definition efa_uapi_defs[];
static void unimplemented_aenq_handler(void *data,
struct efa_admin_aenq_entry *aenq_e)
{ … }
static void efa_keep_alive(void *data, struct efa_admin_aenq_entry *aenq_e)
{ … }
static struct efa_aenq_handlers aenq_handlers = …;
static void efa_release_bars(struct efa_dev *dev, int bars_mask)
{ … }
static void efa_process_comp_eqe(struct efa_dev *dev, struct efa_admin_eqe *eqe)
{ … }
static void efa_process_eqe(struct efa_com_eq *eeq, struct efa_admin_eqe *eqe)
{ … }
static irqreturn_t efa_intr_msix_comp(int irq, void *data)
{ … }
static irqreturn_t efa_intr_msix_mgmnt(int irq, void *data)
{ … }
static int efa_request_irq(struct efa_dev *dev, struct efa_irq *irq)
{ … }
static void efa_setup_comp_irq(struct efa_dev *dev, struct efa_eq *eq,
int vector)
{ … }
static void efa_free_irq(struct efa_dev *dev, struct efa_irq *irq)
{ … }
static void efa_setup_mgmnt_irq(struct efa_dev *dev)
{ … }
static int efa_set_mgmnt_irq(struct efa_dev *dev)
{ … }
static int efa_request_doorbell_bar(struct efa_dev *dev)
{ … }
static void efa_release_doorbell_bar(struct efa_dev *dev)
{ … }
static void efa_update_hw_hints(struct efa_dev *dev,
struct efa_com_get_hw_hints_result *hw_hints)
{ … }
static void efa_stats_init(struct efa_dev *dev)
{ … }
static void efa_set_host_info(struct efa_dev *dev)
{ … }
static void efa_destroy_eq(struct efa_dev *dev, struct efa_eq *eq)
{ … }
static int efa_create_eq(struct efa_dev *dev, struct efa_eq *eq, u8 msix_vec)
{ … }
static int efa_create_eqs(struct efa_dev *dev)
{ … }
static void efa_destroy_eqs(struct efa_dev *dev)
{ … }
static const struct ib_device_ops efa_dev_ops = …;
static int efa_ib_device_add(struct efa_dev *dev)
{ … }
static void efa_ib_device_remove(struct efa_dev *dev)
{ … }
static void efa_disable_msix(struct efa_dev *dev)
{ … }
static int efa_enable_msix(struct efa_dev *dev)
{ … }
static int efa_device_init(struct efa_com_dev *edev, struct pci_dev *pdev)
{ … }
static struct efa_dev *efa_probe_device(struct pci_dev *pdev)
{ … }
static void efa_remove_device(struct pci_dev *pdev)
{ … }
static int efa_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
{ … }
static void efa_remove(struct pci_dev *pdev)
{ … }
static void efa_shutdown(struct pci_dev *pdev)
{ … }
static struct pci_driver efa_pci_driver = …;
module_pci_driver(…) …;