1d722cab4SKip Macy /************************************************************************** 24d846d26SWarner Losh SPDX-License-Identifier: BSD-2-Clause 3d722cab4SKip Macy 4c5f0f485SKip Macy Copyright (c) 2007-2008, Chelsio Inc. 5d722cab4SKip Macy All rights reserved. 6d722cab4SKip Macy 7d722cab4SKip Macy Redistribution and use in source and binary forms, with or without 8d722cab4SKip Macy modification, are permitted provided that the following conditions are met: 9d722cab4SKip Macy 10d722cab4SKip Macy 1. Redistributions of source code must retain the above copyright notice, 11d722cab4SKip Macy this list of conditions and the following disclaimer. 12d722cab4SKip Macy 13ac3a6d9cSKip Macy 2. Neither the name of the Chelsio Corporation nor the names of its 14d722cab4SKip Macy contributors may be used to endorse or promote products derived from 15d722cab4SKip Macy this software without specific prior written permission. 16d722cab4SKip Macy 17d722cab4SKip Macy THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18d722cab4SKip Macy AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19d722cab4SKip Macy IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20d722cab4SKip Macy ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 21d722cab4SKip Macy LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 22d722cab4SKip Macy CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 23d722cab4SKip Macy SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24d722cab4SKip Macy INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 25d722cab4SKip Macy CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26d722cab4SKip Macy ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 27d722cab4SKip Macy POSSIBILITY OF SUCH DAMAGE. 28d722cab4SKip Macy 29d722cab4SKip Macy $FreeBSD$ 30d722cab4SKip Macy 31d722cab4SKip Macy ***************************************************************************/ 32d722cab4SKip Macy 33d722cab4SKip Macy #ifndef _CXGB_OFFLOAD_H 34d722cab4SKip Macy #define _CXGB_OFFLOAD_H 35d722cab4SKip Macy 3609fe6320SNavdeep Parhar #ifdef TCP_OFFLOAD 3709fe6320SNavdeep Parhar enum { 3809fe6320SNavdeep Parhar ULD_TOM = 1, 3909fe6320SNavdeep Parhar ULD_IWARP = 2, 40d722cab4SKip Macy }; 41d722cab4SKip Macy 4209fe6320SNavdeep Parhar struct adapter; 4309fe6320SNavdeep Parhar struct uld_info { 4409fe6320SNavdeep Parhar SLIST_ENTRY(uld_info) link; 4509fe6320SNavdeep Parhar int refcount; 4609fe6320SNavdeep Parhar int uld_id; 4709fe6320SNavdeep Parhar int (*activate)(struct adapter *); 4809fe6320SNavdeep Parhar int (*deactivate)(struct adapter *); 4909fe6320SNavdeep Parhar }; 50d722cab4SKip Macy 5109fe6320SNavdeep Parhar struct tom_tunables { 5209fe6320SNavdeep Parhar int sndbuf; 5309fe6320SNavdeep Parhar int ddp; 5409fe6320SNavdeep Parhar int indsz; 5509fe6320SNavdeep Parhar int ddp_thres; 56d722cab4SKip Macy }; 57d722cab4SKip Macy 58d722cab4SKip Macy /* CPL message priority levels */ 59d722cab4SKip Macy enum { 60d722cab4SKip Macy CPL_PRIORITY_DATA = 0, /* data messages */ 61d722cab4SKip Macy CPL_PRIORITY_CONTROL = 1 /* offload control messages */ 62d722cab4SKip Macy }; 63d722cab4SKip Macy 6409fe6320SNavdeep Parhar #define S_HDR_NDESC 0 6509fe6320SNavdeep Parhar #define M_HDR_NDESC 0xf 6609fe6320SNavdeep Parhar #define V_HDR_NDESC(x) ((x) << S_HDR_NDESC) 6709fe6320SNavdeep Parhar #define G_HDR_NDESC(x) (((x) >> S_HDR_NDESC) & M_HDR_NDESC) 68d722cab4SKip Macy 6909fe6320SNavdeep Parhar #define S_HDR_QSET 4 7009fe6320SNavdeep Parhar #define M_HDR_QSET 0xf 7109fe6320SNavdeep Parhar #define V_HDR_QSET(x) ((x) << S_HDR_QSET) 7209fe6320SNavdeep Parhar #define G_HDR_QSET(x) (((x) >> S_HDR_QSET) & M_HDR_QSET) 73d722cab4SKip Macy 7409fe6320SNavdeep Parhar #define S_HDR_CTRL 8 7509fe6320SNavdeep Parhar #define V_HDR_CTRL(x) ((x) << S_HDR_CTRL) 7609fe6320SNavdeep Parhar #define F_HDR_CTRL V_HDR_CTRL(1U) 7709fe6320SNavdeep Parhar 7809fe6320SNavdeep Parhar #define S_HDR_DF 9 7909fe6320SNavdeep Parhar #define V_HDR_DF(x) ((x) << S_HDR_DF) 8009fe6320SNavdeep Parhar #define F_HDR_DF V_HDR_DF(1U) 8109fe6320SNavdeep Parhar 8209fe6320SNavdeep Parhar #define S_HDR_SGL 10 8309fe6320SNavdeep Parhar #define V_HDR_SGL(x) ((x) << S_HDR_SGL) 8409fe6320SNavdeep Parhar #define F_HDR_SGL V_HDR_SGL(1U) 8509fe6320SNavdeep Parhar 8609fe6320SNavdeep Parhar struct ofld_hdr 87d722cab4SKip Macy { 8809fe6320SNavdeep Parhar void *sgl; /* SGL, if F_HDR_SGL set in flags */ 8909fe6320SNavdeep Parhar int plen; /* amount of payload (in bytes) */ 9009fe6320SNavdeep Parhar int flags; 91d722cab4SKip Macy }; 92d722cab4SKip Macy 93d722cab4SKip Macy /* 9409fe6320SNavdeep Parhar * Convenience function for fixed size CPLs that fit in 1 desc. 95d722cab4SKip Macy */ 9609fe6320SNavdeep Parhar #define M_GETHDR_OFLD(qset, ctrl, cpl) \ 9709fe6320SNavdeep Parhar m_gethdr_ofld(qset, ctrl, sizeof(*cpl), (void **)&cpl) 9809fe6320SNavdeep Parhar static inline struct mbuf * 9909fe6320SNavdeep Parhar m_gethdr_ofld(int qset, int ctrl, int cpllen, void **cpl) 100d722cab4SKip Macy { 10109fe6320SNavdeep Parhar struct mbuf *m; 10209fe6320SNavdeep Parhar struct ofld_hdr *oh; 10309fe6320SNavdeep Parhar 10409fe6320SNavdeep Parhar m = m_gethdr(M_NOWAIT, MT_DATA); 10509fe6320SNavdeep Parhar if (m == NULL) 10609fe6320SNavdeep Parhar return (NULL); 10709fe6320SNavdeep Parhar 10809fe6320SNavdeep Parhar oh = mtod(m, struct ofld_hdr *); 10909fe6320SNavdeep Parhar oh->flags = V_HDR_NDESC(1) | V_HDR_QSET(qset) | V_HDR_CTRL(ctrl); 11009fe6320SNavdeep Parhar *cpl = (void *)(oh + 1); 11109fe6320SNavdeep Parhar m->m_pkthdr.len = m->m_len = sizeof(*oh) + cpllen; 11209fe6320SNavdeep Parhar 11309fe6320SNavdeep Parhar return (m); 114d722cab4SKip Macy } 115d722cab4SKip Macy 11609fe6320SNavdeep Parhar int t3_register_uld(struct uld_info *); 11709fe6320SNavdeep Parhar int t3_unregister_uld(struct uld_info *); 11809fe6320SNavdeep Parhar int t3_activate_uld(struct adapter *, int); 11909fe6320SNavdeep Parhar int t3_deactivate_uld(struct adapter *, int); 12009fe6320SNavdeep Parhar #endif /* TCP_OFFLOAD */ 121d722cab4SKip Macy 12209fe6320SNavdeep Parhar #define CXGB_UNIMPLEMENTED() \ 12309fe6320SNavdeep Parhar panic("IMPLEMENT: %s:%s:%d", __FUNCTION__, __FILE__, __LINE__) 124d722cab4SKip Macy 125d722cab4SKip Macy #endif 126