root/drivers/net/ethernet/pensando/ionic/ionic.h

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

INCLUDED FROM


   1 /* SPDX-License-Identifier: GPL-2.0 */
   2 /* Copyright(c) 2017 - 2019 Pensando Systems, Inc */
   3 
   4 #ifndef _IONIC_H_
   5 #define _IONIC_H_
   6 
   7 struct ionic_lif;
   8 
   9 #include "ionic_if.h"
  10 #include "ionic_dev.h"
  11 #include "ionic_devlink.h"
  12 
  13 #define IONIC_DRV_NAME          "ionic"
  14 #define IONIC_DRV_DESCRIPTION   "Pensando Ethernet NIC Driver"
  15 #define IONIC_DRV_VERSION       "0.15.0-k"
  16 
  17 #define PCI_VENDOR_ID_PENSANDO                  0x1dd8
  18 
  19 #define PCI_DEVICE_ID_PENSANDO_IONIC_ETH_PF     0x1002
  20 #define PCI_DEVICE_ID_PENSANDO_IONIC_ETH_VF     0x1003
  21 
  22 #define IONIC_SUBDEV_ID_NAPLES_25       0x4000
  23 #define IONIC_SUBDEV_ID_NAPLES_100_4    0x4001
  24 #define IONIC_SUBDEV_ID_NAPLES_100_8    0x4002
  25 
  26 #define DEVCMD_TIMEOUT  10
  27 
  28 struct ionic {
  29         struct pci_dev *pdev;
  30         struct device *dev;
  31         struct devlink_port dl_port;
  32         struct ionic_dev idev;
  33         struct mutex dev_cmd_lock;      /* lock for dev_cmd operations */
  34         struct dentry *dentry;
  35         struct ionic_dev_bar bars[IONIC_BARS_MAX];
  36         unsigned int num_bars;
  37         struct ionic_identity ident;
  38         struct list_head lifs;
  39         struct ionic_lif *master_lif;
  40         unsigned int nnqs_per_lif;
  41         unsigned int neqs_per_lif;
  42         unsigned int ntxqs_per_lif;
  43         unsigned int nrxqs_per_lif;
  44         DECLARE_BITMAP(lifbits, IONIC_LIFS_MAX);
  45         unsigned int nintrs;
  46         DECLARE_BITMAP(intrs, IONIC_INTR_CTRL_REGS_MAX);
  47         struct work_struct nb_work;
  48         struct notifier_block nb;
  49 };
  50 
  51 struct ionic_admin_ctx {
  52         struct completion work;
  53         union ionic_adminq_cmd cmd;
  54         union ionic_adminq_comp comp;
  55 };
  56 
  57 int ionic_napi(struct napi_struct *napi, int budget, ionic_cq_cb cb,
  58                ionic_cq_done_cb done_cb, void *done_arg);
  59 
  60 int ionic_adminq_post_wait(struct ionic_lif *lif, struct ionic_admin_ctx *ctx);
  61 int ionic_dev_cmd_wait(struct ionic *ionic, unsigned long max_wait);
  62 int ionic_set_dma_mask(struct ionic *ionic);
  63 int ionic_setup(struct ionic *ionic);
  64 
  65 int ionic_identify(struct ionic *ionic);
  66 int ionic_init(struct ionic *ionic);
  67 int ionic_reset(struct ionic *ionic);
  68 
  69 int ionic_port_identify(struct ionic *ionic);
  70 int ionic_port_init(struct ionic *ionic);
  71 int ionic_port_reset(struct ionic *ionic);
  72 
  73 #endif /* _IONIC_H_ */

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