1169978Skmacy/************************************************************************** 2169978Skmacy 3183063SkmacyCopyright (c) 2007-2008, Chelsio Inc. 4169978SkmacyAll rights reserved. 5169978Skmacy 6169978SkmacyRedistribution and use in source and binary forms, with or without 7169978Skmacymodification, are permitted provided that the following conditions are met: 8169978Skmacy 9169978Skmacy 1. Redistributions of source code must retain the above copyright notice, 10169978Skmacy this list of conditions and the following disclaimer. 11169978Skmacy 12171471Skmacy 2. Neither the name of the Chelsio Corporation nor the names of its 13169978Skmacy contributors may be used to endorse or promote products derived from 14169978Skmacy this software without specific prior written permission. 15169978Skmacy 16169978SkmacyTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 17169978SkmacyAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 18169978SkmacyIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 19169978SkmacyARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 20169978SkmacyLIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 21169978SkmacyCONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 22169978SkmacySUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 23169978SkmacyINTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 24169978SkmacyCONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 25169978SkmacyARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 26169978SkmacyPOSSIBILITY OF SUCH DAMAGE. 27169978Skmacy 28169978Skmacy$FreeBSD: releng/11.0/sys/dev/cxgb/cxgb_offload.h 237263 2012-06-19 07:34:13Z np $ 29169978Skmacy 30169978Skmacy***************************************************************************/ 31169978Skmacy 32169978Skmacy#ifndef _CXGB_OFFLOAD_H 33169978Skmacy#define _CXGB_OFFLOAD_H 34169978Skmacy 35237263Snp#ifdef TCP_OFFLOAD 36237263Snpenum { 37237263Snp ULD_TOM = 1, 38237263Snp ULD_IWARP = 2, 39237263Snp}; 40169978Skmacy 41169978Skmacystruct adapter; 42237263Snpstruct uld_info { 43237263Snp SLIST_ENTRY(uld_info) link; 44237263Snp int refcount; 45237263Snp int uld_id; 46237263Snp int (*activate)(struct adapter *); 47237263Snp int (*deactivate)(struct adapter *); 48169978Skmacy}; 49169978Skmacy 50237263Snpstruct tom_tunables { 51237263Snp int sndbuf; 52237263Snp int ddp; 53237263Snp int indsz; 54237263Snp int ddp_thres; 55169978Skmacy}; 56169978Skmacy 57169978Skmacy/* CPL message priority levels */ 58169978Skmacyenum { 59169978Skmacy CPL_PRIORITY_DATA = 0, /* data messages */ 60169978Skmacy CPL_PRIORITY_CONTROL = 1 /* offload control messages */ 61169978Skmacy}; 62169978Skmacy 63237263Snp#define S_HDR_NDESC 0 64237263Snp#define M_HDR_NDESC 0xf 65237263Snp#define V_HDR_NDESC(x) ((x) << S_HDR_NDESC) 66237263Snp#define G_HDR_NDESC(x) (((x) >> S_HDR_NDESC) & M_HDR_NDESC) 67169978Skmacy 68237263Snp#define S_HDR_QSET 4 69237263Snp#define M_HDR_QSET 0xf 70237263Snp#define V_HDR_QSET(x) ((x) << S_HDR_QSET) 71237263Snp#define G_HDR_QSET(x) (((x) >> S_HDR_QSET) & M_HDR_QSET) 72169978Skmacy 73237263Snp#define S_HDR_CTRL 8 74237263Snp#define V_HDR_CTRL(x) ((x) << S_HDR_CTRL) 75237263Snp#define F_HDR_CTRL V_HDR_CTRL(1U) 76169978Skmacy 77237263Snp#define S_HDR_DF 9 78237263Snp#define V_HDR_DF(x) ((x) << S_HDR_DF) 79237263Snp#define F_HDR_DF V_HDR_DF(1U) 80169978Skmacy 81237263Snp#define S_HDR_SGL 10 82237263Snp#define V_HDR_SGL(x) ((x) << S_HDR_SGL) 83237263Snp#define F_HDR_SGL V_HDR_SGL(1U) 84169978Skmacy 85237263Snpstruct ofld_hdr 86237263Snp{ 87237263Snp void *sgl; /* SGL, if F_HDR_SGL set in flags */ 88237263Snp int plen; /* amount of payload (in bytes) */ 89237263Snp int flags; 90169978Skmacy}; 91169978Skmacy 92169978Skmacy/* 93237263Snp * Convenience function for fixed size CPLs that fit in 1 desc. 94169978Skmacy */ 95237263Snp#define M_GETHDR_OFLD(qset, ctrl, cpl) \ 96237263Snp m_gethdr_ofld(qset, ctrl, sizeof(*cpl), (void **)&cpl) 97237263Snpstatic inline struct mbuf * 98237263Snpm_gethdr_ofld(int qset, int ctrl, int cpllen, void **cpl) 99169978Skmacy{ 100237263Snp struct mbuf *m; 101237263Snp struct ofld_hdr *oh; 102169978Skmacy 103237263Snp m = m_gethdr(M_NOWAIT, MT_DATA); 104237263Snp if (m == NULL) 105237263Snp return (NULL); 106169978Skmacy 107237263Snp oh = mtod(m, struct ofld_hdr *); 108237263Snp oh->flags = V_HDR_NDESC(1) | V_HDR_QSET(qset) | V_HDR_CTRL(ctrl); 109237263Snp *cpl = (void *)(oh + 1); 110237263Snp m->m_pkthdr.len = m->m_len = sizeof(*oh) + cpllen; 111169978Skmacy 112237263Snp return (m); 113169978Skmacy} 114169978Skmacy 115237263Snpint t3_register_uld(struct uld_info *); 116237263Snpint t3_unregister_uld(struct uld_info *); 117237263Snpint t3_activate_uld(struct adapter *, int); 118237263Snpint t3_deactivate_uld(struct adapter *, int); 119237263Snp#endif /* TCP_OFFLOAD */ 120169978Skmacy 121237263Snp#define CXGB_UNIMPLEMENTED() \ 122237263Snp panic("IMPLEMENT: %s:%s:%d", __FUNCTION__, __FILE__, __LINE__) 123169978Skmacy 124169978Skmacy#endif 125