1169994Skmacy/* 2171471Skmacy * Copyright (C) 2003-2006 Chelsio Communications. All rights reserved. 3169994Skmacy * 4169994Skmacy * This program is distributed in the hope that it will be useful, but WITHOUT 5169994Skmacy * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 6169994Skmacy * FITNESS FOR A PARTICULAR PURPOSE. See the LICENSE file included in this 7169994Skmacy * release for licensing terms and conditions. 8169994Skmacy * 9169994Skmacy * $FreeBSD$ 10169994Skmacy */ 11169994Skmacy 12169994Skmacy#ifndef _CXGB3_OFFLOAD_CTL_DEFS_H 13169994Skmacy#define _CXGB3_OFFLOAD_CTL_DEFS_H 14169994Skmacy 15169994Skmacyenum { 16169994Skmacy GET_MAX_OUTSTANDING_WR, 17169994Skmacy GET_TX_MAX_CHUNK, 18169994Skmacy GET_TID_RANGE, 19169994Skmacy GET_STID_RANGE, 20169994Skmacy GET_RTBL_RANGE, 21169994Skmacy GET_L2T_CAPACITY, 22169994Skmacy GET_MTUS, 23169994Skmacy GET_WR_LEN, 24169994Skmacy GET_IFF_FROM_MAC, 25169994Skmacy GET_DDP_PARAMS, 26169994Skmacy GET_PORTS, 27169994Skmacy 28169994Skmacy ULP_ISCSI_GET_PARAMS, 29169994Skmacy ULP_ISCSI_SET_PARAMS, 30169994Skmacy 31169994Skmacy RDMA_GET_PARAMS, 32169994Skmacy RDMA_CQ_OP, 33169994Skmacy RDMA_CQ_SETUP, 34169994Skmacy RDMA_CQ_DISABLE, 35169994Skmacy RDMA_CTRL_QP_SETUP, 36169994Skmacy RDMA_GET_MEM, 37171471Skmacy 38172096Skmacy FAILOVER = 30, 39172096Skmacy FAILOVER_DONE = 31, 40172096Skmacy FAILOVER_CLEAR = 32, 41171471Skmacy 42172096Skmacy GET_CPUIDX_OF_QSET = 40, 43171471Skmacy 44172096Skmacy GET_RX_PAGE_INFO = 50, 45169994Skmacy}; 46169994Skmacy 47169994Skmacy/* 48169994Skmacy * Structure used to describe a TID range. Valid TIDs are [base, base+num). 49169994Skmacy */ 50169994Skmacystruct tid_range { 51169994Skmacy unsigned int base; /* first TID */ 52169994Skmacy unsigned int num; /* number of TIDs in range */ 53169994Skmacy}; 54169994Skmacy 55169994Skmacy/* 56169994Skmacy * Structure used to request the size and contents of the MTU table. 57169994Skmacy */ 58169994Skmacystruct mtutab { 59169994Skmacy unsigned int size; /* # of entries in the MTU table */ 60169994Skmacy const unsigned short *mtus; /* the MTU table values */ 61169994Skmacy}; 62169994Skmacy 63169994Skmacy/* 64237263Snp * Structure used to request the ifnet that owns a given MAC address. 65169994Skmacy */ 66169994Skmacystruct iff_mac { 67237263Snp struct ifnet *dev; 68237263Snp const unsigned char *mac_addr; 69169994Skmacy u16 vlan_tag; 70169994Skmacy}; 71169994Skmacy 72169994Skmacystruct pci_dev; 73169994Skmacy 74169994Skmacy/* 75169994Skmacy * Structure used to request the TCP DDP parameters. 76169994Skmacy */ 77169994Skmacystruct ddp_params { 78169994Skmacy unsigned int llimit; /* TDDP region start address */ 79169994Skmacy unsigned int ulimit; /* TDDP region end address */ 80169994Skmacy unsigned int tag_mask; /* TDDP tag mask */ 81169994Skmacy struct pci_dev *pdev; 82169994Skmacy}; 83169994Skmacy 84169994Skmacystruct adap_ports { 85169994Skmacy unsigned int nports; /* number of ports on this adapter */ 86237263Snp struct ifnet *lldevs[MAX_NPORTS]; 87169994Skmacy}; 88169994Skmacy 89169994Skmacy/* 90169994Skmacy * Structure used to return information to the iscsi layer. 91169994Skmacy */ 92169994Skmacystruct ulp_iscsi_info { 93169994Skmacy unsigned int offset; 94169994Skmacy unsigned int llimit; 95169994Skmacy unsigned int ulimit; 96169994Skmacy unsigned int tagmask; 97169994Skmacy unsigned int pgsz3; 98169994Skmacy unsigned int pgsz2; 99169994Skmacy unsigned int pgsz1; 100169994Skmacy unsigned int pgsz0; 101169994Skmacy unsigned int max_rxsz; 102169994Skmacy unsigned int max_txsz; 103169994Skmacy struct pci_dev *pdev; 104169994Skmacy}; 105169994Skmacy 106169994Skmacy/* 107171471Skmacy * Offload TX/RX page information. 108171471Skmacy */ 109171471Skmacystruct ofld_page_info { 110171471Skmacy unsigned int page_size; /* Page size, should be a power of 2 */ 111171471Skmacy unsigned int num; /* Number of pages */ 112171471Skmacy}; 113171471Skmacy 114171471Skmacy/* 115169994Skmacy * Structure used to return information to the RDMA layer. 116169994Skmacy */ 117169994Skmacystruct rdma_info { 118169994Skmacy unsigned int tpt_base; /* TPT base address */ 119169994Skmacy unsigned int tpt_top; /* TPT last entry address */ 120169994Skmacy unsigned int pbl_base; /* PBL base address */ 121169994Skmacy unsigned int pbl_top; /* PBL last entry address */ 122169994Skmacy unsigned int rqt_base; /* RQT base address */ 123169994Skmacy unsigned int rqt_top; /* RQT last entry address */ 124169994Skmacy unsigned int udbell_len; /* user doorbell region length */ 125169994Skmacy unsigned long udbell_physbase; /* user doorbell physical start addr */ 126176472Skmacy void *kdb_addr; /* kernel doorbell register address */ 127176472Skmacy struct device *pdev; /* associated PCI device */ 128169994Skmacy}; 129169994Skmacy 130169994Skmacy/* 131169994Skmacy * Structure used to request an operation on an RDMA completion queue. 132169994Skmacy */ 133169994Skmacystruct rdma_cq_op { 134169994Skmacy unsigned int id; 135169994Skmacy unsigned int op; 136169994Skmacy unsigned int credits; 137169994Skmacy}; 138169994Skmacy 139169994Skmacy/* 140169994Skmacy * Structure used to setup RDMA completion queues. 141169994Skmacy */ 142169994Skmacystruct rdma_cq_setup { 143169994Skmacy unsigned int id; 144169994Skmacy unsigned long long base_addr; 145169994Skmacy unsigned int size; 146169994Skmacy unsigned int credits; 147169994Skmacy unsigned int credit_thres; 148169994Skmacy unsigned int ovfl_mode; 149169994Skmacy}; 150169994Skmacy 151169994Skmacy/* 152169994Skmacy * Structure used to setup the RDMA control egress context. 153169994Skmacy */ 154169994Skmacystruct rdma_ctrlqp_setup { 155169994Skmacy unsigned long long base_addr; 156169994Skmacy unsigned int size; 157169994Skmacy}; 158169994Skmacy#endif /* _CXGB3_OFFLOAD_CTL_DEFS_H */ 159