2010-04-22 05:30:06 +07:00
|
|
|
/*
|
|
|
|
* Copyright (c) 2009-2010 Chelsio, Inc. All rights reserved.
|
|
|
|
*
|
|
|
|
* This software is available to you under a choice of one of two
|
|
|
|
* licenses. You may choose to be licensed under the terms of the GNU
|
|
|
|
* General Public License (GPL) Version 2, available from the file
|
|
|
|
* COPYING in the main directory of this source tree, or the
|
|
|
|
* OpenIB.org BSD license below:
|
|
|
|
*
|
|
|
|
* Redistribution and use in source and binary forms, with or
|
|
|
|
* without modification, are permitted provided that the following
|
|
|
|
* conditions are met:
|
|
|
|
*
|
|
|
|
* - Redistributions of source code must retain the above
|
|
|
|
* copyright notice, this list of conditions and the following
|
|
|
|
* disclaimer.
|
|
|
|
* - Redistributions in binary form must reproduce the above
|
|
|
|
* copyright notice, this list of conditions and the following
|
|
|
|
* disclaimer in the documentation and/or other materials
|
|
|
|
* provided with the distribution.
|
|
|
|
*
|
|
|
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
|
|
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
|
|
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
|
|
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
|
|
|
|
* BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
|
|
|
|
* ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
|
|
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
|
|
* SOFTWARE.
|
|
|
|
*/
|
|
|
|
#ifndef _T4FW_RI_API_H_
|
|
|
|
#define _T4FW_RI_API_H_
|
|
|
|
|
|
|
|
#include "t4fw_api.h"
|
|
|
|
|
|
|
|
enum fw_ri_wr_opcode {
|
|
|
|
FW_RI_RDMA_WRITE = 0x0, /* IETF RDMAP v1.0 ... */
|
|
|
|
FW_RI_READ_REQ = 0x1,
|
|
|
|
FW_RI_READ_RESP = 0x2,
|
|
|
|
FW_RI_SEND = 0x3,
|
|
|
|
FW_RI_SEND_WITH_INV = 0x4,
|
|
|
|
FW_RI_SEND_WITH_SE = 0x5,
|
|
|
|
FW_RI_SEND_WITH_SE_INV = 0x6,
|
|
|
|
FW_RI_TERMINATE = 0x7,
|
|
|
|
FW_RI_RDMA_INIT = 0x8, /* CHELSIO RI specific ... */
|
|
|
|
FW_RI_BIND_MW = 0x9,
|
|
|
|
FW_RI_FAST_REGISTER = 0xa,
|
|
|
|
FW_RI_LOCAL_INV = 0xb,
|
|
|
|
FW_RI_QP_MODIFY = 0xc,
|
|
|
|
FW_RI_BYPASS = 0xd,
|
|
|
|
FW_RI_RECEIVE = 0xe,
|
|
|
|
|
|
|
|
FW_RI_SGE_EC_CR_RETURN = 0xf
|
|
|
|
};
|
|
|
|
|
|
|
|
enum fw_ri_wr_flags {
|
|
|
|
FW_RI_COMPLETION_FLAG = 0x01,
|
|
|
|
FW_RI_NOTIFICATION_FLAG = 0x02,
|
|
|
|
FW_RI_SOLICITED_EVENT_FLAG = 0x04,
|
|
|
|
FW_RI_READ_FENCE_FLAG = 0x08,
|
|
|
|
FW_RI_LOCAL_FENCE_FLAG = 0x10,
|
|
|
|
FW_RI_RDMA_READ_INVALIDATE = 0x20
|
|
|
|
};
|
|
|
|
|
|
|
|
enum fw_ri_mpa_attrs {
|
|
|
|
FW_RI_MPA_RX_MARKER_ENABLE = 0x01,
|
|
|
|
FW_RI_MPA_TX_MARKER_ENABLE = 0x02,
|
|
|
|
FW_RI_MPA_CRC_ENABLE = 0x04,
|
|
|
|
FW_RI_MPA_IETF_ENABLE = 0x08
|
|
|
|
};
|
|
|
|
|
|
|
|
enum fw_ri_qp_caps {
|
|
|
|
FW_RI_QP_RDMA_READ_ENABLE = 0x01,
|
|
|
|
FW_RI_QP_RDMA_WRITE_ENABLE = 0x02,
|
|
|
|
FW_RI_QP_BIND_ENABLE = 0x04,
|
|
|
|
FW_RI_QP_FAST_REGISTER_ENABLE = 0x08,
|
|
|
|
FW_RI_QP_STAG0_ENABLE = 0x10
|
|
|
|
};
|
|
|
|
|
|
|
|
enum fw_ri_addr_type {
|
|
|
|
FW_RI_ZERO_BASED_TO = 0x00,
|
|
|
|
FW_RI_VA_BASED_TO = 0x01
|
|
|
|
};
|
|
|
|
|
|
|
|
enum fw_ri_mem_perms {
|
|
|
|
FW_RI_MEM_ACCESS_REM_WRITE = 0x01,
|
|
|
|
FW_RI_MEM_ACCESS_REM_READ = 0x02,
|
|
|
|
FW_RI_MEM_ACCESS_REM = 0x03,
|
|
|
|
FW_RI_MEM_ACCESS_LOCAL_WRITE = 0x04,
|
|
|
|
FW_RI_MEM_ACCESS_LOCAL_READ = 0x08,
|
|
|
|
FW_RI_MEM_ACCESS_LOCAL = 0x0C
|
|
|
|
};
|
|
|
|
|
|
|
|
enum fw_ri_stag_type {
|
|
|
|
FW_RI_STAG_NSMR = 0x00,
|
|
|
|
FW_RI_STAG_SMR = 0x01,
|
|
|
|
FW_RI_STAG_MW = 0x02,
|
|
|
|
FW_RI_STAG_MW_RELAXED = 0x03
|
|
|
|
};
|
|
|
|
|
|
|
|
enum fw_ri_data_op {
|
|
|
|
FW_RI_DATA_IMMD = 0x81,
|
|
|
|
FW_RI_DATA_DSGL = 0x82,
|
|
|
|
FW_RI_DATA_ISGL = 0x83
|
|
|
|
};
|
|
|
|
|
|
|
|
enum fw_ri_sgl_depth {
|
|
|
|
FW_RI_SGL_DEPTH_MAX_SQ = 16,
|
|
|
|
FW_RI_SGL_DEPTH_MAX_RQ = 4
|
|
|
|
};
|
|
|
|
|
|
|
|
struct fw_ri_dsge_pair {
|
|
|
|
__be32 len[2];
|
|
|
|
__be64 addr[2];
|
|
|
|
};
|
|
|
|
|
|
|
|
struct fw_ri_dsgl {
|
|
|
|
__u8 op;
|
|
|
|
__u8 r1;
|
|
|
|
__be16 nsge;
|
|
|
|
__be32 len0;
|
|
|
|
__be64 addr0;
|
|
|
|
#ifndef C99_NOT_SUPPORTED
|
|
|
|
struct fw_ri_dsge_pair sge[0];
|
|
|
|
#endif
|
|
|
|
};
|
|
|
|
|
|
|
|
struct fw_ri_sge {
|
|
|
|
__be32 stag;
|
|
|
|
__be32 len;
|
|
|
|
__be64 to;
|
|
|
|
};
|
|
|
|
|
|
|
|
struct fw_ri_isgl {
|
|
|
|
__u8 op;
|
|
|
|
__u8 r1;
|
|
|
|
__be16 nsge;
|
|
|
|
__be32 r2;
|
|
|
|
#ifndef C99_NOT_SUPPORTED
|
|
|
|
struct fw_ri_sge sge[0];
|
|
|
|
#endif
|
|
|
|
};
|
|
|
|
|
|
|
|
struct fw_ri_immd {
|
|
|
|
__u8 op;
|
|
|
|
__u8 r1;
|
|
|
|
__be16 r2;
|
|
|
|
__be32 immdlen;
|
|
|
|
#ifndef C99_NOT_SUPPORTED
|
|
|
|
__u8 data[0];
|
|
|
|
#endif
|
|
|
|
};
|
|
|
|
|
|
|
|
struct fw_ri_tpte {
|
|
|
|
__be32 valid_to_pdid;
|
|
|
|
__be32 locread_to_qpid;
|
|
|
|
__be32 nosnoop_pbladdr;
|
|
|
|
__be32 len_lo;
|
|
|
|
__be32 va_hi;
|
|
|
|
__be32 va_lo_fbo;
|
|
|
|
__be32 dca_mwbcnt_pstag;
|
|
|
|
__be32 len_hi;
|
|
|
|
};
|
|
|
|
|
|
|
|
#define S_FW_RI_TPTE_VALID 31
|
|
|
|
#define M_FW_RI_TPTE_VALID 0x1
|
|
|
|
#define V_FW_RI_TPTE_VALID(x) ((x) << S_FW_RI_TPTE_VALID)
|
|
|
|
#define G_FW_RI_TPTE_VALID(x) \
|
|
|
|
(((x) >> S_FW_RI_TPTE_VALID) & M_FW_RI_TPTE_VALID)
|
|
|
|
#define F_FW_RI_TPTE_VALID V_FW_RI_TPTE_VALID(1U)
|
|
|
|
|
|
|
|
#define S_FW_RI_TPTE_STAGKEY 23
|
|
|
|
#define M_FW_RI_TPTE_STAGKEY 0xff
|
|
|
|
#define V_FW_RI_TPTE_STAGKEY(x) ((x) << S_FW_RI_TPTE_STAGKEY)
|
|
|
|
#define G_FW_RI_TPTE_STAGKEY(x) \
|
|
|
|
(((x) >> S_FW_RI_TPTE_STAGKEY) & M_FW_RI_TPTE_STAGKEY)
|
|
|
|
|
|
|
|
#define S_FW_RI_TPTE_STAGSTATE 22
|
|
|
|
#define M_FW_RI_TPTE_STAGSTATE 0x1
|
|
|
|
#define V_FW_RI_TPTE_STAGSTATE(x) ((x) << S_FW_RI_TPTE_STAGSTATE)
|
|
|
|
#define G_FW_RI_TPTE_STAGSTATE(x) \
|
|
|
|
(((x) >> S_FW_RI_TPTE_STAGSTATE) & M_FW_RI_TPTE_STAGSTATE)
|
|
|
|
#define F_FW_RI_TPTE_STAGSTATE V_FW_RI_TPTE_STAGSTATE(1U)
|
|
|
|
|
|
|
|
#define S_FW_RI_TPTE_STAGTYPE 20
|
|
|
|
#define M_FW_RI_TPTE_STAGTYPE 0x3
|
|
|
|
#define V_FW_RI_TPTE_STAGTYPE(x) ((x) << S_FW_RI_TPTE_STAGTYPE)
|
|
|
|
#define G_FW_RI_TPTE_STAGTYPE(x) \
|
|
|
|
(((x) >> S_FW_RI_TPTE_STAGTYPE) & M_FW_RI_TPTE_STAGTYPE)
|
|
|
|
|
|
|
|
#define S_FW_RI_TPTE_PDID 0
|
|
|
|
#define M_FW_RI_TPTE_PDID 0xfffff
|
|
|
|
#define V_FW_RI_TPTE_PDID(x) ((x) << S_FW_RI_TPTE_PDID)
|
|
|
|
#define G_FW_RI_TPTE_PDID(x) \
|
|
|
|
(((x) >> S_FW_RI_TPTE_PDID) & M_FW_RI_TPTE_PDID)
|
|
|
|
|
|
|
|
#define S_FW_RI_TPTE_PERM 28
|
|
|
|
#define M_FW_RI_TPTE_PERM 0xf
|
|
|
|
#define V_FW_RI_TPTE_PERM(x) ((x) << S_FW_RI_TPTE_PERM)
|
|
|
|
#define G_FW_RI_TPTE_PERM(x) \
|
|
|
|
(((x) >> S_FW_RI_TPTE_PERM) & M_FW_RI_TPTE_PERM)
|
|
|
|
|
|
|
|
#define S_FW_RI_TPTE_REMINVDIS 27
|
|
|
|
#define M_FW_RI_TPTE_REMINVDIS 0x1
|
|
|
|
#define V_FW_RI_TPTE_REMINVDIS(x) ((x) << S_FW_RI_TPTE_REMINVDIS)
|
|
|
|
#define G_FW_RI_TPTE_REMINVDIS(x) \
|
|
|
|
(((x) >> S_FW_RI_TPTE_REMINVDIS) & M_FW_RI_TPTE_REMINVDIS)
|
|
|
|
#define F_FW_RI_TPTE_REMINVDIS V_FW_RI_TPTE_REMINVDIS(1U)
|
|
|
|
|
|
|
|
#define S_FW_RI_TPTE_ADDRTYPE 26
|
|
|
|
#define M_FW_RI_TPTE_ADDRTYPE 1
|
|
|
|
#define V_FW_RI_TPTE_ADDRTYPE(x) ((x) << S_FW_RI_TPTE_ADDRTYPE)
|
|
|
|
#define G_FW_RI_TPTE_ADDRTYPE(x) \
|
|
|
|
(((x) >> S_FW_RI_TPTE_ADDRTYPE) & M_FW_RI_TPTE_ADDRTYPE)
|
|
|
|
#define F_FW_RI_TPTE_ADDRTYPE V_FW_RI_TPTE_ADDRTYPE(1U)
|
|
|
|
|
|
|
|
#define S_FW_RI_TPTE_MWBINDEN 25
|
|
|
|
#define M_FW_RI_TPTE_MWBINDEN 0x1
|
|
|
|
#define V_FW_RI_TPTE_MWBINDEN(x) ((x) << S_FW_RI_TPTE_MWBINDEN)
|
|
|
|
#define G_FW_RI_TPTE_MWBINDEN(x) \
|
|
|
|
(((x) >> S_FW_RI_TPTE_MWBINDEN) & M_FW_RI_TPTE_MWBINDEN)
|
|
|
|
#define F_FW_RI_TPTE_MWBINDEN V_FW_RI_TPTE_MWBINDEN(1U)
|
|
|
|
|
|
|
|
#define S_FW_RI_TPTE_PS 20
|
|
|
|
#define M_FW_RI_TPTE_PS 0x1f
|
|
|
|
#define V_FW_RI_TPTE_PS(x) ((x) << S_FW_RI_TPTE_PS)
|
|
|
|
#define G_FW_RI_TPTE_PS(x) \
|
|
|
|
(((x) >> S_FW_RI_TPTE_PS) & M_FW_RI_TPTE_PS)
|
|
|
|
|
|
|
|
#define S_FW_RI_TPTE_QPID 0
|
|
|
|
#define M_FW_RI_TPTE_QPID 0xfffff
|
|
|
|
#define V_FW_RI_TPTE_QPID(x) ((x) << S_FW_RI_TPTE_QPID)
|
|
|
|
#define G_FW_RI_TPTE_QPID(x) \
|
|
|
|
(((x) >> S_FW_RI_TPTE_QPID) & M_FW_RI_TPTE_QPID)
|
|
|
|
|
|
|
|
#define S_FW_RI_TPTE_NOSNOOP 30
|
|
|
|
#define M_FW_RI_TPTE_NOSNOOP 0x1
|
|
|
|
#define V_FW_RI_TPTE_NOSNOOP(x) ((x) << S_FW_RI_TPTE_NOSNOOP)
|
|
|
|
#define G_FW_RI_TPTE_NOSNOOP(x) \
|
|
|
|
(((x) >> S_FW_RI_TPTE_NOSNOOP) & M_FW_RI_TPTE_NOSNOOP)
|
|
|
|
#define F_FW_RI_TPTE_NOSNOOP V_FW_RI_TPTE_NOSNOOP(1U)
|
|
|
|
|
|
|
|
#define S_FW_RI_TPTE_PBLADDR 0
|
|
|
|
#define M_FW_RI_TPTE_PBLADDR 0x1fffffff
|
|
|
|
#define V_FW_RI_TPTE_PBLADDR(x) ((x) << S_FW_RI_TPTE_PBLADDR)
|
|
|
|
#define G_FW_RI_TPTE_PBLADDR(x) \
|
|
|
|
(((x) >> S_FW_RI_TPTE_PBLADDR) & M_FW_RI_TPTE_PBLADDR)
|
|
|
|
|
|
|
|
#define S_FW_RI_TPTE_DCA 24
|
|
|
|
#define M_FW_RI_TPTE_DCA 0x1f
|
|
|
|
#define V_FW_RI_TPTE_DCA(x) ((x) << S_FW_RI_TPTE_DCA)
|
|
|
|
#define G_FW_RI_TPTE_DCA(x) \
|
|
|
|
(((x) >> S_FW_RI_TPTE_DCA) & M_FW_RI_TPTE_DCA)
|
|
|
|
|
|
|
|
#define S_FW_RI_TPTE_MWBCNT_PSTAG 0
|
|
|
|
#define M_FW_RI_TPTE_MWBCNT_PSTAG 0xffffff
|
|
|
|
#define V_FW_RI_TPTE_MWBCNT_PSTAT(x) \
|
|
|
|
((x) << S_FW_RI_TPTE_MWBCNT_PSTAG)
|
|
|
|
#define G_FW_RI_TPTE_MWBCNT_PSTAG(x) \
|
|
|
|
(((x) >> S_FW_RI_TPTE_MWBCNT_PSTAG) & M_FW_RI_TPTE_MWBCNT_PSTAG)
|
|
|
|
|
|
|
|
enum fw_ri_res_type {
|
|
|
|
FW_RI_RES_TYPE_SQ,
|
|
|
|
FW_RI_RES_TYPE_RQ,
|
|
|
|
FW_RI_RES_TYPE_CQ,
|
|
|
|
};
|
|
|
|
|
|
|
|
enum fw_ri_res_op {
|
|
|
|
FW_RI_RES_OP_WRITE,
|
|
|
|
FW_RI_RES_OP_RESET,
|
|
|
|
};
|
|
|
|
|
|
|
|
struct fw_ri_res {
|
|
|
|
union fw_ri_restype {
|
|
|
|
struct fw_ri_res_sqrq {
|
|
|
|
__u8 restype;
|
|
|
|
__u8 op;
|
|
|
|
__be16 r3;
|
|
|
|
__be32 eqid;
|
|
|
|
__be32 r4[2];
|
|
|
|
__be32 fetchszm_to_iqid;
|
|
|
|
__be32 dcaen_to_eqsize;
|
|
|
|
__be64 eqaddr;
|
|
|
|
} sqrq;
|
|
|
|
struct fw_ri_res_cq {
|
|
|
|
__u8 restype;
|
|
|
|
__u8 op;
|
|
|
|
__be16 r3;
|
|
|
|
__be32 iqid;
|
|
|
|
__be32 r4[2];
|
|
|
|
__be32 iqandst_to_iqandstindex;
|
|
|
|
__be16 iqdroprss_to_iqesize;
|
|
|
|
__be16 iqsize;
|
|
|
|
__be64 iqaddr;
|
|
|
|
__be32 iqns_iqro;
|
|
|
|
__be32 r6_lo;
|
|
|
|
__be64 r7;
|
|
|
|
} cq;
|
|
|
|
} u;
|
|
|
|
};
|
|
|
|
|
|
|
|
struct fw_ri_res_wr {
|
|
|
|
__be32 op_nres;
|
|
|
|
__be32 len16_pkd;
|
|
|
|
__u64 cookie;
|
|
|
|
#ifndef C99_NOT_SUPPORTED
|
|
|
|
struct fw_ri_res res[0];
|
|
|
|
#endif
|
|
|
|
};
|
|
|
|
|
|
|
|
#define S_FW_RI_RES_WR_NRES 0
|
|
|
|
#define M_FW_RI_RES_WR_NRES 0xff
|
|
|
|
#define V_FW_RI_RES_WR_NRES(x) ((x) << S_FW_RI_RES_WR_NRES)
|
|
|
|
#define G_FW_RI_RES_WR_NRES(x) \
|
|
|
|
(((x) >> S_FW_RI_RES_WR_NRES) & M_FW_RI_RES_WR_NRES)
|
|
|
|
|
|
|
|
#define S_FW_RI_RES_WR_FETCHSZM 26
|
|
|
|
#define M_FW_RI_RES_WR_FETCHSZM 0x1
|
|
|
|
#define V_FW_RI_RES_WR_FETCHSZM(x) ((x) << S_FW_RI_RES_WR_FETCHSZM)
|
|
|
|
#define G_FW_RI_RES_WR_FETCHSZM(x) \
|
|
|
|
(((x) >> S_FW_RI_RES_WR_FETCHSZM) & M_FW_RI_RES_WR_FETCHSZM)
|
|
|
|
#define F_FW_RI_RES_WR_FETCHSZM V_FW_RI_RES_WR_FETCHSZM(1U)
|
|
|
|
|
|
|
|
#define S_FW_RI_RES_WR_STATUSPGNS 25
|
|
|
|
#define M_FW_RI_RES_WR_STATUSPGNS 0x1
|
|
|
|
#define V_FW_RI_RES_WR_STATUSPGNS(x) ((x) << S_FW_RI_RES_WR_STATUSPGNS)
|
|
|
|
#define G_FW_RI_RES_WR_STATUSPGNS(x) \
|
|
|
|
(((x) >> S_FW_RI_RES_WR_STATUSPGNS) & M_FW_RI_RES_WR_STATUSPGNS)
|
|
|
|
#define F_FW_RI_RES_WR_STATUSPGNS V_FW_RI_RES_WR_STATUSPGNS(1U)
|
|
|
|
|
|
|
|
#define S_FW_RI_RES_WR_STATUSPGRO 24
|
|
|
|
#define M_FW_RI_RES_WR_STATUSPGRO 0x1
|
|
|
|
#define V_FW_RI_RES_WR_STATUSPGRO(x) ((x) << S_FW_RI_RES_WR_STATUSPGRO)
|
|
|
|
#define G_FW_RI_RES_WR_STATUSPGRO(x) \
|
|
|
|
(((x) >> S_FW_RI_RES_WR_STATUSPGRO) & M_FW_RI_RES_WR_STATUSPGRO)
|
|
|
|
#define F_FW_RI_RES_WR_STATUSPGRO V_FW_RI_RES_WR_STATUSPGRO(1U)
|
|
|
|
|
|
|
|
#define S_FW_RI_RES_WR_FETCHNS 23
|
|
|
|
#define M_FW_RI_RES_WR_FETCHNS 0x1
|
|
|
|
#define V_FW_RI_RES_WR_FETCHNS(x) ((x) << S_FW_RI_RES_WR_FETCHNS)
|
|
|
|
#define G_FW_RI_RES_WR_FETCHNS(x) \
|
|
|
|
(((x) >> S_FW_RI_RES_WR_FETCHNS) & M_FW_RI_RES_WR_FETCHNS)
|
|
|
|
#define F_FW_RI_RES_WR_FETCHNS V_FW_RI_RES_WR_FETCHNS(1U)
|
|
|
|
|
|
|
|
#define S_FW_RI_RES_WR_FETCHRO 22
|
|
|
|
#define M_FW_RI_RES_WR_FETCHRO 0x1
|
|
|
|
#define V_FW_RI_RES_WR_FETCHRO(x) ((x) << S_FW_RI_RES_WR_FETCHRO)
|
|
|
|
#define G_FW_RI_RES_WR_FETCHRO(x) \
|
|
|
|
(((x) >> S_FW_RI_RES_WR_FETCHRO) & M_FW_RI_RES_WR_FETCHRO)
|
|
|
|
#define F_FW_RI_RES_WR_FETCHRO V_FW_RI_RES_WR_FETCHRO(1U)
|
|
|
|
|
|
|
|
#define S_FW_RI_RES_WR_HOSTFCMODE 20
|
|
|
|
#define M_FW_RI_RES_WR_HOSTFCMODE 0x3
|
|
|
|
#define V_FW_RI_RES_WR_HOSTFCMODE(x) ((x) << S_FW_RI_RES_WR_HOSTFCMODE)
|
|
|
|
#define G_FW_RI_RES_WR_HOSTFCMODE(x) \
|
|
|
|
(((x) >> S_FW_RI_RES_WR_HOSTFCMODE) & M_FW_RI_RES_WR_HOSTFCMODE)
|
|
|
|
|
|
|
|
#define S_FW_RI_RES_WR_CPRIO 19
|
|
|
|
#define M_FW_RI_RES_WR_CPRIO 0x1
|
|
|
|
#define V_FW_RI_RES_WR_CPRIO(x) ((x) << S_FW_RI_RES_WR_CPRIO)
|
|
|
|
#define G_FW_RI_RES_WR_CPRIO(x) \
|
|
|
|
(((x) >> S_FW_RI_RES_WR_CPRIO) & M_FW_RI_RES_WR_CPRIO)
|
|
|
|
#define F_FW_RI_RES_WR_CPRIO V_FW_RI_RES_WR_CPRIO(1U)
|
|
|
|
|
|
|
|
#define S_FW_RI_RES_WR_ONCHIP 18
|
|
|
|
#define M_FW_RI_RES_WR_ONCHIP 0x1
|
|
|
|
#define V_FW_RI_RES_WR_ONCHIP(x) ((x) << S_FW_RI_RES_WR_ONCHIP)
|
|
|
|
#define G_FW_RI_RES_WR_ONCHIP(x) \
|
|
|
|
(((x) >> S_FW_RI_RES_WR_ONCHIP) & M_FW_RI_RES_WR_ONCHIP)
|
|
|
|
#define F_FW_RI_RES_WR_ONCHIP V_FW_RI_RES_WR_ONCHIP(1U)
|
|
|
|
|
|
|
|
#define S_FW_RI_RES_WR_PCIECHN 16
|
|
|
|
#define M_FW_RI_RES_WR_PCIECHN 0x3
|
|
|
|
#define V_FW_RI_RES_WR_PCIECHN(x) ((x) << S_FW_RI_RES_WR_PCIECHN)
|
|
|
|
#define G_FW_RI_RES_WR_PCIECHN(x) \
|
|
|
|
(((x) >> S_FW_RI_RES_WR_PCIECHN) & M_FW_RI_RES_WR_PCIECHN)
|
|
|
|
|
|
|
|
#define S_FW_RI_RES_WR_IQID 0
|
|
|
|
#define M_FW_RI_RES_WR_IQID 0xffff
|
|
|
|
#define V_FW_RI_RES_WR_IQID(x) ((x) << S_FW_RI_RES_WR_IQID)
|
|
|
|
#define G_FW_RI_RES_WR_IQID(x) \
|
|
|
|
(((x) >> S_FW_RI_RES_WR_IQID) & M_FW_RI_RES_WR_IQID)
|
|
|
|
|
|
|
|
#define S_FW_RI_RES_WR_DCAEN 31
|
|
|
|
#define M_FW_RI_RES_WR_DCAEN 0x1
|
|
|
|
#define V_FW_RI_RES_WR_DCAEN(x) ((x) << S_FW_RI_RES_WR_DCAEN)
|
|
|
|
#define G_FW_RI_RES_WR_DCAEN(x) \
|
|
|
|
(((x) >> S_FW_RI_RES_WR_DCAEN) & M_FW_RI_RES_WR_DCAEN)
|
|
|
|
#define F_FW_RI_RES_WR_DCAEN V_FW_RI_RES_WR_DCAEN(1U)
|
|
|
|
|
|
|
|
#define S_FW_RI_RES_WR_DCACPU 26
|
|
|
|
#define M_FW_RI_RES_WR_DCACPU 0x1f
|
|
|
|
#define V_FW_RI_RES_WR_DCACPU(x) ((x) << S_FW_RI_RES_WR_DCACPU)
|
|
|
|
#define G_FW_RI_RES_WR_DCACPU(x) \
|
|
|
|
(((x) >> S_FW_RI_RES_WR_DCACPU) & M_FW_RI_RES_WR_DCACPU)
|
|
|
|
|
|
|
|
#define S_FW_RI_RES_WR_FBMIN 23
|
|
|
|
#define M_FW_RI_RES_WR_FBMIN 0x7
|
|
|
|
#define V_FW_RI_RES_WR_FBMIN(x) ((x) << S_FW_RI_RES_WR_FBMIN)
|
|
|
|
#define G_FW_RI_RES_WR_FBMIN(x) \
|
|
|
|
(((x) >> S_FW_RI_RES_WR_FBMIN) & M_FW_RI_RES_WR_FBMIN)
|
|
|
|
|
|
|
|
#define S_FW_RI_RES_WR_FBMAX 20
|
|
|
|
#define M_FW_RI_RES_WR_FBMAX 0x7
|
|
|
|
#define V_FW_RI_RES_WR_FBMAX(x) ((x) << S_FW_RI_RES_WR_FBMAX)
|
|
|
|
#define G_FW_RI_RES_WR_FBMAX(x) \
|
|
|
|
(((x) >> S_FW_RI_RES_WR_FBMAX) & M_FW_RI_RES_WR_FBMAX)
|
|
|
|
|
|
|
|
#define S_FW_RI_RES_WR_CIDXFTHRESHO 19
|
|
|
|
#define M_FW_RI_RES_WR_CIDXFTHRESHO 0x1
|
|
|
|
#define V_FW_RI_RES_WR_CIDXFTHRESHO(x) ((x) << S_FW_RI_RES_WR_CIDXFTHRESHO)
|
|
|
|
#define G_FW_RI_RES_WR_CIDXFTHRESHO(x) \
|
|
|
|
(((x) >> S_FW_RI_RES_WR_CIDXFTHRESHO) & M_FW_RI_RES_WR_CIDXFTHRESHO)
|
|
|
|
#define F_FW_RI_RES_WR_CIDXFTHRESHO V_FW_RI_RES_WR_CIDXFTHRESHO(1U)
|
|
|
|
|
|
|
|
#define S_FW_RI_RES_WR_CIDXFTHRESH 16
|
|
|
|
#define M_FW_RI_RES_WR_CIDXFTHRESH 0x7
|
|
|
|
#define V_FW_RI_RES_WR_CIDXFTHRESH(x) ((x) << S_FW_RI_RES_WR_CIDXFTHRESH)
|
|
|
|
#define G_FW_RI_RES_WR_CIDXFTHRESH(x) \
|
|
|
|
(((x) >> S_FW_RI_RES_WR_CIDXFTHRESH) & M_FW_RI_RES_WR_CIDXFTHRESH)
|
|
|
|
|
|
|
|
#define S_FW_RI_RES_WR_EQSIZE 0
|
|
|
|
#define M_FW_RI_RES_WR_EQSIZE 0xffff
|
|
|
|
#define V_FW_RI_RES_WR_EQSIZE(x) ((x) << S_FW_RI_RES_WR_EQSIZE)
|
|
|
|
#define G_FW_RI_RES_WR_EQSIZE(x) \
|
|
|
|
(((x) >> S_FW_RI_RES_WR_EQSIZE) & M_FW_RI_RES_WR_EQSIZE)
|
|
|
|
|
|
|
|
#define S_FW_RI_RES_WR_IQANDST 15
|
|
|
|
#define M_FW_RI_RES_WR_IQANDST 0x1
|
|
|
|
#define V_FW_RI_RES_WR_IQANDST(x) ((x) << S_FW_RI_RES_WR_IQANDST)
|
|
|
|
#define G_FW_RI_RES_WR_IQANDST(x) \
|
|
|
|
(((x) >> S_FW_RI_RES_WR_IQANDST) & M_FW_RI_RES_WR_IQANDST)
|
|
|
|
#define F_FW_RI_RES_WR_IQANDST V_FW_RI_RES_WR_IQANDST(1U)
|
|
|
|
|
|
|
|
#define S_FW_RI_RES_WR_IQANUS 14
|
|
|
|
#define M_FW_RI_RES_WR_IQANUS 0x1
|
|
|
|
#define V_FW_RI_RES_WR_IQANUS(x) ((x) << S_FW_RI_RES_WR_IQANUS)
|
|
|
|
#define G_FW_RI_RES_WR_IQANUS(x) \
|
|
|
|
(((x) >> S_FW_RI_RES_WR_IQANUS) & M_FW_RI_RES_WR_IQANUS)
|
|
|
|
#define F_FW_RI_RES_WR_IQANUS V_FW_RI_RES_WR_IQANUS(1U)
|
|
|
|
|
|
|
|
#define S_FW_RI_RES_WR_IQANUD 12
|
|
|
|
#define M_FW_RI_RES_WR_IQANUD 0x3
|
|
|
|
#define V_FW_RI_RES_WR_IQANUD(x) ((x) << S_FW_RI_RES_WR_IQANUD)
|
|
|
|
#define G_FW_RI_RES_WR_IQANUD(x) \
|
|
|
|
(((x) >> S_FW_RI_RES_WR_IQANUD) & M_FW_RI_RES_WR_IQANUD)
|
|
|
|
|
|
|
|
#define S_FW_RI_RES_WR_IQANDSTINDEX 0
|
|
|
|
#define M_FW_RI_RES_WR_IQANDSTINDEX 0xfff
|
|
|
|
#define V_FW_RI_RES_WR_IQANDSTINDEX(x) ((x) << S_FW_RI_RES_WR_IQANDSTINDEX)
|
|
|
|
#define G_FW_RI_RES_WR_IQANDSTINDEX(x) \
|
|
|
|
(((x) >> S_FW_RI_RES_WR_IQANDSTINDEX) & M_FW_RI_RES_WR_IQANDSTINDEX)
|
|
|
|
|
|
|
|
#define S_FW_RI_RES_WR_IQDROPRSS 15
|
|
|
|
#define M_FW_RI_RES_WR_IQDROPRSS 0x1
|
|
|
|
#define V_FW_RI_RES_WR_IQDROPRSS(x) ((x) << S_FW_RI_RES_WR_IQDROPRSS)
|
|
|
|
#define G_FW_RI_RES_WR_IQDROPRSS(x) \
|
|
|
|
(((x) >> S_FW_RI_RES_WR_IQDROPRSS) & M_FW_RI_RES_WR_IQDROPRSS)
|
|
|
|
#define F_FW_RI_RES_WR_IQDROPRSS V_FW_RI_RES_WR_IQDROPRSS(1U)
|
|
|
|
|
|
|
|
#define S_FW_RI_RES_WR_IQGTSMODE 14
|
|
|
|
#define M_FW_RI_RES_WR_IQGTSMODE 0x1
|
|
|
|
#define V_FW_RI_RES_WR_IQGTSMODE(x) ((x) << S_FW_RI_RES_WR_IQGTSMODE)
|
|
|
|
#define G_FW_RI_RES_WR_IQGTSMODE(x) \
|
|
|
|
(((x) >> S_FW_RI_RES_WR_IQGTSMODE) & M_FW_RI_RES_WR_IQGTSMODE)
|
|
|
|
#define F_FW_RI_RES_WR_IQGTSMODE V_FW_RI_RES_WR_IQGTSMODE(1U)
|
|
|
|
|
|
|
|
#define S_FW_RI_RES_WR_IQPCIECH 12
|
|
|
|
#define M_FW_RI_RES_WR_IQPCIECH 0x3
|
|
|
|
#define V_FW_RI_RES_WR_IQPCIECH(x) ((x) << S_FW_RI_RES_WR_IQPCIECH)
|
|
|
|
#define G_FW_RI_RES_WR_IQPCIECH(x) \
|
|
|
|
(((x) >> S_FW_RI_RES_WR_IQPCIECH) & M_FW_RI_RES_WR_IQPCIECH)
|
|
|
|
|
|
|
|
#define S_FW_RI_RES_WR_IQDCAEN 11
|
|
|
|
#define M_FW_RI_RES_WR_IQDCAEN 0x1
|
|
|
|
#define V_FW_RI_RES_WR_IQDCAEN(x) ((x) << S_FW_RI_RES_WR_IQDCAEN)
|
|
|
|
#define G_FW_RI_RES_WR_IQDCAEN(x) \
|
|
|
|
(((x) >> S_FW_RI_RES_WR_IQDCAEN) & M_FW_RI_RES_WR_IQDCAEN)
|
|
|
|
#define F_FW_RI_RES_WR_IQDCAEN V_FW_RI_RES_WR_IQDCAEN(1U)
|
|
|
|
|
|
|
|
#define S_FW_RI_RES_WR_IQDCACPU 6
|
|
|
|
#define M_FW_RI_RES_WR_IQDCACPU 0x1f
|
|
|
|
#define V_FW_RI_RES_WR_IQDCACPU(x) ((x) << S_FW_RI_RES_WR_IQDCACPU)
|
|
|
|
#define G_FW_RI_RES_WR_IQDCACPU(x) \
|
|
|
|
(((x) >> S_FW_RI_RES_WR_IQDCACPU) & M_FW_RI_RES_WR_IQDCACPU)
|
|
|
|
|
|
|
|
#define S_FW_RI_RES_WR_IQINTCNTTHRESH 4
|
|
|
|
#define M_FW_RI_RES_WR_IQINTCNTTHRESH 0x3
|
|
|
|
#define V_FW_RI_RES_WR_IQINTCNTTHRESH(x) \
|
|
|
|
((x) << S_FW_RI_RES_WR_IQINTCNTTHRESH)
|
|
|
|
#define G_FW_RI_RES_WR_IQINTCNTTHRESH(x) \
|
|
|
|
(((x) >> S_FW_RI_RES_WR_IQINTCNTTHRESH) & M_FW_RI_RES_WR_IQINTCNTTHRESH)
|
|
|
|
|
|
|
|
#define S_FW_RI_RES_WR_IQO 3
|
|
|
|
#define M_FW_RI_RES_WR_IQO 0x1
|
|
|
|
#define V_FW_RI_RES_WR_IQO(x) ((x) << S_FW_RI_RES_WR_IQO)
|
|
|
|
#define G_FW_RI_RES_WR_IQO(x) \
|
|
|
|
(((x) >> S_FW_RI_RES_WR_IQO) & M_FW_RI_RES_WR_IQO)
|
|
|
|
#define F_FW_RI_RES_WR_IQO V_FW_RI_RES_WR_IQO(1U)
|
|
|
|
|
|
|
|
#define S_FW_RI_RES_WR_IQCPRIO 2
|
|
|
|
#define M_FW_RI_RES_WR_IQCPRIO 0x1
|
|
|
|
#define V_FW_RI_RES_WR_IQCPRIO(x) ((x) << S_FW_RI_RES_WR_IQCPRIO)
|
|
|
|
#define G_FW_RI_RES_WR_IQCPRIO(x) \
|
|
|
|
(((x) >> S_FW_RI_RES_WR_IQCPRIO) & M_FW_RI_RES_WR_IQCPRIO)
|
|
|
|
#define F_FW_RI_RES_WR_IQCPRIO V_FW_RI_RES_WR_IQCPRIO(1U)
|
|
|
|
|
|
|
|
#define S_FW_RI_RES_WR_IQESIZE 0
|
|
|
|
#define M_FW_RI_RES_WR_IQESIZE 0x3
|
|
|
|
#define V_FW_RI_RES_WR_IQESIZE(x) ((x) << S_FW_RI_RES_WR_IQESIZE)
|
|
|
|
#define G_FW_RI_RES_WR_IQESIZE(x) \
|
|
|
|
(((x) >> S_FW_RI_RES_WR_IQESIZE) & M_FW_RI_RES_WR_IQESIZE)
|
|
|
|
|
|
|
|
#define S_FW_RI_RES_WR_IQNS 31
|
|
|
|
#define M_FW_RI_RES_WR_IQNS 0x1
|
|
|
|
#define V_FW_RI_RES_WR_IQNS(x) ((x) << S_FW_RI_RES_WR_IQNS)
|
|
|
|
#define G_FW_RI_RES_WR_IQNS(x) \
|
|
|
|
(((x) >> S_FW_RI_RES_WR_IQNS) & M_FW_RI_RES_WR_IQNS)
|
|
|
|
#define F_FW_RI_RES_WR_IQNS V_FW_RI_RES_WR_IQNS(1U)
|
|
|
|
|
|
|
|
#define S_FW_RI_RES_WR_IQRO 30
|
|
|
|
#define M_FW_RI_RES_WR_IQRO 0x1
|
|
|
|
#define V_FW_RI_RES_WR_IQRO(x) ((x) << S_FW_RI_RES_WR_IQRO)
|
|
|
|
#define G_FW_RI_RES_WR_IQRO(x) \
|
|
|
|
(((x) >> S_FW_RI_RES_WR_IQRO) & M_FW_RI_RES_WR_IQRO)
|
|
|
|
#define F_FW_RI_RES_WR_IQRO V_FW_RI_RES_WR_IQRO(1U)
|
|
|
|
|
|
|
|
struct fw_ri_rdma_write_wr {
|
|
|
|
__u8 opcode;
|
|
|
|
__u8 flags;
|
|
|
|
__u16 wrid;
|
|
|
|
__u8 r1[3];
|
|
|
|
__u8 len16;
|
|
|
|
__be64 r2;
|
|
|
|
__be32 plen;
|
|
|
|
__be32 stag_sink;
|
|
|
|
__be64 to_sink;
|
|
|
|
#ifndef C99_NOT_SUPPORTED
|
|
|
|
union {
|
|
|
|
struct fw_ri_immd immd_src[0];
|
|
|
|
struct fw_ri_isgl isgl_src[0];
|
|
|
|
} u;
|
|
|
|
#endif
|
|
|
|
};
|
|
|
|
|
|
|
|
struct fw_ri_send_wr {
|
|
|
|
__u8 opcode;
|
|
|
|
__u8 flags;
|
|
|
|
__u16 wrid;
|
|
|
|
__u8 r1[3];
|
|
|
|
__u8 len16;
|
|
|
|
__be32 sendop_pkd;
|
|
|
|
__be32 stag_inv;
|
|
|
|
__be32 plen;
|
|
|
|
__be32 r3;
|
|
|
|
__be64 r4;
|
|
|
|
#ifndef C99_NOT_SUPPORTED
|
|
|
|
union {
|
|
|
|
struct fw_ri_immd immd_src[0];
|
|
|
|
struct fw_ri_isgl isgl_src[0];
|
|
|
|
} u;
|
|
|
|
#endif
|
|
|
|
};
|
|
|
|
|
|
|
|
#define S_FW_RI_SEND_WR_SENDOP 0
|
|
|
|
#define M_FW_RI_SEND_WR_SENDOP 0xf
|
|
|
|
#define V_FW_RI_SEND_WR_SENDOP(x) ((x) << S_FW_RI_SEND_WR_SENDOP)
|
|
|
|
#define G_FW_RI_SEND_WR_SENDOP(x) \
|
|
|
|
(((x) >> S_FW_RI_SEND_WR_SENDOP) & M_FW_RI_SEND_WR_SENDOP)
|
|
|
|
|
|
|
|
struct fw_ri_rdma_read_wr {
|
|
|
|
__u8 opcode;
|
|
|
|
__u8 flags;
|
|
|
|
__u16 wrid;
|
|
|
|
__u8 r1[3];
|
|
|
|
__u8 len16;
|
|
|
|
__be64 r2;
|
|
|
|
__be32 stag_sink;
|
|
|
|
__be32 to_sink_hi;
|
|
|
|
__be32 to_sink_lo;
|
|
|
|
__be32 plen;
|
|
|
|
__be32 stag_src;
|
|
|
|
__be32 to_src_hi;
|
|
|
|
__be32 to_src_lo;
|
|
|
|
__be32 r5;
|
|
|
|
};
|
|
|
|
|
|
|
|
struct fw_ri_recv_wr {
|
|
|
|
__u8 opcode;
|
|
|
|
__u8 r1;
|
|
|
|
__u16 wrid;
|
|
|
|
__u8 r2[3];
|
|
|
|
__u8 len16;
|
|
|
|
struct fw_ri_isgl isgl;
|
|
|
|
};
|
|
|
|
|
|
|
|
struct fw_ri_bind_mw_wr {
|
|
|
|
__u8 opcode;
|
|
|
|
__u8 flags;
|
|
|
|
__u16 wrid;
|
|
|
|
__u8 r1[3];
|
|
|
|
__u8 len16;
|
|
|
|
__u8 qpbinde_to_dcacpu;
|
|
|
|
__u8 pgsz_shift;
|
|
|
|
__u8 addr_type;
|
|
|
|
__u8 mem_perms;
|
|
|
|
__be32 stag_mr;
|
|
|
|
__be32 stag_mw;
|
|
|
|
__be32 r3;
|
|
|
|
__be64 len_mw;
|
|
|
|
__be64 va_fbo;
|
|
|
|
__be64 r4;
|
|
|
|
};
|
|
|
|
|
|
|
|
#define S_FW_RI_BIND_MW_WR_QPBINDE 6
|
|
|
|
#define M_FW_RI_BIND_MW_WR_QPBINDE 0x1
|
|
|
|
#define V_FW_RI_BIND_MW_WR_QPBINDE(x) ((x) << S_FW_RI_BIND_MW_WR_QPBINDE)
|
|
|
|
#define G_FW_RI_BIND_MW_WR_QPBINDE(x) \
|
|
|
|
(((x) >> S_FW_RI_BIND_MW_WR_QPBINDE) & M_FW_RI_BIND_MW_WR_QPBINDE)
|
|
|
|
#define F_FW_RI_BIND_MW_WR_QPBINDE V_FW_RI_BIND_MW_WR_QPBINDE(1U)
|
|
|
|
|
|
|
|
#define S_FW_RI_BIND_MW_WR_NS 5
|
|
|
|
#define M_FW_RI_BIND_MW_WR_NS 0x1
|
|
|
|
#define V_FW_RI_BIND_MW_WR_NS(x) ((x) << S_FW_RI_BIND_MW_WR_NS)
|
|
|
|
#define G_FW_RI_BIND_MW_WR_NS(x) \
|
|
|
|
(((x) >> S_FW_RI_BIND_MW_WR_NS) & M_FW_RI_BIND_MW_WR_NS)
|
|
|
|
#define F_FW_RI_BIND_MW_WR_NS V_FW_RI_BIND_MW_WR_NS(1U)
|
|
|
|
|
|
|
|
#define S_FW_RI_BIND_MW_WR_DCACPU 0
|
|
|
|
#define M_FW_RI_BIND_MW_WR_DCACPU 0x1f
|
|
|
|
#define V_FW_RI_BIND_MW_WR_DCACPU(x) ((x) << S_FW_RI_BIND_MW_WR_DCACPU)
|
|
|
|
#define G_FW_RI_BIND_MW_WR_DCACPU(x) \
|
|
|
|
(((x) >> S_FW_RI_BIND_MW_WR_DCACPU) & M_FW_RI_BIND_MW_WR_DCACPU)
|
|
|
|
|
|
|
|
struct fw_ri_fr_nsmr_wr {
|
|
|
|
__u8 opcode;
|
|
|
|
__u8 flags;
|
|
|
|
__u16 wrid;
|
|
|
|
__u8 r1[3];
|
|
|
|
__u8 len16;
|
|
|
|
__u8 qpbinde_to_dcacpu;
|
|
|
|
__u8 pgsz_shift;
|
|
|
|
__u8 addr_type;
|
|
|
|
__u8 mem_perms;
|
|
|
|
__be32 stag;
|
|
|
|
__be32 len_hi;
|
|
|
|
__be32 len_lo;
|
|
|
|
__be32 va_hi;
|
|
|
|
__be32 va_lo_fbo;
|
|
|
|
};
|
|
|
|
|
|
|
|
#define S_FW_RI_FR_NSMR_WR_QPBINDE 6
|
|
|
|
#define M_FW_RI_FR_NSMR_WR_QPBINDE 0x1
|
|
|
|
#define V_FW_RI_FR_NSMR_WR_QPBINDE(x) ((x) << S_FW_RI_FR_NSMR_WR_QPBINDE)
|
|
|
|
#define G_FW_RI_FR_NSMR_WR_QPBINDE(x) \
|
|
|
|
(((x) >> S_FW_RI_FR_NSMR_WR_QPBINDE) & M_FW_RI_FR_NSMR_WR_QPBINDE)
|
|
|
|
#define F_FW_RI_FR_NSMR_WR_QPBINDE V_FW_RI_FR_NSMR_WR_QPBINDE(1U)
|
|
|
|
|
|
|
|
#define S_FW_RI_FR_NSMR_WR_NS 5
|
|
|
|
#define M_FW_RI_FR_NSMR_WR_NS 0x1
|
|
|
|
#define V_FW_RI_FR_NSMR_WR_NS(x) ((x) << S_FW_RI_FR_NSMR_WR_NS)
|
|
|
|
#define G_FW_RI_FR_NSMR_WR_NS(x) \
|
|
|
|
(((x) >> S_FW_RI_FR_NSMR_WR_NS) & M_FW_RI_FR_NSMR_WR_NS)
|
|
|
|
#define F_FW_RI_FR_NSMR_WR_NS V_FW_RI_FR_NSMR_WR_NS(1U)
|
|
|
|
|
|
|
|
#define S_FW_RI_FR_NSMR_WR_DCACPU 0
|
|
|
|
#define M_FW_RI_FR_NSMR_WR_DCACPU 0x1f
|
|
|
|
#define V_FW_RI_FR_NSMR_WR_DCACPU(x) ((x) << S_FW_RI_FR_NSMR_WR_DCACPU)
|
|
|
|
#define G_FW_RI_FR_NSMR_WR_DCACPU(x) \
|
|
|
|
(((x) >> S_FW_RI_FR_NSMR_WR_DCACPU) & M_FW_RI_FR_NSMR_WR_DCACPU)
|
|
|
|
|
|
|
|
struct fw_ri_inv_lstag_wr {
|
|
|
|
__u8 opcode;
|
|
|
|
__u8 flags;
|
|
|
|
__u16 wrid;
|
|
|
|
__u8 r1[3];
|
|
|
|
__u8 len16;
|
|
|
|
__be32 r2;
|
|
|
|
__be32 stag_inv;
|
|
|
|
};
|
|
|
|
|
|
|
|
enum fw_ri_type {
|
|
|
|
FW_RI_TYPE_INIT,
|
|
|
|
FW_RI_TYPE_FINI,
|
|
|
|
FW_RI_TYPE_TERMINATE
|
|
|
|
};
|
|
|
|
|
|
|
|
enum fw_ri_init_p2ptype {
|
|
|
|
FW_RI_INIT_P2PTYPE_RDMA_WRITE = FW_RI_RDMA_WRITE,
|
|
|
|
FW_RI_INIT_P2PTYPE_READ_REQ = FW_RI_READ_REQ,
|
|
|
|
FW_RI_INIT_P2PTYPE_SEND = FW_RI_SEND,
|
|
|
|
FW_RI_INIT_P2PTYPE_SEND_WITH_INV = FW_RI_SEND_WITH_INV,
|
|
|
|
FW_RI_INIT_P2PTYPE_SEND_WITH_SE = FW_RI_SEND_WITH_SE,
|
|
|
|
FW_RI_INIT_P2PTYPE_SEND_WITH_SE_INV = FW_RI_SEND_WITH_SE_INV,
|
|
|
|
FW_RI_INIT_P2PTYPE_DISABLED = 0xf,
|
|
|
|
};
|
|
|
|
|
|
|
|
struct fw_ri_wr {
|
|
|
|
__be32 op_compl;
|
|
|
|
__be32 flowid_len16;
|
|
|
|
__u64 cookie;
|
|
|
|
union fw_ri {
|
|
|
|
struct fw_ri_init {
|
|
|
|
__u8 type;
|
|
|
|
__u8 mpareqbit_p2ptype;
|
|
|
|
__u8 r4[2];
|
|
|
|
__u8 mpa_attrs;
|
|
|
|
__u8 qp_caps;
|
|
|
|
__be16 nrqe;
|
|
|
|
__be32 pdid;
|
|
|
|
__be32 qpid;
|
|
|
|
__be32 sq_eqid;
|
|
|
|
__be32 rq_eqid;
|
|
|
|
__be32 scqid;
|
|
|
|
__be32 rcqid;
|
|
|
|
__be32 ord_max;
|
|
|
|
__be32 ird_max;
|
|
|
|
__be32 iss;
|
|
|
|
__be32 irs;
|
|
|
|
__be32 hwrqsize;
|
|
|
|
__be32 hwrqaddr;
|
|
|
|
__be64 r5;
|
|
|
|
union fw_ri_init_p2p {
|
|
|
|
struct fw_ri_rdma_write_wr write;
|
|
|
|
struct fw_ri_rdma_read_wr read;
|
|
|
|
struct fw_ri_send_wr send;
|
|
|
|
} u;
|
|
|
|
} init;
|
|
|
|
struct fw_ri_fini {
|
|
|
|
__u8 type;
|
|
|
|
__u8 r3[7];
|
|
|
|
__be64 r4;
|
|
|
|
} fini;
|
|
|
|
struct fw_ri_terminate {
|
|
|
|
__u8 type;
|
|
|
|
__u8 r3[3];
|
|
|
|
__be32 immdlen;
|
|
|
|
__u8 termmsg[40];
|
|
|
|
} terminate;
|
|
|
|
} u;
|
|
|
|
};
|
|
|
|
|
|
|
|
#define S_FW_RI_WR_MPAREQBIT 7
|
|
|
|
#define M_FW_RI_WR_MPAREQBIT 0x1
|
|
|
|
#define V_FW_RI_WR_MPAREQBIT(x) ((x) << S_FW_RI_WR_MPAREQBIT)
|
|
|
|
#define G_FW_RI_WR_MPAREQBIT(x) \
|
|
|
|
(((x) >> S_FW_RI_WR_MPAREQBIT) & M_FW_RI_WR_MPAREQBIT)
|
|
|
|
#define F_FW_RI_WR_MPAREQBIT V_FW_RI_WR_MPAREQBIT(1U)
|
|
|
|
|
|
|
|
#define S_FW_RI_WR_P2PTYPE 0
|
|
|
|
#define M_FW_RI_WR_P2PTYPE 0xf
|
|
|
|
#define V_FW_RI_WR_P2PTYPE(x) ((x) << S_FW_RI_WR_P2PTYPE)
|
|
|
|
#define G_FW_RI_WR_P2PTYPE(x) \
|
|
|
|
(((x) >> S_FW_RI_WR_P2PTYPE) & M_FW_RI_WR_P2PTYPE)
|
|
|
|
|
|
|
|
struct tcp_options {
|
|
|
|
__be16 mss;
|
|
|
|
__u8 wsf;
|
|
|
|
#if defined(__LITTLE_ENDIAN_BITFIELD)
|
|
|
|
__u8:4;
|
|
|
|
__u8 unknown:1;
|
|
|
|
__u8:1;
|
|
|
|
__u8 sack:1;
|
|
|
|
__u8 tstamp:1;
|
|
|
|
#else
|
|
|
|
__u8 tstamp:1;
|
|
|
|
__u8 sack:1;
|
|
|
|
__u8:1;
|
|
|
|
__u8 unknown:1;
|
|
|
|
__u8:4;
|
|
|
|
#endif
|
|
|
|
};
|
|
|
|
|
|
|
|
struct cpl_pass_accept_req {
|
|
|
|
union opcode_tid ot;
|
|
|
|
__be16 rsvd;
|
|
|
|
__be16 len;
|
|
|
|
__be32 hdr_len;
|
|
|
|
__be16 vlan;
|
|
|
|
__be16 l2info;
|
|
|
|
__be32 tos_stid;
|
|
|
|
struct tcp_options tcpopt;
|
|
|
|
};
|
|
|
|
|
|
|
|
/* cpl_pass_accept_req.hdr_len fields */
|
|
|
|
#define S_SYN_RX_CHAN 0
|
|
|
|
#define M_SYN_RX_CHAN 0xF
|
|
|
|
#define V_SYN_RX_CHAN(x) ((x) << S_SYN_RX_CHAN)
|
|
|
|
#define G_SYN_RX_CHAN(x) (((x) >> S_SYN_RX_CHAN) & M_SYN_RX_CHAN)
|
|
|
|
|
|
|
|
#define S_TCP_HDR_LEN 10
|
|
|
|
#define M_TCP_HDR_LEN 0x3F
|
|
|
|
#define V_TCP_HDR_LEN(x) ((x) << S_TCP_HDR_LEN)
|
|
|
|
#define G_TCP_HDR_LEN(x) (((x) >> S_TCP_HDR_LEN) & M_TCP_HDR_LEN)
|
|
|
|
|
|
|
|
#define S_IP_HDR_LEN 16
|
|
|
|
#define M_IP_HDR_LEN 0x3FF
|
|
|
|
#define V_IP_HDR_LEN(x) ((x) << S_IP_HDR_LEN)
|
|
|
|
#define G_IP_HDR_LEN(x) (((x) >> S_IP_HDR_LEN) & M_IP_HDR_LEN)
|
|
|
|
|
|
|
|
#define S_ETH_HDR_LEN 26
|
|
|
|
#define M_ETH_HDR_LEN 0x1F
|
|
|
|
#define V_ETH_HDR_LEN(x) ((x) << S_ETH_HDR_LEN)
|
|
|
|
#define G_ETH_HDR_LEN(x) (((x) >> S_ETH_HDR_LEN) & M_ETH_HDR_LEN)
|
|
|
|
|
|
|
|
/* cpl_pass_accept_req.l2info fields */
|
|
|
|
#define S_SYN_MAC_IDX 0
|
|
|
|
#define M_SYN_MAC_IDX 0x1FF
|
|
|
|
#define V_SYN_MAC_IDX(x) ((x) << S_SYN_MAC_IDX)
|
|
|
|
#define G_SYN_MAC_IDX(x) (((x) >> S_SYN_MAC_IDX) & M_SYN_MAC_IDX)
|
|
|
|
|
|
|
|
#define S_SYN_XACT_MATCH 9
|
|
|
|
#define V_SYN_XACT_MATCH(x) ((x) << S_SYN_XACT_MATCH)
|
|
|
|
#define F_SYN_XACT_MATCH V_SYN_XACT_MATCH(1U)
|
|
|
|
|
|
|
|
#define S_SYN_INTF 12
|
|
|
|
#define M_SYN_INTF 0xF
|
|
|
|
#define V_SYN_INTF(x) ((x) << S_SYN_INTF)
|
|
|
|
#define G_SYN_INTF(x) (((x) >> S_SYN_INTF) & M_SYN_INTF)
|
|
|
|
|
|
|
|
struct ulptx_idata {
|
|
|
|
__be32 cmd_more;
|
|
|
|
__be32 len;
|
|
|
|
};
|
|
|
|
|
|
|
|
#define S_ULPTX_NSGE 0
|
|
|
|
#define M_ULPTX_NSGE 0xFFFF
|
|
|
|
#define V_ULPTX_NSGE(x) ((x) << S_ULPTX_NSGE)
|
2010-06-23 22:46:49 +07:00
|
|
|
|
|
|
|
#define S_RX_DACK_MODE 29
|
|
|
|
#define M_RX_DACK_MODE 0x3
|
|
|
|
#define V_RX_DACK_MODE(x) ((x) << S_RX_DACK_MODE)
|
|
|
|
#define G_RX_DACK_MODE(x) (((x) >> S_RX_DACK_MODE) & M_RX_DACK_MODE)
|
|
|
|
|
|
|
|
#define S_RX_DACK_CHANGE 31
|
|
|
|
#define V_RX_DACK_CHANGE(x) ((x) << S_RX_DACK_CHANGE)
|
|
|
|
#define F_RX_DACK_CHANGE V_RX_DACK_CHANGE(1U)
|
|
|
|
|
2014-04-25 02:31:59 +07:00
|
|
|
enum { /* TCP congestion control algorithms */
|
|
|
|
CONG_ALG_RENO,
|
|
|
|
CONG_ALG_TAHOE,
|
|
|
|
CONG_ALG_NEWRENO,
|
|
|
|
CONG_ALG_HIGHSPEED
|
|
|
|
};
|
|
|
|
|
|
|
|
#define S_CONG_CNTRL 14
|
|
|
|
#define M_CONG_CNTRL 0x3
|
|
|
|
#define V_CONG_CNTRL(x) ((x) << S_CONG_CNTRL)
|
|
|
|
#define G_CONG_CNTRL(x) (((x) >> S_CONG_CNTRL) & M_CONG_CNTRL)
|
|
|
|
|
2014-06-06 23:10:43 +07:00
|
|
|
#define CONG_CNTRL_VALID (1 << 18)
|
2014-04-25 02:31:59 +07:00
|
|
|
|
2010-04-22 05:30:06 +07:00
|
|
|
#endif /* _T4FW_RI_API_H_ */
|