net/sfc/base: import SFN8xxx family support
[dpdk.git] / drivers / net / sfc / base / ef10_impl.h
1 /*
2  * Copyright (c) 2015-2016 Solarflare Communications Inc.
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions are met:
7  *
8  * 1. Redistributions of source code must retain the above copyright notice,
9  *    this list of conditions and the following disclaimer.
10  * 2. Redistributions in binary form must reproduce the above copyright notice,
11  *    this list of conditions and the following disclaimer in the documentation
12  *    and/or other materials provided with the distribution.
13  *
14  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
15  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
16  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
17  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
18  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
19  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
20  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
21  * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
22  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
23  * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
24  * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25  *
26  * The views and conclusions contained in the software and documentation are
27  * those of the authors and should not be interpreted as representing official
28  * policies, either expressed or implied, of the FreeBSD Project.
29  */
30
31 #ifndef _SYS_EF10_IMPL_H
32 #define _SYS_EF10_IMPL_H
33
34 #ifdef  __cplusplus
35 extern "C" {
36 #endif
37
38 #if (EFSYS_OPT_HUNTINGTON && EFSYS_OPT_MEDFORD)
39 #define EF10_MAX_PIOBUF_NBUFS   MAX(HUNT_PIOBUF_NBUFS, MEDFORD_PIOBUF_NBUFS)
40 #elif EFSYS_OPT_HUNTINGTON
41 #define EF10_MAX_PIOBUF_NBUFS   HUNT_PIOBUF_NBUFS
42 #elif EFSYS_OPT_MEDFORD
43 #define EF10_MAX_PIOBUF_NBUFS   MEDFORD_PIOBUF_NBUFS
44 #endif
45
46 /*
47  * FIXME: This is just a power of 2 which fits in an MCDI v1 message, and could
48  * possibly be increased, or the write size reported by newer firmware used
49  * instead.
50  */
51 #define EF10_NVRAM_CHUNK 0x80
52
53 /* Alignment requirement for value written to RX WPTR:
54  *  the WPTR must be aligned to an 8 descriptor boundary
55  */
56 #define EF10_RX_WPTR_ALIGN 8
57
58 /*
59  * Max byte offset into the packet the TCP header must start for the hardware
60  * to be able to parse the packet correctly.
61  */
62 #define EF10_TCP_HEADER_OFFSET_LIMIT    208
63
64 /* Invalid RSS context handle */
65 #define EF10_RSS_CONTEXT_INVALID        (0xffffffff)
66
67
68 /* EV */
69
70         __checkReturn   efx_rc_t
71 ef10_ev_init(
72         __in            efx_nic_t *enp);
73
74                         void
75 ef10_ev_fini(
76         __in            efx_nic_t *enp);
77
78         __checkReturn   efx_rc_t
79 ef10_ev_qcreate(
80         __in            efx_nic_t *enp,
81         __in            unsigned int index,
82         __in            efsys_mem_t *esmp,
83         __in            size_t n,
84         __in            uint32_t id,
85         __in            uint32_t us,
86         __in            uint32_t flags,
87         __in            efx_evq_t *eep);
88
89                         void
90 ef10_ev_qdestroy(
91         __in            efx_evq_t *eep);
92
93         __checkReturn   efx_rc_t
94 ef10_ev_qprime(
95         __in            efx_evq_t *eep,
96         __in            unsigned int count);
97
98                         void
99 ef10_ev_qpost(
100         __in    efx_evq_t *eep,
101         __in    uint16_t data);
102
103         __checkReturn   efx_rc_t
104 ef10_ev_qmoderate(
105         __in            efx_evq_t *eep,
106         __in            unsigned int us);
107
108                 void
109 ef10_ev_rxlabel_init(
110         __in            efx_evq_t *eep,
111         __in            efx_rxq_t *erp,
112         __in            unsigned int label,
113         __in            boolean_t packed_stream);
114
115                 void
116 ef10_ev_rxlabel_fini(
117         __in            efx_evq_t *eep,
118         __in            unsigned int label);
119
120 /* INTR */
121
122         __checkReturn   efx_rc_t
123 ef10_intr_init(
124         __in            efx_nic_t *enp,
125         __in            efx_intr_type_t type,
126         __in            efsys_mem_t *esmp);
127
128                         void
129 ef10_intr_enable(
130         __in            efx_nic_t *enp);
131
132                         void
133 ef10_intr_disable(
134         __in            efx_nic_t *enp);
135
136                         void
137 ef10_intr_disable_unlocked(
138         __in            efx_nic_t *enp);
139
140         __checkReturn   efx_rc_t
141 ef10_intr_trigger(
142         __in            efx_nic_t *enp,
143         __in            unsigned int level);
144
145                         void
146 ef10_intr_status_line(
147         __in            efx_nic_t *enp,
148         __out           boolean_t *fatalp,
149         __out           uint32_t *qmaskp);
150
151                         void
152 ef10_intr_status_message(
153         __in            efx_nic_t *enp,
154         __in            unsigned int message,
155         __out           boolean_t *fatalp);
156
157                         void
158 ef10_intr_fatal(
159         __in            efx_nic_t *enp);
160                         void
161 ef10_intr_fini(
162         __in            efx_nic_t *enp);
163
164 /* NIC */
165
166 extern  __checkReturn   efx_rc_t
167 ef10_nic_probe(
168         __in            efx_nic_t *enp);
169
170 extern  __checkReturn   efx_rc_t
171 ef10_nic_set_drv_limits(
172         __inout         efx_nic_t *enp,
173         __in            efx_drv_limits_t *edlp);
174
175 extern  __checkReturn   efx_rc_t
176 ef10_nic_get_vi_pool(
177         __in            efx_nic_t *enp,
178         __out           uint32_t *vi_countp);
179
180 extern  __checkReturn   efx_rc_t
181 ef10_nic_get_bar_region(
182         __in            efx_nic_t *enp,
183         __in            efx_nic_region_t region,
184         __out           uint32_t *offsetp,
185         __out           size_t *sizep);
186
187 extern  __checkReturn   efx_rc_t
188 ef10_nic_reset(
189         __in            efx_nic_t *enp);
190
191 extern  __checkReturn   efx_rc_t
192 ef10_nic_init(
193         __in            efx_nic_t *enp);
194
195 extern                  void
196 ef10_nic_fini(
197         __in            efx_nic_t *enp);
198
199 extern                  void
200 ef10_nic_unprobe(
201         __in            efx_nic_t *enp);
202
203
204 /* MAC */
205
206 extern  __checkReturn   efx_rc_t
207 ef10_mac_poll(
208         __in            efx_nic_t *enp,
209         __out           efx_link_mode_t *link_modep);
210
211 extern  __checkReturn   efx_rc_t
212 ef10_mac_up(
213         __in            efx_nic_t *enp,
214         __out           boolean_t *mac_upp);
215
216 extern  __checkReturn   efx_rc_t
217 ef10_mac_addr_set(
218         __in    efx_nic_t *enp);
219
220 extern  __checkReturn   efx_rc_t
221 ef10_mac_pdu_set(
222         __in    efx_nic_t *enp);
223
224 extern  __checkReturn   efx_rc_t
225 ef10_mac_pdu_get(
226         __in    efx_nic_t *enp,
227         __out   size_t *pdu);
228
229 extern  __checkReturn   efx_rc_t
230 ef10_mac_reconfigure(
231         __in    efx_nic_t *enp);
232
233 extern  __checkReturn   efx_rc_t
234 ef10_mac_multicast_list_set(
235         __in                            efx_nic_t *enp);
236
237 extern  __checkReturn   efx_rc_t
238 ef10_mac_filter_default_rxq_set(
239         __in            efx_nic_t *enp,
240         __in            efx_rxq_t *erp,
241         __in            boolean_t using_rss);
242
243 extern                  void
244 ef10_mac_filter_default_rxq_clear(
245         __in            efx_nic_t *enp);
246
247
248 /* MCDI */
249
250 #if EFSYS_OPT_MCDI
251
252 extern  __checkReturn   efx_rc_t
253 ef10_mcdi_init(
254         __in            efx_nic_t *enp,
255         __in            const efx_mcdi_transport_t *mtp);
256
257 extern                  void
258 ef10_mcdi_fini(
259         __in            efx_nic_t *enp);
260
261 extern                  void
262 ef10_mcdi_send_request(
263         __in                    efx_nic_t *enp,
264         __in_bcount(hdr_len)    void *hdrp,
265         __in                    size_t hdr_len,
266         __in_bcount(sdu_len)    void *sdup,
267         __in                    size_t sdu_len);
268
269 extern  __checkReturn   boolean_t
270 ef10_mcdi_poll_response(
271         __in            efx_nic_t *enp);
272
273 extern                  void
274 ef10_mcdi_read_response(
275         __in                    efx_nic_t *enp,
276         __out_bcount(length)    void *bufferp,
277         __in                    size_t offset,
278         __in                    size_t length);
279
280 extern                  efx_rc_t
281 ef10_mcdi_poll_reboot(
282         __in            efx_nic_t *enp);
283
284 extern  __checkReturn   efx_rc_t
285 ef10_mcdi_feature_supported(
286         __in            efx_nic_t *enp,
287         __in            efx_mcdi_feature_id_t id,
288         __out           boolean_t *supportedp);
289
290 extern                  void
291 ef10_mcdi_get_timeout(
292         __in            efx_nic_t *enp,
293         __in            efx_mcdi_req_t *emrp,
294         __out           uint32_t *timeoutp);
295
296 #endif /* EFSYS_OPT_MCDI */
297
298 /* NVRAM */
299
300
301 /* PHY */
302
303 typedef struct ef10_link_state_s {
304         uint32_t                els_adv_cap_mask;
305         uint32_t                els_lp_cap_mask;
306         unsigned int            els_fcntl;
307         efx_link_mode_t         els_link_mode;
308         boolean_t               els_mac_up;
309 } ef10_link_state_t;
310
311 extern                  void
312 ef10_phy_link_ev(
313         __in            efx_nic_t *enp,
314         __in            efx_qword_t *eqp,
315         __out           efx_link_mode_t *link_modep);
316
317 extern  __checkReturn   efx_rc_t
318 ef10_phy_get_link(
319         __in            efx_nic_t *enp,
320         __out           ef10_link_state_t *elsp);
321
322 extern  __checkReturn   efx_rc_t
323 ef10_phy_power(
324         __in            efx_nic_t *enp,
325         __in            boolean_t on);
326
327 extern  __checkReturn   efx_rc_t
328 ef10_phy_reconfigure(
329         __in            efx_nic_t *enp);
330
331 extern  __checkReturn   efx_rc_t
332 ef10_phy_verify(
333         __in            efx_nic_t *enp);
334
335 extern  __checkReturn   efx_rc_t
336 ef10_phy_oui_get(
337         __in            efx_nic_t *enp,
338         __out           uint32_t *ouip);
339
340 /* TX */
341
342 extern  __checkReturn   efx_rc_t
343 ef10_tx_init(
344         __in            efx_nic_t *enp);
345
346 extern                  void
347 ef10_tx_fini(
348         __in            efx_nic_t *enp);
349
350 extern  __checkReturn   efx_rc_t
351 ef10_tx_qcreate(
352         __in            efx_nic_t *enp,
353         __in            unsigned int index,
354         __in            unsigned int label,
355         __in            efsys_mem_t *esmp,
356         __in            size_t n,
357         __in            uint32_t id,
358         __in            uint16_t flags,
359         __in            efx_evq_t *eep,
360         __in            efx_txq_t *etp,
361         __out           unsigned int *addedp);
362
363 extern          void
364 ef10_tx_qdestroy(
365         __in            efx_txq_t *etp);
366
367 extern  __checkReturn   efx_rc_t
368 ef10_tx_qpost(
369         __in            efx_txq_t *etp,
370         __in_ecount(n)  efx_buffer_t *eb,
371         __in            unsigned int n,
372         __in            unsigned int completed,
373         __inout         unsigned int *addedp);
374
375 extern                  void
376 ef10_tx_qpush(
377         __in            efx_txq_t *etp,
378         __in            unsigned int added,
379         __in            unsigned int pushed);
380
381 extern  __checkReturn   efx_rc_t
382 ef10_tx_qpace(
383         __in            efx_txq_t *etp,
384         __in            unsigned int ns);
385
386 extern  __checkReturn   efx_rc_t
387 ef10_tx_qflush(
388         __in            efx_txq_t *etp);
389
390 extern                  void
391 ef10_tx_qenable(
392         __in            efx_txq_t *etp);
393
394 extern  __checkReturn   efx_rc_t
395 ef10_tx_qpio_enable(
396         __in            efx_txq_t *etp);
397
398 extern                  void
399 ef10_tx_qpio_disable(
400         __in            efx_txq_t *etp);
401
402 extern  __checkReturn   efx_rc_t
403 ef10_tx_qpio_write(
404         __in                    efx_txq_t *etp,
405         __in_ecount(buf_length) uint8_t *buffer,
406         __in                    size_t buf_length,
407         __in                    size_t pio_buf_offset);
408
409 extern  __checkReturn   efx_rc_t
410 ef10_tx_qpio_post(
411         __in                    efx_txq_t *etp,
412         __in                    size_t pkt_length,
413         __in                    unsigned int completed,
414         __inout                 unsigned int *addedp);
415
416 extern  __checkReturn   efx_rc_t
417 ef10_tx_qdesc_post(
418         __in            efx_txq_t *etp,
419         __in_ecount(n)  efx_desc_t *ed,
420         __in            unsigned int n,
421         __in            unsigned int completed,
422         __inout         unsigned int *addedp);
423
424 extern  void
425 ef10_tx_qdesc_dma_create(
426         __in    efx_txq_t *etp,
427         __in    efsys_dma_addr_t addr,
428         __in    size_t size,
429         __in    boolean_t eop,
430         __out   efx_desc_t *edp);
431
432 extern  void
433 ef10_tx_qdesc_tso_create(
434         __in    efx_txq_t *etp,
435         __in    uint16_t ipv4_id,
436         __in    uint32_t tcp_seq,
437         __in    uint8_t  tcp_flags,
438         __out   efx_desc_t *edp);
439
440 extern  void
441 ef10_tx_qdesc_tso2_create(
442         __in                    efx_txq_t *etp,
443         __in                    uint16_t ipv4_id,
444         __in                    uint32_t tcp_seq,
445         __in                    uint16_t tcp_mss,
446         __out_ecount(count)     efx_desc_t *edp,
447         __in                    int count);
448
449 extern  void
450 ef10_tx_qdesc_vlantci_create(
451         __in    efx_txq_t *etp,
452         __in    uint16_t vlan_tci,
453         __out   efx_desc_t *edp);
454
455
456 typedef uint32_t        efx_piobuf_handle_t;
457
458 #define EFX_PIOBUF_HANDLE_INVALID       ((efx_piobuf_handle_t) -1)
459
460 extern  __checkReturn   efx_rc_t
461 ef10_nic_pio_alloc(
462         __inout         efx_nic_t *enp,
463         __out           uint32_t *bufnump,
464         __out           efx_piobuf_handle_t *handlep,
465         __out           uint32_t *blknump,
466         __out           uint32_t *offsetp,
467         __out           size_t *sizep);
468
469 extern  __checkReturn   efx_rc_t
470 ef10_nic_pio_free(
471         __inout         efx_nic_t *enp,
472         __in            uint32_t bufnum,
473         __in            uint32_t blknum);
474
475 extern  __checkReturn   efx_rc_t
476 ef10_nic_pio_link(
477         __inout         efx_nic_t *enp,
478         __in            uint32_t vi_index,
479         __in            efx_piobuf_handle_t handle);
480
481 extern  __checkReturn   efx_rc_t
482 ef10_nic_pio_unlink(
483         __inout         efx_nic_t *enp,
484         __in            uint32_t vi_index);
485
486
487 /* VPD */
488
489
490 /* RX */
491
492 extern  __checkReturn   efx_rc_t
493 ef10_rx_init(
494         __in            efx_nic_t *enp);
495
496
497 extern  __checkReturn   efx_rc_t
498 ef10_rx_prefix_pktlen(
499         __in            efx_nic_t *enp,
500         __in            uint8_t *buffer,
501         __out           uint16_t *lengthp);
502
503 extern                  void
504 ef10_rx_qpost(
505         __in            efx_rxq_t *erp,
506         __in_ecount(n)  efsys_dma_addr_t *addrp,
507         __in            size_t size,
508         __in            unsigned int n,
509         __in            unsigned int completed,
510         __in            unsigned int added);
511
512 extern                  void
513 ef10_rx_qpush(
514         __in            efx_rxq_t *erp,
515         __in            unsigned int added,
516         __inout         unsigned int *pushedp);
517
518 extern  __checkReturn   efx_rc_t
519 ef10_rx_qflush(
520         __in            efx_rxq_t *erp);
521
522 extern          void
523 ef10_rx_qenable(
524         __in            efx_rxq_t *erp);
525
526 extern  __checkReturn   efx_rc_t
527 ef10_rx_qcreate(
528         __in            efx_nic_t *enp,
529         __in            unsigned int index,
530         __in            unsigned int label,
531         __in            efx_rxq_type_t type,
532         __in            efsys_mem_t *esmp,
533         __in            size_t n,
534         __in            uint32_t id,
535         __in            efx_evq_t *eep,
536         __in            efx_rxq_t *erp);
537
538 extern                  void
539 ef10_rx_qdestroy(
540         __in            efx_rxq_t *erp);
541
542 extern                  void
543 ef10_rx_fini(
544         __in            efx_nic_t *enp);
545
546 #if EFSYS_OPT_FILTER
547
548 typedef struct ef10_filter_handle_s {
549         uint32_t        efh_lo;
550         uint32_t        efh_hi;
551 } ef10_filter_handle_t;
552
553 typedef struct ef10_filter_entry_s {
554         uintptr_t efe_spec; /* pointer to filter spec plus busy bit */
555         ef10_filter_handle_t efe_handle;
556 } ef10_filter_entry_t;
557
558 /*
559  * BUSY flag indicates that an update is in progress.
560  * AUTO_OLD flag is used to mark and sweep MAC packet filters.
561  */
562 #define EFX_EF10_FILTER_FLAG_BUSY       1U
563 #define EFX_EF10_FILTER_FLAG_AUTO_OLD   2U
564 #define EFX_EF10_FILTER_FLAGS           3U
565
566 /*
567  * Size of the hash table used by the driver. Doesn't need to be the
568  * same size as the hardware's table.
569  */
570 #define EFX_EF10_FILTER_TBL_ROWS 8192
571
572 /* Only need to allow for one directed and one unknown unicast filter */
573 #define EFX_EF10_FILTER_UNICAST_FILTERS_MAX     2
574
575 /* Allow for the broadcast address to be added to the multicast list */
576 #define EFX_EF10_FILTER_MULTICAST_FILTERS_MAX   (EFX_MAC_MULTICAST_LIST_MAX + 1)
577
578 typedef struct ef10_filter_table_s {
579         ef10_filter_entry_t     eft_entry[EFX_EF10_FILTER_TBL_ROWS];
580         efx_rxq_t               *eft_default_rxq;
581         boolean_t               eft_using_rss;
582         uint32_t                eft_unicst_filter_indexes[
583             EFX_EF10_FILTER_UNICAST_FILTERS_MAX];
584         uint32_t                eft_unicst_filter_count;
585         uint32_t                eft_mulcst_filter_indexes[
586             EFX_EF10_FILTER_MULTICAST_FILTERS_MAX];
587         uint32_t                eft_mulcst_filter_count;
588         boolean_t               eft_using_all_mulcst;
589 } ef10_filter_table_t;
590
591         __checkReturn   efx_rc_t
592 ef10_filter_init(
593         __in            efx_nic_t *enp);
594
595                         void
596 ef10_filter_fini(
597         __in            efx_nic_t *enp);
598
599         __checkReturn   efx_rc_t
600 ef10_filter_restore(
601         __in            efx_nic_t *enp);
602
603         __checkReturn   efx_rc_t
604 ef10_filter_add(
605         __in            efx_nic_t *enp,
606         __inout         efx_filter_spec_t *spec,
607         __in            boolean_t may_replace);
608
609         __checkReturn   efx_rc_t
610 ef10_filter_delete(
611         __in            efx_nic_t *enp,
612         __inout         efx_filter_spec_t *spec);
613
614 extern  __checkReturn   efx_rc_t
615 ef10_filter_supported_filters(
616         __in            efx_nic_t *enp,
617         __out           uint32_t *list,
618         __out           size_t *length);
619
620 extern  __checkReturn   efx_rc_t
621 ef10_filter_reconfigure(
622         __in                            efx_nic_t *enp,
623         __in_ecount(6)                  uint8_t const *mac_addr,
624         __in                            boolean_t all_unicst,
625         __in                            boolean_t mulcst,
626         __in                            boolean_t all_mulcst,
627         __in                            boolean_t brdcst,
628         __in_ecount(6*count)            uint8_t const *addrs,
629         __in                            uint32_t count);
630
631 extern          void
632 ef10_filter_get_default_rxq(
633         __in            efx_nic_t *enp,
634         __out           efx_rxq_t **erpp,
635         __out           boolean_t *using_rss);
636
637 extern          void
638 ef10_filter_default_rxq_set(
639         __in            efx_nic_t *enp,
640         __in            efx_rxq_t *erp,
641         __in            boolean_t using_rss);
642
643 extern          void
644 ef10_filter_default_rxq_clear(
645         __in            efx_nic_t *enp);
646
647
648 #endif /* EFSYS_OPT_FILTER */
649
650 extern  __checkReturn                   efx_rc_t
651 efx_mcdi_get_function_info(
652         __in                            efx_nic_t *enp,
653         __out                           uint32_t *pfp,
654         __out_opt                       uint32_t *vfp);
655
656 extern  __checkReturn           efx_rc_t
657 efx_mcdi_privilege_mask(
658         __in                    efx_nic_t *enp,
659         __in                    uint32_t pf,
660         __in                    uint32_t vf,
661         __out                   uint32_t *maskp);
662
663 extern  __checkReturn   efx_rc_t
664 efx_mcdi_get_port_assignment(
665         __in            efx_nic_t *enp,
666         __out           uint32_t *portp);
667
668 extern  __checkReturn   efx_rc_t
669 efx_mcdi_get_port_modes(
670         __in            efx_nic_t *enp,
671         __out           uint32_t *modesp,
672         __out_opt       uint32_t *current_modep);
673
674 extern  __checkReturn   efx_rc_t
675 ef10_nic_get_port_mode_bandwidth(
676         __in            uint32_t port_mode,
677         __out           uint32_t *bandwidth_mbpsp);
678
679 extern  __checkReturn   efx_rc_t
680 efx_mcdi_get_mac_address_pf(
681         __in                    efx_nic_t *enp,
682         __out_ecount_opt(6)     uint8_t mac_addrp[6]);
683
684 extern  __checkReturn   efx_rc_t
685 efx_mcdi_get_mac_address_vf(
686         __in                    efx_nic_t *enp,
687         __out_ecount_opt(6)     uint8_t mac_addrp[6]);
688
689 extern  __checkReturn   efx_rc_t
690 efx_mcdi_get_clock(
691         __in            efx_nic_t *enp,
692         __out           uint32_t *sys_freqp,
693         __out           uint32_t *dpcpu_freqp);
694
695
696 extern  __checkReturn   efx_rc_t
697 efx_mcdi_get_vector_cfg(
698         __in            efx_nic_t *enp,
699         __out_opt       uint32_t *vec_basep,
700         __out_opt       uint32_t *pf_nvecp,
701         __out_opt       uint32_t *vf_nvecp);
702
703 extern  __checkReturn   efx_rc_t
704 ef10_get_datapath_caps(
705         __in            efx_nic_t *enp);
706
707 extern  __checkReturn           efx_rc_t
708 ef10_get_privilege_mask(
709         __in                    efx_nic_t *enp,
710         __out                   uint32_t *maskp);
711
712 extern  __checkReturn   efx_rc_t
713 ef10_external_port_mapping(
714         __in            efx_nic_t *enp,
715         __in            uint32_t port,
716         __out           uint8_t *external_portp);
717
718 #ifdef  __cplusplus
719 }
720 #endif
721
722 #endif  /* _SYS_EF10_IMPL_H */