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