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