Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB */
0002 /*
0003  * Copyright (c) 2016 Mellanox Technologies Ltd. All rights reserved.
0004  * Copyright (c) 2015 System Fabric Works, Inc. All rights reserved.
0005  */
0006 
0007 #ifndef RXE_PARAM_H
0008 #define RXE_PARAM_H
0009 
0010 #include <uapi/rdma/rdma_user_rxe.h>
0011 
0012 #define DEFAULT_MAX_VALUE (1 << 20)
0013 
0014 static inline enum ib_mtu rxe_mtu_int_to_enum(int mtu)
0015 {
0016     if (mtu < 256)
0017         return 0;
0018     else if (mtu < 512)
0019         return IB_MTU_256;
0020     else if (mtu < 1024)
0021         return IB_MTU_512;
0022     else if (mtu < 2048)
0023         return IB_MTU_1024;
0024     else if (mtu < 4096)
0025         return IB_MTU_2048;
0026     else
0027         return IB_MTU_4096;
0028 }
0029 
0030 /* Find the IB mtu for a given network MTU. */
0031 static inline enum ib_mtu eth_mtu_int_to_enum(int mtu)
0032 {
0033     mtu -= RXE_MAX_HDR_LENGTH;
0034 
0035     return rxe_mtu_int_to_enum(mtu);
0036 }
0037 
0038 /* default/initial rxe device parameter settings */
0039 enum rxe_device_param {
0040     RXE_MAX_MR_SIZE         = -1ull,
0041     RXE_PAGE_SIZE_CAP       = 0xfffff000,
0042     RXE_MAX_QP_WR           = DEFAULT_MAX_VALUE,
0043     RXE_DEVICE_CAP_FLAGS        = IB_DEVICE_BAD_PKEY_CNTR
0044                     | IB_DEVICE_BAD_QKEY_CNTR
0045                     | IB_DEVICE_AUTO_PATH_MIG
0046                     | IB_DEVICE_CHANGE_PHY_PORT
0047                     | IB_DEVICE_UD_AV_PORT_ENFORCE
0048                     | IB_DEVICE_PORT_ACTIVE_EVENT
0049                     | IB_DEVICE_SYS_IMAGE_GUID
0050                     | IB_DEVICE_RC_RNR_NAK_GEN
0051                     | IB_DEVICE_SRQ_RESIZE
0052                     | IB_DEVICE_MEM_MGT_EXTENSIONS
0053                     | IB_DEVICE_MEM_WINDOW
0054                     | IB_DEVICE_MEM_WINDOW_TYPE_2B,
0055     RXE_MAX_SGE         = 32,
0056     RXE_MAX_WQE_SIZE        = sizeof(struct rxe_send_wqe) +
0057                       sizeof(struct ib_sge) * RXE_MAX_SGE,
0058     RXE_MAX_INLINE_DATA     = RXE_MAX_WQE_SIZE -
0059                       sizeof(struct rxe_send_wqe),
0060     RXE_MAX_SGE_RD          = 32,
0061     RXE_MAX_CQ          = DEFAULT_MAX_VALUE,
0062     RXE_MAX_LOG_CQE         = 15,
0063     RXE_MAX_PD          = DEFAULT_MAX_VALUE,
0064     RXE_MAX_QP_RD_ATOM      = 128,
0065     RXE_MAX_RES_RD_ATOM     = 0x3f000,
0066     RXE_MAX_QP_INIT_RD_ATOM     = 128,
0067     RXE_MAX_MCAST_GRP       = 8192,
0068     RXE_MAX_MCAST_QP_ATTACH     = 56,
0069     RXE_MAX_TOT_MCAST_QP_ATTACH = 0x70000,
0070     RXE_MAX_AH          = (1<<15) - 1,  /* 32Ki - 1 */
0071     RXE_MIN_AH_INDEX        = 1,
0072     RXE_MAX_AH_INDEX        = RXE_MAX_AH,
0073     RXE_MAX_SRQ_WR          = DEFAULT_MAX_VALUE,
0074     RXE_MIN_SRQ_WR          = 1,
0075     RXE_MAX_SRQ_SGE         = 27,
0076     RXE_MIN_SRQ_SGE         = 1,
0077     RXE_MAX_FMR_PAGE_LIST_LEN   = 512,
0078     RXE_MAX_PKEYS           = 64,
0079     RXE_LOCAL_CA_ACK_DELAY      = 15,
0080 
0081     RXE_MAX_UCONTEXT        = DEFAULT_MAX_VALUE,
0082 
0083     RXE_NUM_PORT            = 1,
0084 
0085     RXE_MIN_QP_INDEX        = 16,
0086     RXE_MAX_QP_INDEX        = DEFAULT_MAX_VALUE,
0087     RXE_MAX_QP          = DEFAULT_MAX_VALUE - RXE_MIN_QP_INDEX,
0088 
0089     RXE_MIN_SRQ_INDEX       = 0x00020001,
0090     RXE_MAX_SRQ_INDEX       = DEFAULT_MAX_VALUE,
0091     RXE_MAX_SRQ         = DEFAULT_MAX_VALUE - RXE_MIN_SRQ_INDEX,
0092 
0093     RXE_MIN_MR_INDEX        = 0x00000001,
0094     RXE_MAX_MR_INDEX        = DEFAULT_MAX_VALUE,
0095     RXE_MAX_MR          = DEFAULT_MAX_VALUE - RXE_MIN_MR_INDEX,
0096     RXE_MIN_MW_INDEX        = 0x00010001,
0097     RXE_MAX_MW_INDEX        = 0x00020000,
0098     RXE_MAX_MW          = 0x00001000,
0099 
0100     RXE_MAX_PKT_PER_ACK     = 64,
0101 
0102     RXE_MAX_UNACKED_PSNS        = 128,
0103 
0104     /* Max inflight SKBs per queue pair */
0105     RXE_INFLIGHT_SKBS_PER_QP_HIGH   = 64,
0106     RXE_INFLIGHT_SKBS_PER_QP_LOW    = 16,
0107 
0108     /* Max number of interations of each tasklet
0109      * before yielding the cpu to let other
0110      * work make progress
0111      */
0112     RXE_MAX_ITERATIONS      = 1024,
0113 
0114     /* Delay before calling arbiter timer */
0115     RXE_NSEC_ARB_TIMER_DELAY    = 200,
0116 
0117     /* IBTA v1.4 A3.3.1 VENDOR INFORMATION section */
0118     RXE_VENDOR_ID           = 0XFFFFFF,
0119 };
0120 
0121 /* default/initial rxe port parameters */
0122 enum rxe_port_param {
0123     RXE_PORT_GID_TBL_LEN        = 1024,
0124     RXE_PORT_PORT_CAP_FLAGS     = IB_PORT_CM_SUP,
0125     RXE_PORT_MAX_MSG_SZ     = 0x800000,
0126     RXE_PORT_BAD_PKEY_CNTR      = 0,
0127     RXE_PORT_QKEY_VIOL_CNTR     = 0,
0128     RXE_PORT_LID            = 0,
0129     RXE_PORT_SM_LID         = 0,
0130     RXE_PORT_SM_SL          = 0,
0131     RXE_PORT_LMC            = 0,
0132     RXE_PORT_MAX_VL_NUM     = 1,
0133     RXE_PORT_SUBNET_TIMEOUT     = 0,
0134     RXE_PORT_INIT_TYPE_REPLY    = 0,
0135     RXE_PORT_ACTIVE_WIDTH       = IB_WIDTH_1X,
0136     RXE_PORT_ACTIVE_SPEED       = 1,
0137     RXE_PORT_PKEY_TBL_LEN       = 1,
0138     RXE_PORT_PHYS_STATE     = IB_PORT_PHYS_STATE_POLLING,
0139     RXE_PORT_SUBNET_PREFIX      = 0xfe80000000000000ULL,
0140 };
0141 
0142 /* default/initial port info parameters */
0143 enum rxe_port_info_param {
0144     RXE_PORT_INFO_VL_CAP        = 4,    /* 1-8 */
0145     RXE_PORT_INFO_MTU_CAP       = 5,    /* 4096 */
0146     RXE_PORT_INFO_OPER_VL       = 1,    /* 1 */
0147 };
0148 
0149 #endif /* RXE_PARAM_H */