xref: /freebsd-11-stable/sys/dev/vxge/vxge.h (revision 4ab2e064d7950be84256d671a7ae93f87cc6aa36)
1 /*-
2  * Copyright(c) 2002-2011 Exar Corp.
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification are permitted provided 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  *
11  *    2. Redistributions in binary form must reproduce the above copyright
12  *       notice, this list of conditions and the following disclaimer in the
13  *       documentation and/or other materials provided with the distribution.
14  *
15  *    3. Neither the name of the Exar Corporation nor the names of its
16  *       contributors may be used to endorse or promote products derived from
17  *       this software without specific prior written permission.
18  *
19  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
20  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
22  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
23  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
24  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
25  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
26  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
27  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
28  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29  * POSSIBILITY OF SUCH DAMAGE.
30  */
31 /*$FreeBSD$*/
32 
33 #ifndef	_VXGE_H_
34 #define	_VXGE_H_
35 
36 #include <dev/vxge/vxgehal/vxgehal.h>
37 #include <dev/vxge/vxge-osdep.h>
38 #include "vxge-firmware.h"
39 
40 #define	VXGE_GET_PARAM(str_kenv, to, param, hardcode) {	\
41 	static int __CONCAT(param, __LINE__);		\
42 	if (testenv(str_kenv) == 1)			\
43 		TUNABLE_INT_FETCH(str_kenv,		\
44 		    &__CONCAT(param, __LINE__));	\
45 	else						\
46 		__CONCAT(param, __LINE__) = hardcode;	\
47 							\
48 	to.param = __CONCAT(param, __LINE__);		\
49 }
50 
51 #define	VXGE_BUFFER_ALIGN(buffer_length, to) {		\
52 	if (buffer_length % to)				\
53 		buffer_length +=			\
54 		    (to - (buffer_length % to));	\
55 }
56 
57 #define	VXGE_HAL_VPATH_MSIX_ACTIVE		4
58 #define	VXGE_HAL_VPATH_MSIX_ALARM_ID		2
59 #define	VXGE_MSIX_ALARM_ID(hldev, i)			\
60 	((__hal_device_t *) hldev)->first_vp_id *	\
61 	    VXGE_HAL_VPATH_MSIX_ACTIVE + i;
62 
63 #define	VXGE_DUAL_PORT_MODE			2
64 #define	VXGE_DUAL_PORT_MAP			0xAAAAULL
65 #define	VXGE_BAUDRATE				1000000000
66 #define	VXGE_MAX_SEGS				VXGE_HAL_MAX_FIFO_FRAGS
67 #define	VXGE_TSO_SIZE				65600
68 #define	VXGE_STATS_BUFFER_SIZE			65536
69 #define	VXGE_PRINT_BUF_SIZE			128
70 #define	VXGE_PMD_INFO_LEN			24
71 #define	VXGE_RXD_REPLENISH_COUNT		4
72 #define	VXGE_TX_LOW_THRESHOLD			32
73 
74 /* Default configuration parameters */
75 #define	VXGE_DEFAULT_USER_HARDCODED		-1
76 #define	VXGE_DEFAULT_CONFIG_VALUE		0xFF
77 #define	VXGE_DEFAULT_CONFIG_ENABLE		1
78 #define	VXGE_DEFAULT_CONFIG_DISABLE		0
79 
80 #if __FreeBSD_version >= 800000
81 #define	VXGE_DEFAULT_CONFIG_MQ_ENABLE		1
82 #else
83 #define	VXGE_DEFAULT_CONFIG_MQ_ENABLE		0
84 #endif
85 
86 #define	VXGE_DEFAULT_CONFIG_IFQ_MAXLEN		1024
87 
88 #define	VXGE_DEFAULT_BR_SIZE			4096
89 #define	VXGE_DEFAULT_RTH_BUCKET_SIZE		8
90 #define	VXGE_DEFAULT_RING_BLOCK			2
91 #define	VXGE_DEFAULT_SUPPORTED_DEVICES		1
92 #define	VXGE_DEFAULT_DEVICE_POLL_MILLIS		2000
93 #define	VXGE_DEFAULT_FIFO_ALIGNED_FRAGS		1
94 #define	VXGE_DEFAULT_VPATH_PRIORITY_LOW		3
95 #define	VXGE_DEFAULT_VPATH_PRIORITY_HIGH	0
96 #define	VXGE_DEFAULT_ALL_VID_ENABLE		\
97 	VXGE_HAL_VPATH_RPA_ALL_VID_ENABLE
98 
99 #define	VXGE_DEFAULT_STRIP_VLAN_TAG		\
100 	VXGE_HAL_VPATH_RPA_STRIP_VLAN_TAG_ENABLE
101 
102 #define	VXGE_DEFAULT_TTI_BTIMER_VAL		250000
103 #define	VXGE_DEFAULT_TTI_LTIMER_VAL		80
104 #define	VXGE_DEFAULT_TTI_RTIMER_VAL		0
105 
106 #define	VXGE_DEFAULT_RTI_BTIMER_VAL		250
107 #define	VXGE_DEFAULT_RTI_LTIMER_VAL		100
108 #define	VXGE_DEFAULT_RTI_RTIMER_VAL		0
109 
110 #define	VXGE_TTI_RTIMER_ADAPT_VAL		10
111 #define	VXGE_RTI_RTIMER_ADAPT_VAL		15
112 
113 #define	VXGE_DEFAULT_TTI_TX_URANGE_A		5
114 #define	VXGE_DEFAULT_TTI_TX_URANGE_B		15
115 #define	VXGE_DEFAULT_TTI_TX_URANGE_C		40
116 
117 #define	VXGE_DEFAULT_RTI_RX_URANGE_A		5
118 #define	VXGE_DEFAULT_RTI_RX_URANGE_B		15
119 #define	VXGE_DEFAULT_RTI_RX_URANGE_C		40
120 
121 #define	VXGE_DEFAULT_TTI_TX_UFC_A		1
122 #define	VXGE_DEFAULT_TTI_TX_UFC_B		5
123 #define	VXGE_DEFAULT_TTI_TX_UFC_C		15
124 #define	VXGE_DEFAULT_TTI_TX_UFC_D		40
125 
126 #define	VXGE_DEFAULT_RTI_RX_UFC_A		1
127 #define	VXGE_DEFAULT_RTI_RX_UFC_B		20
128 #define	VXGE_DEFAULT_RTI_RX_UFC_C		40
129 #define	VXGE_DEFAULT_RTI_RX_UFC_D		100
130 
131 #define	VXGE_MAX_RX_INTERRUPT_COUNT		100
132 #define	VXGE_MAX_TX_INTERRUPT_COUNT		200
133 
134 #define	is_multi_func(func_mode) \
135 	((func_mode == VXGE_HAL_PCIE_FUNC_MODE_MF8_VP2) || \
136 	(func_mode == VXGE_HAL_PCIE_FUNC_MODE_MF2_VP8) || \
137 	(func_mode == VXGE_HAL_PCIE_FUNC_MODE_MF4_VP4) || \
138 	(func_mode == VXGE_HAL_PCIE_FUNC_MODE_MF8P_VP2))
139 
140 #define	is_single_func(func_mode) \
141 	(func_mode == VXGE_HAL_PCIE_FUNC_MODE_SF1_VP17)
142 
143 #define	VXGE_DRV_STATS(v, x)		v->driver_stats.x++
144 #define	VXGE_MAX_MSIX_MESSAGES		(VXGE_HAL_MAX_VIRTUAL_PATHS * 2 + 2)
145 
146 #define	VXGE_DRV_LOCK(x)		mtx_lock(&(x)->mtx_drv)
147 #define	VXGE_DRV_UNLOCK(x)		mtx_unlock(&(x)->mtx_drv)
148 #define	VXGE_DRV_LOCK_DESTROY(x)	mtx_destroy(&(x)->mtx_drv)
149 #define	VXGE_DRV_LOCK_ASSERT(x)		mtx_assert(&(x)->mtx_drv, MA_OWNED)
150 
151 #define	VXGE_TX_LOCK(x)			mtx_lock(&(x)->mtx_tx)
152 #define	VXGE_TX_TRYLOCK(x)		mtx_trylock(&(x)->mtx_tx)
153 #define	VXGE_TX_UNLOCK(x)		mtx_unlock(&(x)->mtx_tx)
154 #define	VXGE_TX_LOCK_DESTROY(x)		mtx_destroy(&(x)->mtx_tx)
155 #define	VXGE_TX_LOCK_ASSERT(x)		mtx_assert(&(x)->mtx_tx, MA_OWNED)
156 
157 const char *
158 vxge_port_mode[6] =
159 {
160 	"Default",
161 	"Reserved",
162 	"Active/Passive",
163 	"Single Port",
164 	"Dual Port",
165 	"Disabled"
166 };
167 
168 const char *
169 vxge_port_failure[3] =
170 {
171 	"No Failover",
172 	"Failover only",
173 	"Failover & Failback"
174 };
175 
176 /* IOCTLs to identify vxge-manage requests */
177 typedef enum _vxge_query_device_info_e {
178 
179 	VXGE_GET_PCI_CONF = 100,
180 	VXGE_GET_MRPCIM_STATS = 101,
181 	VXGE_GET_DEVICE_STATS = 102,
182 	VXGE_GET_DEVICE_HWINFO = 103,
183 	VXGE_GET_DRIVER_STATS = 104,
184 	VXGE_GET_INTR_STATS = 105,
185 	VXGE_GET_VERSION = 106,
186 	VXGE_GET_TCODE = 107,
187 	VXGE_GET_VPATH_COUNT = 108,
188 	VXGE_GET_BANDWIDTH = 109,
189 	VXGE_SET_BANDWIDTH = 110,
190 	VXGE_GET_PORT_MODE = 111,
191 	VXGE_SET_PORT_MODE = 112
192 
193 } vxge_query_device_info_e;
194 
195 typedef enum _vxge_firmware_upgrade_e {
196 
197 	VXGE_FW_UPGRADE_NONE = 0,
198 	VXGE_FW_UPGRADE_ALL = 1,
199 	VXGE_FW_UPGRADE_FORCE = 2
200 
201 } vxge_firmware_upgrade_e;
202 
203 typedef enum _vxge_free_resources_e {
204 
205 	VXGE_FREE_NONE = 0,
206 	VXGE_FREE_MUTEX = 1,
207 	VXGE_FREE_PCI_INFO = 2,
208 	VXGE_FREE_BAR0 = 3,
209 	VXGE_FREE_BAR1 = 4,
210 	VXGE_FREE_BAR2 = 5,
211 	VXGE_FREE_ISR_RESOURCE = 6,
212 	VXGE_FREE_MEDIA = 7,
213 	VXGE_FREE_INTERFACE = 8,
214 	VXGE_FREE_DEVICE_CONFIG = 9,
215 	VXGE_FREE_TERMINATE_DEVICE = 10,
216 	VXGE_FREE_TERMINATE_DRIVER = 11,
217 	VXGE_DISABLE_PCI_BUSMASTER = 12,
218 	VXGE_FREE_VPATH = 13,
219 	VXGE_FREE_ALL = 14
220 
221 } vxge_free_resources_e;
222 
223 typedef enum _vxge_device_attributes_e {
224 
225 	VXGE_PRINT_DRV_VERSION = 0,
226 	VXGE_PRINT_PCIE_INFO = 1,
227 	VXGE_PRINT_SERIAL_NO = 2,
228 	VXGE_PRINT_PART_NO = 3,
229 	VXGE_PRINT_FW_VERSION = 4,
230 	VXGE_PRINT_FW_DATE = 5,
231 	VXGE_PRINT_FUNC_MODE = 6,
232 	VXGE_PRINT_INTR_MODE = 7,
233 	VXGE_PRINT_VPATH_COUNT = 8,
234 	VXGE_PRINT_MTU_SIZE = 9,
235 	VXGE_PRINT_LRO_MODE = 10,
236 	VXGE_PRINT_RTH_MODE = 11,
237 	VXGE_PRINT_TSO_MODE = 12,
238 	VXGE_PRINT_PMD_PORTS_0 = 13,
239 	VXGE_PRINT_PMD_PORTS_1 = 14,
240 	VXGE_PRINT_ADAPTER_TYPE = 15,
241 	VXGE_PRINT_PORT_MODE = 16,
242 	VXGE_PRINT_PORT_FAILURE = 17,
243 	VXGE_PRINT_ACTIVE_PORT = 18,
244 	VXGE_PRINT_L2SWITCH_MODE = 19
245 
246 } vxge_device_attribute_e;
247 
248 typedef struct _vxge_isr_info_t {
249 
250 	int	irq_rid;
251 	void   *irq_handle;
252 	struct resource *irq_res;
253 
254 } vxge_isr_info_t;
255 
256 typedef struct _vxge_drv_stats_t {
257 
258 	u64	isr_msix;
259 
260 	u64	tx_xmit;
261 	u64	tx_posted;
262 	u64	tx_compl;
263 	u64	tx_tso;
264 	u64	tx_tcode;
265 	u64	tx_low_dtr_cnt;
266 	u64	tx_reserve_failed;
267 	u64	tx_no_dma_setup;
268 	u64	tx_max_frags;
269 	u64	tx_again;
270 
271 	u64	rx_compl;
272 	u64	rx_tcode;
273 	u64	rx_no_buf;
274 	u64	rx_map_fail;
275 	u64	rx_lro_queued;
276 	u64	rx_lro_flushed;
277 
278 } vxge_drv_stats_t;
279 
280 typedef struct vxge_dev_t vxge_dev_t;
281 
282 /* Rx descriptor private structure */
283 typedef struct _vxge_rxd_priv_t {
284 
285 	mbuf_t	mbuf_pkt;
286 	bus_size_t dma_sizes[1];
287 	bus_addr_t dma_addr[1];
288 	bus_dmamap_t dma_map;
289 
290 } vxge_rxd_priv_t;
291 
292 /* Tx descriptor private structure */
293 typedef struct _vxge_txdl_priv_t {
294 
295 	mbuf_t	mbuf_pkt;
296 	bus_dmamap_t dma_map;
297 	bus_dma_segment_t dma_buffers[VXGE_MAX_SEGS];
298 
299 } vxge_txdl_priv_t;
300 
301 typedef struct _vxge_vpath_t {
302 
303 	u32		vp_id;
304 	u32		vp_index;
305 	u32		is_open;
306 	u32		lro_enable;
307 	int		msix_vec;
308 
309 	int		msix_vec_alarm;
310 	u32		is_configured;
311 	u64		rxd_posted;
312 	macaddr_t	mac_addr;
313 	macaddr_t	mac_mask;
314 
315 	int		tx_ticks;
316 	int		rx_ticks;
317 
318 	u32		tti_rtimer_val;
319 	u32		rti_rtimer_val;
320 
321 	u64		tx_interrupts;
322 	u64		rx_interrupts;
323 
324 	int		tx_intr_coalesce;
325 	int		rx_intr_coalesce;
326 
327 	vxge_dev_t	*vdev;
328 	vxge_hal_vpath_h handle;
329 	char		mtx_tx_name[16];
330 
331 	bus_dma_tag_t	dma_tag_tx;
332 	bus_dma_tag_t	dma_tag_rx;
333 	bus_dmamap_t	extra_dma_map;
334 
335 	vxge_drv_stats_t driver_stats;
336 	struct		mtx mtx_tx;
337 	struct		lro_ctrl lro;
338 
339 #if __FreeBSD_version >= 800000
340 	struct		buf_ring *br;
341 #endif
342 
343 } vxge_vpath_t;
344 
345 typedef struct _vxge_bw_info_t {
346 
347 	char	query;
348 	u64	func_id;
349 	int	priority;
350 	int	bandwidth;
351 
352 } vxge_bw_info_t;
353 
354 typedef struct _vxge_port_info_t {
355 
356 	char	query;
357 	int	port_mode;
358 	int	port_failure;
359 
360 } vxge_port_info_t;
361 
362 typedef struct _vxge_device_hw_info_t {
363 
364 	vxge_hal_device_hw_info_t hw_info;
365 	vxge_hal_xmac_nwif_dp_mode port_mode;
366 	vxge_hal_xmac_nwif_behavior_on_failure port_failure;
367 
368 } vxge_device_hw_info_t;
369 
370 typedef struct _vxge_config_t {
371 
372 	u32	intr_mode;
373 	int	lro_enable;
374 	int	rth_enable;
375 	int	tso_enable;
376 	int	tx_steering;
377 	int	rth_bkt_sz;
378 	int	ifq_maxlen;
379 	int	no_of_vpath;
380 	int	ifq_multi;
381 	int	intr_coalesce;
382 	int	low_latency;
383 	int	l2_switch;
384 	int	port_mode;
385 	int	function_mode;
386 	char	nic_attr[20][128];
387 
388 	vxge_hal_device_hw_info_t	hw_info;
389 	vxge_firmware_upgrade_e		fw_option;
390 	vxge_hal_xmac_nwif_behavior_on_failure	port_failure;
391 
392 	vxge_bw_info_t		bw_info[VXGE_HAL_MAX_FUNCTIONS];
393 	vxge_isr_info_t		isr_info[VXGE_MAX_MSIX_MESSAGES];
394 
395 } vxge_config_t;
396 
397 struct vxge_dev_t {
398 
399 	device_t ndev;
400 
401 	bool	is_privilaged;
402 	bool	is_initialized;
403 	bool	is_active;
404 	int	intr_count;
405 	bool	fw_upgrade;
406 	int	no_of_vpath;
407 	u64	active_port;
408 	u32	no_of_func;
409 	u32	hw_fw_version;
410 	u32	max_supported_vpath;
411 	int	rx_mbuf_sz;
412 	int	if_flags;
413 	int	ifm_optics;
414 	ifnet_t	ifp;
415 
416 	vxge_hal_xmac_nwif_dp_mode		port_mode;
417 	vxge_hal_xmac_nwif_l2_switch_status	l2_switch;
418 	vxge_hal_xmac_nwif_behavior_on_failure	port_failure;
419 
420 	char	ndev_name[16];
421 	char	mtx_drv_name[16];
422 
423 	struct mtx mtx_drv;
424 	struct ifmedia media;
425 
426 	vxge_pci_info_t		*pdev;
427 	vxge_hal_device_t	*devh;
428 	vxge_vpath_t		*vpaths;
429 	vxge_config_t		config;
430 	vxge_hal_device_config_t *device_config;
431 	vxge_hal_vpath_h	vpath_handles[VXGE_HAL_MAX_VIRTUAL_PATHS];
432 };
433 
434 int	vxge_probe(device_t);
435 int	vxge_attach(device_t);
436 int	vxge_detach(device_t);
437 int	vxge_shutdown(device_t);
438 
439 int	vxge_alloc_resources(vxge_dev_t *);
440 int	vxge_alloc_isr_resources(vxge_dev_t *);
441 int	vxge_alloc_bar_resources(vxge_dev_t *, int);
442 void	vxge_free_resources(device_t, vxge_free_resources_e);
443 void	vxge_free_isr_resources(vxge_dev_t *);
444 void	vxge_free_bar_resources(vxge_dev_t *, int);
445 
446 int	vxge_device_hw_info_get(vxge_dev_t *);
447 int	vxge_firmware_verify(vxge_dev_t *);
448 
449 vxge_hal_status_e
450 vxge_driver_init(vxge_dev_t *);
451 
452 vxge_hal_status_e
453 vxge_firmware_upgrade(vxge_dev_t *);
454 
455 vxge_hal_status_e
456 vxge_func_mode_set(vxge_dev_t *);
457 
458 vxge_hal_status_e
459 vxge_port_mode_set(vxge_dev_t *);
460 
461 vxge_hal_status_e
462 vxge_port_behavior_on_failure_set(vxge_dev_t *);
463 
464 vxge_hal_status_e
465 vxge_l2switch_mode_set(vxge_dev_t *);
466 
467 void	vxge_init(void *);
468 void	vxge_init_locked(vxge_dev_t *);
469 
470 void	vxge_stop(vxge_dev_t *);
471 void	vxge_stop_locked(vxge_dev_t *);
472 
473 void	vxge_reset(vxge_dev_t *);
474 int	vxge_ifp_setup(device_t);
475 int	vxge_isr_setup(vxge_dev_t *);
476 
477 void	vxge_media_init(vxge_dev_t *);
478 int	vxge_media_change(ifnet_t);
479 void	vxge_media_status(ifnet_t, struct ifmediareq *);
480 
481 void	vxge_mutex_init(vxge_dev_t *);
482 void	vxge_mutex_destroy(vxge_dev_t *);
483 void	vxge_link_up(vxge_hal_device_h, void *);
484 void	vxge_link_down(vxge_hal_device_h, void *);
485 void	vxge_crit_error(vxge_hal_device_h, void *, vxge_hal_event_e, u64);
486 
487 int	vxge_ioctl(ifnet_t, u_long, caddr_t);
488 int	vxge_ioctl_regs(vxge_dev_t *, struct ifreq *);
489 int	vxge_ioctl_stats(vxge_dev_t *, struct ifreq *);
490 void	vxge_promisc_set(vxge_dev_t *);
491 
492 void	vxge_vpath_config(vxge_dev_t *);
493 int	vxge_vpath_open(vxge_dev_t *);
494 void	vxge_vpath_close(vxge_dev_t *);
495 void	vxge_vpath_reset(vxge_dev_t *);
496 
497 int	vxge_change_mtu(vxge_dev_t *, unsigned long);
498 
499 u32	vxge_ring_length_get(u32);
500 
501 void	vxge_isr_line(void *);
502 int	vxge_isr_filter(void *);
503 void	vxge_isr_msix(void *);
504 void	vxge_isr_msix_alarm(void *);
505 
506 void
507 vxge_intr_coalesce_tx(vxge_vpath_t *);
508 
509 void
510 vxge_intr_coalesce_rx(vxge_vpath_t *);
511 
512 vxge_hal_status_e
513 vxge_msix_enable(vxge_dev_t *);
514 
515 vxge_hal_status_e
516 vxge_rth_config(vxge_dev_t *);
517 
518 int	vxge_dma_tags_create(vxge_vpath_t *);
519 void	vxge_device_hw_info_print(vxge_dev_t *);
520 int	vxge_driver_config(vxge_dev_t *);
521 
522 #if __FreeBSD_version >= 800000
523 
524 int
525 vxge_mq_send(ifnet_t, mbuf_t);
526 
527 static inline int
528 vxge_mq_send_locked(ifnet_t, vxge_vpath_t *, mbuf_t);
529 
530 void
531 vxge_mq_qflush(ifnet_t);
532 
533 #endif
534 
535 void
536 vxge_send(ifnet_t);
537 
538 static inline void
539 vxge_send_locked(ifnet_t, vxge_vpath_t *);
540 
541 static inline int
542 vxge_xmit(ifnet_t, vxge_vpath_t *, mbuf_t *);
543 
544 static inline int
545 vxge_dma_mbuf_coalesce(bus_dma_tag_t, bus_dmamap_t,
546     mbuf_t *, bus_dma_segment_t *, int *);
547 
548 static inline void
549 vxge_rx_checksum(vxge_hal_ring_rxd_info_t, mbuf_t);
550 
551 static inline void
552 vxge_rx_input(ifnet_t, mbuf_t, vxge_vpath_t *);
553 
554 static inline vxge_hal_vpath_h
555 vxge_vpath_handle_get(vxge_dev_t *, int);
556 
557 static inline int
558 vxge_vpath_get(vxge_dev_t *, mbuf_t);
559 
560 void
561 vxge_tso_config(vxge_dev_t *);
562 
563 vxge_hal_status_e
564 vxge_tx_replenish(vxge_hal_vpath_h, vxge_hal_txdl_h, void *,
565     u32, void *, vxge_hal_reopen_e);
566 
567 vxge_hal_status_e
568 vxge_tx_compl(vxge_hal_vpath_h, vxge_hal_txdl_h, void *,
569     vxge_hal_fifo_tcode_e, void *);
570 
571 void
572 vxge_tx_term(vxge_hal_vpath_h, vxge_hal_txdl_h, void *,
573     vxge_hal_txdl_state_e, void *, vxge_hal_reopen_e);
574 
575 vxge_hal_status_e
576 vxge_rx_replenish(vxge_hal_vpath_h, vxge_hal_rxd_h, void *,
577     u32, void *, vxge_hal_reopen_e);
578 
579 vxge_hal_status_e
580 vxge_rx_compl(vxge_hal_vpath_h, vxge_hal_rxd_h, void *, u8, void *);
581 
582 void
583 vxge_rx_term(vxge_hal_vpath_h, vxge_hal_rxd_h, void *,
584     vxge_hal_rxd_state_e, void *, vxge_hal_reopen_e);
585 
586 void
587 vxge_rx_rxd_1b_get(vxge_vpath_t *, vxge_hal_rxd_h, void *);
588 
589 int
590 vxge_rx_rxd_1b_set(vxge_vpath_t *, vxge_hal_rxd_h, void *);
591 
592 int
593 vxge_bw_priority_config(vxge_dev_t *);
594 
595 vxge_hal_status_e
596 vxge_bw_priority_get(vxge_dev_t *, vxge_bw_info_t *);
597 
598 int
599 vxge_bw_priority_set(vxge_dev_t *, struct ifreq *);
600 
601 int
602 vxge_bw_priority_update(vxge_dev_t *, u32, bool);
603 
604 int
605 vxge_port_mode_update(vxge_dev_t *);
606 
607 vxge_hal_status_e
608 vxge_port_mode_get(vxge_dev_t *, vxge_port_info_t *);
609 
610 void
611 vxge_pmd_port_type_get(vxge_dev_t *, u32, char *, u8);
612 
613 void
614 vxge_active_port_update(vxge_dev_t *);
615 
616 static inline void
617 vxge_null_terminate(char *, size_t);
618 
619 #endif	/* _VXGE_H_ */
620