xref: /freebsd/sys/dev/cxgbe/offload.h (revision 10b9d77bf1ccf2f3affafa6261692cb92cf7e992)
1 /*-
2  * Copyright (c) 2010 Chelsio Communications, Inc.
3  * All rights reserved.
4  * Written by: Navdeep Parhar <np@FreeBSD.org>
5  *
6  * Redistribution and use in source and binary forms, with or without
7  * modification, are permitted provided that the following conditions
8  * are met:
9  * 1. Redistributions of source code must retain the above copyright
10  *    notice, this list of conditions and the following disclaimer.
11  * 2. Redistributions in binary form must reproduce the above copyright
12  *    notice, this list of conditions and the following disclaimer in the
13  *    documentation and/or other materials provided with the distribution.
14  *
15  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
16  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
19  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
20  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
21  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
22  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
23  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
24  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
25  * SUCH DAMAGE.
26  *
27  * $FreeBSD$
28  *
29  */
30 
31 #ifndef __T4_OFFLOAD_H__
32 #define __T4_OFFLOAD_H__
33 
34 /*
35  * Max # of ATIDs.  The absolute HW max is 16K but we keep it lower.
36  */
37 #define MAX_ATIDS 8192U
38 
39 struct serv_entry {
40 	void *data;
41 };
42 
43 union aopen_entry {
44 	void *data;
45 	union aopen_entry *next;
46 };
47 
48 /*
49  * Holds the size, base address, free list start, etc of the TID, server TID,
50  * and active-open TID tables.  The tables themselves are allocated dynamically.
51  */
52 struct tid_info {
53 	void **tid_tab;
54 	unsigned int ntids;
55 
56 	struct serv_entry *stid_tab;
57 	unsigned long *stid_bmap;
58 	unsigned int nstids;
59 	unsigned int stid_base;
60 
61 	union aopen_entry *atid_tab;
62 	unsigned int natids;
63 
64 	unsigned int nftids;
65 	unsigned int ftid_base;
66 
67 	union aopen_entry *afree;
68 	unsigned int atids_in_use;
69 
70 	unsigned int stids_in_use;
71 };
72 
73 struct t4_range {
74 	unsigned int start;
75 	unsigned int size;
76 };
77 
78 struct t4_virt_res {                      /* virtualized HW resources */
79 	struct t4_range ddp;
80 	struct t4_range iscsi;
81 	struct t4_range stag;
82 	struct t4_range rq;
83 	struct t4_range pbl;
84 };
85 
86 #endif
87