root/drivers/net/ethernet/emulex/benet/be_roce.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


   1 /* SPDX-License-Identifier: GPL-2.0-only */
   2 /*
   3  * Copyright (C) 2005 - 2016 Broadcom
   4  * All rights reserved.
   5  *
   6  * Contact Information:
   7  * linux-drivers@emulex.com
   8  *
   9  * Emulex
  10  * 3333 Susan Street
  11  * Costa Mesa, CA 92626
  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 /* ocrdma driver register's the callback functions with nic driver. */
  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 /* APIs for RoCE driver to register callback handlers,
  64  * which will be invoked when device is added, removed, ifup, ifdown
  65  */
  66 int be_roce_register_driver(struct ocrdma_driver *drv);
  67 void be_roce_unregister_driver(struct ocrdma_driver *drv);
  68 
  69 /* API for RoCE driver to issue mailbox commands */
  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 /* BE_ROCE_H */

/* [<][>][^][v][top][bottom][index][help] */