diff options
author | gallatin <gallatin@FreeBSD.org> | 2006-09-15 19:24:45 +0000 |
---|---|---|
committer | gallatin <gallatin@FreeBSD.org> | 2006-09-15 19:24:45 +0000 |
commit | 746d287f8319c1545cc76637469085659c129126 (patch) | |
tree | 414c8f64d65fb435ccdb4e37a5719c2d80f8d427 /sys/dev/mxge/mxge_mcp.h | |
parent | 01d5e88001527ce99ba37e4405f396ec4ef2ea1e (diff) | |
download | FreeBSD-src-746d287f8319c1545cc76637469085659c129126.zip FreeBSD-src-746d287f8319c1545cc76637469085659c129126.tar.gz |
- Updated to the latest myri10ge firmware
- Added support for multicast filtering, now that the firmware
supports it. Note that this is not yet tested, as multicast
seems to panic -current (even w/o mxge loaded)
- Added workaround to cope with different irq data struct size on
pre-multicast firmware which can found running on nics.
- Added Intel E5000 PCIe chipsets to list providing aligned completions.
- Replaced various magic constants with #defines, now that they are
defined in the firmware headers.
Diffstat (limited to 'sys/dev/mxge/mxge_mcp.h')
-rw-r--r-- | sys/dev/mxge/mxge_mcp.h | 47 |
1 files changed, 42 insertions, 5 deletions
diff --git a/sys/dev/mxge/mxge_mcp.h b/sys/dev/mxge/mxge_mcp.h index fda2944..79d7249 100644 --- a/sys/dev/mxge/mxge_mcp.h +++ b/sys/dev/mxge/mxge_mcp.h @@ -147,7 +147,19 @@ typedef struct mcp_kreq_ether_recv mcp_kreq_ether_recv_t; /* Commands */ -#define MXGEFW_CMD_OFFSET 0xf80000 +#define MXGEFW_BOOT_HANDOFF 0xfc0000 +#define MXGEFW_BOOT_DUMMY_RDMA 0xfc01c0 + +#define MXGEFW_ETH_CMD 0xf80000 +#define MXGEFW_ETH_SEND_4 0x200000 +#define MXGEFW_ETH_SEND_1 0x240000 +#define MXGEFW_ETH_SEND_2 0x280000 +#define MXGEFW_ETH_SEND_3 0x2c0000 +#define MXGEFW_ETH_RECV_SMALL 0x300000 +#define MXGEFW_ETH_RECV_BIG 0x340000 + +#define MXGEFW_ETH_SEND(n) (0x200000 + (((n) & 0x03) * 0x40000)) +#define MXGEFW_ETH_SEND_OFFSET(n) (MXGEFW_ETH_SEND(n) - MXGEFW_ETH_SEND_4) enum myri10ge_mcp_cmd_type { MXGEFW_CMD_NONE = 0, @@ -212,7 +224,7 @@ enum myri10ge_mcp_cmd_type { MXGEFW_CMD_SET_MTU, MXGEFW_CMD_GET_INTR_COAL_DELAY_OFFSET, /* in microseconds */ MXGEFW_CMD_SET_STATS_INTERVAL, /* in microseconds */ - MXGEFW_CMD_SET_STATS_DMA, + MXGEFW_CMD_SET_STATS_DMA_OBSOLETE, /* replaced by SET_STATS_DMA_V2 */ MXGEFW_ENABLE_PROMISC, MXGEFW_DISABLE_PROMISC, @@ -226,7 +238,26 @@ enum myri10ge_mcp_cmd_type { data2 = RDMA length (MSH), WDMA length (LSH) command return data = repetitions (MSH), 0.5-ms ticks (LSH) */ - MXGEFW_DMA_TEST + MXGEFW_DMA_TEST, + + MXGEFW_ENABLE_ALLMULTI, + MXGEFW_DISABLE_ALLMULTI, + + /* returns MXGEFW_CMD_ERROR_MULTICAST + if there is no room in the cache + data0,MSH(data1) = multicast group address */ + MXGEFW_JOIN_MULTICAST_GROUP, + /* returns MXGEFW_CMD_ERROR_MULTICAST + if the address is not in the cache, + or is equal to FF-FF-FF-FF-FF-FF + data0,MSH(data1) = multicast group address */ + MXGEFW_LEAVE_MULTICAST_GROUP, + MXGEFW_LEAVE_ALL_MULTICAST_GROUPS, + + MXGEFW_CMD_SET_STATS_DMA_V2, + /* data0, data1 = bus addr, + data2 = sizeof(struct mcp_irq_data) from driver point of view, allows + adding new stuff to mcp_irq_data without changing the ABI */ }; typedef enum myri10ge_mcp_cmd_type myri10ge_mcp_cmd_type_t; @@ -240,13 +271,19 @@ enum myri10ge_mcp_cmd_status { MXGEFW_CMD_ERROR_CLOSED, MXGEFW_CMD_ERROR_HASH_ERROR, MXGEFW_CMD_ERROR_BAD_PORT, - MXGEFW_CMD_ERROR_RESOURCES + MXGEFW_CMD_ERROR_RESOURCES, + MXGEFW_CMD_ERROR_MULTICAST }; typedef enum myri10ge_mcp_cmd_status myri10ge_mcp_cmd_status_t; -/* 40 Bytes */ +#define MXGEFW_OLD_IRQ_DATA_LEN 40 + struct mcp_irq_data { + /* add new counters at the beginning */ + uint32_t future_use[5]; + uint32_t dropped_multicast_filtered; +/* 40 Bytes */ uint32_t send_done_count; uint32_t link_up; |