The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/dev/qlnx/qlnxe/ecore_cxt.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /*
    2  * Copyright (c) 2017-2018 Cavium, Inc. 
    3  * All rights reserved.
    4  *
    5  *  Redistribution and use in source and binary forms, with or without
    6  *  modification, are permitted provided that the following conditions
    7  *  are met:
    8  *
    9  *  1. Redistributions of source code must retain the above copyright
   10  *     notice, this list of conditions and the following disclaimer.
   11  *  2. Redistributions in binary form must reproduce the above copyright
   12  *     notice, this list of conditions and the following disclaimer in the
   13  *     documentation and/or other materials provided with the distribution.
   14  *
   15  *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
   16  *  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
   17  *  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
   18  *  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
   19  *  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
   20  *  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
   21  *  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
   22  *  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
   23  *  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
   24  *  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
   25  *  POSSIBILITY OF SUCH DAMAGE.
   26  *
   27  * $FreeBSD$
   28  *
   29  */
   30 
   31 #ifndef _ECORE_CID_
   32 #define _ECORE_CID_
   33 
   34 #include "ecore_hsi_common.h"
   35 #include "ecore_proto_if.h"
   36 #include "ecore_cxt_api.h"
   37 
   38 /* Tasks segments definitions  */
   39 #define ECORE_CXT_ISCSI_TID_SEG                 PROTOCOLID_ISCSI        /* 0 */
   40 #define ECORE_CXT_FCOE_TID_SEG                  PROTOCOLID_FCOE         /* 1 */
   41 #define ECORE_CXT_ROCE_TID_SEG                  PROTOCOLID_ROCE         /* 2 */
   42 
   43 enum ecore_cxt_elem_type {
   44         ECORE_ELEM_CXT,
   45         ECORE_ELEM_SRQ,
   46         ECORE_ELEM_TASK,
   47         ECORE_ELEM_XRC_SRQ,
   48 };
   49 
   50 enum ilt_clients {
   51         ILT_CLI_CDUC,
   52         ILT_CLI_CDUT,
   53         ILT_CLI_QM,
   54         ILT_CLI_TM,
   55         ILT_CLI_SRC,
   56         ILT_CLI_TSDM,
   57         ILT_CLI_MAX
   58 };
   59 
   60 u32 ecore_cxt_get_proto_cid_count(struct ecore_hwfn *p_hwfn,
   61                                   enum protocol_type type,
   62                                   u32 *vf_cid);
   63 
   64 u32 ecore_cxt_get_proto_tid_count(struct ecore_hwfn *p_hwfn,
   65                                   enum protocol_type type);
   66 
   67 u32 ecore_cxt_get_proto_cid_start(struct ecore_hwfn *p_hwfn,
   68                                   enum protocol_type type);
   69 
   70 u32 ecore_cxt_get_srq_count(struct ecore_hwfn *p_hwfn);
   71 
   72 u32 ecore_cxt_get_xrc_srq_count(struct ecore_hwfn *p_hwfn);
   73 
   74 /**
   75  * @brief ecore_cxt_set_pf_params - Set the PF params for cxt init
   76  *
   77  * @param p_hwfn
   78  *
   79  * @return enum _ecore_status_t
   80  */
   81 enum _ecore_status_t ecore_cxt_set_pf_params(struct ecore_hwfn *p_hwfn,
   82                                              u32 rdma_tasks);
   83 
   84 /**
   85  * @brief ecore_cxt_cfg_ilt_compute - compute ILT init parameters
   86  *
   87  * @param p_hwfn
   88  * @param last_line
   89  *
   90  * @return enum _ecore_status_t
   91  */
   92 enum _ecore_status_t ecore_cxt_cfg_ilt_compute(struct ecore_hwfn *p_hwfn,
   93                                                u32 *last_line);
   94 
   95 /**
   96  * @brief ecore_cxt_cfg_ilt_compute_excess - how many lines can be decreased
   97  *
   98  * @param p_hwfn
   99  * @param used_lines
  100  */
  101 u32 ecore_cxt_cfg_ilt_compute_excess(struct ecore_hwfn *p_hwfn, u32 used_lines);
  102 
  103 /**
  104  * @brief ecore_cxt_mngr_alloc - Allocate and init the context manager struct
  105  *
  106  * @param p_hwfn
  107  *
  108  * @return enum _ecore_status_t
  109  */
  110 enum _ecore_status_t ecore_cxt_mngr_alloc(struct ecore_hwfn *p_hwfn);
  111 
  112 /**
  113  * @brief ecore_cxt_mngr_free
  114  *
  115  * @param p_hwfn
  116  */
  117 void ecore_cxt_mngr_free(struct ecore_hwfn *p_hwfn);
  118 
  119 /**
  120  * @brief ecore_cxt_tables_alloc - Allocate ILT shadow, Searcher T2, acquired map
  121  *
  122  * @param p_hwfn
  123  *
  124  * @return enum _ecore_status_t
  125  */
  126 enum _ecore_status_t ecore_cxt_tables_alloc(struct ecore_hwfn *p_hwfn);
  127 
  128 /**
  129  * @brief ecore_cxt_mngr_setup - Reset the acquired CIDs
  130  *
  131  * @param p_hwfn
  132  */
  133 void ecore_cxt_mngr_setup(struct ecore_hwfn *p_hwfn);
  134 
  135 /**
  136  * @brief ecore_cxt_hw_init_common - Initailze ILT and DQ, common phase, per path.
  137  *
  138  * @param p_hwfn
  139  */
  140 void ecore_cxt_hw_init_common(struct ecore_hwfn *p_hwfn);
  141 
  142 /**
  143  * @brief ecore_cxt_hw_init_pf - Initailze ILT and DQ, PF phase, per path.
  144  *
  145  * @param p_hwfn
  146  * @param p_ptt
  147  */
  148 void ecore_cxt_hw_init_pf(struct ecore_hwfn *p_hwfn, struct ecore_ptt *p_ptt);
  149 
  150 /**
  151  * @brief ecore_qm_init_pf - Initailze the QM PF phase, per path
  152  *
  153  * @param p_hwfn
  154  * @param p_ptt
  155  * @param is_pf_loading
  156  */
  157 void ecore_qm_init_pf(struct ecore_hwfn *p_hwfn, struct ecore_ptt *p_ptt,
  158                       bool is_pf_loading);
  159 
  160  /**
  161  * @brief Reconfigures QM pf on the fly
  162  *
  163  * @param p_hwfn
  164  * @param p_ptt
  165  *
  166  * @return enum _ecore_status_t
  167  */
  168 enum _ecore_status_t ecore_qm_reconf(struct ecore_hwfn *p_hwfn,
  169                                      struct ecore_ptt *p_ptt);
  170 
  171 #define ECORE_CXT_PF_CID (0xff)
  172 
  173 /**
  174  * @brief ecore_cxt_release - Release a cid
  175  *
  176  * @param p_hwfn
  177  * @param cid
  178  */
  179 void ecore_cxt_release_cid(struct ecore_hwfn *p_hwfn, u32 cid);
  180 
  181 /**
  182  * @brief ecore_cxt_release - Release a cid belonging to a vf-queue
  183  *
  184  * @param p_hwfn
  185  * @param cid
  186  * @param vfid - engine relative index. ECORE_CXT_PF_CID if belongs to PF
  187  */
  188 void _ecore_cxt_release_cid(struct ecore_hwfn *p_hwfn,
  189                             u32 cid, u8 vfid);
  190 
  191 /**
  192  * @brief ecore_cxt_acquire - Acquire a new cid of a specific protocol type
  193  *
  194  * @param p_hwfn
  195  * @param type
  196  * @param p_cid
  197  *
  198  * @return enum _ecore_status_t
  199  */
  200 enum _ecore_status_t ecore_cxt_acquire_cid(struct ecore_hwfn *p_hwfn,
  201                                            enum protocol_type type,
  202                                            u32 *p_cid);
  203 
  204 /**
  205  * @brief _ecore_cxt_acquire - Acquire a new cid of a specific protocol type
  206  *                             for a vf-queue
  207  *
  208  * @param p_hwfn
  209  * @param type
  210  * @param p_cid
  211  * @param vfid - engine relative index. ECORE_CXT_PF_CID if belongs to PF
  212  *
  213  * @return enum _ecore_status_t
  214  */
  215 enum _ecore_status_t _ecore_cxt_acquire_cid(struct ecore_hwfn *p_hwfn,
  216                                             enum protocol_type type,
  217                                             u32 *p_cid, u8 vfid);
  218 
  219 /**
  220  * @brief ecore_cxt_get_tid_mem_info - function checks if the
  221  *        page containing the iid in the ilt is already
  222  *        allocated, if it is not it allocates the page.
  223  *
  224  * @param p_hwfn
  225  * @param elem_type
  226  * @param iid
  227  *
  228  * @return enum _ecore_status_t
  229  */
  230 enum _ecore_status_t
  231 ecore_cxt_dynamic_ilt_alloc(struct ecore_hwfn *p_hwfn,
  232                             enum ecore_cxt_elem_type elem_type,
  233                             u32 iid);
  234 
  235 /**
  236  * @brief ecore_cxt_free_ilt_range - function frees ilt pages
  237  *        associated with the protocol and element type passed.
  238  *
  239  * @param p_hwfn
  240  * @param proto
  241  *
  242  * @return enum _ecore_status_t
  243  */
  244 enum _ecore_status_t
  245 ecore_cxt_free_ilt_range(struct ecore_hwfn *p_hwfn,
  246                          enum ecore_cxt_elem_type elem_type,
  247                          u32 start_iid, u32 count);
  248 
  249 #define ECORE_CTX_WORKING_MEM 0
  250 #define ECORE_CTX_FL_MEM 1
  251 enum _ecore_status_t ecore_cxt_get_task_ctx(struct ecore_hwfn *p_hwfn,
  252                                             u32 tid,
  253                                             u8 ctx_type,
  254                                             void **task_ctx);
  255 
  256 u32 ecore_cxt_get_ilt_page_size(struct ecore_hwfn *p_hwfn,
  257                                 enum ilt_clients ilt_client);
  258 
  259 u32 ecore_cxt_get_total_srq_count(struct ecore_hwfn *p_hwfn);
  260 
  261 #endif /* _ECORE_CID_ */

Cache object: 9bd138e81f227e3a4f2428f992147a64


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.