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