blob: c8e1f5e5c42b9f3e67168bf73ab549905c3443e1 [file] [log] [blame]
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02001/* 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
18struct 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 */
33int 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 */
46int qed_cxt_get_cid_info(struct qed_hwfn *p_hwfn,
47 struct qed_cxt_info *p_info);
48
49enum 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 */
61int 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 */
70int 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 */
79int qed_cxt_mngr_alloc(struct qed_hwfn *p_hwfn);
80
81/**
82 * @brief qed_cxt_mngr_free
83 *
84 * @param p_hwfn
85 */
86void 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 */
95int 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 */
102void 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 */
111void 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 */
120void 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
128void 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 */
136void qed_cxt_release_cid(struct qed_hwfn *p_hwfn,
137 u32 cid);
138
139#endif