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