xref: /titanic_50/usr/src/uts/common/io/cxgbe/shared/shared.h (revision 56b2bdd1f04d465cfe4a95b88ae5cba5884154e4)
1*56b2bdd1SGireesh Nagabhushana /*
2*56b2bdd1SGireesh Nagabhushana  * This file and its contents are supplied under the terms of the
3*56b2bdd1SGireesh Nagabhushana  * Common Development and Distribution License ("CDDL"), version 1.0.
4*56b2bdd1SGireesh Nagabhushana  * You may only use this file in accordance with the terms of version
5*56b2bdd1SGireesh Nagabhushana  * 1.0 of the CDDL.
6*56b2bdd1SGireesh Nagabhushana  *
7*56b2bdd1SGireesh Nagabhushana  * A full copy of the text of the CDDL should have accompanied this
8*56b2bdd1SGireesh Nagabhushana  * source. A copy of the CDDL is also available via the Internet at
9*56b2bdd1SGireesh Nagabhushana  * http://www.illumos.org/license/CDDL.
10*56b2bdd1SGireesh Nagabhushana  */
11*56b2bdd1SGireesh Nagabhushana 
12*56b2bdd1SGireesh Nagabhushana /*
13*56b2bdd1SGireesh Nagabhushana  * This file is part of the Chelsio T4 support code.
14*56b2bdd1SGireesh Nagabhushana  *
15*56b2bdd1SGireesh Nagabhushana  * Copyright (C) 2011-2013 Chelsio Communications.  All rights reserved.
16*56b2bdd1SGireesh Nagabhushana  *
17*56b2bdd1SGireesh Nagabhushana  * This program is distributed in the hope that it will be useful, but WITHOUT
18*56b2bdd1SGireesh Nagabhushana  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
19*56b2bdd1SGireesh Nagabhushana  * FITNESS FOR A PARTICULAR PURPOSE.  See the LICENSE file included in this
20*56b2bdd1SGireesh Nagabhushana  * release for licensing terms and conditions.
21*56b2bdd1SGireesh Nagabhushana  */
22*56b2bdd1SGireesh Nagabhushana 
23*56b2bdd1SGireesh Nagabhushana #ifndef __CXGBE_SHARED_H
24*56b2bdd1SGireesh Nagabhushana #define	__CXGBE_SHARED_H
25*56b2bdd1SGireesh Nagabhushana 
26*56b2bdd1SGireesh Nagabhushana #include <sys/ddi.h>
27*56b2bdd1SGireesh Nagabhushana #include <sys/sunddi.h>
28*56b2bdd1SGireesh Nagabhushana 
29*56b2bdd1SGireesh Nagabhushana #define	UNIMPLEMENTED() cmn_err(CE_WARN, "%s (%s:%d) unimplemented.", \
30*56b2bdd1SGireesh Nagabhushana     __func__, __FILE__, __LINE__)
31*56b2bdd1SGireesh Nagabhushana 
32*56b2bdd1SGireesh Nagabhushana #define	bitloc(a, i)	((a)[(i)/NBBY])
33*56b2bdd1SGireesh Nagabhushana #define	setbit(a, i)	((a)[(i)/NBBY] |= 1<<((i)%NBBY))
34*56b2bdd1SGireesh Nagabhushana #define	clrbit(a, i)	((a)[(i)/NBBY] &= ~(1<<((i)%NBBY)))
35*56b2bdd1SGireesh Nagabhushana #define	isset(a, i)	((a)[(i)/NBBY] & (1<<((i)%NBBY)))
36*56b2bdd1SGireesh Nagabhushana #define	isclr(a, i)	(((a)[(i)/NBBY] & (1<<((i)%NBBY))) == 0)
37*56b2bdd1SGireesh Nagabhushana 
38*56b2bdd1SGireesh Nagabhushana /* TODO: really icky, but we don't want to include adapter.h in cxgb/cxgbe */
39*56b2bdd1SGireesh Nagabhushana #define	PORT_INFO_HDR \
40*56b2bdd1SGireesh Nagabhushana 	dev_info_t *dip; \
41*56b2bdd1SGireesh Nagabhushana 	void *mh; \
42*56b2bdd1SGireesh Nagabhushana 	void *mc; \
43*56b2bdd1SGireesh Nagabhushana 	void *props; \
44*56b2bdd1SGireesh Nagabhushana 	int mtu; \
45*56b2bdd1SGireesh Nagabhushana 	uint8_t hw_addr[ETHERADDRL]
46*56b2bdd1SGireesh Nagabhushana 
47*56b2bdd1SGireesh Nagabhushana struct mblk_pair {
48*56b2bdd1SGireesh Nagabhushana 	mblk_t *head, *tail;
49*56b2bdd1SGireesh Nagabhushana };
50*56b2bdd1SGireesh Nagabhushana 
51*56b2bdd1SGireesh Nagabhushana struct rxbuf {
52*56b2bdd1SGireesh Nagabhushana 	kmem_cache_t *cache;		/* the kmem_cache this rxb came from */
53*56b2bdd1SGireesh Nagabhushana 	ddi_dma_handle_t dhdl;
54*56b2bdd1SGireesh Nagabhushana 	ddi_acc_handle_t ahdl;
55*56b2bdd1SGireesh Nagabhushana 	caddr_t va;			/* KVA of buffer */
56*56b2bdd1SGireesh Nagabhushana 	uint64_t ba;			/* bus address of buffer */
57*56b2bdd1SGireesh Nagabhushana 	frtn_t freefunc;
58*56b2bdd1SGireesh Nagabhushana 	uint_t buf_size;
59*56b2bdd1SGireesh Nagabhushana 	volatile uint_t ref_cnt;
60*56b2bdd1SGireesh Nagabhushana };
61*56b2bdd1SGireesh Nagabhushana 
62*56b2bdd1SGireesh Nagabhushana struct rxbuf_cache_params {
63*56b2bdd1SGireesh Nagabhushana 	dev_info_t		*dip;
64*56b2bdd1SGireesh Nagabhushana 	ddi_dma_attr_t		dma_attr_rx;
65*56b2bdd1SGireesh Nagabhushana 	ddi_device_acc_attr_t	acc_attr_rx;
66*56b2bdd1SGireesh Nagabhushana 	size_t			buf_size;
67*56b2bdd1SGireesh Nagabhushana };
68*56b2bdd1SGireesh Nagabhushana 
69*56b2bdd1SGireesh Nagabhushana void cxgb_printf(dev_info_t *dip, int level, char *f, ...);
70*56b2bdd1SGireesh Nagabhushana kmem_cache_t *rxbuf_cache_create(struct rxbuf_cache_params *p);
71*56b2bdd1SGireesh Nagabhushana void rxbuf_cache_destroy(kmem_cache_t *cache);
72*56b2bdd1SGireesh Nagabhushana struct rxbuf *rxbuf_alloc(kmem_cache_t *cache, int kmflags, uint_t ref_cnt);
73*56b2bdd1SGireesh Nagabhushana void rxbuf_free(struct rxbuf *rxb);
74*56b2bdd1SGireesh Nagabhushana 
75*56b2bdd1SGireesh Nagabhushana #endif /* __CXGBE_SHARED_H */
76