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 54fe56b9e6SYuval Mintz /** 55fe56b9e6SYuval Mintz * @brief qed_cxt_set_pf_params - Set the PF params for cxt init 56fe56b9e6SYuval Mintz * 57fe56b9e6SYuval Mintz * @param p_hwfn 58fe56b9e6SYuval Mintz * 59fe56b9e6SYuval Mintz * @return int 60fe56b9e6SYuval Mintz */ 61fe56b9e6SYuval Mintz int qed_cxt_set_pf_params(struct qed_hwfn *p_hwfn); 62fe56b9e6SYuval Mintz 63fe56b9e6SYuval Mintz /** 64fe56b9e6SYuval Mintz * @brief qed_cxt_cfg_ilt_compute - compute ILT init parameters 65fe56b9e6SYuval Mintz * 66fe56b9e6SYuval Mintz * @param p_hwfn 67fe56b9e6SYuval Mintz * 68fe56b9e6SYuval Mintz * @return int 69fe56b9e6SYuval Mintz */ 70fe56b9e6SYuval Mintz int qed_cxt_cfg_ilt_compute(struct qed_hwfn *p_hwfn); 71fe56b9e6SYuval Mintz 72fe56b9e6SYuval Mintz /** 73fe56b9e6SYuval Mintz * @brief qed_cxt_mngr_alloc - Allocate and init the context manager struct 74fe56b9e6SYuval Mintz * 75fe56b9e6SYuval Mintz * @param p_hwfn 76fe56b9e6SYuval Mintz * 77fe56b9e6SYuval Mintz * @return int 78fe56b9e6SYuval Mintz */ 79fe56b9e6SYuval Mintz int qed_cxt_mngr_alloc(struct qed_hwfn *p_hwfn); 80fe56b9e6SYuval Mintz 81fe56b9e6SYuval Mintz /** 82fe56b9e6SYuval Mintz * @brief qed_cxt_mngr_free 83fe56b9e6SYuval Mintz * 84fe56b9e6SYuval Mintz * @param p_hwfn 85fe56b9e6SYuval Mintz */ 86fe56b9e6SYuval Mintz void qed_cxt_mngr_free(struct qed_hwfn *p_hwfn); 87fe56b9e6SYuval Mintz 88fe56b9e6SYuval Mintz /** 89fe56b9e6SYuval Mintz * @brief qed_cxt_tables_alloc - Allocate ILT shadow, Searcher T2, acquired map 90fe56b9e6SYuval Mintz * 91fe56b9e6SYuval Mintz * @param p_hwfn 92fe56b9e6SYuval Mintz * 93fe56b9e6SYuval Mintz * @return int 94fe56b9e6SYuval Mintz */ 95fe56b9e6SYuval Mintz int qed_cxt_tables_alloc(struct qed_hwfn *p_hwfn); 96fe56b9e6SYuval Mintz 97fe56b9e6SYuval Mintz /** 98fe56b9e6SYuval Mintz * @brief qed_cxt_mngr_setup - Reset the acquired CIDs 99fe56b9e6SYuval Mintz * 100fe56b9e6SYuval Mintz * @param p_hwfn 101fe56b9e6SYuval Mintz */ 102fe56b9e6SYuval Mintz void qed_cxt_mngr_setup(struct qed_hwfn *p_hwfn); 103fe56b9e6SYuval Mintz 104fe56b9e6SYuval Mintz /** 105fe56b9e6SYuval Mintz * @brief qed_cxt_hw_init_common - Initailze ILT and DQ, common phase, per path. 106fe56b9e6SYuval Mintz * 107fe56b9e6SYuval Mintz * 108fe56b9e6SYuval Mintz * 109fe56b9e6SYuval Mintz * @param p_hwfn 110fe56b9e6SYuval Mintz */ 111fe56b9e6SYuval Mintz void qed_cxt_hw_init_common(struct qed_hwfn *p_hwfn); 112fe56b9e6SYuval Mintz 113fe56b9e6SYuval Mintz /** 114fe56b9e6SYuval Mintz * @brief qed_cxt_hw_init_pf - Initailze ILT and DQ, PF phase, per path. 115fe56b9e6SYuval Mintz * 116fe56b9e6SYuval Mintz * 117fe56b9e6SYuval Mintz * 118fe56b9e6SYuval Mintz * @param p_hwfn 119fe56b9e6SYuval Mintz */ 120fe56b9e6SYuval Mintz void qed_cxt_hw_init_pf(struct qed_hwfn *p_hwfn); 121fe56b9e6SYuval Mintz 122fe56b9e6SYuval Mintz /** 123fe56b9e6SYuval Mintz * @brief qed_qm_init_pf - Initailze the QM PF phase, per path 124fe56b9e6SYuval Mintz * 125fe56b9e6SYuval Mintz * @param p_hwfn 126fe56b9e6SYuval Mintz */ 127fe56b9e6SYuval Mintz 128fe56b9e6SYuval Mintz void qed_qm_init_pf(struct qed_hwfn *p_hwfn); 129fe56b9e6SYuval Mintz 130fe56b9e6SYuval Mintz /** 131fe56b9e6SYuval Mintz * @brief qed_cxt_release - Release a cid 132fe56b9e6SYuval Mintz * 133fe56b9e6SYuval Mintz * @param p_hwfn 134fe56b9e6SYuval Mintz * @param cid 135fe56b9e6SYuval Mintz */ 136fe56b9e6SYuval Mintz void qed_cxt_release_cid(struct qed_hwfn *p_hwfn, 137fe56b9e6SYuval Mintz u32 cid); 138fe56b9e6SYuval Mintz 139fe56b9e6SYuval Mintz #endif 140