summaryrefslogtreecommitdiffstats
path: root/sys/dev/mxge/mxge_mcp.h
diff options
context:
space:
mode:
authorgallatin <gallatin@FreeBSD.org>2006-09-15 19:24:45 +0000
committergallatin <gallatin@FreeBSD.org>2006-09-15 19:24:45 +0000
commit746d287f8319c1545cc76637469085659c129126 (patch)
tree414c8f64d65fb435ccdb4e37a5719c2d80f8d427 /sys/dev/mxge/mxge_mcp.h
parent01d5e88001527ce99ba37e4405f396ec4ef2ea1e (diff)
downloadFreeBSD-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.h47
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;
OpenPOWER on IntegriCloud