156b2bdd1SGireesh Nagabhushana /*
256b2bdd1SGireesh Nagabhushana  * This file and its contents are supplied under the terms of the
356b2bdd1SGireesh Nagabhushana  * Common Development and Distribution License ("CDDL"), version 1.0.
456b2bdd1SGireesh Nagabhushana  * You may only use this file in accordance with the terms of version
556b2bdd1SGireesh Nagabhushana  * 1.0 of the CDDL.
656b2bdd1SGireesh Nagabhushana  *
756b2bdd1SGireesh Nagabhushana  * A full copy of the text of the CDDL should have accompanied this
856b2bdd1SGireesh Nagabhushana  * source. A copy of the CDDL is also available via the Internet at
956b2bdd1SGireesh Nagabhushana  * http://www.illumos.org/license/CDDL.
1056b2bdd1SGireesh Nagabhushana  */
1156b2bdd1SGireesh Nagabhushana 
1256b2bdd1SGireesh Nagabhushana /*
1356b2bdd1SGireesh Nagabhushana  * This file is part of the Chelsio T4 support code.
1456b2bdd1SGireesh Nagabhushana  *
1556b2bdd1SGireesh Nagabhushana  * Copyright (C) 2011-2013 Chelsio Communications.  All rights reserved.
1656b2bdd1SGireesh Nagabhushana  *
1756b2bdd1SGireesh Nagabhushana  * This program is distributed in the hope that it will be useful, but WITHOUT
1856b2bdd1SGireesh Nagabhushana  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
1956b2bdd1SGireesh Nagabhushana  * FITNESS FOR A PARTICULAR PURPOSE.  See the LICENSE file included in this
2056b2bdd1SGireesh Nagabhushana  * release for licensing terms and conditions.
2156b2bdd1SGireesh Nagabhushana  */
2256b2bdd1SGireesh Nagabhushana 
2356b2bdd1SGireesh Nagabhushana #ifndef __CXGBE_SHARED_H
2456b2bdd1SGireesh Nagabhushana #define	__CXGBE_SHARED_H
2556b2bdd1SGireesh Nagabhushana 
2656b2bdd1SGireesh Nagabhushana #include <sys/ddi.h>
2756b2bdd1SGireesh Nagabhushana #include <sys/sunddi.h>
2856b2bdd1SGireesh Nagabhushana 
2956b2bdd1SGireesh Nagabhushana #define	UNIMPLEMENTED() cmn_err(CE_WARN, "%s (%s:%d) unimplemented.", \
3056b2bdd1SGireesh Nagabhushana     __func__, __FILE__, __LINE__)
3156b2bdd1SGireesh Nagabhushana 
3256b2bdd1SGireesh Nagabhushana #define	bitloc(a, i)	((a)[(i)/NBBY])
3356b2bdd1SGireesh Nagabhushana #define	setbit(a, i)	((a)[(i)/NBBY] |= 1<<((i)%NBBY))
3456b2bdd1SGireesh Nagabhushana #define	clrbit(a, i)	((a)[(i)/NBBY] &= ~(1<<((i)%NBBY)))
3556b2bdd1SGireesh Nagabhushana #define	isset(a, i)	((a)[(i)/NBBY] & (1<<((i)%NBBY)))
3656b2bdd1SGireesh Nagabhushana #define	isclr(a, i)	(((a)[(i)/NBBY] & (1<<((i)%NBBY))) == 0)
3756b2bdd1SGireesh Nagabhushana 
3856b2bdd1SGireesh Nagabhushana /* TODO: really icky, but we don't want to include adapter.h in cxgb/cxgbe */
3956b2bdd1SGireesh Nagabhushana #define	PORT_INFO_HDR \
4056b2bdd1SGireesh Nagabhushana 	dev_info_t *dip; \
4156b2bdd1SGireesh Nagabhushana 	void *mh; \
4256b2bdd1SGireesh Nagabhushana 	void *mc; \
4356b2bdd1SGireesh Nagabhushana 	void *props; \
4456b2bdd1SGireesh Nagabhushana 	int mtu; \
4556b2bdd1SGireesh Nagabhushana 	uint8_t hw_addr[ETHERADDRL]
4656b2bdd1SGireesh Nagabhushana 
4756b2bdd1SGireesh Nagabhushana struct mblk_pair {
4856b2bdd1SGireesh Nagabhushana 	mblk_t *head, *tail;
4956b2bdd1SGireesh Nagabhushana };
5056b2bdd1SGireesh Nagabhushana 
5156b2bdd1SGireesh Nagabhushana struct rxbuf {
5256b2bdd1SGireesh Nagabhushana 	kmem_cache_t *cache;		/* the kmem_cache this rxb came from */
5356b2bdd1SGireesh Nagabhushana 	ddi_dma_handle_t dhdl;
5456b2bdd1SGireesh Nagabhushana 	ddi_acc_handle_t ahdl;
5556b2bdd1SGireesh Nagabhushana 	caddr_t va;			/* KVA of buffer */
5656b2bdd1SGireesh Nagabhushana 	uint64_t ba;			/* bus address of buffer */
5756b2bdd1SGireesh Nagabhushana 	frtn_t freefunc;
5856b2bdd1SGireesh Nagabhushana 	uint_t buf_size;
5956b2bdd1SGireesh Nagabhushana 	volatile uint_t ref_cnt;
6056b2bdd1SGireesh Nagabhushana };
6156b2bdd1SGireesh Nagabhushana 
6256b2bdd1SGireesh Nagabhushana struct rxbuf_cache_params {
6356b2bdd1SGireesh Nagabhushana 	dev_info_t		*dip;
6456b2bdd1SGireesh Nagabhushana 	ddi_dma_attr_t		dma_attr_rx;
6556b2bdd1SGireesh Nagabhushana 	ddi_device_acc_attr_t	acc_attr_rx;
6656b2bdd1SGireesh Nagabhushana 	size_t			buf_size;
6756b2bdd1SGireesh Nagabhushana };
6856b2bdd1SGireesh Nagabhushana 
69*41378e79SToomas Soome int cxgb_printf(dev_info_t *dip, int level, char *f, ...);
7056b2bdd1SGireesh Nagabhushana kmem_cache_t *rxbuf_cache_create(struct rxbuf_cache_params *p);
7156b2bdd1SGireesh Nagabhushana void rxbuf_cache_destroy(kmem_cache_t *cache);
7256b2bdd1SGireesh Nagabhushana struct rxbuf *rxbuf_alloc(kmem_cache_t *cache, int kmflags, uint_t ref_cnt);
7356b2bdd1SGireesh Nagabhushana void rxbuf_free(struct rxbuf *rxb);
7456b2bdd1SGireesh Nagabhushana 
7556b2bdd1SGireesh Nagabhushana #endif /* __CXGBE_SHARED_H */
76