1 /*$NetBSD: ixgbe_netbsd.h,v 1.3 2015/04/24 07:00:51 msaitoh Exp $*/ 2 /* 3 * Copyright (c) 2011 The NetBSD Foundation, Inc. 4 * All rights reserved. 5 * 6 * This code is derived from software contributed to The NetBSD Foundation 7 * by Coyote Point Systems, Inc. 8 * 9 * Redistribution and use in source and binary forms, with or without 10 * modification, are permitted provided that the following conditions 11 * are met: 12 * 1. Redistributions of source code must retain the above copyright 13 * notice, this list of conditions and the following disclaimer. 14 * 2. Redistributions in binary form must reproduce the above copyright 15 * notice, this list of conditions and the following disclaimer in the 16 * documentation and/or other materials provided with the distribution. 17 * 18 * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 19 * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 20 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 21 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 22 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 23 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 24 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 25 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 26 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 27 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 28 * POSSIBILITY OF SUCH DAMAGE. 29 */ 30 31 #ifndef _IXGBE_NETBSD_H 32 #define _IXGBE_NETBSD_H 33 34 #define IXGBE_LEGACY_TX 1 35 36 #define ETHERCAP_VLAN_HWFILTER 0 37 #define ETHERCAP_VLAN_HWCSUM 0 38 #define MJUM9BYTES (9 * 1024) 39 #define MJUM16BYTES (16 * 1024) 40 #define MJUMPAGESIZE PAGE_SIZE 41 42 #define IFCAP_RXCSUM \ 43 (IFCAP_CSUM_IPv4_Rx|IFCAP_CSUM_TCPv4_Rx|IFCAP_CSUM_UDPv4_Rx|\ 44 IFCAP_CSUM_TCPv6_Rx|IFCAP_CSUM_UDPv6_Rx) 45 46 #define IFCAP_TXCSUM \ 47 (IFCAP_CSUM_IPv4_Tx|IFCAP_CSUM_TCPv4_Tx|IFCAP_CSUM_UDPv4_Tx|\ 48 IFCAP_CSUM_TCPv6_Tx|IFCAP_CSUM_UDPv6_Tx) 49 50 #define IFCAP_HWCSUM (IFCAP_RXCSUM|IFCAP_TXCSUM) 51 52 #define ETHER_ALIGN 2 53 54 struct ixgbe_dma_tag { 55 bus_dma_tag_t dt_dmat; 56 bus_size_t dt_alignment; 57 bus_size_t dt_boundary; 58 bus_size_t dt_maxsize; 59 int dt_nsegments; 60 bus_size_t dt_maxsegsize; 61 int dt_flags; 62 }; 63 64 typedef struct ixgbe_dma_tag ixgbe_dma_tag_t; 65 66 struct ixgbe_extmem_head; 67 typedef struct ixgbe_extmem_head ixgbe_extmem_head_t; 68 69 struct ixgbe_extmem { 70 ixgbe_extmem_head_t *em_head; 71 bus_dma_tag_t em_dmat; 72 bus_size_t em_size; 73 bus_dma_segment_t em_seg; 74 void *em_vaddr; 75 TAILQ_ENTRY(ixgbe_extmem) em_link; 76 }; 77 78 typedef struct ixgbe_extmem ixgbe_extmem_t; 79 80 struct ixgbe_extmem_head { 81 TAILQ_HEAD(, ixgbe_extmem) eh_freelist; 82 kmutex_t eh_mtx; 83 bool eh_initialized; 84 }; 85 86 int ixgbe_dma_tag_create(bus_dma_tag_t, bus_size_t, bus_size_t, bus_size_t, int, 87 bus_size_t, int, ixgbe_dma_tag_t **); 88 void ixgbe_dma_tag_destroy(ixgbe_dma_tag_t *); 89 int ixgbe_dmamap_create(ixgbe_dma_tag_t *, int, bus_dmamap_t *); 90 void ixgbe_dmamap_destroy(ixgbe_dma_tag_t *, bus_dmamap_t); 91 void ixgbe_dmamap_sync(ixgbe_dma_tag_t *, bus_dmamap_t, int); 92 void ixgbe_dmamap_unload(ixgbe_dma_tag_t *, bus_dmamap_t); 93 94 void ixgbe_jcl_reinit(ixgbe_extmem_head_t *, bus_dma_tag_t, int, size_t); 95 struct mbuf *ixgbe_getjcl(ixgbe_extmem_head_t *, int, int, int, size_t); 96 97 #endif /* _IXGBE_NETBSD_H */ 98