FreeBSD kernel CXGB device code
cxgb_ioctl.h
Go to the documentation of this file.
1/**************************************************************************
2SPDX-License-Identifier: BSD-2-Clause-FreeBSD
3
4Copyright (c) 2007-2008, Chelsio Inc.
5All rights reserved.
6
7Redistribution and use in source and binary forms, with or without
8modification, are permitted provided that the following conditions are met:
9
10 1. Redistributions of source code must retain the above copyright notice,
11 this list of conditions and the following disclaimer.
12
13 2. Neither the name of the Chelsio Corporation nor the names of its
14 contributors may be used to endorse or promote products derived from
15 this software without specific prior written permission.
16
17THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
18AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
21LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
22CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
23SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
24INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
25CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
26ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27POSSIBILITY OF SUCH DAMAGE.
28
29$FreeBSD$
30
31***************************************************************************/
32#ifndef __CHIOCTL_H__
33#define __CHIOCTL_H__
34
35/*
36 * Ioctl commands specific to this driver.
37 */
38enum {
39 CH_SETREG = 0x40,
66};
67
68/* statistics categories */
69enum {
70 STATS_PORT = 1 << 1,
71 STATS_QUEUE = 1 << 2,
72};
73
74struct ch_reg {
75 uint32_t addr;
76 uint32_t val;
77};
78
79struct ch_cntxt {
80 uint32_t cntxt_type;
81 uint32_t cntxt_id;
82 uint32_t data[4];
83};
84
85/* context types */
87
88struct ch_desc {
89 uint32_t queue_num;
90 uint32_t idx;
91 uint32_t size;
92 uint8_t data[128];
93};
94
96 uint32_t mem_id;
97 uint32_t addr;
98 uint32_t len;
99 uint32_t version;
100 uint8_t *buf;
101};
102
103enum { MEM_CM, MEM_PMRX, MEM_PMTX }; /* ch_mem_range.mem_id values */
104
106 uint32_t qset_idx;
107 int32_t txq_size[3];
108 int32_t rspq_size;
109 int32_t fl_size[2];
110 int32_t intr_lat;
111 int32_t polling;
112 int32_t lro;
113 int32_t cong_thres;
114 int32_t vector;
115 int32_t qnum;
116};
117
119 uint8_t sched;
120 uint8_t idx;
121 uint8_t min;
122 uint8_t max;
123 uint8_t binding;
124};
125
127 uint8_t sched;
128 int8_t mode;
129 int8_t channel;
130 int32_t kbps; /* rate in Kbps */
131 int32_t class_ipg; /* tenths of nanoseconds */
132 int32_t flow_ipg; /* usec */
133};
134
135struct ch_mtus {
136 uint32_t nmtus;
137 uint16_t mtus[NMTUS];
138};
139
140struct ch_pm {
141 uint32_t tx_pg_sz;
142 uint32_t tx_num_pg;
143 uint32_t rx_pg_sz;
144 uint32_t rx_num_pg;
145 uint32_t pm_total;
146};
147
149 uint32_t addr;
150 uint32_t buf[3];
151};
152
153struct ch_trace {
154 uint32_t sip;
155 uint32_t sip_mask;
156 uint32_t dip;
157 uint32_t dip_mask;
158 uint16_t sport;
159 uint16_t sport_mask;
160 uint16_t dport;
161 uint16_t dport_mask;
162 uint32_t vlan:12;
163 uint32_t vlan_mask:12;
164 uint32_t intf:4;
165 uint32_t intf_mask:4;
166 uint8_t proto;
167 uint8_t proto_mask;
168 uint8_t invert_match:1;
169 uint8_t config_tx:1;
170 uint8_t config_rx:1;
171 uint8_t trace_tx:1;
172 uint8_t trace_rx:1;
173};
174
175#define REGDUMP_SIZE (4 * 1024)
176
178 uint32_t version;
179 uint32_t len; /* bytes */
180 uint8_t *data;
181};
182
184 uint32_t phy_id;
185 uint32_t reg_num;
186 uint32_t val_in;
187 uint32_t val_out;
188};
189
190struct ch_eeprom {
191 uint32_t magic;
192 uint32_t offset;
193 uint32_t len;
194 uint8_t *data;
195};
196
197#define LA_BUFSIZE (2 * 1024)
198struct ch_up_la {
199 uint32_t stopped;
200 uint32_t idx;
201 uint32_t bufsize;
202 uint32_t *data;
203};
204
206 uint32_t ioq_cp;
207 uint32_t ioq_pp;
208 uint32_t ioq_alen;
209 uint32_t ioq_stats;
210};
211
212#define IOQS_BUFSIZE (1024)
218 uint32_t bufsize;
220};
221
223 uint32_t sip;
224 uint32_t dip;
225 uint16_t sport;
226 uint16_t dport;
227 uint16_t vlan:12;
228 uint16_t vlan_prio:3;
229};
230
231struct ch_filter {
232 uint32_t filter_id;
235 uint16_t mac_addr_idx;
236 uint8_t mac_hit:1;
237 uint8_t proto:2;
238
239 uint8_t want_filter_id:1;
240 uint8_t pass:1;
241 uint8_t rss:1;
242 uint8_t qset;
243};
244
245#define CHELSIO_SETREG _IOW('f', CH_SETREG, struct ch_reg)
246#define CHELSIO_GETREG _IOWR('f', CH_GETREG, struct ch_reg)
247#define CHELSIO_GETMTUTAB _IOR('f', CH_GETMTUTAB, struct ch_mtus)
248#define CHELSIO_SETMTUTAB _IOW('f', CH_SETMTUTAB, struct ch_mtus)
249#define CHELSIO_SET_PM _IOW('f', CH_SET_PM, struct ch_pm)
250#define CHELSIO_GET_PM _IOR('f', CH_GET_PM, struct ch_pm)
251#define CHELSIO_READ_TCAM_WORD _IOWR('f', CH_READ_TCAM_WORD, struct ch_tcam_word)
252#define CHELSIO_GET_MEM _IOWR('f', CH_GET_MEM, struct ch_mem_range)
253#define CHELSIO_GET_SGE_CONTEXT _IOWR('f', CH_GET_SGE_CONTEXT, struct ch_cntxt)
254#define CHELSIO_GET_SGE_DESC _IOWR('f', CH_GET_SGE_DESC, struct ch_desc)
255#define CHELSIO_LOAD_FW _IOWR('f', CH_LOAD_FW, struct ch_mem_range)
256#define CHELSIO_SET_TRACE_FILTER _IOW('f', CH_SET_TRACE_FILTER, struct ch_trace)
257#define CHELSIO_GET_QSET_PARAMS _IOWR('f', CH_GET_QSET_PARAMS, struct ch_qset_params)
258#define CHELSIO_GET_QSET_NUM _IOR('f', CH_GET_QSET_NUM, struct ch_reg)
259#define CHELSIO_SET_PKTSCHED _IOW('f', CH_SET_PKTSCHED, struct ch_pktsched_params)
260#define CHELSIO_SET_HW_SCHED _IOW('f', CH_SET_HW_SCHED, struct ch_hw_sched)
261#define CHELSIO_LOAD_BOOT _IOW('f', CH_LOAD_BOOT, struct ch_mem_range)
262#define CHELSIO_CLEAR_STATS _IO('f', CH_CLEAR_STATS)
263#define CHELSIO_IFCONF_GETREGS _IOWR('f', CH_IFCONF_GETREGS, struct ch_ifconf_regs)
264#define CHELSIO_GET_MIIREG _IOWR('f', CH_GET_MIIREG, struct ch_mii_data)
265#define CHELSIO_SET_MIIREG _IOW('f', CH_SET_MIIREG, struct ch_mii_data)
266#define CHELSIO_GET_EEPROM _IOWR('f', CH_GET_EEPROM, struct ch_eeprom)
267#define CHELSIO_GET_UP_LA _IOWR('f', CH_GET_UP_LA, struct ch_up_la)
268#define CHELSIO_GET_UP_IOQS _IOWR('f', CH_GET_UP_IOQS, struct ch_up_ioqs)
269#define CHELSIO_SET_FILTER _IOW('f', CH_SET_FILTER, struct ch_filter)
270#define CHELSIO_DEL_FILTER _IOW('f', CH_DEL_FILTER, struct ch_filter)
271#define CHELSIO_GET_FILTER _IOWR('f', CH_GET_FILTER, struct ch_filter)
272#endif
@ NMTUS
Definition: cxgb_common.h:44
@ CNTXT_TYPE_EGRESS
Definition: cxgb_ioctl.h:86
@ CNTXT_TYPE_CQ
Definition: cxgb_ioctl.h:86
@ CNTXT_TYPE_RSP
Definition: cxgb_ioctl.h:86
@ CNTXT_TYPE_FL
Definition: cxgb_ioctl.h:86
@ MEM_PMRX
Definition: cxgb_ioctl.h:103
@ MEM_PMTX
Definition: cxgb_ioctl.h:103
@ MEM_CM
Definition: cxgb_ioctl.h:103
@ STATS_PORT
Definition: cxgb_ioctl.h:70
@ STATS_QUEUE
Definition: cxgb_ioctl.h:71
@ CH_GET_QSET_NUM
Definition: cxgb_ioctl.h:52
@ CH_SET_TRACE_FILTER
Definition: cxgb_ioctl.h:50
@ CH_GETMTUTAB
Definition: cxgb_ioctl.h:41
@ CH_GETREG
Definition: cxgb_ioctl.h:40
@ CH_GET_UP_IOQS
Definition: cxgb_ioctl.h:62
@ CH_READ_TCAM_WORD
Definition: cxgb_ioctl.h:45
@ CH_GET_QSET_PARAMS
Definition: cxgb_ioctl.h:51
@ CH_SETMTUTAB
Definition: cxgb_ioctl.h:42
@ CH_GET_MIIREG
Definition: cxgb_ioctl.h:55
@ CH_SET_HW_SCHED
Definition: cxgb_ioctl.h:58
@ CH_SET_PKTSCHED
Definition: cxgb_ioctl.h:53
@ CH_GET_PM
Definition: cxgb_ioctl.h:44
@ CH_IFCONF_GETREGS
Definition: cxgb_ioctl.h:54
@ CH_GET_EEPROM
Definition: cxgb_ioctl.h:57
@ CH_CLEAR_STATS
Definition: cxgb_ioctl.h:60
@ CH_GET_UP_LA
Definition: cxgb_ioctl.h:61
@ CH_SET_PM
Definition: cxgb_ioctl.h:43
@ CH_SET_FILTER
Definition: cxgb_ioctl.h:63
@ CH_GET_SGE_CONTEXT
Definition: cxgb_ioctl.h:47
@ CH_LOAD_FW
Definition: cxgb_ioctl.h:49
@ CH_GET_MEM
Definition: cxgb_ioctl.h:46
@ CH_SETREG
Definition: cxgb_ioctl.h:39
@ CH_GET_SGE_DESC
Definition: cxgb_ioctl.h:48
@ CH_LOAD_BOOT
Definition: cxgb_ioctl.h:59
@ CH_GET_FILTER
Definition: cxgb_ioctl.h:65
@ CH_DEL_FILTER
Definition: cxgb_ioctl.h:64
@ CH_SET_MIIREG
Definition: cxgb_ioctl.h:56
uint32_t cntxt_id
Definition: cxgb_ioctl.h:81
uint32_t data[4]
Definition: cxgb_ioctl.h:82
uint32_t cntxt_type
Definition: cxgb_ioctl.h:80
uint32_t queue_num
Definition: cxgb_ioctl.h:89
uint32_t idx
Definition: cxgb_ioctl.h:90
uint8_t data[128]
Definition: cxgb_ioctl.h:92
uint32_t size
Definition: cxgb_ioctl.h:91
uint8_t * data
Definition: cxgb_ioctl.h:194
uint32_t len
Definition: cxgb_ioctl.h:193
uint32_t offset
Definition: cxgb_ioctl.h:192
uint32_t magic
Definition: cxgb_ioctl.h:191
uint16_t vlan_prio
Definition: cxgb_ioctl.h:228
uint32_t sip
Definition: cxgb_ioctl.h:223
uint32_t dip
Definition: cxgb_ioctl.h:224
uint16_t vlan
Definition: cxgb_ioctl.h:227
uint16_t sport
Definition: cxgb_ioctl.h:225
uint16_t dport
Definition: cxgb_ioctl.h:226
struct ch_filter_tuple val
Definition: cxgb_ioctl.h:233
uint8_t pass
Definition: cxgb_ioctl.h:240
uint8_t proto
Definition: cxgb_ioctl.h:237
uint8_t want_filter_id
Definition: cxgb_ioctl.h:239
struct ch_filter_tuple mask
Definition: cxgb_ioctl.h:234
uint16_t mac_addr_idx
Definition: cxgb_ioctl.h:235
uint8_t rss
Definition: cxgb_ioctl.h:241
uint8_t mac_hit
Definition: cxgb_ioctl.h:236
uint32_t filter_id
Definition: cxgb_ioctl.h:232
uint8_t qset
Definition: cxgb_ioctl.h:242
uint8_t sched
Definition: cxgb_ioctl.h:127
int8_t mode
Definition: cxgb_ioctl.h:128
int8_t channel
Definition: cxgb_ioctl.h:129
int32_t kbps
Definition: cxgb_ioctl.h:130
int32_t flow_ipg
Definition: cxgb_ioctl.h:132
int32_t class_ipg
Definition: cxgb_ioctl.h:131
uint32_t len
Definition: cxgb_ioctl.h:179
uint8_t * data
Definition: cxgb_ioctl.h:180
uint32_t version
Definition: cxgb_ioctl.h:178
uint8_t * buf
Definition: cxgb_ioctl.h:100
uint32_t len
Definition: cxgb_ioctl.h:98
uint32_t mem_id
Definition: cxgb_ioctl.h:96
uint32_t version
Definition: cxgb_ioctl.h:99
uint32_t addr
Definition: cxgb_ioctl.h:97
uint32_t phy_id
Definition: cxgb_ioctl.h:184
uint32_t reg_num
Definition: cxgb_ioctl.h:185
uint32_t val_out
Definition: cxgb_ioctl.h:187
uint32_t val_in
Definition: cxgb_ioctl.h:186
uint32_t nmtus
Definition: cxgb_ioctl.h:136
uint16_t mtus[NMTUS]
Definition: cxgb_ioctl.h:137
uint32_t rx_pg_sz
Definition: cxgb_ioctl.h:143
uint32_t tx_pg_sz
Definition: cxgb_ioctl.h:141
uint32_t rx_num_pg
Definition: cxgb_ioctl.h:144
uint32_t tx_num_pg
Definition: cxgb_ioctl.h:142
uint32_t pm_total
Definition: cxgb_ioctl.h:145
int32_t rspq_size
Definition: cxgb_ioctl.h:108
int32_t qnum
Definition: cxgb_ioctl.h:115
int32_t txq_size[3]
Definition: cxgb_ioctl.h:107
uint32_t qset_idx
Definition: cxgb_ioctl.h:106
int32_t fl_size[2]
Definition: cxgb_ioctl.h:109
int32_t vector
Definition: cxgb_ioctl.h:114
int32_t polling
Definition: cxgb_ioctl.h:111
int32_t cong_thres
Definition: cxgb_ioctl.h:113
int32_t intr_lat
Definition: cxgb_ioctl.h:110
uint32_t addr
Definition: cxgb_ioctl.h:75
uint32_t val
Definition: cxgb_ioctl.h:76
uint32_t addr
Definition: cxgb_ioctl.h:149
uint32_t buf[3]
Definition: cxgb_ioctl.h:150
uint16_t dport_mask
Definition: cxgb_ioctl.h:161
uint32_t intf_mask
Definition: cxgb_ioctl.h:165
uint8_t proto_mask
Definition: cxgb_ioctl.h:167
uint8_t proto
Definition: cxgb_ioctl.h:166
uint32_t sip
Definition: cxgb_ioctl.h:154
uint16_t sport_mask
Definition: cxgb_ioctl.h:159
uint16_t sport
Definition: cxgb_ioctl.h:158
uint8_t trace_rx
Definition: cxgb_ioctl.h:172
uint8_t config_rx
Definition: cxgb_ioctl.h:170
uint32_t dip_mask
Definition: cxgb_ioctl.h:157
uint16_t dport
Definition: cxgb_ioctl.h:160
uint32_t vlan_mask
Definition: cxgb_ioctl.h:163
uint8_t config_tx
Definition: cxgb_ioctl.h:169
uint32_t intf
Definition: cxgb_ioctl.h:164
uint32_t dip
Definition: cxgb_ioctl.h:156
uint32_t sip_mask
Definition: cxgb_ioctl.h:155
uint8_t trace_tx
Definition: cxgb_ioctl.h:171
uint32_t vlan
Definition: cxgb_ioctl.h:162
uint8_t invert_match
Definition: cxgb_ioctl.h:168
uint32_t ioq_tx_status
Definition: cxgb_ioctl.h:217
uint32_t ioq_rx_enable
Definition: cxgb_ioctl.h:214
uint32_t bufsize
Definition: cxgb_ioctl.h:218
uint32_t ioq_rx_status
Definition: cxgb_ioctl.h:216
struct t3_ioq_entry * data
Definition: cxgb_ioctl.h:219
uint32_t ioq_tx_enable
Definition: cxgb_ioctl.h:215
uint32_t stopped
Definition: cxgb_ioctl.h:199
uint32_t * data
Definition: cxgb_ioctl.h:202
uint32_t bufsize
Definition: cxgb_ioctl.h:201
uint32_t idx
Definition: cxgb_ioctl.h:200
Definition: cxgb_ioctl.h:205
uint32_t ioq_alen
Definition: cxgb_ioctl.h:208
uint32_t ioq_cp
Definition: cxgb_ioctl.h:206
uint32_t ioq_stats
Definition: cxgb_ioctl.h:209
uint32_t ioq_pp
Definition: cxgb_ioctl.h:207