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
157const char *
158vxge_port_mode[6] =
159{
160	"Default",
161	"Reserved",
162	"Active/Passive",
163	"Single Port",
164	"Dual Port",
165	"Disabled"
166};
167
168const char *
169vxge_port_failure[3] =
170{
171	"No Failover",
172	"Failover only",
173	"Failover & Failback"
174};
175
176/* IOCTLs to identify vxge-manage requests */
177typedef 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
195typedef 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
203typedef 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
223typedef 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
248typedef 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
256typedef 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
280typedef struct vxge_dev_t vxge_dev_t;
281
282/* Rx descriptor private structure */
283typedef 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 */
293typedef 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
301typedef 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
345typedef 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
354typedef struct _vxge_port_info_t {
355
356	char	query;
357	int	port_mode;
358	int	port_failure;
359
360} vxge_port_info_t;
361
362typedef 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
370typedef 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
397struct 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
434int	vxge_probe(device_t);
435int	vxge_attach(device_t);
436int	vxge_detach(device_t);
437int	vxge_shutdown(device_t);
438
439int	vxge_alloc_resources(vxge_dev_t *);
440int	vxge_alloc_isr_resources(vxge_dev_t *);
441int	vxge_alloc_bar_resources(vxge_dev_t *, int);
442void	vxge_free_resources(device_t, vxge_free_resources_e);
443void	vxge_free_isr_resources(vxge_dev_t *);
444void	vxge_free_bar_resources(vxge_dev_t *, int);
445
446int	vxge_device_hw_info_get(vxge_dev_t *);
447int	vxge_firmware_verify(vxge_dev_t *);
448
449vxge_hal_status_e
450vxge_driver_init(vxge_dev_t *);
451
452vxge_hal_status_e
453vxge_firmware_upgrade(vxge_dev_t *);
454
455vxge_hal_status_e
456vxge_func_mode_set(vxge_dev_t *);
457
458vxge_hal_status_e
459vxge_port_mode_set(vxge_dev_t *);
460
461vxge_hal_status_e
462vxge_port_behavior_on_failure_set(vxge_dev_t *);
463
464vxge_hal_status_e
465vxge_l2switch_mode_set(vxge_dev_t *);
466
467void	vxge_init(void *);
468void	vxge_init_locked(vxge_dev_t *);
469
470void	vxge_stop(vxge_dev_t *);
471void	vxge_stop_locked(vxge_dev_t *);
472
473void	vxge_reset(vxge_dev_t *);
474int	vxge_ifp_setup(device_t);
475int	vxge_isr_setup(vxge_dev_t *);
476
477void	vxge_media_init(vxge_dev_t *);
478int	vxge_media_change(ifnet_t);
479void	vxge_media_status(ifnet_t, struct ifmediareq *);
480
481void	vxge_mutex_init(vxge_dev_t *);
482void	vxge_mutex_destroy(vxge_dev_t *);
483void	vxge_link_up(vxge_hal_device_h, void *);
484void	vxge_link_down(vxge_hal_device_h, void *);
485void	vxge_crit_error(vxge_hal_device_h, void *, vxge_hal_event_e, u64);
486
487int	vxge_ioctl(ifnet_t, u_long, caddr_t);
488int	vxge_ioctl_regs(vxge_dev_t *, struct ifreq *);
489int	vxge_ioctl_stats(vxge_dev_t *, struct ifreq *);
490void	vxge_promisc_set(vxge_dev_t *);
491
492void	vxge_vpath_config(vxge_dev_t *);
493int	vxge_vpath_open(vxge_dev_t *);
494void	vxge_vpath_close(vxge_dev_t *);
495void	vxge_vpath_reset(vxge_dev_t *);
496
497int	vxge_change_mtu(vxge_dev_t *, unsigned long);
498
499u32	vxge_ring_length_get(u32);
500
501void	vxge_isr_line(void *);
502int	vxge_isr_filter(void *);
503void	vxge_isr_msix(void *);
504void	vxge_isr_msix_alarm(void *);
505
506void
507vxge_intr_coalesce_tx(vxge_vpath_t *);
508
509void
510vxge_intr_coalesce_rx(vxge_vpath_t *);
511
512vxge_hal_status_e
513vxge_msix_enable(vxge_dev_t *);
514
515vxge_hal_status_e
516vxge_rth_config(vxge_dev_t *);
517
518int	vxge_dma_tags_create(vxge_vpath_t *);
519void	vxge_device_hw_info_print(vxge_dev_t *);
520int	vxge_driver_config(vxge_dev_t *);
521
522#if __FreeBSD_version >= 800000
523
524int
525vxge_mq_send(ifnet_t, mbuf_t);
526
527static inline int
528vxge_mq_send_locked(ifnet_t, vxge_vpath_t *, mbuf_t);
529
530void
531vxge_mq_qflush(ifnet_t);
532
533#endif
534
535void
536vxge_send(ifnet_t);
537
538static inline void
539vxge_send_locked(ifnet_t, vxge_vpath_t *);
540
541static inline int
542vxge_xmit(ifnet_t, vxge_vpath_t *, mbuf_t *);
543
544static inline int
545vxge_dma_mbuf_coalesce(bus_dma_tag_t, bus_dmamap_t,
546    mbuf_t *, bus_dma_segment_t *, int *);
547
548static inline void
549vxge_rx_checksum(vxge_hal_ring_rxd_info_t, mbuf_t);
550
551static inline void
552vxge_rx_input(ifnet_t, mbuf_t, vxge_vpath_t *);
553
554static inline vxge_hal_vpath_h
555vxge_vpath_handle_get(vxge_dev_t *, int);
556
557static inline int
558vxge_vpath_get(vxge_dev_t *, mbuf_t);
559
560void
561vxge_tso_config(vxge_dev_t *);
562
563vxge_hal_status_e
564vxge_tx_replenish(vxge_hal_vpath_h, vxge_hal_txdl_h, void *,
565    u32, void *, vxge_hal_reopen_e);
566
567vxge_hal_status_e
568vxge_tx_compl(vxge_hal_vpath_h, vxge_hal_txdl_h, void *,
569    vxge_hal_fifo_tcode_e, void *);
570
571void
572vxge_tx_term(vxge_hal_vpath_h, vxge_hal_txdl_h, void *,
573    vxge_hal_txdl_state_e, void *, vxge_hal_reopen_e);
574
575vxge_hal_status_e
576vxge_rx_replenish(vxge_hal_vpath_h, vxge_hal_rxd_h, void *,
577    u32, void *, vxge_hal_reopen_e);
578
579vxge_hal_status_e
580vxge_rx_compl(vxge_hal_vpath_h, vxge_hal_rxd_h, void *, u8, void *);
581
582void
583vxge_rx_term(vxge_hal_vpath_h, vxge_hal_rxd_h, void *,
584    vxge_hal_rxd_state_e, void *, vxge_hal_reopen_e);
585
586void
587vxge_rx_rxd_1b_get(vxge_vpath_t *, vxge_hal_rxd_h, void *);
588
589int
590vxge_rx_rxd_1b_set(vxge_vpath_t *, vxge_hal_rxd_h, void *);
591
592int
593vxge_bw_priority_config(vxge_dev_t *);
594
595vxge_hal_status_e
596vxge_bw_priority_get(vxge_dev_t *, vxge_bw_info_t *);
597
598int
599vxge_bw_priority_set(vxge_dev_t *, struct ifreq *);
600
601int
602vxge_bw_priority_update(vxge_dev_t *, u32, bool);
603
604int
605vxge_port_mode_update(vxge_dev_t *);
606
607vxge_hal_status_e
608vxge_port_mode_get(vxge_dev_t *, vxge_port_info_t *);
609
610void
611vxge_pmd_port_type_get(vxge_dev_t *, u32, char *, u8);
612
613void
614vxge_active_port_update(vxge_dev_t *);
615
616static inline void
617vxge_null_terminate(char *, size_t);
618
619#endif	/* _VXGE_H_ */
620