X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fnet%2Fsfc%2Fefsys.h;h=0b4795da198cf81aaf88b47f291c46abbdd45197;hb=a77a72cdd7c2856290d5d3b50b38486a1b89ee96;hp=d48eb4c5e76ff188c86c76e1e30894aff7437eea;hpb=3e3b2e4ceaed54071a0113812a54e28ca0634ee3;p=dpdk.git diff --git a/drivers/net/sfc/efsys.h b/drivers/net/sfc/efsys.h index d48eb4c5e7..0b4795da19 100644 --- a/drivers/net/sfc/efsys.h +++ b/drivers/net/sfc/efsys.h @@ -1,30 +1,10 @@ -/*- - * Copyright (c) 2016 Solarflare Communications Inc. +/* SPDX-License-Identifier: BSD-3-Clause + * + * Copyright (c) 2016-2018 Solarflare Communications Inc. * All rights reserved. * * This software was jointly developed between OKTET Labs (under contract * for Solarflare) and Solarflare Communications, Inc. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, - * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; - * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, - * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef _SFC_COMMON_EFSYS_H @@ -43,8 +23,10 @@ #include #include #include +#include #include "sfc_debug.h" +#include "sfc_log.h" #ifdef __cplusplus extern "C" { @@ -66,10 +48,6 @@ extern "C" { #include "efx_types.h" -#ifndef _NOTE -#define _NOTE(s) -#endif - typedef bool boolean_t; #ifndef B_FALSE @@ -124,42 +102,10 @@ prefetch_read_once(const volatile void *addr) rte_prefetch_non_temporal(addr); } -/* Modifiers used for Windows builds */ -#define __in -#define __in_opt -#define __in_ecount(_n) -#define __in_ecount_opt(_n) -#define __in_bcount(_n) -#define __in_bcount_opt(_n) - -#define __out -#define __out_opt -#define __out_ecount(_n) -#define __out_ecount_opt(_n) -#define __out_bcount(_n) -#define __out_bcount_opt(_n) - -#define __deref_out - -#define __inout -#define __inout_opt -#define __inout_ecount(_n) -#define __inout_ecount_opt(_n) -#define __inout_bcount(_n) -#define __inout_bcount_opt(_n) -#define __inout_bcount_full_opt(_n) - -#define __deref_out_bcount_opt(n) - -#define __checkReturn -#define __success(_x) - -#define __drv_when(_p, _c) - /* Code inclusion options */ -#define EFSYS_OPT_NAMES 0 +#define EFSYS_OPT_NAMES 1 /* Disable SFN5xxx/SFN6xxx since it requires specific support in the PMD */ #define EFSYS_OPT_SIENA 0 @@ -167,6 +113,8 @@ prefetch_read_once(const volatile void *addr) #define EFSYS_OPT_HUNTINGTON 1 /* Enable SFN8xxx support */ #define EFSYS_OPT_MEDFORD 1 +/* Enable SFN2xxx support */ +#define EFSYS_OPT_MEDFORD2 1 #ifdef RTE_LIBRTE_SFC_EFX_DEBUG #define EFSYS_OPT_CHECK_REG 1 #else @@ -176,11 +124,11 @@ prefetch_read_once(const volatile void *addr) /* MCDI is required for SFN7xxx and SFN8xx */ #define EFSYS_OPT_MCDI 1 #define EFSYS_OPT_MCDI_LOGGING 1 -#define EFSYS_OPT_MCDI_PROXY_AUTH 0 +#define EFSYS_OPT_MCDI_PROXY_AUTH 1 -#define EFSYS_OPT_MAC_STATS 0 +#define EFSYS_OPT_MAC_STATS 1 -#define EFSYS_OPT_LOOPBACK 0 +#define EFSYS_OPT_LOOPBACK 1 #define EFSYS_OPT_MON_MCDI 0 #define EFSYS_OPT_MON_STATS 0 @@ -193,9 +141,10 @@ prefetch_read_once(const volatile void *addr) #define EFSYS_OPT_VPD 0 #define EFSYS_OPT_NVRAM 0 #define EFSYS_OPT_BOOTCFG 0 +#define EFSYS_OPT_IMAGE_LAYOUT 0 #define EFSYS_OPT_DIAG 0 -#define EFSYS_OPT_RX_SCALE 0 +#define EFSYS_OPT_RX_SCALE 1 #define EFSYS_OPT_QSTATS 0 /* Filters support is required for SFN7xxx and SFN8xx */ #define EFSYS_OPT_FILTER 1 @@ -211,6 +160,12 @@ prefetch_read_once(const volatile void *addr) #define EFSYS_OPT_RX_PACKED_STREAM 0 +#define EFSYS_OPT_RX_ES_SUPER_BUFFER 1 + +#define EFSYS_OPT_TUNNEL 1 + +#define EFSYS_OPT_FW_SUBVARIANT_AWARE 1 + /* ID */ typedef struct __efsys_identifier_s efsys_identifier_t; @@ -250,7 +205,7 @@ typedef struct __efsys_identifier_s efsys_identifier_t; /* DMA */ -typedef phys_addr_t efsys_dma_addr_t; +typedef rte_iova_t efsys_dma_addr_t; typedef struct efsys_mem_s { const struct rte_memzone *esm_mz; @@ -387,6 +342,9 @@ typedef struct efsys_mem_s { } while (B_FALSE) +#define EFSYS_MEM_SIZE(_esmp) \ + ((_esmp)->esm_mz->len) + #define EFSYS_MEM_ADDR(_esmp) \ ((_esmp)->esm_addr) @@ -440,7 +398,7 @@ typedef struct efsys_bar_s { \ _addr = (volatile uint32_t *)(_base + (_offset)); \ rte_rmb(); \ - (_edp)->ed_u32[0] = _addr[0]; \ + (_edp)->ed_u32[0] = rte_read32_relaxed(_addr); \ \ EFSYS_PROBE2(bar_readd, unsigned int, (_offset), \ uint32_t, (_edp)->ed_u32[0]); \ @@ -463,7 +421,7 @@ typedef struct efsys_bar_s { \ _addr = (volatile uint64_t *)(_base + (_offset)); \ rte_rmb(); \ - (_eqp)->eq_u64[0] = _addr[0]; \ + (_eqp)->eq_u64[0] = rte_read64_relaxed(_addr); \ \ EFSYS_PROBE3(bar_readq, unsigned int, (_offset), \ uint32_t, (_eqp)->eq_u32[1], \ @@ -487,6 +445,7 @@ typedef struct efsys_bar_s { \ _addr = (volatile __m128i *)(_base + (_offset)); \ rte_rmb(); \ + /* There is no rte_read128_relaxed() yet */ \ (_eop)->eo_u128[0] = _addr[0]; \ \ EFSYS_PROBE5(bar_reado, unsigned int, (_offset), \ @@ -518,7 +477,7 @@ typedef struct efsys_bar_s { uint32_t, (_edp)->ed_u32[0]); \ \ _addr = (volatile uint32_t *)(_base + (_offset)); \ - _addr[0] = (_edp)->ed_u32[0]; \ + rte_write32_relaxed((_edp)->ed_u32[0], _addr); \ rte_wmb(); \ \ _NOTE(CONSTANTCONDITION); \ @@ -542,7 +501,7 @@ typedef struct efsys_bar_s { uint32_t, (_eqp)->eq_u32[0]); \ \ _addr = (volatile uint64_t *)(_base + (_offset)); \ - _addr[0] = (_eqp)->eq_u64[0]; \ + rte_write64_relaxed((_eqp)->eq_u64[0], _addr); \ rte_wmb(); \ \ SFC_BAR_UNLOCK(_esbp); \ @@ -580,6 +539,7 @@ typedef struct efsys_bar_s { uint32_t, (_eop)->eo_u32[0]); \ \ _addr = (volatile __m128i *)(_base + (_offset)); \ + /* There is no rte_write128_relaxed() yet */ \ _addr[0] = (_eop)->eo_u128[0]; \ rte_wmb(); \ \ @@ -609,7 +569,7 @@ typedef struct efsys_bar_s { /* BARRIERS */ #define EFSYS_MEM_READ_BARRIER() rte_rmb() -#define EFSYS_PIO_WRITE_BARRIER() rte_wmb() +#define EFSYS_PIO_WRITE_BARRIER() rte_io_wmb() /* DMA SYNC */ @@ -620,7 +580,9 @@ typedef struct efsys_bar_s { */ #define EFSYS_DMA_SYNC_FOR_KERNEL(_esmp, _offset, _size) ((void)0) -#define EFSYS_DMA_SYNC_FOR_DEVICE(_esmp, _offset, _size) ((void)0) + +/* Just avoid store and compiler (impliciltly) reordering */ +#define EFSYS_DMA_SYNC_FOR_DEVICE(_esmp, _offset, _size) rte_wmb() /* TIMESTAMP */ @@ -734,7 +696,7 @@ typedef uint64_t efsys_stat_t; #define EFSYS_ERR(_esip, _code, _dword0, _dword1) \ do { \ (void)(_esip); \ - RTE_LOG(ERR, PMD, "FATAL ERROR #%u (0x%08x%08x)\n", \ + SFC_GENERIC_LOG(ERR, "FATAL ERROR #%u (0x%08x%08x)", \ (_code), (_dword0), (_dword1)); \ _NOTE(CONSTANTCONDITION); \ } while (B_FALSE)