1316485Sdavidcs/* 2316485Sdavidcs * Copyright (c) 2017-2018 Cavium, Inc. 3316485Sdavidcs * All rights reserved. 4316485Sdavidcs * 5316485Sdavidcs * Redistribution and use in source and binary forms, with or without 6316485Sdavidcs * modification, are permitted provided that the following conditions 7316485Sdavidcs * are met: 8316485Sdavidcs * 9316485Sdavidcs * 1. Redistributions of source code must retain the above copyright 10316485Sdavidcs * notice, this list of conditions and the following disclaimer. 11316485Sdavidcs * 2. Redistributions in binary form must reproduce the above copyright 12316485Sdavidcs * notice, this list of conditions and the following disclaimer in the 13316485Sdavidcs * documentation and/or other materials provided with the distribution. 14316485Sdavidcs * 15316485Sdavidcs * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 16316485Sdavidcs * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 17316485Sdavidcs * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 18316485Sdavidcs * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 19316485Sdavidcs * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 20316485Sdavidcs * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 21316485Sdavidcs * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 22316485Sdavidcs * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 23316485Sdavidcs * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 24316485Sdavidcs * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 25316485Sdavidcs * POSSIBILITY OF SUCH DAMAGE. 26316485Sdavidcs * 27316485Sdavidcs * $FreeBSD: stable/10/sys/dev/qlnx/qlnxe/ecore_proto_if.h 337519 2018-08-09 01:39:47Z davidcs $ 28316485Sdavidcs * 29316485Sdavidcs */ 30316485Sdavidcs 31316485Sdavidcs#ifndef __ECORE_PROTO_IF_H__ 32316485Sdavidcs#define __ECORE_PROTO_IF_H__ 33316485Sdavidcs 34316485Sdavidcs/* 35316485Sdavidcs * PF parameters (according to personality/protocol) 36316485Sdavidcs */ 37316485Sdavidcs 38316485Sdavidcs#define ECORE_ROCE_PROTOCOL_INDEX (3) 39316485Sdavidcs 40316485Sdavidcsstruct ecore_eth_pf_params { 41316485Sdavidcs /* The following parameters are used during HW-init 42316485Sdavidcs * and these parameters need to be passed as arguments 43316485Sdavidcs * to update_pf_params routine invoked before slowpath start 44316485Sdavidcs */ 45316485Sdavidcs u16 num_cons; 46316485Sdavidcs 47316485Sdavidcs /* per-VF number of CIDs */ 48316485Sdavidcs u8 num_vf_cons; 49316485Sdavidcs#define ETH_PF_PARAMS_VF_CONS_DEFAULT (32) 50316485Sdavidcs 51316485Sdavidcs /* To enable arfs, previous to HW-init a positive number needs to be 52316485Sdavidcs * set [as filters require allocated searcher ILT memory]. 53316485Sdavidcs * This will set the maximal number of configured steering-filters. 54316485Sdavidcs */ 55316485Sdavidcs u32 num_arfs_filters; 56316485Sdavidcs}; 57316485Sdavidcs 58316485Sdavidcs/* Most of the the parameters below are described in the FW FCoE HSI */ 59316485Sdavidcsstruct ecore_fcoe_pf_params { 60316485Sdavidcs /* The following parameters are used during protocol-init */ 61316485Sdavidcs u64 glbl_q_params_addr; 62316485Sdavidcs u64 bdq_pbl_base_addr[2]; 63316485Sdavidcs 64316485Sdavidcs /* The following parameters are used during HW-init 65316485Sdavidcs * and these parameters need to be passed as arguments 66316485Sdavidcs * to update_pf_params routine invoked before slowpath start 67316485Sdavidcs */ 68316485Sdavidcs u16 num_cons; 69316485Sdavidcs u16 num_tasks; 70316485Sdavidcs 71316485Sdavidcs /* The following parameters are used during protocol-init */ 72316485Sdavidcs u16 sq_num_pbl_pages; 73316485Sdavidcs 74316485Sdavidcs u16 cq_num_entries; 75316485Sdavidcs u16 cmdq_num_entries; 76316485Sdavidcs u16 rq_buffer_log_size; 77316485Sdavidcs u16 mtu; 78316485Sdavidcs u16 dummy_icid; 79316485Sdavidcs u16 bdq_xoff_threshold[2]; 80316485Sdavidcs u16 bdq_xon_threshold[2]; 81316485Sdavidcs u16 rq_buffer_size; 82316485Sdavidcs u8 num_cqs; /* num of global CQs */ 83316485Sdavidcs u8 log_page_size; 84316485Sdavidcs u8 gl_rq_pi; 85316485Sdavidcs u8 gl_cmd_pi; 86316485Sdavidcs u8 debug_mode; 87316485Sdavidcs u8 is_target; 88316485Sdavidcs u8 bdq_pbl_num_entries[2]; 89316485Sdavidcs}; 90316485Sdavidcs 91316485Sdavidcs/* Most of the the parameters below are described in the FW iSCSI / TCP HSI */ 92316485Sdavidcsstruct ecore_iscsi_pf_params { 93316485Sdavidcs 94316485Sdavidcs u64 glbl_q_params_addr; 95320162Sdavidcs u64 bdq_pbl_base_addr[3]; 96316485Sdavidcs u16 cq_num_entries; 97316485Sdavidcs u16 cmdq_num_entries; 98316485Sdavidcs u32 two_msl_timer; 99316485Sdavidcs u16 tx_sws_timer; 100316485Sdavidcs /* The following parameters are used during HW-init 101316485Sdavidcs * and these parameters need to be passed as arguments 102316485Sdavidcs * to update_pf_params routine invoked before slowpath start 103316485Sdavidcs */ 104316485Sdavidcs u16 num_cons; 105316485Sdavidcs u16 num_tasks; 106316485Sdavidcs 107316485Sdavidcs /* The following parameters are used during protocol-init */ 108316485Sdavidcs u16 half_way_close_timeout; 109320162Sdavidcs u16 bdq_xoff_threshold[3]; 110320162Sdavidcs u16 bdq_xon_threshold[3]; 111316485Sdavidcs u16 cmdq_xoff_threshold; 112316485Sdavidcs u16 cmdq_xon_threshold; 113316485Sdavidcs u16 rq_buffer_size; 114316485Sdavidcs 115316485Sdavidcs u8 num_sq_pages_in_ring; 116316485Sdavidcs u8 num_r2tq_pages_in_ring; 117316485Sdavidcs u8 num_uhq_pages_in_ring; 118316485Sdavidcs u8 num_queues; 119316485Sdavidcs u8 log_page_size; 120316485Sdavidcs u8 rqe_log_size; 121316485Sdavidcs u8 max_fin_rt; 122316485Sdavidcs u8 gl_rq_pi; 123316485Sdavidcs u8 gl_cmd_pi; 124316485Sdavidcs u8 debug_mode; 125316485Sdavidcs u8 ll2_ooo_queue_id; 126316485Sdavidcs 127316485Sdavidcs u8 is_target; 128337519Sdavidcs u8 is_soc_en; 129337519Sdavidcs u8 soc_num_of_blocks_log; 130320162Sdavidcs u8 bdq_pbl_num_entries[3]; 131337519Sdavidcs u8 disable_stats_collection; 132316485Sdavidcs}; 133316485Sdavidcs 134316485Sdavidcsenum ecore_rdma_protocol { 135316485Sdavidcs ECORE_RDMA_PROTOCOL_DEFAULT, 136316485Sdavidcs ECORE_RDMA_PROTOCOL_NONE, 137316485Sdavidcs ECORE_RDMA_PROTOCOL_ROCE, 138316485Sdavidcs ECORE_RDMA_PROTOCOL_IWARP, 139316485Sdavidcs}; 140316485Sdavidcs 141316485Sdavidcsstruct ecore_rdma_pf_params { 142316485Sdavidcs /* Supplied to ECORE during resource allocation (may affect the ILT and 143316485Sdavidcs * the doorbell BAR). 144316485Sdavidcs */ 145316485Sdavidcs u32 min_dpis; /* number of requested DPIs */ 146316485Sdavidcs u32 num_qps; /* number of requested Queue Pairs */ 147337519Sdavidcs u32 num_srqs; /* number of requested SRQs */ 148337519Sdavidcs u32 num_xrc_srqs; /* number of requested XRC SRQs */ 149316485Sdavidcs u8 roce_edpm_mode; /* see QED_ROCE_EDPM_MODE_ENABLE */ 150316485Sdavidcs u8 gl_pi; /* protocol index */ 151316485Sdavidcs 152316485Sdavidcs /* Will allocate rate limiters to be used with QPs */ 153316485Sdavidcs u8 enable_dcqcn; 154316485Sdavidcs 155316485Sdavidcs /* Max number of CNQs - limits number of ECORE_RDMA_CNQ feature, 156316485Sdavidcs * Allowing an incrementation in ECORE_PF_L2_QUE. 157316485Sdavidcs * To disable CNQs, use dedicated value instead of `0'. 158316485Sdavidcs */ 159316485Sdavidcs#define ECORE_RDMA_PF_PARAMS_CNQS_NONE (0xffff) 160316485Sdavidcs u16 max_cnqs; 161316485Sdavidcs 162316485Sdavidcs /* TCP port number used for the iwarp traffic */ 163316485Sdavidcs u16 iwarp_port; 164316485Sdavidcs enum ecore_rdma_protocol rdma_protocol; 165316485Sdavidcs}; 166316485Sdavidcs 167316485Sdavidcsstruct ecore_pf_params { 168316485Sdavidcs struct ecore_eth_pf_params eth_pf_params; 169316485Sdavidcs struct ecore_fcoe_pf_params fcoe_pf_params; 170316485Sdavidcs struct ecore_iscsi_pf_params iscsi_pf_params; 171316485Sdavidcs struct ecore_rdma_pf_params rdma_pf_params; 172316485Sdavidcs}; 173316485Sdavidcs 174316485Sdavidcs#endif 175316485Sdavidcs 176316485Sdavidcs 177