aboutsummaryrefslogtreecommitdiff
path: root/drivers/net/cxgb3/cxgb3_ctl_defs.h
blob: 0fdc36529eb6b8a1ae88cca49f365fafa80f6412 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
/*
 * Copyright (C) 2003-2006 Chelsio Communications.  All rights reserved.
 *
 * This program is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 * FITNESS FOR A PARTICULAR PURPOSE.  See the LICENSE file included in this
 * release for licensing terms and conditions.
 */

#ifndef _CXGB3_OFFLOAD_CTL_DEFS_H
#define _CXGB3_OFFLOAD_CTL_DEFS_H

enum {
	GET_MAX_OUTSTANDING_WR,
	GET_TX_MAX_CHUNK,
	GET_TID_RANGE,
	GET_STID_RANGE,
	GET_RTBL_RANGE,
	GET_L2T_CAPACITY,
	GET_MTUS,
	GET_WR_LEN,
	GET_IFF_FROM_MAC,
	GET_DDP_PARAMS,
	GET_PORTS,

	ULP_ISCSI_GET_PARAMS,
	ULP_ISCSI_SET_PARAMS,

	RDMA_GET_PARAMS,
	RDMA_CQ_OP,
	RDMA_CQ_SETUP,
	RDMA_CQ_DISABLE,
	RDMA_CTRL_QP_SETUP,
	RDMA_GET_MEM,
};

/*
 * Structure used to describe a TID range.  Valid TIDs are [base, base+num).
 */
struct tid_range {
	unsigned int base;	/* first TID */
	unsigned int num;	/* number of TIDs in range */
};

/*
 * Structure used to request the size and contents of the MTU table.
 */
struct mtutab {
	unsigned int size;	/* # of entries in the MTU table */
	const unsigned short *mtus;	/* the MTU table values */
};

struct net_device;

/*
 * Structure used to request the adapter net_device owning a given MAC address.
 */
struct iff_mac {
	struct net_device *dev;	/* the net_device */
	const unsigned char *mac_addr;	/* MAC address to lookup */
	u16 vlan_tag;
};

struct pci_dev;

/*
 * Structure used to request the TCP DDP parameters.
 */
struct ddp_params {
	unsigned int llimit;	/* TDDP region start address */
	unsigned int ulimit;	/* TDDP region end address */
	unsigned int tag_mask;	/* TDDP tag mask */
	struct pci_dev *pdev;
};

struct adap_ports {
	unsigned int nports;	/* number of ports on this adapter */
	struct net_device *lldevs[2];
};

/*
 * Structure used to return information to the iscsi layer.
 */
struct ulp_iscsi_info {
	unsigned int offset;
	unsigned int llimit;
	unsigned int ulimit;
	unsigned int tagmask;
	unsigned int pgsz3;
	unsigned int pgsz2;
	unsigned int pgsz1;
	unsigned int pgsz0;
	unsigned int max_rxsz;
	unsigned int max_txsz;
	struct pci_dev *pdev;
};

/*
 * Structure used to return information to the RDMA layer.
 */
struct rdma_info {
	unsigned int tpt_base;	/* TPT base address */
	unsigned int tpt_top;	/* TPT last entry address */
	unsigned int pbl_base;	/* PBL base address */
	unsigned int pbl_top;	/* PBL last entry address */
	unsigned int rqt_base;	/* RQT base address */
	unsigned int rqt_top;	/* RQT last entry address */
	unsigned int udbell_len;	/* user doorbell region length */
	unsigned long udbell_physbase;	/* user doorbell physical start addr */
	void __iomem *kdb_addr;	/* kernel doorbell register address */
	struct pci_dev *pdev;	/* associated PCI device */
};

/*
 * Structure used to request an operation on an RDMA completion queue.
 */
struct rdma_cq_op {
	unsigned int id;
	unsigned int op;
	unsigned int credits;
};

/*
 * Structure used to setup RDMA completion queues.
 */
struct rdma_cq_setup {
	unsigned int id;
	unsigned long long base_addr;
	unsigned int size;
	unsigned int credits;
	unsigned int credit_thres;
	unsigned int ovfl_mode;
};

/*
 * Structure used to setup the RDMA control egress context.
 */
struct rdma_ctrlqp_setup {
	unsigned long long base_addr;
	unsigned int size;
};
#endif				/* _CXGB3_OFFLOAD_CTL_DEFS_H */