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