# 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
|