1*14b24e2bSVaishali Kulkarni /* 2*14b24e2bSVaishali Kulkarni * CDDL HEADER START 3*14b24e2bSVaishali Kulkarni * 4*14b24e2bSVaishali Kulkarni * The contents of this file are subject to the terms of the 5*14b24e2bSVaishali Kulkarni * Common Development and Distribution License, v.1, (the "License"). 6*14b24e2bSVaishali Kulkarni * You may not use this file except in compliance with the License. 7*14b24e2bSVaishali Kulkarni * 8*14b24e2bSVaishali Kulkarni * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9*14b24e2bSVaishali Kulkarni * or http://opensource.org/licenses/CDDL-1.0. 10*14b24e2bSVaishali Kulkarni * See the License for the specific language governing permissions 11*14b24e2bSVaishali Kulkarni * and limitations under the License. 12*14b24e2bSVaishali Kulkarni * 13*14b24e2bSVaishali Kulkarni * When distributing Covered Code, include this CDDL HEADER in each 14*14b24e2bSVaishali Kulkarni * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15*14b24e2bSVaishali Kulkarni * If applicable, add the following below this CDDL HEADER, with the 16*14b24e2bSVaishali Kulkarni * fields enclosed by brackets "[]" replaced with your own identifying 17*14b24e2bSVaishali Kulkarni * information: Portions Copyright [yyyy] [name of copyright owner] 18*14b24e2bSVaishali Kulkarni * 19*14b24e2bSVaishali Kulkarni * CDDL HEADER END 20*14b24e2bSVaishali Kulkarni */ 21*14b24e2bSVaishali Kulkarni 22*14b24e2bSVaishali Kulkarni /* 23*14b24e2bSVaishali Kulkarni * Copyright 2014-2017 Cavium, Inc. 24*14b24e2bSVaishali Kulkarni * The contents of this file are subject to the terms of the Common Development 25*14b24e2bSVaishali Kulkarni * and Distribution License, v.1, (the "License"). 26*14b24e2bSVaishali Kulkarni 27*14b24e2bSVaishali Kulkarni * You may not use this file except in compliance with the License. 28*14b24e2bSVaishali Kulkarni 29*14b24e2bSVaishali Kulkarni * You can obtain a copy of the License at available 30*14b24e2bSVaishali Kulkarni * at http://opensource.org/licenses/CDDL-1.0 31*14b24e2bSVaishali Kulkarni 32*14b24e2bSVaishali Kulkarni * See the License for the specific language governing permissions and 33*14b24e2bSVaishali Kulkarni * limitations under the License. 34*14b24e2bSVaishali Kulkarni */ 35*14b24e2bSVaishali Kulkarni 36*14b24e2bSVaishali Kulkarni #ifndef __ECORE_PROTO_IF_H__ 37*14b24e2bSVaishali Kulkarni #define __ECORE_PROTO_IF_H__ 38*14b24e2bSVaishali Kulkarni 39*14b24e2bSVaishali Kulkarni /* 40*14b24e2bSVaishali Kulkarni * PF parameters (according to personality/protocol) 41*14b24e2bSVaishali Kulkarni */ 42*14b24e2bSVaishali Kulkarni 43*14b24e2bSVaishali Kulkarni #define ECORE_ROCE_PROTOCOL_INDEX (3) 44*14b24e2bSVaishali Kulkarni 45*14b24e2bSVaishali Kulkarni struct ecore_eth_pf_params { 46*14b24e2bSVaishali Kulkarni /* The following parameters are used during HW-init 47*14b24e2bSVaishali Kulkarni * and these parameters need to be passed as arguments 48*14b24e2bSVaishali Kulkarni * to update_pf_params routine invoked before slowpath start 49*14b24e2bSVaishali Kulkarni */ 50*14b24e2bSVaishali Kulkarni u16 num_cons; 51*14b24e2bSVaishali Kulkarni 52*14b24e2bSVaishali Kulkarni /* per-VF number of CIDs */ 53*14b24e2bSVaishali Kulkarni u8 num_vf_cons; 54*14b24e2bSVaishali Kulkarni #define ETH_PF_PARAMS_VF_CONS_DEFAULT (32) 55*14b24e2bSVaishali Kulkarni 56*14b24e2bSVaishali Kulkarni /* To enable arfs, previous to HW-init a positive number needs to be 57*14b24e2bSVaishali Kulkarni * set [as filters require allocated searcher ILT memory]. 58*14b24e2bSVaishali Kulkarni * This will set the maximal number of configured steering-filters. 59*14b24e2bSVaishali Kulkarni */ 60*14b24e2bSVaishali Kulkarni u32 num_arfs_filters; 61*14b24e2bSVaishali Kulkarni }; 62*14b24e2bSVaishali Kulkarni 63*14b24e2bSVaishali Kulkarni /* Most of the the parameters below are described in the FW FCoE HSI */ 64*14b24e2bSVaishali Kulkarni struct ecore_fcoe_pf_params { 65*14b24e2bSVaishali Kulkarni /* The following parameters are used during protocol-init */ 66*14b24e2bSVaishali Kulkarni u64 glbl_q_params_addr; 67*14b24e2bSVaishali Kulkarni u64 bdq_pbl_base_addr[2]; 68*14b24e2bSVaishali Kulkarni 69*14b24e2bSVaishali Kulkarni /* The following parameters are used during HW-init 70*14b24e2bSVaishali Kulkarni * and these parameters need to be passed as arguments 71*14b24e2bSVaishali Kulkarni * to update_pf_params routine invoked before slowpath start 72*14b24e2bSVaishali Kulkarni */ 73*14b24e2bSVaishali Kulkarni u16 num_cons; 74*14b24e2bSVaishali Kulkarni u16 num_tasks; 75*14b24e2bSVaishali Kulkarni 76*14b24e2bSVaishali Kulkarni /* The following parameters are used during protocol-init */ 77*14b24e2bSVaishali Kulkarni u16 sq_num_pbl_pages; 78*14b24e2bSVaishali Kulkarni 79*14b24e2bSVaishali Kulkarni u16 cq_num_entries; 80*14b24e2bSVaishali Kulkarni u16 cmdq_num_entries; 81*14b24e2bSVaishali Kulkarni u16 rq_buffer_log_size; 82*14b24e2bSVaishali Kulkarni u16 mtu; 83*14b24e2bSVaishali Kulkarni u16 dummy_icid; 84*14b24e2bSVaishali Kulkarni u16 bdq_xoff_threshold[2]; 85*14b24e2bSVaishali Kulkarni u16 bdq_xon_threshold[2]; 86*14b24e2bSVaishali Kulkarni u16 rq_buffer_size; 87*14b24e2bSVaishali Kulkarni u8 num_cqs; /* num of global CQs */ 88*14b24e2bSVaishali Kulkarni u8 log_page_size; 89*14b24e2bSVaishali Kulkarni u8 gl_rq_pi; 90*14b24e2bSVaishali Kulkarni u8 gl_cmd_pi; 91*14b24e2bSVaishali Kulkarni u8 debug_mode; 92*14b24e2bSVaishali Kulkarni u8 is_target; 93*14b24e2bSVaishali Kulkarni u8 bdq_pbl_num_entries[2]; 94*14b24e2bSVaishali Kulkarni }; 95*14b24e2bSVaishali Kulkarni 96*14b24e2bSVaishali Kulkarni /* Most of the the parameters below are described in the FW iSCSI / TCP HSI */ 97*14b24e2bSVaishali Kulkarni struct ecore_iscsi_pf_params { 98*14b24e2bSVaishali Kulkarni 99*14b24e2bSVaishali Kulkarni u64 glbl_q_params_addr; 100*14b24e2bSVaishali Kulkarni u64 bdq_pbl_base_addr[2]; 101*14b24e2bSVaishali Kulkarni u16 cq_num_entries; 102*14b24e2bSVaishali Kulkarni u16 cmdq_num_entries; 103*14b24e2bSVaishali Kulkarni u32 two_msl_timer; 104*14b24e2bSVaishali Kulkarni u16 tx_sws_timer; 105*14b24e2bSVaishali Kulkarni /* The following parameters are used during HW-init 106*14b24e2bSVaishali Kulkarni * and these parameters need to be passed as arguments 107*14b24e2bSVaishali Kulkarni * to update_pf_params routine invoked before slowpath start 108*14b24e2bSVaishali Kulkarni */ 109*14b24e2bSVaishali Kulkarni u16 num_cons; 110*14b24e2bSVaishali Kulkarni u16 num_tasks; 111*14b24e2bSVaishali Kulkarni 112*14b24e2bSVaishali Kulkarni /* The following parameters are used during protocol-init */ 113*14b24e2bSVaishali Kulkarni u16 half_way_close_timeout; 114*14b24e2bSVaishali Kulkarni u16 bdq_xoff_threshold[2]; 115*14b24e2bSVaishali Kulkarni u16 bdq_xon_threshold[2]; 116*14b24e2bSVaishali Kulkarni u16 cmdq_xoff_threshold; 117*14b24e2bSVaishali Kulkarni u16 cmdq_xon_threshold; 118*14b24e2bSVaishali Kulkarni u16 rq_buffer_size; 119*14b24e2bSVaishali Kulkarni 120*14b24e2bSVaishali Kulkarni u8 num_sq_pages_in_ring; 121*14b24e2bSVaishali Kulkarni u8 num_r2tq_pages_in_ring; 122*14b24e2bSVaishali Kulkarni u8 num_uhq_pages_in_ring; 123*14b24e2bSVaishali Kulkarni u8 num_queues; 124*14b24e2bSVaishali Kulkarni u8 log_page_size; 125*14b24e2bSVaishali Kulkarni u8 rqe_log_size; 126*14b24e2bSVaishali Kulkarni u8 max_fin_rt; 127*14b24e2bSVaishali Kulkarni u8 gl_rq_pi; 128*14b24e2bSVaishali Kulkarni u8 gl_cmd_pi; 129*14b24e2bSVaishali Kulkarni u8 debug_mode; 130*14b24e2bSVaishali Kulkarni u8 ll2_ooo_queue_id; 131*14b24e2bSVaishali Kulkarni u8 ooo_enable; 132*14b24e2bSVaishali Kulkarni 133*14b24e2bSVaishali Kulkarni u8 is_target; 134*14b24e2bSVaishali Kulkarni u8 bdq_pbl_num_entries[2]; 135*14b24e2bSVaishali Kulkarni }; 136*14b24e2bSVaishali Kulkarni 137*14b24e2bSVaishali Kulkarni enum ecore_rdma_protocol { 138*14b24e2bSVaishali Kulkarni ECORE_RDMA_PROTOCOL_DEFAULT, 139*14b24e2bSVaishali Kulkarni ECORE_RDMA_PROTOCOL_NONE, 140*14b24e2bSVaishali Kulkarni ECORE_RDMA_PROTOCOL_ROCE, 141*14b24e2bSVaishali Kulkarni ECORE_RDMA_PROTOCOL_IWARP, 142*14b24e2bSVaishali Kulkarni }; 143*14b24e2bSVaishali Kulkarni 144*14b24e2bSVaishali Kulkarni struct ecore_rdma_pf_params { 145*14b24e2bSVaishali Kulkarni /* Supplied to ECORE during resource allocation (may affect the ILT and 146*14b24e2bSVaishali Kulkarni * the doorbell BAR). 147*14b24e2bSVaishali Kulkarni */ 148*14b24e2bSVaishali Kulkarni u32 min_dpis; /* number of requested DPIs */ 149*14b24e2bSVaishali Kulkarni u32 num_qps; /* number of requested Queue Pairs */ 150*14b24e2bSVaishali Kulkarni u32 num_srqs; /* number of requested SRQ */ 151*14b24e2bSVaishali Kulkarni u8 roce_edpm_mode; /* see QED_ROCE_EDPM_MODE_ENABLE */ 152*14b24e2bSVaishali Kulkarni u8 gl_pi; /* protocol index */ 153*14b24e2bSVaishali Kulkarni 154*14b24e2bSVaishali Kulkarni /* Will allocate rate limiters to be used with QPs */ 155*14b24e2bSVaishali Kulkarni u8 enable_dcqcn; 156*14b24e2bSVaishali Kulkarni 157*14b24e2bSVaishali Kulkarni /* Max number of CNQs - limits number of ECORE_RDMA_CNQ feature, 158*14b24e2bSVaishali Kulkarni * Allowing an incrementation in ECORE_PF_L2_QUE. 159*14b24e2bSVaishali Kulkarni * To disable CNQs, use dedicated value instead of `0'. 160*14b24e2bSVaishali Kulkarni */ 161*14b24e2bSVaishali Kulkarni #define ECORE_RDMA_PF_PARAMS_CNQS_NONE (0xffff) 162*14b24e2bSVaishali Kulkarni u16 max_cnqs; 163*14b24e2bSVaishali Kulkarni 164*14b24e2bSVaishali Kulkarni /* TCP port number used for the iwarp traffic */ 165*14b24e2bSVaishali Kulkarni u16 iwarp_port; 166*14b24e2bSVaishali Kulkarni enum ecore_rdma_protocol rdma_protocol; 167*14b24e2bSVaishali Kulkarni }; 168*14b24e2bSVaishali Kulkarni 169*14b24e2bSVaishali Kulkarni struct ecore_pf_params { 170*14b24e2bSVaishali Kulkarni struct ecore_eth_pf_params eth_pf_params; 171*14b24e2bSVaishali Kulkarni struct ecore_fcoe_pf_params fcoe_pf_params; 172*14b24e2bSVaishali Kulkarni struct ecore_iscsi_pf_params iscsi_pf_params; 173*14b24e2bSVaishali Kulkarni struct ecore_rdma_pf_params rdma_pf_params; 174*14b24e2bSVaishali Kulkarni }; 175*14b24e2bSVaishali Kulkarni 176*14b24e2bSVaishali Kulkarni #endif 177*14b24e2bSVaishali Kulkarni 178*14b24e2bSVaishali Kulkarni 179