#include <linux/module.h>
#include <rdma/ib_verbs.h>
#include <rdma/ib_addr.h>
#include <rdma/ib_user_verbs.h>
#include <rdma/iw_cm.h>
#include <rdma/ib_mad.h>
#include <linux/netdevice.h>
#include <linux/iommu.h>
#include <linux/pci.h>
#include <net/addrconf.h>
#include <linux/qed/qed_chain.h>
#include <linux/qed/qed_if.h>
#include "qedr.h"
#include "verbs.h"
#include <rdma/qedr-abi.h>
#include "qedr_iw_cm.h"
MODULE_DESCRIPTION(…) …;
MODULE_AUTHOR(…) …;
MODULE_LICENSE(…) …;
#define QEDR_WQ_MULTIPLIER_DFT …
static void qedr_ib_dispatch_event(struct qedr_dev *dev, u32 port_num,
enum ib_event_type type)
{ … }
static enum rdma_link_layer qedr_link_layer(struct ib_device *device,
u32 port_num)
{ … }
static void qedr_get_dev_fw_str(struct ib_device *ibdev, char *str)
{ … }
static int qedr_roce_port_immutable(struct ib_device *ibdev, u32 port_num,
struct ib_port_immutable *immutable)
{ … }
static int qedr_iw_port_immutable(struct ib_device *ibdev, u32 port_num,
struct ib_port_immutable *immutable)
{ … }
static ssize_t hw_rev_show(struct device *device, struct device_attribute *attr,
char *buf)
{ … }
static DEVICE_ATTR_RO(hw_rev);
static ssize_t hca_type_show(struct device *device,
struct device_attribute *attr, char *buf)
{ … }
static DEVICE_ATTR_RO(hca_type);
static struct attribute *qedr_attributes[] = …;
static const struct attribute_group qedr_attr_group = …;
static const struct ib_device_ops qedr_iw_dev_ops = …;
static int qedr_iw_register_device(struct qedr_dev *dev)
{ … }
static const struct ib_device_ops qedr_roce_dev_ops = …;
static void qedr_roce_register_device(struct qedr_dev *dev)
{ … }
static const struct ib_device_ops qedr_dev_ops = …;
static int qedr_register_device(struct qedr_dev *dev)
{ … }
static int qedr_alloc_mem_sb(struct qedr_dev *dev,
struct qed_sb_info *sb_info, u16 sb_id)
{ … }
static void qedr_free_mem_sb(struct qedr_dev *dev,
struct qed_sb_info *sb_info, int sb_id)
{ … }
static void qedr_free_resources(struct qedr_dev *dev)
{ … }
static int qedr_alloc_resources(struct qedr_dev *dev)
{ … }
static void qedr_pci_set_atomic(struct qedr_dev *dev, struct pci_dev *pdev)
{ … }
static const struct qed_rdma_ops *qed_ops;
#define HILO_U64(hi, lo) …
static irqreturn_t qedr_irq_handler(int irq, void *handle)
{ … }
static void qedr_sync_free_irqs(struct qedr_dev *dev)
{ … }
static int qedr_req_msix_irqs(struct qedr_dev *dev)
{ … }
static int qedr_setup_irqs(struct qedr_dev *dev)
{ … }
static int qedr_set_device_attr(struct qedr_dev *dev)
{ … }
static void qedr_unaffiliated_event(void *context, u8 event_code)
{ … }
static void qedr_affiliated_event(void *context, u8 e_code, void *fw_handle)
{ … }
static int qedr_init_hw(struct qedr_dev *dev)
{ … }
static void qedr_stop_hw(struct qedr_dev *dev)
{ … }
static struct qedr_dev *qedr_add(struct qed_dev *cdev, struct pci_dev *pdev,
struct net_device *ndev)
{ … }
static void qedr_remove(struct qedr_dev *dev)
{ … }
static void qedr_close(struct qedr_dev *dev)
{ … }
static void qedr_shutdown(struct qedr_dev *dev)
{ … }
static void qedr_open(struct qedr_dev *dev)
{ … }
static void qedr_mac_address_change(struct qedr_dev *dev)
{ … }
static void qedr_notify(struct qedr_dev *dev, enum qede_rdma_event event)
{ … }
static struct qedr_driver qedr_drv = …;
static int __init qedr_init_module(void)
{ … }
static void __exit qedr_exit_module(void)
{ … }
module_init(…) …;
module_exit(qedr_exit_module);