1 
   2 
   3 
   4 
   5 
   6 
   7 
   8 
   9 
  10 
  11 
  12 
  13 
  14 #ifndef BE_ROCE_H
  15 #define BE_ROCE_H
  16 
  17 #include <linux/pci.h>
  18 #include <linux/netdevice.h>
  19 
  20 #define BE_ROCE_ABI_VERSION     1
  21 
  22 struct ocrdma_dev;
  23 
  24 enum be_interrupt_mode {
  25         BE_INTERRUPT_MODE_MSIX  = 0,
  26         BE_INTERRUPT_MODE_INTX  = 1,
  27         BE_INTERRUPT_MODE_MSI   = 2,
  28 };
  29 
  30 #define MAX_MSIX_VECTORS                32
  31 struct be_dev_info {
  32         u8 __iomem *db;
  33         u64 unmapped_db;
  34         u32 db_page_size;
  35         u32 db_total_size;
  36         u64 dpp_unmapped_addr;
  37         u32 dpp_unmapped_len;
  38         struct pci_dev *pdev;
  39         struct net_device *netdev;
  40         u8 mac_addr[ETH_ALEN];
  41         u32 dev_family;
  42         enum be_interrupt_mode intr_mode;
  43         struct {
  44                 int num_vectors;
  45                 int start_vector;
  46                 u32 vector_list[MAX_MSIX_VECTORS];
  47         } msix;
  48 };
  49 
  50 
  51 struct ocrdma_driver {
  52         unsigned char name[32];
  53         u32 be_abi_version;
  54         struct ocrdma_dev *(*add) (struct be_dev_info *dev_info);
  55         void (*remove) (struct ocrdma_dev *);
  56         void (*state_change_handler) (struct ocrdma_dev *, u32 new_state);
  57 };
  58 
  59 enum be_roce_event {
  60         BE_DEV_SHUTDOWN = 2
  61 };
  62 
  63 
  64 
  65 
  66 int be_roce_register_driver(struct ocrdma_driver *drv);
  67 void be_roce_unregister_driver(struct ocrdma_driver *drv);
  68 
  69 
  70 int be_roce_mcc_cmd(void *netdev_handle, void *wrb_payload,
  71                     int wrb_payload_size, u16 *cmd_status, u16 *ext_status);
  72 
  73 #endif