common/sfc_efx/base: free Rx queue structure in generic code
[dpdk.git] / drivers / common / sfc_efx / base / rhead_impl.h
1 /* SPDX-License-Identifier: BSD-3-Clause
2  *
3  * Copyright(c) 2019-2020 Xilinx, Inc.
4  * Copyright(c) 2018-2019 Solarflare Communications Inc.
5  */
6
7 #ifndef _SYS_RHEAD_IMPL_H
8 #define _SYS_RHEAD_IMPL_H
9
10 #ifdef  __cplusplus
11 extern "C" {
12 #endif
13
14
15 /*
16  * Riverhead requires physically contiguous event rings (so, just one
17  * DMA address is sufficient to represent it), but MCDI interface is still
18  * in terms of 4k size 4k-aligned DMA buffers.
19  */
20 #define RHEAD_EVQ_MAXNBUFS      32
21
22 #define RHEAD_EVQ_MAXNEVS       16384
23 #define RHEAD_EVQ_MINNEVS       256
24
25 #define RHEAD_RXQ_MAXNDESCS     16384
26 #define RHEAD_RXQ_MINNDESCS     256
27
28 #define RHEAD_TXQ_MAXNDESCS     16384
29 #define RHEAD_TXQ_MINNDESCS     256
30
31 #define RHEAD_EVQ_DESC_SIZE     (sizeof (efx_qword_t))
32 #define RHEAD_RXQ_DESC_SIZE     (sizeof (efx_qword_t))
33 #define RHEAD_TXQ_DESC_SIZE     (sizeof (efx_oword_t))
34
35
36 /* NIC */
37
38 LIBEFX_INTERNAL
39 extern  __checkReturn   efx_rc_t
40 rhead_board_cfg(
41         __in            efx_nic_t *enp);
42
43 LIBEFX_INTERNAL
44 extern  __checkReturn   efx_rc_t
45 rhead_nic_probe(
46         __in            efx_nic_t *enp);
47
48 LIBEFX_INTERNAL
49 extern  __checkReturn   efx_rc_t
50 rhead_nic_set_drv_limits(
51         __inout         efx_nic_t *enp,
52         __in            efx_drv_limits_t *edlp);
53
54 LIBEFX_INTERNAL
55 extern  __checkReturn   efx_rc_t
56 rhead_nic_get_vi_pool(
57         __in            efx_nic_t *enp,
58         __out           uint32_t *vi_countp);
59
60 LIBEFX_INTERNAL
61 extern  __checkReturn   efx_rc_t
62 rhead_nic_get_bar_region(
63         __in            efx_nic_t *enp,
64         __in            efx_nic_region_t region,
65         __out           uint32_t *offsetp,
66         __out           size_t *sizep);
67
68 LIBEFX_INTERNAL
69 extern  __checkReturn   efx_rc_t
70 rhead_nic_reset(
71         __in            efx_nic_t *enp);
72
73 LIBEFX_INTERNAL
74 extern  __checkReturn   efx_rc_t
75 rhead_nic_init(
76         __in            efx_nic_t *enp);
77
78 LIBEFX_INTERNAL
79 extern  __checkReturn   boolean_t
80 rhead_nic_hw_unavailable(
81         __in            efx_nic_t *enp);
82
83 LIBEFX_INTERNAL
84 extern                  void
85 rhead_nic_set_hw_unavailable(
86         __in            efx_nic_t *enp);
87
88 #if EFSYS_OPT_DIAG
89
90 LIBEFX_INTERNAL
91 extern  __checkReturn   efx_rc_t
92 rhead_nic_register_test(
93         __in            efx_nic_t *enp);
94
95 #endif  /* EFSYS_OPT_DIAG */
96
97 LIBEFX_INTERNAL
98 extern                  void
99 rhead_nic_fini(
100         __in            efx_nic_t *enp);
101
102 LIBEFX_INTERNAL
103 extern                  void
104 rhead_nic_unprobe(
105         __in            efx_nic_t *enp);
106
107
108 /* EV */
109
110 LIBEFX_INTERNAL
111 extern  __checkReturn   efx_rc_t
112 rhead_ev_init(
113         __in            efx_nic_t *enp);
114
115 LIBEFX_INTERNAL
116 extern                  void
117 rhead_ev_fini(
118         __in            efx_nic_t *enp);
119
120 LIBEFX_INTERNAL
121 extern  __checkReturn   efx_rc_t
122 rhead_ev_qcreate(
123         __in            efx_nic_t *enp,
124         __in            unsigned int index,
125         __in            efsys_mem_t *esmp,
126         __in            size_t ndescs,
127         __in            uint32_t id,
128         __in            uint32_t us,
129         __in            uint32_t flags,
130         __in            efx_evq_t *eep);
131
132 LIBEFX_INTERNAL
133 extern                  void
134 rhead_ev_qdestroy(
135         __in            efx_evq_t *eep);
136
137 LIBEFX_INTERNAL
138 extern  __checkReturn   efx_rc_t
139 rhead_ev_qprime(
140         __in            efx_evq_t *eep,
141         __in            unsigned int count);
142
143 LIBEFX_INTERNAL
144 extern                  void
145 rhead_ev_qpost(
146         __in    efx_evq_t *eep,
147         __in    uint16_t data);
148
149 LIBEFX_INTERNAL
150 extern                  void
151 rhead_ev_qpoll(
152         __in            efx_evq_t *eep,
153         __inout         unsigned int *countp,
154         __in            const efx_ev_callbacks_t *eecp,
155         __in_opt        void *arg);
156
157 LIBEFX_INTERNAL
158 extern  __checkReturn   efx_rc_t
159 rhead_ev_qmoderate(
160         __in            efx_evq_t *eep,
161         __in            unsigned int us);
162
163 #if EFSYS_OPT_QSTATS
164
165 LIBEFX_INTERNAL
166 extern                  void
167 rhead_ev_qstats_update(
168         __in                            efx_evq_t *eep,
169         __inout_ecount(EV_NQSTATS)      efsys_stat_t *stat);
170
171 #endif /* EFSYS_OPT_QSTATS */
172
173
174 /* INTR */
175
176 LIBEFX_INTERNAL
177 extern  __checkReturn   efx_rc_t
178 rhead_intr_init(
179         __in            efx_nic_t *enp,
180         __in            efx_intr_type_t type,
181         __in            efsys_mem_t *esmp);
182
183 LIBEFX_INTERNAL
184 extern                  void
185 rhead_intr_enable(
186         __in            efx_nic_t *enp);
187
188 LIBEFX_INTERNAL
189 extern                  void
190 rhead_intr_disable(
191         __in            efx_nic_t *enp);
192
193 LIBEFX_INTERNAL
194 extern                  void
195 rhead_intr_disable_unlocked(
196         __in            efx_nic_t *enp);
197
198 LIBEFX_INTERNAL
199 extern  __checkReturn   efx_rc_t
200 rhead_intr_trigger(
201         __in            efx_nic_t *enp,
202         __in            unsigned int level);
203
204 LIBEFX_INTERNAL
205 extern                  void
206 rhead_intr_status_line(
207         __in            efx_nic_t *enp,
208         __out           boolean_t *fatalp,
209         __out           uint32_t *qmaskp);
210
211 LIBEFX_INTERNAL
212 extern                  void
213 rhead_intr_status_message(
214         __in            efx_nic_t *enp,
215         __in            unsigned int message,
216         __out           boolean_t *fatalp);
217
218 LIBEFX_INTERNAL
219 extern                  void
220 rhead_intr_fatal(
221         __in            efx_nic_t *enp);
222
223 LIBEFX_INTERNAL
224 extern                  void
225 rhead_intr_fini(
226         __in            efx_nic_t *enp);
227
228
229 #ifdef  __cplusplus
230 }
231 #endif
232
233 #endif  /* _SYS_RHEAD_IMPL_H */