]> git.kernelconcepts.de Git - karo-tx-linux.git/blob - drivers/net/ethernet/qlogic/qed/qed_cxt.h
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next
[karo-tx-linux.git] / drivers / net / ethernet / qlogic / qed / qed_cxt.h
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