1 /* $NetBSD: ixgbe_netbsd.h,v 1.13 2021/05/19 08:19:20 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 #if 0 /* Enable this if you don't want to use TX multiqueue function */ 35 #define IXGBE_LEGACY_TX 1 36 #endif 37 38 #define ETHERCAP_VLAN_HWCSUM 0 39 #define MJUM9BYTES (9 * 1024) 40 #define MJUM16BYTES (16 * 1024) 41 #define MJUMPAGESIZE PAGE_SIZE 42 43 /* 44 * Number of jcl per queue is calculated by 45 * adapter->num_rx_desc * IXGBE_JCLNUM_MULTI. The lower limit is 2. 46 */ 47 #define IXGBE_JCLNUM_MULTI_LOWLIM 2 48 #define IXGBE_JCLNUM_MULTI_DEFAULT 3 49 #if !defined(IXGBE_JCLNUM_MULTI) 50 # define IXGBE_JCLNUM_MULTI IXGBE_JCLNUM_MULTI_DEFAULT 51 #else 52 # if (IXGBE_JCLNUM_MULTI < IXGBE_JCLNUM_MULTI_LOWLIM) 53 # error IXGBE_JCLNUM_MULTI is too low. 54 # endif 55 #endif 56 57 #define IFCAP_RXCSUM \ 58 (IFCAP_CSUM_IPv4_Rx|IFCAP_CSUM_TCPv4_Rx|IFCAP_CSUM_UDPv4_Rx|\ 59 IFCAP_CSUM_TCPv6_Rx|IFCAP_CSUM_UDPv6_Rx) 60 61 #define IFCAP_TXCSUM \ 62 (IFCAP_CSUM_IPv4_Tx|IFCAP_CSUM_TCPv4_Tx|IFCAP_CSUM_UDPv4_Tx|\ 63 IFCAP_CSUM_TCPv6_Tx|IFCAP_CSUM_UDPv6_Tx) 64 65 #define IFCAP_HWCSUM (IFCAP_RXCSUM|IFCAP_TXCSUM) 66 67 struct ixgbe_dma_tag { 68 bus_dma_tag_t dt_dmat; 69 bus_size_t dt_alignment; 70 bus_size_t dt_boundary; 71 bus_size_t dt_maxsize; 72 int dt_nsegments; 73 bus_size_t dt_maxsegsize; 74 int dt_flags; 75 }; 76 77 typedef struct ixgbe_dma_tag ixgbe_dma_tag_t; 78 79 struct ixgbe_extmem_head; 80 typedef struct ixgbe_extmem_head ixgbe_extmem_head_t; 81 82 struct ixgbe_extmem { 83 ixgbe_extmem_head_t *em_head; 84 bus_dma_tag_t em_dmat; 85 bus_size_t em_size; 86 bus_dma_segment_t em_seg; 87 void *em_vaddr; 88 TAILQ_ENTRY(ixgbe_extmem) em_link; 89 }; 90 91 typedef struct ixgbe_extmem ixgbe_extmem_t; 92 93 struct ixgbe_extmem_head { 94 TAILQ_HEAD(, ixgbe_extmem) eh_freelist; 95 kmutex_t eh_mtx; 96 bool eh_initialized; 97 }; 98 99 int ixgbe_dma_tag_create(bus_dma_tag_t, bus_size_t, bus_size_t, bus_size_t, 100 int, bus_size_t, int, ixgbe_dma_tag_t **); 101 void ixgbe_dma_tag_destroy(ixgbe_dma_tag_t *); 102 int ixgbe_dmamap_create(ixgbe_dma_tag_t *, int, bus_dmamap_t *); 103 void ixgbe_dmamap_destroy(ixgbe_dma_tag_t *, bus_dmamap_t); 104 void ixgbe_dmamap_sync(ixgbe_dma_tag_t *, bus_dmamap_t, int); 105 void ixgbe_dmamap_unload(ixgbe_dma_tag_t *, bus_dmamap_t); 106 107 struct mbuf *ixgbe_getjcl(ixgbe_extmem_head_t *, int, int, int, size_t); 108 void ixgbe_pci_enable_busmaster(pci_chipset_tag_t, pcitag_t); 109 110 u_int atomic_load_acq_uint(volatile u_int *); 111 112 #endif /* _IXGBE_NETBSD_H */ 113