1 /* QLogic qed NIC Driver 2 * Copyright (c) 2015 QLogic Corporation 3 * 4 * This software is available under the terms of the GNU General Public License 5 * (GPL) Version 2, available from the file COPYING in the main directory of 6 * this source tree. 7 */ 8 9 #ifndef _QED_CXT_H 10 #define _QED_CXT_H 11 12 #include <linux/types.h> 13 #include <linux/slab.h> 14 #include <linux/qed/qed_if.h> 15 #include "qed_hsi.h" 16 #include "qed.h" 17 18 struct qed_cxt_info { 19 void *p_cxt; 20 u32 iid; 21 enum protocol_type type; 22 }; 23 24 /** 25 * @brief qed_cxt_acquire - Acquire a new cid of a specific protocol type 26 * 27 * @param p_hwfn 28 * @param type 29 * @param p_cid 30 * 31 * @return int 32 */ 33 int qed_cxt_acquire_cid(struct qed_hwfn *p_hwfn, 34 enum protocol_type type, 35 u32 *p_cid); 36 37 /** 38 * @brief qedo_cid_get_cxt_info - Returns the context info for a specific cid 39 * 40 * 41 * @param p_hwfn 42 * @param p_info in/out 43 * 44 * @return int 45 */ 46 int qed_cxt_get_cid_info(struct qed_hwfn *p_hwfn, 47 struct qed_cxt_info *p_info); 48 49 enum qed_cxt_elem_type { 50 QED_ELEM_CXT, 51 QED_ELEM_TASK 52 }; 53 54 /** 55 * @brief qed_cxt_set_pf_params - Set the PF params for cxt init 56 * 57 * @param p_hwfn 58 * 59 * @return int 60 */ 61 int qed_cxt_set_pf_params(struct qed_hwfn *p_hwfn); 62 63 /** 64 * @brief qed_cxt_cfg_ilt_compute - compute ILT init parameters 65 * 66 * @param p_hwfn 67 * 68 * @return int 69 */ 70 int qed_cxt_cfg_ilt_compute(struct qed_hwfn *p_hwfn); 71 72 /** 73 * @brief qed_cxt_mngr_alloc - Allocate and init the context manager struct 74 * 75 * @param p_hwfn 76 * 77 * @return int 78 */ 79 int qed_cxt_mngr_alloc(struct qed_hwfn *p_hwfn); 80 81 /** 82 * @brief qed_cxt_mngr_free 83 * 84 * @param p_hwfn 85 */ 86 void qed_cxt_mngr_free(struct qed_hwfn *p_hwfn); 87 88 /** 89 * @brief qed_cxt_tables_alloc - Allocate ILT shadow, Searcher T2, acquired map 90 * 91 * @param p_hwfn 92 * 93 * @return int 94 */ 95 int qed_cxt_tables_alloc(struct qed_hwfn *p_hwfn); 96 97 /** 98 * @brief qed_cxt_mngr_setup - Reset the acquired CIDs 99 * 100 * @param p_hwfn 101 */ 102 void qed_cxt_mngr_setup(struct qed_hwfn *p_hwfn); 103 104 /** 105 * @brief qed_cxt_hw_init_common - Initailze ILT and DQ, common phase, per path. 106 * 107 * 108 * 109 * @param p_hwfn 110 */ 111 void qed_cxt_hw_init_common(struct qed_hwfn *p_hwfn); 112 113 /** 114 * @brief qed_cxt_hw_init_pf - Initailze ILT and DQ, PF phase, per path. 115 * 116 * 117 * 118 * @param p_hwfn 119 */ 120 void qed_cxt_hw_init_pf(struct qed_hwfn *p_hwfn); 121 122 /** 123 * @brief qed_qm_init_pf - Initailze the QM PF phase, per path 124 * 125 * @param p_hwfn 126 */ 127 128 void qed_qm_init_pf(struct qed_hwfn *p_hwfn); 129 130 /** 131 * @brief qed_cxt_release - Release a cid 132 * 133 * @param p_hwfn 134 * @param cid 135 */ 136 void qed_cxt_release_cid(struct qed_hwfn *p_hwfn, 137 u32 cid); 138 139 #endif 140