Path: blob/master/drivers/infiniband/hw/nes/nes_context.h
15112 views
/*1* Copyright (c) 2006 - 2009 Intel Corporation. All rights reserved.2*3* This software is available to you under a choice of one of two4* licenses. You may choose to be licensed under the terms of the GNU5* General Public License (GPL) Version 2, available from the file6* COPYING in the main directory of this source tree, or the7* OpenIB.org BSD license below:8*9* Redistribution and use in source and binary forms, with or10* without modification, are permitted provided that the following11* conditions are met:12*13* - Redistributions of source code must retain the above14* copyright notice, this list of conditions and the following15* disclaimer.16*17* - Redistributions in binary form must reproduce the above18* copyright notice, this list of conditions and the following19* disclaimer in the documentation and/or other materials20* provided with the distribution.21*22* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,23* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF24* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND25* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS26* BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN27* ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN28* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE29* SOFTWARE.30*/3132#ifndef NES_CONTEXT_H33#define NES_CONTEXT_H3435struct nes_qp_context {36__le32 misc;37__le32 cqs;38__le32 sq_addr_low;39__le32 sq_addr_high;40__le32 rq_addr_low;41__le32 rq_addr_high;42__le32 misc2;43__le16 tcpPorts[2];44__le32 ip0;45__le32 ip1;46__le32 ip2;47__le32 ip3;48__le32 mss;49__le32 arp_index_vlan;50__le32 tcp_state_flow_label;51__le32 pd_index_wscale;52__le32 keepalive;53u32 ts_recent;54u32 ts_age;55__le32 snd_nxt;56__le32 snd_wnd;57__le32 rcv_nxt;58__le32 rcv_wnd;59__le32 snd_max;60__le32 snd_una;61u32 srtt;62__le32 rttvar;63__le32 ssthresh;64__le32 cwnd;65__le32 snd_wl1;66__le32 snd_wl2;67__le32 max_snd_wnd;68__le32 ts_val_delta;69u32 retransmit;70u32 probe_cnt;71u32 hte_index;72__le32 q2_addr_low;73__le32 q2_addr_high;74__le32 ird_index;75u32 Rsvd3;76__le32 ird_ord_sizes;77u32 mrkr_offset;78__le32 aeq_token_low;79__le32 aeq_token_high;80};8182/* QP Context Misc Field */8384#define NES_QPCONTEXT_MISC_IWARP_VER_MASK 0x0000000385#define NES_QPCONTEXT_MISC_IWARP_VER_SHIFT 086#define NES_QPCONTEXT_MISC_EFB_SIZE_MASK 0x000000C087#define NES_QPCONTEXT_MISC_EFB_SIZE_SHIFT 688#define NES_QPCONTEXT_MISC_RQ_SIZE_MASK 0x0000030089#define NES_QPCONTEXT_MISC_RQ_SIZE_SHIFT 890#define NES_QPCONTEXT_MISC_SQ_SIZE_MASK 0x00000c0091#define NES_QPCONTEXT_MISC_SQ_SIZE_SHIFT 1092#define NES_QPCONTEXT_MISC_PCI_FCN_MASK 0x0000700093#define NES_QPCONTEXT_MISC_PCI_FCN_SHIFT 1294#define NES_QPCONTEXT_MISC_DUP_ACKS_MASK 0x0007000095#define NES_QPCONTEXT_MISC_DUP_ACKS_SHIFT 169697enum nes_qp_context_misc_bits {98NES_QPCONTEXT_MISC_RX_WQE_SIZE = 0x00000004,99NES_QPCONTEXT_MISC_IPV4 = 0x00000008,100NES_QPCONTEXT_MISC_DO_NOT_FRAG = 0x00000010,101NES_QPCONTEXT_MISC_INSERT_VLAN = 0x00000020,102NES_QPCONTEXT_MISC_DROS = 0x00008000,103NES_QPCONTEXT_MISC_WSCALE = 0x00080000,104NES_QPCONTEXT_MISC_KEEPALIVE = 0x00100000,105NES_QPCONTEXT_MISC_TIMESTAMP = 0x00200000,106NES_QPCONTEXT_MISC_SACK = 0x00400000,107NES_QPCONTEXT_MISC_RDMA_WRITE_EN = 0x00800000,108NES_QPCONTEXT_MISC_RDMA_READ_EN = 0x01000000,109NES_QPCONTEXT_MISC_WBIND_EN = 0x10000000,110NES_QPCONTEXT_MISC_FAST_REGISTER_EN = 0x20000000,111NES_QPCONTEXT_MISC_PRIV_EN = 0x40000000,112NES_QPCONTEXT_MISC_NO_NAGLE = 0x80000000113};114115enum nes_qp_acc_wq_sizes {116HCONTEXT_TSA_WQ_SIZE_4 = 0,117HCONTEXT_TSA_WQ_SIZE_32 = 1,118HCONTEXT_TSA_WQ_SIZE_128 = 2,119HCONTEXT_TSA_WQ_SIZE_512 = 3120};121122/* QP Context Misc2 Fields */123#define NES_QPCONTEXT_MISC2_TTL_MASK 0x000000ff124#define NES_QPCONTEXT_MISC2_TTL_SHIFT 0125#define NES_QPCONTEXT_MISC2_HOP_LIMIT_MASK 0x000000ff126#define NES_QPCONTEXT_MISC2_HOP_LIMIT_SHIFT 0127#define NES_QPCONTEXT_MISC2_LIMIT_MASK 0x00000300128#define NES_QPCONTEXT_MISC2_LIMIT_SHIFT 8129#define NES_QPCONTEXT_MISC2_NIC_INDEX_MASK 0x0000fc00130#define NES_QPCONTEXT_MISC2_NIC_INDEX_SHIFT 10131#define NES_QPCONTEXT_MISC2_SRC_IP_MASK 0x001f0000132#define NES_QPCONTEXT_MISC2_SRC_IP_SHIFT 16133#define NES_QPCONTEXT_MISC2_TOS_MASK 0xff000000134#define NES_QPCONTEXT_MISC2_TOS_SHIFT 24135#define NES_QPCONTEXT_MISC2_TRAFFIC_CLASS_MASK 0xff000000136#define NES_QPCONTEXT_MISC2_TRAFFIC_CLASS_SHIFT 24137138/* QP Context Tcp State/Flow Label Fields */139#define NES_QPCONTEXT_TCPFLOW_FLOW_LABEL_MASK 0x000fffff140#define NES_QPCONTEXT_TCPFLOW_FLOW_LABEL_SHIFT 0141#define NES_QPCONTEXT_TCPFLOW_TCP_STATE_MASK 0xf0000000142#define NES_QPCONTEXT_TCPFLOW_TCP_STATE_SHIFT 28143144enum nes_qp_tcp_state {145NES_QPCONTEXT_TCPSTATE_CLOSED = 1,146NES_QPCONTEXT_TCPSTATE_EST = 5,147NES_QPCONTEXT_TCPSTATE_TIME_WAIT = 11,148};149150/* QP Context PD Index/wscale Fields */151#define NES_QPCONTEXT_PDWSCALE_RCV_WSCALE_MASK 0x0000000f152#define NES_QPCONTEXT_PDWSCALE_RCV_WSCALE_SHIFT 0153#define NES_QPCONTEXT_PDWSCALE_SND_WSCALE_MASK 0x00000f00154#define NES_QPCONTEXT_PDWSCALE_SND_WSCALE_SHIFT 8155#define NES_QPCONTEXT_PDWSCALE_PDINDEX_MASK 0xffff0000156#define NES_QPCONTEXT_PDWSCALE_PDINDEX_SHIFT 16157158/* QP Context Keepalive Fields */159#define NES_QPCONTEXT_KEEPALIVE_DELTA_MASK 0x0000ffff160#define NES_QPCONTEXT_KEEPALIVE_DELTA_SHIFT 0161#define NES_QPCONTEXT_KEEPALIVE_PROBE_CNT_MASK 0x00ff0000162#define NES_QPCONTEXT_KEEPALIVE_PROBE_CNT_SHIFT 16163#define NES_QPCONTEXT_KEEPALIVE_INTV_MASK 0xff000000164#define NES_QPCONTEXT_KEEPALIVE_INTV_SHIFT 24165166/* QP Context ORD/IRD Fields */167#define NES_QPCONTEXT_ORDIRD_ORDSIZE_MASK 0x0000007f168#define NES_QPCONTEXT_ORDIRD_ORDSIZE_SHIFT 0169#define NES_QPCONTEXT_ORDIRD_IRDSIZE_MASK 0x00030000170#define NES_QPCONTEXT_ORDIRD_IRDSIZE_SHIFT 16171#define NES_QPCONTEXT_ORDIRD_IWARP_MODE_MASK 0x30000000172#define NES_QPCONTEXT_ORDIRD_IWARP_MODE_SHIFT 28173174enum nes_ord_ird_bits {175NES_QPCONTEXT_ORDIRD_WRPDU = 0x02000000,176NES_QPCONTEXT_ORDIRD_LSMM_PRESENT = 0x04000000,177NES_QPCONTEXT_ORDIRD_ALSMM = 0x08000000,178NES_QPCONTEXT_ORDIRD_AAH = 0x40000000,179NES_QPCONTEXT_ORDIRD_RNMC = 0x80000000180};181182enum nes_iwarp_qp_state {183NES_QPCONTEXT_IWARP_STATE_NONEXIST = 0,184NES_QPCONTEXT_IWARP_STATE_IDLE = 1,185NES_QPCONTEXT_IWARP_STATE_RTS = 2,186NES_QPCONTEXT_IWARP_STATE_CLOSING = 3,187NES_QPCONTEXT_IWARP_STATE_TERMINATE = 5,188NES_QPCONTEXT_IWARP_STATE_ERROR = 6189};190191192#endif /* NES_CONTEXT_H */193194195