Deleted Added
full compact
offload.h (245274) offload.h (245276)
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:

--- 10 unchanged lines hidden (view full) ---

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 *
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:

--- 10 unchanged lines hidden (view full) ---

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: head/sys/dev/cxgbe/offload.h 245274 2013-01-10 23:56:50Z np $
27 * $FreeBSD: head/sys/dev/cxgbe/offload.h 245276 2013-01-11 00:07:01Z np $
28 *
29 */
30
31#ifndef __T4_OFFLOAD_H__
32#define __T4_OFFLOAD_H__
33
34#define INIT_ULPTX_WRH(w, wrlen, atomic, tid) do { \
35 (w)->wr_hi = htonl(V_FW_WR_OP(FW_ULPTX_WR) | V_FW_WR_ATOMIC(atomic)); \

--- 13 unchanged lines hidden (view full) ---

49 (w)->wr.wr_lo = cpu_to_be64(0); \
50} while (0)
51
52#define INIT_TP_WR_MIT_CPL(w, cpl, tid) do { \
53 INIT_TP_WR(w, tid); \
54 OPCODE_TID(w) = htonl(MK_OPCODE_TID(cpl, tid)); \
55} while (0)
56
28 *
29 */
30
31#ifndef __T4_OFFLOAD_H__
32#define __T4_OFFLOAD_H__
33
34#define INIT_ULPTX_WRH(w, wrlen, atomic, tid) do { \
35 (w)->wr_hi = htonl(V_FW_WR_OP(FW_ULPTX_WR) | V_FW_WR_ATOMIC(atomic)); \

--- 13 unchanged lines hidden (view full) ---

49 (w)->wr.wr_lo = cpu_to_be64(0); \
50} while (0)
51
52#define INIT_TP_WR_MIT_CPL(w, cpl, tid) do { \
53 INIT_TP_WR(w, tid); \
54 OPCODE_TID(w) = htonl(MK_OPCODE_TID(cpl, tid)); \
55} while (0)
56
57TAILQ_HEAD(stid_head, stid_region);
58struct listen_ctx;
59
60struct stid_region {
61 TAILQ_ENTRY(stid_region) link;
62 int used; /* # of stids used by this region */
63 int free; /* # of contiguous stids free right after this region */
64};
65
57/*
58 * Max # of ATIDs. The absolute HW max is 16K but we keep it lower.
59 */
60#define MAX_ATIDS 8192U
61
66/*
67 * Max # of ATIDs. The absolute HW max is 16K but we keep it lower.
68 */
69#define MAX_ATIDS 8192U
70
62union serv_entry {
63 void *data;
64 union serv_entry *next;
65};
66
67union aopen_entry {
68 void *data;
69 union aopen_entry *next;
70};
71
72/*
73 * Holds the size, base address, free list start, etc of the TID, server TID,
74 * and active-open TID tables. The tables themselves are allocated dynamically.
75 */
76struct tid_info {
77 void **tid_tab;
78 u_int ntids;
79 u_int tids_in_use;
80
81 struct mtx stid_lock __aligned(CACHE_LINE_SIZE);
71union aopen_entry {
72 void *data;
73 union aopen_entry *next;
74};
75
76/*
77 * Holds the size, base address, free list start, etc of the TID, server TID,
78 * and active-open TID tables. The tables themselves are allocated dynamically.
79 */
80struct tid_info {
81 void **tid_tab;
82 u_int ntids;
83 u_int tids_in_use;
84
85 struct mtx stid_lock __aligned(CACHE_LINE_SIZE);
82 union serv_entry *stid_tab;
86 struct listen_ctx **stid_tab;
83 u_int nstids;
84 u_int stid_base;
87 u_int nstids;
88 u_int stid_base;
85 union serv_entry *sfree;
86 u_int stids_in_use;
89 u_int stids_in_use;
90 u_int nstids_free_head; /* # of available stids at the begining */
91 struct stid_head stids;
87
88 struct mtx atid_lock __aligned(CACHE_LINE_SIZE);
89 union aopen_entry *atid_tab;
90 u_int natids;
91 union aopen_entry *afree;
92 u_int atids_in_use;
93
94 struct mtx ftid_lock __aligned(CACHE_LINE_SIZE);

--- 51 unchanged lines hidden ---
92
93 struct mtx atid_lock __aligned(CACHE_LINE_SIZE);
94 union aopen_entry *atid_tab;
95 u_int natids;
96 union aopen_entry *afree;
97 u_int atids_in_use;
98
99 struct mtx ftid_lock __aligned(CACHE_LINE_SIZE);

--- 51 unchanged lines hidden ---