linux/drivers/net/ethernet/chelsio/cxgb3/cxgb3_ctl_defs.h
<<
>>
Prefs
   1/*
   2 * Copyright (c) 2003-2008 Chelsio, Inc. All rights reserved.
   3 *
   4 * This software is available to you under a choice of one of two
   5 * licenses.  You may choose to be licensed under the terms of the GNU
   6 * General Public License (GPL) Version 2, available from the file
   7 * COPYING in the main directory of this source tree, or the
   8 * OpenIB.org BSD license below:
   9 *
  10 *     Redistribution and use in source and binary forms, with or
  11 *     without modification, are permitted provided that the following
  12 *     conditions are met:
  13 *
  14 *      - Redistributions of source code must retain the above
  15 *        copyright notice, this list of conditions and the following
  16 *        disclaimer.
  17 *
  18 *      - Redistributions in binary form must reproduce the above
  19 *        copyright notice, this list of conditions and the following
  20 *        disclaimer in the documentation and/or other materials
  21 *        provided with the distribution.
  22 *
  23 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
  24 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  25 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
  26 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
  27 * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
  28 * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
  29 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
  30 * SOFTWARE.
  31 */
  32#ifndef _CXGB3_OFFLOAD_CTL_DEFS_H
  33#define _CXGB3_OFFLOAD_CTL_DEFS_H
  34
  35enum {
  36        GET_MAX_OUTSTANDING_WR  = 0,
  37        GET_TX_MAX_CHUNK        = 1,
  38        GET_TID_RANGE           = 2,
  39        GET_STID_RANGE          = 3,
  40        GET_RTBL_RANGE          = 4,
  41        GET_L2T_CAPACITY        = 5,
  42        GET_MTUS                = 6,
  43        GET_WR_LEN              = 7,
  44        GET_IFF_FROM_MAC        = 8,
  45        GET_DDP_PARAMS          = 9,
  46        GET_PORTS               = 10,
  47
  48        ULP_ISCSI_GET_PARAMS    = 11,
  49        ULP_ISCSI_SET_PARAMS    = 12,
  50
  51        RDMA_GET_PARAMS         = 13,
  52        RDMA_CQ_OP              = 14,
  53        RDMA_CQ_SETUP           = 15,
  54        RDMA_CQ_DISABLE         = 16,
  55        RDMA_CTRL_QP_SETUP      = 17,
  56        RDMA_GET_MEM            = 18,
  57        RDMA_GET_MIB            = 19,
  58
  59        GET_RX_PAGE_INFO        = 50,
  60        GET_ISCSI_IPV4ADDR      = 51,
  61
  62        GET_EMBEDDED_INFO       = 70,
  63};
  64
  65/*
  66 * Structure used to describe a TID range.  Valid TIDs are [base, base+num).
  67 */
  68struct tid_range {
  69        unsigned int base;      /* first TID */
  70        unsigned int num;       /* number of TIDs in range */
  71};
  72
  73/*
  74 * Structure used to request the size and contents of the MTU table.
  75 */
  76struct mtutab {
  77        unsigned int size;      /* # of entries in the MTU table */
  78        const unsigned short *mtus;     /* the MTU table values */
  79};
  80
  81struct net_device;
  82
  83/*
  84 * Structure used to request the adapter net_device owning a given MAC address.
  85 */
  86struct iff_mac {
  87        struct net_device *dev; /* the net_device */
  88        const unsigned char *mac_addr;  /* MAC address to lookup */
  89        u16 vlan_tag;
  90};
  91
  92/* Structure used to request a port's iSCSI IPv4 address */
  93struct iscsi_ipv4addr {
  94        struct net_device *dev; /* the net_device */
  95        __be32 ipv4addr;        /* the return iSCSI IPv4 address */
  96};
  97
  98struct pci_dev;
  99
 100/*
 101 * Structure used to request the TCP DDP parameters.
 102 */
 103struct ddp_params {
 104        unsigned int llimit;    /* TDDP region start address */
 105        unsigned int ulimit;    /* TDDP region end address */
 106        unsigned int tag_mask;  /* TDDP tag mask */
 107        struct pci_dev *pdev;
 108};
 109
 110struct adap_ports {
 111        unsigned int nports;    /* number of ports on this adapter */
 112        struct net_device *lldevs[2];
 113};
 114
 115/*
 116 * Structure used to return information to the iscsi layer.
 117 */
 118struct ulp_iscsi_info {
 119        unsigned int offset;
 120        unsigned int llimit;
 121        unsigned int ulimit;
 122        unsigned int tagmask;
 123        u8 pgsz_factor[4];
 124        unsigned int max_rxsz;
 125        unsigned int max_txsz;
 126        struct pci_dev *pdev;
 127};
 128
 129/*
 130 * Structure used to return information to the RDMA layer.
 131 */
 132struct rdma_info {
 133        unsigned int tpt_base;  /* TPT base address */
 134        unsigned int tpt_top;   /* TPT last entry address */
 135        unsigned int pbl_base;  /* PBL base address */
 136        unsigned int pbl_top;   /* PBL last entry address */
 137        unsigned int rqt_base;  /* RQT base address */
 138        unsigned int rqt_top;   /* RQT last entry address */
 139        unsigned int udbell_len;        /* user doorbell region length */
 140        unsigned long udbell_physbase;  /* user doorbell physical start addr */
 141        void __iomem *kdb_addr; /* kernel doorbell register address */
 142        struct pci_dev *pdev;   /* associated PCI device */
 143};
 144
 145/*
 146 * Structure used to request an operation on an RDMA completion queue.
 147 */
 148struct rdma_cq_op {
 149        unsigned int id;
 150        unsigned int op;
 151        unsigned int credits;
 152};
 153
 154/*
 155 * Structure used to setup RDMA completion queues.
 156 */
 157struct rdma_cq_setup {
 158        unsigned int id;
 159        unsigned long long base_addr;
 160        unsigned int size;
 161        unsigned int credits;
 162        unsigned int credit_thres;
 163        unsigned int ovfl_mode;
 164};
 165
 166/*
 167 * Structure used to setup the RDMA control egress context.
 168 */
 169struct rdma_ctrlqp_setup {
 170        unsigned long long base_addr;
 171        unsigned int size;
 172};
 173
 174/*
 175 * Offload TX/RX page information.
 176 */
 177struct ofld_page_info {
 178        unsigned int page_size;  /* Page size, should be a power of 2 */
 179        unsigned int num;        /* Number of pages */
 180};
 181
 182/*
 183 * Structure used to get firmware and protocol engine versions.
 184 */
 185struct ch_embedded_info {
 186        u32 fw_vers;
 187        u32 tp_vers;
 188};
 189#endif                          /* _CXGB3_OFFLOAD_CTL_DEFS_H */
 190