[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [linux-2.6.18-xen] Update Solarflare Communications resource driver to version 3.0.2.2074
# HG changeset patch # User Keir Fraser <keir.fraser@xxxxxxxxxx> # Date 1262955982 0 # Node ID b8c2a9aacba6d9c50847d419bc6cfedc8fc4c750 # Parent 0b5ca7cdbdfc8857229475519b23a78401829e91 Update Solarflare Communications resource driver to version 3.0.2.2074 to match net driver update. Add support for new SFC9000 series NICs Signed-off-by: Kieran Mansley <kmansley@xxxxxxxxxxxxxx> --- drivers/net/sfc/sfc_resource/ci/driver/efab/hardware/falcon/falcon_core.h | 1149 -- drivers/net/sfc/sfc_resource/ci/driver/efab/hardware/workarounds.h | 75 drivers/net/sfc/sfc_resource/falcon_mac.c | 171 drivers/net/sfc/sfc_resource/Makefile | 2 drivers/net/sfc/sfc_resource/assert_valid.c | 15 drivers/net/sfc/sfc_resource/buddy.c | 95 drivers/net/sfc/sfc_resource/buffer_table.c | 47 drivers/net/sfc/sfc_resource/ci/driver/efab/hardware.h | 110 drivers/net/sfc/sfc_resource/ci/driver/efab/hardware/common.h | 8 drivers/net/sfc/sfc_resource/ci/driver/efab/hardware/falcon.h | 119 drivers/net/sfc/sfc_resource/ci/driver/efab/hardware/falcon/falcon_desc.h | 2 drivers/net/sfc/sfc_resource/ci/driver/efab/hardware/falcon/falcon_event.h | 4 drivers/net/sfc/sfc_resource/ci/driver/efab/hardware/falcon/falcon_grmon.h | 2 drivers/net/sfc/sfc_resource/ci/driver/efab/hardware/falcon/falcon_intr_vec.h | 2 drivers/net/sfc/sfc_resource/ci/driver/efab/hardware/falcon/falcon_mac.h | 4 drivers/net/sfc/sfc_resource/ci/driver/efab/hardware/falcon/falcon_xgrmon.h | 2 drivers/net/sfc/sfc_resource/ci/driver/efab/hardware/host_common.h | 2850 +++++++ drivers/net/sfc/sfc_resource/ci/driver/efab/hardware/host_common_mac.h | 730 + drivers/net/sfc/sfc_resource/ci/driver/efab/hardware/host_common_pci_defs.h | 2057 +++++ drivers/net/sfc/sfc_resource/ci/driver/resource/efx_vi.h | 6 drivers/net/sfc/sfc_resource/ci/driver/resource/linux_efhw_nic.h | 16 drivers/net/sfc/sfc_resource/ci/efhw/checks.h | 97 drivers/net/sfc/sfc_resource/ci/efhw/common.h | 51 drivers/net/sfc/sfc_resource/ci/efhw/common_sysdep.h | 12 drivers/net/sfc/sfc_resource/ci/efhw/debug.h | 10 drivers/net/sfc/sfc_resource/ci/efhw/efhw_config.h | 2 drivers/net/sfc/sfc_resource/ci/efhw/efhw_types.h | 155 drivers/net/sfc/sfc_resource/ci/efhw/eventq.h | 4 drivers/net/sfc/sfc_resource/ci/efhw/eventq_macros.h | 12 drivers/net/sfc/sfc_resource/ci/efhw/falcon.h | 17 drivers/net/sfc/sfc_resource/ci/efhw/falcon_hash.h | 30 drivers/net/sfc/sfc_resource/ci/efhw/hardware_sysdep.h | 7 drivers/net/sfc/sfc_resource/ci/efhw/iopage.h | 2 drivers/net/sfc/sfc_resource/ci/efhw/iopage_types.h | 2 drivers/net/sfc/sfc_resource/ci/efhw/nic.h | 2 drivers/net/sfc/sfc_resource/ci/efhw/public.h | 41 drivers/net/sfc/sfc_resource/ci/efhw/sysdep.h | 17 drivers/net/sfc/sfc_resource/ci/efrm/buddy.h | 5 drivers/net/sfc/sfc_resource/ci/efrm/buffer_table.h | 17 drivers/net/sfc/sfc_resource/ci/efrm/debug.h | 4 drivers/net/sfc/sfc_resource/ci/efrm/driver_private.h | 13 drivers/net/sfc/sfc_resource/ci/efrm/efrm_client.h | 65 drivers/net/sfc/sfc_resource/ci/efrm/efrm_nic.h | 58 drivers/net/sfc/sfc_resource/ci/efrm/filter.h | 101 drivers/net/sfc/sfc_resource/ci/efrm/iobufset.h | 37 drivers/net/sfc/sfc_resource/ci/efrm/nic_set.h | 2 drivers/net/sfc/sfc_resource/ci/efrm/nic_table.h | 4 drivers/net/sfc/sfc_resource/ci/efrm/private.h | 35 drivers/net/sfc/sfc_resource/ci/efrm/resource.h | 23 drivers/net/sfc/sfc_resource/ci/efrm/resource_id.h | 6 drivers/net/sfc/sfc_resource/ci/efrm/sysdep.h | 6 drivers/net/sfc/sfc_resource/ci/efrm/sysdep_linux.h | 14 drivers/net/sfc/sfc_resource/ci/efrm/vi_resource.h | 54 drivers/net/sfc/sfc_resource/ci/efrm/vi_resource_manager.h | 59 drivers/net/sfc/sfc_resource/ci/efrm/vi_resource_private.h | 25 drivers/net/sfc/sfc_resource/driver_object.c | 212 drivers/net/sfc/sfc_resource/driverlink_new.c | 75 drivers/net/sfc/sfc_resource/efrm_internal.h | 73 drivers/net/sfc/sfc_resource/efx_vi_shm.c | 129 drivers/net/sfc/sfc_resource/eventq.c | 40 drivers/net/sfc/sfc_resource/falcon.c | 3855 +++++----- drivers/net/sfc/sfc_resource/falcon_hash.c | 223 drivers/net/sfc/sfc_resource/filter_resource.c | 285 drivers/net/sfc/sfc_resource/iobufset_resource.c | 167 drivers/net/sfc/sfc_resource/iopage.c | 16 drivers/net/sfc/sfc_resource/kernel_compat.c | 26 drivers/net/sfc/sfc_resource/kernel_compat.h | 30 drivers/net/sfc/sfc_resource/kernel_proc.c | 10 drivers/net/sfc/sfc_resource/kfifo.c | 16 drivers/net/sfc/sfc_resource/linux_resource_internal.h | 14 drivers/net/sfc/sfc_resource/nic.c | 59 drivers/net/sfc/sfc_resource/resource_driver.c | 158 drivers/net/sfc/sfc_resource/resource_manager.c | 222 drivers/net/sfc/sfc_resource/resources.c | 2 drivers/net/sfc/sfc_resource/vi_resource_alloc.c | 226 drivers/net/sfc/sfc_resource/vi_resource_event.c | 132 drivers/net/sfc/sfc_resource/vi_resource_flush.c | 320 drivers/net/sfc/sfc_resource/vi_resource_manager.c | 52 78 files changed, 9696 insertions(+), 5101 deletions(-) diff -r 0b5ca7cdbdfc -r b8c2a9aacba6 drivers/net/sfc/sfc_resource/Makefile --- a/drivers/net/sfc/sfc_resource/Makefile Fri Jan 08 13:05:49 2010 +0000 +++ b/drivers/net/sfc/sfc_resource/Makefile Fri Jan 08 13:06:22 2010 +0000 @@ -7,7 +7,7 @@ EXTRA_CFLAGS += -Idrivers/net/sfc -Idriv sfc_resource-objs := resource_driver.o iopage.o efx_vi_shm.o \ driverlink_new.o kernel_proc.o kfifo.o \ - nic.o eventq.o falcon.o falcon_mac.o falcon_hash.o \ + nic.o eventq.o falcon.o falcon_hash.o \ assert_valid.o buddy.o buffer_table.o filter_resource.o \ iobufset_resource.o resource_manager.o resources.o \ vi_resource_alloc.o vi_resource_event.o vi_resource_flush.o \ diff -r 0b5ca7cdbdfc -r b8c2a9aacba6 drivers/net/sfc/sfc_resource/assert_valid.c --- a/drivers/net/sfc/sfc_resource/assert_valid.c Fri Jan 08 13:05:49 2010 +0000 +++ b/drivers/net/sfc/sfc_resource/assert_valid.c Fri Jan 08 13:06:22 2010 +0000 @@ -6,7 +6,7 @@ * This file contains functions to assert validness of resources and * resource manager in DEBUG build of the resource driver. * - * Copyright 2005-2007: Solarflare Communications Inc, + * Copyright 2005-2010: Solarflare Communications Inc, * 9501 Jeronimo Road, Suite 250, * Irvine, CA 92618, USA * @@ -50,8 +50,6 @@ efrm_resource_manager_assert_valid(struc _EFRM_ASSERT(rm, file, line); _EFRM_ASSERT(rm->rm_name, file, line); _EFRM_ASSERT(rm->rm_type < EFRM_RESOURCE_NUM, file, line); - _EFRM_ASSERT(rm->rm_table, file, line); - _EFRM_ASSERT(rm->rm_table_size > 0, file, line); _EFRM_ASSERT(rm->rm_dtor, file, line); } EXPORT_SYMBOL(efrm_resource_manager_assert_valid); @@ -72,19 +70,18 @@ efrm_resource_assert_valid(struct efrm_r _EFRM_ASSERT(rs, file, line); if (ref_count_is_zero >= 0) { - if (!(ref_count_is_zero || atomic_read(&rs->rs_ref_count) > 0) - || !(!ref_count_is_zero - || atomic_read(&rs->rs_ref_count) == 0)) + if (!(ref_count_is_zero || rs->rs_ref_count > 0) + || !(!ref_count_is_zero || rs->rs_ref_count == 0)) EFRM_WARN("%s: check %szero ref=%d " EFRM_RESOURCE_FMT, __FUNCTION__, ref_count_is_zero == 0 ? "non-" : "", - atomic_read(&rs->rs_ref_count), + rs->rs_ref_count, EFRM_RESOURCE_PRI_ARG(rs->rs_handle)); _EFRM_ASSERT(!(ref_count_is_zero == 0) || - atomic_read(&rs->rs_ref_count) != 0, file, line); + rs->rs_ref_count != 0, file, line); _EFRM_ASSERT(!(ref_count_is_zero > 0) || - atomic_read(&rs->rs_ref_count) == 0, file, line); + rs->rs_ref_count == 0, file, line); } rm = efrm_rm_table[EFRM_RESOURCE_TYPE(rs->rs_handle)]; diff -r 0b5ca7cdbdfc -r b8c2a9aacba6 drivers/net/sfc/sfc_resource/buddy.c --- a/drivers/net/sfc/sfc_resource/buddy.c Fri Jan 08 13:05:49 2010 +0000 +++ b/drivers/net/sfc/sfc_resource/buddy.c Fri Jan 08 13:06:22 2010 +0000 @@ -1,3 +1,4 @@ + /**************************************************************************** * Driver for Solarflare network controllers - * resource management for Xen backend, OpenOnload, etc @@ -5,7 +6,7 @@ * * This file contains implementation of a buddy allocator. * - * Copyright 2005-2007: Solarflare Communications Inc, + * Copyright 2005-2010: Solarflare Communications Inc, * 9501 Jeronimo Road, Suite 250, * Irvine, CA 92618, USA * @@ -71,7 +72,7 @@ efrm_buddy_free_list_add(struct efrm_bud unsigned order, unsigned addr) { list_add(&b->links[addr], &b->free_lists[order]); - b->orders[addr] = (uint8_t) b->order; + b->orders[addr] = (uint8_t) order; } static inline void efrm_buddy_free_list_del(struct efrm_buddy_allocator *b, unsigned addr) @@ -207,7 +208,7 @@ efrm_buddy_free(struct efrm_buddy_alloca if (!efrm_buddy_addr_in_free_list(b, buddy_addr) || b->orders[buddy_addr] != order) break; - efrm_buddy_free_list_del(b, addr); + efrm_buddy_free_list_del(b, buddy_addr); if (buddy_addr < addr) addr = buddy_addr; ++order; @@ -217,91 +218,3 @@ efrm_buddy_free(struct efrm_buddy_alloca ("buddy - free %x merged into order %d", addr, order);); efrm_buddy_free_list_add(b, order, addr); } - -void efrm_buddy_reserve_at_start(struct efrm_buddy_allocator *b, unsigned n) -{ - int addr; - unsigned o; - EFRM_DO_DEBUG(int n_save = n); - - DEBUG_ALLOC(EFRM_NOTICE("%s(%u)", __FUNCTION__, n)); - EFRM_ASSERT(b); - EFRM_ASSERT(n <= 1u << b->order && n > 0); - /* Whole space must be free. */ - EFRM_ASSERT(!efrm_buddy_free_list_empty(b, b->order)); - - o = fls(n); - - while (n) { - while (((unsigned)1 << o) > n) - --o; - EFRM_ASSERT(((unsigned)1 << o) <= n); - addr = efrm_buddy_alloc(b, o); - EFRM_ASSERT(addr + (1 << o) <= n_save); - n -= 1 << o; - } -} - -static int -__efrm_buddy_reserve_at_end(struct efrm_buddy_allocator *b, unsigned order, - int threshold) -{ - unsigned o, addr; - - DEBUG_ALLOC(EFRM_NOTICE("%s(%u, %d)", __FUNCTION__, order, threshold)); - EFRM_ASSERT(b); - - /* Find largest block; there must be one big enough (or caller has - ** goofed). - */ - for (o = b->order;; --o) { - if (efrm_buddy_free_list_empty(b, o)) - continue; - addr = efrm_buddy_free_list_first(b, o); - if (addr + (1 << o) <= (unsigned)threshold) - continue; - break; - } - EFRM_ASSERT(o >= order); - - /* Split down (keeping second half) until we reach - * the requested size. */ - addr = efrm_buddy_free_list_pop(b, o); - - while (o-- > order) { - efrm_buddy_free_list_add(b, o, addr); - addr += 1 << o; - } - - EFRM_DO_DEBUG(b->orders[addr] = (uint8_t) order); - - return addr; -} - -void efrm_buddy_reserve_at_end(struct efrm_buddy_allocator *b, unsigned n) -{ - int addr, threshold; - unsigned o; - EFRM_DO_DEBUG(int n_save = n); - - DEBUG_ALLOC(EFRM_NOTICE("%s(%u)", __FUNCTION__, n)); - DEBUG_ALLOC(efrm_buddy_dump(b)); - EFRM_ASSERT(b); - EFRM_ASSERT(n <= 1u << b->order); - - if (!n) - return; - - threshold = (1 << b->order) - n; - o = fls(n); - - while (n) { - while (((unsigned)1 << o) > n) - --o; - EFRM_ASSERT(((unsigned)1 << o) <= n); - addr = __efrm_buddy_reserve_at_end(b, o, threshold); - EFRM_ASSERT(addr >= (1 << b->order) - n_save); - n -= 1 << o; - } - DEBUG_ALLOC(efrm_buddy_dump(b)); -} diff -r 0b5ca7cdbdfc -r b8c2a9aacba6 drivers/net/sfc/sfc_resource/buffer_table.c --- a/drivers/net/sfc/sfc_resource/buffer_table.c Fri Jan 08 13:05:49 2010 +0000 +++ b/drivers/net/sfc/sfc_resource/buffer_table.c Fri Jan 08 13:06:22 2010 +0000 @@ -5,7 +5,7 @@ * * This file contains abstraction of the buffer table on the NIC. * - * Copyright 2005-2007: Solarflare Communications Inc, + * Copyright 2005-2010: Solarflare Communications Inc, * 9501 Jeronimo Road, Suite 250, * Irvine, CA 92618, USA * @@ -51,13 +51,13 @@ static struct efrm_buffer_table efrm_buf int efrm_buffer_table_ctor(unsigned low, unsigned high) { - int log2_n_entries, rc; + int log2_n_entries, rc, i; EFRM_ASSERT(high > 0); EFRM_ASSERT(low < high); - EFRM_TRACE("efrm_buffer_table_ctor: low=%u high=%u", low, high); - EFRM_NOTICE("efrm_buffer_table_ctor: low=%u high=%u", low, high); + EFRM_TRACE("%s: low=%u high=%u", __FUNCTION__, low, high); + EFRM_NOTICE("%s: low=%u high=%u", __FUNCTION__, low, high); log2_n_entries = fls(high - 1); @@ -67,14 +67,17 @@ int efrm_buffer_table_ctor(unsigned low, "failed (%d)", log2_n_entries, rc); return rc; } + for (i = 0; i < (1 << log2_n_entries); ++i) { + rc = efrm_buddy_alloc(&efrm_buffers.buddy, 0); + EFRM_ASSERT(rc >= 0); + EFRM_ASSERT(rc < (1 << log2_n_entries)); + } + for (i = low; i < (int) high; ++i) + efrm_buddy_free(&efrm_buffers.buddy, i, 0); spin_lock_init(&efrm_buffers.lock); - efrm_buddy_reserve_at_start(&efrm_buffers.buddy, low); - efrm_buddy_reserve_at_end(&efrm_buffers.buddy, - (1 << log2_n_entries) - high); - - EFRM_TRACE("efrm_buffer_table_ctor: done"); + EFRM_TRACE("%s: done", __FUNCTION__); return 0; } @@ -86,7 +89,7 @@ void efrm_buffer_table_dtor(void) spin_lock_destroy(&efrm_buffers.lock); efrm_buddy_dtor(&efrm_buffers.buddy); - EFRM_TRACE("efrm_buffer_table_dtor: done"); + EFRM_TRACE("%s: done", __FUNCTION__); } /**********************************************************************/ @@ -151,22 +154,18 @@ void efrm_buffer_table_free(struct efhw_ void efrm_buffer_table_set(struct efhw_buffer_table_allocation *a, + struct efhw_nic *nic, unsigned i, dma_addr_t dma_addr, int owner) { - struct efhw_nic *nic; - int nic_i; - EFRM_ASSERT(a); EFRM_ASSERT(i < (unsigned)1 << a->order); - EFRM_FOR_EACH_NIC(nic_i, nic) - efhw_nic_buffer_table_set(nic, dma_addr, EFHW_NIC_PAGE_SIZE, - 0, owner, a->base + i); - /* NB. No commit Caller should call efrm_buffer_table_commit. There - are underlying hardware constraints regarding the number of - buffer table entries which can be pushed before commiting. */ -} - -unsigned long efrm_buffer_table_size(void) + + efhw_nic_buffer_table_set(nic, dma_addr, EFHW_NIC_PAGE_SIZE, + 0, owner, a->base + i); +} + + +int efrm_buffer_table_size(void) { return efrm_buddy_size(&efrm_buffers.buddy); } @@ -174,7 +173,7 @@ unsigned long efrm_buffer_table_size(voi /**********************************************************************/ int -efrm_page_register(dma_addr_t dma_addr, int owner, +efrm_page_register(struct efhw_nic *nic, dma_addr_t dma_addr, int owner, efhw_buffer_addr_t *buf_addr_out) { struct efhw_buffer_table_allocation alloc; @@ -182,7 +181,7 @@ efrm_page_register(dma_addr_t dma_addr, rc = efrm_buffer_table_alloc(0, &alloc); if (rc == 0) { - efrm_buffer_table_set(&alloc, 0, dma_addr, owner); + efrm_buffer_table_set(&alloc, nic, 0, dma_addr, owner); efrm_buffer_table_commit(); *buf_addr_out = EFHW_BUFFER_ADDR(alloc.base, 0); } diff -r 0b5ca7cdbdfc -r b8c2a9aacba6 drivers/net/sfc/sfc_resource/ci/driver/efab/hardware.h --- a/drivers/net/sfc/sfc_resource/ci/driver/efab/hardware.h Fri Jan 08 13:05:49 2010 +0000 +++ b/drivers/net/sfc/sfc_resource/ci/driver/efab/hardware.h Fri Jan 08 13:06:22 2010 +0000 @@ -5,7 +5,7 @@ * * This file provides EtherFabric NIC hardware interface. * - * Copyright 2005-2007: Solarflare Communications Inc, + * Copyright 2005-2010: Solarflare Communications Inc, * 9501 Jeronimo Road, Suite 250, * Irvine, CA 92618, USA * @@ -34,11 +34,11 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA **************************************************************************** */ - -#ifndef __CI_DRIVER_EFAB_HARDWARE_H__ +#ifdef __CI_DRIVER_EFAB_HARDWARE_H__ +# error This header should only be included directly in .c files +#endif #define __CI_DRIVER_EFAB_HARDWARE_H__ -#include "ci/driver/efab/hardware/workarounds.h" #include <ci/efhw/hardware_sysdep.h> @@ -58,7 +58,62 @@ * *---------------------------------------------------------------------------*/ +#ifdef USE_OLD_HWDEFS +#define FR_AA_TIMER_COMMAND_REG_KER_OFST 0x00000420 +#define FR_BZ_TIMER_COMMAND_REGP0_OFST 0x00000420 +#define FR_AB_TIMER_COMMAND_REGP123_OFST 0x01000420 +#define FR_AA_TIMER_COMMAND_REGP0_OFST 0x00008420 +#define FR_AA_TX_DESC_UPD_REG_KER_OFST 0x00000a10 +#define FR_AB_TX_DESC_UPD_REGP123_OFST 0x01000a10 +#define FR_AA_TX_DESC_UPD_REGP0_OFST 0x00008a10 +#define FR_AA_RX_DESC_UPD_REG_KER_OFST 0x00000830 +#define FR_AA_RX_DESC_UPD_REGP0_OFST 0x00008830 +#define FR_AB_RX_DESC_UPD_REGP123_OFST 0x01000830 +#else +#include "ci/driver/efab/hardware/host_common.h" +#include "ci/driver/efab/hardware/host_common_pci_defs.h" +#include "ci/driver/efab/hardware/host_common_mac.h" + +#define FR_AA_TX_PACE_TBL_FIRST_QUEUE 4 +#define FR_BZ_TX_PACE_TBL_FIRST_QUEUE 0 + +#define GEN_MODE_REG_KER 0xC90 /* here in B0 too, but not in headers? */ + #define DATAPATH_LOOPBACK_EN_SIENA_LBN 4 + #define DATAPATH_LOOPBACK_EN_SIENA_WIDTH 1 + +#define SIENA_USER_EV_DECODE 8 +#define SIENA_EVENT_CODE_USER ((uint64_t)SIENA_USER_EV_DECODE << EV_CODE_LBN) + +#define SIENA_USER_EV_QID_LBN 32 +#define SIENA_USER_EV_QID_WIDTH 10 +#define SIENA_USER_EV_REG_VALUE_LBN 0 +#define SIENA_USER_EV_REG_VALUE_WIDTH 32 + +#define SIENA_EVENT_USER_QID_MASK \ + (__FALCON_OPEN_MASK(SIENA_USER_EV_QID_WIDTH) << SIENA_USER_EV_QID_LBN) +#define SIENA_EVENT_USER_EV_REG_VALUE_MASK \ + (__FALCON_OPEN_MASK(SIENA_USER_EV_REG_VALUE_WIDTH) << \ + SIENA_USER_EV_REG_VALUE_LBN) + +#define SIENA_EVENT_USER_Q_ID(evp) \ + (((evp)->u64 & SIENA_EVENT_USER_QID_MASK) >> \ + SIENA_USER_EV_QID_LBN) + +#define SIENA_EVENT_USER_EV_REG_VALUE(evp) \ + (((evp)->u64 & SIENA_EVENT_USER_EV_REG_VALUE_MASK) >> \ + SIENA_USER_EV_REG_VALUE_LBN) + +/* Additional constants relevant to Siena only */ + +#define SIENA_RX_PKT_NOT_PARSED_CUTOFF 2560 +#define SIENA_PORT1_MCPUIND_MAP_OFFSET 0x800000 + +#endif #include <ci/driver/efab/hardware/falcon.h> + +#ifndef __KERNEL__ +#include <ci/driver/efab/hardware/falcon_ul.h> +#endif /*---------------------------------------------------------------------------- * @@ -85,20 +140,20 @@ #define efhw_nic_interrupt_disable(nic) \ ((nic)->efhw_func->interrupt_disable(nic)) -#define efhw_nic_set_interrupt_moderation(nic, val) \ - ((nic)->efhw_func->set_interrupt_moderation(nic, val)) +#define efhw_nic_set_interrupt_moderation(nic, evq, val) \ + ((nic)->efhw_func->set_interrupt_moderation(nic, evq, val)) /*-------------- Event support ------------ */ -#define efhw_nic_event_queue_enable(nic, evq, size, q_base, buf_base) \ - ((nic)->efhw_func->event_queue_enable(nic, evq, size, q_base, \ - buf_base)) +#define efhw_nic_event_queue_enable(nic, evq, size, buf_base, interrupting, dos_p) \ + ((nic)->efhw_func->event_queue_enable((nic), (evq), (size), \ + (buf_base), (interrupting), (dos_p))) #define efhw_nic_event_queue_disable(nic, evq, timer_only) \ ((nic)->efhw_func->event_queue_disable(nic, evq, timer_only)) -#define efhw_nic_wakeup_request(nic, q_base, index, evq) \ - ((nic)->efhw_func->wakeup_request(nic, q_base, index, evq)) +#define efhw_nic_wakeup_request(nic, rd_ptr, evq) \ + ((nic)->efhw_func->wakeup_request((nic), (rd_ptr), (evq))) #define efhw_nic_sw_event(nic, data, ev) \ ((nic)->efhw_func->sw_event(nic, data, ev)) @@ -109,14 +164,11 @@ ((nic)->efhw_func->ipfilter_set(nic, type, index, dmaq, \ saddr, sport, daddr, dport)) -#define efhw_nic_ipfilter_attach(nic, index, dmaq) \ - ((nic)->efhw_func->ipfilter_attach(nic, index, dmaq)) - -#define efhw_nic_ipfilter_detach(nic, index) \ - ((nic)->efhw_func->ipfilter_detach(nic, index)) - #define efhw_nic_ipfilter_clear(nic, index) \ ((nic)->efhw_func->ipfilter_clear(nic, index)) + +#define efhw_nic_ipfilter_redirect(nic, filter_i, rxq_i) \ + ((nic)->efhw_func->ipfilter_redirect((nic), (filter_i), (rxq_i))) /*-------------- DMA support ------------ */ #define efhw_nic_dmaq_tx_q_init(nic, dmaq, evq, owner, tag, \ @@ -162,6 +214,14 @@ #define efhw_nic_buffer_table_commit(nic) \ ((nic)->efhw_func->buffer_table_commit(nic)) +/*-------------- New filter API ------------ */ +#define efhw_nic_filter_set(nic, spec, index_out) \ + ((nic)->efhw_func->filter_set(nic, spec, index_out)) + +#define efhw_nic_filter_clear(nic, type, index_out) \ + ((nic)->efhw_func->filter_clear(nic, type, index_out)) + + /*---------------------------------------------------------------------------- * Hardware specific portability macros for performance critical code. * @@ -170,31 +230,15 @@ * marked appropriately * *---------------------------------------------------------------------------*/ - -#if defined(__CI_HARDWARE_CONFIG_FALCON__) - -/* --- DMA --- */ -#define EFHW_DMA_ADDRMASK (0xffffffffffffffffULL) /* --- Buffers --- */ #define EFHW_BUFFER_ADDR FALCON_BUFFER_4K_ADDR #define EFHW_BUFFER_PAGE FALCON_BUFFER_4K_PAGE #define EFHW_BUFFER_OFF FALCON_BUFFER_4K_OFF -/* --- Filters --- */ -#define EFHW_IP_FILTER_NUM FALCON_FILTER_TBL_NUM - -#define EFHW_MAX_PAGE_SIZE FALCON_MAX_PAGE_SIZE - -#else -# error no hardware definition found -#endif - #if PAGE_SIZE <= EFHW_MAX_PAGE_SIZE #define EFHW_NIC_PAGE_SIZE PAGE_SIZE #else #define EFHW_NIC_PAGE_SIZE EFHW_MAX_PAGE_SIZE #endif #define EFHW_NIC_PAGE_MASK (~(EFHW_NIC_PAGE_SIZE-1)) - -#endif /* __CI_DRIVER_EFAB_HARDWARE_H__ */ diff -r 0b5ca7cdbdfc -r b8c2a9aacba6 drivers/net/sfc/sfc_resource/ci/driver/efab/hardware/common.h --- a/drivers/net/sfc/sfc_resource/ci/driver/efab/hardware/common.h Fri Jan 08 13:05:49 2010 +0000 +++ b/drivers/net/sfc/sfc_resource/ci/driver/efab/hardware/common.h Fri Jan 08 13:06:22 2010 +0000 @@ -6,7 +6,7 @@ * This file provides EtherFabric NIC hardware interface common * definitions. * - * Copyright 2005-2007: Solarflare Communications Inc, + * Copyright 2005-2010: Solarflare Communications Inc, * 9501 Jeronimo Road, Suite 250, * Irvine, CA 92618, USA * @@ -65,4 +65,10 @@ #define EFHW_4G 0x100000000ULL #define EFHW_8G 0x200000000ULL +/* --- DMA --- */ +#define EFHW_DMA_ADDRMASK (0xffffffffffffffffULL) + +#define EFHW_IP_FILTER_NUM 8192 +#define EFHW_MAX_PAGE_SIZE (EFHW_8K) + #endif /* __CI_DRIVER_EFAB_HARDWARE_COMMON_H__ */ diff -r 0b5ca7cdbdfc -r b8c2a9aacba6 drivers/net/sfc/sfc_resource/ci/driver/efab/hardware/falcon.h --- a/drivers/net/sfc/sfc_resource/ci/driver/efab/hardware/falcon.h Fri Jan 08 13:05:49 2010 +0000 +++ b/drivers/net/sfc/sfc_resource/ci/driver/efab/hardware/falcon.h Fri Jan 08 13:06:22 2010 +0000 @@ -6,7 +6,7 @@ * This file provides EtherFabric NIC - EFXXXX (aka Falcon) specific * definitions. * - * Copyright 2005-2007: Solarflare Communications Inc, + * Copyright 2005-2010: Solarflare Communications Inc, * 9501 Jeronimo Road, Suite 250, * Irvine, CA 92618, USA * @@ -41,10 +41,11 @@ #define FALCON_MAX_PAGE_SIZE EFHW_8K /* include the register definitions */ -#include <ci/driver/efab/hardware/falcon/falcon_core.h> +#ifdef USE_OLD_HWDEFS +#include <ci/driver/efab/hardware/falcon/falcon_mac.h> +#endif #include <ci/driver/efab/hardware/falcon/falcon_desc.h> #include <ci/driver/efab/hardware/falcon/falcon_event.h> -#include <ci/driver/efab/hardware/falcon/falcon_mac.h> #include <ci/driver/efab/hardware/falcon/falcon_grmon.h> #include <ci/driver/efab/hardware/falcon/falcon_xgrmon.h> #include <ci/driver/efab/hardware/falcon/falcon_intr_vec.h> @@ -52,7 +53,6 @@ #define FALCON_DMA_TX_DESC_BYTES 8 #define FALCON_DMA_RX_PHYS_DESC_BYTES 8 #define FALCON_DMA_RX_BUF_DESC_BYTES 4 - /* ---- efhw_event_t helpers --- */ @@ -77,6 +77,9 @@ #define FALCON_EVENT_RX_FLUSH_Q_ID_MASK \ (__FALCON_OPEN_MASK(DRIVER_EV_RX_DESCQ_ID_WIDTH) << \ DRIVER_EV_RX_DESCQ_ID_LBN) +#define FALCON_EVENT_RX_FLUSH_FAIL_MASK \ + (__FALCON_OPEN_MASK(DRIVER_EV_RX_FLUSH_FAIL_WIDTH) << \ + DRIVER_EV_RX_FLUSH_FAIL_LBN) #define FALCON_EVENT_DRV_SUBCODE_MASK \ (__FALCON_OPEN_MASK(DRIVER_EV_SUB_CODE_WIDTH) << \ DRIVER_EV_SUB_CODE_LBN) @@ -95,6 +98,9 @@ #define FALCON_EVENT_RX_FLUSH_Q_ID(evp) \ (((evp)->u64 & FALCON_EVENT_RX_FLUSH_Q_ID_MASK) >> \ DRIVER_EV_RX_DESCQ_ID_LBN) +#define FALCON_EVENT_RX_FLUSH_FAIL(evp) \ + (((evp)->u64 & FALCON_EVENT_RX_FLUSH_FAIL_MASK) >> \ + DRIVER_EV_RX_FLUSH_FAIL_LBN) #define FALCON_EVENT_DRIVER_SUBCODE(evp) \ (((evp)->u64 & FALCON_EVENT_DRV_SUBCODE_MASK) >> \ DRIVER_EV_SUB_CODE_LBN) @@ -143,15 +149,24 @@ * *---------------------------------------------------------------------------*/ -#define FALCON_DMAQ_NUM (EFHW_4K) -#define FALCON_EVQ_TBL_NUM (EFHW_4K) -#define FALCON_TIMERS_NUM (EFHW_4K) +/* Note: the following constants have moved to values in struct efhw_nic + * because they are different between Falcon and Siena: + * FALCON_EVQ_TBL_NUM -> nic->num_evqs + * FALCON_DMAQ_NUM -> nic->num_dmaqs + * FALCON_TIMERS_NUM -> nic->num_times + * These replacement constants are used as sanity checks in assertions in + * certain functions that don't have access to struct efhw_nic. They may + * catch some errors but do *not* guarantee a valid value for Siena. + */ +#define FALCON_DMAQ_NUM_SANITY (EFHW_4K) +#define FALCON_EVQ_TBL_NUM_SANITY (EFHW_4K) +#define FALCON_TIMERS_NUM_SANITY (EFHW_4K) /* This value is an upper limit on the total number of filter table - * entries, including odd and even banks. The actual size of filter table - * is determined at runtime, as it can vary. - */ -#define FALCON_FILTER_TBL_NUM (EFHW_16K) + * entries. The actual size of filter table is determined at runtime, as + * it can vary. + */ +#define FALCON_FILTER_TBL_NUM (EFHW_8K) /* max number of buffers which can be pushed before commiting */ #define FALCON_BUFFER_UPD_MAX (128) @@ -196,6 +211,9 @@ union __u64to32 { } s; }; +/* Ensure DW3 is written last. Outer locking cannot be relied upon to provide + * a write barrier + */ static inline void falcon_write_ddd_d(volatile char __iomem *kva, uint32_t d0, uint32_t d1, uint32_t d2, uint32_t d3) @@ -205,8 +223,12 @@ falcon_write_ddd_d(volatile char __iomem writel(d2, kva + 8); mmiowb(); writel(d3, kva + 12); -} - + mmiowb(); +} + +/* Ensure DW3 is written last. Outer locking cannot be relied upon to provide + * a write barrier + */ static inline void falcon_write_q(volatile char __iomem *kva, uint64_t q) { union __u64to32 u; @@ -215,6 +237,7 @@ static inline void falcon_write_q(volati writel(u.s.a, kva); mmiowb(); writel(u.s.b, kva + 4); + mmiowb(); } static inline void falcon_read_q(volatile char __iomem *addr, uint64_t *q0) @@ -224,9 +247,13 @@ static inline void falcon_read_q(volatil * and we get a self consistent value. */ union __u64to32 u; + /* The CPU must always waits for a read to complete so locked sequences + * of reads cannot be interleaved. Lock is outside this function. + */ u.s.a = readl(addr); - rmb(); + rmb(); /* to stop compiler/CPU re-ordering these two reads*/ u.s.b = readl(addr + 4); + rmb(); /* just be safe: so falcon_read_q() can be composed */ *q0 = u.u64; } @@ -282,18 +309,23 @@ falcon_read_qq(volatile char __iomem *ad static inline int falcon_timer_page_addr(uint idx) { - - EFHW_ASSERT(TIMER_CMD_REG_KER_OFST == - (TIMER_CMD_REG_PAGE4_OFST - 4 * EFHW_8K)); - - EFHW_ASSERT(idx < FALCON_TIMERS_NUM); +#ifdef HEADER_REVIEW +#warning TBD this needs more clean up; the function does not get a version +#warning the function makes an index range check; this is device dependent +#endif + EFHW_ASSERT(FR_AA_TIMER_COMMAND_REG_KER_OFST == + (FR_AA_TIMER_COMMAND_REGP0_OFST - 4 * EFHW_8K)); + + EFHW_ASSERT(idx < FALCON_TIMERS_NUM_SANITY); + EFHW_ASSERT(FR_BZ_TIMER_COMMAND_REGP0_OFST== + FR_AA_TIMER_COMMAND_REG_KER_OFST); if (idx < 4) - return TIMER_CMD_REG_KER_OFST + (idx * EFHW_8K); + return FR_AA_TIMER_COMMAND_REG_KER_OFST + (idx * EFHW_8K); else if (idx < 1024) - return TIMER_CMD_REG_PAGE4_OFST + ((idx - 4) * EFHW_8K); + return FR_AA_TIMER_COMMAND_REGP0_OFST + ((idx - 4) * EFHW_8K); else - return TIMER_CMD_REG_PAGE123K_OFST + ((idx - 1024) * EFHW_8K); + return FR_AB_TIMER_COMMAND_REGP123_OFST + ((idx - 1024) * EFHW_8K); } #define FALCON_TIMER_PAGE_MASK (EFHW_8K-1) @@ -316,17 +348,21 @@ static inline uint falcon_tx_dma_page_ad static inline uint falcon_tx_dma_page_addr(uint dmaq_idx) { uint page; - - EFHW_ASSERT((((TX_DESC_UPD_REG_PAGE123K_OFST) & (EFHW_8K - 1)) == - (((TX_DESC_UPD_REG_PAGE4_OFST) & (EFHW_8K - 1))))); - - EFHW_ASSERT(dmaq_idx < FALCON_DMAQ_NUM); +#ifdef HEADER_REVIEW +#warning TBD this needs more clean up; the function does not get a version +#warning the function makes an index range check; this is device dependent +#endif + + EFHW_ASSERT((((FR_AB_TX_DESC_UPD_REGP123_OFST) & (EFHW_8K - 1)) == + (((FR_AA_TX_DESC_UPD_REGP0_OFST) & (EFHW_8K - 1))))); + + EFHW_ASSERT(dmaq_idx < FALCON_DMAQ_NUM_SANITY); if (dmaq_idx < 1024) - page = TX_DESC_UPD_REG_PAGE4_OFST + ((dmaq_idx - 4) * EFHW_8K); + page = FR_AA_TX_DESC_UPD_REGP0_OFST + ((dmaq_idx - 4) * EFHW_8K); else page = - TX_DESC_UPD_REG_PAGE123K_OFST + + FR_AB_TX_DESC_UPD_REGP123_OFST + ((dmaq_idx - 1024) * EFHW_8K); return page; @@ -336,17 +372,21 @@ static inline uint falcon_rx_dma_page_ad static inline uint falcon_rx_dma_page_addr(uint dmaq_idx) { uint page; - - EFHW_ASSERT((((RX_DESC_UPD_REG_PAGE123K_OFST) & (EFHW_8K - 1)) == - ((RX_DESC_UPD_REG_PAGE4_OFST) & (EFHW_8K - 1)))); - - EFHW_ASSERT(dmaq_idx < FALCON_DMAQ_NUM); +#ifdef HEADER_REVIEW +#warning TBD this needs more clean up; the function does not get a version +#warning the function makes an index range check; this is device dependent +#endif + + EFHW_ASSERT((((FR_AB_RX_DESC_UPD_REGP123_OFST) & (EFHW_8K - 1)) == + ((FR_AA_RX_DESC_UPD_REGP0_OFST) & (EFHW_8K - 1)))); + + EFHW_ASSERT(dmaq_idx < FALCON_DMAQ_NUM_SANITY); if (dmaq_idx < 1024) - page = RX_DESC_UPD_REG_PAGE4_OFST + ((dmaq_idx - 4) * EFHW_8K); + page = FR_AA_RX_DESC_UPD_REGP0_OFST + ((dmaq_idx - 4) * EFHW_8K); else page = - RX_DESC_UPD_REG_PAGE123K_OFST + + FR_AB_RX_DESC_UPD_REGP123_OFST + ((dmaq_idx - 1024) * EFHW_8K); return page; @@ -387,12 +427,7 @@ static inline int falcon_rx_dma_page_off * *---------------------------------------------------------------------------*/ -/* Falcon nails down the event queue mappings */ -#define FALCON_EVQ_KERNEL0 (0) /* hardwired for net driver */ -#define FALCON_EVQ_CHAR (4) /* char driver's event queue */ - -/* reserved by the drivers */ -#define FALCON_EVQ_TBL_RESERVED (8) +#define FALCON_A_EVQ_CHAR (4) /* min evq accessible via char bar */ /* default DMA-Q sizes */ #define FALCON_DMA_Q_DEFAULT_TX_SIZE 512 diff -r 0b5ca7cdbdfc -r b8c2a9aacba6 drivers/net/sfc/sfc_resource/ci/driver/efab/hardware/falcon/falcon_core.h --- a/drivers/net/sfc/sfc_resource/ci/driver/efab/hardware/falcon/falcon_core.h Fri Jan 08 13:05:49 2010 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1149 +0,0 @@ -/**************************************************************************** - * Driver for Solarflare network controllers - - * resource management for Xen backend, OpenOnload, etc - * (including support for SFE4001 10GBT NIC) - * - * This file provides EtherFabric NIC - EFXXXX (aka Falcon) core register - * definitions. - * - * Copyright 2005-2007: Solarflare Communications Inc, - * 9501 Jeronimo Road, Suite 250, - * Irvine, CA 92618, USA - * - * Developed and maintained by Solarflare Communications: - * <linux-xen-drivers@xxxxxxxxxxxxxx> - * <onload-dev@xxxxxxxxxxxxxx> - * - * - * This program is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 as published - * by the Free Software Foundation, incorporated herein by reference. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - **************************************************************************** - */ - -#define FALCON_EXTENDED_P_BAR 1 - -/*************---- Bus Interface Unit Registers C Header ----*************/ -#define IOM_IND_ADR_REG_OFST 0x0 /* IO-mapped indirect access address - register */ - #define IOM_AUTO_ADR_INC_EN_LBN 16 - #define IOM_AUTO_ADR_INC_EN_WIDTH 1 - #define IOM_IND_ADR_LBN 0 - #define IOM_IND_ADR_WIDTH 16 -#define IOM_IND_DAT_REG_OFST 0x4 /* IO-mapped indirect access data register */ - #define IOM_IND_DAT_LBN 0 - #define IOM_IND_DAT_WIDTH 32 -#define ADR_REGION_REG_KER_OFST 0x0 /* Address region register */ -#define ADR_REGION_REG_OFST 0x0 /* Address region register */ - #define ADR_REGION3_LBN 96 - #define ADR_REGION3_WIDTH 18 - #define ADR_REGION2_LBN 64 - #define ADR_REGION2_WIDTH 18 - #define ADR_REGION1_LBN 32 - #define ADR_REGION1_WIDTH 18 - #define ADR_REGION0_LBN 0 - #define ADR_REGION0_WIDTH 18 -#define INT_EN_REG_KER_OFST 0x10 /* Kernel driver Interrupt enable register */ - #define KER_INT_CHAR_LBN 4 - #define KER_INT_CHAR_WIDTH 1 - #define KER_INT_KER_LBN 3 - #define KER_INT_KER_WIDTH 1 - #define ILL_ADR_ERR_INT_EN_KER_LBN 2 - #define ILL_ADR_ERR_INT_EN_KER_WIDTH 1 - #define SRM_PERR_INT_EN_KER_LBN 1 - #define SRM_PERR_INT_EN_KER_WIDTH 1 - #define DRV_INT_EN_KER_LBN 0 - #define DRV_INT_EN_KER_WIDTH 1 -#define INT_EN_REG_CHAR_OFST 0x20 /* Char Driver interrupt enable register */ - #define CHAR_INT_CHAR_LBN 4 - #define CHAR_INT_CHAR_WIDTH 1 - #define CHAR_INT_KER_LBN 3 - #define CHAR_INT_KER_WIDTH 1 - #define ILL_ADR_ERR_INT_EN_CHAR_LBN 2 - #define ILL_ADR_ERR_INT_EN_CHAR_WIDTH 1 - #define SRM_PERR_INT_EN_CHAR_LBN 1 - #define SRM_PERR_INT_EN_CHAR_WIDTH 1 - #define DRV_INT_EN_CHAR_LBN 0 - #define DRV_INT_EN_CHAR_WIDTH 1 -#define INT_ADR_REG_KER_OFST 0x30 /* Interrupt host address for Kernel driver */ - #define INT_ADR_KER_LBN 0 - #define INT_ADR_KER_WIDTH 64 - #define DRV_INT_KER_LBN 32 - #define DRV_INT_KER_WIDTH 1 - #define EV_FF_HALF_INT_KER_LBN 3 - #define EV_FF_HALF_INT_KER_WIDTH 1 - #define EV_FF_FULL_INT_KER_LBN 2 - #define EV_FF_FULL_INT_KER_WIDTH 1 - #define ILL_ADR_ERR_INT_KER_LBN 1 - #define ILL_ADR_ERR_INT_KER_WIDTH 1 - #define SRAM_PERR_INT_KER_LBN 0 - #define SRAM_PERR_INT_KER_WIDTH 1 -#define INT_ADR_REG_CHAR_OFST 0x40 /* Interrupt host address for Char driver */ - #define INT_ADR_CHAR_LBN 0 - #define INT_ADR_CHAR_WIDTH 64 - #define DRV_INT_CHAR_LBN 32 - #define DRV_INT_CHAR_WIDTH 1 - #define EV_FF_HALF_INT_CHAR_LBN 3 - #define EV_FF_HALF_INT_CHAR_WIDTH 1 - #define EV_FF_FULL_INT_CHAR_LBN 2 - #define EV_FF_FULL_INT_CHAR_WIDTH 1 - #define ILL_ADR_ERR_INT_CHAR_LBN 1 - #define ILL_ADR_ERR_INT_CHAR_WIDTH 1 - #define SRAM_PERR_INT_CHAR_LBN 0 - #define SRAM_PERR_INT_CHAR_WIDTH 1 -#define INT_ISR0_B0_OFST 0x90 /* B0 only */ -#define INT_ISR1_B0_OFST 0xA0 -#define INT_ACK_REG_KER_A1_OFST 0x50 /* Kernel interrupt acknowledge register */ - #define RESERVED_LBN 0 - #define RESERVED_WIDTH 32 -#define INT_ACK_REG_CHAR_A1_OFST 0x60 /* CHAR interrupt acknowledge register */ - #define RESERVED_LBN 0 - #define RESERVED_WIDTH 32 -/*************---- Global CSR Registers C Header ----*************/ -#define STRAP_REG_KER_OFST 0x200 /* ASIC strap status register */ -#define STRAP_REG_OFST 0x200 /* ASIC strap status register */ - #define ONCHIP_SRAM_LBN 16 - #define ONCHIP_SRAM_WIDTH 0 - #define STRAP_ISCSI_EN_LBN 3 - #define STRAP_ISCSI_EN_WIDTH 1 - #define STRAP_PINS_LBN 0 - #define STRAP_PINS_WIDTH 3 -#define GPIO_CTL_REG_KER_OFST 0x210 /* GPIO control register */ -#define GPIO_CTL_REG_OFST 0x210 /* GPIO control register */ - #define GPIO_OEN_LBN 24 - #define GPIO_OEN_WIDTH 4 - #define GPIO_OUT_LBN 16 - #define GPIO_OUT_WIDTH 4 - #define GPIO_IN_LBN 8 - #define GPIO_IN_WIDTH 4 - #define GPIO_PWRUP_VALUE_LBN 0 - #define GPIO_PWRUP_VALUE_WIDTH 4 -#define GLB_CTL_REG_KER_OFST 0x220 /* Global control register */ -#define GLB_CTL_REG_OFST 0x220 /* Global control register */ - #define SWRST_LBN 0 - #define SWRST_WIDTH 1 -#define FATAL_INTR_REG_KER_OFST 0x230 /* Fatal interrupt register for Kernel */ - #define PCI_BUSERR_INT_KER_EN_LBN 43 - #define PCI_BUSERR_INT_KER_EN_WIDTH 1 - #define SRAM_OOB_INT_KER_EN_LBN 42 - #define SRAM_OOB_INT_KER_EN_WIDTH 1 - #define BUFID_OOB_INT_KER_EN_LBN 41 - #define BUFID_OOB_INT_KER_EN_WIDTH 1 - #define MEM_PERR_INT_KER_EN_LBN 40 - #define MEM_PERR_INT_KER_EN_WIDTH 1 - #define RBUF_OWN_INT_KER_EN_LBN 39 - #define RBUF_OWN_INT_KER_EN_WIDTH 1 - #define TBUF_OWN_INT_KER_EN_LBN 38 - #define TBUF_OWN_INT_KER_EN_WIDTH 1 - #define RDESCQ_OWN_INT_KER_EN_LBN 37 - #define RDESCQ_OWN_INT_KER_EN_WIDTH 1 - #define TDESCQ_OWN_INT_KER_EN_LBN 36 - #define TDESCQ_OWN_INT_KER_EN_WIDTH 1 - #define EVQ_OWN_INT_KER_EN_LBN 35 - #define EVQ_OWN_INT_KER_EN_WIDTH 1 - #define EVFF_OFLO_INT_KER_EN_LBN 34 - #define EVFF_OFLO_INT_KER_EN_WIDTH 1 - #define ILL_ADR_INT_KER_EN_LBN 33 - #define ILL_ADR_INT_KER_EN_WIDTH 1 - #define SRM_PERR_INT_KER_EN_LBN 32 - #define SRM_PERR_INT_KER_EN_WIDTH 1 - #define PCI_BUSERR_INT_KER_LBN 11 - #define PCI_BUSERR_INT_KER_WIDTH 1 - #define SRAM_OOB_INT_KER_LBN 10 - #define SRAM_OOB_INT_KER_WIDTH 1 - #define BUFID_OOB_INT_KER_LBN 9 - #define BUFID_OOB_INT_KER_WIDTH 1 - #define MEM_PERR_INT_KER_LBN 8 - #define MEM_PERR_INT_KER_WIDTH 1 - #define RBUF_OWN_INT_KER_LBN 7 - #define RBUF_OWN_INT_KER_WIDTH 1 - #define TBUF_OWN_INT_KER_LBN 6 - #define TBUF_OWN_INT_KER_WIDTH 1 - #define RDESCQ_OWN_INT_KER_LBN 5 - #define RDESCQ_OWN_INT_KER_WIDTH 1 - #define TDESCQ_OWN_INT_KER_LBN 4 - #define TDESCQ_OWN_INT_KER_WIDTH 1 - #define EVQ_OWN_INT_KER_LBN 3 - #define EVQ_OWN_INT_KER_WIDTH 1 - #define EVFF_OFLO_INT_KER_LBN 2 - #define EVFF_OFLO_INT_KER_WIDTH 1 - #define ILL_ADR_INT_KER_LBN 1 - #define ILL_ADR_INT_KER_WIDTH 1 - #define SRM_PERR_INT_KER_LBN 0 - #define SRM_PERR_INT_KER_WIDTH 1 -#define FATAL_INTR_REG_OFST 0x240 /* Fatal interrupt register for Char */ - #define PCI_BUSERR_INT_CHAR_EN_LBN 43 - #define PCI_BUSERR_INT_CHAR_EN_WIDTH 1 - #define SRAM_OOB_INT_CHAR_EN_LBN 42 - #define SRAM_OOB_INT_CHAR_EN_WIDTH 1 - #define BUFID_OOB_INT_CHAR_EN_LBN 41 - #define BUFID_OOB_INT_CHAR_EN_WIDTH 1 - #define MEM_PERR_INT_CHAR_EN_LBN 40 - #define MEM_PERR_INT_CHAR_EN_WIDTH 1 - #define RBUF_OWN_INT_CHAR_EN_LBN 39 - #define RBUF_OWN_INT_CHAR_EN_WIDTH 1 - #define TBUF_OWN_INT_CHAR_EN_LBN 38 - #define TBUF_OWN_INT_CHAR_EN_WIDTH 1 - #define RDESCQ_OWN_INT_CHAR_EN_LBN 37 - #define RDESCQ_OWN_INT_CHAR_EN_WIDTH 1 - #define TDESCQ_OWN_INT_CHAR_EN_LBN 36 - #define TDESCQ_OWN_INT_CHAR_EN_WIDTH 1 - #define EVQ_OWN_INT_CHAR_EN_LBN 35 - #define EVQ_OWN_INT_CHAR_EN_WIDTH 1 - #define EVFF_OFLO_INT_CHAR_EN_LBN 34 - #define EVFF_OFLO_INT_CHAR_EN_WIDTH 1 - #define ILL_ADR_INT_CHAR_EN_LBN 33 - #define ILL_ADR_INT_CHAR_EN_WIDTH 1 - #define SRM_PERR_INT_CHAR_EN_LBN 32 - #define SRM_PERR_INT_CHAR_EN_WIDTH 1 - #define FATAL_INTR_REG_EN_BITS 0xffffffffffffffffULL - #define PCI_BUSERR_INT_CHAR_LBN 11 - #define PCI_BUSERR_INT_CHAR_WIDTH 1 - #define SRAM_OOB_INT_CHAR_LBN 10 - #define SRAM_OOB_INT_CHAR_WIDTH 1 - #define BUFID_OOB_INT_CHAR_LBN 9 - #define BUFID_OOB_INT_CHAR_WIDTH 1 - #define MEM_PERR_INT_CHAR_LBN 8 - #define MEM_PERR_INT_CHAR_WIDTH 1 - #define RBUF_OWN_INT_CHAR_LBN 7 - #define RBUF_OWN_INT_CHAR_WIDTH 1 - #define TBUF_OWN_INT_CHAR_LBN 6 - #define TBUF_OWN_INT_CHAR_WIDTH 1 - #define RDESCQ_OWN_INT_CHAR_LBN 5 - #define RDESCQ_OWN_INT_CHAR_WIDTH 1 - #define TDESCQ_OWN_INT_CHAR_LBN 4 - #define TDESCQ_OWN_INT_CHAR_WIDTH 1 - #define EVQ_OWN_INT_CHAR_LBN 3 - #define EVQ_OWN_INT_CHAR_WIDTH 1 - #define EVFF_OFLO_INT_CHAR_LBN 2 - #define EVFF_OFLO_INT_CHAR_WIDTH 1 - #define ILL_ADR_INT_CHAR_LBN 1 - #define ILL_ADR_INT_CHAR_WIDTH 1 - #define SRM_PERR_INT_CHAR_LBN 0 - #define SRM_PERR_INT_CHAR_WIDTH 1 -#define DP_CTRL_REG_OFST 0x250 /* Datapath control register */ - #define FLS_EVQ_ID_LBN 0 - #define FLS_EVQ_ID_WIDTH 12 -#define MEM_STAT_REG_KER_OFST 0x260 /* Memory status register */ -#define MEM_STAT_REG_OFST 0x260 /* Memory status register */ - #define MEM_PERR_VEC_LBN 53 - #define MEM_PERR_VEC_WIDTH 38 - #define MBIST_CORR_LBN 38 - #define MBIST_CORR_WIDTH 15 - #define MBIST_ERR_LBN 0 - #define MBIST_ERR_WIDTH 38 -#define DEBUG_REG_KER_OFST 0x270 /* Debug register */ -#define DEBUG_REG_OFST 0x270 /* Debug register */ - #define DEBUG_BLK_SEL2_LBN 47 - #define DEBUG_BLK_SEL2_WIDTH 3 - #define DEBUG_BLK_SEL1_LBN 44 - #define DEBUG_BLK_SEL1_WIDTH 3 - #define DEBUG_BLK_SEL0_LBN 41 - #define DEBUG_BLK_SEL0_WIDTH 3 - #define MISC_DEBUG_ADDR_LBN 36 - #define MISC_DEBUG_ADDR_WIDTH 5 - #define SERDES_DEBUG_ADDR_LBN 31 - #define SERDES_DEBUG_ADDR_WIDTH 5 - #define EM_DEBUG_ADDR_LBN 26 - #define EM_DEBUG_ADDR_WIDTH 5 - #define SR_DEBUG_ADDR_LBN 21 - #define SR_DEBUG_ADDR_WIDTH 5 - #define EV_DEBUG_ADDR_LBN 16 - #define EV_DEBUG_ADDR_WIDTH 5 - #define RX_DEBUG_ADDR_LBN 11 - #define RX_DEBUG_ADDR_WIDTH 5 - #define TX_DEBUG_ADDR_LBN 6 - #define TX_DEBUG_ADDR_WIDTH 5 - #define BIU_DEBUG_ADDR_LBN 1 - #define BIU_DEBUG_ADDR_WIDTH 5 - #define DEBUG_EN_LBN 0 - #define DEBUG_EN_WIDTH 1 -#define DRIVER_REG0_KER_OFST 0x280 /* Driver scratch register 0 */ -#define DRIVER_REG0_OFST 0x280 /* Driver scratch register 0 */ - #define DRIVER_DW0_LBN 0 - #define DRIVER_DW0_WIDTH 32 -#define DRIVER_REG1_KER_OFST 0x290 /* Driver scratch register 1 */ -#define DRIVER_REG1_OFST 0x290 /* Driver scratch register 1 */ - #define DRIVER_DW1_LBN 0 - #define DRIVER_DW1_WIDTH 32 -#define DRIVER_REG2_KER_OFST 0x2A0 /* Driver scratch register 2 */ -#define DRIVER_REG2_OFST 0x2A0 /* Driver scratch register 2 */ - #define DRIVER_DW2_LBN 0 - #define DRIVER_DW2_WIDTH 32 -#define DRIVER_REG3_KER_OFST 0x2B0 /* Driver scratch register 3 */ -#define DRIVER_REG3_OFST 0x2B0 /* Driver scratch register 3 */ - #define DRIVER_DW3_LBN 0 - #define DRIVER_DW3_WIDTH 32 -#define DRIVER_REG4_KER_OFST 0x2C0 /* Driver scratch register 4 */ -#define DRIVER_REG4_OFST 0x2C0 /* Driver scratch register 4 */ - #define DRIVER_DW4_LBN 0 - #define DRIVER_DW4_WIDTH 32 -#define DRIVER_REG5_KER_OFST 0x2D0 /* Driver scratch register 5 */ -#define DRIVER_REG5_OFST 0x2D0 /* Driver scratch register 5 */ - #define DRIVER_DW5_LBN 0 - #define DRIVER_DW5_WIDTH 32 -#define DRIVER_REG6_KER_OFST 0x2E0 /* Driver scratch register 6 */ -#define DRIVER_REG6_OFST 0x2E0 /* Driver scratch register 6 */ - #define DRIVER_DW6_LBN 0 - #define DRIVER_DW6_WIDTH 32 -#define DRIVER_REG7_KER_OFST 0x2F0 /* Driver scratch register 7 */ -#define DRIVER_REG7_OFST 0x2F0 /* Driver scratch register 7 */ - #define DRIVER_DW7_LBN 0 - #define DRIVER_DW7_WIDTH 32 -#define ALTERA_BUILD_REG_OFST 0x300 /* Altera build register */ -#define ALTERA_BUILD_REG_OFST 0x300 /* Altera build register */ - #define ALTERA_BUILD_VER_LBN 0 - #define ALTERA_BUILD_VER_WIDTH 32 - -/* so called CSR spare register - - contains separate parity enable bits for the various internal memory - blocks */ -#define MEM_PARITY_ERR_EN_REG_KER 0x310 -#define MEM_PARITY_ALL_BLOCKS_EN_LBN 64 -#define MEM_PARITY_ALL_BLOCKS_EN_WIDTH 38 -#define MEM_PARITY_TX_DATA_EN_LBN 72 -#define MEM_PARITY_TX_DATA_EN_WIDTH 2 - -/*************---- Event & Timer Module Registers C Header ----*************/ - -#if FALCON_EXTENDED_P_BAR -#define EVQ_RPTR_REG_KER_OFST 0x11B00 /* Event queue read pointer register */ -#else -#define EVQ_RPTR_REG_KER_OFST 0x1B00 /* Event queue read pointer register */ -#endif - -#define EVQ_RPTR_REG_OFST 0xFA0000 /* Event queue read pointer register - array. */ - #define EVQ_RPTR_LBN 0 - #define EVQ_RPTR_WIDTH 15 - -#if FALCON_EXTENDED_P_BAR -#define EVQ_PTR_TBL_KER_OFST 0x11A00 /* Event queue pointer table for kernel - access */ -#else -#define EVQ_PTR_TBL_KER_OFST 0x1A00 /* Event queue pointer table for kernel - access */ -#endif - -#define EVQ_PTR_TBL_CHAR_OFST 0xF60000 /* Event queue pointer table for char - direct access */ - #define EVQ_WKUP_OR_INT_EN_LBN 39 - #define EVQ_WKUP_OR_INT_EN_WIDTH 1 - #define EVQ_NXT_WPTR_LBN 24 - #define EVQ_NXT_WPTR_WIDTH 15 - #define EVQ_EN_LBN 23 - #define EVQ_EN_WIDTH 1 - #define EVQ_SIZE_LBN 20 - #define EVQ_SIZE_WIDTH 3 - #define EVQ_BUF_BASE_ID_LBN 0 - #define EVQ_BUF_BASE_ID_WIDTH 20 -#define TIMER_CMD_REG_KER_OFST 0x420 /* Timer table for kernel access. - Page-mapped */ -#define TIMER_CMD_REG_PAGE4_OFST 0x8420 /* Timer table for user-level access. - Page-mapped. For lowest 1K queues. - */ -#define TIMER_CMD_REG_PAGE123K_OFST 0x1000420 /* Timer table for user-level - access. Page-mapped. - For upper 3K queues. */ -#define TIMER_TBL_OFST 0xF70000 /* Timer table for char driver direct access */ - #define TIMER_MODE_LBN 12 - #define TIMER_MODE_WIDTH 2 - #define TIMER_VAL_LBN 0 - #define TIMER_VAL_WIDTH 12 - #define TIMER_MODE_INT_HLDOFF 2 - #define EVQ_BUF_SIZE_LBN 0 - #define EVQ_BUF_SIZE_WIDTH 1 -#define DRV_EV_REG_KER_OFST 0x440 /* Driver generated event register */ -#define DRV_EV_REG_OFST 0x440 /* Driver generated event register */ - #define DRV_EV_QID_LBN 64 - #define DRV_EV_QID_WIDTH 12 - #define DRV_EV_DATA_LBN 0 - #define DRV_EV_DATA_WIDTH 64 -#define EVQ_CTL_REG_KER_OFST 0x450 /* Event queue control register */ -#define EVQ_CTL_REG_OFST 0x450 /* Event queue control register */ - #define RX_EVQ_WAKEUP_MASK_B0_LBN 15 - #define RX_EVQ_WAKEUP_MASK_B0_WIDTH 6 - #define EVQ_OWNERR_CTL_LBN 14 - #define EVQ_OWNERR_CTL_WIDTH 1 - #define EVQ_FIFO_AF_TH_LBN 8 - #define EVQ_FIFO_AF_TH_WIDTH 6 - #define EVQ_FIFO_NOTAF_TH_LBN 0 - #define EVQ_FIFO_NOTAF_TH_WIDTH 6 -/*************---- SRAM Module Registers C Header ----*************/ -#define BUF_TBL_CFG_REG_KER_OFST 0x600 /* Buffer table configuration register */ -#define BUF_TBL_CFG_REG_OFST 0x600 /* Buffer table configuration register */ - #define BUF_TBL_MODE_LBN 3 - #define BUF_TBL_MODE_WIDTH 1 -#define SRM_RX_DC_CFG_REG_KER_OFST 0x610 /* SRAM receive descriptor cache - configuration register */ -#define SRM_RX_DC_CFG_REG_OFST 0x610 /* SRAM receive descriptor cache - configuration register */ - #define SRM_RX_DC_BASE_ADR_LBN 0 - #define SRM_RX_DC_BASE_ADR_WIDTH 21 -#define SRM_TX_DC_CFG_REG_KER_OFST 0x620 /* SRAM transmit descriptor cache - configuration register */ -#define SRM_TX_DC_CFG_REG_OFST 0x620 /* SRAM transmit descriptor cache - configuration register */ - #define SRM_TX_DC_BASE_ADR_LBN 0 - #define SRM_TX_DC_BASE_ADR_WIDTH 21 -#define SRM_CFG_REG_KER_OFST 0x630 /* SRAM configuration register */ -#define SRM_CFG_REG_OFST 0x630 /* SRAM configuration register */ - #define SRAM_OOB_ADR_INTEN_LBN 5 - #define SRAM_OOB_ADR_INTEN_WIDTH 1 - #define SRAM_OOB_BUF_INTEN_LBN 4 - #define SRAM_OOB_BUF_INTEN_WIDTH 1 - #define SRAM_BT_INIT_EN_LBN 3 - #define SRAM_BT_INIT_EN_WIDTH 1 - #define SRM_NUM_BANK_LBN 2 - #define SRM_NUM_BANK_WIDTH 1 - #define SRM_BANK_SIZE_LBN 0 - #define SRM_BANK_SIZE_WIDTH 2 -#define BUF_TBL_UPD_REG_KER_OFST 0x650 /* Buffer table update register */ -#define BUF_TBL_UPD_REG_OFST 0x650 /* Buffer table update register */ - #define BUF_UPD_CMD_LBN 63 - #define BUF_UPD_CMD_WIDTH 1 - #define BUF_CLR_CMD_LBN 62 - #define BUF_CLR_CMD_WIDTH 1 - #define BUF_CLR_END_ID_LBN 32 - #define BUF_CLR_END_ID_WIDTH 20 - #define BUF_CLR_START_ID_LBN 0 - #define BUF_CLR_START_ID_WIDTH 20 -#define SRM_UPD_EVQ_REG_KER_OFST 0x660 /* Buffer table update register */ -#define SRM_UPD_EVQ_REG_OFST 0x660 /* Buffer table update register */ - #define SRM_UPD_EVQ_ID_LBN 0 - #define SRM_UPD_EVQ_ID_WIDTH 12 -#define SRAM_PARITY_REG_KER_OFST 0x670 /* SRAM parity register. */ -#define SRAM_PARITY_REG_OFST 0x670 /* SRAM parity register. */ - #define FORCE_SRAM_PERR_LBN 0 - #define FORCE_SRAM_PERR_WIDTH 1 - -#if FALCON_EXTENDED_P_BAR -#define BUF_HALF_TBL_KER_OFST 0x18000 /* Buffer table in half buffer table - mode direct access by kernel driver */ -#else -#define BUF_HALF_TBL_KER_OFST 0x8000 /* Buffer table in half buffer table - mode direct access by kernel driver */ -#endif - - -#define BUF_HALF_TBL_OFST 0x800000 /* Buffer table in half buffer table mode - direct access by char driver */ - #define BUF_ADR_HBUF_ODD_LBN 44 - #define BUF_ADR_HBUF_ODD_WIDTH 20 - #define BUF_OWNER_ID_HBUF_ODD_LBN 32 - #define BUF_OWNER_ID_HBUF_ODD_WIDTH 12 - #define BUF_ADR_HBUF_EVEN_LBN 12 - #define BUF_ADR_HBUF_EVEN_WIDTH 20 - #define BUF_OWNER_ID_HBUF_EVEN_LBN 0 - #define BUF_OWNER_ID_HBUF_EVEN_WIDTH 12 - - -#if FALCON_EXTENDED_P_BAR -#define BUF_FULL_TBL_KER_OFST 0x18000 /* Buffer table in full buffer table - mode direct access by kernel driver */ -#else -#define BUF_FULL_TBL_KER_OFST 0x8000 /* Buffer table in full buffer table mode - direct access by kernel driver */ -#endif - - - - -#define BUF_FULL_TBL_OFST 0x800000 /* Buffer table in full buffer table mode - direct access by char driver */ - #define IP_DAT_BUF_SIZE_LBN 50 - #define IP_DAT_BUF_SIZE_WIDTH 1 - #define BUF_ADR_REGION_LBN 48 - #define BUF_ADR_REGION_WIDTH 2 - #define BUF_ADR_FBUF_LBN 14 - #define BUF_ADR_FBUF_WIDTH 34 - #define BUF_OWNER_ID_FBUF_LBN 0 - #define BUF_OWNER_ID_FBUF_WIDTH 14 -#define SRM_DBG_REG_OFST 0x3000000 /* SRAM debug access */ - #define SRM_DBG_LBN 0 - #define SRM_DBG_WIDTH 64 -/*************---- RX Datapath Registers C Header ----*************/ - -#define RX_CFG_REG_KER_OFST 0x800 /* Receive configuration register */ -#define RX_CFG_REG_OFST 0x800 /* Receive configuration register */ - -#if !defined(FALCON_64K_RXFIFO) && !defined(FALCON_PRE_02020029) -# if !defined(FALCON_128K_RXFIFO) -# define FALCON_128K_RXFIFO -# endif -#endif - -#if defined(FALCON_128K_RXFIFO) - -/* new for B0 */ - #define RX_TOEP_TCP_SUPPRESS_B0_LBN 48 - #define RX_TOEP_TCP_SUPPRESS_B0_WIDTH 1 - #define RX_INGR_EN_B0_LBN 47 - #define RX_INGR_EN_B0_WIDTH 1 - #define RX_TOEP_IPV4_B0_LBN 46 - #define RX_TOEP_IPV4_B0_WIDTH 1 - #define RX_HASH_ALG_B0_LBN 45 - #define RX_HASH_ALG_B0_WIDTH 1 - #define RX_HASH_INSERT_HDR_B0_LBN 44 - #define RX_HASH_INSERT_HDR_B0_WIDTH 1 -/* moved for B0 */ - #define RX_DESC_PUSH_EN_B0_LBN 43 - #define RX_DESC_PUSH_EN_B0_WIDTH 1 - #define RX_RDW_PATCH_EN_LBN 42 /* Non head of line blocking */ - #define RX_RDW_PATCH_EN_WIDTH 1 - #define RX_PCI_BURST_SIZE_B0_LBN 39 - #define RX_PCI_BURST_SIZE_B0_WIDTH 3 - #define RX_OWNERR_CTL_B0_LBN 38 - #define RX_OWNERR_CTL_B0_WIDTH 1 - #define RX_XON_TX_TH_B0_LBN 33 - #define RX_XON_TX_TH_B0_WIDTH 5 - #define RX_XOFF_TX_TH_B0_LBN 28 - #define RX_XOFF_TX_TH_B0_WIDTH 5 - #define RX_USR_BUF_SIZE_B0_LBN 19 - #define RX_USR_BUF_SIZE_B0_WIDTH 9 - #define RX_XON_MAC_TH_B0_LBN 10 - #define RX_XON_MAC_TH_B0_WIDTH 9 - #define RX_XOFF_MAC_TH_B0_LBN 1 - #define RX_XOFF_MAC_TH_B0_WIDTH 9 - #define RX_XOFF_MAC_EN_B0_LBN 0 - #define RX_XOFF_MAC_EN_B0_WIDTH 1 - -#elif !defined(FALCON_PRE_02020029) -/* new for B0 */ - #define RX_TOEP_TCP_SUPPRESS_B0_LBN 46 - #define RX_TOEP_TCP_SUPPRESS_B0_WIDTH 1 - #define RX_INGR_EN_B0_LBN 45 - #define RX_INGR_EN_B0_WIDTH 1 - #define RX_TOEP_IPV4_B0_LBN 44 - #define RX_TOEP_IPV4_B0_WIDTH 1 - #define RX_HASH_ALG_B0_LBN 43 - #define RX_HASH_ALG_B0_WIDTH 41 - #define RX_HASH_INSERT_HDR_B0_LBN 42 - #define RX_HASH_INSERT_HDR_B0_WIDTH 1 -/* moved for B0 */ - #define RX_DESC_PUSH_EN_B0_LBN 41 - #define RX_DESC_PUSH_EN_B0_WIDTH 1 - #define RX_PCI_BURST_SIZE_B0_LBN 37 - #define RX_PCI_BURST_SIZE_B0_WIDTH 3 - #define RX_OWNERR_CTL_B0_LBN 36 - #define RX_OWNERR_CTL_B0_WIDTH 1 - #define RX_XON_TX_TH_B0_LBN 31 - #define RX_XON_TX_TH_B0_WIDTH 5 - #define RX_XOFF_TX_TH_B0_LBN 26 - #define RX_XOFF_TX_TH_B0_WIDTH 5 - #define RX_USR_BUF_SIZE_B0_LBN 17 - #define RX_USR_BUF_SIZE_B0_WIDTH 9 - #define RX_XON_MAC_TH_B0_LBN 9 - #define RX_XON_MAC_TH_B0_WIDTH 8 - #define RX_XOFF_MAC_TH_B0_LBN 1 - #define RX_XOFF_MAC_TH_B0_WIDTH 8 - #define RX_XOFF_MAC_EN_B0_LBN 0 - #define RX_XOFF_MAC_EN_B0_WIDTH 1 - -#else -/* new for B0 */ - #define RX_TOEP_TCP_SUPPRESS_B0_LBN 44 - #define RX_TOEP_TCP_SUPPRESS_B0_WIDTH 1 - #define RX_INGR_EN_B0_LBN 43 - #define RX_INGR_EN_B0_WIDTH 1 - #define RX_TOEP_IPV4_B0_LBN 42 - #define RX_TOEP_IPV4_B0_WIDTH 1 - #define RX_HASH_ALG_B0_LBN 41 - #define RX_HASH_ALG_B0_WIDTH 41 - #define RX_HASH_INSERT_HDR_B0_LBN 40 - #define RX_HASH_INSERT_HDR_B0_WIDTH 1 -/* moved for B0 */ - #define RX_DESC_PUSH_EN_B0_LBN 35 - #define RX_DESC_PUSH_EN_B0_WIDTH 1 - #define RX_PCI_BURST_SIZE_B0_LBN 35 - #define RX_PCI_BURST_SIZE_B0_WIDTH 2 - #define RX_OWNERR_CTL_B0_LBN 34 - #define RX_OWNERR_CTL_B0_WIDTH 1 - #define RX_XON_TX_TH_B0_LBN 29 - #define RX_XON_TX_TH_B0_WIDTH 5 - #define RX_XOFF_TX_TH_B0_LBN 24 - #define RX_XOFF_TX_TH_B0_WIDTH 5 - #define RX_USR_BUF_SIZE_B0_LBN 15 - #define RX_USR_BUF_SIZE_B0_WIDTH 9 - #define RX_XON_MAC_TH_B0_LBN 8 - #define RX_XON_MAC_TH_B0_WIDTH 7 - #define RX_XOFF_MAC_TH_B0_LBN 1 - #define RX_XOFF_MAC_TH_B0_WIDTH 7 - #define RX_XOFF_MAC_EN_B0_LBN 0 - #define RX_XOFF_MAC_EN_B0_WIDTH 1 - -#endif - -/* A0/A1 */ - #define RX_PUSH_EN_A1_LBN 35 - #define RX_PUSH_EN_A1_WIDTH 1 - #define RX_PCI_BURST_SIZE_A1_LBN 31 - #define RX_PCI_BURST_SIZE_A1_WIDTH 3 - #define RX_OWNERR_CTL_A1_LBN 30 - #define RX_OWNERR_CTL_A1_WIDTH 1 - #define RX_XON_TX_TH_A1_LBN 25 - #define RX_XON_TX_TH_A1_WIDTH 5 - #define RX_XOFF_TX_TH_A1_LBN 20 - #define RX_XOFF_TX_TH_A1_WIDTH 5 - #define RX_USR_BUF_SIZE_A1_LBN 11 - #define RX_USR_BUF_SIZE_A1_WIDTH 9 - #define RX_XON_MAC_TH_A1_LBN 6 - #define RX_XON_MAC_TH_A1_WIDTH 5 - #define RX_XOFF_MAC_TH_A1_LBN 1 - #define RX_XOFF_MAC_TH_A1_WIDTH 5 - #define RX_XOFF_MAC_EN_A1_LBN 0 - #define RX_XOFF_MAC_EN_A1_WIDTH 1 - -#define RX_FILTER_CTL_REG_OFST 0x810 /* Receive filter control registers */ - #define SCATTER_ENBL_NO_MATCH_Q_B0_LBN 40 - #define SCATTER_ENBL_NO_MATCH_Q_B0_WIDTH 1 - #define UDP_FULL_SRCH_LIMIT_LBN 32 - #define UDP_FULL_SRCH_LIMIT_WIDTH 8 - #define NUM_KER_LBN 24 - #define NUM_KER_WIDTH 2 - #define UDP_WILD_SRCH_LIMIT_LBN 16 - #define UDP_WILD_SRCH_LIMIT_WIDTH 8 - #define TCP_WILD_SRCH_LIMIT_LBN 8 - #define TCP_WILD_SRCH_LIMIT_WIDTH 8 - #define TCP_FULL_SRCH_LIMIT_LBN 0 - #define TCP_FULL_SRCH_LIMIT_WIDTH 8 -#define RX_FLUSH_DESCQ_REG_KER_OFST 0x820 /* Receive flush descriptor queue - register */ -#define RX_FLUSH_DESCQ_REG_OFST 0x820 /* Receive flush descriptor queue - register */ - #define RX_FLUSH_DESCQ_CMD_LBN 24 - #define RX_FLUSH_DESCQ_CMD_WIDTH 1 - #define RX_FLUSH_EVQ_ID_LBN 12 - #define RX_FLUSH_EVQ_ID_WIDTH 12 - #define RX_FLUSH_DESCQ_LBN 0 - #define RX_FLUSH_DESCQ_WIDTH 12 -#define RX_DESC_UPD_REG_KER_OFST 0x830 /* Kernel receive descriptor update - register. Page-mapped */ -#define RX_DESC_UPD_REG_PAGE4_OFST 0x8830 /* Char & user receive descriptor - update register. Page-mapped. - For lowest 1K queues. */ -#define RX_DESC_UPD_REG_PAGE123K_OFST 0x1000830 /* Char & user receive - descriptor update register. - Page-mapped. For upper - 3K queues. */ - #define RX_DESC_WPTR_LBN 96 - #define RX_DESC_WPTR_WIDTH 12 - #define RX_DESC_PUSH_CMD_LBN 95 - #define RX_DESC_PUSH_CMD_WIDTH 1 - #define RX_DESC_LBN 0 - #define RX_DESC_WIDTH 64 - #define RX_KER_DESC_LBN 0 - #define RX_KER_DESC_WIDTH 64 - #define RX_USR_DESC_LBN 0 - #define RX_USR_DESC_WIDTH 32 -#define RX_DC_CFG_REG_KER_OFST 0x840 /* Receive descriptor cache - configuration register */ -#define RX_DC_CFG_REG_OFST 0x840 /* Receive descriptor cache - configuration register */ - #define RX_DC_SIZE_LBN 0 - #define RX_DC_SIZE_WIDTH 2 -#define RX_DC_PF_WM_REG_KER_OFST 0x850 /* Receive descriptor cache pre-fetch - watermark register */ -#define RX_DC_PF_WM_REG_OFST 0x850 /* Receive descriptor cache pre-fetch - watermark register */ - #define RX_DC_PF_LWM_LO_LBN 0 - #define RX_DC_PF_LWM_LO_WIDTH 6 - -#define RX_RSS_TKEY_B0_OFST 0x860 /* RSS Toeplitz hash key (B0 only) */ - -#define RX_NODESC_DROP_REG 0x880 - #define RX_NODESC_DROP_CNT_LBN 0 - #define RX_NODESC_DROP_CNT_WIDTH 16 - -#define XM_TX_CFG_REG_OFST 0x1230 - #define XM_AUTO_PAD_LBN 5 - #define XM_AUTO_PAD_WIDTH 1 - -#define RX_FILTER_TBL0_OFST 0xF00000 /* Receive filter table - even entries */ - #define RSS_EN_0_B0_LBN 110 - #define RSS_EN_0_B0_WIDTH 1 - #define SCATTER_EN_0_B0_LBN 109 - #define SCATTER_EN_0_B0_WIDTH 1 - #define TCP_UDP_0_LBN 108 - #define TCP_UDP_0_WIDTH 1 - #define RXQ_ID_0_LBN 96 - #define RXQ_ID_0_WIDTH 12 - #define DEST_IP_0_LBN 64 - #define DEST_IP_0_WIDTH 32 - #define DEST_PORT_TCP_0_LBN 48 - #define DEST_PORT_TCP_0_WIDTH 16 - #define SRC_IP_0_LBN 16 - #define SRC_IP_0_WIDTH 32 - #define SRC_TCP_DEST_UDP_0_LBN 0 - #define SRC_TCP_DEST_UDP_0_WIDTH 16 -#define RX_FILTER_TBL1_OFST 0xF00010 /* Receive filter table - odd entries */ - #define RSS_EN_1_B0_LBN 110 - #define RSS_EN_1_B0_WIDTH 1 - #define SCATTER_EN_1_B0_LBN 109 - #define SCATTER_EN_1_B0_WIDTH 1 - #define TCP_UDP_1_LBN 108 - #define TCP_UDP_1_WIDTH 1 - #define RXQ_ID_1_LBN 96 - #define RXQ_ID_1_WIDTH 12 - #define DEST_IP_1_LBN 64 - #define DEST_IP_1_WIDTH 32 - #define DEST_PORT_TCP_1_LBN 48 - #define DEST_PORT_TCP_1_WIDTH 16 - #define SRC_IP_1_LBN 16 - #define SRC_IP_1_WIDTH 32 - #define SRC_TCP_DEST_UDP_1_LBN 0 - #define SRC_TCP_DEST_UDP_1_WIDTH 16 - -#if FALCON_EXTENDED_P_BAR -#define RX_DESC_PTR_TBL_KER_OFST 0x11800 /* Receive descriptor pointer - kernel access */ -#else -#define RX_DESC_PTR_TBL_KER_OFST 0x1800 /* Receive descriptor pointer - kernel access */ -#endif - - -#define RX_DESC_PTR_TBL_OFST 0xF40000 /* Receive descriptor pointer table */ - #define RX_ISCSI_DDIG_EN_LBN 88 - #define RX_ISCSI_DDIG_EN_WIDTH 1 - #define RX_ISCSI_HDIG_EN_LBN 87 - #define RX_ISCSI_HDIG_EN_WIDTH 1 - #define RX_DESC_PREF_ACT_LBN 86 - #define RX_DESC_PREF_ACT_WIDTH 1 - #define RX_DC_HW_RPTR_LBN 80 - #define RX_DC_HW_RPTR_WIDTH 6 - #define RX_DESCQ_HW_RPTR_LBN 68 - #define RX_DESCQ_HW_RPTR_WIDTH 12 - #define RX_DESCQ_SW_WPTR_LBN 56 - #define RX_DESCQ_SW_WPTR_WIDTH 12 - #define RX_DESCQ_BUF_BASE_ID_LBN 36 - #define RX_DESCQ_BUF_BASE_ID_WIDTH 20 - #define RX_DESCQ_EVQ_ID_LBN 24 - #define RX_DESCQ_EVQ_ID_WIDTH 12 - #define RX_DESCQ_OWNER_ID_LBN 10 - #define RX_DESCQ_OWNER_ID_WIDTH 14 - #define RX_DESCQ_LABEL_LBN 5 - #define RX_DESCQ_LABEL_WIDTH 5 - #define RX_DESCQ_SIZE_LBN 3 - #define RX_DESCQ_SIZE_WIDTH 2 - #define RX_DESCQ_TYPE_LBN 2 - #define RX_DESCQ_TYPE_WIDTH 1 - #define RX_DESCQ_JUMBO_LBN 1 - #define RX_DESCQ_JUMBO_WIDTH 1 - #define RX_DESCQ_EN_LBN 0 - #define RX_DESCQ_EN_WIDTH 1 - - -#define RX_RSS_INDIR_TBL_B0_OFST 0xFB0000 /* RSS indirection table (B0 only) */ - #define RX_RSS_INDIR_ENT_B0_LBN 0 - #define RX_RSS_INDIR_ENT_B0_WIDTH 6 - -/*************---- TX Datapath Registers C Header ----*************/ -#define TX_FLUSH_DESCQ_REG_KER_OFST 0xA00 /* Transmit flush descriptor - queue register */ -#define TX_FLUSH_DESCQ_REG_OFST 0xA00 /* Transmit flush descriptor queue - register */ - #define TX_FLUSH_DESCQ_CMD_LBN 12 - #define TX_FLUSH_DESCQ_CMD_WIDTH 1 - #define TX_FLUSH_DESCQ_LBN 0 - #define TX_FLUSH_DESCQ_WIDTH 12 -#define TX_DESC_UPD_REG_KER_OFST 0xA10 /* Kernel transmit descriptor update - register. Page-mapped */ -#define TX_DESC_UPD_REG_PAGE4_OFST 0x8A10 /* Char & user transmit descriptor - update register. Page-mapped */ -#define TX_DESC_UPD_REG_PAGE123K_OFST 0x1000A10 /* Char & user transmit - descriptor update register. - Page-mapped */ - #define TX_DESC_WPTR_LBN 96 - #define TX_DESC_WPTR_WIDTH 12 - #define TX_DESC_PUSH_CMD_LBN 95 - #define TX_DESC_PUSH_CMD_WIDTH 1 - #define TX_DESC_LBN 0 - #define TX_DESC_WIDTH 95 - #define TX_KER_DESC_LBN 0 - #define TX_KER_DESC_WIDTH 64 - #define TX_USR_DESC_LBN 0 - #define TX_USR_DESC_WIDTH 64 -#define TX_DC_CFG_REG_KER_OFST 0xA20 /* Transmit descriptor cache - configuration register */ -#define TX_DC_CFG_REG_OFST 0xA20 /* Transmit descriptor cache configuration - register */ - #define TX_DC_SIZE_LBN 0 - #define TX_DC_SIZE_WIDTH 2 - -#if FALCON_EXTENDED_P_BAR -#define TX_DESC_PTR_TBL_KER_OFST 0x11900 /* Transmit descriptor pointer. */ -#else -#define TX_DESC_PTR_TBL_KER_OFST 0x1900 /* Transmit descriptor pointer. */ -#endif - - -#define TX_DESC_PTR_TBL_OFST 0xF50000 /* Transmit descriptor pointer */ - #define TX_NON_IP_DROP_DIS_B0_LBN 91 - #define TX_NON_IP_DROP_DIS_B0_WIDTH 1 - #define TX_IP_CHKSM_DIS_B0_LBN 90 - #define TX_IP_CHKSM_DIS_B0_WIDTH 1 - #define TX_TCP_CHKSM_DIS_B0_LBN 89 - #define TX_TCP_CHKSM_DIS_B0_WIDTH 1 - #define TX_DESCQ_EN_LBN 88 - #define TX_DESCQ_EN_WIDTH 1 - #define TX_ISCSI_DDIG_EN_LBN 87 - #define TX_ISCSI_DDIG_EN_WIDTH 1 - #define TX_ISCSI_HDIG_EN_LBN 86 - #define TX_ISCSI_HDIG_EN_WIDTH 1 - #define TX_DC_HW_RPTR_LBN 80 - #define TX_DC_HW_RPTR_WIDTH 6 - #define TX_DESCQ_HW_RPTR_LBN 68 - #define TX_DESCQ_HW_RPTR_WIDTH 12 - #define TX_DESCQ_SW_WPTR_LBN 56 - #define TX_DESCQ_SW_WPTR_WIDTH 12 - #define TX_DESCQ_BUF_BASE_ID_LBN 36 - #define TX_DESCQ_BUF_BASE_ID_WIDTH 20 - #define TX_DESCQ_EVQ_ID_LBN 24 - #define TX_DESCQ_EVQ_ID_WIDTH 12 - #define TX_DESCQ_OWNER_ID_LBN 10 - #define TX_DESCQ_OWNER_ID_WIDTH 14 - #define TX_DESCQ_LABEL_LBN 5 - #define TX_DESCQ_LABEL_WIDTH 5 - #define TX_DESCQ_SIZE_LBN 3 - #define TX_DESCQ_SIZE_WIDTH 2 - #define TX_DESCQ_TYPE_LBN 1 - #define TX_DESCQ_TYPE_WIDTH 2 - #define TX_DESCQ_FLUSH_LBN 0 - #define TX_DESCQ_FLUSH_WIDTH 1 -#define TX_CFG_REG_KER_OFST 0xA50 /* Transmit configuration register */ -#define TX_CFG_REG_OFST 0xA50 /* Transmit configuration register */ - #define TX_IP_ID_P1_OFS_LBN 32 - #define TX_IP_ID_P1_OFS_WIDTH 15 - #define TX_IP_ID_P0_OFS_LBN 16 - #define TX_IP_ID_P0_OFS_WIDTH 15 - #define TX_TURBO_EN_LBN 3 - #define TX_TURBO_EN_WIDTH 1 - #define TX_OWNERR_CTL_LBN 2 - #define TX_OWNERR_CTL_WIDTH 2 - #define TX_NON_IP_DROP_DIS_LBN 1 - #define TX_NON_IP_DROP_DIS_WIDTH 1 - #define TX_IP_ID_REP_EN_LBN 0 - #define TX_IP_ID_REP_EN_WIDTH 1 -#define TX_RESERVED_REG_KER_OFST 0xA80 /* Transmit configuration register */ -#define TX_RESERVED_REG_OFST 0xA80 /* Transmit configuration register */ - #define TX_CSR_PUSH_EN_LBN 89 - #define TX_CSR_PUSH_EN_WIDTH 1 - #define TX_RX_SPACER_LBN 64 - #define TX_RX_SPACER_WIDTH 8 - #define TX_SW_EV_EN_LBN 59 - #define TX_SW_EV_EN_WIDTH 1 - #define TX_RX_SPACER_EN_LBN 57 - #define TX_RX_SPACER_EN_WIDTH 1 - #define TX_CSR_PREF_WD_TMR_LBN 24 - #define TX_CSR_PREF_WD_TMR_WIDTH 16 - #define TX_CSR_ONLY1TAG_LBN 21 - #define TX_CSR_ONLY1TAG_WIDTH 1 - #define TX_PREF_THRESHOLD_LBN 19 - #define TX_PREF_THRESHOLD_WIDTH 2 - #define TX_ONE_PKT_PER_Q_LBN 18 - #define TX_ONE_PKT_PER_Q_WIDTH 1 - #define TX_DIS_NON_IP_EV_LBN 17 - #define TX_DIS_NON_IP_EV_WIDTH 1 - #define TX_DMA_SPACER_LBN 8 - #define TX_DMA_SPACER_WIDTH 8 - #define TX_FLUSH_MIN_LEN_EN_B0_LBN 7 - #define TX_FLUSH_MIN_LEN_EN_B0_WIDTH 1 - #define TX_TCP_DIS_A1_LBN 7 - #define TX_TCP_DIS_A1_WIDTH 1 - #define TX_IP_DIS_A1_LBN 6 - #define TX_IP_DIS_A1_WIDTH 1 - #define TX_MAX_CPL_LBN 2 - #define TX_MAX_CPL_WIDTH 2 - #define TX_MAX_PREF_LBN 0 - #define TX_MAX_PREF_WIDTH 2 -#define TX_VLAN_REG_OFST 0xAE0 /* Transmit VLAN tag register */ - #define TX_VLAN_EN_LBN 127 - #define TX_VLAN_EN_WIDTH 1 - #define TX_VLAN7_PORT1_EN_LBN 125 - #define TX_VLAN7_PORT1_EN_WIDTH 1 - #define TX_VLAN7_PORT0_EN_LBN 124 - #define TX_VLAN7_PORT0_EN_WIDTH 1 - #define TX_VLAN7_LBN 112 - #define TX_VLAN7_WIDTH 12 - #define TX_VLAN6_PORT1_EN_LBN 109 - #define TX_VLAN6_PORT1_EN_WIDTH 1 - #define TX_VLAN6_PORT0_EN_LBN 108 - #define TX_VLAN6_PORT0_EN_WIDTH 1 - #define TX_VLAN6_LBN 96 - #define TX_VLAN6_WIDTH 12 - #define TX_VLAN5_PORT1_EN_LBN 93 - #define TX_VLAN5_PORT1_EN_WIDTH 1 - #define TX_VLAN5_PORT0_EN_LBN 92 - #define TX_VLAN5_PORT0_EN_WIDTH 1 - #define TX_VLAN5_LBN 80 - #define TX_VLAN5_WIDTH 12 - #define TX_VLAN4_PORT1_EN_LBN 77 - #define TX_VLAN4_PORT1_EN_WIDTH 1 - #define TX_VLAN4_PORT0_EN_LBN 76 - #define TX_VLAN4_PORT0_EN_WIDTH 1 - #define TX_VLAN4_LBN 64 - #define TX_VLAN4_WIDTH 12 - #define TX_VLAN3_PORT1_EN_LBN 61 - #define TX_VLAN3_PORT1_EN_WIDTH 1 - #define TX_VLAN3_PORT0_EN_LBN 60 - #define TX_VLAN3_PORT0_EN_WIDTH 1 - #define TX_VLAN3_LBN 48 - #define TX_VLAN3_WIDTH 12 - #define TX_VLAN2_PORT1_EN_LBN 45 - #define TX_VLAN2_PORT1_EN_WIDTH 1 - #define TX_VLAN2_PORT0_EN_LBN 44 - #define TX_VLAN2_PORT0_EN_WIDTH 1 - #define TX_VLAN2_LBN 32 - #define TX_VLAN2_WIDTH 12 - #define TX_VLAN1_PORT1_EN_LBN 29 - #define TX_VLAN1_PORT1_EN_WIDTH 1 - #define TX_VLAN1_PORT0_EN_LBN 28 - #define TX_VLAN1_PORT0_EN_WIDTH 1 - #define TX_VLAN1_LBN 16 - #define TX_VLAN1_WIDTH 12 - #define TX_VLAN0_PORT1_EN_LBN 13 - #define TX_VLAN0_PORT1_EN_WIDTH 1 - #define TX_VLAN0_PORT0_EN_LBN 12 - #define TX_VLAN0_PORT0_EN_WIDTH 1 - #define TX_VLAN0_LBN 0 - #define TX_VLAN0_WIDTH 12 -#define TX_FIL_CTL_REG_OFST 0xAF0 /* Transmit filter control register */ - #define TX_MADR1_FIL_EN_LBN 65 - #define TX_MADR1_FIL_EN_WIDTH 1 - #define TX_MADR0_FIL_EN_LBN 64 - #define TX_MADR0_FIL_EN_WIDTH 1 - #define TX_IPFIL31_PORT1_EN_LBN 63 - #define TX_IPFIL31_PORT1_EN_WIDTH 1 - #define TX_IPFIL31_PORT0_EN_LBN 62 - #define TX_IPFIL31_PORT0_EN_WIDTH 1 - #define TX_IPFIL30_PORT1_EN_LBN 61 - #define TX_IPFIL30_PORT1_EN_WIDTH 1 - #define TX_IPFIL30_PORT0_EN_LBN 60 - #define TX_IPFIL30_PORT0_EN_WIDTH 1 - #define TX_IPFIL29_PORT1_EN_LBN 59 - #define TX_IPFIL29_PORT1_EN_WIDTH 1 - #define TX_IPFIL29_PORT0_EN_LBN 58 - #define TX_IPFIL29_PORT0_EN_WIDTH 1 - #define TX_IPFIL28_PORT1_EN_LBN 57 - #define TX_IPFIL28_PORT1_EN_WIDTH 1 - #define TX_IPFIL28_PORT0_EN_LBN 56 - #define TX_IPFIL28_PORT0_EN_WIDTH 1 - #define TX_IPFIL27_PORT1_EN_LBN 55 - #define TX_IPFIL27_PORT1_EN_WIDTH 1 - #define TX_IPFIL27_PORT0_EN_LBN 54 - #define TX_IPFIL27_PORT0_EN_WIDTH 1 - #define TX_IPFIL26_PORT1_EN_LBN 53 - #define TX_IPFIL26_PORT1_EN_WIDTH 1 - #define TX_IPFIL26_PORT0_EN_LBN 52 - #define TX_IPFIL26_PORT0_EN_WIDTH 1 - #define TX_IPFIL25_PORT1_EN_LBN 51 - #define TX_IPFIL25_PORT1_EN_WIDTH 1 - #define TX_IPFIL25_PORT0_EN_LBN 50 - #define TX_IPFIL25_PORT0_EN_WIDTH 1 - #define TX_IPFIL24_PORT1_EN_LBN 49 - #define TX_IPFIL24_PORT1_EN_WIDTH 1 - #define TX_IPFIL24_PORT0_EN_LBN 48 - #define TX_IPFIL24_PORT0_EN_WIDTH 1 - #define TX_IPFIL23_PORT1_EN_LBN 47 - #define TX_IPFIL23_PORT1_EN_WIDTH 1 - #define TX_IPFIL23_PORT0_EN_LBN 46 - #define TX_IPFIL23_PORT0_EN_WIDTH 1 - #define TX_IPFIL22_PORT1_EN_LBN 45 - #define TX_IPFIL22_PORT1_EN_WIDTH 1 - #define TX_IPFIL22_PORT0_EN_LBN 44 - #define TX_IPFIL22_PORT0_EN_WIDTH 1 - #define TX_IPFIL21_PORT1_EN_LBN 43 - #define TX_IPFIL21_PORT1_EN_WIDTH 1 - #define TX_IPFIL21_PORT0_EN_LBN 42 - #define TX_IPFIL21_PORT0_EN_WIDTH 1 - #define TX_IPFIL20_PORT1_EN_LBN 41 - #define TX_IPFIL20_PORT1_EN_WIDTH 1 - #define TX_IPFIL20_PORT0_EN_LBN 40 - #define TX_IPFIL20_PORT0_EN_WIDTH 1 - #define TX_IPFIL19_PORT1_EN_LBN 39 - #define TX_IPFIL19_PORT1_EN_WIDTH 1 - #define TX_IPFIL19_PORT0_EN_LBN 38 - #define TX_IPFIL19_PORT0_EN_WIDTH 1 - #define TX_IPFIL18_PORT1_EN_LBN 37 - #define TX_IPFIL18_PORT1_EN_WIDTH 1 - #define TX_IPFIL18_PORT0_EN_LBN 36 - #define TX_IPFIL18_PORT0_EN_WIDTH 1 - #define TX_IPFIL17_PORT1_EN_LBN 35 - #define TX_IPFIL17_PORT1_EN_WIDTH 1 - #define TX_IPFIL17_PORT0_EN_LBN 34 - #define TX_IPFIL17_PORT0_EN_WIDTH 1 - #define TX_IPFIL16_PORT1_EN_LBN 33 - #define TX_IPFIL16_PORT1_EN_WIDTH 1 - #define TX_IPFIL16_PORT0_EN_LBN 32 - #define TX_IPFIL16_PORT0_EN_WIDTH 1 - #define TX_IPFIL15_PORT1_EN_LBN 31 - #define TX_IPFIL15_PORT1_EN_WIDTH 1 - #define TX_IPFIL15_PORT0_EN_LBN 30 - #define TX_IPFIL15_PORT0_EN_WIDTH 1 - #define TX_IPFIL14_PORT1_EN_LBN 29 - #define TX_IPFIL14_PORT1_EN_WIDTH 1 - #define TX_IPFIL14_PORT0_EN_LBN 28 - #define TX_IPFIL14_PORT0_EN_WIDTH 1 - #define TX_IPFIL13_PORT1_EN_LBN 27 - #define TX_IPFIL13_PORT1_EN_WIDTH 1 - #define TX_IPFIL13_PORT0_EN_LBN 26 - #define TX_IPFIL13_PORT0_EN_WIDTH 1 - #define TX_IPFIL12_PORT1_EN_LBN 25 - #define TX_IPFIL12_PORT1_EN_WIDTH 1 - #define TX_IPFIL12_PORT0_EN_LBN 24 - #define TX_IPFIL12_PORT0_EN_WIDTH 1 - #define TX_IPFIL11_PORT1_EN_LBN 23 - #define TX_IPFIL11_PORT1_EN_WIDTH 1 - #define TX_IPFIL11_PORT0_EN_LBN 22 - #define TX_IPFIL11_PORT0_EN_WIDTH 1 - #define TX_IPFIL10_PORT1_EN_LBN 21 - #define TX_IPFIL10_PORT1_EN_WIDTH 1 - #define TX_IPFIL10_PORT0_EN_LBN 20 - #define TX_IPFIL10_PORT0_EN_WIDTH 1 - #define TX_IPFIL9_PORT1_EN_LBN 19 - #define TX_IPFIL9_PORT1_EN_WIDTH 1 - #define TX_IPFIL9_PORT0_EN_LBN 18 - #define TX_IPFIL9_PORT0_EN_WIDTH 1 - #define TX_IPFIL8_PORT1_EN_LBN 17 - #define TX_IPFIL8_PORT1_EN_WIDTH 1 - #define TX_IPFIL8_PORT0_EN_LBN 16 - #define TX_IPFIL8_PORT0_EN_WIDTH 1 - #define TX_IPFIL7_PORT1_EN_LBN 15 - #define TX_IPFIL7_PORT1_EN_WIDTH 1 - #define TX_IPFIL7_PORT0_EN_LBN 14 - #define TX_IPFIL7_PORT0_EN_WIDTH 1 - #define TX_IPFIL6_PORT1_EN_LBN 13 - #define TX_IPFIL6_PORT1_EN_WIDTH 1 - #define TX_IPFIL6_PORT0_EN_LBN 12 - #define TX_IPFIL6_PORT0_EN_WIDTH 1 - #define TX_IPFIL5_PORT1_EN_LBN 11 - #define TX_IPFIL5_PORT1_EN_WIDTH 1 - #define TX_IPFIL5_PORT0_EN_LBN 10 - #define TX_IPFIL5_PORT0_EN_WIDTH 1 - #define TX_IPFIL4_PORT1_EN_LBN 9 - #define TX_IPFIL4_PORT1_EN_WIDTH 1 - #define TX_IPFIL4_PORT0_EN_LBN 8 - #define TX_IPFIL4_PORT0_EN_WIDTH 1 - #define TX_IPFIL3_PORT1_EN_LBN 7 - #define TX_IPFIL3_PORT1_EN_WIDTH 1 - #define TX_IPFIL3_PORT0_EN_LBN 6 - #define TX_IPFIL3_PORT0_EN_WIDTH 1 - #define TX_IPFIL2_PORT1_EN_LBN 5 - #define TX_IPFIL2_PORT1_EN_WIDTH 1 - #define TX_IPFIL2_PORT0_EN_LBN 4 - #define TX_IPFIL2_PORT0_EN_WIDTH 1 - #define TX_IPFIL1_PORT1_EN_LBN 3 - #define TX_IPFIL1_PORT1_EN_WIDTH 1 - #define TX_IPFIL1_PORT0_EN_LBN 2 - #define TX_IPFIL1_PORT0_EN_WIDTH 1 - #define TX_IPFIL0_PORT1_EN_LBN 1 - #define TX_IPFIL0_PORT1_EN_WIDTH 1 - #define TX_IPFIL0_PORT0_EN_LBN 0 - #define TX_IPFIL0_PORT0_EN_WIDTH 1 -#define TX_IPFIL_TBL_OFST 0xB00 /* Transmit IP source address filter table */ - #define TX_IPFIL_MASK_LBN 32 - #define TX_IPFIL_MASK_WIDTH 32 - #define TX_IP_SRC_ADR_LBN 0 - #define TX_IP_SRC_ADR_WIDTH 32 -#define TX_PACE_REG_A1_OFST 0xF80000 /* Transmit pace control register */ -#define TX_PACE_REG_B0_OFST 0xA90 /* Transmit pace control register */ - #define TX_PACE_SB_AF_LBN 19 - #define TX_PACE_SB_AF_WIDTH 10 - #define TX_PACE_SB_NOTAF_LBN 9 - #define TX_PACE_SB_NOTAF_WIDTH 10 - #define TX_PACE_FB_BASE_LBN 5 - #define TX_PACE_FB_BASE_WIDTH 4 - #define TX_PACE_BIN_TH_LBN 0 - #define TX_PACE_BIN_TH_WIDTH 5 -#define TX_PACE_TBL_A1_OFST 0xF80040 /* Transmit pacing table */ -#define TX_PACE_TBL_FIRST_QUEUE_A1 4 -#define TX_PACE_TBL_B0_OFST 0xF80000 /* Transmit pacing table */ -#define TX_PACE_TBL_FIRST_QUEUE_B0 0 - #define TX_PACE_LBN 0 - #define TX_PACE_WIDTH 5 - -/*************---- EE/Flash Registers C Header ----*************/ -#define EE_SPI_HCMD_REG_KER_OFST 0x100 /* SPI host command register */ -#define EE_SPI_HCMD_REG_OFST 0x100 /* SPI host command register */ - #define EE_SPI_HCMD_CMD_EN_LBN 31 - #define EE_SPI_HCMD_CMD_EN_WIDTH 1 - #define EE_WR_TIMER_ACTIVE_LBN 28 - #define EE_WR_TIMER_ACTIVE_WIDTH 1 - #define EE_SPI_HCMD_SF_SEL_LBN 24 - #define EE_SPI_HCMD_SF_SEL_WIDTH 1 - #define EE_SPI_HCMD_DABCNT_LBN 16 - #define EE_SPI_HCMD_DABCNT_WIDTH 5 - #define EE_SPI_HCMD_READ_LBN 15 - #define EE_SPI_HCMD_READ_WIDTH 1 - #define EE_SPI_HCMD_DUBCNT_LBN 12 - #define EE_SPI_HCMD_DUBCNT_WIDTH 2 - #define EE_SPI_HCMD_ADBCNT_LBN 8 - #define EE_SPI_HCMD_ADBCNT_WIDTH 2 - #define EE_SPI_HCMD_ENC_LBN 0 - #define EE_SPI_HCMD_ENC_WIDTH 8 -#define EE_SPI_HADR_REG_KER_OFST 0X110 /* SPI host address register */ -#define EE_SPI_HADR_REG_OFST 0X110 /* SPI host address register */ - #define EE_SPI_HADR_DUBYTE_LBN 24 - #define EE_SPI_HADR_DUBYTE_WIDTH 8 - #define EE_SPI_HADR_ADR_LBN 0 - #define EE_SPI_HADR_ADR_WIDTH 24 -#define EE_SPI_HDATA_REG_KER_OFST 0x120 /* SPI host data register */ -#define EE_SPI_HDATA_REG_OFST 0x120 /* SPI host data register */ - #define EE_SPI_HDATA3_LBN 96 - #define EE_SPI_HDATA3_WIDTH 32 - #define EE_SPI_HDATA2_LBN 64 - #define EE_SPI_HDATA2_WIDTH 32 - #define EE_SPI_HDATA1_LBN 32 - #define EE_SPI_HDATA1_WIDTH 32 - #define EE_SPI_HDATA0_LBN 0 - #define EE_SPI_HDATA0_WIDTH 32 -#define EE_BASE_PAGE_REG_KER_OFST 0x130 /* Expansion ROM base mirror register */ -#define EE_BASE_PAGE_REG_OFST 0x130 /* Expansion ROM base mirror register */ - #define EE_EXP_ROM_WINDOW_BASE_LBN 16 - #define EE_EXP_ROM_WINDOW_BASE_WIDTH 13 - #define EE_EXPROM_MASK_LBN 0 - #define EE_EXPROM_MASK_WIDTH 13 -#define EE_VPD_CFG0_REG_KER_OFST 0X140 /* SPI/VPD configuration register */ -#define EE_VPD_CFG0_REG_OFST 0X140 /* SPI/VPD configuration register */ - #define EE_SF_FASTRD_EN_LBN 127 - #define EE_SF_FASTRD_EN_WIDTH 1 - #define EE_SF_CLOCK_DIV_LBN 120 - #define EE_SF_CLOCK_DIV_WIDTH 7 - #define EE_VPD_WIP_POLL_LBN 119 - #define EE_VPD_WIP_POLL_WIDTH 1 - #define EE_VPDW_LENGTH_LBN 80 - #define EE_VPDW_LENGTH_WIDTH 15 - #define EE_VPDW_BASE_LBN 64 - #define EE_VPDW_BASE_WIDTH 15 - #define EE_VPD_WR_CMD_EN_LBN 56 - #define EE_VPD_WR_CMD_EN_WIDTH 8 - #define EE_VPD_BASE_LBN 32 - #define EE_VPD_BASE_WIDTH 24 - #define EE_VPD_LENGTH_LBN 16 - #define EE_VPD_LENGTH_WIDTH 13 - #define EE_VPD_AD_SIZE_LBN 8 - #define EE_VPD_AD_SIZE_WIDTH 5 - #define EE_VPD_ACCESS_ON_LBN 5 - #define EE_VPD_ACCESS_ON_WIDTH 1 -#define EE_VPD_SW_CNTL_REG_KER_OFST 0X150 /* VPD access SW control register */ -#define EE_VPD_SW_CNTL_REG_OFST 0X150 /* VPD access SW control register */ - #define EE_VPD_CYCLE_PENDING_LBN 31 - #define EE_VPD_CYCLE_PENDING_WIDTH 1 - #define EE_VPD_CYC_WRITE_LBN 28 - #define EE_VPD_CYC_WRITE_WIDTH 1 - #define EE_VPD_CYC_ADR_LBN 0 - #define EE_VPD_CYC_ADR_WIDTH 15 -#define EE_VPD_SW_DATA_REG_KER_OFST 0x160 /* VPD access SW data register */ -#define EE_VPD_SW_DATA_REG_OFST 0x160 /* VPD access SW data register */ - #define EE_VPD_CYC_DAT_LBN 0 - #define EE_VPD_CYC_DAT_WIDTH 32 diff -r 0b5ca7cdbdfc -r b8c2a9aacba6 drivers/net/sfc/sfc_resource/ci/driver/efab/hardware/falcon/falcon_desc.h --- a/drivers/net/sfc/sfc_resource/ci/driver/efab/hardware/falcon/falcon_desc.h Fri Jan 08 13:05:49 2010 +0000 +++ b/drivers/net/sfc/sfc_resource/ci/driver/efab/hardware/falcon/falcon_desc.h Fri Jan 08 13:06:22 2010 +0000 @@ -6,7 +6,7 @@ * This file provides EtherFabric NIC - EFXXXX (aka Falcon) descriptor * definitions. * - * Copyright 2005-2007: Solarflare Communications Inc, + * Copyright 2005-2010: Solarflare Communications Inc, * 9501 Jeronimo Road, Suite 250, * Irvine, CA 92618, USA * diff -r 0b5ca7cdbdfc -r b8c2a9aacba6 drivers/net/sfc/sfc_resource/ci/driver/efab/hardware/falcon/falcon_event.h --- a/drivers/net/sfc/sfc_resource/ci/driver/efab/hardware/falcon/falcon_event.h Fri Jan 08 13:05:49 2010 +0000 +++ b/drivers/net/sfc/sfc_resource/ci/driver/efab/hardware/falcon/falcon_event.h Fri Jan 08 13:06:22 2010 +0000 @@ -6,7 +6,7 @@ * This file provides EtherFabric NIC - EFXXXX (aka Falcon) event * definitions. * - * Copyright 2005-2007: Solarflare Communications Inc, + * Copyright 2005-2010: Solarflare Communications Inc, * 9501 Jeronimo Road, Suite 250, * Irvine, CA 92618, USA * @@ -126,6 +126,8 @@ #define TX_PKT_NON_TCP_UDP_DECODE 0x9 #define TIMER_EV_DECODE 0xA #define RX_DSC_ERROR_EV_DECODE 0xE + #define DRIVER_EV_RX_FLUSH_FAIL_LBN 12 + #define DRIVER_EV_RX_FLUSH_FAIL_WIDTH 1 #define DRIVER_EV_TX_DESCQ_ID_LBN 0 #define DRIVER_EV_TX_DESCQ_ID_WIDTH 12 #define DRIVER_EV_RX_DESCQ_ID_LBN 0 diff -r 0b5ca7cdbdfc -r b8c2a9aacba6 drivers/net/sfc/sfc_resource/ci/driver/efab/hardware/falcon/falcon_grmon.h --- a/drivers/net/sfc/sfc_resource/ci/driver/efab/hardware/falcon/falcon_grmon.h Fri Jan 08 13:05:49 2010 +0000 +++ b/drivers/net/sfc/sfc_resource/ci/driver/efab/hardware/falcon/falcon_grmon.h Fri Jan 08 13:06:22 2010 +0000 @@ -6,7 +6,7 @@ * This file provides EtherFabric NIC - EFXXXX (aka Falcon) 1G MAC * counters. * - * Copyright 2005-2007: Solarflare Communications Inc, + * Copyright 2005-2010: Solarflare Communications Inc, * 9501 Jeronimo Road, Suite 250, * Irvine, CA 92618, USA * diff -r 0b5ca7cdbdfc -r b8c2a9aacba6 drivers/net/sfc/sfc_resource/ci/driver/efab/hardware/falcon/falcon_intr_vec.h --- a/drivers/net/sfc/sfc_resource/ci/driver/efab/hardware/falcon/falcon_intr_vec.h Fri Jan 08 13:05:49 2010 +0000 +++ b/drivers/net/sfc/sfc_resource/ci/driver/efab/hardware/falcon/falcon_intr_vec.h Fri Jan 08 13:06:22 2010 +0000 @@ -6,7 +6,7 @@ * This file provides EtherFabric NIC - EFXXXX (aka Falcon) interrupt * vector definitions. * - * Copyright 2005-2007: Solarflare Communications Inc, + * Copyright 2005-2010: Solarflare Communications Inc, * 9501 Jeronimo Road, Suite 250, * Irvine, CA 92618, USA * diff -r 0b5ca7cdbdfc -r b8c2a9aacba6 drivers/net/sfc/sfc_resource/ci/driver/efab/hardware/falcon/falcon_mac.h --- a/drivers/net/sfc/sfc_resource/ci/driver/efab/hardware/falcon/falcon_mac.h Fri Jan 08 13:05:49 2010 +0000 +++ b/drivers/net/sfc/sfc_resource/ci/driver/efab/hardware/falcon/falcon_mac.h Fri Jan 08 13:06:22 2010 +0000 @@ -6,7 +6,7 @@ * This file provides EtherFabric NIC - EFXXXX (aka Falcon) MAC register * definitions. * - * Copyright 2005-2007: Solarflare Communications Inc, + * Copyright 2005-2010: Solarflare Communications Inc, * 9501 Jeronimo Road, Suite 250, * Irvine, CA 92618, USA * @@ -29,6 +29,7 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA **************************************************************************** */ +#ifdef USE_OLD_HWDEFS /*********---- 1G/10G Ethernet MAC Wrapper Registers C Header ----*********/ #define MD_TXD_REG_KER_OFST 0xC00 /* PHY management transmit data register */ @@ -709,3 +710,4 @@ #define XX_DISPERR_CH1_WIDTH 1 #define XX_DISPERR_CH0_LBN 0 #define XX_DISPERR_CH0_WIDTH 1 +#endif diff -r 0b5ca7cdbdfc -r b8c2a9aacba6 drivers/net/sfc/sfc_resource/ci/driver/efab/hardware/falcon/falcon_xgrmon.h --- a/drivers/net/sfc/sfc_resource/ci/driver/efab/hardware/falcon/falcon_xgrmon.h Fri Jan 08 13:05:49 2010 +0000 +++ b/drivers/net/sfc/sfc_resource/ci/driver/efab/hardware/falcon/falcon_xgrmon.h Fri Jan 08 13:06:22 2010 +0000 @@ -6,7 +6,7 @@ * This file provides EtherFabric NIC - EFXXXX (aka Falcon) 10G MAC * statistics register definitions. * - * Copyright 2005-2007: Solarflare Communications Inc, + * Copyright 2005-2010: Solarflare Communications Inc, * 9501 Jeronimo Road, Suite 250, * Irvine, CA 92618, USA * diff -r 0b5ca7cdbdfc -r b8c2a9aacba6 drivers/net/sfc/sfc_resource/ci/driver/efab/hardware/host_common.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/drivers/net/sfc/sfc_resource/ci/driver/efab/hardware/host_common.h Fri Jan 08 13:06:22 2010 +0000 @@ -0,0 +1,2850 @@ +/**************************************************************************** + * Driver for Solarflare network controllers - + * resource management for Xen backend, OpenOnload, etc + * (including support for SFE4001 10GBT NIC) + * + * This file provides EtherFabric NIC hardware interface common + * definitions. + * + * Copyright 2005-2010: Solarflare Communications Inc, + * 9501 Jeronimo Road, Suite 250, + * Irvine, CA 92618, USA + * + * Developed and maintained by Solarflare Communications: + * <linux-xen-drivers@xxxxxxxxxxxxxx> + * <onload-dev@xxxxxxxxxxxxxx> + * + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 as published + * by the Free Software Foundation, incorporated herein by reference. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + **************************************************************************** + */ + +#ifndef HOST_PROGMODEL_DEFS_H +#define HOST_PROGMODEL_DEFS_H + +/*------------------------------------------------------------*/ +/* + * FR_AZ_IOM_IND_ADR_REG(32bit): + * IO-mapped indirect access address register + */ +#define FR_AZ_IOM_IND_ADR_REG_OFST 0x00000000 +/* falcona0,falconb0,sienaa0=net_func_bar0 */ + +#define FRF_AZ_IOM_AUTO_ADR_INC_EN_LBN 24 +#define FRF_AZ_IOM_AUTO_ADR_INC_EN_WIDTH 1 +#define FRF_AZ_IOM_IND_ADR_LBN 0 +#define FRF_AZ_IOM_IND_ADR_WIDTH 24 + + +/*------------------------------------------------------------*/ +/* + * FR_AZ_IOM_IND_DAT_REG(32bit): + * IO-mapped indirect access data register + */ +#define FR_AZ_IOM_IND_DAT_REG_OFST 0x00000004 +/* falcona0,falconb0,sienaa0=net_func_bar0 */ + +#define FRF_AZ_IOM_IND_DAT_LBN 0 +#define FRF_AZ_IOM_IND_DAT_WIDTH 32 + + +/*------------------------------------------------------------*/ +/* + * FR_AZ_ADR_REGION_REG(128bit): + * Address region register + */ +#define FR_AZ_ADR_REGION_REG_OFST 0x00000000 +/* falcona0,falconb0,sienaa0=net_func_bar2,falcona0=char_func_bar0 */ + +#define FRF_AZ_ADR_REGION3_LBN 96 +#define FRF_AZ_ADR_REGION3_WIDTH 18 +#define FRF_AZ_ADR_REGION2_LBN 64 +#define FRF_AZ_ADR_REGION2_WIDTH 18 +#define FRF_AZ_ADR_REGION1_LBN 32 +#define FRF_AZ_ADR_REGION1_WIDTH 18 +#define FRF_AZ_ADR_REGION0_LBN 0 +#define FRF_AZ_ADR_REGION0_WIDTH 18 + + +/*------------------------------------------------------------*/ +/* + * FR_AZ_INT_EN_REG_KER(128bit): + * Kernel driver Interrupt enable register + */ +#define FR_AZ_INT_EN_REG_KER_OFST 0x00000010 +/* falcona0,falconb0,sienaa0=net_func_bar2 */ + +#define FRF_AZ_KER_INT_LEVE_SEL_LBN 8 +#define FRF_AZ_KER_INT_LEVE_SEL_WIDTH 6 +#define FRF_AZ_KER_INT_CHAR_LBN 4 +#define FRF_AZ_KER_INT_CHAR_WIDTH 1 +#define FRF_AZ_KER_INT_KER_LBN 3 +#define FRF_AZ_KER_INT_KER_WIDTH 1 +#define FRF_AZ_DRV_INT_EN_KER_LBN 0 +#define FRF_AZ_DRV_INT_EN_KER_WIDTH 1 + + +/*------------------------------------------------------------*/ +/* + * FR_AZ_INT_EN_REG_CHAR(128bit): + * Char Driver interrupt enable register + */ +#define FR_AZ_INT_EN_REG_CHAR_OFST 0x00000020 +/* falconb0,sienaa0=net_func_bar2,falcona0=char_func_bar0 */ + +#define FRF_AZ_CHAR_INT_LEVE_SEL_LBN 8 +#define FRF_AZ_CHAR_INT_LEVE_SEL_WIDTH 6 +#define FRF_AZ_CHAR_INT_CHAR_LBN 4 +#define FRF_AZ_CHAR_INT_CHAR_WIDTH 1 +#define FRF_AZ_CHAR_INT_KER_LBN 3 +#define FRF_AZ_CHAR_INT_KER_WIDTH 1 +#define FRF_AZ_DRV_INT_EN_CHAR_LBN 0 +#define FRF_AZ_DRV_INT_EN_CHAR_WIDTH 1 + + +/*------------------------------------------------------------*/ +/* + * FR_AZ_INT_ADR_REG_KER(128bit): + * Interrupt host address for Kernel driver + */ +#define FR_AZ_INT_ADR_REG_KER_OFST 0x00000030 +/* falcona0,falconb0,sienaa0=net_func_bar2 */ + +#define FRF_AZ_NORM_INT_VEC_DIS_KER_LBN 64 +#define FRF_AZ_NORM_INT_VEC_DIS_KER_WIDTH 1 +#define FRF_AZ_INT_ADR_KER_LBN 0 +#define FRF_AZ_INT_ADR_KER_WIDTH 64 + + +/*------------------------------------------------------------*/ +/* + * FR_AZ_INT_ADR_REG_CHAR(128bit): + * Interrupt host address for Char driver + */ +#define FR_AZ_INT_ADR_REG_CHAR_OFST 0x00000040 +/* falconb0,sienaa0=net_func_bar2,falcona0=char_func_bar0 */ + +#define FRF_AZ_NORM_INT_VEC_DIS_CHAR_LBN 64 +#define FRF_AZ_NORM_INT_VEC_DIS_CHAR_WIDTH 1 +#define FRF_AZ_INT_ADR_CHAR_LBN 0 +#define FRF_AZ_INT_ADR_CHAR_WIDTH 64 + + +/*------------------------------------------------------------*/ +/* + * FR_AA_INT_ACK_KER(32bit): + * Kernel interrupt acknowledge register + */ +#define FR_AA_INT_ACK_KER_OFST 0x00000050 +/* falcona0=net_func_bar2 */ + +#define FRF_AA_INT_ACK_KER_FIELD_LBN 0 +#define FRF_AA_INT_ACK_KER_FIELD_WIDTH 32 + + +/*------------------------------------------------------------*/ +/* + * FR_BZ_INT_ISR0_REG(128bit): + * Function 0 Interrupt Acknowlege Status register + */ +#define FR_BZ_INT_ISR0_REG_OFST 0x00000090 +/* falconb0,sienaa0=net_func_bar2 */ + +#define FRF_BZ_INT_ISR_REG_LBN 0 +#define FRF_BZ_INT_ISR_REG_WIDTH 64 + + +/*------------------------------------------------------------*/ +/* + * FR_AZ_HW_INIT_REG(128bit): + * Hardware initialization register + */ +#define FR_AZ_HW_INIT_REG_OFST 0x000000c0 +/* falcona0,falconb0,sienaa0=net_func_bar2,falcona0=char_func_bar0 */ + +#define FRF_BB_BDMRD_CPLF_FULL_LBN 124 +#define FRF_BB_BDMRD_CPLF_FULL_WIDTH 1 +#define FRF_BB_PCIE_CPL_TIMEOUT_CTRL_LBN 121 +#define FRF_BB_PCIE_CPL_TIMEOUT_CTRL_WIDTH 3 +#define FRF_CZ_TX_MRG_TAGS_LBN 120 +#define FRF_CZ_TX_MRG_TAGS_WIDTH 1 +#define FRF_AB_TRGT_MASK_ALL_LBN 100 +#define FRF_AB_TRGT_MASK_ALL_WIDTH 1 +#define FRF_AZ_DOORBELL_DROP_LBN 92 +#define FRF_AZ_DOORBELL_DROP_WIDTH 8 +#define FRF_AB_TX_RREQ_MASK_EN_LBN 76 +#define FRF_AB_TX_RREQ_MASK_EN_WIDTH 1 +#define FRF_AB_PE_EIDLE_DIS_LBN 75 +#define FRF_AB_PE_EIDLE_DIS_WIDTH 1 +#define FRF_AA_FC_BLOCKING_EN_LBN 45 +#define FRF_AA_FC_BLOCKING_EN_WIDTH 1 +#define FRF_BZ_B2B_REQ_EN_LBN 45 +#define FRF_BZ_B2B_REQ_EN_WIDTH 1 +#define FRF_AA_B2B_REQ_EN_LBN 44 +#define FRF_AA_B2B_REQ_EN_WIDTH 1 +#define FRF_BB_FC_BLOCKING_EN_LBN 44 +#define FRF_BB_FC_BLOCKING_EN_WIDTH 1 +#define FRF_AZ_POST_WR_MASK_LBN 40 +#define FRF_AZ_POST_WR_MASK_WIDTH 4 +#define FRF_AZ_TLP_TC_LBN 34 +#define FRF_AZ_TLP_TC_WIDTH 3 +#define FRF_AZ_TLP_ATTR_LBN 32 +#define FRF_AZ_TLP_ATTR_WIDTH 2 +#define FRF_AB_INTB_VEC_LBN 24 +#define FRF_AB_INTB_VEC_WIDTH 5 +#define FRF_AB_INTA_VEC_LBN 16 +#define FRF_AB_INTA_VEC_WIDTH 5 +#define FRF_AZ_WD_TIMER_LBN 8 +#define FRF_AZ_WD_TIMER_WIDTH 8 +#define FRF_AZ_US_DISABLE_LBN 5 +#define FRF_AZ_US_DISABLE_WIDTH 1 +#define FRF_AZ_TLP_EP_LBN 4 +#define FRF_AZ_TLP_EP_WIDTH 1 +#define FRF_AZ_ATTR_SEL_LBN 3 +#define FRF_AZ_ATTR_SEL_WIDTH 1 +#define FRF_AZ_TD_SEL_LBN 1 +#define FRF_AZ_TD_SEL_WIDTH 1 +#define FRF_AZ_TLP_TD_LBN 0 +#define FRF_AZ_TLP_TD_WIDTH 1 + + +/*------------------------------------------------------------*/ +/* + * FR_AB_EE_SPI_HCMD_REG(128bit): + * SPI host command register + */ +#define FR_AB_EE_SPI_HCMD_REG_OFST 0x00000100 +/* falcona0,falconb0=net_func_bar2,falcona0=char_func_bar0 */ + +#define FRF_AB_EE_SPI_HCMD_CMD_EN_LBN 31 +#define FRF_AB_EE_SPI_HCMD_CMD_EN_WIDTH 1 +#define FRF_AB_EE_WR_TIMER_ACTIVE_LBN 28 +#define FRF_AB_EE_WR_TIMER_ACTIVE_WIDTH 1 +#define FRF_AB_EE_SPI_HCMD_SF_SEL_LBN 24 +#define FRF_AB_EE_SPI_HCMD_SF_SEL_WIDTH 1 +#define FRF_AB_EE_SPI_HCMD_DABCNT_LBN 16 +#define FRF_AB_EE_SPI_HCMD_DABCNT_WIDTH 5 +#define FRF_AB_EE_SPI_HCMD_READ_LBN 15 +#define FRF_AB_EE_SPI_HCMD_READ_WIDTH 1 +#define FRF_AB_EE_SPI_HCMD_DUBCNT_LBN 12 +#define FRF_AB_EE_SPI_HCMD_DUBCNT_WIDTH 2 +#define FRF_AB_EE_SPI_HCMD_ADBCNT_LBN 8 +#define FRF_AB_EE_SPI_HCMD_ADBCNT_WIDTH 2 +#define FRF_AB_EE_SPI_HCMD_ENC_LBN 0 +#define FRF_AB_EE_SPI_HCMD_ENC_WIDTH 8 + + +/*------------------------------------------------------------*/ +/* + * FR_CZ_USR_EV_CFG(128bit): + * User Level Event Configuration register + */ +#define FR_CZ_USR_EV_CFG_OFST 0x00000100 +/* sienaa0=net_func_bar2 */ + +#define FRF_CZ_USREV_DIS_LBN 16 +#define FRF_CZ_USREV_DIS_WIDTH 1 +#define FRF_CZ_DFLT_EVQ_LBN 0 +#define FRF_CZ_DFLT_EVQ_WIDTH 10 + + +/*------------------------------------------------------------*/ +/* + * FR_AB_EE_SPI_HADR_REG(128bit): + * SPI host address register + */ +#define FR_AB_EE_SPI_HADR_REG_OFST 0x00000110 +/* falcona0,falconb0=net_func_bar2,falcona0=char_func_bar0 */ + +#define FRF_AB_EE_SPI_HADR_DUBYTE_LBN 24 +#define FRF_AB_EE_SPI_HADR_DUBYTE_WIDTH 8 +#define FRF_AB_EE_SPI_HADR_ADR_LBN 0 +#define FRF_AB_EE_SPI_HADR_ADR_WIDTH 24 + + +/*------------------------------------------------------------*/ +/* + * FR_AB_EE_SPI_HDATA_REG(128bit): + * SPI host data register + */ +#define FR_AB_EE_SPI_HDATA_REG_OFST 0x00000120 +/* falcona0,falconb0=net_func_bar2,falcona0=char_func_bar0 */ + +#define FRF_AB_EE_SPI_HDATA3_LBN 96 +#define FRF_AB_EE_SPI_HDATA3_WIDTH 32 +#define FRF_AB_EE_SPI_HDATA2_LBN 64 +#define FRF_AB_EE_SPI_HDATA2_WIDTH 32 +#define FRF_AB_EE_SPI_HDATA1_LBN 32 +#define FRF_AB_EE_SPI_HDATA1_WIDTH 32 +#define FRF_AB_EE_SPI_HDATA0_LBN 0 +#define FRF_AB_EE_SPI_HDATA0_WIDTH 32 + + +/*------------------------------------------------------------*/ +/* + * FR_AB_EE_BASE_PAGE_REG(128bit): + * Expansion ROM base mirror register + */ +#define FR_AB_EE_BASE_PAGE_REG_OFST 0x00000130 +/* falcona0,falconb0=net_func_bar2,falcona0=char_func_bar0 */ + +#define FRF_AB_EE_EXPROM_MASK_LBN 16 +#define FRF_AB_EE_EXPROM_MASK_WIDTH 13 +#define FRF_AB_EE_EXP_ROM_WINDOW_BASE_LBN 0 +#define FRF_AB_EE_EXP_ROM_WINDOW_BASE_WIDTH 13 + + +/*------------------------------------------------------------*/ +/* + * FR_AB_EE_VPD_CFG0_REG(128bit): + * SPI/VPD configuration register 0 + */ +#define FR_AB_EE_VPD_CFG0_REG_OFST 0x00000140 +/* falcona0,falconb0=net_func_bar2,falcona0=char_func_bar0 */ + +#define FRF_AB_EE_SF_FASTRD_EN_LBN 127 +#define FRF_AB_EE_SF_FASTRD_EN_WIDTH 1 +#define FRF_AB_EE_SF_CLOCK_DIV_LBN 120 +#define FRF_AB_EE_SF_CLOCK_DIV_WIDTH 7 +#define FRF_AB_EE_VPD_WIP_POLL_LBN 119 +#define FRF_AB_EE_VPD_WIP_POLL_WIDTH 1 +#define FRF_AB_EE_EE_CLOCK_DIV_LBN 112 +#define FRF_AB_EE_EE_CLOCK_DIV_WIDTH 7 +#define FRF_AB_EE_EE_WR_TMR_VALUE_LBN 96 +#define FRF_AB_EE_EE_WR_TMR_VALUE_WIDTH 16 +#define FRF_AB_EE_VPDW_LENGTH_LBN 80 +#define FRF_AB_EE_VPDW_LENGTH_WIDTH 15 +#define FRF_AB_EE_VPDW_BASE_LBN 64 +#define FRF_AB_EE_VPDW_BASE_WIDTH 15 +#define FRF_AB_EE_VPD_WR_CMD_EN_LBN 56 +#define FRF_AB_EE_VPD_WR_CMD_EN_WIDTH 8 +#define FRF_AB_EE_VPD_BASE_LBN 32 +#define FRF_AB_EE_VPD_BASE_WIDTH 24 +#define FRF_AB_EE_VPD_LENGTH_LBN 16 +#define FRF_AB_EE_VPD_LENGTH_WIDTH 15 +#define FRF_AB_EE_VPD_AD_SIZE_LBN 8 +#define FRF_AB_EE_VPD_AD_SIZE_WIDTH 5 +#define FRF_AB_EE_VPD_ACCESS_ON_LBN 5 +#define FRF_AB_EE_VPD_ACCESS_ON_WIDTH 1 +#define FRF_AB_EE_VPD_ACCESS_BLOCK_LBN 4 +#define FRF_AB_EE_VPD_ACCESS_BLOCK_WIDTH 1 +#define FRF_AB_EE_VPD_DEV_SF_SEL_LBN 2 +#define FRF_AB_EE_VPD_DEV_SF_SEL_WIDTH 1 +#define FRF_AB_EE_VPD_EN_AD9_MODE_LBN 1 +#define FRF_AB_EE_VPD_EN_AD9_MODE_WIDTH 1 +#define FRF_AB_EE_VPD_EN_LBN 0 +#define FRF_AB_EE_VPD_EN_WIDTH 1 + + +/*------------------------------------------------------------*/ +/* + * FR_AB_EE_VPD_SW_CNTL_REG(128bit): + * VPD access SW control register + */ +#define FR_AB_EE_VPD_SW_CNTL_REG_OFST 0x00000150 +/* falcona0,falconb0=net_func_bar2,falcona0=char_func_bar0 */ + +#define FRF_AB_EE_VPD_CYCLE_PENDING_LBN 31 +#define FRF_AB_EE_VPD_CYCLE_PENDING_WIDTH 1 +#define FRF_AB_EE_VPD_CYC_WRITE_LBN 28 +#define FRF_AB_EE_VPD_CYC_WRITE_WIDTH 1 +#define FRF_AB_EE_VPD_CYC_ADR_LBN 0 +#define FRF_AB_EE_VPD_CYC_ADR_WIDTH 15 + + +/*------------------------------------------------------------*/ +/* + * FR_AB_EE_VPD_SW_DATA_REG(128bit): + * VPD access SW data register + */ +#define FR_AB_EE_VPD_SW_DATA_REG_OFST 0x00000160 +/* falcona0,falconb0=net_func_bar2,falcona0=char_func_bar0 */ + +#define FRF_AB_EE_VPD_CYC_DAT_LBN 0 +#define FRF_AB_EE_VPD_CYC_DAT_WIDTH 32 + + +/*------------------------------------------------------------*/ +/* + * FR_BB_PCIE_CORE_INDIRECT_REG(64bit): + * Indirect Access to PCIE Core registers + */ +#define FR_BB_PCIE_CORE_INDIRECT_REG_OFST 0x000001f0 +/* falconb0=net_func_bar2 */ + +#define FRF_BB_PCIE_CORE_TARGET_DATA_LBN 32 +#define FRF_BB_PCIE_CORE_TARGET_DATA_WIDTH 32 +#define FRF_BB_PCIE_CORE_INDIRECT_ACCESS_DIR_LBN 15 +#define FRF_BB_PCIE_CORE_INDIRECT_ACCESS_DIR_WIDTH 1 +#define FRF_BB_PCIE_CORE_TARGET_REG_ADRS_LBN 0 +#define FRF_BB_PCIE_CORE_TARGET_REG_ADRS_WIDTH 12 + + +/*------------------------------------------------------------*/ +/* + * FR_AB_NIC_STAT_REG(128bit): + * NIC status register + */ +#define FR_AB_NIC_STAT_REG_OFST 0x00000200 +/* falcona0,falconb0=net_func_bar2,falcona0=char_func_bar0 */ + +#define FRF_BB_AER_DIS_LBN 34 +#define FRF_BB_AER_DIS_WIDTH 1 +#define FRF_BB_EE_STRAP_EN_LBN 31 +#define FRF_BB_EE_STRAP_EN_WIDTH 1 +#define FRF_BB_EE_STRAP_LBN 24 +#define FRF_BB_EE_STRAP_WIDTH 4 +#define FRF_BB_REVISION_ID_LBN 17 +#define FRF_BB_REVISION_ID_WIDTH 7 +#define FRF_AB_ONCHIP_SRAM_LBN 16 +#define FRF_AB_ONCHIP_SRAM_WIDTH 1 +#define FRF_AB_SF_PRST_LBN 9 +#define FRF_AB_SF_PRST_WIDTH 1 +#define FRF_AB_EE_PRST_LBN 8 +#define FRF_AB_EE_PRST_WIDTH 1 +#define FRF_AB_ATE_MODE_LBN 3 +#define FRF_AB_ATE_MODE_WIDTH 1 +#define FRF_AB_STRAP_PINS_LBN 0 +#define FRF_AB_STRAP_PINS_WIDTH 3 + + +/*------------------------------------------------------------*/ +/* + * FR_AB_GPIO_CTL_REG(128bit): + * GPIO control register + */ +#define FR_AB_GPIO_CTL_REG_OFST 0x00000210 +/* falcona0,falconb0=net_func_bar2,falcona0=char_func_bar0 */ + +#define FRF_AB_GPIO_OUT3_LBN 112 +#define FRF_AB_GPIO_OUT3_WIDTH 16 +#define FRF_AB_GPIO_IN3_LBN 104 +#define FRF_AB_GPIO_IN3_WIDTH 8 +#define FRF_AB_GPIO_PWRUP_VALUE3_LBN 96 +#define FRF_AB_GPIO_PWRUP_VALUE3_WIDTH 8 +#define FRF_AB_GPIO_OUT2_LBN 80 +#define FRF_AB_GPIO_OUT2_WIDTH 16 +#define FRF_AB_GPIO_IN2_LBN 72 +#define FRF_AB_GPIO_IN2_WIDTH 8 +#define FRF_AB_GPIO_PWRUP_VALUE2_LBN 64 +#define FRF_AB_GPIO_PWRUP_VALUE2_WIDTH 8 +#define FRF_AB_GPIO15_OEN_LBN 63 +#define FRF_AB_GPIO15_OEN_WIDTH 1 +#define FRF_AB_GPIO14_OEN_LBN 62 +#define FRF_AB_GPIO14_OEN_WIDTH 1 +#define FRF_AB_GPIO13_OEN_LBN 61 +#define FRF_AB_GPIO13_OEN_WIDTH 1 +#define FRF_AB_GPIO12_OEN_LBN 60 +#define FRF_AB_GPIO12_OEN_WIDTH 1 +#define FRF_AB_GPIO11_OEN_LBN 59 +#define FRF_AB_GPIO11_OEN_WIDTH 1 +#define FRF_AB_GPIO10_OEN_LBN 58 +#define FRF_AB_GPIO10_OEN_WIDTH 1 +#define FRF_AB_GPIO9_OEN_LBN 57 +#define FRF_AB_GPIO9_OEN_WIDTH 1 +#define FRF_AB_GPIO8_OEN_LBN 56 +#define FRF_AB_GPIO8_OEN_WIDTH 1 +#define FRF_AB_GPIO15_OUT_LBN 55 +#define FRF_AB_GPIO15_OUT_WIDTH 1 +#define FRF_AB_GPIO14_OUT_LBN 54 +#define FRF_AB_GPIO14_OUT_WIDTH 1 +#define FRF_AB_GPIO13_OUT_LBN 53 +#define FRF_AB_GPIO13_OUT_WIDTH 1 +#define FRF_AB_GPIO12_OUT_LBN 52 +#define FRF_AB_GPIO12_OUT_WIDTH 1 +#define FRF_AB_GPIO11_OUT_LBN 51 +#define FRF_AB_GPIO11_OUT_WIDTH 1 +#define FRF_AB_GPIO10_OUT_LBN 50 +#define FRF_AB_GPIO10_OUT_WIDTH 1 +#define FRF_AB_GPIO9_OUT_LBN 49 +#define FRF_AB_GPIO9_OUT_WIDTH 1 +#define FRF_AB_GPIO8_OUT_LBN 48 +#define FRF_AB_GPIO8_OUT_WIDTH 1 +#define FRF_AB_GPIO15_IN_LBN 47 +#define FRF_AB_GPIO15_IN_WIDTH 1 +#define FRF_AB_GPIO14_IN_LBN 46 +#define FRF_AB_GPIO14_IN_WIDTH 1 +#define FRF_AB_GPIO13_IN_LBN 45 +#define FRF_AB_GPIO13_IN_WIDTH 1 +#define FRF_AB_GPIO12_IN_LBN 44 +#define FRF_AB_GPIO12_IN_WIDTH 1 +#define FRF_AB_GPIO11_IN_LBN 43 +#define FRF_AB_GPIO11_IN_WIDTH 1 +#define FRF_AB_GPIO10_IN_LBN 42 +#define FRF_AB_GPIO10_IN_WIDTH 1 +#define FRF_AB_GPIO9_IN_LBN 41 +#define FRF_AB_GPIO9_IN_WIDTH 1 +#define FRF_AB_GPIO8_IN_LBN 40 +#define FRF_AB_GPIO8_IN_WIDTH 1 +#define FRF_AB_GPIO15_PWRUP_VALUE_LBN 39 +#define FRF_AB_GPIO15_PWRUP_VALUE_WIDTH 1 +#define FRF_AB_GPIO14_PWRUP_VALUE_LBN 38 +#define FRF_AB_GPIO14_PWRUP_VALUE_WIDTH 1 +#define FRF_AB_GPIO13_PWRUP_VALUE_LBN 37 +#define FRF_AB_GPIO13_PWRUP_VALUE_WIDTH 1 +#define FRF_AB_GPIO12_PWRUP_VALUE_LBN 36 +#define FRF_AB_GPIO12_PWRUP_VALUE_WIDTH 1 +#define FRF_AB_GPIO11_PWRUP_VALUE_LBN 35 +#define FRF_AB_GPIO11_PWRUP_VALUE_WIDTH 1 +#define FRF_AB_GPIO10_PWRUP_VALUE_LBN 34 +#define FRF_AB_GPIO10_PWRUP_VALUE_WIDTH 1 +#define FRF_AB_GPIO9_PWRUP_VALUE_LBN 33 +#define FRF_AB_GPIO9_PWRUP_VALUE_WIDTH 1 +#define FRF_AB_GPIO8_PWRUP_VALUE_LBN 32 +#define FRF_AB_GPIO8_PWRUP_VALUE_WIDTH 1 +#define FRF_AB_CLK156_OUT_EN_LBN 31 +#define FRF_AB_CLK156_OUT_EN_WIDTH 1 +#define FRF_AB_USE_NIC_CLK_LBN 30 +#define FRF_AB_USE_NIC_CLK_WIDTH 1 +#define FRF_AB_GPIO5_OEN_LBN 29 +#define FRF_AB_GPIO5_OEN_WIDTH 1 +#define FRF_AB_GPIO4_OEN_LBN 28 +#define FRF_AB_GPIO4_OEN_WIDTH 1 +#define FRF_AB_GPIO3_OEN_LBN 27 +#define FRF_AB_GPIO3_OEN_WIDTH 1 +#define FRF_AB_GPIO2_OEN_LBN 26 +#define FRF_AB_GPIO2_OEN_WIDTH 1 +#define FRF_AB_GPIO1_OEN_LBN 25 +#define FRF_AB_GPIO1_OEN_WIDTH 1 +#define FRF_AB_GPIO0_OEN_LBN 24 +#define FRF_AB_GPIO0_OEN_WIDTH 1 +#define FRF_AB_GPIO7_OUT_LBN 23 +#define FRF_AB_GPIO7_OUT_WIDTH 1 +#define FRF_AB_GPIO6_OUT_LBN 22 +#define FRF_AB_GPIO6_OUT_WIDTH 1 +#define FRF_AB_GPIO5_OUT_LBN 21 +#define FRF_AB_GPIO5_OUT_WIDTH 1 +#define FRF_AB_GPIO4_OUT_LBN 20 +#define FRF_AB_GPIO4_OUT_WIDTH 1 +#define FRF_AB_GPIO3_OUT_LBN 19 +#define FRF_AB_GPIO3_OUT_WIDTH 1 +#define FRF_AB_GPIO2_OUT_LBN 18 +#define FRF_AB_GPIO2_OUT_WIDTH 1 +#define FRF_AB_GPIO1_OUT_LBN 17 +#define FRF_AB_GPIO1_OUT_WIDTH 1 +#define FRF_AB_GPIO0_OUT_LBN 16 +#define FRF_AB_GPIO0_OUT_WIDTH 1 +#define FRF_AB_GPIO7_IN_LBN 15 +#define FRF_AB_GPIO7_IN_WIDTH 1 +#define FRF_AB_GPIO6_IN_LBN 14 +#define FRF_AB_GPIO6_IN_WIDTH 1 +#define FRF_AB_GPIO5_IN_LBN 13 +#define FRF_AB_GPIO5_IN_WIDTH 1 +#define FRF_AB_GPIO4_IN_LBN 12 +#define FRF_AB_GPIO4_IN_WIDTH 1 +#define FRF_AB_GPIO3_IN_LBN 11 +#define FRF_AB_GPIO3_IN_WIDTH 1 +#define FRF_AB_GPIO2_IN_LBN 10 +#define FRF_AB_GPIO2_IN_WIDTH 1 +#define FRF_AB_GPIO1_IN_LBN 9 +#define FRF_AB_GPIO1_IN_WIDTH 1 +#define FRF_AB_GPIO0_IN_LBN 8 +#define FRF_AB_GPIO0_IN_WIDTH 1 +#define FRF_AB_GPIO7_PWRUP_VALUE_LBN 7 +#define FRF_AB_GPIO7_PWRUP_VALUE_WIDTH 1 +#define FRF_AB_GPIO6_PWRUP_VALUE_LBN 6 +#define FRF_AB_GPIO6_PWRUP_VALUE_WIDTH 1 +#define FRF_AB_GPIO5_PWRUP_VALUE_LBN 5 +#define FRF_AB_GPIO5_PWRUP_VALUE_WIDTH 1 +#define FRF_AB_GPIO4_PWRUP_VALUE_LBN 4 +#define FRF_AB_GPIO4_PWRUP_VALUE_WIDTH 1 +#define FRF_AB_GPIO3_PWRUP_VALUE_LBN 3 +#define FRF_AB_GPIO3_PWRUP_VALUE_WIDTH 1 +#define FRF_AB_GPIO2_PWRUP_VALUE_LBN 2 +#define FRF_AB_GPIO2_PWRUP_VALUE_WIDTH 1 +#define FRF_AB_GPIO1_PWRUP_VALUE_LBN 1 +#define FRF_AB_GPIO1_PWRUP_VALUE_WIDTH 1 +#define FRF_AB_GPIO0_PWRUP_VALUE_LBN 0 +#define FRF_AB_GPIO0_PWRUP_VALUE_WIDTH 1 + + +/*------------------------------------------------------------*/ +/* + * FR_AB_GLB_CTL_REG(128bit): + * Global control register + */ +#define FR_AB_GLB_CTL_REG_OFST 0x00000220 +/* falcona0,falconb0=net_func_bar2,falcona0=char_func_bar0 */ + +#define FRF_AB_EXT_PHY_RST_CTL_LBN 63 +#define FRF_AB_EXT_PHY_RST_CTL_WIDTH 1 +#define FRF_AB_XAUI_SD_RST_CTL_LBN 62 +#define FRF_AB_XAUI_SD_RST_CTL_WIDTH 1 +#define FRF_AB_PCIE_SD_RST_CTL_LBN 61 +#define FRF_AB_PCIE_SD_RST_CTL_WIDTH 1 +#define FRF_AA_PCIX_RST_CTL_LBN 60 +#define FRF_AA_PCIX_RST_CTL_WIDTH 1 +#define FRF_BB_BIU_RST_CTL_LBN 60 +#define FRF_BB_BIU_RST_CTL_WIDTH 1 +#define FRF_AB_PCIE_STKY_RST_CTL_LBN 59 +#define FRF_AB_PCIE_STKY_RST_CTL_WIDTH 1 +#define FRF_AB_PCIE_NSTKY_RST_CTL_LBN 58 +#define FRF_AB_PCIE_NSTKY_RST_CTL_WIDTH 1 +#define FRF_AB_PCIE_CORE_RST_CTL_LBN 57 +#define FRF_AB_PCIE_CORE_RST_CTL_WIDTH 1 +#define FRF_AB_XGRX_RST_CTL_LBN 56 +#define FRF_AB_XGRX_RST_CTL_WIDTH 1 +#define FRF_AB_XGTX_RST_CTL_LBN 55 +#define FRF_AB_XGTX_RST_CTL_WIDTH 1 +#define FRF_AB_EM_RST_CTL_LBN 54 +#define FRF_AB_EM_RST_CTL_WIDTH 1 +#define FRF_AB_EV_RST_CTL_LBN 53 +#define FRF_AB_EV_RST_CTL_WIDTH 1 +#define FRF_AB_SR_RST_CTL_LBN 52 +#define FRF_AB_SR_RST_CTL_WIDTH 1 +#define FRF_AB_RX_RST_CTL_LBN 51 +#define FRF_AB_RX_RST_CTL_WIDTH 1 +#define FRF_AB_TX_RST_CTL_LBN 50 +#define FRF_AB_TX_RST_CTL_WIDTH 1 +#define FRF_AB_EE_RST_CTL_LBN 49 +#define FRF_AB_EE_RST_CTL_WIDTH 1 +#define FRF_AB_CS_RST_CTL_LBN 48 +#define FRF_AB_CS_RST_CTL_WIDTH 1 +#define FRF_AB_HOT_RST_CTL_LBN 40 +#define FRF_AB_HOT_RST_CTL_WIDTH 2 +#define FRF_AB_RST_EXT_PHY_LBN 31 +#define FRF_AB_RST_EXT_PHY_WIDTH 1 +#define FRF_AB_RST_XAUI_SD_LBN 30 +#define FRF_AB_RST_XAUI_SD_WIDTH 1 +#define FRF_AB_RST_PCIE_SD_LBN 29 +#define FRF_AB_RST_PCIE_SD_WIDTH 1 +#define FRF_AA_RST_PCIX_LBN 28 +#define FRF_AA_RST_PCIX_WIDTH 1 +#define FRF_BB_RST_BIU_LBN 28 +#define FRF_BB_RST_BIU_WIDTH 1 +#define FRF_AB_RST_PCIE_STKY_LBN 27 +#define FRF_AB_RST_PCIE_STKY_WIDTH 1 +#define FRF_AB_RST_PCIE_NSTKY_LBN 26 +#define FRF_AB_RST_PCIE_NSTKY_WIDTH 1 +#define FRF_AB_RST_PCIE_CORE_LBN 25 +#define FRF_AB_RST_PCIE_CORE_WIDTH 1 +#define FRF_AB_RST_XGRX_LBN 24 +#define FRF_AB_RST_XGRX_WIDTH 1 +#define FRF_AB_RST_XGTX_LBN 23 +#define FRF_AB_RST_XGTX_WIDTH 1 +#define FRF_AB_RST_EM_LBN 22 +#define FRF_AB_RST_EM_WIDTH 1 +#define FRF_AB_RST_EV_LBN 21 +#define FRF_AB_RST_EV_WIDTH 1 +#define FRF_AB_RST_SR_LBN 20 +#define FRF_AB_RST_SR_WIDTH 1 +#define FRF_AB_RST_RX_LBN 19 +#define FRF_AB_RST_RX_WIDTH 1 +#define FRF_AB_RST_TX_LBN 18 +#define FRF_AB_RST_TX_WIDTH 1 +#define FRF_AB_RST_SF_LBN 17 +#define FRF_AB_RST_SF_WIDTH 1 +#define FRF_AB_RST_CS_LBN 16 +#define FRF_AB_RST_CS_WIDTH 1 +#define FRF_AB_INT_RST_DUR_LBN 4 +#define FRF_AB_INT_RST_DUR_WIDTH 3 +#define FRF_AB_EXT_PHY_RST_DUR_LBN 1 +#define FRF_AB_EXT_PHY_RST_DUR_WIDTH 3 +#define FFE_AB_EXT_PHY_RST_DUR_10240US 7 +#define FFE_AB_EXT_PHY_RST_DUR_5120US 6 +#define FFE_AB_EXT_PHY_RST_DUR_2560US 5 +#define FFE_AB_EXT_PHY_RST_DUR_1280US 4 +#define FFE_AB_EXT_PHY_RST_DUR_640US 3 +#define FFE_AB_EXT_PHY_RST_DUR_320US 2 +#define FFE_AB_EXT_PHY_RST_DUR_160US 1 +#define FFE_AB_EXT_PHY_RST_DUR_80US 0 +#define FRF_AB_SWRST_LBN 0 +#define FRF_AB_SWRST_WIDTH 1 + + +/*------------------------------------------------------------*/ +/* + * FR_AZ_FATAL_INTR_REG_KER(128bit): + * Fatal interrupt register for Kernel + */ +#define FR_AZ_FATAL_INTR_REG_KER_OFST 0x00000230 +/* falcona0,falconb0,sienaa0=net_func_bar2 */ + +#define FRF_CZ_SRAM_PERR_INT_P_KER_EN_LBN 44 +#define FRF_CZ_SRAM_PERR_INT_P_KER_EN_WIDTH 1 +#define FRF_AB_PCI_BUSERR_INT_KER_EN_LBN 43 +#define FRF_AB_PCI_BUSERR_INT_KER_EN_WIDTH 1 +#define FRF_CZ_MBU_PERR_INT_KER_EN_LBN 43 +#define FRF_CZ_MBU_PERR_INT_KER_EN_WIDTH 1 +#define FRF_AZ_SRAM_OOB_INT_KER_EN_LBN 42 +#define FRF_AZ_SRAM_OOB_INT_KER_EN_WIDTH 1 +#define FRF_AZ_BUFID_OOB_INT_KER_EN_LBN 41 +#define FRF_AZ_BUFID_OOB_INT_KER_EN_WIDTH 1 +#define FRF_AZ_MEM_PERR_INT_KER_EN_LBN 40 +#define FRF_AZ_MEM_PERR_INT_KER_EN_WIDTH 1 +#define FRF_AZ_RBUF_OWN_INT_KER_EN_LBN 39 +#define FRF_AZ_RBUF_OWN_INT_KER_EN_WIDTH 1 +#define FRF_AZ_TBUF_OWN_INT_KER_EN_LBN 38 +#define FRF_AZ_TBUF_OWN_INT_KER_EN_WIDTH 1 +#define FRF_AZ_RDESCQ_OWN_INT_KER_EN_LBN 37 +#define FRF_AZ_RDESCQ_OWN_INT_KER_EN_WIDTH 1 +#define FRF_AZ_TDESCQ_OWN_INT_KER_EN_LBN 36 +#define FRF_AZ_TDESCQ_OWN_INT_KER_EN_WIDTH 1 +#define FRF_AZ_EVQ_OWN_INT_KER_EN_LBN 35 +#define FRF_AZ_EVQ_OWN_INT_KER_EN_WIDTH 1 +#define FRF_AZ_EVF_OFLO_INT_KER_EN_LBN 34 +#define FRF_AZ_EVF_OFLO_INT_KER_EN_WIDTH 1 +#define FRF_AZ_ILL_ADR_INT_KER_EN_LBN 33 +#define FRF_AZ_ILL_ADR_INT_KER_EN_WIDTH 1 +#define FRF_AZ_SRM_PERR_INT_KER_EN_LBN 32 +#define FRF_AZ_SRM_PERR_INT_KER_EN_WIDTH 1 +#define FRF_CZ_SRAM_PERR_INT_P_KER_LBN 12 +#define FRF_CZ_SRAM_PERR_INT_P_KER_WIDTH 1 +#define FRF_AB_PCI_BUSERR_INT_KER_LBN 11 +#define FRF_AB_PCI_BUSERR_INT_KER_WIDTH 1 +#define FRF_CZ_MBU_PERR_INT_KER_LBN 11 +#define FRF_CZ_MBU_PERR_INT_KER_WIDTH 1 +#define FRF_AZ_SRAM_OOB_INT_KER_LBN 10 +#define FRF_AZ_SRAM_OOB_INT_KER_WIDTH 1 +#define FRF_AZ_BUFID_DC_OOB_INT_KER_LBN 9 +#define FRF_AZ_BUFID_DC_OOB_INT_KER_WIDTH 1 +#define FRF_AZ_MEM_PERR_INT_KER_LBN 8 +#define FRF_AZ_MEM_PERR_INT_KER_WIDTH 1 +#define FRF_AZ_RBUF_OWN_INT_KER_LBN 7 +#define FRF_AZ_RBUF_OWN_INT_KER_WIDTH 1 +#define FRF_AZ_TBUF_OWN_INT_KER_LBN 6 +#define FRF_AZ_TBUF_OWN_INT_KER_WIDTH 1 +#define FRF_AZ_RDESCQ_OWN_INT_KER_LBN 5 +#define FRF_AZ_RDESCQ_OWN_INT_KER_WIDTH 1 +#define FRF_AZ_TDESCQ_OWN_INT_KER_LBN 4 +#define FRF_AZ_TDESCQ_OWN_INT_KER_WIDTH 1 +#define FRF_AZ_EVQ_OWN_INT_KER_LBN 3 +#define FRF_AZ_EVQ_OWN_INT_KER_WIDTH 1 +#define FRF_AZ_EVF_OFLO_INT_KER_LBN 2 +#define FRF_AZ_EVF_OFLO_INT_KER_WIDTH 1 +#define FRF_AZ_ILL_ADR_INT_KER_LBN 1 +#define FRF_AZ_ILL_ADR_INT_KER_WIDTH 1 +#define FRF_AZ_SRM_PERR_INT_KER_LBN 0 +#define FRF_AZ_SRM_PERR_INT_KER_WIDTH 1 + + +/*------------------------------------------------------------*/ +/* + * FR_AZ_FATAL_INTR_REG_CHAR(128bit): + * Fatal interrupt register for Char + */ +#define FR_AZ_FATAL_INTR_REG_CHAR_OFST 0x00000240 +/* falconb0,sienaa0=net_func_bar2,falcona0=char_func_bar0 */ + +#define FRF_CZ_SRAM_PERR_INT_P_CHAR_EN_LBN 44 +#define FRF_CZ_SRAM_PERR_INT_P_CHAR_EN_WIDTH 1 +#define FRF_AB_PCI_BUSERR_INT_CHAR_EN_LBN 43 +#define FRF_AB_PCI_BUSERR_INT_CHAR_EN_WIDTH 1 +#define FRF_CZ_MBU_PERR_INT_CHAR_EN_LBN 43 +#define FRF_CZ_MBU_PERR_INT_CHAR_EN_WIDTH 1 +#define FRF_AZ_SRAM_OOB_INT_CHAR_EN_LBN 42 +#define FRF_AZ_SRAM_OOB_INT_CHAR_EN_WIDTH 1 +#define FRF_AZ_BUFID_OOB_INT_CHAR_EN_LBN 41 +#define FRF_AZ_BUFID_OOB_INT_CHAR_EN_WIDTH 1 +#define FRF_AZ_MEM_PERR_INT_CHAR_EN_LBN 40 +#define FRF_AZ_MEM_PERR_INT_CHAR_EN_WIDTH 1 +#define FRF_AZ_RBUF_OWN_INT_CHAR_EN_LBN 39 +#define FRF_AZ_RBUF_OWN_INT_CHAR_EN_WIDTH 1 +#define FRF_AZ_TBUF_OWN_INT_CHAR_EN_LBN 38 +#define FRF_AZ_TBUF_OWN_INT_CHAR_EN_WIDTH 1 +#define FRF_AZ_RDESCQ_OWN_INT_CHAR_EN_LBN 37 +#define FRF_AZ_RDESCQ_OWN_INT_CHAR_EN_WIDTH 1 +#define FRF_AZ_TDESCQ_OWN_INT_CHAR_EN_LBN 36 +#define FRF_AZ_TDESCQ_OWN_INT_CHAR_EN_WIDTH 1 +#define FRF_AZ_EVQ_OWN_INT_CHAR_EN_LBN 35 +#define FRF_AZ_EVQ_OWN_INT_CHAR_EN_WIDTH 1 +#define FRF_AZ_EVF_OFLO_INT_CHAR_EN_LBN 34 +#define FRF_AZ_EVF_OFLO_INT_CHAR_EN_WIDTH 1 +#define FRF_AZ_ILL_ADR_INT_CHAR_EN_LBN 33 +#define FRF_AZ_ILL_ADR_INT_CHAR_EN_WIDTH 1 +#define FRF_AZ_SRM_PERR_INT_CHAR_EN_LBN 32 +#define FRF_AZ_SRM_PERR_INT_CHAR_EN_WIDTH 1 +#define FRF_CZ_SRAM_PERR_INT_P_CHAR_LBN 12 +#define FRF_CZ_SRAM_PERR_INT_P_CHAR_WIDTH 1 +#define FRF_AB_PCI_BUSERR_INT_CHAR_LBN 11 +#define FRF_AB_PCI_BUSERR_INT_CHAR_WIDTH 1 +#define FRF_CZ_MBU_PERR_INT_CHAR_LBN 11 +#define FRF_CZ_MBU_PERR_INT_CHAR_WIDTH 1 +#define FRF_AZ_SRAM_OOB_INT_CHAR_LBN 10 +#define FRF_AZ_SRAM_OOB_INT_CHAR_WIDTH 1 +#define FRF_AZ_BUFID_DC_OOB_INT_CHAR_LBN 9 +#define FRF_AZ_BUFID_DC_OOB_INT_CHAR_WIDTH 1 +#define FRF_AZ_MEM_PERR_INT_CHAR_LBN 8 +#define FRF_AZ_MEM_PERR_INT_CHAR_WIDTH 1 +#define FRF_AZ_RBUF_OWN_INT_CHAR_LBN 7 +#define FRF_AZ_RBUF_OWN_INT_CHAR_WIDTH 1 +#define FRF_AZ_TBUF_OWN_INT_CHAR_LBN 6 +#define FRF_AZ_TBUF_OWN_INT_CHAR_WIDTH 1 +#define FRF_AZ_RDESCQ_OWN_INT_CHAR_LBN 5 +#define FRF_AZ_RDESCQ_OWN_INT_CHAR_WIDTH 1 +#define FRF_AZ_TDESCQ_OWN_INT_CHAR_LBN 4 +#define FRF_AZ_TDESCQ_OWN_INT_CHAR_WIDTH 1 +#define FRF_AZ_EVQ_OWN_INT_CHAR_LBN 3 +#define FRF_AZ_EVQ_OWN_INT_CHAR_WIDTH 1 +#define FRF_AZ_EVF_OFLO_INT_CHAR_LBN 2 +#define FRF_AZ_EVF_OFLO_INT_CHAR_WIDTH 1 +#define FRF_AZ_ILL_ADR_INT_CHAR_LBN 1 +#define FRF_AZ_ILL_ADR_INT_CHAR_WIDTH 1 +#define FRF_AZ_SRM_PERR_INT_CHAR_LBN 0 +#define FRF_AZ_SRM_PERR_INT_CHAR_WIDTH 1 + + +/*------------------------------------------------------------*/ +/* + * FR_AZ_DP_CTRL_REG(128bit): + * Datapath control register + */ +#define FR_AZ_DP_CTRL_REG_OFST 0x00000250 +/* falconb0,sienaa0=net_func_bar2,falcona0=char_func_bar0 */ + +#define FRF_AZ_FLS_EVQ_ID_LBN 0 +#define FRF_AZ_FLS_EVQ_ID_WIDTH 12 + + +/*------------------------------------------------------------*/ +/* + * FR_AZ_MEM_STAT_REG(128bit): + * Memory status register + */ +#define FR_AZ_MEM_STAT_REG_OFST 0x00000260 +/* falcona0,falconb0,sienaa0=net_func_bar2,falcona0=char_func_bar0 */ + +#define FRF_AB_MEM_PERR_VEC_LBN 53 +#define FRF_AB_MEM_PERR_VEC_WIDTH 38 +#define FRF_AB_MBIST_CORR_LBN 38 +#define FRF_AB_MBIST_CORR_WIDTH 15 +#define FRF_AB_MBIST_ERR_LBN 0 +#define FRF_AB_MBIST_ERR_WIDTH 40 +#define FRF_CZ_MEM_PERR_VEC_LBN 0 +#define FRF_CZ_MEM_PERR_VEC_WIDTH 35 + + +/*------------------------------------------------------------*/ +/* + * FR_AZ_CS_DEBUG_REG(128bit): + * Debug register + */ +#define FR_AZ_CS_DEBUG_REG_OFST 0x00000270 +/* falcona0,falconb0,sienaa0=net_func_bar2,falcona0=char_func_bar0 */ + +#define FRF_AB_GLB_DEBUG2_SEL_LBN 50 +#define FRF_AB_GLB_DEBUG2_SEL_WIDTH 3 +#define FRF_AB_DEBUG_BLK_SEL2_LBN 47 +#define FRF_AB_DEBUG_BLK_SEL2_WIDTH 3 +#define FRF_AB_DEBUG_BLK_SEL1_LBN 44 +#define FRF_AB_DEBUG_BLK_SEL1_WIDTH 3 +#define FRF_AB_DEBUG_BLK_SEL0_LBN 41 +#define FRF_AB_DEBUG_BLK_SEL0_WIDTH 3 +#define FRF_CZ_CS_PORT_NUM_LBN 40 +#define FRF_CZ_CS_PORT_NUM_WIDTH 2 +#define FRF_AB_MISC_DEBUG_ADDR_LBN 36 +#define FRF_AB_MISC_DEBUG_ADDR_WIDTH 5 +#define FRF_AB_SERDES_DEBUG_ADDR_LBN 31 +#define FRF_AB_SERDES_DEBUG_ADDR_WIDTH 5 +#define FRF_CZ_CS_PORT_FPE_LBN 1 +#define FRF_CZ_CS_PORT_FPE_WIDTH 35 +#define FRF_AB_EM_DEBUG_ADDR_LBN 26 +#define FRF_AB_EM_DEBUG_ADDR_WIDTH 5 +#define FRF_AB_SR_DEBUG_ADDR_LBN 21 +#define FRF_AB_SR_DEBUG_ADDR_WIDTH 5 +#define FRF_AB_EV_DEBUG_ADDR_LBN 16 +#define FRF_AB_EV_DEBUG_ADDR_WIDTH 5 +#define FRF_AB_RX_DEBUG_ADDR_LBN 11 +#define FRF_AB_RX_DEBUG_ADDR_WIDTH 5 +#define FRF_AB_TX_DEBUG_ADDR_LBN 6 +#define FRF_AB_TX_DEBUG_ADDR_WIDTH 5 +#define FRF_AB_CS_BIU_DEBUG_ADDR_LBN 1 +#define FRF_AB_CS_BIU_DEBUG_ADDR_WIDTH 5 +#define FRF_AZ_CS_DEBUG_EN_LBN 0 +#define FRF_AZ_CS_DEBUG_EN_WIDTH 1 + + +/*------------------------------------------------------------*/ +/* + * FR_AZ_DRIVER_REG(128bit): + * Driver scratch register [0-7] + */ +#define FR_AZ_DRIVER_REG_OFST 0x00000280 +/* falcona0,falconb0,sienaa0=net_func_bar2,falcona0=char_func_bar0 */ +#define FR_AZ_DRIVER_REG_STEP 16 +#define FR_AZ_DRIVER_REG_ROWS 8 + +#define FRF_AZ_DRIVER_DW0_LBN 0 +#define FRF_AZ_DRIVER_DW0_WIDTH 32 + + +/*------------------------------------------------------------*/ +/* + * FR_AZ_ALTERA_BUILD_REG(128bit): + * Altera build register + */ +#define FR_AZ_ALTERA_BUILD_REG_OFST 0x00000300 +/* falcona0,falconb0,sienaa0=net_func_bar2,falcona0=char_func_bar0 */ + +#define FRF_AZ_ALTERA_BUILD_VER_LBN 0 +#define FRF_AZ_ALTERA_BUILD_VER_WIDTH 32 + + +/*------------------------------------------------------------*/ +/* + * FR_AZ_CSR_SPARE_REG(128bit): + * Spare register + */ +#define FR_AZ_CSR_SPARE_REG_OFST 0x00000310 +/* falcona0,falconb0,sienaa0=net_func_bar2,falcona0=char_func_bar0 */ + +#define FRF_AB_MEM_PERR_EN_LBN 64 +#define FRF_AB_MEM_PERR_EN_WIDTH 38 +#define FRF_CZ_MEM_PERR_EN_LBN 64 +#define FRF_CZ_MEM_PERR_EN_WIDTH 35 +#define FRF_AB_MEM_PERR_EN_TX_DATA_LBN 72 +#define FRF_AB_MEM_PERR_EN_TX_DATA_WIDTH 2 +#define FRF_AZ_CSR_SPARE_BITS_LBN 0 +#define FRF_AZ_CSR_SPARE_BITS_WIDTH 32 + + +/*------------------------------------------------------------*/ +/* + * FR_AB_PCIE_SD_CTL0123_REG(128bit): + * PCIE SerDes control register 0 to 3 + */ +#define FR_AB_PCIE_SD_CTL0123_REG_OFST 0x00000320 +/* falcona0,falconb0=net_func_bar2,falcona0=char_func_bar0 */ + +#define FRF_AB_PCIE_TESTSIG_H_LBN 96 +#define FRF_AB_PCIE_TESTSIG_H_WIDTH 19 +#define FRF_AB_PCIE_TESTSIG_L_LBN 64 +#define FRF_AB_PCIE_TESTSIG_L_WIDTH 19 +#define FRF_AB_PCIE_OFFSET_LBN 56 +#define FRF_AB_PCIE_OFFSET_WIDTH 8 +#define FRF_AB_PCIE_OFFSETEN_H_LBN 55 +#define FRF_AB_PCIE_OFFSETEN_H_WIDTH 1 +#define FRF_AB_PCIE_OFFSETEN_L_LBN 54 +#define FRF_AB_PCIE_OFFSETEN_L_WIDTH 1 +#define FRF_AB_PCIE_HIVMODE_H_LBN 53 +#define FRF_AB_PCIE_HIVMODE_H_WIDTH 1 +#define FRF_AB_PCIE_HIVMODE_L_LBN 52 +#define FRF_AB_PCIE_HIVMODE_L_WIDTH 1 +#define FRF_AB_PCIE_PARRESET_H_LBN 51 +#define FRF_AB_PCIE_PARRESET_H_WIDTH 1 +#define FRF_AB_PCIE_PARRESET_L_LBN 50 +#define FRF_AB_PCIE_PARRESET_L_WIDTH 1 +#define FRF_AB_PCIE_LPBKWDRV_H_LBN 49 +#define FRF_AB_PCIE_LPBKWDRV_H_WIDTH 1 +#define FRF_AB_PCIE_LPBKWDRV_L_LBN 48 +#define FRF_AB_PCIE_LPBKWDRV_L_WIDTH 1 +#define FRF_AB_PCIE_LPBK_LBN 40 +#define FRF_AB_PCIE_LPBK_WIDTH 8 +#define FRF_AB_PCIE_PARLPBK_LBN 32 +#define FRF_AB_PCIE_PARLPBK_WIDTH 8 +#define FRF_AB_PCIE_RXTERMADJ_H_LBN 30 +#define FRF_AB_PCIE_RXTERMADJ_H_WIDTH 2 +#define FRF_AB_PCIE_RXTERMADJ_L_LBN 28 +#define FRF_AB_PCIE_RXTERMADJ_L_WIDTH 2 +#define FFE_AB_PCIE_RXTERMADJ_MIN15PCNT 3 +#define FFE_AB_PCIE_RXTERMADJ_PL10PCNT 2 +#define FFE_AB_PCIE_RXTERMADJ_MIN17PCNT 1 +#define FFE_AB_PCIE_RXTERMADJ_NOMNL 0 +#define FRF_AB_PCIE_TXTERMADJ_H_LBN 26 +#define FRF_AB_PCIE_TXTERMADJ_H_WIDTH 2 +#define FRF_AB_PCIE_TXTERMADJ_L_LBN 24 +#define FRF_AB_PCIE_TXTERMADJ_L_WIDTH 2 +#define FFE_AB_PCIE_TXTERMADJ_MIN15PCNT 3 +#define FFE_AB_PCIE_TXTERMADJ_PL10PCNT 2 +#define FFE_AB_PCIE_TXTERMADJ_MIN17PCNT 1 +#define FFE_AB_PCIE_TXTERMADJ_NOMNL 0 +#define FRF_AB_PCIE_RXEQCTL_H_LBN 18 +#define FRF_AB_PCIE_RXEQCTL_H_WIDTH 2 +#define FRF_AB_PCIE_RXEQCTL_L_LBN 16 +#define FRF_AB_PCIE_RXEQCTL_L_WIDTH 2 +#define FFE_AB_PCIE_RXEQCTL_OFF_ALT 3 +#define FFE_AB_PCIE_RXEQCTL_OFF 2 +#define FFE_AB_PCIE_RXEQCTL_MIN 1 +#define FFE_AB_PCIE_RXEQCTL_MAX 0 +#define FRF_AB_PCIE_HIDRV_LBN 8 +#define FRF_AB_PCIE_HIDRV_WIDTH 8 +#define FRF_AB_PCIE_LODRV_LBN 0 +#define FRF_AB_PCIE_LODRV_WIDTH 8 + + +/*------------------------------------------------------------*/ +/* + * FR_AB_PCIE_SD_CTL45_REG(128bit): + * PCIE SerDes control register 4 and 5 + */ +#define FR_AB_PCIE_SD_CTL45_REG_OFST 0x00000330 +/* falcona0,falconb0=net_func_bar2,falcona0=char_func_bar0 */ + +#define FRF_AB_PCIE_DTX7_LBN 60 +#define FRF_AB_PCIE_DTX7_WIDTH 4 +#define FRF_AB_PCIE_DTX6_LBN 56 +#define FRF_AB_PCIE_DTX6_WIDTH 4 +#define FRF_AB_PCIE_DTX5_LBN 52 +#define FRF_AB_PCIE_DTX5_WIDTH 4 +#define FRF_AB_PCIE_DTX4_LBN 48 +#define FRF_AB_PCIE_DTX4_WIDTH 4 +#define FRF_AB_PCIE_DTX3_LBN 44 +#define FRF_AB_PCIE_DTX3_WIDTH 4 +#define FRF_AB_PCIE_DTX2_LBN 40 +#define FRF_AB_PCIE_DTX2_WIDTH 4 +#define FRF_AB_PCIE_DTX1_LBN 36 +#define FRF_AB_PCIE_DTX1_WIDTH 4 +#define FRF_AB_PCIE_DTX0_LBN 32 +#define FRF_AB_PCIE_DTX0_WIDTH 4 +#define FRF_AB_PCIE_DEQ7_LBN 28 +#define FRF_AB_PCIE_DEQ7_WIDTH 4 +#define FRF_AB_PCIE_DEQ6_LBN 24 +#define FRF_AB_PCIE_DEQ6_WIDTH 4 +#define FRF_AB_PCIE_DEQ5_LBN 20 +#define FRF_AB_PCIE_DEQ5_WIDTH 4 +#define FRF_AB_PCIE_DEQ4_LBN 16 +#define FRF_AB_PCIE_DEQ4_WIDTH 4 +#define FRF_AB_PCIE_DEQ3_LBN 12 +#define FRF_AB_PCIE_DEQ3_WIDTH 4 +#define FRF_AB_PCIE_DEQ2_LBN 8 +#define FRF_AB_PCIE_DEQ2_WIDTH 4 +#define FRF_AB_PCIE_DEQ1_LBN 4 +#define FRF_AB_PCIE_DEQ1_WIDTH 4 +#define FRF_AB_PCIE_DEQ0_LBN 0 +#define FRF_AB_PCIE_DEQ0_WIDTH 4 + + +/*------------------------------------------------------------*/ +/* + * FR_AB_PCIE_PCS_CTL_STAT_REG(128bit): + * PCIE PCS control and status register + */ +#define FR_AB_PCIE_PCS_CTL_STAT_REG_OFST 0x00000340 +/* falcona0,falconb0=net_func_bar2,falcona0=char_func_bar0 */ + +#define FRF_AB_PCIE_PRBSERRCOUNT0_H_LBN 52 +#define FRF_AB_PCIE_PRBSERRCOUNT0_H_WIDTH 4 +#define FRF_AB_PCIE_PRBSERRCOUNT0_L_LBN 48 +#define FRF_AB_PCIE_PRBSERRCOUNT0_L_WIDTH 4 +#define FRF_AB_PCIE_PRBSERR_LBN 40 +#define FRF_AB_PCIE_PRBSERR_WIDTH 8 +#define FRF_AB_PCIE_PRBSERRH0_LBN 32 +#define FRF_AB_PCIE_PRBSERRH0_WIDTH 8 +#define FRF_AB_PCIE_FASTINIT_H_LBN 15 +#define FRF_AB_PCIE_FASTINIT_H_WIDTH 1 +#define FRF_AB_PCIE_FASTINIT_L_LBN 14 +#define FRF_AB_PCIE_FASTINIT_L_WIDTH 1 +#define FRF_AB_PCIE_CTCDISABLE_H_LBN 13 +#define FRF_AB_PCIE_CTCDISABLE_H_WIDTH 1 +#define FRF_AB_PCIE_CTCDISABLE_L_LBN 12 +#define FRF_AB_PCIE_CTCDISABLE_L_WIDTH 1 +#define FRF_AB_PCIE_PRBSSYNC_H_LBN 11 +#define FRF_AB_PCIE_PRBSSYNC_H_WIDTH 1 +#define FRF_AB_PCIE_PRBSSYNC_L_LBN 10 +#define FRF_AB_PCIE_PRBSSYNC_L_WIDTH 1 +#define FRF_AB_PCIE_PRBSERRACK_H_LBN 9 +#define FRF_AB_PCIE_PRBSERRACK_H_WIDTH 1 +#define FRF_AB_PCIE_PRBSERRACK_L_LBN 8 +#define FRF_AB_PCIE_PRBSERRACK_L_WIDTH 1 +#define FRF_AB_PCIE_PRBSSEL_LBN 0 +#define FRF_AB_PCIE_PRBSSEL_WIDTH 8 + + +/*------------------------------------------------------------*/ +/* + * FR_BB_DEBUG_DATA_OUT_REG(128bit): + * Live Debug and Debug 2 out ports + */ +#define FR_BB_DEBUG_DATA_OUT_REG_OFST 0x00000350 +/* falconb0=net_func_bar2 */ + +#define FRF_BB_DEBUG2_PORT_LBN 25 +#define FRF_BB_DEBUG2_PORT_WIDTH 15 +#define FRF_BB_DEBUG1_PORT_LBN 0 +#define FRF_BB_DEBUG1_PORT_WIDTH 25 + + +/*------------------------------------------------------------*/ +/* + * FR_BZ_EVQ_RPTR_REGP0(32bit): + * Event queue read pointer register + */ +#define FR_BZ_EVQ_RPTR_REGP0_OFST 0x00000400 +/* falconb0,sienaa0=net_func_bar2 */ +#define FR_BZ_EVQ_RPTR_REGP0_STEP 8192 +#define FR_BZ_EVQ_RPTR_REGP0_ROWS 1024 +/* + * FR_AA_EVQ_RPTR_REG_KER(32bit): + * Event queue read pointer register + */ +#define FR_AA_EVQ_RPTR_REG_KER_OFST 0x00011b00 +/* falcona0=net_func_bar2 */ +#define FR_AA_EVQ_RPTR_REG_KER_STEP 4 +#define FR_AA_EVQ_RPTR_REG_KER_ROWS 4 +/* + * FR_AZ_EVQ_RPTR_REG(32bit): + * Event queue read pointer register + */ +#define FR_AZ_EVQ_RPTR_REG_OFST 0x00fa0000 +/* falconb0=net_func_bar2,sienaa0=net_func_bar2,falcona0=char_func_bar0 */ +#define FR_AZ_EVQ_RPTR_REG_STEP 16 +#define FR_AB_EVQ_RPTR_REG_ROWS 4096 +#define FR_CZ_EVQ_RPTR_REG_ROWS 1024 +/* + * FR_BB_EVQ_RPTR_REGP123(32bit): + * Event queue read pointer register + */ +#define FR_BB_EVQ_RPTR_REGP123_OFST 0x01000400 +/* falconb0=net_func_bar2 */ +#define FR_BB_EVQ_RPTR_REGP123_STEP 8192 +#define FR_BB_EVQ_RPTR_REGP123_ROWS 3072 + +#define FRF_AZ_EVQ_RPTR_VLD_LBN 15 +#define FRF_AZ_EVQ_RPTR_VLD_WIDTH 1 +#define FRF_AZ_EVQ_RPTR_LBN 0 +#define FRF_AZ_EVQ_RPTR_WIDTH 15 + + +/*------------------------------------------------------------*/ +/* + * FR_BZ_TIMER_COMMAND_REGP0(128bit): + * Timer Command Registers + */ +#define FR_BZ_TIMER_COMMAND_REGP0_OFST 0x00000420 +/* falconb0,sienaa0=net_func_bar2 */ +#define FR_AZ_TIMER_COMMAND_REGP0_STEP 8192 +#define FR_BZ_TIMER_COMMAND_REGP0_ROWS 1024 +/* + * FR_AA_TIMER_COMMAND_REG_KER(128bit): + * Timer Command Registers + */ +#define FR_AA_TIMER_COMMAND_REG_KER_OFST 0x00000420 +/* falcona0=net_func_bar2 */ +#define FR_AA_TIMER_COMMAND_REG_KER_STEP 8192 +#define FR_AA_TIMER_COMMAND_REG_KER_ROWS 4 +/* + * FR_AB_TIMER_COMMAND_REGP123(128bit): + * Timer Command Registers + */ +#define FR_AB_TIMER_COMMAND_REGP123_OFST 0x01000420 +/* falconb0=net_func_bar2,falcona0=char_func_bar0 */ +#define FR_AB_TIMER_COMMAND_REGP123_STEP 8192 +#define FR_AB_TIMER_COMMAND_REGP123_ROWS 3072 +/* + * FR_AA_TIMER_COMMAND_REGP0(128bit): + * Timer Command Registers + */ +#define FR_AA_TIMER_COMMAND_REGP0_OFST 0x00008420 +/* falcona0=char_func_bar0 */ +/* FR_AZ_TIMER_COMMAND_REGP0_STEP 8192 */ +#define FR_AA_TIMER_COMMAND_REGP0_ROWS 1020 + +#define FRF_CZ_TC_TIMER_MODE_LBN 14 +#define FRF_CZ_TC_TIMER_MODE_WIDTH 2 +#define FRF_AB_TC_TIMER_MODE_LBN 12 +#define FRF_AB_TC_TIMER_MODE_WIDTH 2 +#define FRF_CZ_TC_TIMER_VAL_LBN 0 +#define FRF_CZ_TC_TIMER_VAL_WIDTH 14 +#define FRF_AB_TC_TIMER_VAL_LBN 0 +#define FRF_AB_TC_TIMER_VAL_WIDTH 12 + + +/*------------------------------------------------------------*/ +/* + * FR_AZ_DRV_EV_REG(128bit): + * Driver generated event register + */ +#define FR_AZ_DRV_EV_REG_OFST 0x00000440 +/* falcona0,falconb0,sienaa0=net_func_bar2,falcona0=char_func_bar0 */ + +#define FRF_AZ_DRV_EV_QID_LBN 64 +#define FRF_AZ_DRV_EV_QID_WIDTH 12 +#define FRF_AZ_DRV_EV_DATA_LBN 0 +#define FRF_AZ_DRV_EV_DATA_WIDTH 64 + + +/*------------------------------------------------------------*/ +/* + * FR_AZ_EVQ_CTL_REG(128bit): + * Event queue control register + */ +#define FR_AZ_EVQ_CTL_REG_OFST 0x00000450 +/* falcona0,falconb0,sienaa0=net_func_bar2,falcona0=char_func_bar0 */ + +#define FRF_CZ_RX_EVQ_WAKEUP_MASK_LBN 15 +#define FRF_CZ_RX_EVQ_WAKEUP_MASK_WIDTH 10 +#define FRF_BB_RX_EVQ_WAKEUP_MASK_LBN 15 +#define FRF_BB_RX_EVQ_WAKEUP_MASK_WIDTH 6 +#define FRF_AZ_EVQ_OWNERR_CTL_LBN 14 +#define FRF_AZ_EVQ_OWNERR_CTL_WIDTH 1 +#define FRF_AZ_EVQ_FIFO_AF_TH_LBN 7 +#define FRF_AZ_EVQ_FIFO_AF_TH_WIDTH 7 +#define FRF_AZ_EVQ_FIFO_NOTAF_TH_LBN 0 +#define FRF_AZ_EVQ_FIFO_NOTAF_TH_WIDTH 7 + + +/*------------------------------------------------------------*/ +/* + * FR_AZ_EVQ_CNT1_REG(128bit): + * Event counter 1 register + */ +#define FR_AZ_EVQ_CNT1_REG_OFST 0x00000460 +/* falcona0,falconb0,sienaa0=net_func_bar2,falcona0=char_func_bar0 */ + +#define FRF_AZ_EVQ_CNT_PRE_FIFO_LBN 120 +#define FRF_AZ_EVQ_CNT_PRE_FIFO_WIDTH 7 +#define FRF_AZ_EVQ_CNT_TOBIU_LBN 100 +#define FRF_AZ_EVQ_CNT_TOBIU_WIDTH 20 +#define FRF_AZ_EVQ_TX_REQ_CNT_LBN 80 +#define FRF_AZ_EVQ_TX_REQ_CNT_WIDTH 20 +#define FRF_AZ_EVQ_RX_REQ_CNT_LBN 60 +#define FRF_AZ_EVQ_RX_REQ_CNT_WIDTH 20 +#define FRF_AZ_EVQ_EM_REQ_CNT_LBN 40 +#define FRF_AZ_EVQ_EM_REQ_CNT_WIDTH 20 +#define FRF_AZ_EVQ_CSR_REQ_CNT_LBN 20 +#define FRF_AZ_EVQ_CSR_REQ_CNT_WIDTH 20 +#define FRF_AZ_EVQ_ERR_REQ_CNT_LBN 0 +#define FRF_AZ_EVQ_ERR_REQ_CNT_WIDTH 20 + + +/*------------------------------------------------------------*/ +/* + * FR_AZ_EVQ_CNT2_REG(128bit): + * Event counter 2 register + */ +#define FR_AZ_EVQ_CNT2_REG_OFST 0x00000470 +/* falcona0,falconb0,sienaa0=net_func_bar2,falcona0=char_func_bar0 */ + +#define FRF_AZ_EVQ_UPD_REQ_CNT_LBN 104 +#define FRF_AZ_EVQ_UPD_REQ_CNT_WIDTH 20 +#define FRF_AZ_EVQ_CLR_REQ_CNT_LBN 84 +#define FRF_AZ_EVQ_CLR_REQ_CNT_WIDTH 20 +#define FRF_AZ_EVQ_RDY_CNT_LBN 80 +#define FRF_AZ_EVQ_RDY_CNT_WIDTH 4 +#define FRF_AZ_EVQ_WU_REQ_CNT_LBN 60 +#define FRF_AZ_EVQ_WU_REQ_CNT_WIDTH 20 +#define FRF_AZ_EVQ_WET_REQ_CNT_LBN 40 +#define FRF_AZ_EVQ_WET_REQ_CNT_WIDTH 20 +#define FRF_AZ_EVQ_INIT_REQ_CNT_LBN 20 +#define FRF_AZ_EVQ_INIT_REQ_CNT_WIDTH 20 +#define FRF_AZ_EVQ_TM_REQ_CNT_LBN 0 +#define FRF_AZ_EVQ_TM_REQ_CNT_WIDTH 20 + + +/*------------------------------------------------------------*/ +/* + * FR_CZ_USR_EV_REG(32bit): + * Event mailbox register + */ +#define FR_CZ_USR_EV_REG_OFST 0x00000540 +/* sienaa0=net_func_bar2 */ +#define FR_CZ_USR_EV_REG_STEP 8192 +#define FR_CZ_USR_EV_REG_ROWS 1024 + +#define FRF_CZ_USR_EV_DATA_LBN 0 +#define FRF_CZ_USR_EV_DATA_WIDTH 32 + + +/*------------------------------------------------------------*/ +/* + * FR_AZ_BUF_TBL_CFG_REG(128bit): + * Buffer table configuration register + */ +#define FR_AZ_BUF_TBL_CFG_REG_OFST 0x00000600 +/* falcona0,falconb0,sienaa0=net_func_bar2,falcona0=char_func_bar0 */ + +#define FRF_AZ_BUF_TBL_MODE_LBN 3 +#define FRF_AZ_BUF_TBL_MODE_WIDTH 1 + + +/*------------------------------------------------------------*/ +/* + * FR_AZ_SRM_RX_DC_CFG_REG(128bit): + * SRAM receive descriptor cache configuration register + */ +#define FR_AZ_SRM_RX_DC_CFG_REG_OFST 0x00000610 +/* falcona0,falconb0,sienaa0=net_func_bar2,falcona0=char_func_bar0 */ + +#define FRF_AZ_SRM_CLK_TMP_EN_LBN 21 +#define FRF_AZ_SRM_CLK_TMP_EN_WIDTH 1 +#define FRF_AZ_SRM_RX_DC_BASE_ADR_LBN 0 +#define FRF_AZ_SRM_RX_DC_BASE_ADR_WIDTH 21 + + +/*------------------------------------------------------------*/ +/* + * FR_AZ_SRM_TX_DC_CFG_REG(128bit): + * SRAM transmit descriptor cache configuration register + */ +#define FR_AZ_SRM_TX_DC_CFG_REG_OFST 0x00000620 +/* falcona0,falconb0,sienaa0=net_func_bar2,falcona0=char_func_bar0 */ + +#define FRF_AZ_SRM_TX_DC_BASE_ADR_LBN 0 +#define FRF_AZ_SRM_TX_DC_BASE_ADR_WIDTH 21 + + +/*------------------------------------------------------------*/ +/* + * FR_AZ_SRM_CFG_REG(128bit): + * SRAM configuration register + */ +#define FR_AZ_SRM_CFG_REG_OFST 0x00000630 +/* falcona0,falconb0,sienaa0=net_func_bar2,falcona0=char_func_bar0 */ + +#define FRF_AZ_SRM_OOB_ADR_INTEN_LBN 5 +#define FRF_AZ_SRM_OOB_ADR_INTEN_WIDTH 1 +#define FRF_AZ_SRM_OOB_BUF_INTEN_LBN 4 +#define FRF_AZ_SRM_OOB_BUF_INTEN_WIDTH 1 +#define FRF_AZ_SRM_INIT_EN_LBN 3 +#define FRF_AZ_SRM_INIT_EN_WIDTH 1 +#define FRF_AZ_SRM_NUM_BANK_LBN 2 +#define FRF_AZ_SRM_NUM_BANK_WIDTH 1 +#define FRF_AZ_SRM_BANK_SIZE_LBN 0 +#define FRF_AZ_SRM_BANK_SIZE_WIDTH 2 + + +/*------------------------------------------------------------*/ +/* + * FR_AZ_BUF_TBL_UPD_REG(128bit): + * Buffer table update register + */ +#define FR_AZ_BUF_TBL_UPD_REG_OFST 0x00000650 +/* falcona0,falconb0,sienaa0=net_func_bar2,falcona0=char_func_bar0 */ + +#define FRF_AZ_BUF_UPD_CMD_LBN 63 +#define FRF_AZ_BUF_UPD_CMD_WIDTH 1 +#define FRF_AZ_BUF_CLR_CMD_LBN 62 +#define FRF_AZ_BUF_CLR_CMD_WIDTH 1 +#define FRF_AZ_BUF_CLR_END_ID_LBN 32 +#define FRF_AZ_BUF_CLR_END_ID_WIDTH 20 +#define FRF_AZ_BUF_CLR_START_ID_LBN 0 +#define FRF_AZ_BUF_CLR_START_ID_WIDTH 20 + + +/*------------------------------------------------------------*/ +/* + * FR_AZ_SRM_UPD_EVQ_REG(128bit): + * Buffer table update register + */ +#define FR_AZ_SRM_UPD_EVQ_REG_OFST 0x00000660 +/* falcona0,falconb0,sienaa0=net_func_bar2,falcona0=char_func_bar0 */ + +#define FRF_AZ_SRM_UPD_EVQ_ID_LBN 0 +#define FRF_AZ_SRM_UPD_EVQ_ID_WIDTH 12 + + +/*------------------------------------------------------------*/ +/* + * FR_AZ_SRAM_PARITY_REG(128bit): + * SRAM parity register. + */ +#define FR_AZ_SRAM_PARITY_REG_OFST 0x00000670 +/* falcona0,falconb0,sienaa0=net_func_bar2,falcona0=char_func_bar0 */ + +#define FRF_CZ_BYPASS_ECC_LBN 3 +#define FRF_CZ_BYPASS_ECC_WIDTH 1 +#define FRF_CZ_SEC_INT_LBN 2 +#define FRF_CZ_SEC_INT_WIDTH 1 +#define FRF_CZ_FORCE_SRAM_DOUBLE_ERR_LBN 1 +#define FRF_CZ_FORCE_SRAM_DOUBLE_ERR_WIDTH 1 +#define FRF_AB_FORCE_SRAM_PERR_LBN 0 +#define FRF_AB_FORCE_SRAM_PERR_WIDTH 1 +#define FRF_CZ_FORCE_SRAM_SINGLE_ERR_LBN 0 +#define FRF_CZ_FORCE_SRAM_SINGLE_ERR_WIDTH 1 + + +/*------------------------------------------------------------*/ +/* + * FR_AZ_RX_CFG_REG(128bit): + * Receive configuration register + */ +#define FR_AZ_RX_CFG_REG_OFST 0x00000800 +/* falcona0,falconb0,sienaa0=net_func_bar2,falcona0=char_func_bar0 */ + +#define FRF_CZ_RX_MIN_KBUF_SIZE_LBN 72 +#define FRF_CZ_RX_MIN_KBUF_SIZE_WIDTH 14 +#define FRF_CZ_RX_HDR_SPLIT_EN_LBN 71 +#define FRF_CZ_RX_HDR_SPLIT_EN_WIDTH 1 +#define FRF_CZ_RX_HDR_SPLIT_PLD_BUF_SIZE_LBN 62 +#define FRF_CZ_RX_HDR_SPLIT_PLD_BUF_SIZE_WIDTH 9 +#define FRF_CZ_RX_HDR_SPLIT_HDR_BUF_SIZE_LBN 53 +#define FRF_CZ_RX_HDR_SPLIT_HDR_BUF_SIZE_WIDTH 9 +#define FRF_CZ_RX_PRE_RFF_IPG_LBN 49 +#define FRF_CZ_RX_PRE_RFF_IPG_WIDTH 4 +#define FRF_BZ_RX_TCP_SUP_LBN 48 +#define FRF_BZ_RX_TCP_SUP_WIDTH 1 +#define FRF_BZ_RX_INGR_EN_LBN 47 +#define FRF_BZ_RX_INGR_EN_WIDTH 1 +#define FRF_BZ_RX_IP_HASH_LBN 46 +#define FRF_BZ_RX_IP_HASH_WIDTH 1 +#define FRF_BZ_RX_HASH_ALG_LBN 45 +#define FRF_BZ_RX_HASH_ALG_WIDTH 1 +#define FRF_BZ_RX_HASH_INSRT_HDR_LBN 44 +#define FRF_BZ_RX_HASH_INSRT_HDR_WIDTH 1 +#define FRF_BZ_RX_DESC_PUSH_EN_LBN 43 +#define FRF_BZ_RX_DESC_PUSH_EN_WIDTH 1 +#define FRF_BZ_RX_RDW_PATCH_EN_LBN 42 +#define FRF_BZ_RX_RDW_PATCH_EN_WIDTH 1 +#define FRF_BB_RX_PCI_BURST_SIZE_LBN 39 +#define FRF_BB_RX_PCI_BURST_SIZE_WIDTH 3 +#define FRF_BZ_RX_OWNERR_CTL_LBN 38 +#define FRF_BZ_RX_OWNERR_CTL_WIDTH 1 +#define FRF_BZ_RX_XON_TX_TH_LBN 33 +#define FRF_BZ_RX_XON_TX_TH_WIDTH 5 +#define FRF_AA_RX_DESC_PUSH_EN_LBN 35 +#define FRF_AA_RX_DESC_PUSH_EN_WIDTH 1 +#define FRF_AA_RX_RDW_PATCH_EN_LBN 34 +#define FRF_AA_RX_RDW_PATCH_EN_WIDTH 1 +#define FRF_AA_RX_PCI_BURST_SIZE_LBN 31 +#define FRF_AA_RX_PCI_BURST_SIZE_WIDTH 3 +#define FRF_BZ_RX_XOFF_TX_TH_LBN 28 +#define FRF_BZ_RX_XOFF_TX_TH_WIDTH 5 +#define FRF_AA_RX_OWNERR_CTL_LBN 30 +#define FRF_AA_RX_OWNERR_CTL_WIDTH 1 +#define FRF_AA_RX_XON_TX_TH_LBN 25 +#define FRF_AA_RX_XON_TX_TH_WIDTH 5 +#define FRF_BZ_RX_USR_BUF_SIZE_LBN 19 +#define FRF_BZ_RX_USR_BUF_SIZE_WIDTH 9 +#define FRF_AA_RX_XOFF_TX_TH_LBN 20 +#define FRF_AA_RX_XOFF_TX_TH_WIDTH 5 +#define FRF_AA_RX_USR_BUF_SIZE_LBN 11 +#define FRF_AA_RX_USR_BUF_SIZE_WIDTH 9 +#define FRF_BZ_RX_XON_MAC_TH_LBN 10 +#define FRF_BZ_RX_XON_MAC_TH_WIDTH 9 +#define FRF_AA_RX_XON_MAC_TH_LBN 6 +#define FRF_AA_RX_XON_MAC_TH_WIDTH 5 +#define FRF_BZ_RX_XOFF_MAC_TH_LBN 1 +#define FRF_BZ_RX_XOFF_MAC_TH_WIDTH 9 +#define FRF_AA_RX_XOFF_MAC_TH_LBN 1 +#define FRF_AA_RX_XOFF_MAC_TH_WIDTH 5 +#define FRF_AZ_RX_XOFF_MAC_EN_LBN 0 +#define FRF_AZ_RX_XOFF_MAC_EN_WIDTH 1 + + +/*------------------------------------------------------------*/ +/* + * FR_AZ_RX_FILTER_CTL_REG(128bit): + * Receive filter control registers + */ +#define FR_AZ_RX_FILTER_CTL_REG_OFST 0x00000810 +/* falconb0,sienaa0=net_func_bar2,falcona0=char_func_bar0 */ + +#define FRF_CZ_ETHERNET_WILDCARD_SEARCH_LIMIT_LBN 94 +#define FRF_CZ_ETHERNET_WILDCARD_SEARCH_LIMIT_WIDTH 8 +#define FRF_CZ_ETHERNET_FULL_SEARCH_LIMIT_LBN 86 +#define FRF_CZ_ETHERNET_FULL_SEARCH_LIMIT_WIDTH 8 +#define FRF_CZ_RX_FILTER_ALL_VLAN_ETHERTYPES_LBN 85 +#define FRF_CZ_RX_FILTER_ALL_VLAN_ETHERTYPES_WIDTH 1 +#define FRF_CZ_RX_VLAN_MATCH_ETHERTYPE_LBN 69 +#define FRF_CZ_RX_VLAN_MATCH_ETHERTYPE_WIDTH 16 +#define FRF_CZ_MULTICAST_NOMATCH_Q_ID_LBN 57 +#define FRF_CZ_MULTICAST_NOMATCH_Q_ID_WIDTH 12 +#define FRF_CZ_MULTICAST_NOMATCH_RSS_ENABLED_LBN 56 +#define FRF_CZ_MULTICAST_NOMATCH_RSS_ENABLED_WIDTH 1 +#define FRF_CZ_MULTICAST_NOMATCH_IP_OVERRIDE_LBN 55 +#define FRF_CZ_MULTICAST_NOMATCH_IP_OVERRIDE_WIDTH 1 +#define FRF_CZ_UNICAST_NOMATCH_Q_ID_LBN 43 +#define FRF_CZ_UNICAST_NOMATCH_Q_ID_WIDTH 12 +#define FRF_CZ_UNICAST_NOMATCH_RSS_ENABLED_LBN 42 +#define FRF_CZ_UNICAST_NOMATCH_RSS_ENABLED_WIDTH 1 +#define FRF_CZ_UNICAST_NOMATCH_IP_OVERRIDE_LBN 41 +#define FRF_CZ_UNICAST_NOMATCH_IP_OVERRIDE_WIDTH 1 +#define FRF_BZ_SCATTER_ENBL_NO_MATCH_Q_LBN 40 +#define FRF_BZ_SCATTER_ENBL_NO_MATCH_Q_WIDTH 1 +#define FRF_AZ_UDP_FULL_SRCH_LIMIT_LBN 32 +#define FRF_AZ_UDP_FULL_SRCH_LIMIT_WIDTH 8 +#define FRF_AZ_NUM_KER_LBN 24 +#define FRF_AZ_NUM_KER_WIDTH 2 +#define FRF_AZ_UDP_WILD_SRCH_LIMIT_LBN 16 +#define FRF_AZ_UDP_WILD_SRCH_LIMIT_WIDTH 8 +#define FRF_AZ_TCP_WILD_SRCH_LIMIT_LBN 8 +#define FRF_AZ_TCP_WILD_SRCH_LIMIT_WIDTH 8 +#define FRF_AZ_TCP_FULL_SRCH_LIMIT_LBN 0 +#define FRF_AZ_TCP_FULL_SRCH_LIMIT_WIDTH 8 + + +/*------------------------------------------------------------*/ +/* + * FR_AZ_RX_FLUSH_DESCQ_REG(128bit): + * Receive flush descriptor queue register + */ +#define FR_AZ_RX_FLUSH_DESCQ_REG_OFST 0x00000820 +/* falcona0,falconb0,sienaa0=net_func_bar2,falcona0=char_func_bar0 */ + +#define FRF_AZ_RX_FLUSH_DESCQ_CMD_LBN 24 +#define FRF_AZ_RX_FLUSH_DESCQ_CMD_WIDTH 1 +#define FRF_AZ_RX_FLUSH_DESCQ_LBN 0 +#define FRF_AZ_RX_FLUSH_DESCQ_WIDTH 12 + + +/*------------------------------------------------------------*/ +/* + * FR_BZ_RX_DESC_UPD_REGP0(128bit): + * Receive descriptor update register. + */ +#define FR_BZ_RX_DESC_UPD_REGP0_OFST 0x00000830 +/* falconb0,sienaa0=net_func_bar2 */ +#define FR_AZ_RX_DESC_UPD_REGP0_STEP 8192 +#define FR_BZ_RX_DESC_UPD_REGP0_ROWS 1024 +/* + * FR_AA_RX_DESC_UPD_REG_KER(128bit): + * Receive descriptor update register. + */ +#define FR_AA_RX_DESC_UPD_REG_KER_OFST 0x00000830 +/* falcona0=net_func_bar2 */ +#define FR_AA_RX_DESC_UPD_REG_KER_STEP 8192 +#define FR_AA_RX_DESC_UPD_REG_KER_ROWS 4 +/* + * FR_AB_RX_DESC_UPD_REGP123(128bit): + * Receive descriptor update register. + */ +#define FR_AB_RX_DESC_UPD_REGP123_OFST 0x01000830 +/* falconb0=net_func_bar2,falcona0=char_func_bar0 */ +#define FR_AB_RX_DESC_UPD_REGP123_STEP 8192 +#define FR_AB_RX_DESC_UPD_REGP123_ROWS 3072 +/* + * FR_AA_RX_DESC_UPD_REGP0(128bit): + * Receive descriptor update register. + */ +#define FR_AA_RX_DESC_UPD_REGP0_OFST 0x00008830 +/* falcona0=char_func_bar0 */ +/* FR_AZ_RX_DESC_UPD_REGP0_STEP 8192 */ +#define FR_AA_RX_DESC_UPD_REGP0_ROWS 1020 + +#define FRF_AZ_RX_DESC_WPTR_LBN 96 +#define FRF_AZ_RX_DESC_WPTR_WIDTH 12 +#define FRF_AZ_RX_DESC_PUSH_CMD_LBN 95 +#define FRF_AZ_RX_DESC_PUSH_CMD_WIDTH 1 +#define FRF_AZ_RX_DESC_LBN 0 +#define FRF_AZ_RX_DESC_WIDTH 64 + + +/*------------------------------------------------------------*/ +/* + * FR_AZ_RX_DC_CFG_REG(128bit): + * Receive descriptor cache configuration register + */ +#define FR_AZ_RX_DC_CFG_REG_OFST 0x00000840 +/* falcona0,falconb0,sienaa0=net_func_bar2,falcona0=char_func_bar0 */ + +#define FRF_AB_RX_MAX_PF_LBN 2 +#define FRF_AB_RX_MAX_PF_WIDTH 2 +#define FRF_AZ_RX_DC_SIZE_LBN 0 +#define FRF_AZ_RX_DC_SIZE_WIDTH 2 +#define FFE_AZ_RX_DC_SIZE_64 3 +#define FFE_AZ_RX_DC_SIZE_32 2 +#define FFE_AZ_RX_DC_SIZE_16 1 +#define FFE_AZ_RX_DC_SIZE_8 0 + + +/*------------------------------------------------------------*/ +/* + * FR_AZ_RX_DC_PF_WM_REG(128bit): + * Receive descriptor cache pre-fetch watermark register + */ +#define FR_AZ_RX_DC_PF_WM_REG_OFST 0x00000850 +/* falcona0,falconb0,sienaa0=net_func_bar2,falcona0=char_func_bar0 */ + +#define FRF_AZ_RX_DC_PF_HWM_LBN 6 +#define FRF_AZ_RX_DC_PF_HWM_WIDTH 6 +#define FRF_AZ_RX_DC_PF_LWM_LBN 0 +#define FRF_AZ_RX_DC_PF_LWM_WIDTH 6 + + +/*------------------------------------------------------------*/ +/* + * FR_BZ_RX_RSS_TKEY_REG(128bit): + * RSS Toeplitz hash key + */ +#define FR_BZ_RX_RSS_TKEY_REG_OFST 0x00000860 +/* falconb0,sienaa0=net_func_bar2 */ + +#define FRF_BZ_RX_RSS_TKEY_HI_LBN 64 +#define FRF_BZ_RX_RSS_TKEY_HI_WIDTH 64 +#define FRF_BZ_RX_RSS_TKEY_LO_LBN 0 +#define FRF_BZ_RX_RSS_TKEY_LO_WIDTH 64 + + +/*------------------------------------------------------------*/ +/* + * FR_AZ_RX_NODESC_DROP_REG(128bit): + * Receive dropped packet counter register + */ +#define FR_AZ_RX_NODESC_DROP_REG_OFST 0x00000880 +/* falcona0,falconb0,sienaa0=net_func_bar2,falcona0=char_func_bar0 */ + +#define FRF_CZ_RX_NODESC_DROP_CNT_LBN 0 +#define FRF_CZ_RX_NODESC_DROP_CNT_WIDTH 32 +#define FRF_AB_RX_NODESC_DROP_CNT_LBN 0 +#define FRF_AB_RX_NODESC_DROP_CNT_WIDTH 16 + + +/*------------------------------------------------------------*/ +/* + * FR_AA_RX_SELF_RST_REG(128bit): + * Receive self reset register + */ +#define FR_AA_RX_SELF_RST_REG_OFST 0x00000890 +/* falcona0=net_func_bar2,falcona0=char_func_bar0 */ + +#define FRF_AA_RX_ISCSI_DIS_LBN 17 +#define FRF_AA_RX_ISCSI_DIS_WIDTH 1 +#define FRF_AA_RX_SW_RST_REG_LBN 16 +#define FRF_AA_RX_SW_RST_REG_WIDTH 1 +#define FRF_AA_RX_SELF_RST_EN_LBN 8 +#define FRF_AA_RX_SELF_RST_EN_WIDTH 1 +#define FRF_AA_RX_MAX_PF_LAT_LBN 4 +#define FRF_AA_RX_MAX_PF_LAT_WIDTH 4 +#define FRF_AA_RX_MAX_LU_LAT_LBN 0 +#define FRF_AA_RX_MAX_LU_LAT_WIDTH 4 + + +/*------------------------------------------------------------*/ +/* + * FR_AZ_RX_DEBUG_REG(128bit): + * undocumented register + */ +#define FR_AZ_RX_DEBUG_REG_OFST 0x000008a0 +/* falcona0,falconb0,sienaa0=net_func_bar2,falcona0=char_func_bar0 */ + +#define FRF_AZ_RX_DEBUG_LBN 0 +#define FRF_AZ_RX_DEBUG_WIDTH 64 + + +/*------------------------------------------------------------*/ +/* + * FR_AZ_RX_PUSH_DROP_REG(128bit): + * Receive descriptor push dropped counter register + */ +#define FR_AZ_RX_PUSH_DROP_REG_OFST 0x000008b0 +/* falcona0,falconb0,sienaa0=net_func_bar2,falcona0=char_func_bar0 */ + +#define FRF_AZ_RX_PUSH_DROP_CNT_LBN 0 +#define FRF_AZ_RX_PUSH_DROP_CNT_WIDTH 32 + + +/*------------------------------------------------------------*/ +/* + * FR_CZ_RX_RSS_IPV6_REG1(128bit): + * IPv6 RSS Toeplitz hash key low bytes + */ +#define FR_CZ_RX_RSS_IPV6_REG1_OFST 0x000008d0 +/* sienaa0=net_func_bar2 */ + +#define FRF_CZ_RX_RSS_IPV6_TKEY_LO_LBN 0 +#define FRF_CZ_RX_RSS_IPV6_TKEY_LO_WIDTH 128 + + +/*------------------------------------------------------------*/ +/* + * FR_CZ_RX_RSS_IPV6_REG2(128bit): + * IPv6 RSS Toeplitz hash key middle bytes + */ +#define FR_CZ_RX_RSS_IPV6_REG2_OFST 0x000008e0 +/* sienaa0=net_func_bar2 */ + +#define FRF_CZ_RX_RSS_IPV6_TKEY_MID_LBN 0 +#define FRF_CZ_RX_RSS_IPV6_TKEY_MID_WIDTH 128 + + +/*------------------------------------------------------------*/ +/* + * FR_CZ_RX_RSS_IPV6_REG3(128bit): + * IPv6 RSS Toeplitz hash key upper bytes and IPv6 RSS settings + */ +#define FR_CZ_RX_RSS_IPV6_REG3_OFST 0x000008f0 +/* sienaa0=net_func_bar2 */ + +#define FRF_CZ_RX_RSS_IPV6_THASH_ENABLE_LBN 66 +#define FRF_CZ_RX_RSS_IPV6_THASH_ENABLE_WIDTH 1 +#define FRF_CZ_RX_RSS_IPV6_IP_THASH_ENABLE_LBN 65 +#define FRF_CZ_RX_RSS_IPV6_IP_THASH_ENABLE_WIDTH 1 +#define FRF_CZ_RX_RSS_IPV6_TCP_SUPPRESS_LBN 64 +#define FRF_CZ_RX_RSS_IPV6_TCP_SUPPRESS_WIDTH 1 +#define FRF_CZ_RX_RSS_IPV6_TKEY_HI_LBN 0 +#define FRF_CZ_RX_RSS_IPV6_TKEY_HI_WIDTH 64 + + +/*------------------------------------------------------------*/ +/* + * FR_AZ_TX_FLUSH_DESCQ_REG(128bit): + * Transmit flush descriptor queue register + */ +#define FR_AZ_TX_FLUSH_DESCQ_REG_OFST 0x00000a00 +/* falcona0,falconb0,sienaa0=net_func_bar2,falcona0=char_func_bar0 */ + +#define FRF_AZ_TX_FLUSH_DESCQ_CMD_LBN 12 +#define FRF_AZ_TX_FLUSH_DESCQ_CMD_WIDTH 1 +#define FRF_AZ_TX_FLUSH_DESCQ_LBN 0 +#define FRF_AZ_TX_FLUSH_DESCQ_WIDTH 12 + + +/*------------------------------------------------------------*/ +/* + * FR_BZ_TX_DESC_UPD_REGP0(128bit): + * Transmit descriptor update register. + */ +#define FR_BZ_TX_DESC_UPD_REGP0_OFST 0x00000a10 +/* falconb0,sienaa0=net_func_bar2 */ +#define FR_AZ_TX_DESC_UPD_REGP0_STEP 8192 +#define FR_BZ_TX_DESC_UPD_REGP0_ROWS 1024 +/* + * FR_AA_TX_DESC_UPD_REG_KER(128bit): + * Transmit descriptor update register. + */ +#define FR_AA_TX_DESC_UPD_REG_KER_OFST 0x00000a10 +/* falcona0=net_func_bar2 */ +#define FR_AA_TX_DESC_UPD_REG_KER_STEP 8192 +#define FR_AA_TX_DESC_UPD_REG_KER_ROWS 8 +/* + * FR_AB_TX_DESC_UPD_REGP123(128bit): + * Transmit descriptor update register. + */ +#define FR_AB_TX_DESC_UPD_REGP123_OFST 0x01000a10 +/* falconb0=net_func_bar2,falcona0=char_func_bar0 */ +#define FR_AB_TX_DESC_UPD_REGP123_STEP 8192 +#define FR_AB_TX_DESC_UPD_REGP123_ROWS 3072 +/* + * FR_AA_TX_DESC_UPD_REGP0(128bit): + * Transmit descriptor update register. + */ +#define FR_AA_TX_DESC_UPD_REGP0_OFST 0x00008a10 +/* falcona0=char_func_bar0 */ +/* FR_AZ_TX_DESC_UPD_REGP0_STEP 8192 */ +#define FR_AA_TX_DESC_UPD_REGP0_ROWS 1020 + +#define FRF_AZ_TX_DESC_WPTR_LBN 96 +#define FRF_AZ_TX_DESC_WPTR_WIDTH 12 +#define FRF_AZ_TX_DESC_PUSH_CMD_LBN 95 +#define FRF_AZ_TX_DESC_PUSH_CMD_WIDTH 1 +#define FRF_AZ_TX_DESC_LBN 0 +#define FRF_AZ_TX_DESC_WIDTH 95 + + +/*------------------------------------------------------------*/ +/* + * FR_AZ_TX_DC_CFG_REG(128bit): + * Transmit descriptor cache configuration register + */ +#define FR_AZ_TX_DC_CFG_REG_OFST 0x00000a20 +/* falcona0,falconb0,sienaa0=net_func_bar2,falcona0=char_func_bar0 */ + +#define FRF_AZ_TX_DC_SIZE_LBN 0 +#define FRF_AZ_TX_DC_SIZE_WIDTH 2 +#define FFE_AZ_TX_DC_SIZE_32 2 +#define FFE_AZ_TX_DC_SIZE_16 1 +#define FFE_AZ_TX_DC_SIZE_8 0 + + +/*------------------------------------------------------------*/ +/* + * FR_AA_TX_CHKSM_CFG_REG(128bit): + * Transmit checksum configuration register + */ +#define FR_AA_TX_CHKSM_CFG_REG_OFST 0x00000a30 +/* falcona0=net_func_bar2,falcona0=char_func_bar0 */ + +#define FRF_AA_TX_Q_CHKSM_DIS_96_127_LBN 96 +#define FRF_AA_TX_Q_CHKSM_DIS_96_127_WIDTH 32 +#define FRF_AA_TX_Q_CHKSM_DIS_64_95_LBN 64 +#define FRF_AA_TX_Q_CHKSM_DIS_64_95_WIDTH 32 +#define FRF_AA_TX_Q_CHKSM_DIS_32_63_LBN 32 +#define FRF_AA_TX_Q_CHKSM_DIS_32_63_WIDTH 32 +#define FRF_AA_TX_Q_CHKSM_DIS_0_31_LBN 0 +#define FRF_AA_TX_Q_CHKSM_DIS_0_31_WIDTH 32 + + +/*------------------------------------------------------------*/ +/* + * FR_AZ_TX_CFG_REG(128bit): + * Transmit configuration register + */ +#define FR_AZ_TX_CFG_REG_OFST 0x00000a50 +/* falcona0,falconb0,sienaa0=net_func_bar2,falcona0=char_func_bar0 */ + +#define FRF_CZ_TX_CONT_LOOKUP_THRESH_RANGE_LBN 114 +#define FRF_CZ_TX_CONT_LOOKUP_THRESH_RANGE_WIDTH 8 +#define FRF_CZ_TX_FILTER_TEST_MODE_BIT_LBN 113 +#define FRF_CZ_TX_FILTER_TEST_MODE_BIT_WIDTH 1 +#define FRF_CZ_TX_ETH_FILTER_WILD_SEARCH_RANGE_LBN 105 +#define FRF_CZ_TX_ETH_FILTER_WILD_SEARCH_RANGE_WIDTH 8 +#define FRF_CZ_TX_ETH_FILTER_FULL_SEARCH_RANGE_LBN 97 +#define FRF_CZ_TX_ETH_FILTER_FULL_SEARCH_RANGE_WIDTH 8 +#define FRF_CZ_TX_UDPIP_FILTER_WILD_SEARCH_RANGE_LBN 89 +#define FRF_CZ_TX_UDPIP_FILTER_WILD_SEARCH_RANGE_WIDTH 8 +#define FRF_CZ_TX_UDPIP_FILTER_FULL_SEARCH_RANGE_LBN 81 +#define FRF_CZ_TX_UDPIP_FILTER_FULL_SEARCH_RANGE_WIDTH 8 +#define FRF_CZ_TX_TCPIP_FILTER_WILD_SEARCH_RANGE_LBN 73 +#define FRF_CZ_TX_TCPIP_FILTER_WILD_SEARCH_RANGE_WIDTH 8 +#define FRF_CZ_TX_TCPIP_FILTER_FULL_SEARCH_RANGE_LBN 65 +#define FRF_CZ_TX_TCPIP_FILTER_FULL_SEARCH_RANGE_WIDTH 8 +#define FRF_CZ_TX_FILTER_ALL_VLAN_ETHERTYPES_BIT_LBN 64 +#define FRF_CZ_TX_FILTER_ALL_VLAN_ETHERTYPES_BIT_WIDTH 1 +#define FRF_CZ_TX_VLAN_MATCH_ETHERTYPE_RANGE_LBN 48 +#define FRF_CZ_TX_VLAN_MATCH_ETHERTYPE_RANGE_WIDTH 16 +#define FRF_CZ_TX_FILTER_EN_BIT_LBN 47 +#define FRF_CZ_TX_FILTER_EN_BIT_WIDTH 1 +#define FRF_AZ_TX_IP_ID_P0_OFS_LBN 16 +#define FRF_AZ_TX_IP_ID_P0_OFS_WIDTH 15 +#define FRF_AZ_TX_NO_EOP_DISC_EN_LBN 5 +#define FRF_AZ_TX_NO_EOP_DISC_EN_WIDTH 1 +#define FRF_AZ_TX_P1_PRI_EN_LBN 4 +#define FRF_AZ_TX_P1_PRI_EN_WIDTH 1 +#define FRF_AZ_TX_OWNERR_CTL_LBN 2 +#define FRF_AZ_TX_OWNERR_CTL_WIDTH 1 +#define FRF_AA_TX_NON_IP_DROP_DIS_LBN 1 +#define FRF_AA_TX_NON_IP_DROP_DIS_WIDTH 1 +#define FRF_AZ_TX_IP_ID_REP_EN_LBN 0 +#define FRF_AZ_TX_IP_ID_REP_EN_WIDTH 1 + + +/*------------------------------------------------------------*/ +/* + * FR_AZ_TX_PUSH_DROP_REG(128bit): + * Transmit push dropped register + */ +#define FR_AZ_TX_PUSH_DROP_REG_OFST 0x00000a60 +/* falcona0,falconb0,sienaa0=net_func_bar2,falcona0=char_func_bar0 */ + +#define FRF_AZ_TX_PUSH_DROP_CNT_LBN 0 +#define FRF_AZ_TX_PUSH_DROP_CNT_WIDTH 32 + + +/*------------------------------------------------------------*/ +/* + * FR_AZ_TX_RESERVED_REG(128bit): + * Transmit configuration register + */ +#define FR_AZ_TX_RESERVED_REG_OFST 0x00000a80 +/* falcona0,falconb0,sienaa0=net_func_bar2,falcona0=char_func_bar0 */ + +#define FRF_AZ_TX_EVT_CNT_LBN 121 +#define FRF_AZ_TX_EVT_CNT_WIDTH 7 +#define FRF_AZ_TX_PREF_AGE_CNT_LBN 119 +#define FRF_AZ_TX_PREF_AGE_CNT_WIDTH 2 +#define FRF_AZ_TX_RD_COMP_TMR_LBN 96 +#define FRF_AZ_TX_RD_COMP_TMR_WIDTH 23 +#define FRF_AZ_TX_PUSH_EN_LBN 89 +#define FRF_AZ_TX_PUSH_EN_WIDTH 1 +#define FRF_AZ_TX_PUSH_CHK_DIS_LBN 88 +#define FRF_AZ_TX_PUSH_CHK_DIS_WIDTH 1 +#define FRF_AZ_TX_D_FF_FULL_P0_LBN 85 +#define FRF_AZ_TX_D_FF_FULL_P0_WIDTH 1 +#define FRF_AZ_TX_DMAR_ST_P0_LBN 81 +#define FRF_AZ_TX_DMAR_ST_P0_WIDTH 1 +#define FRF_AZ_TX_DMAQ_ST_LBN 78 +#define FRF_AZ_TX_DMAQ_ST_WIDTH 1 +#define FRF_AZ_TX_RX_SPACER_LBN 64 +#define FRF_AZ_TX_RX_SPACER_WIDTH 8 +#define FRF_AZ_TX_DROP_ABORT_EN_LBN 60 +#define FRF_AZ_TX_DROP_ABORT_EN_WIDTH 1 +#define FRF_AZ_TX_SOFT_EVT_EN_LBN 59 +#define FRF_AZ_TX_SOFT_EVT_EN_WIDTH 1 +#define FRF_AZ_TX_PS_EVT_DIS_LBN 58 +#define FRF_AZ_TX_PS_EVT_DIS_WIDTH 1 +#define FRF_AZ_TX_RX_SPACER_EN_LBN 57 +#define FRF_AZ_TX_RX_SPACER_EN_WIDTH 1 +#define FRF_AZ_TX_XP_TIMER_LBN 52 +#define FRF_AZ_TX_XP_TIMER_WIDTH 5 +#define FRF_AZ_TX_PREF_SPACER_LBN 44 +#define FRF_AZ_TX_PREF_SPACER_WIDTH 8 +#define FRF_AZ_TX_PREF_WD_TMR_LBN 22 +#define FRF_AZ_TX_PREF_WD_TMR_WIDTH 22 +#define FRF_AZ_TX_ONLY1TAG_LBN 21 +#define FRF_AZ_TX_ONLY1TAG_WIDTH 1 +#define FRF_AZ_TX_PREF_THRESHOLD_LBN 19 +#define FRF_AZ_TX_PREF_THRESHOLD_WIDTH 2 +#define FRF_AZ_TX_ONE_PKT_PER_Q_LBN 18 +#define FRF_AZ_TX_ONE_PKT_PER_Q_WIDTH 1 +#define FRF_AZ_TX_DIS_NON_IP_EV_LBN 17 +#define FRF_AZ_TX_DIS_NON_IP_EV_WIDTH 1 +#define FRF_AA_TX_DMA_FF_THR_LBN 16 +#define FRF_AA_TX_DMA_FF_THR_WIDTH 1 +#define FRF_AZ_TX_DMA_SPACER_LBN 8 +#define FRF_AZ_TX_DMA_SPACER_WIDTH 8 +#define FRF_AA_TX_TCP_DIS_LBN 7 +#define FRF_AA_TX_TCP_DIS_WIDTH 1 +#define FRF_BZ_TX_FLUSH_MIN_LEN_EN_LBN 7 +#define FRF_BZ_TX_FLUSH_MIN_LEN_EN_WIDTH 1 +#define FRF_AA_TX_IP_DIS_LBN 6 +#define FRF_AA_TX_IP_DIS_WIDTH 1 +#define FRF_AZ_TX_MAX_CPL_LBN 2 +#define FRF_AZ_TX_MAX_CPL_WIDTH 2 +#define FFE_AZ_TX_MAX_CPL_16 3 +#define FFE_AZ_TX_MAX_CPL_8 2 +#define FFE_AZ_TX_MAX_CPL_4 1 +#define FFE_AZ_TX_MAX_CPL_NOLIMIT 0 +#define FRF_AZ_TX_MAX_PREF_LBN 0 +#define FRF_AZ_TX_MAX_PREF_WIDTH 2 +#define FFE_AZ_TX_MAX_PREF_32 3 +#define FFE_AZ_TX_MAX_PREF_16 2 +#define FFE_AZ_TX_MAX_PREF_8 1 +#define FFE_AZ_TX_MAX_PREF_OFF 0 + + +/*------------------------------------------------------------*/ +/* + * FR_BZ_TX_PACE_REG(128bit): + * Transmit pace control register + */ +#define FR_BZ_TX_PACE_REG_OFST 0x00000a90 +/* falconb0,sienaa0=net_func_bar2 */ +/* + * FR_AA_TX_PACE_REG(128bit): + * Transmit pace control register + */ +#define FR_AA_TX_PACE_REG_OFST 0x00f80000 +/* falcona0=char_func_bar0 */ + +#define FRF_AZ_TX_PACE_SB_NOT_AF_LBN 19 +#define FRF_AZ_TX_PACE_SB_NOT_AF_WIDTH 10 +#define FRF_AZ_TX_PACE_SB_AF_LBN 9 +#define FRF_AZ_TX_PACE_SB_AF_WIDTH 10 +#define FRF_AZ_TX_PACE_FB_BASE_LBN 5 +#define FRF_AZ_TX_PACE_FB_BASE_WIDTH 4 +#define FRF_AZ_TX_PACE_BIN_TH_LBN 0 +#define FRF_AZ_TX_PACE_BIN_TH_WIDTH 5 + + +/*------------------------------------------------------------*/ +/* + * FR_AZ_TX_PACE_DROP_QID_REG(128bit): + * PACE Drop QID Counter + */ +#define FR_AZ_TX_PACE_DROP_QID_REG_OFST 0x00000aa0 +/* falconb0,sienaa0=net_func_bar2,falcona0=char_func_bar0 */ + +#define FRF_AZ_TX_PACE_QID_DRP_CNT_LBN 0 +#define FRF_AZ_TX_PACE_QID_DRP_CNT_WIDTH 16 + + +/*------------------------------------------------------------*/ +/* + * FR_AB_TX_VLAN_REG(128bit): + * Transmit VLAN tag register + */ +#define FR_AB_TX_VLAN_REG_OFST 0x00000ae0 +/* falconb0=net_func_bar2,falcona0=char_func_bar0 */ + +#define FRF_AB_TX_VLAN_EN_LBN 127 +#define FRF_AB_TX_VLAN_EN_WIDTH 1 +#define FRF_AB_TX_VLAN7_PORT1_EN_LBN 125 +#define FRF_AB_TX_VLAN7_PORT1_EN_WIDTH 1 +#define FRF_AB_TX_VLAN7_PORT0_EN_LBN 124 +#define FRF_AB_TX_VLAN7_PORT0_EN_WIDTH 1 +#define FRF_AB_TX_VLAN7_LBN 112 +#define FRF_AB_TX_VLAN7_WIDTH 12 +#define FRF_AB_TX_VLAN6_PORT1_EN_LBN 109 +#define FRF_AB_TX_VLAN6_PORT1_EN_WIDTH 1 +#define FRF_AB_TX_VLAN6_PORT0_EN_LBN 108 +#define FRF_AB_TX_VLAN6_PORT0_EN_WIDTH 1 +#define FRF_AB_TX_VLAN6_LBN 96 +#define FRF_AB_TX_VLAN6_WIDTH 12 +#define FRF_AB_TX_VLAN5_PORT1_EN_LBN 93 +#define FRF_AB_TX_VLAN5_PORT1_EN_WIDTH 1 +#define FRF_AB_TX_VLAN5_PORT0_EN_LBN 92 +#define FRF_AB_TX_VLAN5_PORT0_EN_WIDTH 1 +#define FRF_AB_TX_VLAN5_LBN 80 +#define FRF_AB_TX_VLAN5_WIDTH 12 +#define FRF_AB_TX_VLAN4_PORT1_EN_LBN 77 +#define FRF_AB_TX_VLAN4_PORT1_EN_WIDTH 1 +#define FRF_AB_TX_VLAN4_PORT0_EN_LBN 76 +#define FRF_AB_TX_VLAN4_PORT0_EN_WIDTH 1 +#define FRF_AB_TX_VLAN4_LBN 64 +#define FRF_AB_TX_VLAN4_WIDTH 12 +#define FRF_AB_TX_VLAN3_PORT1_EN_LBN 61 +#define FRF_AB_TX_VLAN3_PORT1_EN_WIDTH 1 +#define FRF_AB_TX_VLAN3_PORT0_EN_LBN 60 +#define FRF_AB_TX_VLAN3_PORT0_EN_WIDTH 1 +#define FRF_AB_TX_VLAN3_LBN 48 +#define FRF_AB_TX_VLAN3_WIDTH 12 +#define FRF_AB_TX_VLAN2_PORT1_EN_LBN 45 +#define FRF_AB_TX_VLAN2_PORT1_EN_WIDTH 1 +#define FRF_AB_TX_VLAN2_PORT0_EN_LBN 44 +#define FRF_AB_TX_VLAN2_PORT0_EN_WIDTH 1 +#define FRF_AB_TX_VLAN2_LBN 32 +#define FRF_AB_TX_VLAN2_WIDTH 12 +#define FRF_AB_TX_VLAN1_PORT1_EN_LBN 29 +#define FRF_AB_TX_VLAN1_PORT1_EN_WIDTH 1 +#define FRF_AB_TX_VLAN1_PORT0_EN_LBN 28 +#define FRF_AB_TX_VLAN1_PORT0_EN_WIDTH 1 +#define FRF_AB_TX_VLAN1_LBN 16 +#define FRF_AB_TX_VLAN1_WIDTH 12 +#define FRF_AB_TX_VLAN0_PORT1_EN_LBN 13 +#define FRF_AB_TX_VLAN0_PORT1_EN_WIDTH 1 +#define FRF_AB_TX_VLAN0_PORT0_EN_LBN 12 +#define FRF_AB_TX_VLAN0_PORT0_EN_WIDTH 1 +#define FRF_AB_TX_VLAN0_LBN 0 +#define FRF_AB_TX_VLAN0_WIDTH 12 + + +/*------------------------------------------------------------*/ +/* + * FR_AZ_TX_IPFIL_PORTEN_REG(128bit): + * Transmit filter control register + */ +#define FR_AZ_TX_IPFIL_PORTEN_REG_OFST 0x00000af0 +/* falconb0,sienaa0=net_func_bar2,falcona0=char_func_bar0 */ + +#define FRF_AZ_TX_MADR0_FIL_EN_LBN 64 +#define FRF_AZ_TX_MADR0_FIL_EN_WIDTH 1 +#define FRF_AB_TX_IPFIL31_PORT_EN_LBN 62 +#define FRF_AB_TX_IPFIL31_PORT_EN_WIDTH 1 +#define FRF_AB_TX_IPFIL30_PORT_EN_LBN 60 +#define FRF_AB_TX_IPFIL30_PORT_EN_WIDTH 1 +#define FRF_AB_TX_IPFIL29_PORT_EN_LBN 58 +#define FRF_AB_TX_IPFIL29_PORT_EN_WIDTH 1 +#define FRF_AB_TX_IPFIL28_PORT_EN_LBN 56 +#define FRF_AB_TX_IPFIL28_PORT_EN_WIDTH 1 +#define FRF_AB_TX_IPFIL27_PORT_EN_LBN 54 +#define FRF_AB_TX_IPFIL27_PORT_EN_WIDTH 1 +#define FRF_AB_TX_IPFIL26_PORT_EN_LBN 52 +#define FRF_AB_TX_IPFIL26_PORT_EN_WIDTH 1 +#define FRF_AB_TX_IPFIL25_PORT_EN_LBN 50 +#define FRF_AB_TX_IPFIL25_PORT_EN_WIDTH 1 +#define FRF_AB_TX_IPFIL24_PORT_EN_LBN 48 +#define FRF_AB_TX_IPFIL24_PORT_EN_WIDTH 1 +#define FRF_AB_TX_IPFIL23_PORT_EN_LBN 46 +#define FRF_AB_TX_IPFIL23_PORT_EN_WIDTH 1 +#define FRF_AB_TX_IPFIL22_PORT_EN_LBN 44 +#define FRF_AB_TX_IPFIL22_PORT_EN_WIDTH 1 +#define FRF_AB_TX_IPFIL21_PORT_EN_LBN 42 +#define FRF_AB_TX_IPFIL21_PORT_EN_WIDTH 1 +#define FRF_AB_TX_IPFIL20_PORT_EN_LBN 40 +#define FRF_AB_TX_IPFIL20_PORT_EN_WIDTH 1 +#define FRF_AB_TX_IPFIL19_PORT_EN_LBN 38 +#define FRF_AB_TX_IPFIL19_PORT_EN_WIDTH 1 +#define FRF_AB_TX_IPFIL18_PORT_EN_LBN 36 +#define FRF_AB_TX_IPFIL18_PORT_EN_WIDTH 1 +#define FRF_AB_TX_IPFIL17_PORT_EN_LBN 34 +#define FRF_AB_TX_IPFIL17_PORT_EN_WIDTH 1 +#define FRF_AB_TX_IPFIL16_PORT_EN_LBN 32 +#define FRF_AB_TX_IPFIL16_PORT_EN_WIDTH 1 +#define FRF_AB_TX_IPFIL15_PORT_EN_LBN 30 +#define FRF_AB_TX_IPFIL15_PORT_EN_WIDTH 1 +#define FRF_AB_TX_IPFIL14_PORT_EN_LBN 28 +#define FRF_AB_TX_IPFIL14_PORT_EN_WIDTH 1 +#define FRF_AB_TX_IPFIL13_PORT_EN_LBN 26 +#define FRF_AB_TX_IPFIL13_PORT_EN_WIDTH 1 +#define FRF_AB_TX_IPFIL12_PORT_EN_LBN 24 +#define FRF_AB_TX_IPFIL12_PORT_EN_WIDTH 1 +#define FRF_AB_TX_IPFIL11_PORT_EN_LBN 22 +#define FRF_AB_TX_IPFIL11_PORT_EN_WIDTH 1 +#define FRF_AB_TX_IPFIL10_PORT_EN_LBN 20 +#define FRF_AB_TX_IPFIL10_PORT_EN_WIDTH 1 +#define FRF_AB_TX_IPFIL9_PORT_EN_LBN 18 +#define FRF_AB_TX_IPFIL9_PORT_EN_WIDTH 1 +#define FRF_AB_TX_IPFIL8_PORT_EN_LBN 16 +#define FRF_AB_TX_IPFIL8_PORT_EN_WIDTH 1 +#define FRF_AB_TX_IPFIL7_PORT_EN_LBN 14 +#define FRF_AB_TX_IPFIL7_PORT_EN_WIDTH 1 +#define FRF_AB_TX_IPFIL6_PORT_EN_LBN 12 +#define FRF_AB_TX_IPFIL6_PORT_EN_WIDTH 1 +#define FRF_AB_TX_IPFIL5_PORT_EN_LBN 10 +#define FRF_AB_TX_IPFIL5_PORT_EN_WIDTH 1 +#define FRF_AB_TX_IPFIL4_PORT_EN_LBN 8 +#define FRF_AB_TX_IPFIL4_PORT_EN_WIDTH 1 +#define FRF_AB_TX_IPFIL3_PORT_EN_LBN 6 +#define FRF_AB_TX_IPFIL3_PORT_EN_WIDTH 1 +#define FRF_AB_TX_IPFIL2_PORT_EN_LBN 4 +#define FRF_AB_TX_IPFIL2_PORT_EN_WIDTH 1 +#define FRF_AB_TX_IPFIL1_PORT_EN_LBN 2 +#define FRF_AB_TX_IPFIL1_PORT_EN_WIDTH 1 +#define FRF_AB_TX_IPFIL0_PORT_EN_LBN 0 +#define FRF_AB_TX_IPFIL0_PORT_EN_WIDTH 1 + + +/*------------------------------------------------------------*/ +/* + * FR_AB_TX_IPFIL_TBL(128bit): + * Transmit IP source address filter table + */ +#define FR_AB_TX_IPFIL_TBL_OFST 0x00000b00 +/* falconb0=net_func_bar2,falcona0=char_func_bar0 */ +#define FR_AB_TX_IPFIL_TBL_STEP 16 +#define FR_AB_TX_IPFIL_TBL_ROWS 16 + +#define FRF_AB_TX_IPFIL_MASK_1_LBN 96 +#define FRF_AB_TX_IPFIL_MASK_1_WIDTH 32 +#define FRF_AB_TX_IP_SRC_ADR_1_LBN 64 +#define FRF_AB_TX_IP_SRC_ADR_1_WIDTH 32 +#define FRF_AB_TX_IPFIL_MASK_0_LBN 32 +#define FRF_AB_TX_IPFIL_MASK_0_WIDTH 32 +#define FRF_AB_TX_IP_SRC_ADR_0_LBN 0 +#define FRF_AB_TX_IP_SRC_ADR_0_WIDTH 32 + + +/*------------------------------------------------------------*/ +/* + * FR_BB_TX_SRC_MAC_TBL(128bit): + * Transmit IP source address filter table + */ +#define FR_BB_TX_SRC_MAC_TBL_OFST 0x00001000 +/* falconb0=net_func_bar2 */ +#define FR_BB_TX_SRC_MAC_TBL_STEP 16 +#define FR_BB_TX_SRC_MAC_TBL_ROWS 16 + +#define FRF_BB_TX_SRC_MAC_ADR_1_LBN 64 +#define FRF_BB_TX_SRC_MAC_ADR_1_WIDTH 48 +#define FRF_BB_TX_SRC_MAC_ADR_0_LBN 0 +#define FRF_BB_TX_SRC_MAC_ADR_0_WIDTH 48 + + +/*------------------------------------------------------------*/ +/* + * FR_BB_TX_SRC_MAC_CTL_REG(128bit): + * Transmit MAC source address filter control + */ +#define FR_BB_TX_SRC_MAC_CTL_REG_OFST 0x00001100 +/* falconb0=net_func_bar2 */ + +#define FRF_BB_TX_SRC_DROP_CTR_LBN 16 +#define FRF_BB_TX_SRC_DROP_CTR_WIDTH 16 +#define FRF_BB_TX_SRC_FLTR_EN_LBN 15 +#define FRF_BB_TX_SRC_FLTR_EN_WIDTH 1 +#define FRF_BB_TX_DROP_CTR_CLR_LBN 12 +#define FRF_BB_TX_DROP_CTR_CLR_WIDTH 1 +#define FRF_BB_TX_MAC_QID_SEL_LBN 0 +#define FRF_BB_TX_MAC_QID_SEL_WIDTH 3 + + +/*------------------------------------------------------------*/ +/* + * FR_AA_RX_DESC_PTR_TBL_KER(128bit): + * Receive descriptor pointer table + */ +#define FR_AA_RX_DESC_PTR_TBL_KER_OFST 0x00011800 +/* falcona0=net_func_bar2 */ +#define FR_AA_RX_DESC_PTR_TBL_KER_STEP 16 +#define FR_AA_RX_DESC_PTR_TBL_KER_ROWS 4 +/* + * FR_AZ_RX_DESC_PTR_TBL(128bit): + * Receive descriptor pointer table + */ +#define FR_AZ_RX_DESC_PTR_TBL_OFST 0x00f40000 +/* falconb0=net_func_bar2,sienaa0=net_func_bar2,falcona0=char_func_bar0 */ +#define FR_AZ_RX_DESC_PTR_TBL_STEP 16 +#define FR_AB_RX_DESC_PTR_TBL_ROWS 4096 +#define FR_CZ_RX_DESC_PTR_TBL_ROWS 1024 + +#define FRF_CZ_RX_HDR_SPLIT_LBN 90 +#define FRF_CZ_RX_HDR_SPLIT_WIDTH 1 +#define FRF_AA_RX_RESET_LBN 89 +#define FRF_AA_RX_RESET_WIDTH 1 +#define FRF_AZ_RX_ISCSI_DDIG_EN_LBN 88 +#define FRF_AZ_RX_ISCSI_DDIG_EN_WIDTH 1 +#define FRF_AZ_RX_ISCSI_HDIG_EN_LBN 87 +#define FRF_AZ_RX_ISCSI_HDIG_EN_WIDTH 1 +#define FRF_AZ_RX_DESC_PREF_ACT_LBN 86 +#define FRF_AZ_RX_DESC_PREF_ACT_WIDTH 1 +#define FRF_AZ_RX_DC_HW_RPTR_LBN 80 +#define FRF_AZ_RX_DC_HW_RPTR_WIDTH 6 +#define FRF_AZ_RX_DESCQ_HW_RPTR_LBN 68 +#define FRF_AZ_RX_DESCQ_HW_RPTR_WIDTH 12 +#define FRF_AZ_RX_DESCQ_SW_WPTR_LBN 56 +#define FRF_AZ_RX_DESCQ_SW_WPTR_WIDTH 12 +#define FRF_AZ_RX_DESCQ_BUF_BASE_ID_LBN 36 +#define FRF_AZ_RX_DESCQ_BUF_BASE_ID_WIDTH 20 +#define FRF_AZ_RX_DESCQ_EVQ_ID_LBN 24 +#define FRF_AZ_RX_DESCQ_EVQ_ID_WIDTH 12 +#define FRF_AZ_RX_DESCQ_OWNER_ID_LBN 10 +#define FRF_AZ_RX_DESCQ_OWNER_ID_WIDTH 14 +#define FRF_AZ_RX_DESCQ_LABEL_LBN 5 +#define FRF_AZ_RX_DESCQ_LABEL_WIDTH 5 +#define FRF_AZ_RX_DESCQ_SIZE_LBN 3 +#define FRF_AZ_RX_DESCQ_SIZE_WIDTH 2 +#define FFE_AZ_RX_DESCQ_SIZE_4K 3 +#define FFE_AZ_RX_DESCQ_SIZE_2K 2 +#define FFE_AZ_RX_DESCQ_SIZE_1K 1 +#define FFE_AZ_RX_DESCQ_SIZE_512 0 +#define FRF_AZ_RX_DESCQ_TYPE_LBN 2 +#define FRF_AZ_RX_DESCQ_TYPE_WIDTH 1 +#define FRF_AZ_RX_DESCQ_JUMBO_LBN 1 +#define FRF_AZ_RX_DESCQ_JUMBO_WIDTH 1 +#define FRF_AZ_RX_DESCQ_EN_LBN 0 +#define FRF_AZ_RX_DESCQ_EN_WIDTH 1 + + +/*------------------------------------------------------------*/ +/* + * FR_AA_TX_DESC_PTR_TBL_KER(128bit): + * Transmit descriptor pointer + */ +#define FR_AA_TX_DESC_PTR_TBL_KER_OFST 0x00011900 +/* falcona0=net_func_bar2 */ +#define FR_AA_TX_DESC_PTR_TBL_KER_STEP 16 +#define FR_AA_TX_DESC_PTR_TBL_KER_ROWS 8 +/* + * FR_AZ_TX_DESC_PTR_TBL(128bit): + * Transmit descriptor pointer + */ +#define FR_AZ_TX_DESC_PTR_TBL_OFST 0x00f50000 +/* falconb0=net_func_bar2,sienaa0=net_func_bar2,falcona0=char_func_bar0 */ +#define FR_AZ_TX_DESC_PTR_TBL_STEP 16 +#define FR_AB_TX_DESC_PTR_TBL_ROWS 4096 +#define FR_CZ_TX_DESC_PTR_TBL_ROWS 1024 + +#define FRF_CZ_TX_DPT_Q_MASK_WIDTH_LBN 94 +#define FRF_CZ_TX_DPT_Q_MASK_WIDTH_WIDTH 2 +#define FRF_CZ_TX_DPT_ETH_FILT_EN_LBN 93 +#define FRF_CZ_TX_DPT_ETH_FILT_EN_WIDTH 1 +#define FRF_CZ_TX_DPT_IP_FILT_EN_LBN 92 +#define FRF_CZ_TX_DPT_IP_FILT_EN_WIDTH 1 +#define FRF_BZ_TX_NON_IP_DROP_DIS_LBN 91 +#define FRF_BZ_TX_NON_IP_DROP_DIS_WIDTH 1 +#define FRF_BZ_TX_IP_CHKSM_DIS_LBN 90 +#define FRF_BZ_TX_IP_CHKSM_DIS_WIDTH 1 +#define FRF_BZ_TX_TCP_CHKSM_DIS_LBN 89 +#define FRF_BZ_TX_TCP_CHKSM_DIS_WIDTH 1 +#define FRF_AZ_TX_DESCQ_EN_LBN 88 +#define FRF_AZ_TX_DESCQ_EN_WIDTH 1 +#define FRF_AZ_TX_ISCSI_DDIG_EN_LBN 87 +#define FRF_AZ_TX_ISCSI_DDIG_EN_WIDTH 1 +#define FRF_AZ_TX_ISCSI_HDIG_EN_LBN 86 +#define FRF_AZ_TX_ISCSI_HDIG_EN_WIDTH 1 +#define FRF_AZ_TX_DC_HW_RPTR_LBN 80 +#define FRF_AZ_TX_DC_HW_RPTR_WIDTH 6 +#define FRF_AZ_TX_DESCQ_HW_RPTR_LBN 68 +#define FRF_AZ_TX_DESCQ_HW_RPTR_WIDTH 12 +#define FRF_AZ_TX_DESCQ_SW_WPTR_LBN 56 +#define FRF_AZ_TX_DESCQ_SW_WPTR_WIDTH 12 +#define FRF_AZ_TX_DESCQ_BUF_BASE_ID_LBN 36 +#define FRF_AZ_TX_DESCQ_BUF_BASE_ID_WIDTH 20 +#define FRF_AZ_TX_DESCQ_EVQ_ID_LBN 24 +#define FRF_AZ_TX_DESCQ_EVQ_ID_WIDTH 12 +#define FRF_AZ_TX_DESCQ_OWNER_ID_LBN 10 +#define FRF_AZ_TX_DESCQ_OWNER_ID_WIDTH 14 +#define FRF_AZ_TX_DESCQ_LABEL_LBN 5 +#define FRF_AZ_TX_DESCQ_LABEL_WIDTH 5 +#define FRF_AZ_TX_DESCQ_SIZE_LBN 3 +#define FRF_AZ_TX_DESCQ_SIZE_WIDTH 2 +#define FFE_AZ_TX_DESCQ_SIZE_4K 3 +#define FFE_AZ_TX_DESCQ_SIZE_2K 2 +#define FFE_AZ_TX_DESCQ_SIZE_1K 1 +#define FFE_AZ_TX_DESCQ_SIZE_512 0 +#define FRF_AZ_TX_DESCQ_TYPE_LBN 1 +#define FRF_AZ_TX_DESCQ_TYPE_WIDTH 2 +#define FRF_AZ_TX_DESCQ_FLUSH_LBN 0 +#define FRF_AZ_TX_DESCQ_FLUSH_WIDTH 1 + + +/*------------------------------------------------------------*/ +/* + * FR_AA_EVQ_PTR_TBL_KER(128bit): + * Event queue pointer table + */ +#define FR_AA_EVQ_PTR_TBL_KER_OFST 0x00011a00 +/* falcona0=net_func_bar2 */ +#define FR_AA_EVQ_PTR_TBL_KER_STEP 16 +#define FR_AA_EVQ_PTR_TBL_KER_ROWS 4 +/* + * FR_AZ_EVQ_PTR_TBL(128bit): + * Event queue pointer table + */ +#define FR_AZ_EVQ_PTR_TBL_OFST 0x00f60000 +/* sienaa0=net_func_bar2,falconb0=net_func_bar2,falcona0=char_func_bar0 */ +#define FR_AZ_EVQ_PTR_TBL_STEP 16 +#define FR_CZ_EVQ_PTR_TBL_ROWS 1024 +#define FR_AB_EVQ_PTR_TBL_ROWS 4096 + +#define FRF_BZ_EVQ_RPTR_IGN_LBN 40 +#define FRF_BZ_EVQ_RPTR_IGN_WIDTH 1 +#define FRF_AB_EVQ_WKUP_OR_INT_EN_LBN 39 +#define FRF_AB_EVQ_WKUP_OR_INT_EN_WIDTH 1 +#define FRF_CZ_EVQ_DOS_PROTECT_EN_LBN 39 +#define FRF_CZ_EVQ_DOS_PROTECT_EN_WIDTH 1 +#define FRF_AZ_EVQ_NXT_WPTR_LBN 24 +#define FRF_AZ_EVQ_NXT_WPTR_WIDTH 15 +#define FRF_AZ_EVQ_EN_LBN 23 +#define FRF_AZ_EVQ_EN_WIDTH 1 +#define FRF_AZ_EVQ_SIZE_LBN 20 +#define FRF_AZ_EVQ_SIZE_WIDTH 3 +#define FFE_AZ_EVQ_SIZE_32K 6 +#define FFE_AZ_EVQ_SIZE_16K 5 +#define FFE_AZ_EVQ_SIZE_8K 4 +#define FFE_AZ_EVQ_SIZE_4K 3 +#define FFE_AZ_EVQ_SIZE_2K 2 +#define FFE_AZ_EVQ_SIZE_1K 1 +#define FFE_AZ_EVQ_SIZE_512 0 +#define FRF_AZ_EVQ_BUF_BASE_ID_LBN 0 +#define FRF_AZ_EVQ_BUF_BASE_ID_WIDTH 20 + + +/*------------------------------------------------------------*/ +/* + * FR_AA_BUF_HALF_TBL_KER(64bit): + * Buffer table in half buffer table mode direct access by driver + */ +#define FR_AA_BUF_HALF_TBL_KER_OFST 0x00018000 +/* falcona0=net_func_bar2 */ +#define FR_AA_BUF_HALF_TBL_KER_STEP 8 +#define FR_AA_BUF_HALF_TBL_KER_ROWS 4096 +/* + * FR_AZ_BUF_HALF_TBL(64bit): + * Buffer table in half buffer table mode direct access by driver + */ +#define FR_AZ_BUF_HALF_TBL_OFST 0x00800000 +/* sienaa0=net_func_bar2,falconb0=net_func_bar2,falcona0=char_func_bar0 */ +#define FR_AZ_BUF_HALF_TBL_STEP 8 +#define FR_CZ_BUF_HALF_TBL_ROWS 147456 +#define FR_AB_BUF_HALF_TBL_ROWS 524288 + +#define FRF_AZ_BUF_ADR_HBUF_ODD_LBN 44 +#define FRF_AZ_BUF_ADR_HBUF_ODD_WIDTH 20 +#define FRF_AZ_BUF_OWNER_ID_HBUF_ODD_LBN 32 +#define FRF_AZ_BUF_OWNER_ID_HBUF_ODD_WIDTH 12 +#define FRF_AZ_BUF_ADR_HBUF_EVEN_LBN 12 +#define FRF_AZ_BUF_ADR_HBUF_EVEN_WIDTH 20 +#define FRF_AZ_BUF_OWNER_ID_HBUF_EVEN_LBN 0 +#define FRF_AZ_BUF_OWNER_ID_HBUF_EVEN_WIDTH 12 + + +/*------------------------------------------------------------*/ +/* + * FR_AA_BUF_FULL_TBL_KER(64bit): + * Buffer table in full buffer table mode direct access by driver + */ +#define FR_AA_BUF_FULL_TBL_KER_OFST 0x00018000 +/* falcona0=net_func_bar2 */ +#define FR_AA_BUF_FULL_TBL_KER_STEP 8 +#define FR_AA_BUF_FULL_TBL_KER_ROWS 4096 +/* + * FR_AZ_BUF_FULL_TBL(64bit): + * Buffer table in full buffer table mode direct access by driver + */ +#define FR_AZ_BUF_FULL_TBL_OFST 0x00800000 +/* sienaa0=net_func_bar2,falconb0=net_func_bar2,falcona0=char_func_bar0 */ +#define FR_AZ_BUF_FULL_TBL_STEP 8 +#define FR_CZ_BUF_FULL_TBL_ROWS 147456 +#define FR_AB_BUF_FULL_TBL_ROWS 917504 + +#define FRF_AZ_BUF_FULL_UNUSED_LBN 51 +#define FRF_AZ_BUF_FULL_UNUSED_WIDTH 13 +#define FRF_AZ_IP_DAT_BUF_SIZE_LBN 50 +#define FRF_AZ_IP_DAT_BUF_SIZE_WIDTH 1 +#define FRF_AZ_BUF_ADR_REGION_LBN 48 +#define FRF_AZ_BUF_ADR_REGION_WIDTH 2 +#define FFE_AZ_BUF_ADR_REGN3 3 +#define FFE_AZ_BUF_ADR_REGN2 2 +#define FFE_AZ_BUF_ADR_REGN1 1 +#define FFE_AZ_BUF_ADR_REGN0 0 +#define FRF_AZ_BUF_ADR_FBUF_LBN 14 +#define FRF_AZ_BUF_ADR_FBUF_WIDTH 34 +#define FRF_AZ_BUF_OWNER_ID_FBUF_LBN 0 +#define FRF_AZ_BUF_OWNER_ID_FBUF_WIDTH 14 + + +/*------------------------------------------------------------*/ +/* + * FR_AZ_RX_FILTER_TBL0(128bit): + * TCP/IPv4 Receive filter table + */ +#define FR_AZ_RX_FILTER_TBL0_OFST 0x00f00000 +/* falconb0,sienaa0=net_func_bar2,falcona0=char_func_bar0 */ +#define FR_AZ_RX_FILTER_TBL0_STEP 32 +#define FR_AZ_RX_FILTER_TBL0_ROWS 8192 +/* + * FR_AB_RX_FILTER_TBL1(128bit): + * TCP/IPv4 Receive filter table + */ +#define FR_AB_RX_FILTER_TBL1_OFST 0x00f00010 +/* falconb0=net_func_bar2,falcona0=char_func_bar0 */ +#define FR_AB_RX_FILTER_TBL1_STEP 32 +#define FR_AB_RX_FILTER_TBL1_ROWS 8192 + +#define FRF_BZ_RSS_EN_LBN 110 +#define FRF_BZ_RSS_EN_WIDTH 1 +#define FRF_BZ_SCATTER_EN_LBN 109 +#define FRF_BZ_SCATTER_EN_WIDTH 1 +#define FRF_AZ_TCP_UDP_LBN 108 +#define FRF_AZ_TCP_UDP_WIDTH 1 +#define FRF_AZ_RXQ_ID_LBN 96 +#define FRF_AZ_RXQ_ID_WIDTH 12 +#define FRF_AZ_DEST_IP_LBN 64 +#define FRF_AZ_DEST_IP_WIDTH 32 +#define FRF_AZ_DEST_PORT_TCP_LBN 48 +#define FRF_AZ_DEST_PORT_TCP_WIDTH 16 +#define FRF_AZ_SRC_IP_LBN 16 +#define FRF_AZ_SRC_IP_WIDTH 32 +#define FRF_AZ_SRC_TCP_DEST_UDP_LBN 0 +#define FRF_AZ_SRC_TCP_DEST_UDP_WIDTH 16 + + +/*------------------------------------------------------------*/ +/* + * FR_CZ_RX_MAC_FILTER_TBL0(128bit): + * Receive Ethernet filter table + */ +#define FR_CZ_RX_MAC_FILTER_TBL0_OFST 0x00f00010 +/* sienaa0=net_func_bar2 */ +#define FR_CZ_RX_MAC_FILTER_TBL0_STEP 32 +#define FR_CZ_RX_MAC_FILTER_TBL0_ROWS 512 + +#define FRF_CZ_RMFT_RSS_EN_LBN 75 +#define FRF_CZ_RMFT_RSS_EN_WIDTH 1 +#define FRF_CZ_RMFT_SCATTER_EN_LBN 74 +#define FRF_CZ_RMFT_SCATTER_EN_WIDTH 1 +#define FRF_CZ_RMFT_IP_OVERRIDE_LBN 73 +#define FRF_CZ_RMFT_IP_OVERRIDE_WIDTH 1 +#define FRF_CZ_RMFT_RXQ_ID_LBN 61 +#define FRF_CZ_RMFT_RXQ_ID_WIDTH 12 +#define FRF_CZ_RMFT_WILDCARD_MATCH_LBN 60 +#define FRF_CZ_RMFT_WILDCARD_MATCH_WIDTH 1 +#define FRF_CZ_RMFT_DEST_MAC_LBN 16 +#define FRF_CZ_RMFT_DEST_MAC_WIDTH 44 +#define FRF_CZ_RMFT_VLAN_ID_LBN 0 +#define FRF_CZ_RMFT_VLAN_ID_WIDTH 12 + + +/*------------------------------------------------------------*/ +/* + * FR_AZ_TIMER_TBL(128bit): + * Timer table + */ +#define FR_AZ_TIMER_TBL_OFST 0x00f70000 +/* sienaa0=net_func_bar2,falconb0=net_func_bar2,falcona0=char_func_bar0 */ +#define FR_AZ_TIMER_TBL_STEP 16 +#define FR_CZ_TIMER_TBL_ROWS 1024 +#define FR_AB_TIMER_TBL_ROWS 4096 + +#define FRF_CZ_TIMER_Q_EN_LBN 33 +#define FRF_CZ_TIMER_Q_EN_WIDTH 1 +#define FRF_CZ_INT_ARMD_LBN 32 +#define FRF_CZ_INT_ARMD_WIDTH 1 +#define FRF_CZ_INT_PEND_LBN 31 +#define FRF_CZ_INT_PEND_WIDTH 1 +#define FRF_CZ_HOST_NOTIFY_MODE_LBN 30 +#define FRF_CZ_HOST_NOTIFY_MODE_WIDTH 1 +#define FRF_CZ_RELOAD_TIMER_VAL_LBN 16 +#define FRF_CZ_RELOAD_TIMER_VAL_WIDTH 14 +#define FRF_CZ_TIMER_MODE_LBN 14 +#define FRF_CZ_TIMER_MODE_WIDTH 2 +#define FFE_CZ_TIMER_MODE_INT_HLDOFF 3 +#define FFE_CZ_TIMER_MODE_TRIG_START 2 +#define FFE_CZ_TIMER_MODE_IMMED_START 1 +#define FFE_CZ_TIMER_MODE_DIS 0 +#define FRF_AB_TIMER_MODE_LBN 12 +#define FRF_AB_TIMER_MODE_WIDTH 2 +#define FFE_AB_TIMER_MODE_INT_HLDOFF 2 +#define FFE_AB_TIMER_MODE_TRIG_START 2 +#define FFE_AB_TIMER_MODE_IMMED_START 1 +#define FFE_AB_TIMER_MODE_DIS 0 +#define FRF_CZ_TIMER_VAL_LBN 0 +#define FRF_CZ_TIMER_VAL_WIDTH 14 +#define FRF_AB_TIMER_VAL_LBN 0 +#define FRF_AB_TIMER_VAL_WIDTH 12 + + +/*------------------------------------------------------------*/ +/* + * FR_BZ_TX_PACE_TBL(128bit): + * Transmit pacing table + */ +#define FR_BZ_TX_PACE_TBL_OFST 0x00f80000 +/* sienaa0=net_func_bar2,falconb0=net_func_bar2 */ +#define FR_AZ_TX_PACE_TBL_STEP 16 +#define FR_CZ_TX_PACE_TBL_ROWS 1024 +#define FR_BB_TX_PACE_TBL_ROWS 4096 +/* + * FR_AA_TX_PACE_TBL(128bit): + * Transmit pacing table + */ +#define FR_AA_TX_PACE_TBL_OFST 0x00f80040 +/* falcona0=char_func_bar0 */ +/* FR_AZ_TX_PACE_TBL_STEP 16 */ +#define FR_AA_TX_PACE_TBL_ROWS 4092 + +#define FRF_AZ_TX_PACE_LBN 0 +#define FRF_AZ_TX_PACE_WIDTH 5 + + +/*------------------------------------------------------------*/ +/* + * FR_BZ_RX_INDIRECTION_TBL(7bit): + * RX Indirection Table + */ +#define FR_BZ_RX_INDIRECTION_TBL_OFST 0x00fb0000 +/* falconb0,sienaa0=net_func_bar2 */ +#define FR_BZ_RX_INDIRECTION_TBL_STEP 16 +#define FR_BZ_RX_INDIRECTION_TBL_ROWS 128 + +#define FRF_BZ_IT_QUEUE_LBN 0 +#define FRF_BZ_IT_QUEUE_WIDTH 6 + + +/*------------------------------------------------------------*/ +/* + * FR_CZ_TX_FILTER_TBL0(128bit): + * TCP/IPv4 Transmit filter table + */ +#define FR_CZ_TX_FILTER_TBL0_OFST 0x00fc0000 +/* sienaa0=net_func_bar2 */ +#define FR_CZ_TX_FILTER_TBL0_STEP 16 +#define FR_CZ_TX_FILTER_TBL0_ROWS 8192 + +#define FRF_CZ_TIFT_TCP_UDP_LBN 108 +#define FRF_CZ_TIFT_TCP_UDP_WIDTH 1 +#define FRF_CZ_TIFT_TXQ_ID_LBN 96 +#define FRF_CZ_TIFT_TXQ_ID_WIDTH 12 +#define FRF_CZ_TIFT_DEST_IP_LBN 64 +#define FRF_CZ_TIFT_DEST_IP_WIDTH 32 +#define FRF_CZ_TIFT_DEST_PORT_TCP_LBN 48 +#define FRF_CZ_TIFT_DEST_PORT_TCP_WIDTH 16 +#define FRF_CZ_TIFT_SRC_IP_LBN 16 +#define FRF_CZ_TIFT_SRC_IP_WIDTH 32 +#define FRF_CZ_TIFT_SRC_TCP_DEST_UDP_LBN 0 +#define FRF_CZ_TIFT_SRC_TCP_DEST_UDP_WIDTH 16 + + +/*------------------------------------------------------------*/ +/* + * FR_CZ_TX_MAC_FILTER_TBL0(128bit): + * Transmit Ethernet filter table + */ +#define FR_CZ_TX_MAC_FILTER_TBL0_OFST 0x00fe0000 +/* sienaa0=net_func_bar2 */ +#define FR_CZ_TX_MAC_FILTER_TBL0_STEP 16 +#define FR_CZ_TX_MAC_FILTER_TBL0_ROWS 512 + +#define FRF_CZ_TMFT_TXQ_ID_LBN 61 +#define FRF_CZ_TMFT_TXQ_ID_WIDTH 12 +#define FRF_CZ_TMFT_WILDCARD_MATCH_LBN 60 +#define FRF_CZ_TMFT_WILDCARD_MATCH_WIDTH 1 +#define FRF_CZ_TMFT_SRC_MAC_LBN 16 +#define FRF_CZ_TMFT_SRC_MAC_WIDTH 44 +#define FRF_CZ_TMFT_VLAN_ID_LBN 0 +#define FRF_CZ_TMFT_VLAN_ID_WIDTH 12 + + +/*------------------------------------------------------------*/ +/* + * FR_CZ_MC_TREG_SMEM(32bit): + * MC Shared Memory + */ +#define FR_CZ_MC_TREG_SMEM_OFST 0x00ff0000 +/* sienaa0=net_func_bar2 */ +#define FR_CZ_MC_TREG_SMEM_STEP 4 +#define FR_CZ_MC_TREG_SMEM_ROWS 512 + +#define FRF_CZ_MC_TREG_SMEM_ROW_LBN 0 +#define FRF_CZ_MC_TREG_SMEM_ROW_WIDTH 32 + + +/*------------------------------------------------------------*/ +/* + * FR_BB_MSIX_VECTOR_TABLE(128bit): + * MSIX Vector Table + */ +#define FR_BB_MSIX_VECTOR_TABLE_OFST 0x00ff0000 +/* falconb0=net_func_bar2 */ +#define FR_BZ_MSIX_VECTOR_TABLE_STEP 16 +#define FR_BB_MSIX_VECTOR_TABLE_ROWS 64 +/* + * FR_CZ_MSIX_VECTOR_TABLE(128bit): + * MSIX Vector Table + */ +#define FR_CZ_MSIX_VECTOR_TABLE_OFST 0x00000000 +/* sienaa0=pci_f0_bar4 */ +/* FR_BZ_MSIX_VECTOR_TABLE_STEP 16 */ +#define FR_CZ_MSIX_VECTOR_TABLE_ROWS 1024 + +#define FRF_BZ_MSIX_VECTOR_RESERVED_LBN 97 +#define FRF_BZ_MSIX_VECTOR_RESERVED_WIDTH 31 +#define FRF_BZ_MSIX_VECTOR_MASK_LBN 96 +#define FRF_BZ_MSIX_VECTOR_MASK_WIDTH 1 +#define FRF_BZ_MSIX_MESSAGE_DATA_LBN 64 +#define FRF_BZ_MSIX_MESSAGE_DATA_WIDTH 32 +#define FRF_BZ_MSIX_MESSAGE_ADDRESS_HI_LBN 32 +#define FRF_BZ_MSIX_MESSAGE_ADDRESS_HI_WIDTH 32 +#define FRF_BZ_MSIX_MESSAGE_ADDRESS_LO_LBN 0 +#define FRF_BZ_MSIX_MESSAGE_ADDRESS_LO_WIDTH 32 + + +/*------------------------------------------------------------*/ +/* + * FR_BB_MSIX_PBA_TABLE(32bit): + * MSIX Pending Bit Array + */ +#define FR_BB_MSIX_PBA_TABLE_OFST 0x00ff2000 +/* falconb0=net_func_bar2 */ +#define FR_BZ_MSIX_PBA_TABLE_STEP 4 +#define FR_BB_MSIX_PBA_TABLE_ROWS 2 +/* + * FR_CZ_MSIX_PBA_TABLE(32bit): + * MSIX Pending Bit Array + */ +#define FR_CZ_MSIX_PBA_TABLE_OFST 0x00008000 +/* sienaa0=pci_f0_bar4 */ +/* FR_BZ_MSIX_PBA_TABLE_STEP 4 */ +#define FR_CZ_MSIX_PBA_TABLE_ROWS 32 + +#define FRF_BZ_MSIX_PBA_PEND_DWORD_LBN 0 +#define FRF_BZ_MSIX_PBA_PEND_DWORD_WIDTH 32 + + +/*------------------------------------------------------------*/ +/* + * FR_AZ_SRM_DBG_REG(64bit): + * SRAM debug access + */ +#define FR_AZ_SRM_DBG_REG_OFST 0x03000000 +/* sienaa0=net_func_bar2,falconb0=net_func_bar2,falcona0=char_func_bar0 */ +#define FR_AZ_SRM_DBG_REG_STEP 8 +#define FR_CZ_SRM_DBG_REG_ROWS 262144 +#define FR_AB_SRM_DBG_REG_ROWS 2097152 + +#define FRF_AZ_SRM_DBG_LBN 0 +#define FRF_AZ_SRM_DBG_WIDTH 64 + + +/*------------------------------------------------------------*/ +/* + * FR_CZ_TB_MSIX_PBA_TABLE(1bit): + * MSIX Pending Bit Array + */ +#define FR_CZ_TB_MSIX_PBA_TABLE_OFST 0x00008000 +/* sienaa0=pci_f0_bar4 */ +#define FR_CZ_TB_MSIX_PBA_TABLE_STEP 4 +#define FR_CZ_TB_MSIX_PBA_TABLE_ROWS 1024 + +#define FRF_CZ_TB_MSIX_PBA_PEND_DWORD_LBN 0 +#define FRF_CZ_TB_MSIX_PBA_PEND_DWORD_WIDTH 32 + + +/*------------------------------------------------------------*/ +/* + * FR_AA_INT_ACK_CHAR(32bit): + * CHAR interrupt acknowledge register + */ +#define FR_AA_INT_ACK_CHAR_OFST 0x00000060 +/* falcona0=char_func_bar0 */ + +#define FRF_AA_INT_ACK_CHAR_FIELD_LBN 0 +#define FRF_AA_INT_ACK_CHAR_FIELD_WIDTH 32 + + +/*------------------------------------------------------------*/ +/* FS_DRIVER_EV */ +#define FSF_AZ_DRIVER_EV_SUBCODE_LBN 56 +#define FSF_AZ_DRIVER_EV_SUBCODE_WIDTH 4 +#define FSE_BZ_TX_DSC_ERROR_EV 15 +#define FSE_BZ_RX_DSC_ERROR_EV 14 +#define FSE_AA_RX_RECOVER_EV 11 +#define FSE_AZ_TIMER_EV 10 +#define FSE_AZ_TX_PKT_NON_TCP_UDP 9 +#define FSE_AZ_WAKE_UP_EV 6 +#define FSE_AZ_SRM_UPD_DONE_EV 5 +#define FSE_AB_EVQ_NOT_EN_EV 3 +#define FSE_AZ_EVQ_INIT_DONE_EV 2 +#define FSE_AZ_RX_DESCQ_FLS_DONE_EV 1 +#define FSE_AZ_TX_DESCQ_FLS_DONE_EV 0 +#define FSF_AZ_DRIVER_EV_SUBDATA_LBN 0 +#define FSF_AZ_DRIVER_EV_SUBDATA_WIDTH 14 + + +/*------------------------------------------------------------*/ +/* FS_EVENT_ENTRY */ +#define FSF_AZ_EV_CODE_LBN 60 +#define FSF_AZ_EV_CODE_WIDTH 4 +#define FSE_CZ_EV_CODE_MCDI_EV 12 +#define FSE_CZ_EV_CODE_USER_EV 8 +#define FSE_AZ_EV_CODE_DRV_GEN_EV 7 +#define FSE_AZ_EV_CODE_GLOBAL_EV 6 +#define FSE_AZ_EV_CODE_DRIVER_EV 5 +#define FSE_AZ_EV_CODE_TX_EV 2 +#define FSE_AZ_EV_CODE_RX_EV 0 +#define FSF_AZ_EV_DATA_LBN 0 +#define FSF_AZ_EV_DATA_WIDTH 60 + + +/*------------------------------------------------------------*/ +/* FS_GLOBAL_EV */ +#define FSF_BB_GLB_EV_RX_RECOVERY_LBN 12 +#define FSF_BB_GLB_EV_RX_RECOVERY_WIDTH 1 +#define FSF_AA_GLB_EV_RX_RECOVERY_LBN 11 +#define FSF_AA_GLB_EV_RX_RECOVERY_WIDTH 1 +#define FSF_BB_GLB_EV_XG_MGT_INTR_LBN 11 +#define FSF_BB_GLB_EV_XG_MGT_INTR_WIDTH 1 +#define FSF_AB_GLB_EV_XFP_PHY0_INTR_LBN 10 +#define FSF_AB_GLB_EV_XFP_PHY0_INTR_WIDTH 1 +#define FSF_AB_GLB_EV_XG_PHY0_INTR_LBN 9 +#define FSF_AB_GLB_EV_XG_PHY0_INTR_WIDTH 1 +#define FSF_AB_GLB_EV_G_PHY0_INTR_LBN 7 +#define FSF_AB_GLB_EV_G_PHY0_INTR_WIDTH 1 + + +/*------------------------------------------------------------*/ +/* FS_LEGACY_INT_VEC */ +#define FSF_AZ_NET_IVEC_FATAL_INT_LBN 64 +#define FSF_AZ_NET_IVEC_FATAL_INT_WIDTH 1 +#define FSF_AZ_NET_IVEC_INT_Q_LBN 40 +#define FSF_AZ_NET_IVEC_INT_Q_WIDTH 4 +#define FSF_AZ_NET_IVEC_INT_FLAG_LBN 32 +#define FSF_AZ_NET_IVEC_INT_FLAG_WIDTH 1 +#define FSF_AZ_NET_IVEC_EVQ_FIFO_HF_LBN 1 +#define FSF_AZ_NET_IVEC_EVQ_FIFO_HF_WIDTH 1 +#define FSF_AZ_NET_IVEC_EVQ_FIFO_AF_LBN 0 +#define FSF_AZ_NET_IVEC_EVQ_FIFO_AF_WIDTH 1 + + +/*------------------------------------------------------------*/ +/* FS_MC_XGMAC_FLTR_RULE_DEF */ +#define FSF_CZ_MC_XFRC_MODE_LBN 416 +#define FSF_CZ_MC_XFRC_MODE_WIDTH 1 +#define FSE_CZ_MC_XFRC_MODE_LAYERED 1 +#define FSE_CZ_MC_XFRC_MODE_SIMPLE 0 +#define FSF_CZ_MC_XFRC_HASH_LBN 384 +#define FSF_CZ_MC_XFRC_HASH_WIDTH 32 +#define FSF_CZ_MC_XFRC_LAYER4_BYTE_MASK_LBN 256 +#define FSF_CZ_MC_XFRC_LAYER4_BYTE_MASK_WIDTH 128 +#define FSF_CZ_MC_XFRC_LAYER3_BYTE_MASK_LBN 128 +#define FSF_CZ_MC_XFRC_LAYER3_BYTE_MASK_WIDTH 128 +#define FSF_CZ_MC_XFRC_LAYER2_OR_SIMPLE_BYTE_MASK_LBN 0 +#define FSF_CZ_MC_XFRC_LAYER2_OR_SIMPLE_BYTE_MASK_WIDTH 128 + + +/*------------------------------------------------------------*/ +/* FS_RX_EV */ +#define FSF_CZ_RX_EV_PKT_NOT_PARSED_LBN 58 +#define FSF_CZ_RX_EV_PKT_NOT_PARSED_WIDTH 1 +#define FSF_CZ_RX_EV_IPV6_PKT_LBN 57 +#define FSF_CZ_RX_EV_IPV6_PKT_WIDTH 1 +#define FSF_AZ_RX_EV_PKT_OK_LBN 56 +#define FSF_AZ_RX_EV_PKT_OK_WIDTH 1 +#define FSF_AZ_RX_EV_PAUSE_FRM_ERR_LBN 55 +#define FSF_AZ_RX_EV_PAUSE_FRM_ERR_WIDTH 1 +#define FSF_AZ_RX_EV_BUF_OWNER_ID_ERR_LBN 54 +#define FSF_AZ_RX_EV_BUF_OWNER_ID_ERR_WIDTH 1 +#define FSF_AZ_RX_EV_IP_FRAG_ERR_LBN 53 +#define FSF_AZ_RX_EV_IP_FRAG_ERR_WIDTH 1 +#define FSF_AZ_RX_EV_IP_HDR_CHKSUM_ERR_LBN 52 +#define FSF_AZ_RX_EV_IP_HDR_CHKSUM_ERR_WIDTH 1 +#define FSF_AZ_RX_EV_TCP_UDP_CHKSUM_ERR_LBN 51 +#define FSF_AZ_RX_EV_TCP_UDP_CHKSUM_ERR_WIDTH 1 +#define FSF_AZ_RX_EV_ETH_CRC_ERR_LBN 50 +#define FSF_AZ_RX_EV_ETH_CRC_ERR_WIDTH 1 +#define FSF_AZ_RX_EV_FRM_TRUNC_LBN 49 +#define FSF_AZ_RX_EV_FRM_TRUNC_WIDTH 1 +#define FSF_AA_RX_EV_DRIB_NIB_LBN 49 +#define FSF_AA_RX_EV_DRIB_NIB_WIDTH 1 +#define FSF_AZ_RX_EV_TOBE_DISC_LBN 47 +#define FSF_AZ_RX_EV_TOBE_DISC_WIDTH 1 +#define FSF_AZ_RX_EV_PKT_TYPE_LBN 44 +#define FSF_AZ_RX_EV_PKT_TYPE_WIDTH 3 +#define FSE_AZ_RX_EV_PKT_TYPE_VLAN_JUMBO 5 +#define FSE_AZ_RX_EV_PKT_TYPE_VLAN_LLC 4 +#define FSE_AZ_RX_EV_PKT_TYPE_VLAN 3 +#define FSE_AZ_RX_EV_PKT_TYPE_JUMBO 2 +#define FSE_AZ_RX_EV_PKT_TYPE_LLC 1 +#define FSE_AZ_RX_EV_PKT_TYPE_ETH 0 +#define FSF_AZ_RX_EV_HDR_TYPE_LBN 42 +#define FSF_AZ_RX_EV_HDR_TYPE_WIDTH 2 +#define FSE_AZ_RX_EV_HDR_TYPE_OTHER 3 +#define FSE_AB_RX_EV_HDR_TYPE_IPV4_OTHER 2 +#define FSE_CZ_RX_EV_HDR_TYPE_IPV4V6_OTHER 2 +#define FSE_AB_RX_EV_HDR_TYPE_IPV4_UDP 1 +#define FSE_CZ_RX_EV_HDR_TYPE_IPV4V6_UDP 1 +#define FSE_AB_RX_EV_HDR_TYPE_IPV4_TCP 0 +#define FSE_CZ_RX_EV_HDR_TYPE_IPV4V6_TCP 0 +#define FSF_AZ_RX_EV_DESC_Q_EMPTY_LBN 41 +#define FSF_AZ_RX_EV_DESC_Q_EMPTY_WIDTH 1 +#define FSF_AZ_RX_EV_MCAST_HASH_MATCH_LBN 40 +#define FSF_AZ_RX_EV_MCAST_HASH_MATCH_WIDTH 1 +#define FSF_AZ_RX_EV_MCAST_PKT_LBN 39 +#define FSF_AZ_RX_EV_MCAST_PKT_WIDTH 1 +#define FSF_AA_RX_EV_RECOVERY_FLAG_LBN 37 +#define FSF_AA_RX_EV_RECOVERY_FLAG_WIDTH 1 +#define FSF_AZ_RX_EV_Q_LABEL_LBN 32 +#define FSF_AZ_RX_EV_Q_LABEL_WIDTH 5 +#define FSF_AZ_RX_EV_JUMBO_CONT_LBN 31 +#define FSF_AZ_RX_EV_JUMBO_CONT_WIDTH 1 +#define FSF_AZ_RX_EV_PORT_LBN 30 +#define FSF_AZ_RX_EV_PORT_WIDTH 1 +#define FSF_AZ_RX_EV_BYTE_CNT_LBN 16 +#define FSF_AZ_RX_EV_BYTE_CNT_WIDTH 14 +#define FSF_AZ_RX_EV_SOP_LBN 15 +#define FSF_AZ_RX_EV_SOP_WIDTH 1 +#define FSF_AZ_RX_EV_ISCSI_PKT_OK_LBN 14 +#define FSF_AZ_RX_EV_ISCSI_PKT_OK_WIDTH 1 +#define FSF_AZ_RX_EV_ISCSI_DDIG_ERR_LBN 13 +#define FSF_AZ_RX_EV_ISCSI_DDIG_ERR_WIDTH 1 +#define FSF_AZ_RX_EV_ISCSI_HDIG_ERR_LBN 12 +#define FSF_AZ_RX_EV_ISCSI_HDIG_ERR_WIDTH 1 +#define FSF_AZ_RX_EV_DESC_PTR_LBN 0 +#define FSF_AZ_RX_EV_DESC_PTR_WIDTH 12 + + +/*------------------------------------------------------------*/ +/* FS_RX_KER_DESC */ +#define FSF_AZ_RX_KER_BUF_SIZE_LBN 48 +#define FSF_AZ_RX_KER_BUF_SIZE_WIDTH 14 +#define FSF_AZ_RX_KER_BUF_REGION_LBN 46 +#define FSF_AZ_RX_KER_BUF_REGION_WIDTH 2 +#define FSF_AZ_RX_KER_BUF_ADDR_LBN 0 +#define FSF_AZ_RX_KER_BUF_ADDR_WIDTH 46 + + +/*------------------------------------------------------------*/ +/* FS_RX_USER_DESC */ +#define FSF_AZ_RX_USER_2BYTE_OFFSET_LBN 20 +#define FSF_AZ_RX_USER_2BYTE_OFFSET_WIDTH 12 +#define FSF_AZ_RX_USER_BUF_ID_LBN 0 +#define FSF_AZ_RX_USER_BUF_ID_WIDTH 20 + + +/*------------------------------------------------------------*/ +/* FS_TX_EV */ +#define FSF_AZ_TX_EV_PKT_ERR_LBN 38 +#define FSF_AZ_TX_EV_PKT_ERR_WIDTH 1 +#define FSF_AZ_TX_EV_PKT_TOO_BIG_LBN 37 +#define FSF_AZ_TX_EV_PKT_TOO_BIG_WIDTH 1 +#define FSF_AZ_TX_EV_Q_LABEL_LBN 32 +#define FSF_AZ_TX_EV_Q_LABEL_WIDTH 5 +#define FSF_AZ_TX_EV_PORT_LBN 16 +#define FSF_AZ_TX_EV_PORT_WIDTH 1 +#define FSF_AZ_TX_EV_WQ_FF_FULL_LBN 15 +#define FSF_AZ_TX_EV_WQ_FF_FULL_WIDTH 1 +#define FSF_AZ_TX_EV_BUF_OWNER_ID_ERR_LBN 14 +#define FSF_AZ_TX_EV_BUF_OWNER_ID_ERR_WIDTH 1 +#define FSF_AZ_TX_EV_COMP_LBN 12 +#define FSF_AZ_TX_EV_COMP_WIDTH 1 +#define FSF_AZ_TX_EV_DESC_PTR_LBN 0 +#define FSF_AZ_TX_EV_DESC_PTR_WIDTH 12 + + +/*------------------------------------------------------------*/ +/* FS_TX_KER_DESC */ +#define FSF_AZ_TX_KER_CONT_LBN 62 +#define FSF_AZ_TX_KER_CONT_WIDTH 1 +#define FSF_AZ_TX_KER_BYTE_COUNT_LBN 48 +#define FSF_AZ_TX_KER_BYTE_COUNT_WIDTH 14 +#define FSF_AZ_TX_KER_BUF_REGION_LBN 46 +#define FSF_AZ_TX_KER_BUF_REGION_WIDTH 2 +#define FSF_AZ_TX_KER_BUF_ADDR_LBN 0 +#define FSF_AZ_TX_KER_BUF_ADDR_WIDTH 46 + + +/*------------------------------------------------------------*/ +/* FS_TX_USER_DESC */ +#define FSF_AZ_TX_USER_SW_EV_EN_LBN 48 +#define FSF_AZ_TX_USER_SW_EV_EN_WIDTH 1 +#define FSF_AZ_TX_USER_CONT_LBN 46 +#define FSF_AZ_TX_USER_CONT_WIDTH 1 +#define FSF_AZ_TX_USER_BYTE_CNT_LBN 33 +#define FSF_AZ_TX_USER_BYTE_CNT_WIDTH 13 +#define FSF_AZ_TX_USER_BUF_ID_LBN 13 +#define FSF_AZ_TX_USER_BUF_ID_WIDTH 20 +#define FSF_AZ_TX_USER_BYTE_OFS_LBN 0 +#define FSF_AZ_TX_USER_BYTE_OFS_WIDTH 13 + + +/*------------------------------------------------------------*/ +/* FS_USER_EV */ +#define FSF_CZ_USER_QID_LBN 32 +#define FSF_CZ_USER_QID_WIDTH 10 +#define FSF_CZ_USER_EV_REG_VALUE_LBN 0 +#define FSF_CZ_USER_EV_REG_VALUE_WIDTH 32 + + +#endif /* HOST_PROGMODEL_DEFS_H */ diff -r 0b5ca7cdbdfc -r b8c2a9aacba6 drivers/net/sfc/sfc_resource/ci/driver/efab/hardware/host_common_mac.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/drivers/net/sfc/sfc_resource/ci/driver/efab/hardware/host_common_mac.h Fri Jan 08 13:06:22 2010 +0000 @@ -0,0 +1,730 @@ +/**************************************************************************** + * Driver for Solarflare network controllers - + * resource management for Xen backend, OpenOnload, etc + * (including support for SFE4001 10GBT NIC) + * + * This file provides EtherFabric NIC hardware interface common + * definitions. + * + * Copyright 2005-2010: Solarflare Communications Inc, + * 9501 Jeronimo Road, Suite 250, + * Irvine, CA 92618, USA + * + * Developed and maintained by Solarflare Communications: + * <linux-xen-drivers@xxxxxxxxxxxxxx> + * <onload-dev@xxxxxxxxxxxxxx> + * + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 as published + * by the Free Software Foundation, incorporated herein by reference. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + **************************************************************************** + */ + +#ifndef HOST_MAC_PROGMODEL_DEFS_H +#define HOST_MAC_PROGMODEL_DEFS_H + +/*------------------------------------------------------------*/ +/* + * FR_AB_MD_TXD_REG(128bit): + * PHY management transmit data register + */ +#define FR_AB_MD_TXD_REG_OFST 0x00000c00 +/* falcona0,falconb0=net_func_bar2,falcona0=char_func_bar0 */ + +#define FRF_AB_MD_TXD_LBN 0 +#define FRF_AB_MD_TXD_WIDTH 16 + + +/*------------------------------------------------------------*/ +/* + * FR_AB_MD_RXD_REG(128bit): + * PHY management receive data register + */ +#define FR_AB_MD_RXD_REG_OFST 0x00000c10 +/* falcona0,falconb0=net_func_bar2,falcona0=char_func_bar0 */ + +#define FRF_AB_MD_RXD_LBN 0 +#define FRF_AB_MD_RXD_WIDTH 16 + + +/*------------------------------------------------------------*/ +/* + * FR_AB_MD_CS_REG(128bit): + * PHY management configuration & status register + */ +#define FR_AB_MD_CS_REG_OFST 0x00000c20 +/* falcona0,falconb0=net_func_bar2,falcona0=char_func_bar0 */ + +#define FRF_AB_MD_RD_EN_CMD_LBN 15 +#define FRF_AB_MD_RD_EN_CMD_WIDTH 1 +#define FRF_AB_MD_WR_EN_CMD_LBN 14 +#define FRF_AB_MD_WR_EN_CMD_WIDTH 1 +#define FRF_AB_MD_ADDR_CMD_LBN 13 +#define FRF_AB_MD_ADDR_CMD_WIDTH 1 +#define FRF_AB_MD_PT_LBN 7 +#define FRF_AB_MD_PT_WIDTH 3 +#define FRF_AB_MD_PL_LBN 6 +#define FRF_AB_MD_PL_WIDTH 1 +#define FRF_AB_MD_INT_CLR_LBN 5 +#define FRF_AB_MD_INT_CLR_WIDTH 1 +#define FRF_AB_MD_GC_LBN 4 +#define FRF_AB_MD_GC_WIDTH 1 +#define FRF_AB_MD_PRSP_LBN 3 +#define FRF_AB_MD_PRSP_WIDTH 1 +#define FRF_AB_MD_RIC_LBN 2 +#define FRF_AB_MD_RIC_WIDTH 1 +#define FRF_AB_MD_RDC_LBN 1 +#define FRF_AB_MD_RDC_WIDTH 1 +#define FRF_AB_MD_WRC_LBN 0 +#define FRF_AB_MD_WRC_WIDTH 1 + + +/*------------------------------------------------------------*/ +/* + * FR_AB_MD_PHY_ADR_REG(128bit): + * PHY management PHY address register + */ +#define FR_AB_MD_PHY_ADR_REG_OFST 0x00000c30 +/* falcona0,falconb0=net_func_bar2,falcona0=char_func_bar0 */ + +#define FRF_AB_MD_PHY_ADR_LBN 0 +#define FRF_AB_MD_PHY_ADR_WIDTH 16 + + +/*------------------------------------------------------------*/ +/* + * FR_AB_MD_ID_REG(128bit): + * PHY management ID register + */ +#define FR_AB_MD_ID_REG_OFST 0x00000c40 +/* falcona0,falconb0=net_func_bar2,falcona0=char_func_bar0 */ + +#define FRF_AB_MD_PRT_ADR_LBN 11 +#define FRF_AB_MD_PRT_ADR_WIDTH 5 +#define FRF_AB_MD_DEV_ADR_LBN 6 +#define FRF_AB_MD_DEV_ADR_WIDTH 5 + + +/*------------------------------------------------------------*/ +/* + * FR_AB_MD_STAT_REG(128bit): + * PHY management status & mask register + */ +#define FR_AB_MD_STAT_REG_OFST 0x00000c50 +/* falcona0,falconb0=net_func_bar2,falcona0=char_func_bar0 */ + +#define FRF_AB_MD_PINT_LBN 4 +#define FRF_AB_MD_PINT_WIDTH 1 +#define FRF_AB_MD_DONE_LBN 3 +#define FRF_AB_MD_DONE_WIDTH 1 +#define FRF_AB_MD_BSERR_LBN 2 +#define FRF_AB_MD_BSERR_WIDTH 1 +#define FRF_AB_MD_LNFL_LBN 1 +#define FRF_AB_MD_LNFL_WIDTH 1 +#define FRF_AB_MD_BSY_LBN 0 +#define FRF_AB_MD_BSY_WIDTH 1 + + +/*------------------------------------------------------------*/ +/* + * FR_AB_MAC_STAT_DMA_REG(128bit): + * Port MAC statistical counter DMA register + */ +#define FR_AB_MAC_STAT_DMA_REG_OFST 0x00000c60 +/* falcona0,falconb0=net_func_bar2,falcona0=char_func_bar0 */ + +#define FRF_AB_MAC_STAT_DMA_CMD_LBN 48 +#define FRF_AB_MAC_STAT_DMA_CMD_WIDTH 1 +#define FRF_AB_MAC_STAT_DMA_ADR_LBN 0 +#define FRF_AB_MAC_STAT_DMA_ADR_WIDTH 48 + + +/*------------------------------------------------------------*/ +/* + * FR_AB_MAC_CTRL_REG(128bit): + * Port MAC control register + */ +#define FR_AB_MAC_CTRL_REG_OFST 0x00000c80 +/* falcona0,falconb0=net_func_bar2,falcona0=char_func_bar0 */ + +#define FRF_AB_MAC_XOFF_VAL_LBN 16 +#define FRF_AB_MAC_XOFF_VAL_WIDTH 16 +#define FRF_BB_TXFIFO_DRAIN_EN_LBN 7 +#define FRF_BB_TXFIFO_DRAIN_EN_WIDTH 1 +#define FRF_AB_MAC_XG_DISTXCRC_LBN 5 +#define FRF_AB_MAC_XG_DISTXCRC_WIDTH 1 +#define FRF_AB_MAC_BCAD_ACPT_LBN 4 +#define FRF_AB_MAC_BCAD_ACPT_WIDTH 1 +#define FRF_AB_MAC_UC_PROM_LBN 3 +#define FRF_AB_MAC_UC_PROM_WIDTH 1 +#define FRF_AB_MAC_LINK_STATUS_LBN 2 +#define FRF_AB_MAC_LINK_STATUS_WIDTH 1 +#define FRF_AB_MAC_SPEED_LBN 0 +#define FRF_AB_MAC_SPEED_WIDTH 2 +#define FFE_AB_MAC_SPEED_10G 3 +#define FFE_AB_MAC_SPEED_1G 2 +#define FFE_AB_MAC_SPEED_100M 1 +#define FFE_AB_MAC_SPEED_10M 0 + + +/*------------------------------------------------------------*/ +/* + * FR_BB_GEN_MODE_REG(128bit): + * General Purpose mode register (external interrupt mask) + */ +#define FR_BB_GEN_MODE_REG_OFST 0x00000c90 +/* falconb0=net_func_bar2 */ + +#define FRF_BB_XFP_PHY_INT_POL_SEL_LBN 3 +#define FRF_BB_XFP_PHY_INT_POL_SEL_WIDTH 1 +#define FRF_BB_XG_PHY_INT_POL_SEL_LBN 2 +#define FRF_BB_XG_PHY_INT_POL_SEL_WIDTH 1 +#define FRF_BB_XFP_PHY_INT_MASK_LBN 1 +#define FRF_BB_XFP_PHY_INT_MASK_WIDTH 1 +#define FRF_BB_XG_PHY_INT_MASK_LBN 0 +#define FRF_BB_XG_PHY_INT_MASK_WIDTH 1 + + +/*------------------------------------------------------------*/ +/* + * FR_AB_MAC_MC_HASH_REG0(128bit): + * Multicast address hash table + */ +#define FR_AB_MAC_MC_HASH_REG0_OFST 0x00000ca0 +/* falcona0,falconb0=net_func_bar2,falcona0=char_func_bar0 */ + +#define FRF_AB_MAC_MCAST_HASH0_LBN 0 +#define FRF_AB_MAC_MCAST_HASH0_WIDTH 128 + + +/*------------------------------------------------------------*/ +/* + * FR_AB_MAC_MC_HASH_REG1(128bit): + * Multicast address hash table + */ +#define FR_AB_MAC_MC_HASH_REG1_OFST 0x00000cb0 +/* falcona0,falconb0=net_func_bar2,falcona0=char_func_bar0 */ + +#define FRF_AB_MAC_MCAST_HASH1_LBN 0 +#define FRF_AB_MAC_MCAST_HASH1_WIDTH 128 + + +/*------------------------------------------------------------*/ +/* + * FR_AB_GM_CFG1_REG(32bit): + * GMAC configuration register 1 + */ +#define FR_AB_GM_CFG1_REG_OFST 0x00000e00 +/* falcona0,falconb0=net_func_bar2,falcona0=char_func_bar0 */ + +#define FRF_AB_GM_SW_RST_LBN 31 +#define FRF_AB_GM_SW_RST_WIDTH 1 +#define FRF_AB_GM_SIM_RST_LBN 30 +#define FRF_AB_GM_SIM_RST_WIDTH 1 +#define FRF_AB_GM_RST_RX_MAC_CTL_LBN 19 +#define FRF_AB_GM_RST_RX_MAC_CTL_WIDTH 1 +#define FRF_AB_GM_RST_TX_MAC_CTL_LBN 18 +#define FRF_AB_GM_RST_TX_MAC_CTL_WIDTH 1 +#define FRF_AB_GM_RST_RX_FUNC_LBN 17 +#define FRF_AB_GM_RST_RX_FUNC_WIDTH 1 +#define FRF_AB_GM_RST_TX_FUNC_LBN 16 +#define FRF_AB_GM_RST_TX_FUNC_WIDTH 1 +#define FRF_AB_GM_LOOP_LBN 8 +#define FRF_AB_GM_LOOP_WIDTH 1 +#define FRF_AB_GM_RX_FC_EN_LBN 5 +#define FRF_AB_GM_RX_FC_EN_WIDTH 1 +#define FRF_AB_GM_TX_FC_EN_LBN 4 +#define FRF_AB_GM_TX_FC_EN_WIDTH 1 +#define FRF_AB_GM_SYNC_RXEN_LBN 3 +#define FRF_AB_GM_SYNC_RXEN_WIDTH 1 +#define FRF_AB_GM_RX_EN_LBN 2 +#define FRF_AB_GM_RX_EN_WIDTH 1 +#define FRF_AB_GM_SYNC_TXEN_LBN 1 +#define FRF_AB_GM_SYNC_TXEN_WIDTH 1 +#define FRF_AB_GM_TX_EN_LBN 0 +#define FRF_AB_GM_TX_EN_WIDTH 1 + + +/*------------------------------------------------------------*/ +/* + * FR_AB_GM_CFG2_REG(32bit): + * GMAC configuration register 2 + */ +#define FR_AB_GM_CFG2_REG_OFST 0x00000e10 +/* falcona0,falconb0=net_func_bar2,falcona0=char_func_bar0 */ + +#define FRF_AB_GM_PAMBL_LEN_LBN 12 +#define FRF_AB_GM_PAMBL_LEN_WIDTH 4 +#define FRF_AB_GM_IF_MODE_LBN 8 +#define FRF_AB_GM_IF_MODE_WIDTH 2 +#define FFE_AB_IF_MODE_BYTE_MODE 2 +#define FFE_AB_IF_MODE_NIBBLE_MODE 1 +#define FRF_AB_GM_HUGE_FRM_EN_LBN 5 +#define FRF_AB_GM_HUGE_FRM_EN_WIDTH 1 +#define FRF_AB_GM_LEN_CHK_LBN 4 +#define FRF_AB_GM_LEN_CHK_WIDTH 1 +#define FRF_AB_GM_PAD_CRC_EN_LBN 2 +#define FRF_AB_GM_PAD_CRC_EN_WIDTH 1 +#define FRF_AB_GM_CRC_EN_LBN 1 +#define FRF_AB_GM_CRC_EN_WIDTH 1 +#define FRF_AB_GM_FD_LBN 0 +#define FRF_AB_GM_FD_WIDTH 1 + + +/*------------------------------------------------------------*/ +/* + * FR_AB_GM_IPG_REG(32bit): + * GMAC IPG register + */ +#define FR_AB_GM_IPG_REG_OFST 0x00000e20 +/* falcona0,falconb0=net_func_bar2,falcona0=char_func_bar0 */ + +#define FRF_AB_GM_NONB2B_IPG1_LBN 24 +#define FRF_AB_GM_NONB2B_IPG1_WIDTH 7 +#define FRF_AB_GM_NONB2B_IPG2_LBN 16 +#define FRF_AB_GM_NONB2B_IPG2_WIDTH 7 +#define FRF_AB_GM_MIN_IPG_ENF_LBN 8 +#define FRF_AB_GM_MIN_IPG_ENF_WIDTH 8 +#define FRF_AB_GM_B2B_IPG_LBN 0 +#define FRF_AB_GM_B2B_IPG_WIDTH 7 + + +/*------------------------------------------------------------*/ +/* + * FR_AB_GM_HD_REG(32bit): + * GMAC half duplex register + */ +#define FR_AB_GM_HD_REG_OFST 0x00000e30 +/* falcona0,falconb0=net_func_bar2,falcona0=char_func_bar0 */ + +#define FRF_AB_GM_ALT_BOFF_VAL_LBN 20 +#define FRF_AB_GM_ALT_BOFF_VAL_WIDTH 4 +#define FRF_AB_GM_ALT_BOFF_EN_LBN 19 +#define FRF_AB_GM_ALT_BOFF_EN_WIDTH 1 +#define FRF_AB_GM_BP_NO_BOFF_LBN 18 +#define FRF_AB_GM_BP_NO_BOFF_WIDTH 1 +#define FRF_AB_GM_DIS_BOFF_LBN 17 +#define FRF_AB_GM_DIS_BOFF_WIDTH 1 +#define FRF_AB_GM_EXDEF_TX_EN_LBN 16 +#define FRF_AB_GM_EXDEF_TX_EN_WIDTH 1 +#define FRF_AB_GM_RTRY_LIMIT_LBN 12 +#define FRF_AB_GM_RTRY_LIMIT_WIDTH 4 +#define FRF_AB_GM_COL_WIN_LBN 0 +#define FRF_AB_GM_COL_WIN_WIDTH 10 + + +/*------------------------------------------------------------*/ +/* + * FR_AB_GM_MAX_FLEN_REG(32bit): + * GMAC maximum frame length register + */ +#define FR_AB_GM_MAX_FLEN_REG_OFST 0x00000e40 +/* falcona0,falconb0=net_func_bar2,falcona0=char_func_bar0 */ + +#define FRF_AB_GM_MAX_FLEN_LBN 0 +#define FRF_AB_GM_MAX_FLEN_WIDTH 16 + + +/*------------------------------------------------------------*/ +/* + * FR_AB_GM_TEST_REG(32bit): + * GMAC test register + */ +#define FR_AB_GM_TEST_REG_OFST 0x00000e70 +/* falcona0,falconb0=net_func_bar2,falcona0=char_func_bar0 */ + +#define FRF_AB_GM_MAX_BOFF_LBN 3 +#define FRF_AB_GM_MAX_BOFF_WIDTH 1 +#define FRF_AB_GM_REG_TX_FLOW_EN_LBN 2 +#define FRF_AB_GM_REG_TX_FLOW_EN_WIDTH 1 +#define FRF_AB_GM_TEST_PAUSE_LBN 1 +#define FRF_AB_GM_TEST_PAUSE_WIDTH 1 +#define FRF_AB_GM_SHORT_SLOT_LBN 0 +#define FRF_AB_GM_SHORT_SLOT_WIDTH 1 + + +/*------------------------------------------------------------*/ +/* + * FR_AB_GM_ADR1_REG(32bit): + * GMAC station address register 1 + */ +#define FR_AB_GM_ADR1_REG_OFST 0x00000f00 +/* falcona0,falconb0=net_func_bar2,falcona0=char_func_bar0 */ + +#define FRF_AB_GM_ADR_B0_LBN 24 +#define FRF_AB_GM_ADR_B0_WIDTH 8 +#define FRF_AB_GM_ADR_B1_LBN 16 +#define FRF_AB_GM_ADR_B1_WIDTH 8 +#define FRF_AB_GM_ADR_B2_LBN 8 +#define FRF_AB_GM_ADR_B2_WIDTH 8 +#define FRF_AB_GM_ADR_B3_LBN 0 +#define FRF_AB_GM_ADR_B3_WIDTH 8 + + +/*------------------------------------------------------------*/ +/* + * FR_AB_GM_ADR2_REG(32bit): + * GMAC station address register 2 + */ +#define FR_AB_GM_ADR2_REG_OFST 0x00000f10 +/* falcona0,falconb0=net_func_bar2,falcona0=char_func_bar0 */ + +#define FRF_AB_GM_ADR_B4_LBN 24 +#define FRF_AB_GM_ADR_B4_WIDTH 8 +#define FRF_AB_GM_ADR_B5_LBN 16 +#define FRF_AB_GM_ADR_B5_WIDTH 8 + + +/*------------------------------------------------------------*/ +/* + * FR_AB_GMF_CFG0_REG(32bit): + * GMAC FIFO configuration register 0 + */ +#define FR_AB_GMF_CFG0_REG_OFST 0x00000f20 +/* falcona0,falconb0=net_func_bar2,falcona0=char_func_bar0 */ + +#define FRF_AB_GMF_FTFENRPLY_LBN 20 +#define FRF_AB_GMF_FTFENRPLY_WIDTH 1 +#define FRF_AB_GMF_STFENRPLY_LBN 19 +#define FRF_AB_GMF_STFENRPLY_WIDTH 1 +#define FRF_AB_GMF_FRFENRPLY_LBN 18 +#define FRF_AB_GMF_FRFENRPLY_WIDTH 1 +#define FRF_AB_GMF_SRFENRPLY_LBN 17 +#define FRF_AB_GMF_SRFENRPLY_WIDTH 1 +#define FRF_AB_GMF_WTMENRPLY_LBN 16 +#define FRF_AB_GMF_WTMENRPLY_WIDTH 1 +#define FRF_AB_GMF_FTFENREQ_LBN 12 +#define FRF_AB_GMF_FTFENREQ_WIDTH 1 +#define FRF_AB_GMF_STFENREQ_LBN 11 +#define FRF_AB_GMF_STFENREQ_WIDTH 1 +#define FRF_AB_GMF_FRFENREQ_LBN 10 +#define FRF_AB_GMF_FRFENREQ_WIDTH 1 +#define FRF_AB_GMF_SRFENREQ_LBN 9 +#define FRF_AB_GMF_SRFENREQ_WIDTH 1 +#define FRF_AB_GMF_WTMENREQ_LBN 8 +#define FRF_AB_GMF_WTMENREQ_WIDTH 1 +#define FRF_AB_GMF_HSTRSTFT_LBN 4 +#define FRF_AB_GMF_HSTRSTFT_WIDTH 1 +#define FRF_AB_GMF_HSTRSTST_LBN 3 +#define FRF_AB_GMF_HSTRSTST_WIDTH 1 +#define FRF_AB_GMF_HSTRSTFR_LBN 2 +#define FRF_AB_GMF_HSTRSTFR_WIDTH 1 +#define FRF_AB_GMF_HSTRSTSR_LBN 1 +#define FRF_AB_GMF_HSTRSTSR_WIDTH 1 +#define FRF_AB_GMF_HSTRSTWT_LBN 0 +#define FRF_AB_GMF_HSTRSTWT_WIDTH 1 + + +/*------------------------------------------------------------*/ +/* + * FR_AB_GMF_CFG1_REG(32bit): + * GMAC FIFO configuration register 1 + */ +#define FR_AB_GMF_CFG1_REG_OFST 0x00000f30 +/* falcona0,falconb0=net_func_bar2,falcona0=char_func_bar0 */ + +#define FRF_AB_GMF_CFGFRTH_LBN 16 +#define FRF_AB_GMF_CFGFRTH_WIDTH 5 +#define FRF_AB_GMF_CFGXOFFRTX_LBN 0 +#define FRF_AB_GMF_CFGXOFFRTX_WIDTH 16 + + +/*------------------------------------------------------------*/ +/* + * FR_AB_GMF_CFG2_REG(32bit): + * GMAC FIFO configuration register 2 + */ +#define FR_AB_GMF_CFG2_REG_OFST 0x00000f40 +/* falcona0,falconb0=net_func_bar2,falcona0=char_func_bar0 */ + +#define FRF_AB_GMF_CFGHWM_LBN 16 +#define FRF_AB_GMF_CFGHWM_WIDTH 6 +#define FRF_AB_GMF_CFGLWM_LBN 0 +#define FRF_AB_GMF_CFGLWM_WIDTH 6 + + +/*------------------------------------------------------------*/ +/* + * FR_AB_GMF_CFG3_REG(32bit): + * GMAC FIFO configuration register 3 + */ +#define FR_AB_GMF_CFG3_REG_OFST 0x00000f50 +/* falcona0,falconb0=net_func_bar2,falcona0=char_func_bar0 */ + +#define FRF_AB_GMF_CFGHWMFT_LBN 16 +#define FRF_AB_GMF_CFGHWMFT_WIDTH 6 +#define FRF_AB_GMF_CFGFTTH_LBN 0 +#define FRF_AB_GMF_CFGFTTH_WIDTH 6 + + +/*------------------------------------------------------------*/ +/* + * FR_AB_GMF_CFG4_REG(32bit): + * GMAC FIFO configuration register 4 + */ +#define FR_AB_GMF_CFG4_REG_OFST 0x00000f60 +/* falcona0,falconb0=net_func_bar2,falcona0=char_func_bar0 */ + +#define FRF_AB_GMF_HSTFLTRFRM_LBN 0 +#define FRF_AB_GMF_HSTFLTRFRM_WIDTH 18 + + +/*------------------------------------------------------------*/ +/* + * FR_AB_GMF_CFG5_REG(32bit): + * GMAC FIFO configuration register 5 + */ +#define FR_AB_GMF_CFG5_REG_OFST 0x00000f70 +/* falcona0,falconb0=net_func_bar2,falcona0=char_func_bar0 */ + +#define FRF_AB_GMF_CFGHDPLX_LBN 22 +#define FRF_AB_GMF_CFGHDPLX_WIDTH 1 +#define FRF_AB_GMF_SRFULL_LBN 21 +#define FRF_AB_GMF_SRFULL_WIDTH 1 +#define FRF_AB_GMF_HSTSRFULLCLR_LBN 20 +#define FRF_AB_GMF_HSTSRFULLCLR_WIDTH 1 +#define FRF_AB_GMF_CFGBYTMODE_LBN 19 +#define FRF_AB_GMF_CFGBYTMODE_WIDTH 1 +#define FRF_AB_GMF_HSTDRPLT64_LBN 18 +#define FRF_AB_GMF_HSTDRPLT64_WIDTH 1 +#define FRF_AB_GMF_HSTFLTRFRMDC_LBN 0 +#define FRF_AB_GMF_HSTFLTRFRMDC_WIDTH 18 + + +/*------------------------------------------------------------*/ +/* + * FR_AB_XM_ADR_LO_REG(128bit): + * XGMAC address register low + */ +#define FR_AB_XM_ADR_LO_REG_OFST 0x00001200 +/* falcona0,falconb0=net_func_bar2,falcona0=char_func_bar0 */ + +#define FRF_AB_XM_ADR_LO_LBN 0 +#define FRF_AB_XM_ADR_LO_WIDTH 32 + + +/*------------------------------------------------------------*/ +/* + * FR_AB_XM_ADR_HI_REG(128bit): + * XGMAC address register high + */ +#define FR_AB_XM_ADR_HI_REG_OFST 0x00001210 +/* falcona0,falconb0=net_func_bar2,falcona0=char_func_bar0 */ + +#define FRF_AB_XM_ADR_HI_LBN 0 +#define FRF_AB_XM_ADR_HI_WIDTH 16 + + +/*------------------------------------------------------------*/ +/* + * FR_AB_XM_GLB_CFG_REG(128bit): + * XGMAC global configuration + */ +#define FR_AB_XM_GLB_CFG_REG_OFST 0x00001220 +/* falcona0,falconb0=net_func_bar2,falcona0=char_func_bar0 */ + +#define FRF_AB_XM_RMTFLT_GEN_LBN 17 +#define FRF_AB_XM_RMTFLT_GEN_WIDTH 1 +#define FRF_AB_XM_DEBUG_MODE_LBN 16 +#define FRF_AB_XM_DEBUG_MODE_WIDTH 1 +#define FRF_AB_XM_RX_STAT_EN_LBN 11 +#define FRF_AB_XM_RX_STAT_EN_WIDTH 1 +#define FRF_AB_XM_TX_STAT_EN_LBN 10 +#define FRF_AB_XM_TX_STAT_EN_WIDTH 1 +#define FRF_AB_XM_RX_JUMBO_MODE_LBN 6 +#define FRF_AB_XM_RX_JUMBO_MODE_WIDTH 1 +#define FRF_AB_XM_WAN_MODE_LBN 5 +#define FRF_AB_XM_WAN_MODE_WIDTH 1 +#define FRF_AB_XM_INTCLR_MODE_LBN 3 +#define FRF_AB_XM_INTCLR_MODE_WIDTH 1 +#define FRF_AB_XM_CORE_RST_LBN 0 +#define FRF_AB_XM_CORE_RST_WIDTH 1 + + +/*------------------------------------------------------------*/ +/* + * FR_AB_XM_TX_CFG_REG(128bit): + * XGMAC transmit configuration + */ +#define FR_AB_XM_TX_CFG_REG_OFST 0x00001230 +/* falcona0,falconb0=net_func_bar2,falcona0=char_func_bar0 */ + +#define FRF_AB_XM_TX_PROG_LBN 24 +#define FRF_AB_XM_TX_PROG_WIDTH 1 +#define FRF_AB_XM_IPG_LBN 16 +#define FRF_AB_XM_IPG_WIDTH 4 +#define FRF_AB_XM_FCNTL_LBN 10 +#define FRF_AB_XM_FCNTL_WIDTH 1 +#define FRF_AB_XM_TXCRC_LBN 8 +#define FRF_AB_XM_TXCRC_WIDTH 1 +#define FRF_AB_XM_EDRC_LBN 6 +#define FRF_AB_XM_EDRC_WIDTH 1 +#define FRF_AB_XM_AUTO_PAD_LBN 5 +#define FRF_AB_XM_AUTO_PAD_WIDTH 1 +#define FRF_AB_XM_TX_PRMBL_LBN 2 +#define FRF_AB_XM_TX_PRMBL_WIDTH 1 +#define FRF_AB_XM_TXEN_LBN 1 +#define FRF_AB_XM_TXEN_WIDTH 1 +#define FRF_AB_XM_TX_RST_LBN 0 +#define FRF_AB_XM_TX_RST_WIDTH 1 + + +/*------------------------------------------------------------*/ +/* + * FR_AB_XM_RX_CFG_REG(128bit): + * XGMAC receive configuration + */ +#define FR_AB_XM_RX_CFG_REG_OFST 0x00001240 +/* falcona0,falconb0=net_func_bar2,falcona0=char_func_bar0 */ + +#define FRF_AB_XM_PASS_LENERR_LBN 26 +#define FRF_AB_XM_PASS_LENERR_WIDTH 1 +#define FRF_AB_XM_PASS_CRC_ERR_LBN 25 +#define FRF_AB_XM_PASS_CRC_ERR_WIDTH 1 +#define FRF_AB_XM_PASS_PRMBLE_ERR_LBN 24 +#define FRF_AB_XM_PASS_PRMBLE_ERR_WIDTH 1 +#define FRF_AB_XM_REJ_BCAST_LBN 20 +#define FRF_AB_XM_REJ_BCAST_WIDTH 1 +#define FRF_AB_XM_ACPT_ALL_MCAST_LBN 11 +#define FRF_AB_XM_ACPT_ALL_MCAST_WIDTH 1 +#define FRF_AB_XM_ACPT_ALL_UCAST_LBN 9 +#define FRF_AB_XM_ACPT_ALL_UCAST_WIDTH 1 +#define FRF_AB_XM_AUTO_DEPAD_LBN 8 +#define FRF_AB_XM_AUTO_DEPAD_WIDTH 1 +#define FRF_AB_XM_RXCRC_LBN 3 +#define FRF_AB_XM_RXCRC_WIDTH 1 +#define FRF_AB_XM_RX_PRMBL_LBN 2 +#define FRF_AB_XM_RX_PRMBL_WIDTH 1 +#define FRF_AB_XM_RXEN_LBN 1 +#define FRF_AB_XM_RXEN_WIDTH 1 +#define FRF_AB_XM_RX_RST_LBN 0 +#define FRF_AB_XM_RX_RST_WIDTH 1 + + +/*------------------------------------------------------------*/ +/* + * FR_AB_XM_MGT_INT_MASK(128bit): + * documentation to be written for sum_XM_MGT_INT_MASK + */ +#define FR_AB_XM_MGT_INT_MASK_OFST 0x00001250 +/* falcona0,falconb0=net_func_bar2,falcona0=char_func_bar0 */ + +#define FRF_AB_XM_MSK_STA_INTR_LBN 16 +#define FRF_AB_XM_MSK_STA_INTR_WIDTH 1 +#define FRF_AB_XM_MSK_STAT_CNTR_HF_LBN 9 +#define FRF_AB_XM_MSK_STAT_CNTR_HF_WIDTH 1 +#define FRF_AB_XM_MSK_STAT_CNTR_OF_LBN 8 +#define FRF_AB_XM_MSK_STAT_CNTR_OF_WIDTH 1 +#define FRF_AB_XM_MSK_PRMBLE_ERR_LBN 2 +#define FRF_AB_XM_MSK_PRMBLE_ERR_WIDTH 1 +#define FRF_AB_XM_MSK_RMTFLT_LBN 1 +#define FRF_AB_XM_MSK_RMTFLT_WIDTH 1 +#define FRF_AB_XM_MSK_LCLFLT_LBN 0 +#define FRF_AB_XM_MSK_LCLFLT_WIDTH 1 + + +/*------------------------------------------------------------*/ +/* + * FR_AB_XM_FC_REG(128bit): + * XGMAC flow control register + */ +#define FR_AB_XM_FC_REG_OFST 0x00001270 +/* falcona0,falconb0=net_func_bar2,falcona0=char_func_bar0 */ + +#define FRF_AB_XM_PAUSE_TIME_LBN 16 +#define FRF_AB_XM_PAUSE_TIME_WIDTH 16 +#define FRF_AB_XM_RX_MAC_STAT_LBN 11 +#define FRF_AB_XM_RX_MAC_STAT_WIDTH 1 +#define FRF_AB_XM_TX_MAC_STAT_LBN 10 +#define FRF_AB_XM_TX_MAC_STAT_WIDTH 1 +#define FRF_AB_XM_MCNTL_PASS_LBN 8 +#define FRF_AB_XM_MCNTL_PASS_WIDTH 2 +#define FRF_AB_XM_REJ_CNTL_UCAST_LBN 6 +#define FRF_AB_XM_REJ_CNTL_UCAST_WIDTH 1 +#define FRF_AB_XM_REJ_CNTL_MCAST_LBN 5 +#define FRF_AB_XM_REJ_CNTL_MCAST_WIDTH 1 +#define FRF_AB_XM_ZPAUSE_LBN 2 +#define FRF_AB_XM_ZPAUSE_WIDTH 1 +#define FRF_AB_XM_XMIT_PAUSE_LBN 1 +#define FRF_AB_XM_XMIT_PAUSE_WIDTH 1 +#define FRF_AB_XM_DIS_FCNTL_LBN 0 +#define FRF_AB_XM_DIS_FCNTL_WIDTH 1 + + +/*------------------------------------------------------------*/ +/* + * FR_AB_XM_PAUSE_TIME_REG(128bit): + * XGMAC pause time register + */ +#define FR_AB_XM_PAUSE_TIME_REG_OFST 0x00001290 +/* falcona0,falconb0=net_func_bar2,falcona0=char_func_bar0 */ + +#define FRF_AB_XM_TX_PAUSE_CNT_LBN 16 +#define FRF_AB_XM_TX_PAUSE_CNT_WIDTH 16 +#define FRF_AB_XM_RX_PAUSE_CNT_LBN 0 +#define FRF_AB_XM_RX_PAUSE_CNT_WIDTH 16 + + +/*------------------------------------------------------------*/ +/* + * FR_AB_XM_TX_PARAM_REG(128bit): + * XGMAC transmit parameter register + */ +#define FR_AB_XM_TX_PARAM_REG_OFST 0x000012d0 +/* falcona0,falconb0=net_func_bar2,falcona0=char_func_bar0 */ + +#define FRF_AB_XM_TX_JUMBO_MODE_LBN 31 +#define FRF_AB_XM_TX_JUMBO_MODE_WIDTH 1 +#define FRF_AB_XM_MAX_TX_FRM_SIZE_HI_LBN 19 +#define FRF_AB_XM_MAX_TX_FRM_SIZE_HI_WIDTH 11 +#define FRF_AB_XM_MAX_TX_FRM_SIZE_LO_LBN 16 +#define FRF_AB_XM_MAX_TX_FRM_SIZE_LO_WIDTH 3 +#define FRF_AB_XM_PAD_CHAR_LBN 0 +#define FRF_AB_XM_PAD_CHAR_WIDTH 8 + + +/*------------------------------------------------------------*/ +/* + * FR_AB_XM_RX_PARAM_REG(128bit): + * XGMAC receive parameter register + */ +#define FR_AB_XM_RX_PARAM_REG_OFST 0x000012e0 +/* falcona0,falconb0=net_func_bar2,falcona0=char_func_bar0 */ + +#define FRF_AB_XM_MAX_RX_FRM_SIZE_HI_LBN 3 +#define FRF_AB_XM_MAX_RX_FRM_SIZE_HI_WIDTH 11 +#define FRF_AB_XM_MAX_RX_FRM_SIZE_LO_LBN 0 +#define FRF_AB_XM_MAX_RX_FRM_SIZE_LO_WIDTH 3 + + +/*------------------------------------------------------------*/ +/* + * FR_AB_XM_MGT_INT_MSK_REG(128bit): + * XGMAC management interrupt mask register + */ +#define FR_AB_XM_MGT_INT_MSK_REG_OFST 0x000012f0 +/* falcona0,falconb0=net_func_bar2,falcona0=char_func_bar0 */ + +#define FRF_AB_XM_STAT_CNTR_OF_LBN 9 +#define FRF_AB_XM_STAT_CNTR_OF_WIDTH 1 +#define FRF_AB_XM_STAT_CNTR_HF_LBN 8 +#define FRF_AB_XM_STAT_CNTR_HF_WIDTH 1 +#define FRF_AB_XM_PRMBLE_ERR_LBN 2 +#define FRF_AB_XM_PRMBLE_ERR_WIDTH 1 +#define FRF_AB_XM_RMTFLT_LBN 1 +#define FRF_AB_XM_RMTFLT_WIDTH 1 +#define FRF_AB_XM_LCLFLT_LBN 0 +#define FRF_AB_XM_LCLFLT_WIDTH 1 + + +#endif /* HOST_MAC_PROGMODEL_DEFS_H */ diff -r 0b5ca7cdbdfc -r b8c2a9aacba6 drivers/net/sfc/sfc_resource/ci/driver/efab/hardware/host_common_pci_defs.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/drivers/net/sfc/sfc_resource/ci/driver/efab/hardware/host_common_pci_defs.h Fri Jan 08 13:06:22 2010 +0000 @@ -0,0 +1,2057 @@ +/**************************************************************************** + * Driver for Solarflare network controllers - + * resource management for Xen backend, OpenOnload, etc + * (including support for SFE4001 10GBT NIC) + * + * This file provides EtherFabric NIC hardware interface common + * definitions. + * + * Copyright 2005-2010: Solarflare Communications Inc, + * 9501 Jeronimo Road, Suite 250, + * Irvine, CA 92618, USA + * + * Developed and maintained by Solarflare Communications: + * <linux-xen-drivers@xxxxxxxxxxxxxx> + * <onload-dev@xxxxxxxxxxxxxx> + * + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 as published + * by the Free Software Foundation, incorporated herein by reference. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + **************************************************************************** + */ + +#ifndef PCI_PROGMODEL_DEFS_H +#define PCI_PROGMODEL_DEFS_H + +/*------------------------------------------------------------*/ +/* + * PCR_AZ_PM_CS_REG(16bit): + * Power management control & status register + */ +#define PCR_AZ_PM_CS_REG 0x00000044 +/* falcona0,falconb0=pci_f0_config,sienaa0=pci_f0_config */ + +#define PCRF_AZ_PM_PME_STAT_LBN 15 +#define PCRF_AZ_PM_PME_STAT_WIDTH 1 +#define PCRF_AZ_PM_DAT_SCALE_LBN 13 +#define PCRF_AZ_PM_DAT_SCALE_WIDTH 2 +#define PCRF_AZ_PM_DAT_SEL_LBN 9 +#define PCRF_AZ_PM_DAT_SEL_WIDTH 4 +#define PCRF_AZ_PM_PME_EN_LBN 8 +#define PCRF_AZ_PM_PME_EN_WIDTH 1 +#define PCRF_CZ_NO_SOFT_RESET_LBN 3 +#define PCRF_CZ_NO_SOFT_RESET_WIDTH 1 +#define PCRF_AZ_PM_PWR_ST_LBN 0 +#define PCRF_AZ_PM_PWR_ST_WIDTH 2 + + +/*------------------------------------------------------------*/ +/* + * PCR_AZ_VEND_ID_REG(16bit): + * Vendor ID register + */ +#define PCR_AZ_VEND_ID_REG 0x00000000 +/* sienaa0=pci_f0_config,falcona0,falconb0=pci_f0_config */ + +#define PCRF_AZ_VEND_ID_LBN 0 +#define PCRF_AZ_VEND_ID_WIDTH 16 + + +/*------------------------------------------------------------*/ +/* + * PCR_AZ_DEV_ID_REG(16bit): + * Device ID register + */ +#define PCR_AZ_DEV_ID_REG 0x00000002 +/* sienaa0=pci_f0_config,falcona0,falconb0=pci_f0_config */ + +#define PCRF_AZ_DEV_ID_LBN 0 +#define PCRF_AZ_DEV_ID_WIDTH 16 + + +/*------------------------------------------------------------*/ +/* + * PCR_AZ_REV_ID_REG(8bit): + * Class code & revision ID register + */ +#define PCR_AZ_REV_ID_REG 0x00000008 +/* sienaa0=pci_f0_config,falcona0,falconb0=pci_f0_config */ + +#define PCRF_AZ_REV_ID_LBN 0 +#define PCRF_AZ_REV_ID_WIDTH 8 + + +/*------------------------------------------------------------*/ +/* + * PCR_AZ_CC_REG(24bit): + * Class code register + */ +#define PCR_AZ_CC_REG 0x00000009 +/* sienaa0=pci_f0_config,falcona0,falconb0=pci_f0_config */ + +#define PCRF_AZ_BASE_CC_LBN 16 +#define PCRF_AZ_BASE_CC_WIDTH 8 +#define PCRF_AZ_SUB_CC_LBN 8 +#define PCRF_AZ_SUB_CC_WIDTH 8 +#define PCRF_AZ_PROG_IF_LBN 0 +#define PCRF_AZ_PROG_IF_WIDTH 8 + + +/*------------------------------------------------------------*/ +/* + * PCR_AZ_MST_LAT_REG(8bit): + * Master latency timer register + */ +#define PCR_AZ_MST_LAT_REG 0x0000000d +/* sienaa0=pci_f0_config,falcona0,falconb0=pci_f0_config */ + +#define PCRF_AZ_MST_LAT_LBN 0 +#define PCRF_AZ_MST_LAT_WIDTH 8 + + +/*------------------------------------------------------------*/ +/* + * PCR_AZ_HDR_TYPE_REG(8bit): + * Header type register + */ +#define PCR_AZ_HDR_TYPE_REG 0x0000000e +/* sienaa0=pci_f0_config,falcona0,falconb0=pci_f0_config */ + +#define PCRF_AZ_MULT_FUNC_LBN 7 +#define PCRF_AZ_MULT_FUNC_WIDTH 1 +#define PCRF_AZ_TYPE_LBN 0 +#define PCRF_AZ_TYPE_WIDTH 7 + + +/*------------------------------------------------------------*/ +/* + * PCR_AZ_BIST_REG(8bit): + * BIST register + */ +#define PCR_AZ_BIST_REG 0x0000000f +/* sienaa0=pci_f0_config,falcona0,falconb0=pci_f0_config */ + +#define PCRF_AZ_BIST_LBN 0 +#define PCRF_AZ_BIST_WIDTH 8 + + +/*------------------------------------------------------------*/ +/* + * PCR_CZ_BAR4_LO_REG(32bit): + * Primary function base address register 2 low bits + */ +#define PCR_CZ_BAR4_LO_REG 0x00000020 +/* sienaa0=pci_f0_config */ + +#define PCRF_CZ_BAR4_LO_LBN 4 +#define PCRF_CZ_BAR4_LO_WIDTH 28 +#define PCRF_CZ_BAR4_PREF_LBN 3 +#define PCRF_CZ_BAR4_PREF_WIDTH 1 +#define PCRF_CZ_BAR4_TYPE_LBN 1 +#define PCRF_CZ_BAR4_TYPE_WIDTH 2 +#define PCRF_CZ_BAR4_IOM_LBN 0 +#define PCRF_CZ_BAR4_IOM_WIDTH 1 + + +/*------------------------------------------------------------*/ +/* + * PCR_AZ_SS_ID_REG(16bit): + * Sub-system ID register + */ +#define PCR_AZ_SS_ID_REG 0x0000002e +/* sienaa0=pci_f0_config,falcona0,falconb0=pci_f0_config */ + +#define PCRF_AZ_SS_ID_LBN 0 +#define PCRF_AZ_SS_ID_WIDTH 16 + + +/*------------------------------------------------------------*/ +/* + * PCR_AZ_EXPROM_BAR_REG(32bit): + * Expansion ROM base address register + */ +#define PCR_AZ_EXPROM_BAR_REG 0x00000030 +/* sienaa0=pci_f0_config,falcona0,falconb0=pci_f0_config */ + +#define PCRF_AZ_EXPROM_BAR_LBN 11 +#define PCRF_AZ_EXPROM_BAR_WIDTH 21 +#define PCRF_AB_EXPROM_MIN_SIZE_LBN 2 +#define PCRF_AB_EXPROM_MIN_SIZE_WIDTH 9 +#define PCRF_CZ_EXPROM_MIN_SIZE_LBN 1 +#define PCRF_CZ_EXPROM_MIN_SIZE_WIDTH 10 +#define PCRF_AB_EXPROM_FEATURE_ENABLE_LBN 1 +#define PCRF_AB_EXPROM_FEATURE_ENABLE_WIDTH 1 +#define PCRF_AZ_EXPROM_EN_LBN 0 +#define PCRF_AZ_EXPROM_EN_WIDTH 1 + + +/*------------------------------------------------------------*/ +/* + * PCR_AZ_CAP_PTR_REG(8bit): + * Capability pointer register + */ +#define PCR_AZ_CAP_PTR_REG 0x00000034 +/* sienaa0=pci_f0_config,falcona0,falconb0=pci_f0_config */ + +#define PCRF_AZ_CAP_PTR_LBN 0 +#define PCRF_AZ_CAP_PTR_WIDTH 8 + + +/*------------------------------------------------------------*/ +/* + * PCR_AZ_INT_LINE_REG(8bit): + * Interrupt line register + */ +#define PCR_AZ_INT_LINE_REG 0x0000003c +/* sienaa0=pci_f0_config,falcona0,falconb0=pci_f0_config */ + +#define PCRF_AZ_INT_LINE_LBN 0 +#define PCRF_AZ_INT_LINE_WIDTH 8 + + +/*------------------------------------------------------------*/ +/* + * PCR_AZ_INT_PIN_REG(8bit): + * Interrupt pin register + */ +#define PCR_AZ_INT_PIN_REG 0x0000003d +/* sienaa0=pci_f0_config,falcona0,falconb0=pci_f0_config */ + +#define PCRF_AZ_INT_PIN_LBN 0 +#define PCRF_AZ_INT_PIN_WIDTH 8 + + +/*------------------------------------------------------------*/ +/* + * PCR_AZ_MSI_CAP_ID_REG(8bit): + * MSI capability ID + */ +#define PCR_AZ_MSI_CAP_ID_REG 0x00000050 +/* sienaa0=pci_f0_config,falcona0,falconb0=pci_f0_config */ + +#define PCRF_AZ_MSI_CAP_ID_LBN 0 +#define PCRF_AZ_MSI_CAP_ID_WIDTH 8 + + +/*------------------------------------------------------------*/ +/* + * PCR_AZ_MSI_NXT_PTR_REG(8bit): + * MSI next item pointer + */ +#define PCR_AZ_MSI_NXT_PTR_REG 0x00000051 +/* sienaa0=pci_f0_config,falcona0,falconb0=pci_f0_config */ + +#define PCRF_AZ_MSI_NXT_PTR_LBN 0 +#define PCRF_AZ_MSI_NXT_PTR_WIDTH 8 + + +/*------------------------------------------------------------*/ +/* + * PCR_AZ_MSI_CTL_REG(16bit): + * MSI control register + */ +#define PCR_AZ_MSI_CTL_REG 0x00000052 +/* sienaa0=pci_f0_config,falcona0,falconb0=pci_f0_config */ + +#define PCRF_AZ_MSI_64_EN_LBN 7 +#define PCRF_AZ_MSI_64_EN_WIDTH 1 +#define PCRF_AZ_MSI_MULT_MSG_EN_LBN 4 +#define PCRF_AZ_MSI_MULT_MSG_EN_WIDTH 3 +#define PCRF_AZ_MSI_MULT_MSG_CAP_LBN 1 +#define PCRF_AZ_MSI_MULT_MSG_CAP_WIDTH 3 +#define PCRF_AZ_MSI_EN_LBN 0 +#define PCRF_AZ_MSI_EN_WIDTH 1 + + +/*------------------------------------------------------------*/ +/* + * PCR_AZ_MSI_ADR_HI_REG(32bit): + * MSI high 32 bits address register + */ +#define PCR_AZ_MSI_ADR_HI_REG 0x00000058 +/* sienaa0=pci_f0_config,falcona0,falconb0=pci_f0_config */ + +#define PCRF_AZ_MSI_ADR_HI_LBN 0 +#define PCRF_AZ_MSI_ADR_HI_WIDTH 32 + + +/*------------------------------------------------------------*/ +/* + * PCR_CZ_PCIE_CAP_LIST_REG(16bit): + * PCIe capability list register + */ +#define PCR_CZ_PCIE_CAP_LIST_REG 0x00000070 +/* sienaa0=pci_f0_config */ +/* + * PCR_AB_PCIE_CAP_LIST_REG(16bit): + * PCIe capability list register + */ +#define PCR_AB_PCIE_CAP_LIST_REG 0x00000060 +/* falcona0,falconb0=pci_f0_config */ + +#define PCRF_AZ_PCIE_NXT_PTR_LBN 8 +#define PCRF_AZ_PCIE_NXT_PTR_WIDTH 8 +#define PCRF_AZ_PCIE_CAP_ID_LBN 0 +#define PCRF_AZ_PCIE_CAP_ID_WIDTH 8 + + +/*------------------------------------------------------------*/ +/* + * PCR_CZ_DEV_CAP_REG(28bit): + * PCIe device capabilities register + */ +#define PCR_CZ_DEV_CAP_REG 0x00000074 +/* sienaa0=pci_f0_config */ +/* + * PCR_AB_DEV_CAP_REG(28bit): + * PCIe device capabilities register + */ +#define PCR_AB_DEV_CAP_REG 0x00000064 +/* falcona0,falconb0=pci_f0_config */ + +#define PCRF_CZ_CAP_FN_LEVEL_RESET_LBN 28 +#define PCRF_CZ_CAP_FN_LEVEL_RESET_WIDTH 1 +#define PCRF_AZ_CAP_SLOT_PWR_SCL_LBN 26 +#define PCRF_AZ_CAP_SLOT_PWR_SCL_WIDTH 2 +#define PCRF_AZ_CAP_SLOT_PWR_VAL_LBN 18 +#define PCRF_AZ_CAP_SLOT_PWR_VAL_WIDTH 8 +#define PCRF_CZ_ROLE_BASE_ERR_REPORTING_LBN 15 +#define PCRF_CZ_ROLE_BASE_ERR_REPORTING_WIDTH 1 +#define PCRF_AB_PWR_IND_LBN 14 +#define PCRF_AB_PWR_IND_WIDTH 1 +#define PCRF_AB_ATTN_IND_LBN 13 +#define PCRF_AB_ATTN_IND_WIDTH 1 +#define PCRF_AB_ATTN_BUTTON_LBN 12 +#define PCRF_AB_ATTN_BUTTON_WIDTH 1 +#define PCRF_AZ_ENDPT_L1_LAT_LBN 9 +#define PCRF_AZ_ENDPT_L1_LAT_WIDTH 3 +#define PCRF_AZ_ENDPT_L0_LAT_LBN 6 +#define PCRF_AZ_ENDPT_L0_LAT_WIDTH 3 +#define PCRF_AZ_TAG_FIELD_LBN 5 +#define PCRF_AZ_TAG_FIELD_WIDTH 1 +#define PCRF_AZ_PHAN_FUNC_LBN 3 +#define PCRF_AZ_PHAN_FUNC_WIDTH 2 +#define PCRF_AZ_MAX_PAYL_SIZE_SUPT_LBN 0 +#define PCRF_AZ_MAX_PAYL_SIZE_SUPT_WIDTH 3 + + +/*------------------------------------------------------------*/ +/* + * PCR_CZ_DEV_CTL_REG(16bit): + * PCIe device control register + */ +#define PCR_CZ_DEV_CTL_REG 0x00000078 +/* sienaa0=pci_f0_config */ +/* + * PCR_AB_DEV_CTL_REG(16bit): + * PCIe device control register + */ +#define PCR_AB_DEV_CTL_REG 0x00000068 +/* falcona0,falconb0=pci_f0_config */ + +#define PCRF_CZ_FN_LEVEL_RESET_LBN 15 +#define PCRF_CZ_FN_LEVEL_RESET_WIDTH 1 +#define PCRF_AZ_MAX_RD_REQ_SIZE_LBN 12 +#define PCRF_AZ_MAX_RD_REQ_SIZE_WIDTH 3 +#define PCFE_AZ_MAX_RD_REQ_SIZE_4096 5 +#define PCFE_AZ_MAX_RD_REQ_SIZE_2048 4 +#define PCFE_AZ_MAX_RD_REQ_SIZE_1024 3 +#define PCFE_AZ_MAX_RD_REQ_SIZE_512 2 +#define PCFE_AZ_MAX_RD_REQ_SIZE_256 1 +#define PCFE_AZ_MAX_RD_REQ_SIZE_128 0 +#define PCRF_AZ_EN_NO_SNOOP_LBN 11 +#define PCRF_AZ_EN_NO_SNOOP_WIDTH 1 +#define PCRF_AZ_AUX_PWR_PM_EN_LBN 10 +#define PCRF_AZ_AUX_PWR_PM_EN_WIDTH 1 +#define PCRF_AZ_PHAN_FUNC_EN_LBN 9 +#define PCRF_AZ_PHAN_FUNC_EN_WIDTH 1 +#define PCRF_AB_DEV_CAP_REG_RSVD0_LBN 8 +#define PCRF_AB_DEV_CAP_REG_RSVD0_WIDTH 1 +#define PCRF_CZ_EXTENDED_TAG_EN_LBN 8 +#define PCRF_CZ_EXTENDED_TAG_EN_WIDTH 1 +#define PCRF_AZ_MAX_PAYL_SIZE_LBN 5 +#define PCRF_AZ_MAX_PAYL_SIZE_WIDTH 3 +#define PCFE_AZ_MAX_PAYL_SIZE_4096 5 +#define PCFE_AZ_MAX_PAYL_SIZE_2048 4 +#define PCFE_AZ_MAX_PAYL_SIZE_1024 3 +#define PCFE_AZ_MAX_PAYL_SIZE_512 2 +#define PCFE_AZ_MAX_PAYL_SIZE_256 1 +#define PCFE_AZ_MAX_PAYL_SIZE_128 0 +#define PCRF_AZ_EN_RELAX_ORDER_LBN 4 +#define PCRF_AZ_EN_RELAX_ORDER_WIDTH 1 +#define PCRF_AZ_UNSUP_REQ_RPT_EN_LBN 3 +#define PCRF_AZ_UNSUP_REQ_RPT_EN_WIDTH 1 +#define PCRF_AZ_FATAL_ERR_RPT_EN_LBN 2 +#define PCRF_AZ_FATAL_ERR_RPT_EN_WIDTH 1 +#define PCRF_AZ_NONFATAL_ERR_RPT_EN_LBN 1 +#define PCRF_AZ_NONFATAL_ERR_RPT_EN_WIDTH 1 +#define PCRF_AZ_CORR_ERR_RPT_EN_LBN 0 +#define PCRF_AZ_CORR_ERR_RPT_EN_WIDTH 1 + + +/*------------------------------------------------------------*/ +/* + * PCR_CZ_DEV_STAT_REG(16bit): + * PCIe device status register + */ +#define PCR_CZ_DEV_STAT_REG 0x0000007a +/* sienaa0=pci_f0_config */ +/* + * PCR_AB_DEV_STAT_REG(16bit): + * PCIe device status register + */ +#define PCR_AB_DEV_STAT_REG 0x0000006a +/* falcona0,falconb0=pci_f0_config */ + +#define PCRF_AZ_TRNS_PEND_LBN 5 +#define PCRF_AZ_TRNS_PEND_WIDTH 1 +#define PCRF_AZ_AUX_PWR_DET_LBN 4 +#define PCRF_AZ_AUX_PWR_DET_WIDTH 1 +#define PCRF_AZ_UNSUP_REQ_DET_LBN 3 +#define PCRF_AZ_UNSUP_REQ_DET_WIDTH 1 +#define PCRF_AZ_FATAL_ERR_DET_LBN 2 +#define PCRF_AZ_FATAL_ERR_DET_WIDTH 1 +#define PCRF_AZ_NONFATAL_ERR_DET_LBN 1 +#define PCRF_AZ_NONFATAL_ERR_DET_WIDTH 1 +#define PCRF_AZ_CORR_ERR_DET_LBN 0 +#define PCRF_AZ_CORR_ERR_DET_WIDTH 1 + + +/*------------------------------------------------------------*/ +/* + * PCR_CZ_LNK_CAP_REG(32bit): + * PCIe link capabilities register + */ +#define PCR_CZ_LNK_CAP_REG 0x0000007c +/* sienaa0=pci_f0_config */ +/* + * PCR_AB_LNK_CAP_REG(32bit): + * PCIe link capabilities register + */ +#define PCR_AB_LNK_CAP_REG 0x0000006c +/* falcona0,falconb0=pci_f0_config */ + +#define PCRF_AZ_PORT_NUM_LBN 24 +#define PCRF_AZ_PORT_NUM_WIDTH 8 +#define PCRF_CZ_LINK_BWDITH_NOTIF_CAP_LBN 21 +#define PCRF_CZ_LINK_BWDITH_NOTIF_CAP_WIDTH 1 +#define PCRF_CZ_DATA_LINK_ACTIVE_RPT_CAP_LBN 20 +#define PCRF_CZ_DATA_LINK_ACTIVE_RPT_CAP_WIDTH 1 +#define PCRF_CZ_SURPISE_DOWN_RPT_CAP_LBN 19 +#define PCRF_CZ_SURPISE_DOWN_RPT_CAP_WIDTH 1 +#define PCRF_CZ_CLOCK_PWR_MNGMNT_CAP_LBN 18 +#define PCRF_CZ_CLOCK_PWR_MNGMNT_CAP_WIDTH 1 +#define PCRF_AZ_DEF_L1_EXIT_LAT_LBN 15 +#define PCRF_AZ_DEF_L1_EXIT_LAT_WIDTH 3 +#define PCRF_AZ_DEF_L0_EXIT_LATPORT_NUM_LBN 12 +#define PCRF_AZ_DEF_L0_EXIT_LATPORT_NUM_WIDTH 3 +#define PCRF_AZ_AS_LNK_PM_SUPT_LBN 10 +#define PCRF_AZ_AS_LNK_PM_SUPT_WIDTH 2 +#define PCRF_AZ_MAX_LNK_WIDTH_LBN 4 +#define PCRF_AZ_MAX_LNK_WIDTH_WIDTH 6 +#define PCRF_AZ_MAX_LNK_SP_LBN 0 +#define PCRF_AZ_MAX_LNK_SP_WIDTH 4 + + +/*------------------------------------------------------------*/ +/* + * PCR_CZ_DEV_CTL2_REG(16bit): + * PCIe Device Control 2 + */ +#define PCR_CZ_DEV_CTL2_REG 0x00000098 +/* sienaa0=pci_f0_config */ + +#define PCRF_CZ_CMPL_TIMEOUT_DIS_CTL_LBN 4 +#define PCRF_CZ_CMPL_TIMEOUT_DIS_CTL_WIDTH 1 +#define PCRF_CZ_CMPL_TIMEOUT_CTL_LBN 0 +#define PCRF_CZ_CMPL_TIMEOUT_CTL_WIDTH 4 + + +/*------------------------------------------------------------*/ +/* + * PCR_CZ_LNK_STAT2_REG(16bit): + * PCIe Link Status 2 + */ +#define PCR_CZ_LNK_STAT2_REG 0x000000a2 +/* sienaa0=pci_f0_config */ + +#define PCRF_CZ_CURRENT_DEEMPH_LBN 0 +#define PCRF_CZ_CURRENT_DEEMPH_WIDTH 1 + + +/*------------------------------------------------------------*/ +/* + * PCR_CZ_MSIX_NXT_PTR_REG(8bit): + * MSIX Capability Next Capability Ptr + */ +#define PCR_CZ_MSIX_NXT_PTR_REG 0x000000b1 +/* sienaa0=pci_f0_config */ +/* + * PCR_BB_MSIX_NXT_PTR_REG(8bit): + * MSIX Capability Next Capability Ptr + */ +#define PCR_BB_MSIX_NXT_PTR_REG 0x00000091 +/* falconb0=pci_f0_config */ + +#define PCRF_BZ_MSIX_NXT_PTR_LBN 0 +#define PCRF_BZ_MSIX_NXT_PTR_WIDTH 8 + + +/*------------------------------------------------------------*/ +/* + * PCR_CZ_MSIX_CTL_REG(16bit): + * MSIX control register + */ +#define PCR_CZ_MSIX_CTL_REG 0x000000b2 +/* sienaa0=pci_f0_config */ +/* + * PCR_BB_MSIX_CTL_REG(16bit): + * MSIX control register + */ +#define PCR_BB_MSIX_CTL_REG 0x00000092 +/* falconb0=pci_f0_config */ + +#define PCRF_BZ_MSIX_EN_LBN 15 +#define PCRF_BZ_MSIX_EN_WIDTH 1 +#define PCRF_BZ_MSIX_FUNC_MASK_LBN 14 +#define PCRF_BZ_MSIX_FUNC_MASK_WIDTH 1 +#define PCRF_BZ_MSIX_TBL_SIZE_LBN 0 +#define PCRF_BZ_MSIX_TBL_SIZE_WIDTH 11 + + +/*------------------------------------------------------------*/ +/* + * PCR_AZ_AER_UNCORR_ERR_SEV_REG(32bit): + * AER Uncorrectable error severity register + */ +#define PCR_AZ_AER_UNCORR_ERR_SEV_REG 0x0000010c +/* sienaa0=pci_f0_config,falcona0,falconb0=pci_f0_config */ + +#define PCRF_AZ_UNSUPT_REQ_ERR_SEV_LBN 20 +#define PCRF_AZ_UNSUPT_REQ_ERR_SEV_WIDTH 1 +#define PCRF_AZ_ECRC_ERR_SEV_LBN 19 +#define PCRF_AZ_ECRC_ERR_SEV_WIDTH 1 +#define PCRF_AZ_MALF_TLP_SEV_LBN 18 +#define PCRF_AZ_MALF_TLP_SEV_WIDTH 1 +#define PCRF_AZ_RX_OVF_SEV_LBN 17 +#define PCRF_AZ_RX_OVF_SEV_WIDTH 1 +#define PCRF_AZ_UNEXP_COMP_SEV_LBN 16 +#define PCRF_AZ_UNEXP_COMP_SEV_WIDTH 1 +#define PCRF_AZ_COMP_ABRT_SEV_LBN 15 +#define PCRF_AZ_COMP_ABRT_SEV_WIDTH 1 +#define PCRF_AZ_COMP_TIMEOUT_SEV_LBN 14 +#define PCRF_AZ_COMP_TIMEOUT_SEV_WIDTH 1 +#define PCRF_AZ_FC_PROTO_ERR_SEV_LBN 13 +#define PCRF_AZ_FC_PROTO_ERR_SEV_WIDTH 1 +#define PCRF_AZ_PSON_TLP_SEV_LBN 12 +#define PCRF_AZ_PSON_TLP_SEV_WIDTH 1 +#define PCRF_AZ_DL_PROTO_ERR_SEV_LBN 4 +#define PCRF_AZ_DL_PROTO_ERR_SEV_WIDTH 1 +#define PCRF_AB_TRAIN_ERR_SEV_LBN 0 +#define PCRF_AB_TRAIN_ERR_SEV_WIDTH 1 + + +/*------------------------------------------------------------*/ +/* + * PCR_AZ_AER_CORR_ERR_STAT_REG(32bit): + * AER Correctable error status register + */ +#define PCR_AZ_AER_CORR_ERR_STAT_REG 0x00000110 +/* sienaa0=pci_f0_config,falcona0,falconb0=pci_f0_config */ + +#define PCRF_CZ_ADVSY_NON_FATAL_STAT_LBN 13 +#define PCRF_CZ_ADVSY_NON_FATAL_STAT_WIDTH 1 +#define PCRF_AZ_RPLY_TMR_TOUT_STAT_LBN 12 +#define PCRF_AZ_RPLY_TMR_TOUT_STAT_WIDTH 1 +#define PCRF_AZ_RPLAY_NUM_RO_STAT_LBN 8 +#define PCRF_AZ_RPLAY_NUM_RO_STAT_WIDTH 1 +#define PCRF_AZ_BAD_DLLP_STAT_LBN 7 +#define PCRF_AZ_BAD_DLLP_STAT_WIDTH 1 +#define PCRF_AZ_BAD_TLP_STAT_LBN 6 +#define PCRF_AZ_BAD_TLP_STAT_WIDTH 1 +#define PCRF_AZ_RX_ERR_STAT_LBN 0 +#define PCRF_AZ_RX_ERR_STAT_WIDTH 1 + + +/*------------------------------------------------------------*/ +/* + * PCR_CZ_DEVSN_DWORD1_REG(32bit): + * Device serial number DWORD0 + */ +#define PCR_CZ_DEVSN_DWORD1_REG 0x00000148 +/* sienaa0=pci_f0_config */ + +#define PCRF_CZ_DEVSN_DWORD1_LBN 0 +#define PCRF_CZ_DEVSN_DWORD1_WIDTH 32 + + +/*------------------------------------------------------------*/ +/* + * PCR_CZ_ARI_CTL_REG(16bit): + * ARI Control + */ +#define PCR_CZ_ARI_CTL_REG 0x00000156 +/* sienaa0=pci_f0_config */ + +#define PCRF_CZ_ARI_FN_GRP_LBN 4 +#define PCRF_CZ_ARI_FN_GRP_WIDTH 3 +#define PCRF_CZ_ARI_ACS_FNGRP_EN_LBN 1 +#define PCRF_CZ_ARI_ACS_FNGRP_EN_WIDTH 1 +#define PCRF_CZ_ARI_MFVC_FNGRP_EN_LBN 0 +#define PCRF_CZ_ARI_MFVC_FNGRP_EN_WIDTH 1 + + +/*------------------------------------------------------------*/ +/* + * PCR_CZ_SRIOV_CAP_HDR_REG(32bit): + * SRIOV capability header register + */ +#define PCR_CZ_SRIOV_CAP_HDR_REG 0x00000160 +/* sienaa0=pci_f0_config */ + +#define PCRF_CZ_SRIOVCAPHDR_NXT_PTR_LBN 20 +#define PCRF_CZ_SRIOVCAPHDR_NXT_PTR_WIDTH 12 +#define PCRF_CZ_SRIOVCAPHDR_VER_LBN 16 +#define PCRF_CZ_SRIOVCAPHDR_VER_WIDTH 4 +#define PCRF_CZ_SRIOVCAPHDR_ID_LBN 0 +#define PCRF_CZ_SRIOVCAPHDR_ID_WIDTH 16 + + +/*------------------------------------------------------------*/ +/* + * PCR_CZ_SRIOV_INITIALVFS_REG(16bit): + * SRIOV Initial VFs + */ +#define PCR_CZ_SRIOV_INITIALVFS_REG 0x0000016c +/* sienaa0=pci_f0_config */ + +#define PCRF_CZ_VF_INITIALVFS_LBN 0 +#define PCRF_CZ_VF_INITIALVFS_WIDTH 16 + + +/*------------------------------------------------------------*/ +/* + * PCR_CZ_SRIOV_FN_DPND_LNK_REG(16bit): + * SRIOV Function dependency link + */ +#define PCR_CZ_SRIOV_FN_DPND_LNK_REG 0x00000172 +/* sienaa0=pci_f0_config */ + +#define PCRF_CZ_SRIOV_FN_DPND_LNK_LBN 0 +#define PCRF_CZ_SRIOV_FN_DPND_LNK_WIDTH 8 + + +/*------------------------------------------------------------*/ +/* + * PCR_CZ_SRIOV_1STVF_OFFSET_REG(16bit): + * SRIOV First VF Offset + */ +#define PCR_CZ_SRIOV_1STVF_OFFSET_REG 0x00000174 +/* sienaa0=pci_f0_config */ + +#define PCRF_CZ_VF_1STVF_OFFSET_LBN 0 +#define PCRF_CZ_VF_1STVF_OFFSET_WIDTH 16 + + +/*------------------------------------------------------------*/ +/* + * PCR_AZ_CMD_REG(16bit): + * Command register + */ +#define PCR_AZ_CMD_REG 0x00000004 +/* falcona0,falconb0=pci_f0_config,sienaa0=pci_f0_config */ + +#define PCRF_AZ_INTX_DIS_LBN 10 +#define PCRF_AZ_INTX_DIS_WIDTH 1 +#define PCRF_AZ_FB2B_EN_LBN 9 +#define PCRF_AZ_FB2B_EN_WIDTH 1 +#define PCRF_AZ_SERR_EN_LBN 8 +#define PCRF_AZ_SERR_EN_WIDTH 1 +#define PCRF_AZ_IDSEL_CTL_LBN 7 +#define PCRF_AZ_IDSEL_CTL_WIDTH 1 +#define PCRF_AZ_PERR_EN_LBN 6 +#define PCRF_AZ_PERR_EN_WIDTH 1 +#define PCRF_AZ_VGA_PAL_SNP_LBN 5 +#define PCRF_AZ_VGA_PAL_SNP_WIDTH 1 +#define PCRF_AZ_MWI_EN_LBN 4 +#define PCRF_AZ_MWI_EN_WIDTH 1 +#define PCRF_AZ_SPEC_CYC_LBN 3 +#define PCRF_AZ_SPEC_CYC_WIDTH 1 +#define PCRF_AZ_MST_EN_LBN 2 +#define PCRF_AZ_MST_EN_WIDTH 1 +#define PCRF_AZ_MEM_EN_LBN 1 +#define PCRF_AZ_MEM_EN_WIDTH 1 +#define PCRF_AZ_IO_EN_LBN 0 +#define PCRF_AZ_IO_EN_WIDTH 1 + + +/*------------------------------------------------------------*/ +/* + * PCR_AB_VPD_CAP_DATA_REG(32bit): + * documentation to be written for sum_PC_VPD_CAP_DATA_REG + */ +#define PCR_AB_VPD_CAP_DATA_REG 0x000000b4 +/* falcona0,falconb0=pci_f0_config */ +/* + * PCR_CZ_VPD_CAP_DATA_REG(32bit): + * documentation to be written for sum_PC_VPD_CAP_DATA_REG + */ +#define PCR_CZ_VPD_CAP_DATA_REG 0x000000d4 +/* sienaa0=pci_f0_config */ + +#define PCRF_AZ_VPD_DATA_LBN 0 +#define PCRF_AZ_VPD_DATA_WIDTH 32 + + +/*------------------------------------------------------------*/ +/* + * PCR_AZ_BAR2_HI_REG(32bit): + * Primary function base address register 2 high bits + */ +#define PCR_AZ_BAR2_HI_REG 0x0000001c +/* sienaa0=pci_f0_config,falcona0,falconb0=pci_f0_config */ + +#define PCRF_AZ_BAR2_HI_LBN 0 +#define PCRF_AZ_BAR2_HI_WIDTH 32 + + +/*------------------------------------------------------------*/ +/* + * PCR_AZ_SS_VEND_ID_REG(16bit): + * Sub-system vendor ID register + */ +#define PCR_AZ_SS_VEND_ID_REG 0x0000002c +/* sienaa0=pci_f0_config,falcona0,falconb0=pci_f0_config */ + +#define PCRF_AZ_SS_VEND_ID_LBN 0 +#define PCRF_AZ_SS_VEND_ID_WIDTH 16 + + +/*------------------------------------------------------------*/ +/* + * PCR_AZ_AER_CAP_HDR_REG(32bit): + * AER capability header register + */ +#define PCR_AZ_AER_CAP_HDR_REG 0x00000100 +/* sienaa0=pci_f0_config,falcona0,falconb0=pci_f0_config */ + +#define PCRF_AZ_AERCAPHDR_NXT_PTR_LBN 20 +#define PCRF_AZ_AERCAPHDR_NXT_PTR_WIDTH 12 +#define PCRF_AZ_AERCAPHDR_VER_LBN 16 +#define PCRF_AZ_AERCAPHDR_VER_WIDTH 4 +#define PCRF_AZ_AERCAPHDR_ID_LBN 0 +#define PCRF_AZ_AERCAPHDR_ID_WIDTH 16 + + +/*------------------------------------------------------------*/ +/* + * PCR_AZ_AER_HDR_LOG_REG(128bit): + * AER Header log register + */ +#define PCR_AZ_AER_HDR_LOG_REG 0x0000011c +/* sienaa0=pci_f0_config,falcona0,falconb0=pci_f0_config */ + +#define PCRF_AZ_HDR_LOG_LBN 0 +#define PCRF_AZ_HDR_LOG_WIDTH 128 + + +/*------------------------------------------------------------*/ +/* + * PCR_CZ_SRIOV_VFSTRIDE_REG(16bit): + * SRIOV VF Stride + */ +#define PCR_CZ_SRIOV_VFSTRIDE_REG 0x00000176 +/* sienaa0=pci_f0_config */ + +#define PCRF_CZ_VF_VFSTRIDE_LBN 0 +#define PCRF_CZ_VF_VFSTRIDE_WIDTH 16 + + +/*------------------------------------------------------------*/ +/* + * PCR_CZ_SRIOV_DEVID_REG(16bit): + * SRIOV VF Device ID + */ +#define PCR_CZ_SRIOV_DEVID_REG 0x0000017a +/* sienaa0=pci_f0_config */ + +#define PCRF_CZ_VF_DEVID_LBN 0 +#define PCRF_CZ_VF_DEVID_WIDTH 16 + + +/*------------------------------------------------------------*/ +/* + * PCR_CZ_SRIOV_SYS_PAGESZ_REG(32bit): + * SRIOV System Page Size + */ +#define PCR_CZ_SRIOV_SYS_PAGESZ_REG 0x00000180 +/* sienaa0=pci_f0_config */ + +#define PCRF_CZ_VF_SYS_PAGESZ_LBN 0 +#define PCRF_CZ_VF_SYS_PAGESZ_WIDTH 16 + + +/*------------------------------------------------------------*/ +/* + * PCR_CZ_SRIOV_MIBR_SARRAY_OFFSET_REG(32bit): + * SRIOV VF Migration State Array Offset + */ +#define PCR_CZ_SRIOV_MIBR_SARRAY_OFFSET_REG 0x0000019c +/* sienaa0=pci_f0_config */ + +#define PCRF_CZ_VF_MIGR_OFFSET_LBN 3 +#define PCRF_CZ_VF_MIGR_OFFSET_WIDTH 29 +#define PCRF_CZ_VF_MIGR_BIR_LBN 0 +#define PCRF_CZ_VF_MIGR_BIR_WIDTH 3 + + +/*------------------------------------------------------------*/ +/* + * PCR_AZ_ACK_FREQ_REG(32bit): + * ACK frequency register + */ +#define PCR_AZ_ACK_FREQ_REG 0x0000070c +/* sienaa0=pci_f0_config,falcona0,falconb0=pci_f0_config */ + +#define PCRF_CZ_ALLOW_L1_WITHOUT_L0S_LBN 30 +#define PCRF_CZ_ALLOW_L1_WITHOUT_L0S_WIDTH 1 +#define PCRF_AZ_L1_ENTR_LAT_LBN 27 +#define PCRF_AZ_L1_ENTR_LAT_WIDTH 3 +#define PCRF_AZ_L0_ENTR_LAT_LBN 24 +#define PCRF_AZ_L0_ENTR_LAT_WIDTH 3 +#define PCRF_CZ_COMM_NFTS_LBN 16 +#define PCRF_CZ_COMM_NFTS_WIDTH 8 +#define PCRF_AB_ACK_FREQ_REG_RSVD0_LBN 16 +#define PCRF_AB_ACK_FREQ_REG_RSVD0_WIDTH 3 +#define PCRF_AZ_MAX_FTS_LBN 8 +#define PCRF_AZ_MAX_FTS_WIDTH 8 +#define PCRF_AZ_ACK_FREQ_LBN 0 +#define PCRF_AZ_ACK_FREQ_WIDTH 8 + + +/*------------------------------------------------------------*/ +/* + * PCR_AZ_DEBUG0_REG(32bit): + * Debug register 0 + */ +#define PCR_AZ_DEBUG0_REG 0x00000728 +/* sienaa0=pci_f0_config,falcona0,falconb0=pci_f0_config */ + +#define PCRF_AZ_CDI03_LBN 24 +#define PCRF_AZ_CDI03_WIDTH 8 +#define PCRF_AZ_CDI0_LBN 0 +#define PCRF_AZ_CDI0_WIDTH 32 +#define PCRF_AZ_CDI02_LBN 16 +#define PCRF_AZ_CDI02_WIDTH 8 +#define PCRF_AZ_CDI01_LBN 8 +#define PCRF_AZ_CDI01_WIDTH 8 +#define PCRF_AZ_CDI00_LBN 0 +#define PCRF_AZ_CDI00_WIDTH 8 + + +/*------------------------------------------------------------*/ +/* + * PCR_CZ_VC_XMIT_ARB2_REG(32bit): + * VC Transmit Arbitration Register 2 + */ +#define PCR_CZ_VC_XMIT_ARB2_REG 0x00000744 +/* sienaa0=pci_f0_config */ + + + +/*------------------------------------------------------------*/ +/* + * PCR_AZ_CACHE_LSIZE_REG(8bit): + * Cache line size + */ +#define PCR_AZ_CACHE_LSIZE_REG 0x0000000c +/* falcona0,falconb0=pci_f0_config,sienaa0=pci_f0_config */ + +#define PCRF_AZ_CACHE_LSIZE_LBN 0 +#define PCRF_AZ_CACHE_LSIZE_WIDTH 8 + + +/*------------------------------------------------------------*/ +/* + * PCR_AZ_PM_CAP_ID_REG(8bit): + * Power management capability ID + */ +#define PCR_AZ_PM_CAP_ID_REG 0x00000040 +/* falcona0,falconb0=pci_f0_config,sienaa0=pci_f0_config */ + +#define PCRF_AZ_PM_CAP_ID_LBN 0 +#define PCRF_AZ_PM_CAP_ID_WIDTH 8 + + +/*------------------------------------------------------------*/ +/* + * PCR_AZ_MSI_DAT_REG(16bit): + * MSI data register + */ +#define PCR_AZ_MSI_DAT_REG 0x0000005c +/* falcona0,falconb0=pci_f0_config,sienaa0=pci_f0_config */ + +#define PCRF_AZ_MSI_DAT_LBN 0 +#define PCRF_AZ_MSI_DAT_WIDTH 16 + + +/*------------------------------------------------------------*/ +/* + * PCR_AZ_FORCE_LNK_REG(24bit): + * Port force link register + */ +#define PCR_AZ_FORCE_LNK_REG 0x00000708 +/* falcona0,falconb0=pci_f0_config,sienaa0=pci_f0_config */ + +#define PCRF_AZ_LFS_LBN 16 +#define PCRF_AZ_LFS_WIDTH 6 +#define PCRF_AZ_FL_LBN 15 +#define PCRF_AZ_FL_WIDTH 1 +#define PCRF_AZ_LN_LBN 0 +#define PCRF_AZ_LN_WIDTH 8 + + +/*------------------------------------------------------------*/ +/* + * PCR_CZ_DEV_CAP2_REG(16bit): + * PCIe Device Capabilities 2 + */ +#define PCR_CZ_DEV_CAP2_REG 0x00000094 +/* sienaa0=pci_f0_config */ + +#define PCRF_CZ_CMPL_TIMEOUT_DIS_LBN 4 +#define PCRF_CZ_CMPL_TIMEOUT_DIS_WIDTH 1 +#define PCRF_CZ_CMPL_TIMEOUT_LBN 0 +#define PCRF_CZ_CMPL_TIMEOUT_WIDTH 4 +#define PCFE_CZ_CMPL_TIMEOUT_17000_TO_6400MS 14 +#define PCFE_CZ_CMPL_TIMEOUT_4000_TO_1300MS 13 +#define PCFE_CZ_CMPL_TIMEOUT_1000_TO_3500MS 10 +#define PCFE_CZ_CMPL_TIMEOUT_260_TO_900MS 9 +#define PCFE_CZ_CMPL_TIMEOUT_65_TO_210MS 6 +#define PCFE_CZ_CMPL_TIMEOUT_16_TO_55MS 5 +#define PCFE_CZ_CMPL_TIMEOUT_1_TO_10MS 2 +#define PCFE_CZ_CMPL_TIMEOUT_50_TO_100US 1 +#define PCFE_CZ_CMPL_TIMEOUT_DEFAULT 0 + + +/*------------------------------------------------------------*/ +/* + * PCR_AZ_AER_CAP_CTL_REG(32bit): + * AER capability and control register + */ +#define PCR_AZ_AER_CAP_CTL_REG 0x00000118 +/* sienaa0=pci_f0_config,falcona0,falconb0=pci_f0_config */ + +#define PCRF_AZ_ECRC_CHK_EN_LBN 8 +#define PCRF_AZ_ECRC_CHK_EN_WIDTH 1 +#define PCRF_AZ_ECRC_CHK_CAP_LBN 7 +#define PCRF_AZ_ECRC_CHK_CAP_WIDTH 1 +#define PCRF_AZ_ECRC_GEN_EN_LBN 6 +#define PCRF_AZ_ECRC_GEN_EN_WIDTH 1 +#define PCRF_AZ_ECRC_GEN_CAP_LBN 5 +#define PCRF_AZ_ECRC_GEN_CAP_WIDTH 1 +#define PCRF_AZ_1ST_ERR_PTR_LBN 0 +#define PCRF_AZ_1ST_ERR_PTR_WIDTH 5 + + +/*------------------------------------------------------------*/ +/* + * PCR_CZ_SRIOV_BAR0_REG(32bit): + * SRIOV VF Bar0 + */ +#define PCR_CZ_SRIOV_BAR0_REG 0x00000184 +/* sienaa0=pci_f0_config */ + +#define PCRF_CZ_VF_BAR_ADDRESS_LBN 0 +#define PCRF_CZ_VF_BAR_ADDRESS_WIDTH 32 + + +/*------------------------------------------------------------*/ +/* + * PCR_CZ_SRIOV_BAR1_REG(32bit): + * SRIOV Bar1 + */ +#define PCR_CZ_SRIOV_BAR1_REG 0x00000188 +/* sienaa0=pci_f0_config */ + +/* defined as PCRF_CZ_VF_BAR_ADDRESS_LBN 0; access=rw reset=0x0 */ +/* defined as PCRF_CZ_VF_BAR_ADDRESS_WIDTH 32 */ + + +/*------------------------------------------------------------*/ +/* + * PCR_AZ_ACK_LAT_TMR_REG(32bit): + * ACK latency timer & replay timer register + */ +#define PCR_AZ_ACK_LAT_TMR_REG 0x00000700 +/* sienaa0=pci_f0_config,falcona0,falconb0=pci_f0_config */ + +#define PCRF_AZ_RT_LBN 16 +#define PCRF_AZ_RT_WIDTH 16 +#define PCRF_AZ_ALT_LBN 0 +#define PCRF_AZ_ALT_WIDTH 16 + + +/*------------------------------------------------------------*/ +/* + * PCR_CZ_SYM_TMR_FLT_MSK_REG(16bit): + * Symbol timer and Filter Mask Register + */ +#define PCR_CZ_SYM_TMR_FLT_MSK_REG 0x0000071c +/* sienaa0=pci_f0_config */ + +#define PCRF_CZ_ET_LBN 11 +#define PCRF_CZ_ET_WIDTH 4 +#define PCRF_CZ_SI1_LBN 8 +#define PCRF_CZ_SI1_WIDTH 3 +#define PCRF_CZ_SI0_LBN 0 +#define PCRF_CZ_SI0_WIDTH 8 + + +/*------------------------------------------------------------*/ +/* + * PCR_CZ_FLT_MSK_REG(32bit): + * Filter Mask Register 2 + */ +#define PCR_CZ_FLT_MSK_REG 0x00000720 +/* sienaa0=pci_f0_config */ + + + +/*------------------------------------------------------------*/ +/* + * PCR_AZ_XCFCC_STAT_REG(24bit): + * documentation to be written for sum_PC_XCFCC_STAT_REG + */ +#define PCR_AZ_XCFCC_STAT_REG 0x00000738 +/* sienaa0=pci_f0_config,falcona0,falconb0=pci_f0_config */ + +#define PCRF_AZ_XCDC_LBN 12 +#define PCRF_AZ_XCDC_WIDTH 8 +#define PCRF_AZ_XCHC_LBN 0 +#define PCRF_AZ_XCHC_WIDTH 12 + + +/*------------------------------------------------------------*/ +/* + * PCR_AZ_MSI_ADR_LO_REG(32bit): + * MSI low 32 bits address register + */ +#define PCR_AZ_MSI_ADR_LO_REG 0x00000054 +/* falcona0,falconb0=pci_f0_config,sienaa0=pci_f0_config */ + +#define PCRF_AZ_MSI_ADR_LO_LBN 2 +#define PCRF_AZ_MSI_ADR_LO_WIDTH 30 + + +/*------------------------------------------------------------*/ +/* + * PCR_AB_SLOT_CAP_REG(32bit): + * PCIe slot capabilities register + */ +#define PCR_AB_SLOT_CAP_REG 0x00000074 +/* falcona0,falconb0=pci_f0_config */ + +#define PCRF_AB_SLOT_NUM_LBN 19 +#define PCRF_AB_SLOT_NUM_WIDTH 13 +#define PCRF_AB_SLOT_PWR_LIM_SCL_LBN 15 +#define PCRF_AB_SLOT_PWR_LIM_SCL_WIDTH 2 +#define PCRF_AB_SLOT_PWR_LIM_VAL_LBN 7 +#define PCRF_AB_SLOT_PWR_LIM_VAL_WIDTH 8 +#define PCRF_AB_SLOT_HP_CAP_LBN 6 +#define PCRF_AB_SLOT_HP_CAP_WIDTH 1 +#define PCRF_AB_SLOT_HP_SURP_LBN 5 +#define PCRF_AB_SLOT_HP_SURP_WIDTH 1 +#define PCRF_AB_SLOT_PWR_IND_PRST_LBN 4 +#define PCRF_AB_SLOT_PWR_IND_PRST_WIDTH 1 +#define PCRF_AB_SLOT_ATTN_IND_PRST_LBN 3 +#define PCRF_AB_SLOT_ATTN_IND_PRST_WIDTH 1 +#define PCRF_AB_SLOT_MRL_SENS_PRST_LBN 2 +#define PCRF_AB_SLOT_MRL_SENS_PRST_WIDTH 1 +#define PCRF_AB_SLOT_PWR_CTL_PRST_LBN 1 +#define PCRF_AB_SLOT_PWR_CTL_PRST_WIDTH 1 +#define PCRF_AB_SLOT_ATTN_BUT_PRST_LBN 0 +#define PCRF_AB_SLOT_ATTN_BUT_PRST_WIDTH 1 + + +/*------------------------------------------------------------*/ +/* + * PCR_AZ_BAR0_REG(32bit): + * Primary function base address register 0 + */ +#define PCR_AZ_BAR0_REG 0x00000010 +/* sienaa0=pci_f0_config,falcona0,falconb0=pci_f0_config */ + +#define PCRF_AZ_BAR0_LBN 4 +#define PCRF_AZ_BAR0_WIDTH 28 +#define PCRF_AZ_BAR0_PREF_LBN 3 +#define PCRF_AZ_BAR0_PREF_WIDTH 1 +#define PCRF_AZ_BAR0_TYPE_LBN 1 +#define PCRF_AZ_BAR0_TYPE_WIDTH 2 +#define PCRF_AZ_BAR0_IOM_LBN 0 +#define PCRF_AZ_BAR0_IOM_WIDTH 1 + + +/*------------------------------------------------------------*/ +/* + * PCR_CZ_PCIE_CAP_REG(16bit): + * PCIe capability register + */ +#define PCR_CZ_PCIE_CAP_REG 0x00000072 +/* sienaa0=pci_f0_config */ +/* + * PCR_AB_PCIE_CAP_REG(16bit): + * PCIe capability register + */ +#define PCR_AB_PCIE_CAP_REG 0x00000062 +/* falcona0,falconb0=pci_f0_config */ + +#define PCRF_AZ_PCIE_INT_MSG_NUM_LBN 9 +#define PCRF_AZ_PCIE_INT_MSG_NUM_WIDTH 5 +#define PCRF_AZ_PCIE_SLOT_IMP_LBN 8 +#define PCRF_AZ_PCIE_SLOT_IMP_WIDTH 1 +#define PCRF_AZ_PCIE_DEV_PORT_TYPE_LBN 4 +#define PCRF_AZ_PCIE_DEV_PORT_TYPE_WIDTH 4 +#define PCRF_AZ_PCIE_CAP_VER_LBN 0 +#define PCRF_AZ_PCIE_CAP_VER_WIDTH 4 + + +/*------------------------------------------------------------*/ +/* + * PCR_CZ_LNK_CTL2_REG(16bit): + * PCIe Link Control 2 + */ +#define PCR_CZ_LNK_CTL2_REG 0x000000a0 +/* sienaa0=pci_f0_config */ + +#define PCRF_CZ_POLLING_DEEMPH_LVL_LBN 12 +#define PCRF_CZ_POLLING_DEEMPH_LVL_WIDTH 1 +#define PCRF_CZ_COMPLIANCE_SOS_CTL_LBN 11 +#define PCRF_CZ_COMPLIANCE_SOS_CTL_WIDTH 1 +#define PCRF_CZ_ENTER_MODIFIED_COMPLIANCE_CTL_LBN 10 +#define PCRF_CZ_ENTER_MODIFIED_COMPLIANCE_CTL_WIDTH 1 +#define PCRF_CZ_TRANSMIT_MARGIN_LBN 7 +#define PCRF_CZ_TRANSMIT_MARGIN_WIDTH 3 +#define PCRF_CZ_SELECT_DEEMPH_LBN 6 +#define PCRF_CZ_SELECT_DEEMPH_WIDTH 1 +#define PCRF_CZ_HW_AUTONOMOUS_SPEED_DIS_LBN 5 +#define PCRF_CZ_HW_AUTONOMOUS_SPEED_DIS_WIDTH 1 +#define PCRF_CZ_ENTER_COMPLIANCE_CTL_LBN 4 +#define PCRF_CZ_ENTER_COMPLIANCE_CTL_WIDTH 1 +#define PCRF_CZ_TGT_LNK_SPEED_CTL_LBN 0 +#define PCRF_CZ_TGT_LNK_SPEED_CTL_WIDTH 4 + + +/*------------------------------------------------------------*/ +/* + * PCR_CZ_MSIX_PBA_BASE_REG(32bit): + * MSIX Capability PBA Base + */ +#define PCR_CZ_MSIX_PBA_BASE_REG 0x000000b8 +/* sienaa0=pci_f0_config */ +/* + * PCR_BB_MSIX_PBA_BASE_REG(32bit): + * MSIX Capability PBA Base + */ +#define PCR_BB_MSIX_PBA_BASE_REG 0x00000098 +/* falconb0=pci_f0_config */ + +#define PCRF_BZ_MSIX_PBA_OFF_LBN 3 +#define PCRF_BZ_MSIX_PBA_OFF_WIDTH 29 +#define PCRF_BZ_MSIX_PBA_BIR_LBN 0 +#define PCRF_BZ_MSIX_PBA_BIR_WIDTH 3 + + +/*------------------------------------------------------------*/ +/* + * PCR_CZ_SRIOV_TOTALVFS_REG(10bit): + * SRIOV Total VFs + */ +#define PCR_CZ_SRIOV_TOTALVFS_REG 0x0000016e +/* sienaa0=pci_f0_config */ + +#define PCRF_CZ_VF_TOTALVFS_LBN 0 +#define PCRF_CZ_VF_TOTALVFS_WIDTH 16 + + +/*------------------------------------------------------------*/ +/* + * PCR_CZ_DEVSN_DWORD0_REG(32bit): + * Device serial number DWORD0 + */ +#define PCR_CZ_DEVSN_DWORD0_REG 0x00000144 +/* sienaa0=pci_f0_config */ + +#define PCRF_CZ_DEVSN_DWORD0_LBN 0 +#define PCRF_CZ_DEVSN_DWORD0_WIDTH 32 + + +/*------------------------------------------------------------*/ +/* + * PCR_CZ_SRIOV_CTL_REG(16bit): + * SRIOV Control + */ +#define PCR_CZ_SRIOV_CTL_REG 0x00000168 +/* sienaa0=pci_f0_config */ + +#define PCRF_CZ_VF_ARI_CAP_HRCHY_LBN 4 +#define PCRF_CZ_VF_ARI_CAP_HRCHY_WIDTH 1 +#define PCRF_CZ_VF_MSE_LBN 3 +#define PCRF_CZ_VF_MSE_WIDTH 1 +#define PCRF_CZ_VF_MIGR_INT_EN_LBN 2 +#define PCRF_CZ_VF_MIGR_INT_EN_WIDTH 1 +#define PCRF_CZ_VF_MIGR_EN_LBN 1 +#define PCRF_CZ_VF_MIGR_EN_WIDTH 1 +#define PCRF_CZ_VF_EN_LBN 0 +#define PCRF_CZ_VF_EN_WIDTH 1 + + +/*------------------------------------------------------------*/ +/* + * PCR_CZ_SRIOV_NUMVFS_REG(16bit): + * SRIOV Number of VFs + */ +#define PCR_CZ_SRIOV_NUMVFS_REG 0x00000170 +/* sienaa0=pci_f0_config */ + +#define PCRF_CZ_VF_NUMVFS_LBN 0 +#define PCRF_CZ_VF_NUMVFS_WIDTH 16 + + +/*------------------------------------------------------------*/ +/* + * PCR_CZ_SRIOV_SUP_PAGESZ_REG(16bit): + * SRIOV Supported Page Sizes + */ +#define PCR_CZ_SRIOV_SUP_PAGESZ_REG 0x0000017c +/* sienaa0=pci_f0_config */ + +#define PCRF_CZ_VF_SUP_PAGESZ_LBN 0 +#define PCRF_CZ_VF_SUP_PAGESZ_WIDTH 16 + + +/*------------------------------------------------------------*/ +/* + * PCR_CZ_SRIOV_BAR3_REG(32bit): + * SRIOV Bar3 + */ +#define PCR_CZ_SRIOV_BAR3_REG 0x00000190 +/* sienaa0=pci_f0_config */ + +/* defined as PCRF_CZ_VF_BAR_ADDRESS_LBN 0; access=rw reset=0x0 */ +/* defined as PCRF_CZ_VF_BAR_ADDRESS_WIDTH 32 */ + + +/*------------------------------------------------------------*/ +/* + * PCR_CZ_VC0_P_RQ_CTL_REG(32bit): + * VC0 Posted Receive Queue Control + */ +#define PCR_CZ_VC0_P_RQ_CTL_REG 0x00000748 +/* sienaa0=pci_f0_config */ + + + +/*------------------------------------------------------------*/ +/* + * PCR_AZ_PM_CAP_REG(16bit): + * Power management capabilities register + */ +#define PCR_AZ_PM_CAP_REG 0x00000042 +/* falcona0,falconb0=pci_f0_config,sienaa0=pci_f0_config */ + +#define PCRF_AZ_PM_PME_SUPT_LBN 11 +#define PCRF_AZ_PM_PME_SUPT_WIDTH 5 +#define PCRF_AZ_PM_D2_SUPT_LBN 10 +#define PCRF_AZ_PM_D2_SUPT_WIDTH 1 +#define PCRF_AZ_PM_D1_SUPT_LBN 9 +#define PCRF_AZ_PM_D1_SUPT_WIDTH 1 +#define PCRF_AZ_PM_AUX_CURR_LBN 6 +#define PCRF_AZ_PM_AUX_CURR_WIDTH 3 +#define PCRF_AZ_PM_DSI_LBN 5 +#define PCRF_AZ_PM_DSI_WIDTH 1 +#define PCRF_AZ_PM_PME_CLK_LBN 3 +#define PCRF_AZ_PM_PME_CLK_WIDTH 1 +#define PCRF_AZ_PM_PME_VER_LBN 0 +#define PCRF_AZ_PM_PME_VER_WIDTH 3 + + +/*------------------------------------------------------------*/ +/* + * PCR_AB_LNK_CTL_REG(16bit): + * PCIe link control register + */ +#define PCR_AB_LNK_CTL_REG 0x00000070 +/* falcona0,falconb0=pci_f0_config */ +/* + * PCR_CZ_LNK_CTL_REG(16bit): + * PCIe link control register + */ +#define PCR_CZ_LNK_CTL_REG 0x00000080 +/* sienaa0=pci_f0_config */ + +#define PCRF_AZ_EXT_SYNC_LBN 7 +#define PCRF_AZ_EXT_SYNC_WIDTH 1 +#define PCRF_AZ_COMM_CLK_CFG_LBN 6 +#define PCRF_AZ_COMM_CLK_CFG_WIDTH 1 +#define PCRF_AB_LNK_CTL_REG_RSVD0_LBN 5 +#define PCRF_AB_LNK_CTL_REG_RSVD0_WIDTH 1 +#define PCRF_CZ_LNK_RETRAIN_LBN 5 +#define PCRF_CZ_LNK_RETRAIN_WIDTH 1 +#define PCRF_AZ_LNK_DIS_LBN 4 +#define PCRF_AZ_LNK_DIS_WIDTH 1 +#define PCRF_AZ_RD_COM_BDRY_LBN 3 +#define PCRF_AZ_RD_COM_BDRY_WIDTH 1 +#define PCRF_AZ_ACT_ST_LNK_PM_CTL_LBN 0 +#define PCRF_AZ_ACT_ST_LNK_PM_CTL_WIDTH 2 + + +/*------------------------------------------------------------*/ +/* + * PCR_BB_MSIX_TBL_BASE_REG(32bit): + * MSIX Capability Vector Table Base + */ +#define PCR_BB_MSIX_TBL_BASE_REG 0x00000094 +/* falconb0=pci_f0_config */ +/* + * PCR_CZ_MSIX_TBL_BASE_REG(32bit): + * MSIX Capability Vector Table Base + */ +#define PCR_CZ_MSIX_TBL_BASE_REG 0x000000b4 +/* sienaa0=pci_f0_config */ + +#define PCRF_BZ_MSIX_TBL_OFF_LBN 3 +#define PCRF_BZ_MSIX_TBL_OFF_WIDTH 29 +#define PCRF_BZ_MSIX_TBL_BIR_LBN 0 +#define PCRF_BZ_MSIX_TBL_BIR_WIDTH 3 + + +/*------------------------------------------------------------*/ +/* + * PCR_AZ_XPFCC_STAT_REG(24bit): + * documentation to be written for sum_PC_XPFCC_STAT_REG + */ +#define PCR_AZ_XPFCC_STAT_REG 0x00000730 +/* falcona0,falconb0=pci_f0_config,sienaa0=pci_f0_config */ + +#define PCRF_AZ_XPDC_LBN 12 +#define PCRF_AZ_XPDC_WIDTH 8 +#define PCRF_AZ_XPHC_LBN 0 +#define PCRF_AZ_XPHC_WIDTH 12 + + +/*------------------------------------------------------------*/ +/* + * PCR_AZ_XNPFCC_STAT_REG(24bit): + * documentation to be written for sum_PC_XNPFCC_STAT_REG + */ +#define PCR_AZ_XNPFCC_STAT_REG 0x00000734 +/* falcona0,falconb0=pci_f0_config,sienaa0=pci_f0_config */ + +#define PCRF_AZ_XNPDC_LBN 12 +#define PCRF_AZ_XNPDC_WIDTH 8 +#define PCRF_AZ_XNPHC_LBN 0 +#define PCRF_AZ_XNPHC_WIDTH 12 + + +/*------------------------------------------------------------*/ +/* + * PCR_CZ_MSIX_CAP_ID_REG(8bit): + * MSIX Capability ID + */ +#define PCR_CZ_MSIX_CAP_ID_REG 0x000000b0 +/* sienaa0=pci_f0_config */ +/* + * PCR_BB_MSIX_CAP_ID_REG(8bit): + * MSIX Capability ID + */ +#define PCR_BB_MSIX_CAP_ID_REG 0x00000090 +/* falconb0=pci_f0_config */ + +#define PCRF_BZ_MSIX_CAP_ID_LBN 0 +#define PCRF_BZ_MSIX_CAP_ID_WIDTH 8 + + +/*------------------------------------------------------------*/ +/* + * PCR_CZ_DEVSN_CAP_HDR_REG(32bit): + * Device serial number capability header register + */ +#define PCR_CZ_DEVSN_CAP_HDR_REG 0x00000140 +/* sienaa0=pci_f0_config */ + +#define PCRF_CZ_DEVSNCAPHDR_NXT_PTR_LBN 20 +#define PCRF_CZ_DEVSNCAPHDR_NXT_PTR_WIDTH 12 +#define PCRF_CZ_DEVSNCAPHDR_VER_LBN 16 +#define PCRF_CZ_DEVSNCAPHDR_VER_WIDTH 4 +#define PCRF_CZ_DEVSNCAPHDR_ID_LBN 0 +#define PCRF_CZ_DEVSNCAPHDR_ID_WIDTH 16 + + +/*------------------------------------------------------------*/ +/* + * PCR_CZ_ARI_CAP_HDR_REG(32bit): + * ARI capability header register + */ +#define PCR_CZ_ARI_CAP_HDR_REG 0x00000150 +/* sienaa0=pci_f0_config */ + +#define PCRF_CZ_ARICAPHDR_NXT_PTR_LBN 20 +#define PCRF_CZ_ARICAPHDR_NXT_PTR_WIDTH 12 +#define PCRF_CZ_ARICAPHDR_VER_LBN 16 +#define PCRF_CZ_ARICAPHDR_VER_WIDTH 4 +#define PCRF_CZ_ARICAPHDR_ID_LBN 0 +#define PCRF_CZ_ARICAPHDR_ID_WIDTH 16 + + +/*------------------------------------------------------------*/ +/* + * PCR_CZ_SRIOV_BAR4_REG(32bit): + * SRIOV Bar4 + */ +#define PCR_CZ_SRIOV_BAR4_REG 0x00000194 +/* sienaa0=pci_f0_config */ + +/* defined as PCRF_CZ_VF_BAR_ADDRESS_LBN 0; access=rw reset=0x0 */ +/* defined as PCRF_CZ_VF_BAR_ADDRESS_WIDTH 32 */ + + +/*------------------------------------------------------------*/ +/* + * PCR_CZ_VC0_C_RQ_CTL_REG(32bit): + * VC0 Completion Receive Queue Control + */ +#define PCR_CZ_VC0_C_RQ_CTL_REG 0x00000750 +/* sienaa0=pci_f0_config */ + + + +/*------------------------------------------------------------*/ +/* + * PCR_AZ_LN_SKEW_REG(32bit): + * Lane skew register + */ +#define PCR_AZ_LN_SKEW_REG 0x00000714 +/* falcona0,falconb0=pci_f0_config,sienaa0=pci_f0_config */ + +#define PCRF_AZ_DIS_LBN 31 +#define PCRF_AZ_DIS_WIDTH 1 +#define PCRF_AB_RST_LBN 30 +#define PCRF_AB_RST_WIDTH 1 +#define PCRF_AZ_AD_LBN 25 +#define PCRF_AZ_AD_WIDTH 1 +#define PCRF_AZ_FCD_LBN 24 +#define PCRF_AZ_FCD_WIDTH 1 +#define PCRF_AZ_LS2_LBN 16 +#define PCRF_AZ_LS2_WIDTH 8 +#define PCRF_AZ_LS1_LBN 8 +#define PCRF_AZ_LS1_WIDTH 8 +#define PCRF_AZ_LS0_LBN 0 +#define PCRF_AZ_LS0_WIDTH 8 + + +/*------------------------------------------------------------*/ +/* + * PCR_CZ_SRIOV_CAP_REG(32bit): + * SRIOV Capabilities + */ +#define PCR_CZ_SRIOV_CAP_REG 0x00000164 +/* sienaa0=pci_f0_config */ + +#define PCRF_CZ_VF_MIGR_INT_MSG_NUM_LBN 21 +#define PCRF_CZ_VF_MIGR_INT_MSG_NUM_WIDTH 11 +#define PCRF_CZ_VF_MIGR_CAP_LBN 0 +#define PCRF_CZ_VF_MIGR_CAP_WIDTH 1 + + +/*------------------------------------------------------------*/ +/* + * PCR_CZ_SRIOV_BAR5_REG(32bit): + * SRIOV Bar5 + */ +#define PCR_CZ_SRIOV_BAR5_REG 0x00000198 +/* sienaa0=pci_f0_config */ + +/* defined as PCRF_CZ_VF_BAR_ADDRESS_LBN 0; access=rw reset=0x0 */ +/* defined as PCRF_CZ_VF_BAR_ADDRESS_WIDTH 32 */ + + +/*------------------------------------------------------------*/ +/* + * PCR_AZ_DEBUG1_REG(32bit): + * Debug register 1 + */ +#define PCR_AZ_DEBUG1_REG 0x0000072c +/* sienaa0=pci_f0_config,falcona0,falconb0=pci_f0_config */ + +#define PCRF_AZ_CDI13_LBN 24 +#define PCRF_AZ_CDI13_WIDTH 8 +#define PCRF_AZ_CDI1_LBN 0 +#define PCRF_AZ_CDI1_WIDTH 32 +#define PCRF_AZ_CDI12_LBN 16 +#define PCRF_AZ_CDI12_WIDTH 8 +#define PCRF_AZ_CDI11_LBN 8 +#define PCRF_AZ_CDI11_WIDTH 8 +#define PCRF_AZ_CDI10_LBN 0 +#define PCRF_AZ_CDI10_WIDTH 8 + + +/*------------------------------------------------------------*/ +/* + * PCR_CZ_PHY_STAT_REG(32bit): + * PHY status register + */ +#define PCR_CZ_PHY_STAT_REG 0x00000810 +/* sienaa0=pci_f0_config */ +/* + * PCR_AB_PHY_STAT_REG(8bit): + * PHY status register + */ +#define PCR_AB_PHY_STAT_REG 0x00000720 +/* falcona0,falconb0=pci_f0_config */ + +#define PCRF_AZ_SSL_LBN 3 +#define PCRF_AZ_SSL_WIDTH 1 +#define PCRF_AZ_SSR_LBN 2 +#define PCRF_AZ_SSR_WIDTH 1 +#define PCRF_AZ_SSCL_LBN 1 +#define PCRF_AZ_SSCL_WIDTH 1 +#define PCRF_AZ_SSCD_LBN 0 +#define PCRF_AZ_SSCD_WIDTH 1 + + +/*------------------------------------------------------------*/ +/* + * PCR_CZ_GEN2_REG(32bit): + * Gen2 Register + */ +#define PCR_CZ_GEN2_REG 0x0000080c +/* sienaa0=pci_f0_config */ + +#define PCRF_CZ_SET_DE_EMPHASIS_LBN 20 +#define PCRF_CZ_SET_DE_EMPHASIS_WIDTH 1 +#define PCRF_CZ_CFG_TX_COMPLIANCE_LBN 19 +#define PCRF_CZ_CFG_TX_COMPLIANCE_WIDTH 1 +#define PCRF_CZ_CFG_TX_SWING_LBN 18 +#define PCRF_CZ_CFG_TX_SWING_WIDTH 1 +#define PCRF_CZ_DIR_SPEED_CHANGE_LBN 17 +#define PCRF_CZ_DIR_SPEED_CHANGE_WIDTH 1 +#define PCRF_CZ_LANE_ENABLE_LBN 8 +#define PCRF_CZ_LANE_ENABLE_WIDTH 9 +#define PCRF_CZ_NUM_FTS_LBN 0 +#define PCRF_CZ_NUM_FTS_WIDTH 8 + + +/*------------------------------------------------------------*/ +/* + * PCR_AZ_BAR2_LO_REG(32bit): + * Primary function base address register 2 low bits + */ +#define PCR_AZ_BAR2_LO_REG 0x00000018 +/* falcona0,falconb0=pci_f0_config,sienaa0=pci_f0_config */ + +#define PCRF_AZ_BAR2_LO_LBN 4 +#define PCRF_AZ_BAR2_LO_WIDTH 28 +#define PCRF_AZ_BAR2_PREF_LBN 3 +#define PCRF_AZ_BAR2_PREF_WIDTH 1 +#define PCRF_AZ_BAR2_TYPE_LBN 1 +#define PCRF_AZ_BAR2_TYPE_WIDTH 2 +#define PCRF_AZ_BAR2_IOM_LBN 0 +#define PCRF_AZ_BAR2_IOM_WIDTH 1 + + +/*------------------------------------------------------------*/ +/* + * PCR_AZ_PM_NXT_PTR_REG(8bit): + * Power management next item pointer + */ +#define PCR_AZ_PM_NXT_PTR_REG 0x00000041 +/* falcona0,falconb0=pci_f0_config,sienaa0=pci_f0_config */ + +#define PCRF_AZ_PM_NXT_PTR_LBN 0 +#define PCRF_AZ_PM_NXT_PTR_WIDTH 8 + + +/*------------------------------------------------------------*/ +/* + * PCR_AB_SLOT_CTL_REG(16bit): + * PCIe slot control register + */ +#define PCR_AB_SLOT_CTL_REG 0x00000078 +/* falcona0,falconb0=pci_f0_config */ + +#define PCRF_AB_SLOT_PWR_CTLR_CTL_LBN 10 +#define PCRF_AB_SLOT_PWR_CTLR_CTL_WIDTH 1 +#define PCRF_AB_SLOT_PWR_IND_CTL_LBN 8 +#define PCRF_AB_SLOT_PWR_IND_CTL_WIDTH 2 +#define PCRF_AB_SLOT_ATT_IND_CTL_LBN 6 +#define PCRF_AB_SLOT_ATT_IND_CTL_WIDTH 2 +#define PCRF_AB_SLOT_HP_INT_EN_LBN 5 +#define PCRF_AB_SLOT_HP_INT_EN_WIDTH 1 +#define PCRF_AB_SLOT_CMD_COMP_INT_EN_LBN 4 +#define PCRF_AB_SLOT_CMD_COMP_INT_EN_WIDTH 1 +#define PCRF_AB_SLOT_PRES_DET_CHG_EN_LBN 3 +#define PCRF_AB_SLOT_PRES_DET_CHG_EN_WIDTH 1 +#define PCRF_AB_SLOT_MRL_SENS_CHG_EN_LBN 2 +#define PCRF_AB_SLOT_MRL_SENS_CHG_EN_WIDTH 1 +#define PCRF_AB_SLOT_PWR_FLTDET_EN_LBN 1 +#define PCRF_AB_SLOT_PWR_FLTDET_EN_WIDTH 1 +#define PCRF_AB_SLOT_ATTN_BUT_EN_LBN 0 +#define PCRF_AB_SLOT_ATTN_BUT_EN_WIDTH 1 + + +/*------------------------------------------------------------*/ +/* + * PCR_AB_VPD_CAP_ID_REG(8bit): + * VPD data register + */ +#define PCR_AB_VPD_CAP_ID_REG 0x000000b0 +/* falcona0,falconb0=pci_f0_config */ + +#define PCRF_AB_VPD_CAP_ID_LBN 0 +#define PCRF_AB_VPD_CAP_ID_WIDTH 8 + + +/*------------------------------------------------------------*/ +/* + * PCR_AB_VPD_NXT_PTR_REG(8bit): + * VPD next item pointer + */ +#define PCR_AB_VPD_NXT_PTR_REG 0x000000b1 +/* falcona0,falconb0=pci_f0_config */ + +#define PCRF_AB_VPD_NXT_PTR_LBN 0 +#define PCRF_AB_VPD_NXT_PTR_WIDTH 8 + + +/*------------------------------------------------------------*/ +/* + * PCR_AZ_AER_UNCORR_ERR_STAT_REG(32bit): + * AER Uncorrectable error status register + */ +#define PCR_AZ_AER_UNCORR_ERR_STAT_REG 0x00000104 +/* falcona0,falconb0=pci_f0_config,sienaa0=pci_f0_config */ + +#define PCRF_AZ_UNSUPT_REQ_ERR_STAT_LBN 20 +#define PCRF_AZ_UNSUPT_REQ_ERR_STAT_WIDTH 1 +#define PCRF_AZ_ECRC_ERR_STAT_LBN 19 +#define PCRF_AZ_ECRC_ERR_STAT_WIDTH 1 +#define PCRF_AZ_MALF_TLP_STAT_LBN 18 +#define PCRF_AZ_MALF_TLP_STAT_WIDTH 1 +#define PCRF_AZ_RX_OVF_STAT_LBN 17 +#define PCRF_AZ_RX_OVF_STAT_WIDTH 1 +#define PCRF_AZ_UNEXP_COMP_STAT_LBN 16 +#define PCRF_AZ_UNEXP_COMP_STAT_WIDTH 1 +#define PCRF_AZ_COMP_ABRT_STAT_LBN 15 +#define PCRF_AZ_COMP_ABRT_STAT_WIDTH 1 +#define PCRF_AZ_COMP_TIMEOUT_STAT_LBN 14 +#define PCRF_AZ_COMP_TIMEOUT_STAT_WIDTH 1 +#define PCRF_AZ_FC_PROTO_ERR_STAT_LBN 13 +#define PCRF_AZ_FC_PROTO_ERR_STAT_WIDTH 1 +#define PCRF_AZ_PSON_TLP_STAT_LBN 12 +#define PCRF_AZ_PSON_TLP_STAT_WIDTH 1 +#define PCRF_AZ_DL_PROTO_ERR_STAT_LBN 4 +#define PCRF_AZ_DL_PROTO_ERR_STAT_WIDTH 1 +#define PCRF_AB_TRAIN_ERR_STAT_LBN 0 +#define PCRF_AB_TRAIN_ERR_STAT_WIDTH 1 + + +/*------------------------------------------------------------*/ +/* + * PCR_AZ_STAT_REG(16bit): + * Status register + */ +#define PCR_AZ_STAT_REG 0x00000006 +/* sienaa0=pci_f0_config,falcona0,falconb0=pci_f0_config */ + +#define PCRF_AZ_DET_PERR_LBN 15 +#define PCRF_AZ_DET_PERR_WIDTH 1 +#define PCRF_AZ_SIG_SERR_LBN 14 +#define PCRF_AZ_SIG_SERR_WIDTH 1 +#define PCRF_AZ_GOT_MABRT_LBN 13 +#define PCRF_AZ_GOT_MABRT_WIDTH 1 +#define PCRF_AZ_GOT_TABRT_LBN 12 +#define PCRF_AZ_GOT_TABRT_WIDTH 1 +#define PCRF_AZ_SIG_TABRT_LBN 11 +#define PCRF_AZ_SIG_TABRT_WIDTH 1 +#define PCRF_AZ_DEVSEL_TIM_LBN 9 +#define PCRF_AZ_DEVSEL_TIM_WIDTH 2 +#define PCRF_AZ_MDAT_PERR_LBN 8 +#define PCRF_AZ_MDAT_PERR_WIDTH 1 +#define PCRF_AZ_FB2B_CAP_LBN 7 +#define PCRF_AZ_FB2B_CAP_WIDTH 1 +#define PCRF_AZ_66MHZ_CAP_LBN 5 +#define PCRF_AZ_66MHZ_CAP_WIDTH 1 +#define PCRF_AZ_CAP_LIST_LBN 4 +#define PCRF_AZ_CAP_LIST_WIDTH 1 +#define PCRF_AZ_INTX_STAT_LBN 3 +#define PCRF_AZ_INTX_STAT_WIDTH 1 + + +/*------------------------------------------------------------*/ +/* + * PCR_CZ_BAR4_HI_REG(32bit): + * Primary function base address register 2 high bits + */ +#define PCR_CZ_BAR4_HI_REG 0x00000024 +/* sienaa0=pci_f0_config */ + +#define PCRF_CZ_BAR4_HI_LBN 0 +#define PCRF_CZ_BAR4_HI_WIDTH 32 + + +/*------------------------------------------------------------*/ +/* + * PCR_CZ_LNK_STAT_REG(16bit): + * PCIe link status register + */ +#define PCR_CZ_LNK_STAT_REG 0x00000082 +/* sienaa0=pci_f0_config */ +/* + * PCR_AB_LNK_STAT_REG(16bit): + * PCIe link status register + */ +#define PCR_AB_LNK_STAT_REG 0x00000072 +/* falcona0,falconb0=pci_f0_config */ + +#define PCRF_AZ_SLOT_CLK_CFG_LBN 12 +#define PCRF_AZ_SLOT_CLK_CFG_WIDTH 1 +#define PCRF_AZ_LNK_TRAIN_LBN 11 +#define PCRF_AZ_LNK_TRAIN_WIDTH 1 +#define PCRF_AB_TRAIN_ERR_LBN 10 +#define PCRF_AB_TRAIN_ERR_WIDTH 1 +#define PCRF_AZ_LNK_WIDTH_LBN 4 +#define PCRF_AZ_LNK_WIDTH_WIDTH 6 +#define PCRF_AZ_LNK_SP_LBN 0 +#define PCRF_AZ_LNK_SP_WIDTH 4 + + +/*------------------------------------------------------------*/ +/* + * PCR_AZ_AER_CORR_ERR_MASK_REG(32bit): + * AER Correctable error status register + */ +#define PCR_AZ_AER_CORR_ERR_MASK_REG 0x00000114 +/* falcona0,falconb0=pci_f0_config,sienaa0=pci_f0_config */ + +#define PCRF_CZ_ADVSY_NON_FATAL_MASK_LBN 13 +#define PCRF_CZ_ADVSY_NON_FATAL_MASK_WIDTH 1 +#define PCRF_AZ_RPLY_TMR_TOUT_MASK_LBN 12 +#define PCRF_AZ_RPLY_TMR_TOUT_MASK_WIDTH 1 +#define PCRF_AZ_RPLAY_NUM_RO_MASK_LBN 8 +#define PCRF_AZ_RPLAY_NUM_RO_MASK_WIDTH 1 +#define PCRF_AZ_BAD_DLLP_MASK_LBN 7 +#define PCRF_AZ_BAD_DLLP_MASK_WIDTH 1 +#define PCRF_AZ_BAD_TLP_MASK_LBN 6 +#define PCRF_AZ_BAD_TLP_MASK_WIDTH 1 +#define PCRF_AZ_RX_ERR_MASK_LBN 0 +#define PCRF_AZ_RX_ERR_MASK_WIDTH 1 + + +/*------------------------------------------------------------*/ +/* + * PCR_AZ_SYM_NUM_REG(16bit): + * Symbol number register + */ +#define PCR_AZ_SYM_NUM_REG 0x00000718 +/* falcona0,falconb0=pci_f0_config,sienaa0=pci_f0_config */ + +#define PCRF_CZ_MAX_FUNCTIONS_LBN 29 +#define PCRF_CZ_MAX_FUNCTIONS_WIDTH 3 +#define PCRF_CZ_FC_WATCHDOG_TMR_LBN 24 +#define PCRF_CZ_FC_WATCHDOG_TMR_WIDTH 5 +#define PCRF_CZ_ACK_NAK_TMR_MOD_LBN 19 +#define PCRF_CZ_ACK_NAK_TMR_MOD_WIDTH 5 +#define PCRF_CZ_REPLAY_TMR_MOD_LBN 14 +#define PCRF_CZ_REPLAY_TMR_MOD_WIDTH 5 +#define PCRF_AB_ES_LBN 12 +#define PCRF_AB_ES_WIDTH 3 +#define PCRF_AB_SYM_NUM_REG_RSVD0_LBN 11 +#define PCRF_AB_SYM_NUM_REG_RSVD0_WIDTH 1 +#define PCRF_CZ_NUM_SKP_SYMS_LBN 8 +#define PCRF_CZ_NUM_SKP_SYMS_WIDTH 3 +#define PCRF_AB_TS2_LBN 4 +#define PCRF_AB_TS2_WIDTH 4 +#define PCRF_AZ_TS1_LBN 0 +#define PCRF_AZ_TS1_WIDTH 4 + + +/*------------------------------------------------------------*/ +/* + * PCR_AZ_Q_STAT_REG(8bit): + * documentation to be written for sum_PC_Q_STAT_REG + */ +#define PCR_AZ_Q_STAT_REG 0x0000073c +/* falcona0,falconb0=pci_f0_config,sienaa0=pci_f0_config */ + +#define PCRF_AZ_RQNE_LBN 2 +#define PCRF_AZ_RQNE_WIDTH 1 +#define PCRF_AZ_XRNE_LBN 1 +#define PCRF_AZ_XRNE_WIDTH 1 +#define PCRF_AZ_RCNR_LBN 0 +#define PCRF_AZ_RCNR_WIDTH 1 + + +/*------------------------------------------------------------*/ +/* + * PCR_CZ_VPD_CAP_CTL_REG(8bit): + * VPD control and capabilities register + */ +#define PCR_CZ_VPD_CAP_CTL_REG 0x000000d0 +/* sienaa0=pci_f0_config */ + +#define PCRF_CZ_VPD_FLAG_LBN 31 +#define PCRF_CZ_VPD_FLAG_WIDTH 1 +#define PCRF_CZ_VPD_ADDR_LBN 16 +#define PCRF_CZ_VPD_ADDR_WIDTH 15 +#define PCRF_CZ_VPD_NXT_PTR_LBN 8 +#define PCRF_CZ_VPD_NXT_PTR_WIDTH 8 +#define PCRF_CZ_VPD_CAP_ID_LBN 0 +#define PCRF_CZ_VPD_CAP_ID_WIDTH 8 + + +/*------------------------------------------------------------*/ +/* + * PCR_AZ_AER_UNCORR_ERR_MASK_REG(32bit): + * AER Uncorrectable error mask register + */ +#define PCR_AZ_AER_UNCORR_ERR_MASK_REG 0x00000108 +/* sienaa0=pci_f0_config,falcona0,falconb0=pci_f0_config */ + +#define PCRF_AZ_UNSUPT_REQ_ERR_MASK_LBN 20 +#define PCRF_AZ_UNSUPT_REQ_ERR_MASK_WIDTH 1 +#define PCRF_AZ_ECRC_ERR_MASK_LBN 19 +#define PCRF_AZ_ECRC_ERR_MASK_WIDTH 1 +#define PCRF_AZ_MALF_TLP_MASK_LBN 18 +#define PCRF_AZ_MALF_TLP_MASK_WIDTH 1 +#define PCRF_AZ_RX_OVF_MASK_LBN 17 +#define PCRF_AZ_RX_OVF_MASK_WIDTH 1 +#define PCRF_AZ_UNEXP_COMP_MASK_LBN 16 +#define PCRF_AZ_UNEXP_COMP_MASK_WIDTH 1 +#define PCRF_AZ_COMP_ABRT_MASK_LBN 15 +#define PCRF_AZ_COMP_ABRT_MASK_WIDTH 1 +#define PCRF_AZ_COMP_TIMEOUT_MASK_LBN 14 +#define PCRF_AZ_COMP_TIMEOUT_MASK_WIDTH 1 +#define PCRF_AZ_FC_PROTO_ERR_MASK_LBN 13 +#define PCRF_AZ_FC_PROTO_ERR_MASK_WIDTH 1 +#define PCRF_AZ_PSON_TLP_MASK_LBN 12 +#define PCRF_AZ_PSON_TLP_MASK_WIDTH 1 +#define PCRF_AZ_DL_PROTO_ERR_MASK_LBN 4 +#define PCRF_AZ_DL_PROTO_ERR_MASK_WIDTH 1 +#define PCRF_AB_TRAIN_ERR_MASK_LBN 0 +#define PCRF_AB_TRAIN_ERR_MASK_WIDTH 1 + + +/*------------------------------------------------------------*/ +/* + * PCR_CZ_ARI_CAP_REG(16bit): + * ARI Capabilities + */ +#define PCR_CZ_ARI_CAP_REG 0x00000154 +/* sienaa0=pci_f0_config */ + +#define PCRF_CZ_ARI_NXT_FN_NUM_LBN 8 +#define PCRF_CZ_ARI_NXT_FN_NUM_WIDTH 8 +#define PCRF_CZ_ARI_ACS_FNGRP_CAP_LBN 1 +#define PCRF_CZ_ARI_ACS_FNGRP_CAP_WIDTH 1 +#define PCRF_CZ_ARI_MFVC_FNGRP_CAP_LBN 0 +#define PCRF_CZ_ARI_MFVC_FNGRP_CAP_WIDTH 1 + + +/*------------------------------------------------------------*/ +/* + * PCR_CZ_SRIOV_STAT_REG(16bit): + * SRIOV Status + */ +#define PCR_CZ_SRIOV_STAT_REG 0x0000016a +/* sienaa0=pci_f0_config */ + +#define PCRF_CZ_VF_MIGR_STAT_LBN 0 +#define PCRF_CZ_VF_MIGR_STAT_WIDTH 1 + + +/*------------------------------------------------------------*/ +/* + * PCR_AZ_OTHER_MSG_REG(32bit): + * Other message register + */ +#define PCR_AZ_OTHER_MSG_REG 0x00000704 +/* sienaa0=pci_f0_config,falcona0,falconb0=pci_f0_config */ + +#define PCRF_AZ_OM_CRPT3_LBN 24 +#define PCRF_AZ_OM_CRPT3_WIDTH 8 +#define PCRF_AZ_OM_CRPT2_LBN 16 +#define PCRF_AZ_OM_CRPT2_WIDTH 8 +#define PCRF_AZ_OM_CRPT1_LBN 8 +#define PCRF_AZ_OM_CRPT1_WIDTH 8 +#define PCRF_AZ_OM_CRPT0_LBN 0 +#define PCRF_AZ_OM_CRPT0_WIDTH 8 + + +/*------------------------------------------------------------*/ +/* + * PCR_AB_SLOT_STAT_REG(16bit): + * PCIe slot status register + */ +#define PCR_AB_SLOT_STAT_REG 0x0000007a +/* falcona0,falconb0=pci_f0_config */ + +#define PCRF_AB_PRES_DET_ST_LBN 6 +#define PCRF_AB_PRES_DET_ST_WIDTH 1 +#define PCRF_AB_MRL_SENS_ST_LBN 5 +#define PCRF_AB_MRL_SENS_ST_WIDTH 1 +#define PCRF_AB_SLOT_PWR_IND_LBN 4 +#define PCRF_AB_SLOT_PWR_IND_WIDTH 1 +#define PCRF_AB_SLOT_ATTN_IND_LBN 3 +#define PCRF_AB_SLOT_ATTN_IND_WIDTH 1 +#define PCRF_AB_SLOT_MRL_SENS_LBN 2 +#define PCRF_AB_SLOT_MRL_SENS_WIDTH 1 +#define PCRF_AB_PWR_FLTDET_LBN 1 +#define PCRF_AB_PWR_FLTDET_WIDTH 1 +#define PCRF_AB_ATTN_BUTDET_LBN 0 +#define PCRF_AB_ATTN_BUTDET_WIDTH 1 + + +/*------------------------------------------------------------*/ +/* + * PCR_CZ_SRIOV_BAR2_REG(32bit): + * SRIOV Bar2 + */ +#define PCR_CZ_SRIOV_BAR2_REG 0x0000018c +/* sienaa0=pci_f0_config */ + +/* defined as PCRF_CZ_VF_BAR_ADDRESS_LBN 0; access=rw reset=0x0 */ +/* defined as PCRF_CZ_VF_BAR_ADDRESS_WIDTH 32 */ + + +/*------------------------------------------------------------*/ +/* + * PCR_AZ_PORT_LNK_CTL_REG(32bit): + * Port link control register + */ +#define PCR_AZ_PORT_LNK_CTL_REG 0x00000710 +/* sienaa0=pci_f0_config,falcona0,falconb0=pci_f0_config */ + +#define PCRF_AZ_LRE_LBN 27 +#define PCRF_AZ_LRE_WIDTH 1 +#define PCRF_AZ_ESYNC_LBN 26 +#define PCRF_AZ_ESYNC_WIDTH 1 +#define PCRF_AZ_CRPT_LBN 25 +#define PCRF_AZ_CRPT_WIDTH 1 +#define PCRF_AZ_XB_LBN 24 +#define PCRF_AZ_XB_WIDTH 1 +#define PCRF_AZ_LC_LBN 16 +#define PCRF_AZ_LC_WIDTH 6 +#define PCRF_AZ_LDR_LBN 8 +#define PCRF_AZ_LDR_WIDTH 4 +#define PCRF_AZ_FLM_LBN 7 +#define PCRF_AZ_FLM_WIDTH 1 +#define PCRF_AZ_LKD_LBN 6 +#define PCRF_AZ_LKD_WIDTH 1 +#define PCRF_AZ_DLE_LBN 5 +#define PCRF_AZ_DLE_WIDTH 1 +#define PCRF_AZ_PORT_LNK_CTL_REG_RSVD0_LBN 4 +#define PCRF_AZ_PORT_LNK_CTL_REG_RSVD0_WIDTH 1 +#define PCRF_AZ_RA_LBN 3 +#define PCRF_AZ_RA_WIDTH 1 +#define PCRF_AZ_LE_LBN 2 +#define PCRF_AZ_LE_WIDTH 1 +#define PCRF_AZ_SD_LBN 1 +#define PCRF_AZ_SD_WIDTH 1 +#define PCRF_AZ_OMR_LBN 0 +#define PCRF_AZ_OMR_WIDTH 1 + + +/*------------------------------------------------------------*/ +/* + * PCR_CZ_VC_XMIT_ARB1_REG(32bit): + * VC Transmit Arbitration Register 1 + */ +#define PCR_CZ_VC_XMIT_ARB1_REG 0x00000740 +/* sienaa0=pci_f0_config */ + + + +/*------------------------------------------------------------*/ +/* + * PCR_CZ_VC0_NP_RQ_CTL_REG(32bit): + * VC0 Non-Posted Receive Queue Control + */ +#define PCR_CZ_VC0_NP_RQ_CTL_REG 0x0000074c +/* sienaa0=pci_f0_config */ + + + +/*------------------------------------------------------------*/ +/* + * PCR_CZ_PHY_CTL_REG(32bit): + * PHY control register + */ +#define PCR_CZ_PHY_CTL_REG 0x00000814 +/* sienaa0=pci_f0_config */ +/* + * PCR_AB_PHY_CTL_REG(32bit): + * PHY control register + */ +#define PCR_AB_PHY_CTL_REG 0x00000724 +/* falcona0,falconb0=pci_f0_config */ + +#define PCRF_AZ_BD_LBN 31 +#define PCRF_AZ_BD_WIDTH 1 +#define PCRF_AZ_CDS_LBN 30 +#define PCRF_AZ_CDS_WIDTH 1 +#define PCRF_AZ_DWRAP_LB_LBN 29 +#define PCRF_AZ_DWRAP_LB_WIDTH 1 +#define PCRF_AZ_EBD_LBN 28 +#define PCRF_AZ_EBD_WIDTH 1 +#define PCRF_AZ_SNR_LBN 27 +#define PCRF_AZ_SNR_WIDTH 1 +#define PCRF_AZ_RX_NOT_DET_LBN 2 +#define PCRF_AZ_RX_NOT_DET_WIDTH 1 +#define PCRF_AZ_FORCE_LOS_VAL_LBN 1 +#define PCRF_AZ_FORCE_LOS_VAL_WIDTH 1 +#define PCRF_AZ_FORCE_LOS_EN_LBN 0 +#define PCRF_AZ_FORCE_LOS_EN_WIDTH 1 + + +/*------------------------------------------------------------*/ +/* + * PCR_AB_VPD_ADDR_REG(16bit): + * VPD address register + */ +#define PCR_AB_VPD_ADDR_REG 0x000000b2 +/* falcona0,falconb0=pci_f0_config */ + +#define PCRF_AB_VPD_FLAG_LBN 15 +#define PCRF_AB_VPD_FLAG_WIDTH 1 +#define PCRF_AB_VPD_ADDR_LBN 0 +#define PCRF_AB_VPD_ADDR_WIDTH 15 + + +/*------------------------------------------------------------*/ +/* + * PCR_AB_SYM_TMR_REG(16bit): + * Symbol timer register + */ +#define PCR_AB_SYM_TMR_REG 0x0000071c +/* falcona0,falconb0=pci_f0_config */ + +#define PCRF_AB_ET_LBN 11 +#define PCRF_AB_ET_WIDTH 4 +#define PCRF_AB_SI1_LBN 8 +#define PCRF_AB_SI1_WIDTH 3 +#define PCRF_AB_SI0_LBN 0 +#define PCRF_AB_SI0_WIDTH 8 + + +#endif /* PCI_PROGMODEL_DEFS_H */ diff -r 0b5ca7cdbdfc -r b8c2a9aacba6 drivers/net/sfc/sfc_resource/ci/driver/efab/hardware/workarounds.h --- a/drivers/net/sfc/sfc_resource/ci/driver/efab/hardware/workarounds.h Fri Jan 08 13:05:49 2010 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,75 +0,0 @@ -/**************************************************************************** - * Driver for Solarflare network controllers - - * resource management for Xen backend, OpenOnload, etc - * (including support for SFE4001 10GBT NIC) - * - * This file provides workaround settings for EtherFabric NICs. - * - * Copyright 2005-2007: Solarflare Communications Inc, - * 9501 Jeronimo Road, Suite 250, - * Irvine, CA 92618, USA - * - * Developed and maintained by Solarflare Communications: - * <linux-xen-drivers@xxxxxxxxxxxxxx> - * <onload-dev@xxxxxxxxxxxxxx> - * - * - * This program is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 as published - * by the Free Software Foundation, incorporated herein by reference. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - **************************************************************************** - */ - -#ifndef __CI_DRIVER_EFAB_WORKAROUNDS_H__ -#define __CI_DRIVER_EFAB_WORKAROUNDS_H__ - -/*---------------------------------------------------------------------------- - * - * Hardware workarounds which have global scope - * - *---------------------------------------------------------------------------*/ - -#if defined(__CI_HARDWARE_CONFIG_FALCON__) - -#if defined(__CI_HARDWARE_CONFIG_FALCON_B0__) -/*------------------------------- B0 ---------------------------------------*/ - -#define BUG2175_WORKAROUND 0 /* TX event batching for dual port operation. - This removes the effect (dup TX events) - of the fix - (TX event per packet + batch events) */ -#define BUG5302_WORKAROUND 0 /* unstick TX DMAQ after out-of-range wr ptr */ -#define BUG5475_WORKAROUND 1 /* 10G SNAP encapsulation broken */ -#define BUG5762_WORKAROUND 0 /* Set all queues to jumbo mode */ -#define BUG5391_WORKAROUND 0 /* Misaligned TX can't span 512-byte boundary */ -#define BUG7916_WORKAROUND 0 /* RX flush gets lost */ - -#else -/*------------------------------- A0/A1 ------------------------------------*/ - -#define BUG2175_WORKAROUND 1 /* TX event batching for dual port operation. - This removes the effect (dup TX events) - of the fix - (TX event per packet + batch events) */ -#define BUG5302_WORKAROUND 1 /* unstick TX DMAQ after out-of-range wr ptr */ -#define BUG5475_WORKAROUND 1 /* 10G SNAP encapsulation broken */ -#define BUG5762_WORKAROUND 1 /* Set all queues to jumbo mode */ -#define BUG5391_WORKAROUND 1 /* Misaligned TX can't span 512-byte boundary */ -#define BUG7916_WORKAROUND 1 /* RX flush gets lost */ - -#endif /* B0/A01 */ - -#else -# error Need hw support. -#endif - -#endif /* __CI_DRIVER_EFAB_WORKAROUNDS_H__ */ diff -r 0b5ca7cdbdfc -r b8c2a9aacba6 drivers/net/sfc/sfc_resource/ci/driver/resource/efx_vi.h --- a/drivers/net/sfc/sfc_resource/ci/driver/resource/efx_vi.h Fri Jan 08 13:05:49 2010 +0000 +++ b/drivers/net/sfc/sfc_resource/ci/driver/resource/efx_vi.h Fri Jan 08 13:06:22 2010 +0000 @@ -5,7 +5,7 @@ * * This file contains public EFX VI API to Solarflare resource manager. * - * Copyright 2005-2007: Solarflare Communications Inc, + * Copyright 2005-2010: Solarflare Communications Inc, * 9501 Jeronimo Road, Suite 250, * Irvine, CA 92618, USA * @@ -49,11 +49,11 @@ struct efx_vi_state; * Allocate an efx_vi, including event queue and pt_endpoint * * \param vih_out Pointer to a handle that is set on success - * \param nic_index Index of NIC to apply this resource to + * \param ifindex Index of the network interface desired * \return Zero on success (and vih_out set), non-zero on failure. */ extern int -efx_vi_alloc(struct efx_vi_state **vih_out, int nic_index); +efx_vi_alloc(struct efx_vi_state **vih_out, int ifindex); /*! * Free a previously allocated efx_vi diff -r 0b5ca7cdbdfc -r b8c2a9aacba6 drivers/net/sfc/sfc_resource/ci/driver/resource/linux_efhw_nic.h --- a/drivers/net/sfc/sfc_resource/ci/driver/resource/linux_efhw_nic.h Fri Jan 08 13:05:49 2010 +0000 +++ b/drivers/net/sfc/sfc_resource/ci/driver/resource/linux_efhw_nic.h Fri Jan 08 13:06:22 2010 +0000 @@ -5,7 +5,7 @@ * * This file contains definition of the public type struct linux_efhw_nic. * - * Copyright 2005-2007: Solarflare Communications Inc, + * Copyright 2005-2010: Solarflare Communications Inc, * 9501 Jeronimo Road, Suite 250, * Irvine, CA 92618, USA * @@ -38,8 +38,14 @@ #ifndef __CI_DRIVER_RESOURCE_LINUX_RESOURCE__ #define __CI_DRIVER_RESOURCE_LINUX_RESOURCE__ +#ifndef __linux__ +# error Silly +#endif +#ifndef __KERNEL__ +# error Silly +#endif -#include <ci/efhw/efhw_types.h> +#include <ci/efrm/efrm_nic.h> #include <linux/interrupt.h> @@ -48,7 +54,7 @@ ************************************************************************/ struct linux_efhw_nic { - struct efhw_nic nic; + struct efrm_nic efrm_nic; struct pci_dev *pci_dev; /*!< pci descriptor */ struct tasklet_struct tasklet; /*!< for interrupt bottom half */ @@ -64,7 +70,7 @@ struct linux_efhw_nic { }; -#define linux_efhw_nic(efhw_nic) \ - container_of(efhw_nic, struct linux_efhw_nic, nic) +#define linux_efhw_nic(_efhw_nic) \ + container_of(_efhw_nic, struct linux_efhw_nic, efrm_nic.efhw_nic) #endif /* __CI_DRIVER_RESOURCE_LINUX_RESOURCE__ */ diff -r 0b5ca7cdbdfc -r b8c2a9aacba6 drivers/net/sfc/sfc_resource/ci/efhw/checks.h --- a/drivers/net/sfc/sfc_resource/ci/efhw/checks.h Fri Jan 08 13:05:49 2010 +0000 +++ b/drivers/net/sfc/sfc_resource/ci/efhw/checks.h Fri Jan 08 13:06:22 2010 +0000 @@ -6,7 +6,7 @@ * This file provides helpers to turn bit shifts into dword shifts and * check that the bit fields haven't overflown the dword etc. * - * Copyright 2005-2007: Solarflare Communications Inc, + * Copyright 2005-2010: Solarflare Communications Inc, * 9501 Jeronimo Road, Suite 250, * Irvine, CA 92618, USA * @@ -49,70 +49,63 @@ #define __FALCON_MASKFIELD32(LBN, WIDTH) \ ((uint32_t)(__FALCON_MASK32(WIDTH) << (LBN))) -/* constructors for fields which span the first and second dwords */ -#define __LW(LBN) (32 - LBN) -#define __LOW(v, LBN, WIDTH) \ - ((uint32_t)(((v) & __FALCON_MASK64(__LW((LBN)))) << (LBN))) -#define __HIGH(v, LBN, WIDTH) \ - ((uint32_t)(((v) >> __LW((LBN))) & \ - __FALCON_MASK64((WIDTH - __LW((LBN)))))) -/* constructors for fields within the second dword */ + +/* constructors for fields within one DWORD */ #define __DW2(LBN) ((LBN) - 32) - -/* constructors for fields which span the second and third dwords */ -#define __LW2(LBN) (64 - LBN) -#define __LOW2(v, LBN, WIDTH) \ - ((uint32_t)(((v) & __FALCON_MASK64(__LW2((LBN)))) << ((LBN) - 32))) -#define __HIGH2(v, LBN, WIDTH) \ - ((uint32_t)(((v) >> __LW2((LBN))) & \ - __FALCON_MASK64((WIDTH - __LW2((LBN)))))) - -/* constructors for fields within the third dword */ #define __DW3(LBN) ((LBN) - 64) - -/* constructors for fields which span the third and fourth dwords */ -#define __LW3(LBN) (96 - LBN) -#define __LOW3(v, LBN, WIDTH) \ - ((uint32_t)(((v) & __FALCON_MASK64(__LW3((LBN)))) << ((LBN) - 64))) -#define __HIGH3(v, LBN, WIDTH) \ - ((ci_unit32)(((v) >> __LW3((LBN))) & \ - __FALCON_MASK64((WIDTH - __LW3((LBN)))))) - -/* constructors for fields within the fourth dword */ #define __DW4(LBN) ((LBN) - 96) + +/* width for lower portion of field spanning DWORDs */ +#define __LW(LBN) (32 - LBN) /* 0 -> 1 */ +#define __LW2(LBN) (64 - LBN) /* 1 -> 2 */ +#define __LW3(LBN) (96 - LBN) /* 2 -> 3 */ + + +/* constructors for lower portion of field spanning DWORDs */ +#define __LOW(v, F) \ + ((uint32_t)(((v) & __FALCON_MASK64(__LW(F##_LBN))) << (F##_LBN))) +#define __LOW2(v, F) \ + ((uint32_t)(((v) & __FALCON_MASK64(__LW2(F##_LBN))) << __DW2(F##_LBN))) +#define __LOW3(v, F) \ + ((uint32_t)(((v) & __FALCON_MASK64(__LW3(F##_LBN))) << __DW3(F##_LBN))) + +/* constructors for upper portion of field spanning DWORDs */ +#define __HIGH(v, F) \ + ((uint32_t)(((v) >> __LW(F##_LBN)) & \ + __FALCON_MASK64((F##_WIDTH - __LW(F##_LBN))))) +#define __HIGH2(v, F) \ + ((uint32_t)(((v) >> __LW2((F##_LBN))) & \ + __FALCON_MASK64((F##_WIDTH - __LW2((F##_LBN)))))) +#define __HIGH3(v, F) \ + ((unit32_t)(((v) >> __LW3((F##_LBN))) & \ + __FALCON_MASK64((F##_WIDTH - __LW3((F##_LBN)))))) + + /* checks that the autogenerated headers are consistent with our model */ -#define __WIDTHCHCK(a, b) EFHW_ASSERT((a) == (b)) #define __RANGECHCK(v, WIDTH) \ EFHW_ASSERT(((uint64_t)(v) & ~(__FALCON_MASK64((WIDTH)))) == 0) -/* fields within the first dword */ -#define __DWCHCK(LBN, WIDTH) \ - EFHW_ASSERT(((LBN) >= 0) && (((LBN)+(WIDTH)) <= 32)) -/* fields which span the first and second dwords */ -#define __LWCHK(LBN, WIDTH) EFHW_ASSERT(WIDTH >= __LW(LBN)) +/* check field width if field within a DWORD */ +#define __DWCHCK(F) \ + EFHW_BUILD_ASSERT(((F##_LBN) >= 0) && (((F##_LBN)+(F##_WIDTH)) <= 32)) +#define __DW2CHCK(F) \ + EFHW_BUILD_ASSERT(((F##_LBN) >= 32) && (((F##_LBN)+(F##_WIDTH)) <= 64)) +#define __DW3CHCK(F) \ + EFHW_BUILD_ASSERT(((F##_LBN) >= 64) && (((F##_LBN)+(F##_WIDTH)) <= 96)) +#define __DW4CHCK(F) \ + EFHW_BUILD_ASSERT(((F##_LBN) >= 96) && (((F##_LBN)+(F##_WIDTH)) <= 128)) -/* fields within the second dword */ -#define __DW2CHCK(LBN, WIDTH) \ - EFHW_ASSERT(((LBN) >= 32) && (((LBN)+(WIDTH)) <= 64)) -/* fields which span the second and third dwords */ -#define __LW2CHK(LBN, WIDTH) EFHW_ASSERT(WIDTH >= __LW2(LBN)) +/* check field width if field spans a DWORD */ +#define __LWCHK(F) EFHW_BUILD_ASSERT(F##_WIDTH >= __LW(F##_LBN)) +#define __LW2CHK(F) EFHW_BUILD_ASSERT(F##_WIDTH >= __LW2(F##_LBN)) +#define __LW3CHK(F) EFHW_BUILD_ASSERT(F##_WIDTH >= __LW3(F##_LBN)) -/* fields within the third dword */ -#define __DW3CHCK(LBN, WIDTH) \ - EFHW_ASSERT(((LBN) >= 64) && (((LBN)+(WIDTH)) <= 96)) - -/* fields which span the third and fourth dwords */ -#define __LW3CHK(LBN, WIDTH) EFHW_ASSERT(WIDTH >= __LW3(LBN)) - -/* fields within the fourth dword */ -#define __DW4CHCK(LBN, WIDTH) \ - EFHW_ASSERT(((LBN) >= 96) && (((LBN)+(WIDTH)) <= 128)) /* fields in the first qword */ -#define __QWCHCK(LBN, WIDTH) \ - EFHW_ASSERT(((LBN) >= 0) && (((LBN)+(WIDTH)) <= 64)) +#define __QWCHCK(F) \ + EFHW_BUILD_ASSERT(((F##_LBN) >= 0) && (((F##_LBN)+(F##_WIDTH)) <= 64)) #endif /* __CI_EFHW_CHECK_H__ */ diff -r 0b5ca7cdbdfc -r b8c2a9aacba6 drivers/net/sfc/sfc_resource/ci/efhw/common.h --- a/drivers/net/sfc/sfc_resource/ci/efhw/common.h Fri Jan 08 13:05:49 2010 +0000 +++ b/drivers/net/sfc/sfc_resource/ci/efhw/common.h Fri Jan 08 13:06:22 2010 +0000 @@ -6,7 +6,7 @@ * This file provides API of the efhw library which may be used both from * the kernel and from the user-space code. * - * Copyright 2005-2007: Solarflare Communications Inc, + * Copyright 2005-2010: Solarflare Communications Inc, * 9501 Jeronimo Road, Suite 250, * Irvine, CA 92618, USA * @@ -43,7 +43,6 @@ enum efhw_arch { EFHW_ARCH_FALCON, - EFHW_ARCH_SIENA, }; typedef uint32_t efhw_buffer_addr_t; @@ -59,18 +58,24 @@ typedef union { } efhw_event_t; /* Flags for TX/RX queues */ -#define EFHW_VI_JUMBO_EN 0x01 /*! scatter RX over multiple desc */ -#define EFHW_VI_ISCSI_RX_HDIG_EN 0x02 /*! iscsi rx header digest */ -#define EFHW_VI_ISCSI_TX_HDIG_EN 0x04 /*! iscsi tx header digest */ -#define EFHW_VI_ISCSI_RX_DDIG_EN 0x08 /*! iscsi rx data digest */ -#define EFHW_VI_ISCSI_TX_DDIG_EN 0x10 /*! iscsi tx data digest */ -#define EFHW_VI_TX_PHYS_ADDR_EN 0x20 /*! TX physical address mode */ -#define EFHW_VI_RX_PHYS_ADDR_EN 0x40 /*! RX physical address mode */ -#define EFHW_VI_RM_WITH_INTERRUPT 0x80 /*! VI with an interrupt */ -#define EFHW_VI_TX_IP_CSUM_DIS 0x100 /*! enable ip checksum generation */ -#define EFHW_VI_TX_TCPUDP_CSUM_DIS 0x200 /*! enable tcp/udp checksum - generation */ -#define EFHW_VI_TX_TCPUDP_ONLY 0x400 /*! drop non-tcp/udp packets */ +#define EFHW_VI_JUMBO_EN 0x01 /*! scatter RX over multiple desc */ +#define EFHW_VI_ISCSI_RX_HDIG_EN 0x02 /*! iscsi rx header digest */ +#define EFHW_VI_ISCSI_TX_HDIG_EN 0x04 /*! iscsi tx header digest */ +#define EFHW_VI_ISCSI_RX_DDIG_EN 0x08 /*! iscsi rx data digest */ +#define EFHW_VI_ISCSI_TX_DDIG_EN 0x10 /*! iscsi tx data digest */ +#define EFHW_VI_TX_PHYS_ADDR_EN 0x20 /*! TX physical address mode */ +#define EFHW_VI_RX_PHYS_ADDR_EN 0x40 /*! RX physical address mode */ +#define EFHW_VI_RM_WITH_INTERRUPT 0x80 /*! VI with an interrupt */ +#define EFHW_VI_TX_IP_CSUM_DIS 0x100 /*! enable ip checksum generation */ +#define EFHW_VI_TX_TCPUDP_CSUM_DIS 0x200 /*! enable tcp/udp checksum + generation */ +#define EFHW_VI_TX_TCPUDP_ONLY 0x400 /*! drop non-tcp/udp packets */ +/* from here on, Siena only: */ +#define EFHW_VI_TX_IP_FILTER_EN 0x800 /*! TX IP filtering */ +#define EFHW_VI_TX_ETH_FILTER_EN 0x1000 /*! TX MAC filtering */ +#define EFHW_VI_TX_Q_MASK_WIDTH_0 0x2000 /*! TX filter q_mask_width bit 0 */ +#define EFHW_VI_TX_Q_MASK_WIDTH_1 0x4000 /*! TX filter q_mask_width bit 1 */ +#define EFHW_VI_RX_HDR_SPLIT 0x8000 /*! RX header split */ /* Types of hardware filter */ /* Each of these values implicitly selects scatter filters on B0 - or in @@ -95,4 +100,22 @@ typedef union { #define EFHW_IP_FILTER_BROADCAST (0x10000) /* driverlink filter support */ +/* Similar for RX MAC filters -- Siena only */ +#define EFHW_MAC_FILTER_TYPE_WILDCARD (0) +#define EFHW_MAC_FILTER_TYPE_FULL (1) +#define EFHW_MAC_FILTER_TYPE_IPOVER_WILDCARD (2) +#define EFHW_MAC_FILTER_TYPE_IPOVER_FULL (3) +/* Same again, but with RSS */ +#define EFHW_MAC_FILTER_TYPE_WILDCARD_RSS (4) +#define EFHW_MAC_FILTER_TYPE_FULL_RSS (5) +#define EFHW_MAC_FILTER_TYPE_IPOVER_WILDCARD_RSS (6) +#define EFHW_MAC_FILTER_TYPE_IPOVER_FULL_RSS (7) + +#define EFHW_MAC_FILTER_TYPE_FULL_MASK (0x1) /* Mask for full / wildcard */ +#define EFHW_MAC_FILTER_TYPE_IPOVER_MASK (0x2) /* Mask for IP override flg */ +#define EFHW_MAC_FILTER_TYPE_RSS_MASK (0x4) /* Mask for RSS enable */ +#define EFHW_MAC_FILTER_TYPE_NOSCAT_MASK (0x8) /* Mask for SCATTER dsbl */ + +#define EFHW_MAC_FILTER_TYPE_MASK (0xffff) /* Mask of types above */ + #endif /* __CI_EFHW_COMMON_H__ */ diff -r 0b5ca7cdbdfc -r b8c2a9aacba6 drivers/net/sfc/sfc_resource/ci/efhw/common_sysdep.h --- a/drivers/net/sfc/sfc_resource/ci/efhw/common_sysdep.h Fri Jan 08 13:05:49 2010 +0000 +++ b/drivers/net/sfc/sfc_resource/ci/efhw/common_sysdep.h Fri Jan 08 13:06:22 2010 +0000 @@ -7,7 +7,7 @@ * userland-to-kernel interfaces. * Only kernels >=2.6.9 are supported. * - * Copyright 2005-2007: Solarflare Communications Inc, + * Copyright 2005-2010: Solarflare Communications Inc, * 9501 Jeronimo Road, Suite 250, * Irvine, CA 92618, USA * @@ -52,20 +52,12 @@ /* Linux kernel also does not provide PRIx32... Sigh. */ #define PRIx32 "x" - + #ifdef __ia64__ # define PRIx64 "lx" #else # define PRIx64 "llx" #endif -#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19) -enum { - false = 0, - true = 1 -}; - -typedef _Bool bool; -#endif /* LINUX_VERSION_CODE < 2.6.19 */ #endif /* __CI_EFHW_COMMON_LINUX_H__ */ diff -r 0b5ca7cdbdfc -r b8c2a9aacba6 drivers/net/sfc/sfc_resource/ci/efhw/debug.h --- a/drivers/net/sfc/sfc_resource/ci/efhw/debug.h Fri Jan 08 13:05:49 2010 +0000 +++ b/drivers/net/sfc/sfc_resource/ci/efhw/debug.h Fri Jan 08 13:06:22 2010 +0000 @@ -6,7 +6,7 @@ * This file provides debug-related API for efhw library using Linux kernel * primitives. * - * Copyright 2005-2007: Solarflare Communications Inc, + * Copyright 2005-2010: Solarflare Communications Inc, * 9501 Jeronimo Road, Suite 250, * Irvine, CA 92618, USA * @@ -41,8 +41,12 @@ #define EFHW_PRINTK_PREFIX "[sfc efhw] " +#ifndef printk_nl +#define printk_nl "\n" +#endif + #define EFHW_PRINTK(level, fmt, ...) \ - printk(level EFHW_PRINTK_PREFIX fmt "\n", __VA_ARGS__) + printk(level EFHW_PRINTK_PREFIX fmt printk_nl, __VA_ARGS__) /* Following macros should be used with non-zero format parameters * due to __VA_ARGS__ limitations. Use "%s" with __FUNCTION__ if you can't @@ -78,7 +82,7 @@ #define __EFHW_BUILD_ASSERT_NAME(_x) __EFHW_BUILD_ASSERT_ILOATHECPP(_x) #define __EFHW_BUILD_ASSERT_ILOATHECPP(_x) __EFHW_BUILD_ASSERT__ ##_x #define EFHW_BUILD_ASSERT(e) \ - typedef char __EFHW_BUILD_ASSERT_NAME(__LINE__)[(e) ? 1 : -1] + { typedef char __EFHW_BUILD_ASSERT_NAME(__LINE__)[(e) ? 1 : -1]; } #endif #endif /* __CI_EFHW_DEBUG_LINUX_H__ */ diff -r 0b5ca7cdbdfc -r b8c2a9aacba6 drivers/net/sfc/sfc_resource/ci/efhw/efhw_config.h --- a/drivers/net/sfc/sfc_resource/ci/efhw/efhw_config.h Fri Jan 08 13:05:49 2010 +0000 +++ b/drivers/net/sfc/sfc_resource/ci/efhw/efhw_config.h Fri Jan 08 13:06:22 2010 +0000 @@ -5,7 +5,7 @@ * * This file provides some limits used in both kernel and userland code. * - * Copyright 2005-2007: Solarflare Communications Inc, + * Copyright 2005-2010: Solarflare Communications Inc, * 9501 Jeronimo Road, Suite 250, * Irvine, CA 92618, USA * diff -r 0b5ca7cdbdfc -r b8c2a9aacba6 drivers/net/sfc/sfc_resource/ci/efhw/efhw_types.h --- a/drivers/net/sfc/sfc_resource/ci/efhw/efhw_types.h Fri Jan 08 13:05:49 2010 +0000 +++ b/drivers/net/sfc/sfc_resource/ci/efhw/efhw_types.h Fri Jan 08 13:06:22 2010 +0000 @@ -5,7 +5,7 @@ * * This file provides struct efhw_nic and some related types. * - * Copyright 2005-2007: Solarflare Communications Inc, + * Copyright 2005-2010: Solarflare Communications Inc, * 9501 Jeronimo Road, Suite 250, * Irvine, CA 92618, USA * @@ -65,7 +65,6 @@ struct eventq_resource_hardware { struct eventq_resource_hardware { /*!iobuffer allocated for eventq - can be larger than eventq */ struct efhw_iopages iobuff; - unsigned iobuff_off; struct efhw_buffer_table_allocation buf_tbl_alloc; int capacity; /*!< capacity of event queue */ }; @@ -86,6 +85,73 @@ struct efhw_keventq { struct efhw_ev_handler *ev_handlers; }; +/*-------------------------------------------------------------------- + * + * filters + * + *--------------------------------------------------------------------*/ + +enum efhw_filter_type { + EFHW_FILTER_TYPE_IP = 0, /* always supported */ + EFHW_FILTER_TYPE_MAC, /* supported by Siena only */ + EFHW_FILTER_TYPE_TX_IP, /* supported by Siena only */ + EFHW_FILTER_TYPE_TX_MAC, /* supported by Siena only */ + EFHW_FILTER_TYPES_NUM +}; + +struct efhw_filter_spec { + enum efhw_filter_type type; + uint dmaq_id; + union { + struct { + uint32_t saddr_le32; + uint32_t daddr_le32; + uint16_t sport_le16; + uint16_t dport_le16; + unsigned tcp : 1; + unsigned full : 1; + unsigned rss : 1; /* not supported on A1 */ + unsigned scatter : 1; /* not supported on A1 */ + } ip; + struct { + uint32_t saddr_le32; + uint32_t daddr_le32; + uint16_t sport_le16; + uint16_t dport_le16; + unsigned tcp : 1; + unsigned full : 1; + } tx_ip; + struct { + uint8_t mac[6]; + uint16_t vlan_tag; + unsigned full : 1; + unsigned ip_override : 1; + unsigned rss : 1; + unsigned scatter : 1; + } mac; + struct { + uint8_t mac[6]; + uint16_t vlan_tag; + unsigned full : 1; + } tx_mac; + } u; +}; + +struct efhw_filter_depth { + unsigned needed; + unsigned max; +}; + +struct efhw_filter_search_limits { + unsigned tcp_full; + unsigned tcp_wild; + unsigned udp_full; + unsigned udp_wild; + unsigned mac_full; + unsigned mac_wild; +}; + + /********************************************************************** * Portable HW interface. *************************************** **********************************************************************/ @@ -131,7 +197,7 @@ struct efhw_func_ops { /*! Set interrupt moderation strategy for the given IRQ unit ** val is in usec */ - void (*set_interrupt_moderation)(struct efhw_nic *nic, + void (*set_interrupt_moderation)(struct efhw_nic *nic, int evq, uint val); /*-------------- Event support ------------ */ @@ -144,20 +210,21 @@ struct efhw_func_ops { void (*event_queue_enable) (struct efhw_nic *nic, uint evq, /* evnt queue index */ uint evq_size, /* units of #entries */ - dma_addr_t q_base_addr, uint buf_base_id); + uint buf_base_id, + int interrupting, + int enable_dos_p); /*! Disable the given event queue (and any associated timer) */ void (*event_queue_disable) (struct efhw_nic *nic, uint evq, int timer_only); /*! request wakeup from the NIC on a given event Q */ - void (*wakeup_request) (struct efhw_nic *nic, dma_addr_t q_base_addr, - int next_i, int evq); + void (*wakeup_request) (struct efhw_nic *nic, int rd_ptr, int evq); /*! Push a SW event on a given eventQ */ void (*sw_event) (struct efhw_nic *nic, int data, int evq); - /*-------------- Filter support ------------ */ + /*-------------- IP Filter API ------------ */ /*! Setup a given filter - The software can request a filter_i, * but some EtherFabric implementations will override with @@ -168,15 +235,12 @@ struct efhw_func_ops { unsigned saddr_be32, unsigned sport_be16, unsigned daddr_be32, unsigned dport_be16); - /*! Attach a given filter to a DMAQ */ - void (*ipfilter_attach) (struct efhw_nic *nic, int filter_idx, - int dmaq_idx); - - /*! Detach a filter from its DMAQ */ - void (*ipfilter_detach) (struct efhw_nic *nic, int filter_idx); - /*! Clear down a given filter */ void (*ipfilter_clear) (struct efhw_nic *nic, int filter_idx); + + /*! Redirect given filter to a different RX DMAQ */ + void (*ipfilter_redirect) (struct efhw_nic *nic, int filter_i, + int rxq_i); /*-------------- DMA support ------------ */ @@ -223,6 +287,15 @@ struct efhw_func_ops { /*! Commit a buffer table update */ void (*buffer_table_commit) (struct efhw_nic *nic); + /*-------------- New filter API ------------ */ + + /*! Set a given filter */ + int (*filter_set) (struct efhw_nic *nic, struct efhw_filter_spec *spec, + int *filter_idx_out); + + /*! Clear a given filter */ + void (*filter_clear) (struct efhw_nic *nic, enum efhw_filter_type type, + int filter_idx); }; @@ -236,6 +309,8 @@ struct efhw_device_type { int arch; /* enum efhw_arch */ char variant; /* 'A', 'B', ... */ int revision; /* 0, 1, ... */ + int in_fpga:1; + int in_cosim:1; }; @@ -287,9 +362,6 @@ struct efhw_nic { /*! EtherFabric Functional Units -- functions */ const struct efhw_func_ops *efhw_func; - /* Value read from FPGA version register. Zero for asic. */ - unsigned fpga_version; - /*! This lock protects a number of misc NIC resources. It should * only be used for things that can be at the bottom of the lock * order. ie. You mustn't attempt to grab any other lock while @@ -314,24 +386,57 @@ struct efhw_nic { struct efhw_keventq non_interrupting_evq; - struct efhw_iopage irq_iobuff; /*!< Falcon SYSERR interrupt */ - - /* The new driverlink infrastructure. */ - struct efx_dl_device *net_driver_dev; - struct efx_dlfilt_cb_s *dlfilter_cb; - /*! Bit masks of the sizes of event queues and dma queues supported * by the nic. */ unsigned evq_sizes; unsigned rxq_sizes; unsigned txq_sizes; - /* Size of filter table (including odd and even banks). */ - unsigned filter_tbl_size; + /* Size of filter tables. */ + unsigned ip_filter_tbl_size; + unsigned mac_filter_tbl_size; + unsigned tx_ip_filter_tbl_size; + unsigned tx_mac_filter_tbl_size; + + /* Number of filters currently used in each filter table */ + unsigned ip_filter_tbl_used; + unsigned mac_filter_tbl_used; + unsigned tx_ip_filter_tbl_used; + unsigned tx_mac_filter_tbl_used; + + /* Dynamically allocated filter state. */ + uint8_t *filter_in_use; + struct efhw_filter_spec *filter_spec_cache; + + /* Currently required and maximum filter table search depths. */ + struct efhw_filter_depth tcp_full_srch; + struct efhw_filter_depth tcp_wild_srch; + struct efhw_filter_depth udp_full_srch; + struct efhw_filter_depth udp_wild_srch; + struct efhw_filter_depth mac_full_srch; + struct efhw_filter_depth mac_wild_srch; + struct efhw_filter_depth tx_tcp_full_srch; + struct efhw_filter_depth tx_tcp_wild_srch; + struct efhw_filter_depth tx_udp_full_srch; + struct efhw_filter_depth tx_udp_wild_srch; + struct efhw_filter_depth tx_mac_full_srch; + struct efhw_filter_depth tx_mac_wild_srch; + + /* Number of event queues, DMA queues and timers. */ + unsigned num_evqs; + unsigned num_dmaqs; + unsigned num_timers; }; #define EFHW_KVA(nic) ((nic)->bar_ioaddr) +static inline int efhw_in_fpga(struct efhw_nic *nic) { + return nic->devtype.in_fpga; +} + +static inline int efhw_in_cosim(struct efhw_nic *nic) { + return nic->devtype.in_cosim; +} #endif /* __CI_EFHW_EFHW_TYPES_H__ */ diff -r 0b5ca7cdbdfc -r b8c2a9aacba6 drivers/net/sfc/sfc_resource/ci/efhw/eventq.h --- a/drivers/net/sfc/sfc_resource/ci/efhw/eventq.h Fri Jan 08 13:05:49 2010 +0000 +++ b/drivers/net/sfc/sfc_resource/ci/efhw/eventq.h Fri Jan 08 13:06:22 2010 +0000 @@ -6,7 +6,7 @@ * This file contains API provided by efhw/eventq.c file. This file is not * designed for use outside of the SFC resource driver. * - * Copyright 2005-2007: Solarflare Communications Inc, + * Copyright 2005-2010: Solarflare Communications Inc, * 9501 Jeronimo Road, Suite 250, * Irvine, CA 92618, USA * @@ -49,7 +49,7 @@ struct efhw_ev_handler { struct efhw_ev_handler { void (*wakeup_fn)(struct efhw_nic *nic, unsigned); void (*timeout_fn)(struct efhw_nic *nic, unsigned); - void (*dmaq_flushed_fn) (struct efhw_nic *, unsigned, int); + void (*dmaq_flushed_fn) (struct efhw_nic *, unsigned, int, int); }; extern int efhw_keventq_ctor(struct efhw_nic *, int instance, diff -r 0b5ca7cdbdfc -r b8c2a9aacba6 drivers/net/sfc/sfc_resource/ci/efhw/eventq_macros.h --- a/drivers/net/sfc/sfc_resource/ci/efhw/eventq_macros.h Fri Jan 08 13:05:49 2010 +0000 +++ b/drivers/net/sfc/sfc_resource/ci/efhw/eventq_macros.h Fri Jan 08 13:06:22 2010 +0000 @@ -6,7 +6,7 @@ * This file provides some event-related macros. This file is designed for * use from kernel and from the userland contexts. * - * Copyright 2005-2007: Solarflare Communications Inc, + * Copyright 2005-2010: Solarflare Communications Inc, * 9501 Jeronimo Road, Suite 250, * Irvine, CA 92618, USA * @@ -60,20 +60,16 @@ #define EFHW_EVENTQ_PREV(s) \ do { ((s)->evq_ptr -= sizeof(efhw_event_t)); } while (0) -/* Be worried about this on byteswapped machines */ -#if defined(__CI_HARDWARE_CONFIG_FALCON__) /* Due to crazy chipsets, we see the event words being written in - ** arbitrary order (bug4539). So test for presence of event must ensure - ** that both halves have changed from the null. + * arbitrary order (bug4539). So test for presence of event must ensure + * that both halves have changed from the null. */ #define EFHW_IS_EVENT(evp) \ (((evp)->opaque.a != (uint32_t)-1) && \ ((evp)->opaque.b != (uint32_t)-1)) #define EFHW_CLEAR_EVENT(evp) ((evp)->u64 = (uint64_t)-1) #define EFHW_CLEAR_EVENT_VALUE 0xff -#else - #error Fixme - unknown hardware configuration -#endif + #define EFHW_EVENT_OVERFLOW(evq, s) \ (EFHW_IS_EVENT(EFHW_EVENT_PTR(evq, s, 1))) diff -r 0b5ca7cdbdfc -r b8c2a9aacba6 drivers/net/sfc/sfc_resource/ci/efhw/falcon.h --- a/drivers/net/sfc/sfc_resource/ci/efhw/falcon.h Fri Jan 08 13:05:49 2010 +0000 +++ b/drivers/net/sfc/sfc_resource/ci/efhw/falcon.h Fri Jan 08 13:06:22 2010 +0000 @@ -6,7 +6,7 @@ * This file contains API provided by efhw/falcon.c file. This file is not * designed for use outside of the SFC resource driver. * - * Copyright 2005-2007: Solarflare Communications Inc, + * Copyright 2005-2010: Solarflare Communications Inc, * 9501 Jeronimo Road, Suite 250, * Irvine, CA 92618, USA * @@ -59,6 +59,13 @@ extern struct efhw_func_ops falcon_char_ /*! specify a pace value for a TX DMA Queue */ extern void falcon_nic_pace(struct efhw_nic *nic, uint dmaq, uint pace); +/*! configure the pace engine */ +extern void falcon_nic_pace_cfg(struct efhw_nic *nic, int fb_base, + int bin_thresh); + +/*! Set wakeup mask. Falcon B0 and later. */ +extern void falcon_nic_wakeup_mask_set(struct efhw_nic *nic, unsigned mask); + /*! confirm buffer table updates - should be used for items where loss of data would be unacceptable. E.g for the buffers that back an event or DMA queue */ @@ -73,16 +80,14 @@ falcon_handle_char_event(struct efhw_nic /*! Acknowledge to HW that processing is complete on a given event queue */ extern void falcon_nic_evq_ack(struct efhw_nic *nic, uint evq, /* evq id */ - uint rptr, /* new read pointer update */ - bool wakeup /* request a wakeup event if - ptr's != */ - ); + uint rptr /* new read pointer update */); extern void falcon_nic_buffer_table_set_n(struct efhw_nic *nic, int buffer_id, dma_addr_t dma_addr, uint bufsz, uint region, int n_pages, int own_id); -extern void falcon_nic_ipfilter_ctor(struct efhw_nic *nic); +extern int falcon_nic_filter_ctor(struct efhw_nic *nic); + #endif /* __CI_EFHW_FALCON_H__ */ diff -r 0b5ca7cdbdfc -r b8c2a9aacba6 drivers/net/sfc/sfc_resource/ci/efhw/falcon_hash.h --- a/drivers/net/sfc/sfc_resource/ci/efhw/falcon_hash.h Fri Jan 08 13:05:49 2010 +0000 +++ b/drivers/net/sfc/sfc_resource/ci/efhw/falcon_hash.h Fri Jan 08 13:06:22 2010 +0000 @@ -7,7 +7,7 @@ * Function declared in this file are not exported from the Linux * sfc_resource driver. * - * Copyright 2005-2007: Solarflare Communications Inc, + * Copyright 2005-2010: Solarflare Communications Inc, * 9501 Jeronimo Road, Suite 250, * Irvine, CA 92618, USA * @@ -40,16 +40,32 @@ #ifndef __CI_EFHW_FALCON_HASH_H__ #define __CI_EFHW_FALCON_HASH_H__ -/* All LE parameters */ +/* For Falcon and Siena: IP filter table key */ extern unsigned int -falcon_hash_get_key(unsigned int src_ip, unsigned int src_port, - unsigned int dest_ip, unsigned int dest_port, - int tcp, int full); +falcon_hash_get_ip_key(unsigned int src_ip, unsigned int src_port, + unsigned int dest_ip, unsigned int dest_port, + int tcp, int full); -unsigned int falcon_hash_function1(unsigned int key, unsigned int nfilters); +/* For Siena only: MAC filter table key */ +extern unsigned int +falcon_hash_get_mac_key(unsigned char *mac, unsigned int vlan, int full); + +/* For Siena only: TX IP filter table key */ +extern unsigned int +falcon_hash_get_tx_ip_key(unsigned int src_ip, unsigned int src_port, + unsigned int dest_ip, unsigned int dest_port, + int tcp, int full, unsigned int masked_q_id); + +/* For Siena only: TX MAC filter table key */ +extern unsigned int +falcon_hash_get_tx_mac_key(unsigned char *mac, unsigned int vlan, int full, + unsigned int masked_q_id); extern unsigned int -falcon_hash_function2(unsigned int key, unsigned int nfitlers); +falcon_hash_function1(unsigned int key, unsigned int nfilters); + +extern unsigned int +falcon_hash_function2(unsigned int key, unsigned int nfilters); extern unsigned int falcon_hash_iterator(unsigned int hash1, unsigned int hash2, diff -r 0b5ca7cdbdfc -r b8c2a9aacba6 drivers/net/sfc/sfc_resource/ci/efhw/hardware_sysdep.h --- a/drivers/net/sfc/sfc_resource/ci/efhw/hardware_sysdep.h Fri Jan 08 13:05:49 2010 +0000 +++ b/drivers/net/sfc/sfc_resource/ci/efhw/hardware_sysdep.h Fri Jan 08 13:06:22 2010 +0000 @@ -7,7 +7,7 @@ * with hardware-related definitions (in ci/driver/efab/hardware*). * Only kernels >=2.6.9 are supported. * - * Copyright 2005-2007: Solarflare Communications Inc, + * Copyright 2005-2010: Solarflare Communications Inc, * 9501 Jeronimo Road, Suite 250, * Irvine, CA 92618, USA * @@ -40,7 +40,12 @@ #ifndef __CI_EFHW_HARDWARE_LINUX_H__ #define __CI_EFHW_HARDWARE_LINUX_H__ +#include <linux/version.h> +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,16) +#include <linux/io.h> +#else #include <asm/io.h> +#endif #ifdef __LITTLE_ENDIAN #define EFHW_IS_LITTLE_ENDIAN diff -r 0b5ca7cdbdfc -r b8c2a9aacba6 drivers/net/sfc/sfc_resource/ci/efhw/iopage.h --- a/drivers/net/sfc/sfc_resource/ci/efhw/iopage.h Fri Jan 08 13:05:49 2010 +0000 +++ b/drivers/net/sfc/sfc_resource/ci/efhw/iopage.h Fri Jan 08 13:06:22 2010 +0000 @@ -7,7 +7,7 @@ * The implementation of these functions is highly OS-dependent. * This file is not designed for use outside of the SFC resource driver. * - * Copyright 2005-2007: Solarflare Communications Inc, + * Copyright 2005-2010: Solarflare Communications Inc, * 9501 Jeronimo Road, Suite 250, * Irvine, CA 92618, USA * diff -r 0b5ca7cdbdfc -r b8c2a9aacba6 drivers/net/sfc/sfc_resource/ci/efhw/iopage_types.h --- a/drivers/net/sfc/sfc_resource/ci/efhw/iopage_types.h Fri Jan 08 13:05:49 2010 +0000 +++ b/drivers/net/sfc/sfc_resource/ci/efhw/iopage_types.h Fri Jan 08 13:06:22 2010 +0000 @@ -6,7 +6,7 @@ * This file provides struct efhw_page and struct efhw_iopage for Linux * kernel. * - * Copyright 2005-2007: Solarflare Communications Inc, + * Copyright 2005-2010: Solarflare Communications Inc, * 9501 Jeronimo Road, Suite 250, * Irvine, CA 92618, USA * diff -r 0b5ca7cdbdfc -r b8c2a9aacba6 drivers/net/sfc/sfc_resource/ci/efhw/nic.h --- a/drivers/net/sfc/sfc_resource/ci/efhw/nic.h Fri Jan 08 13:05:49 2010 +0000 +++ b/drivers/net/sfc/sfc_resource/ci/efhw/nic.h Fri Jan 08 13:06:22 2010 +0000 @@ -6,7 +6,7 @@ * This file contains API provided by efhw/nic.c file. This file is not * designed for use outside of the SFC resource driver. * - * Copyright 2005-2007: Solarflare Communications Inc, + * Copyright 2005-2010: Solarflare Communications Inc, * 9501 Jeronimo Road, Suite 250, * Irvine, CA 92618, USA * diff -r 0b5ca7cdbdfc -r b8c2a9aacba6 drivers/net/sfc/sfc_resource/ci/efhw/public.h --- a/drivers/net/sfc/sfc_resource/ci/efhw/public.h Fri Jan 08 13:05:49 2010 +0000 +++ b/drivers/net/sfc/sfc_resource/ci/efhw/public.h Fri Jan 08 13:06:22 2010 +0000 @@ -6,7 +6,7 @@ * This file provides public API of efhw library exported from the SFC * resource driver. * - * Copyright 2005-2007: Solarflare Communications Inc, + * Copyright 2005-2010: Solarflare Communications Inc, * 9501 Jeronimo Road, Suite 250, * Irvine, CA 92618, USA * @@ -70,11 +70,50 @@ extern void falcon_nic_set_rx_usr_buf_si extern void falcon_nic_set_rx_usr_buf_size(struct efhw_nic *, int rx_usr_buf_size); +/*! Get RX filter search limits from RX_FILTER_CTL_REG. + * use_raw_values = 0 to get actual depth of search, or 1 to get raw values + * from register. + */ +extern void +falcon_nic_get_rx_filter_search_limits(struct efhw_nic *nic, + struct efhw_filter_search_limits *lim, + int use_raw_values); + +/*! Set RX filter search limits in RX_FILTER_CTL_REG. + * use_raw_values = 0 if specifying actual depth of search, or 1 if specifying + * raw values to write to the register. + */ +extern void +falcon_nic_set_rx_filter_search_limits(struct efhw_nic *nic, + struct efhw_filter_search_limits *lim, + int use_raw_values); + +/*! Get TX filter search limits from TX_CFG_REG (on Siena only). + * use_raw_values = 0 to get actual depth of search, or 1 to get raw values + * from register. + */ +extern void +falcon_nic_get_tx_filter_search_limits(struct efhw_nic *nic, + struct efhw_filter_search_limits *lim, + int use_raw_values); + +/*! Set TX filter search limits in TX_CFG_REG (on Siena only). + * use_raw_values = 0 if specifying actual depth of search, or 1 if specifying + * raw values to write to the register. + */ +extern void +falcon_nic_set_tx_filter_search_limits(struct efhw_nic *nic, + struct efhw_filter_search_limits *lim, + int use_raw_values); + + +/*! Legacy RX IP filter search depth control interface */ extern void falcon_nic_rx_filter_ctl_set(struct efhw_nic *nic, uint32_t tcp_full, uint32_t tcp_wild, uint32_t udp_full, uint32_t udp_wild); +/*! Legacy RX IP filter search depth control interface */ extern void falcon_nic_rx_filter_ctl_get(struct efhw_nic *nic, uint32_t *tcp_full, uint32_t *tcp_wild, diff -r 0b5ca7cdbdfc -r b8c2a9aacba6 drivers/net/sfc/sfc_resource/ci/efhw/sysdep.h --- a/drivers/net/sfc/sfc_resource/ci/efhw/sysdep.h Fri Jan 08 13:05:49 2010 +0000 +++ b/drivers/net/sfc/sfc_resource/ci/efhw/sysdep.h Fri Jan 08 13:06:22 2010 +0000 @@ -6,7 +6,7 @@ * This file provides version-independent Linux kernel API for efhw library. * Only kernels >=2.6.9 are supported. * - * Copyright 2005-2007: Solarflare Communications Inc, + * Copyright 2005-2010: Solarflare Communications Inc, * 9501 Jeronimo Road, Suite 250, * Irvine, CA 92618, USA * @@ -43,17 +43,14 @@ #include <linux/module.h> #include <linux/spinlock.h> #include <linux/delay.h> +#include <linux/vmalloc.h> #include <linux/if_ether.h> #include <linux/netdevice.h> /* necessary for etherdevice.h on some kernels */ #include <linux/etherdevice.h> -#if LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,21) -static inline int is_local_ether_addr(const u8 *addr) -{ - return (0x02 & addr[0]); -} -#endif +#include "kernel_compat.h" + typedef unsigned long irq_flags_t; @@ -63,10 +60,8 @@ typedef unsigned long irq_flags_t; #define HAS_NET_NAMESPACE #endif -/* Funny, but linux has round_up for x86 only, defined in - * x86-specific header */ -#ifndef round_up -#define round_up(x, y) (((x) + (y) - 1) & ~((y)-1)) +#ifndef roundup +#define roundup(x, y) (((x) + (y) - 1) & ~((y)-1)) #endif #endif /* __CI_EFHW_SYSDEP_LINUX_H__ */ diff -r 0b5ca7cdbdfc -r b8c2a9aacba6 drivers/net/sfc/sfc_resource/ci/efrm/buddy.h --- a/drivers/net/sfc/sfc_resource/ci/efrm/buddy.h Fri Jan 08 13:05:49 2010 +0000 +++ b/drivers/net/sfc/sfc_resource/ci/efrm/buddy.h Fri Jan 08 13:06:22 2010 +0000 @@ -6,7 +6,7 @@ * This file provides private API for buddy allocator. This API is not * designed for use outside of SFC resource driver. * - * Copyright 2005-2007: Solarflare Communications Inc, + * Copyright 2005-2010: Solarflare Communications Inc, * 9501 Jeronimo Road, Suite 250, * Irvine, CA 92618, USA * @@ -63,7 +63,6 @@ int efrm_buddy_alloc(struct efrm_buddy_a int efrm_buddy_alloc(struct efrm_buddy_allocator *b, unsigned order); void efrm_buddy_free(struct efrm_buddy_allocator *b, unsigned addr, unsigned order); -void efrm_buddy_reserve_at_start(struct efrm_buddy_allocator *b, unsigned n); -void efrm_buddy_reserve_at_end(struct efrm_buddy_allocator *b, unsigned n); + #endif /* __CI_EFRM_BUDDY_H__ */ diff -r 0b5ca7cdbdfc -r b8c2a9aacba6 drivers/net/sfc/sfc_resource/ci/efrm/buffer_table.h --- a/drivers/net/sfc/sfc_resource/ci/efrm/buffer_table.h Fri Jan 08 13:05:49 2010 +0000 +++ b/drivers/net/sfc/sfc_resource/ci/efrm/buffer_table.h Fri Jan 08 13:06:22 2010 +0000 @@ -6,7 +6,7 @@ * This file provides private buffer table API. This API is not designed * for use outside of SFC resource driver. * - * Copyright 2005-2007: Solarflare Communications Inc, + * Copyright 2005-2010: Solarflare Communications Inc, * 9501 Jeronimo Road, Suite 250, * Irvine, CA 92618, USA * @@ -60,10 +60,6 @@ extern int efrm_buffer_table_alloc(unsig extern int efrm_buffer_table_alloc(unsigned order, struct efhw_buffer_table_allocation *a); -/*! current size of the buffer table. - * FIXME This function should be inline, but it is never used from - * the fast path, so let it as-is. */ -unsigned long efrm_buffer_table_size(void); /*-------------------------------------------------------------------- * @@ -75,12 +71,11 @@ extern void efrm_buffer_table_free(struc extern void efrm_buffer_table_free(struct efhw_buffer_table_allocation *a); /*! commit the update of a buffer table entry to every NIC */ -void efrm_buffer_table_commit(void); +extern void efrm_buffer_table_commit(void); -/*! set a given buffer table entry. [pa] should be the physical - address of pinned down memory. This function can only be called from - the char driver */ -void efrm_buffer_table_set(struct efhw_buffer_table_allocation *a, - unsigned i, dma_addr_t dma_addr, int owner); +extern void efrm_buffer_table_set(struct efhw_buffer_table_allocation *, + struct efhw_nic *, + unsigned i, dma_addr_t dma_addr, int owner); + #endif /* __CI_EFRM_BUFFER_TABLE_H__ */ diff -r 0b5ca7cdbdfc -r b8c2a9aacba6 drivers/net/sfc/sfc_resource/ci/efrm/debug.h --- a/drivers/net/sfc/sfc_resource/ci/efrm/debug.h Fri Jan 08 13:05:49 2010 +0000 +++ b/drivers/net/sfc/sfc_resource/ci/efrm/debug.h Fri Jan 08 13:06:22 2010 +0000 @@ -6,7 +6,7 @@ * This file provides debug-related API for efrm library using Linux kernel * primitives. * - * Copyright 2005-2007: Solarflare Communications Inc, + * Copyright 2005-2010: Solarflare Communications Inc, * 9501 Jeronimo Road, Suite 250, * Irvine, CA 92618, USA * @@ -50,7 +50,7 @@ #define EFRM_ERR(fmt, ...) EFRM_PRINTK(KERN_ERR, fmt, __VA_ARGS__) #define EFRM_WARN(fmt, ...) EFRM_PRINTK(KERN_WARNING, fmt, __VA_ARGS__) #define EFRM_NOTICE(fmt, ...) EFRM_PRINTK(KERN_NOTICE, fmt, __VA_ARGS__) -#if 0 && !defined(NDEBUG) +#if !defined(NDEBUG) #define EFRM_TRACE(fmt, ...) EFRM_PRINTK(KERN_DEBUG, fmt, __VA_ARGS__) #else #define EFRM_TRACE(fmt, ...) diff -r 0b5ca7cdbdfc -r b8c2a9aacba6 drivers/net/sfc/sfc_resource/ci/efrm/driver_private.h --- a/drivers/net/sfc/sfc_resource/ci/efrm/driver_private.h Fri Jan 08 13:05:49 2010 +0000 +++ b/drivers/net/sfc/sfc_resource/ci/efrm/driver_private.h Fri Jan 08 13:06:22 2010 +0000 @@ -6,7 +6,7 @@ * This file provides private API of efrm library to be used from the SFC * resource driver. * - * Copyright 2005-2007: Solarflare Communications Inc, + * Copyright 2005-2010: Solarflare Communications Inc, * 9501 Jeronimo Road, Suite 250, * Irvine, CA 92618, USA * @@ -57,10 +57,13 @@ extern struct efrm_resource_manager *efr * *--------------------------------------------------------------------*/ -extern int efrm_driver_ctor(void); -extern int efrm_driver_dtor(void); -extern int efrm_driver_register_nic(struct efhw_nic *, int nic_index); -extern int efrm_driver_unregister_nic(struct efhw_nic *); +struct efrm_nic; + +extern void efrm_driver_ctor(void); +extern void efrm_driver_dtor(void); +extern int efrm_driver_register_nic(struct efrm_nic *, int nic_index, + int ifindex); +extern int efrm_driver_unregister_nic(struct efrm_nic *); /*-------------------------------------------------------------------- * diff -r 0b5ca7cdbdfc -r b8c2a9aacba6 drivers/net/sfc/sfc_resource/ci/efrm/efrm_client.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/drivers/net/sfc/sfc_resource/ci/efrm/efrm_client.h Fri Jan 08 13:06:22 2010 +0000 @@ -0,0 +1,65 @@ +/**************************************************************************** + * Driver for Solarflare network controllers - + * resource management for Xen backend, OpenOnload, etc + * (including support for SFE4001 10GBT NIC) + * + * This file provides helpers to turn bit shifts into dword shifts and + * check that the bit fields haven't overflown the dword etc. + * + * Copyright 2005-2010: Solarflare Communications Inc, + * 9501 Jeronimo Road, Suite 250, + * Irvine, CA 92618, USA + * + * Developed and maintained by Solarflare Communications: + * <linux-xen-drivers@xxxxxxxxxxxxxx> + * <onload-dev@xxxxxxxxxxxxxx> + * + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 as published + * by the Free Software Foundation, incorporated herein by reference. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + **************************************************************************** + */ + +#ifndef __EFRM_CLIENT_H__ +#define __EFRM_CLIENT_H__ + + +struct efrm_client; + + +struct efrm_client_callbacks { + /* Called before device is reset. Callee may block. */ + void (*pre_reset)(struct efrm_client *, void *user_data); + void (*stop)(struct efrm_client *, void *user_data); + void (*restart)(struct efrm_client *, void *user_data); +}; + + +#define EFRM_IFINDEX_DEFAULT -1 + + +/* NB. Callbacks may be invoked even before this returns. */ +extern int efrm_client_get(int ifindex, struct efrm_client_callbacks *, + void *user_data, struct efrm_client **client_out); +extern void efrm_client_put(struct efrm_client *); + +extern struct efhw_nic *efrm_client_get_nic(struct efrm_client *); +extern int efrm_client_get_ifindex(struct efrm_client *); + +#if 0 +/* For each resource type... */ +extern void efrm_x_resource_resume(struct x_resource *); +#endif + + +#endif /* __EFRM_CLIENT_H__ */ diff -r 0b5ca7cdbdfc -r b8c2a9aacba6 drivers/net/sfc/sfc_resource/ci/efrm/efrm_nic.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/drivers/net/sfc/sfc_resource/ci/efrm/efrm_nic.h Fri Jan 08 13:06:22 2010 +0000 @@ -0,0 +1,58 @@ +/**************************************************************************** + * Driver for Solarflare network controllers - + * resource management for Xen backend, OpenOnload, etc + * (including support for SFE4001 10GBT NIC) + * + * This file provides helpers to turn bit shifts into dword shifts and + * check that the bit fields haven't overflown the dword etc. + * + * Copyright 2005-2010: Solarflare Communications Inc, + * 9501 Jeronimo Road, Suite 250, + * Irvine, CA 92618, USA + * + * Developed and maintained by Solarflare Communications: + * <linux-xen-drivers@xxxxxxxxxxxxxx> + * <onload-dev@xxxxxxxxxxxxxx> + * + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 as published + * by the Free Software Foundation, incorporated herein by reference. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + **************************************************************************** + */ + +#ifndef __EFRM_NIC_H__ +#define __EFRM_NIC_H__ + +#include <ci/efhw/efhw_types.h> + + +struct efrm_nic_per_vi { + unsigned long state; + struct vi_resource *vi; +}; + + +struct efrm_nic { + struct efhw_nic efhw_nic; + struct list_head link; + struct list_head clients; + struct efrm_nic_per_vi *vis; +}; + + +#define efrm_nic(_efhw_nic) \ + container_of(_efhw_nic, struct efrm_nic, efhw_nic) + + + +#endif /* __EFRM_NIC_H__ */ diff -r 0b5ca7cdbdfc -r b8c2a9aacba6 drivers/net/sfc/sfc_resource/ci/efrm/filter.h --- a/drivers/net/sfc/sfc_resource/ci/efrm/filter.h Fri Jan 08 13:05:49 2010 +0000 +++ b/drivers/net/sfc/sfc_resource/ci/efrm/filter.h Fri Jan 08 13:06:22 2010 +0000 @@ -5,7 +5,7 @@ * * This file provides public API for filter resource. * - * Copyright 2005-2007: Solarflare Communications Inc, + * Copyright 2005-2010: Solarflare Communications Inc, * 9501 Jeronimo Road, Suite 250, * Irvine, CA 92618, USA * @@ -39,19 +39,14 @@ #define __CI_EFRM_FILTER_H__ #include <ci/efrm/resource.h> -#include <ci/efrm/vi_resource.h> -#include <ci/efrm/nic_set.h> #include <ci/efhw/common.h> +#include <ci/efrm/debug.h> -/*! Comment? */ -struct filter_resource { - struct efrm_resource rs; - struct vi_resource *pt; - int filter_idx; - efrm_nic_set_t nic_set; -}; -#define filter_resource(rs1) container_of((rs1), struct filter_resource, rs) +struct filter_resource; +struct vi_resource; +struct efrm_client; + /*! * Allocate filter resource. @@ -66,82 +61,36 @@ efrm_filter_resource_alloc(struct vi_res efrm_filter_resource_alloc(struct vi_resource *vi_parent, struct filter_resource **frs_out); -/* efrm_filter_resource_free should be called only if - * __efrm_resource_ref_count_zero() returned true. - * The easiest way is to call efrm_filter_resource_release() */ -void efrm_filter_resource_free(struct filter_resource *frs); -static inline void efrm_filter_resource_release(struct filter_resource *frs) -{ - unsigned id; +extern void +efrm_filter_resource_release(struct filter_resource *); - EFRM_RESOURCE_ASSERT_VALID(&frs->rs, 0); - id = EFRM_RESOURCE_INSTANCE(frs->rs.rs_handle); - - if (atomic_dec_and_test(&frs->rs.rs_ref_count)) { - if (__efrm_resource_ref_count_zero(EFRM_RESOURCE_FILTER, id)) { - EFRM_ASSERT(EFRM_RESOURCE_INSTANCE(frs->rs.rs_handle) == - id); - efrm_filter_resource_free(frs); - } - } -} - -/*-------------------------------------------------------------------- - *! - * Called to set/change the PT endpoint of a filter - * - * Example of use is TCP helper when it finds a wildcard IP filter - * needs to change which application it delivers traffic to - * - * \param frs filter resource - * \param pt_handle handle of new PT endpoint - * - * \return standard error codes - * - *--------------------------------------------------------------------*/ -extern int -efrm_filter_resource_set_ptresource(struct filter_resource *frs, - struct vi_resource *virs); extern int efrm_filter_resource_clear(struct filter_resource *frs); -extern int __efrm_filter_resource_set(struct filter_resource *frs, int type, - unsigned saddr_be32, uint16_t sport_be16, - unsigned daddr_be32, uint16_t dport_be16); +extern int efrm_filter_resource_ip_set(struct filter_resource *frs, + int protocol, + unsigned saddr_be32, int sport_be16, + unsigned daddr_be32, int dport_be16); -static inline int -efrm_filter_resource_tcp_set(struct filter_resource *frs, - unsigned saddr, uint16_t sport, - unsigned daddr, uint16_t dport) -{ - int type; +extern int efrm_filter_resource_set(struct filter_resource *frs, int type, + unsigned saddr_be32, int sport_be16, + unsigned daddr_be32, int dport_be16); - EFRM_ASSERT((saddr && sport) || (!saddr && !sport)); +extern void efrm_filter_resource_redirect(struct filter_resource *frs, + struct vi_resource *vi); - type = - saddr ? EFHW_IP_FILTER_TYPE_TCP_FULL : - EFHW_IP_FILTER_TYPE_TCP_WILDCARD; +extern int +efrm_filter_resource_instance(struct filter_resource *); - return __efrm_filter_resource_set(frs, type, - saddr, sport, daddr, dport); -} +extern struct efrm_resource * +efrm_filter_resource_to_resource(struct filter_resource *); -static inline int -efrm_filter_resource_udp_set(struct filter_resource *frs, - unsigned saddr, uint16_t sport, - unsigned daddr, uint16_t dport) -{ - int type; +extern struct filter_resource * +efrm_filter_resource_from_resource(struct efrm_resource *); - EFRM_ASSERT((saddr && sport) || (!saddr && !sport)); +extern void +efrm_filter_resource_free(struct filter_resource *); - type = - saddr ? EFHW_IP_FILTER_TYPE_UDP_FULL : - EFHW_IP_FILTER_TYPE_UDP_WILDCARD; - - return __efrm_filter_resource_set(frs, - type, saddr, sport, daddr, dport); -} #endif /* __CI_EFRM_FILTER_H__ */ /*! \cidoxg_end */ diff -r 0b5ca7cdbdfc -r b8c2a9aacba6 drivers/net/sfc/sfc_resource/ci/efrm/iobufset.h --- a/drivers/net/sfc/sfc_resource/ci/efrm/iobufset.h Fri Jan 08 13:05:49 2010 +0000 +++ b/drivers/net/sfc/sfc_resource/ci/efrm/iobufset.h Fri Jan 08 13:06:22 2010 +0000 @@ -5,7 +5,7 @@ * * This file provides public API for iobufset resource. * - * Copyright 2005-2007: Solarflare Communications Inc, + * Copyright 2005-2010: Solarflare Communications Inc, * 9501 Jeronimo Road, Suite 250, * Irvine, CA 92618, USA * @@ -50,11 +50,11 @@ struct iobufset_resource { struct iobufset_resource { struct efrm_resource rs; struct vi_resource *evq; + struct iobufset_resource *linked; struct efhw_buffer_table_allocation buf_tbl_alloc; - unsigned int faultonaccess; unsigned int n_bufs; unsigned int pages_per_contiguous_chunk; - unsigned order; + unsigned chunk_order; struct efhw_iopage bufs[1]; /*!< up to n_bufs can follow this, so this must be the last member */ }; @@ -65,37 +65,24 @@ struct iobufset_resource { /*! * Allocate iobufset resource. * - * \param vi_evq VI resource to use. The function takes - * reference to the VI resource on success. - * \param iobrs_out pointer to return the new filter resource + * \param vi VI that "owns" these buffers. Grabs a reference + * on success. + * \param linked Uses memory from an existing iobufset. Grabs a + * reference on success. + * \param iobrs_out pointer to return the new filter resource * * \return status code; if non-zero, frs_out is unchanged */ extern int efrm_iobufset_resource_alloc(int32_t n_pages, int32_t pages_per_contiguous_chunk, - struct vi_resource *vi_evq, + struct vi_resource *vi, + struct iobufset_resource *linked, bool phys_addr_mode, - uint32_t faultonaccess, struct iobufset_resource **iobrs_out); -/* efrm_iobufset_resource_free should be called only if - * __efrm_resource_ref_count_zero() returned true. - * The easiest way is to call efrm_iobufset_resource_release() */ -void efrm_iobufset_resource_free(struct iobufset_resource *rs); -static inline void -efrm_iobufset_resource_release(struct iobufset_resource *iobrs) -{ - unsigned id; - - EFRM_RESOURCE_ASSERT_VALID(&iobrs->rs, 0); - id = EFRM_RESOURCE_INSTANCE(iobrs->rs.rs_handle); - - if (atomic_dec_and_test(&iobrs->rs.rs_ref_count)) { - if (__efrm_resource_ref_count_zero(EFRM_RESOURCE_IOBUFSET, id)) - efrm_iobufset_resource_free(iobrs); - } -} +extern void efrm_iobufset_resource_free(struct iobufset_resource *); +extern void efrm_iobufset_resource_release(struct iobufset_resource *); static inline char * efrm_iobufset_ptr(struct iobufset_resource *rs, unsigned offs) diff -r 0b5ca7cdbdfc -r b8c2a9aacba6 drivers/net/sfc/sfc_resource/ci/efrm/nic_set.h --- a/drivers/net/sfc/sfc_resource/ci/efrm/nic_set.h Fri Jan 08 13:05:49 2010 +0000 +++ b/drivers/net/sfc/sfc_resource/ci/efrm/nic_set.h Fri Jan 08 13:06:22 2010 +0000 @@ -5,7 +5,7 @@ * * This file provides public API for NIC sets. * - * Copyright 2005-2007: Solarflare Communications Inc, + * Copyright 2005-2010: Solarflare Communications Inc, * 9501 Jeronimo Road, Suite 250, * Irvine, CA 92618, USA * diff -r 0b5ca7cdbdfc -r b8c2a9aacba6 drivers/net/sfc/sfc_resource/ci/efrm/nic_table.h --- a/drivers/net/sfc/sfc_resource/ci/efrm/nic_table.h Fri Jan 08 13:05:49 2010 +0000 +++ b/drivers/net/sfc/sfc_resource/ci/efrm/nic_table.h Fri Jan 08 13:06:22 2010 +0000 @@ -5,7 +5,7 @@ * * This file provides public API for NIC table. * - * Copyright 2005-2007: Solarflare Communications Inc, + * Copyright 2005-2010: Solarflare Communications Inc, * 9501 Jeronimo Road, Suite 250, * Irvine, CA 92618, USA * @@ -76,7 +76,7 @@ static inline void efrm_nic_table_rele(v static inline int efrm_nic_table_held(void) { - return (atomic_read(&efrm_nic_tablep->ref_count) != 0); + return atomic_read(&efrm_nic_tablep->ref_count) != 0; } /* Run code block _x multiple times with variable nic set to each diff -r 0b5ca7cdbdfc -r b8c2a9aacba6 drivers/net/sfc/sfc_resource/ci/efrm/private.h --- a/drivers/net/sfc/sfc_resource/ci/efrm/private.h Fri Jan 08 13:05:49 2010 +0000 +++ b/drivers/net/sfc/sfc_resource/ci/efrm/private.h Fri Jan 08 13:06:22 2010 +0000 @@ -6,7 +6,7 @@ * This file provides private API of efrm library -- resource handling. * This API is not designed for use outside of SFC resource driver. * - * Copyright 2005-2007: Solarflare Communications Inc, + * Copyright 2005-2010: Solarflare Communications Inc, * 9501 Jeronimo Road, Suite 250, * Irvine, CA 92618, USA * @@ -62,22 +62,6 @@ efrm_create_vi_resource_manager(struct e efrm_create_vi_resource_manager(struct efrm_resource_manager **out, const struct vi_resource_dimensions *); -/*-------------------------------------------------------------------- - * - * efrm_resource_handle_t handling - * - *--------------------------------------------------------------------*/ - -/*! Initialize an area of memory to be used as a resource */ -static inline void efrm_resource_init(struct efrm_resource *rs, - int type, int instance) -{ - EFRM_ASSERT(instance >= 0); - EFRM_ASSERT(type >= 0 && type < EFRM_RESOURCE_NUM); - atomic_set(&rs->rs_ref_count, 1); - rs->rs_handle.handle = (type << 28u) | - (((unsigned)jiffies & 0xfff) << 16) | instance; -} /*-------------------------------------------------------------------- * @@ -93,16 +77,7 @@ efrm_kfifo_id_ctor(struct kfifo **ids_ou unsigned int i; struct kfifo *ids; unsigned char *buffer; -#ifndef TCP_CHIMNEY_SUPPORT unsigned int size = roundup_pow_of_two((limit - base) * sizeof(int)); -#else - /* ### TODO - Linux kfifos really are a power of two, sysdep_ci2linux - does ci_fifo2's, which only actually hold 2^n - 1. - We need to double buffer size, not add one, because - ci_fifo2 can only be a power of two. */ - unsigned int size = roundup_pow_of_two((limit - base) * 2 * sizeof(int)); -#endif - EFRM_ASSERT(base <= limit); buffer = vmalloc(size); ids = kfifo_init(buffer, size, GFP_KERNEL, lock); @@ -135,15 +110,9 @@ extern int extern int efrm_resource_manager_ctor(struct efrm_resource_manager *rm, void (*dtor)(struct efrm_resource_manager *), - const char *name, unsigned type, - int initial_table_size); + const char *name, unsigned type); extern void efrm_resource_manager_dtor(struct efrm_resource_manager *rm); -/*! Insert a resource into table in the resource manager. - * - * Caller should free the resource if this function returns non-zero. - */ -extern int efrm_resource_manager_insert(struct efrm_resource *rs); #endif /* __CI_EFRM_PRIVATE_H__ */ diff -r 0b5ca7cdbdfc -r b8c2a9aacba6 drivers/net/sfc/sfc_resource/ci/efrm/resource.h --- a/drivers/net/sfc/sfc_resource/ci/efrm/resource.h Fri Jan 08 13:05:49 2010 +0000 +++ b/drivers/net/sfc/sfc_resource/ci/efrm/resource.h Fri Jan 08 13:06:22 2010 +0000 @@ -5,7 +5,7 @@ * * This file provides public interface of efrm library -- resource handling. * - * Copyright 2005-2007: Solarflare Communications Inc, + * Copyright 2005-2010: Solarflare Communications Inc, * 9501 Jeronimo Road, Suite 250, * Irvine, CA 92618, USA * @@ -62,9 +62,11 @@ /*! Representation of an allocated resource */ struct efrm_resource { - atomic_t rs_ref_count; /*!< users count; see - * __efrm_resource_ref_count_zero() */ + int rs_ref_count; efrm_resource_handle_t rs_handle; + struct efrm_client *rs_client; + struct list_head rs_client_link; + struct list_head rs_manager_link; }; /*-------------------------------------------------------------------- @@ -82,9 +84,7 @@ struct efrm_resource_manager { #endif int rm_resources; int rm_resources_hiwat; - /*! table of allocated resources */ - struct efrm_resource **rm_table; - unsigned rm_table_size; + struct list_head rm_resources_list; /** * Destructor for the resource manager. Other resource managers * might be already dead, although the system guarantees that @@ -111,12 +111,9 @@ extern void efrm_resource_manager_assert efrm_resource_manager_assert_valid((rm), __FILE__, __LINE__) #endif -/*! Check the reference count on the resource provided and delete its - * handle it in its owning resource manager if the - * reference count has fallen to zero. - * - * Returns TRUE if the caller should really free the resource. - */ -extern bool __efrm_resource_ref_count_zero(unsigned type, unsigned instance); + +extern void efrm_resource_ref(struct efrm_resource *rs); +extern int __efrm_resource_release(struct efrm_resource *); + #endif /* __CI_EFRM_RESOURCE_H__ */ diff -r 0b5ca7cdbdfc -r b8c2a9aacba6 drivers/net/sfc/sfc_resource/ci/efrm/resource_id.h --- a/drivers/net/sfc/sfc_resource/ci/efrm/resource_id.h Fri Jan 08 13:05:49 2010 +0000 +++ b/drivers/net/sfc/sfc_resource/ci/efrm/resource_id.h Fri Jan 08 13:06:22 2010 +0000 @@ -6,7 +6,7 @@ * This file provides public type and definitions resource handle, and the * definitions of resource types. * - * Copyright 2005-2007: Solarflare Communications Inc, + * Copyright 2005-2010: Solarflare Communications Inc, * 9501 Jeronimo Road, Suite 250, * Irvine, CA 92618, USA * @@ -73,12 +73,12 @@ typedef struct { static inline unsigned EFRM_RESOURCE_PRI_ARG(efrm_resource_handle_t h) { - return (h.handle); + return h.handle; } static inline unsigned EFRM_RESOURCE_INSTANCE(efrm_resource_handle_t h) { - return (h.handle & 0x0000ffff); + return h.handle & 0x0000ffff; } static inline unsigned EFRM_RESOURCE_TYPE(efrm_resource_handle_t h) diff -r 0b5ca7cdbdfc -r b8c2a9aacba6 drivers/net/sfc/sfc_resource/ci/efrm/sysdep.h --- a/drivers/net/sfc/sfc_resource/ci/efrm/sysdep.h Fri Jan 08 13:05:49 2010 +0000 +++ b/drivers/net/sfc/sfc_resource/ci/efrm/sysdep.h Fri Jan 08 13:06:22 2010 +0000 @@ -5,7 +5,7 @@ * * This file provides Linux-like system-independent API for efrm library. * - * Copyright 2005-2007: Solarflare Communications Inc, + * Copyright 2005-2010: Solarflare Communications Inc, * 9501 Jeronimo Road, Suite 250, * Irvine, CA 92618, USA * @@ -41,8 +41,6 @@ /* Spinlocks are defined in efhw/sysdep.h */ #include <ci/efhw/sysdep.h> - -# include <ci/efrm/sysdep_linux.h> - +#include <ci/efrm/sysdep_linux.h> #endif /* __CI_EFRM_SYSDEP_H__ */ diff -r 0b5ca7cdbdfc -r b8c2a9aacba6 drivers/net/sfc/sfc_resource/ci/efrm/sysdep_linux.h --- a/drivers/net/sfc/sfc_resource/ci/efrm/sysdep_linux.h Fri Jan 08 13:05:49 2010 +0000 +++ b/drivers/net/sfc/sfc_resource/ci/efrm/sysdep_linux.h Fri Jan 08 13:06:22 2010 +0000 @@ -6,7 +6,7 @@ * This file provides version-independent Linux kernel API for efrm library. * Only kernels >=2.6.9 are supported. * - * Copyright 2005-2007: Solarflare Communications Inc, + * Copyright 2005-2010: Solarflare Communications Inc, * 9501 Jeronimo Road, Suite 250, * Irvine, CA 92618, USA * @@ -75,7 +75,7 @@ #if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,9)) static inline unsigned long __attribute_const__ roundup_pow_of_two(unsigned long x) { - return (1UL << fls(x - 1)); + return 1UL << fls(x - 1); } #endif @@ -145,13 +145,7 @@ typedef void (*efrm_old_work_func_t) (vo * ********************************************************************/ -#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,10) - -#if !defined(RHEL_RELEASE_CODE) || (RHEL_RELEASE_CODE < 1029) -typedef unsigned gfp_t; -#endif - -#define HAS_NO_KFIFO +#ifdef EFX_NEED_KFIFO struct kfifo { unsigned char *buffer; /* the buffer holding the data */ @@ -255,7 +249,7 @@ static inline unsigned int kfifo_len(str } #else -#include <linux/kfifo.h> +# include <linux/kfifo.h> #endif static inline void kfifo_vfree(struct kfifo *fifo) diff -r 0b5ca7cdbdfc -r b8c2a9aacba6 drivers/net/sfc/sfc_resource/ci/efrm/vi_resource.h --- a/drivers/net/sfc/sfc_resource/ci/efrm/vi_resource.h Fri Jan 08 13:05:49 2010 +0000 +++ b/drivers/net/sfc/sfc_resource/ci/efrm/vi_resource.h Fri Jan 08 13:06:22 2010 +0000 @@ -5,7 +5,7 @@ * * This file contains public API for VI resource. * - * Copyright 2005-2007: Solarflare Communications Inc, + * Copyright 2005-2010: Solarflare Communications Inc, * 9501 Jeronimo Road, Suite 250, * Irvine, CA 92618, USA * @@ -64,40 +64,20 @@ efrm_resource *efrm_from_vi_resource(str EFRM_RESOURCE_PRI_ARG(efrm_from_vi_resource(virs)->rs_handle) extern int -efrm_vi_resource_alloc(struct vi_resource *evq_virs, - uint16_t vi_flags, int32_t evq_capacity, - int32_t txq_capacity, int32_t rxq_capacity, - uint8_t tx_q_tag, uint8_t rx_q_tag, +efrm_vi_resource_alloc(struct efrm_client *client, + struct vi_resource *evq_virs, + unsigned vi_flags, int evq_capacity, + int txq_capacity, int rxq_capacity, + int tx_q_tag, int rx_q_tag, struct vi_resource **virs_in_out, uint32_t *out_io_mmap_bytes, uint32_t *out_mem_mmap_bytes, uint32_t *out_txq_capacity, uint32_t *out_rxq_capacity); -static inline void efrm_vi_resource_ref(struct vi_resource *virs) -{ - atomic_inc(&efrm_from_vi_resource(virs)->rs_ref_count); -} +extern void efrm_vi_resource_free(struct vi_resource *); +extern void efrm_vi_resource_release(struct vi_resource *); -/* efrm_vi_resource_free should be called only if - * __efrm_resource_ref_count_zero() returned true. - * The easiest way is to call efrm_vi_resource_release() */ -extern void efrm_vi_resource_free(struct vi_resource *virs); -static inline void efrm_vi_resource_release(struct vi_resource *virs) -{ - unsigned id; - struct efrm_resource *rs = efrm_from_vi_resource(virs); - - id = EFRM_RESOURCE_INSTANCE(rs->rs_handle); - - if (atomic_dec_and_test(&rs->rs_ref_count)) { - if (__efrm_resource_ref_count_zero(EFRM_RESOURCE_VI, id)) { - EFRM_ASSERT(EFRM_RESOURCE_INSTANCE(rs->rs_handle) == - id); - efrm_vi_resource_free(virs); - } - } -} /*-------------------------------------------------------------------- * @@ -106,7 +86,7 @@ static inline void efrm_vi_resource_rele *--------------------------------------------------------------------*/ /*! Reset an event queue and clear any associated timers */ -extern void efrm_eventq_reset(struct vi_resource *virs, int nic_index); +extern void efrm_eventq_reset(struct vi_resource *virs); /*! Register a kernel-level handler for the event queue. This function is * called whenever a timer expires, or whenever the event queue is woken @@ -138,8 +118,7 @@ extern void efrm_eventq_kill_callback(st /*! Ask the NIC to generate a wakeup when an event is next delivered. */ extern void efrm_eventq_request_wakeup(struct vi_resource *rs, - unsigned current_ptr, - unsigned nic_index); + unsigned current_ptr); /*! Register a kernel-level handler for flush completions. * \TODO Currently, it is unsafe to install a callback more than once. @@ -153,27 +132,24 @@ efrm_vi_register_flush_callback(struct v void (*handler)(void *), void *arg); -int efrm_vi_resource_flush_retry(struct vi_resource *virs); - /*! Comment? */ -extern int efrm_pt_flush(struct vi_resource *); +extern void efrm_pt_flush(struct vi_resource *); /*! Comment? */ extern int efrm_pt_pace(struct vi_resource *, unsigned int val); uint32_t efrm_vi_rm_txq_bytes(struct vi_resource *virs - /*,struct efhw_nic *nic */ ); + /*,struct efhw_nic *nic */); uint32_t efrm_vi_rm_rxq_bytes(struct vi_resource *virs - /*,struct efhw_nic *nic */ ); + /*,struct efhw_nic *nic */); uint32_t efrm_vi_rm_evq_bytes(struct vi_resource *virs - /*,struct efhw_nic *nic */ ); + /*,struct efhw_nic *nic */); /* Fill [out_vi_data] with information required to allow a VI to be init'd. * [out_vi_data] must ref at least VI_MAPPINGS_SIZE bytes. */ -extern void efrm_vi_resource_mappings(struct vi_resource*, int nic_i, - void* out_vi_data); +extern void efrm_vi_resource_mappings(struct vi_resource *, void *out_vi_data); #endif /* __CI_EFRM_VI_RESOURCE_H__ */ diff -r 0b5ca7cdbdfc -r b8c2a9aacba6 drivers/net/sfc/sfc_resource/ci/efrm/vi_resource_manager.h --- a/drivers/net/sfc/sfc_resource/ci/efrm/vi_resource_manager.h Fri Jan 08 13:05:49 2010 +0000 +++ b/drivers/net/sfc/sfc_resource/ci/efrm/vi_resource_manager.h Fri Jan 08 13:06:22 2010 +0000 @@ -7,7 +7,7 @@ * may be used outside of the SFC resource driver, but such use is not * recommended. * - * Copyright 2005-2007: Solarflare Communications Inc, + * Copyright 2005-2010: Solarflare Communications Inc, * 9501 Jeronimo Road, Suite 250, * Irvine, CA 92618, USA * @@ -36,7 +36,7 @@ #include <ci/efhw/common.h> #include <ci/efrm/vi_resource.h> -#include <ci/efrm/nic_set.h> + #define EFRM_VI_RM_DMA_QUEUE_COUNT 2 #define EFRM_VI_RM_DMA_QUEUE_TX 0 @@ -57,17 +57,12 @@ enum { #define VI_RESOURCE_EVQ_STATE(X) \ (((int32_t)1) << (VI_RESOURCE_EVQ_STATE_##X)) -/** Information about an event queue. */ -struct vi_resource_evq_info { - /** Flag bits indicating the state of wakeups. */ - unsigned long evq_state; - /** A pointer to the resource instance for this queue. This member - * is only valid if evq_state is non-zero or the resource is known - * to have a non-zero reference count. */ - struct vi_resource *evq_virs; -}; +#ifdef __ci_ul_driver__ +#define EFRM_VI_USE_WORKQUEUE 0 +#else #define EFRM_VI_USE_WORKQUEUE 1 +#endif /*! Global information for the VI resource manager. */ struct vi_resource_manager { @@ -81,7 +76,6 @@ struct vi_resource_manager { int with_interrupt_limit; bool iscsi_dmaq_instance_is_free; - struct vi_resource_evq_info *evq_infos; /* We keep VI resources which need flushing on these lists. The VI * is put on the outstanding list when the flush request is issued @@ -108,12 +102,6 @@ struct vi_resource_manager { #endif }; -struct vi_resource_nic_info { - struct eventq_resource_hardware evq_pages; -#if defined(__CI_HARDWARE_CONFIG_FALCON__) - struct efhw_iopages dmaq_pages[EFRM_VI_RM_DMA_QUEUE_COUNT]; -#endif -}; struct vi_resource { /* Some macros make the assumption that the struct efrm_resource is @@ -121,16 +109,13 @@ struct vi_resource { struct efrm_resource rs; atomic_t evq_refs; /*!< Number of users of the event queue. */ - efrm_nic_set_t nic_set; - uint32_t bar_mmap_bytes; uint32_t mem_mmap_bytes; - int32_t evq_capacity; - int32_t dmaq_capacity[EFRM_VI_RM_DMA_QUEUE_COUNT]; - + int evq_capacity; + int dmaq_capacity[EFRM_VI_RM_DMA_QUEUE_COUNT]; uint8_t dmaq_tag[EFRM_VI_RM_DMA_QUEUE_COUNT]; - uint16_t flags; + unsigned flags; /* we keep PT endpoints that have been destroyed on a list * until we have seen their TX and RX DMAQs flush complete @@ -138,9 +123,9 @@ struct vi_resource { */ struct list_head rx_flush_link; struct list_head tx_flush_link; - efrm_nic_set_t rx_flush_nic_set; - efrm_nic_set_t rx_flush_outstanding_nic_set; - efrm_nic_set_t tx_flush_nic_set; + int rx_flushing; + int rx_flush_outstanding; + int tx_flushing; uint64_t flush_time; int flush_count; @@ -153,26 +138,14 @@ struct vi_resource { struct vi_resource *evq_virs; /*!< EVQ for DMA queues */ -#if defined(__CI_HARDWARE_CONFIG_FALCON__) - struct efhw_buffer_table_allocation - dmaq_buf_tbl_alloc[EFRM_VI_RM_DMA_QUEUE_COUNT]; -#endif - - struct vi_resource_nic_info nic_info[EFHW_MAX_NR_DEVS]; + struct eventq_resource_hardware evq_hw; + struct efhw_iopages dmaq_pages[EFRM_VI_RM_DMA_QUEUE_COUNT]; + struct efhw_buffer_table_allocation + dmaq_buf_tbl_alloc[EFRM_VI_RM_DMA_QUEUE_COUNT]; }; #undef vi_resource #define vi_resource(rs1) container_of((rs1), struct vi_resource, rs) -static inline dma_addr_t -efrm_eventq_dma_addr(struct vi_resource *virs, uint32_t nic_index) -{ - struct eventq_resource_hardware *hw; - EFRM_ASSERT(efrm_nic_set_read(&virs->nic_set, nic_index)); - - hw = &(virs->nic_info[nic_index].evq_pages); - - return efhw_iopages_dma_addr(&(hw->iobuff)) + hw->iobuff_off; -} #endif /* __CI_DRIVER_EFAB_VI_RESOURCE_MANAGER_H__ */ diff -r 0b5ca7cdbdfc -r b8c2a9aacba6 drivers/net/sfc/sfc_resource/ci/efrm/vi_resource_private.h --- a/drivers/net/sfc/sfc_resource/ci/efrm/vi_resource_private.h Fri Jan 08 13:05:49 2010 +0000 +++ b/drivers/net/sfc/sfc_resource/ci/efrm/vi_resource_private.h Fri Jan 08 13:06:22 2010 +0000 @@ -6,7 +6,7 @@ * This file contains private API for VI resource. The API is not designed * to be used outside of the SFC resource driver. * - * Copyright 2005-2007: Solarflare Communications Inc, + * Copyright 2005-2010: Solarflare Communications Inc, * 9501 Jeronimo Road, Suite 250, * Irvine, CA 92618, USA * @@ -49,27 +49,6 @@ void efrm_vi_rm_init_dmaq(struct vi_reso void efrm_vi_rm_init_dmaq(struct vi_resource *virs, int queue_index, struct efhw_nic *nic); -static inline int -efrm_eventq_bytes(struct vi_resource *virs, uint32_t nic_index) -{ - EFRM_ASSERT(efrm_nic_set_read(&virs->nic_set, nic_index)); - - return efrm_vi_rm_evq_bytes(virs); -} - -static inline efhw_event_t * -efrm_eventq_base(struct vi_resource *virs, uint32_t nic_index) -{ - struct eventq_resource_hardware *hw; - - EFRM_ASSERT(efrm_nic_set_read(&virs->nic_set, nic_index)); - - hw = &(virs->nic_info[nic_index].evq_pages); - - return (efhw_event_t *) (efhw_iopages_ptr(&(hw->iobuff)) + - hw->iobuff_off); -} - /*! Wakeup handler */ extern void efrm_handle_wakeup_event(struct efhw_nic *nic, unsigned id); @@ -78,7 +57,7 @@ extern void efrm_handle_timeout_event(st /*! DMA flush handler */ extern void efrm_handle_dmaq_flushed(struct efhw_nic *nic, unsigned id, - int rx_flush); + int rx_flush, int failed); /*! SRAM update handler */ extern void efrm_handle_sram_event(struct efhw_nic *nic); diff -r 0b5ca7cdbdfc -r b8c2a9aacba6 drivers/net/sfc/sfc_resource/driver_object.c --- a/drivers/net/sfc/sfc_resource/driver_object.c Fri Jan 08 13:05:49 2010 +0000 +++ b/drivers/net/sfc/sfc_resource/driver_object.c Fri Jan 08 13:06:22 2010 +0000 @@ -5,7 +5,7 @@ * * This file contains support for the global driver variables. * - * Copyright 2005-2007: Solarflare Communications Inc, + * Copyright 2005-2010: Solarflare Communications Inc, * 9501 Jeronimo Road, Suite 250, * Irvine, CA 92618, USA * @@ -38,6 +38,9 @@ #include <ci/efrm/nic_table.h> #include <ci/efrm/resource.h> #include <ci/efrm/debug.h> +#include <ci/efrm/efrm_client.h> +#include <ci/efrm/efrm_nic.h> +#include "efrm_internal.h" /* We use #define rather than static inline here so that the Windows * "prefast" compiler can see its own locking primitive when these @@ -66,6 +69,7 @@ static struct efrm_nic_table efrm_nic_ta static struct efrm_nic_table efrm_nic_table; struct efrm_nic_table *efrm_nic_tablep; EXPORT_SYMBOL(efrm_nic_tablep); + /* Internal table with resource managers. * We'd like to not export it, but we are still using efrm_rm_table @@ -74,67 +78,89 @@ struct efrm_resource_manager *efrm_rm_ta struct efrm_resource_manager *efrm_rm_table[EFRM_RESOURCE_NUM]; EXPORT_SYMBOL(efrm_rm_table); -int efrm_driver_ctor(void) -{ - efrm_nic_tablep = &efrm_nic_table; + +/* List of registered nics. */ +static LIST_HEAD(efrm_nics); + + +void efrm_driver_ctor(void) +{ + efrm_nic_tablep = &efrm_nic_table; spin_lock_init(&efrm_nic_tablep->lock); - EFRM_TRACE("%s: driver created", __FUNCTION__); - return 0; -} - -int efrm_driver_dtor(void) +} + +void efrm_driver_dtor(void) { EFRM_ASSERT(!efrm_nic_table_held()); spin_lock_destroy(&efrm_nic_tablep->lock); memset(&efrm_nic_table, 0, sizeof(efrm_nic_table)); memset(&efrm_rm_table, 0, sizeof(efrm_rm_table)); - EFRM_TRACE("%s: driver deleted", __FUNCTION__); - return 0; -} - -int efrm_driver_register_nic(struct efhw_nic *nic, int nic_index) -{ - int rc = 0; +} + +int efrm_driver_register_nic(struct efrm_nic *rnic, int nic_index, + int ifindex) +{ + struct efhw_nic *nic = &rnic->efhw_nic; + struct efrm_nic_per_vi *vis; + int max_vis, rc = 0; irq_flags_t lock_flags; EFRM_ASSERT(nic_index >= 0); + EFRM_ASSERT(ifindex >= 0); + + max_vis = 4096; /* TODO: Get runtime value. */ + vis = vmalloc(max_vis * sizeof(rnic->vis[0])); + if (vis == NULL) { + EFRM_ERR("%s: Out of memory", __FUNCTION__); + return -ENOMEM; + } + memset(vis, 0, max_vis * sizeof(vis[0])); efrm_driver_lock(lock_flags); if (efrm_nic_table_held()) { - EFRM_WARN("%s: driver object is in use", __FUNCTION__); + EFRM_ERR("%s: driver object is in use", __FUNCTION__); rc = -EBUSY; goto done; } if (efrm_nic_tablep->nic_count == EFHW_MAX_NR_DEVS) { - EFRM_WARN("%s: filled up NIC table size %d", __FUNCTION__, - EFHW_MAX_NR_DEVS); + EFRM_ERR("%s: filled up NIC table size %d", __FUNCTION__, + EFHW_MAX_NR_DEVS); rc = -E2BIG; goto done; } + + rnic->vis = vis; EFRM_ASSERT(efrm_nic_tablep->nic[nic_index] == NULL); efrm_nic_tablep->nic[nic_index] = nic; nic->index = nic_index; + nic->ifindex = ifindex; if (efrm_nic_tablep->a_nic == NULL) efrm_nic_tablep->a_nic = nic; efrm_nic_tablep->nic_count++; + + INIT_LIST_HEAD(&rnic->clients); + list_add(&rnic->link, &efrm_nics); + efrm_driver_unlock(lock_flags); - return rc; + return 0; done: efrm_driver_unlock(lock_flags); + vfree(vis); return rc; } -int efrm_driver_unregister_nic(struct efhw_nic *nic) -{ +int efrm_driver_unregister_nic(struct efrm_nic *rnic) +{ + struct efhw_nic *nic = &rnic->efhw_nic; int rc = 0; int nic_index = nic->index; irq_flags_t lock_flags; @@ -144,12 +170,20 @@ int efrm_driver_unregister_nic(struct ef efrm_driver_lock(lock_flags); if (efrm_nic_table_held()) { - EFRM_WARN("%s: driver object is in use", __FUNCTION__); + EFRM_ERR("%s: driver object is in use", __FUNCTION__); rc = -EBUSY; goto done; } + if (!list_empty(&rnic->clients)) { + EFRM_ERR("%s: nic has active clients", __FUNCTION__); + rc = -EBUSY; + goto done; + } EFRM_ASSERT(efrm_nic_tablep->nic[nic_index] == nic); + EFRM_ASSERT(list_empty(&rnic->clients)); + + list_del(&rnic->link); nic->index = -1; efrm_nic_tablep->nic[nic_index] = NULL; @@ -174,3 +208,135 @@ done: efrm_driver_unlock(lock_flags); return rc; } + + +#ifdef __KERNEL__ + + +int efrm_nic_pre_reset(struct efhw_nic *nic) +{ + struct efrm_nic *rnic = efrm_nic(nic); + struct efrm_client *client; + struct efrm_resource *rs; + struct list_head *client_link; + struct list_head *rs_link; + irq_flags_t lock_flags; + + spin_lock_irqsave(&efrm_nic_tablep->lock, lock_flags); + list_for_each(client_link, &rnic->clients) { + client = container_of(client_link, struct efrm_client, link); + EFRM_ERR("%s: client %p", __FUNCTION__, client); + if (client->callbacks->pre_reset) + client->callbacks->pre_reset(client, client->user_data); + list_for_each(rs_link, &client->resources) { + rs = container_of(rs_link, struct efrm_resource, + rs_client_link); + EFRM_ERR("%s: resource %p", __FUNCTION__, rs); + /* TODO: mark rs defunct */ + } + } + spin_unlock_irqrestore(&efrm_nic_tablep->lock, lock_flags); + + return 0; +} + + +int efrm_nic_stop(struct efhw_nic *nic) +{ + /* TODO */ + return 0; +} + + +int efrm_nic_resume(struct efhw_nic *nic) +{ + /* TODO */ + return 0; +} + + +static void efrm_client_nullcb(struct efrm_client *client, void *user_data) +{ +} + +static struct efrm_client_callbacks efrm_null_callbacks = { + efrm_client_nullcb, + efrm_client_nullcb, + efrm_client_nullcb +}; + + +int efrm_client_get(int ifindex, struct efrm_client_callbacks *callbacks, + void *user_data, struct efrm_client **client_out) +{ + struct efrm_nic *n, *rnic = NULL; + irq_flags_t lock_flags; + struct list_head *link; + struct efrm_client *client; + + if (callbacks == NULL) + callbacks = &efrm_null_callbacks; + + client = kmalloc(sizeof(*client), GFP_KERNEL); + if (client == NULL) + return -ENOMEM; + + spin_lock_irqsave(&efrm_nic_tablep->lock, lock_flags); + list_for_each(link, &efrm_nics) { + n = container_of(link, struct efrm_nic, link); + if (n->efhw_nic.ifindex == ifindex || ifindex < 0) { + rnic = n; + break; + } + } + if (rnic) { + client->user_data = user_data; + client->callbacks = callbacks; + client->nic = &rnic->efhw_nic; + client->ref_count = 1; + INIT_LIST_HEAD(&client->resources); + list_add(&client->link, &rnic->clients); + } + spin_unlock_irqrestore(&efrm_nic_tablep->lock, lock_flags); + + if (rnic == NULL) _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |