summaryrefslogtreecommitdiffstats
path: root/sys/dev/cxgbe/firmware/t4fw_interface.h
diff options
context:
space:
mode:
authornp <np@FreeBSD.org>2014-06-25 02:14:55 +0000
committernp <np@FreeBSD.org>2014-06-25 02:14:55 +0000
commit810c9620cc2ab59308ebd8040f6e2b62833773ad (patch)
tree584464a3df55cd47896c817c2818969801163d65 /sys/dev/cxgbe/firmware/t4fw_interface.h
parent3fdf3636165e1b4d07bc2845d268b2a198b2c976 (diff)
downloadFreeBSD-src-810c9620cc2ab59308ebd8040f6e2b62833773ad.zip
FreeBSD-src-810c9620cc2ab59308ebd8040f6e2b62833773ad.tar.gz
MFC r267757:
cxgbe(4): Update the bundled T4 and T5 firmwares to versions 1.11.27.0 Obtained from: Chelsio
Diffstat (limited to 'sys/dev/cxgbe/firmware/t4fw_interface.h')
-rw-r--r--sys/dev/cxgbe/firmware/t4fw_interface.h219
1 files changed, 182 insertions, 37 deletions
diff --git a/sys/dev/cxgbe/firmware/t4fw_interface.h b/sys/dev/cxgbe/firmware/t4fw_interface.h
index 93e9977..417bdae 100644
--- a/sys/dev/cxgbe/firmware/t4fw_interface.h
+++ b/sys/dev/cxgbe/firmware/t4fw_interface.h
@@ -1,5 +1,5 @@
/*-
- * Copyright (c) 2012 Chelsio Communications, Inc.
+ * Copyright (c) 2012-2014 Chelsio Communications, Inc.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -100,7 +100,7 @@ enum fw_wr_opcodes {
FW_ETH_TX_PKT_WR = 0x08,
FW_ETH_TX_PKT2_WR = 0x44,
FW_ETH_TX_PKTS_WR = 0x09,
- FW_ETH_TX_UO_WR = 0x1c,
+ FW_ETH_TX_EO_WR = 0x1c,
FW_EQ_FLUSH_WR = 0x1b,
FW_OFLD_CONNECTION_WR = 0x2f,
FW_FLOWC_WR = 0x0a,
@@ -647,21 +647,70 @@ struct fw_eth_tx_pkts_wr {
__u8 type;
};
-struct fw_eth_tx_uo_wr {
+enum fw_eth_tx_eo_type {
+ FW_ETH_TX_EO_TYPE_UDPSEG,
+ FW_ETH_TX_EO_TYPE_TCPSEG,
+ FW_ETH_TX_EO_TYPE_NVGRESEG,
+};
+
+struct fw_eth_tx_eo_wr {
__be32 op_immdlen;
__be32 equiq_to_len16;
__be64 r3;
- __u8 r4;
- __u8 ethlen;
- __be16 iplen;
- __u8 udplen;
- __u8 rtplen;
- __be16 r5;
- __be16 mss;
- __be16 schedpktsize;
- __be32 length;
+ union fw_eth_tx_eo {
+ struct fw_eth_tx_eo_udpseg {
+ __u8 type;
+ __u8 ethlen;
+ __be16 iplen;
+ __u8 udplen;
+ __u8 rtplen;
+ __be16 r4;
+ __be16 mss;
+ __be16 schedpktsize;
+ __be32 plen;
+ } udpseg;
+ struct fw_eth_tx_eo_tcpseg {
+ __u8 type;
+ __u8 ethlen;
+ __be16 iplen;
+ __u8 tcplen;
+ __u8 tsclk_tsoff;
+ __be16 r4;
+ __be16 mss;
+ __be16 r5;
+ __be32 plen;
+ } tcpseg;
+ struct fw_eth_tx_eo_nvgreseg {
+ __u8 type;
+ __u8 iphdroffout;
+ __be16 grehdroff;
+ __be16 iphdroffin;
+ __be16 tcphdroffin;
+ __be16 mss;
+ __be16 r4;
+ __be32 plen;
+ } nvgreseg;
+ } u;
};
+#define S_FW_ETH_TX_EO_WR_IMMDLEN 0
+#define M_FW_ETH_TX_EO_WR_IMMDLEN 0x1ff
+#define V_FW_ETH_TX_EO_WR_IMMDLEN(x) ((x) << S_FW_ETH_TX_EO_WR_IMMDLEN)
+#define G_FW_ETH_TX_EO_WR_IMMDLEN(x) \
+ (((x) >> S_FW_ETH_TX_EO_WR_IMMDLEN) & M_FW_ETH_TX_EO_WR_IMMDLEN)
+
+#define S_FW_ETH_TX_EO_WR_TSCLK 6
+#define M_FW_ETH_TX_EO_WR_TSCLK 0x3
+#define V_FW_ETH_TX_EO_WR_TSCLK(x) ((x) << S_FW_ETH_TX_EO_WR_TSCLK)
+#define G_FW_ETH_TX_EO_WR_TSCLK(x) \
+ (((x) >> S_FW_ETH_TX_EO_WR_TSCLK) & M_FW_ETH_TX_EO_WR_TSCLK)
+
+#define S_FW_ETH_TX_EO_WR_TSOFF 0
+#define M_FW_ETH_TX_EO_WR_TSOFF 0x3f
+#define V_FW_ETH_TX_EO_WR_TSOFF(x) ((x) << S_FW_ETH_TX_EO_WR_TSOFF)
+#define G_FW_ETH_TX_EO_WR_TSOFF(x) \
+ (((x) >> S_FW_ETH_TX_EO_WR_TSOFF) & M_FW_ETH_TX_EO_WR_TSOFF)
+
struct fw_eq_flush_wr {
__u8 opcode;
__u8 r1[3];
@@ -794,13 +843,13 @@ enum fw_flowc_mnem_tcpstate {
FW_FLOWC_MNEM_TCPSTATE_TIMEWAIT = 10, /* not expected */
};
-enum fw_flowc_mnem_uostate {
- FW_FLOWC_MNEM_UOSTATE_CLOSED = 0, /* illegal */
- FW_FLOWC_MNEM_UOSTATE_ESTABLISHED = 1, /* default */
- FW_FLOWC_MNEM_UOSTATE_CLOSING = 2, /* graceful close, after sending
+enum fw_flowc_mnem_eostate {
+ FW_FLOWC_MNEM_EOSTATE_CLOSED = 0, /* illegal */
+ FW_FLOWC_MNEM_EOSTATE_ESTABLISHED = 1, /* default */
+ FW_FLOWC_MNEM_EOSTATE_CLOSING = 2, /* graceful close, after sending
* outstanding payload
*/
- FW_FLOWC_MNEM_UOSTATE_ABORTING = 3, /* immediate close, after
+ FW_FLOWC_MNEM_EOSTATE_ABORTING = 3, /* immediate close, after
* discarding outstanding payload
*/
};
@@ -816,7 +865,7 @@ enum fw_flowc_mnem {
FW_FLOWC_MNEM_MSS = 7,
FW_FLOWC_MNEM_TXDATAPLEN_MAX = 8,
FW_FLOWC_MNEM_TCPSTATE = 9,
- FW_FLOWC_MNEM_UOSTATE = 10,
+ FW_FLOWC_MNEM_EOSTATE = 10,
FW_FLOWC_MNEM_SCHEDCLASS = 11,
FW_FLOWC_MNEM_DCBPRIO = 12,
};
@@ -3525,6 +3574,15 @@ enum fw_caps_config_fcoe {
FW_CAPS_CONFIG_POFCOE_TARGET = 0x00000010,
};
+enum fw_memtype_cf {
+ FW_MEMTYPE_CF_EDC0 = FW_MEMTYPE_EDC0,
+ FW_MEMTYPE_CF_EDC1 = FW_MEMTYPE_EDC1,
+ FW_MEMTYPE_CF_EXTMEM = FW_MEMTYPE_EXTMEM,
+ FW_MEMTYPE_CF_FLASH = FW_MEMTYPE_FLASH,
+ FW_MEMTYPE_CF_INTERNAL = FW_MEMTYPE_INTERNAL,
+ FW_MEMTYPE_CF_EXTMEM1 = FW_MEMTYPE_EXTMEM1,
+};
+
struct fw_caps_config_cmd {
__be32 op_to_write;
__be32 cfvalid_to_len16;
@@ -3612,6 +3670,7 @@ enum fw_params_param_dev {
FW_PARAMS_PARAM_DEV_INTFVER_FCOEPDU = 0x15,
FW_PARAMS_PARAM_DEV_MCINIT = 0x16,
FW_PARAMS_PARAM_DEV_ULPTX_MEMWRITE_DSGL = 0x17,
+ FW_PARAMS_PARAM_DEV_FWCACHE = 0x18,
};
/*
@@ -3691,14 +3750,19 @@ enum fw_params_param_dev_bypass {
FW_PARAMS_PARAM_DEV_BYPASS_BYPASS = 0x2,
};
-enum fw_params_phyfw_actions {
- FW_PARAMS_PARAM_PHYFW_DOWNLOAD = 0x00,
- FW_PARAMS_PARAM_PHYFW_VERSION = 0x01,
+enum fw_params_param_dev_phyfw {
+ FW_PARAMS_PARAM_DEV_PHYFW_DOWNLOAD = 0x00,
+ FW_PARAMS_PARAM_DEV_PHYFW_VERSION = 0x01,
};
enum fw_params_param_dev_diag {
- FW_PARAM_DEV_DIAG_TMP = 0x00,
- FW_PARAM_DEV_DIAG_VDD = 0x01,
+ FW_PARAM_DEV_DIAG_TMP = 0x00,
+ FW_PARAM_DEV_DIAG_VDD = 0x01,
+};
+
+enum fw_params_param_dev_fwcache {
+ FW_PARAM_DEV_FWCACHE_FLUSH = 0x00,
+ FW_PARAM_DEV_FWCACHE_FLUSHINV = 0x01,
};
#define S_FW_PARAMS_MNEM 24
@@ -4553,7 +4617,7 @@ struct fw_eq_eth_cmd {
__be32 fetchszm_to_iqid;
__be32 dcaen_to_eqsize;
__be64 eqaddr;
- __be32 viid_pkd;
+ __be32 autoequiqe_to_viid;
__be32 r8_lo;
__be64 r9;
};
@@ -4728,6 +4792,20 @@ struct fw_eq_eth_cmd {
#define G_FW_EQ_ETH_CMD_EQSIZE(x) \
(((x) >> S_FW_EQ_ETH_CMD_EQSIZE) & M_FW_EQ_ETH_CMD_EQSIZE)
+#define S_FW_EQ_ETH_CMD_AUTOEQUIQE 31
+#define M_FW_EQ_ETH_CMD_AUTOEQUIQE 0x1
+#define V_FW_EQ_ETH_CMD_AUTOEQUIQE(x) ((x) << S_FW_EQ_ETH_CMD_AUTOEQUIQE)
+#define G_FW_EQ_ETH_CMD_AUTOEQUIQE(x) \
+ (((x) >> S_FW_EQ_ETH_CMD_AUTOEQUIQE) & M_FW_EQ_ETH_CMD_AUTOEQUIQE)
+#define F_FW_EQ_ETH_CMD_AUTOEQUIQE V_FW_EQ_ETH_CMD_AUTOEQUIQE(1U)
+
+#define S_FW_EQ_ETH_CMD_AUTOEQUEQE 30
+#define M_FW_EQ_ETH_CMD_AUTOEQUEQE 0x1
+#define V_FW_EQ_ETH_CMD_AUTOEQUEQE(x) ((x) << S_FW_EQ_ETH_CMD_AUTOEQUEQE)
+#define G_FW_EQ_ETH_CMD_AUTOEQUEQE(x) \
+ (((x) >> S_FW_EQ_ETH_CMD_AUTOEQUEQE) & M_FW_EQ_ETH_CMD_AUTOEQUEQE)
+#define F_FW_EQ_ETH_CMD_AUTOEQUEQE V_FW_EQ_ETH_CMD_AUTOEQUEQE(1U)
+
#define S_FW_EQ_ETH_CMD_VIID 16
#define M_FW_EQ_ETH_CMD_VIID 0xfff
#define V_FW_EQ_ETH_CMD_VIID(x) ((x) << S_FW_EQ_ETH_CMD_VIID)
@@ -5680,18 +5758,19 @@ enum fw_port_action {
FW_PORT_ACTION_L1_LOW_PWR_EN = 0x0011,
FW_PORT_ACTION_L2_WOL_MODE_EN = 0x0012,
FW_PORT_ACTION_LPBK_TO_NORMAL = 0x0020,
- FW_PORT_ACTION_L1_SS_LPBK_ASIC = 0x0021,
- FW_PORT_ACTION_MAC_LPBK = 0x0022,
- FW_PORT_ACTION_L1_WS_LPBK_ASIC = 0x0023,
- FW_PORT_ACTION_L1_EXT_LPBK = 0x0026,
+ FW_PORT_ACTION_LPBK_SS_ASIC = 0x0022,
+ FW_PORT_ACTION_LPBK_WS_ASIC = 0x0023,
+ FW_PORT_ACTION_LPBK_WS_EXT_PHY = 0x0025,
+ FW_PORT_ACTION_LPBK_SS_EXT = 0x0026,
FW_PORT_ACTION_DIAGNOSTICS = 0x0027,
- FW_PORT_ACTION_PCS_LPBK = 0x0028,
+ FW_PORT_ACTION_LPBK_SS_EXT_PHY = 0x0028,
FW_PORT_ACTION_PHY_RESET = 0x0040,
FW_PORT_ACTION_PMA_RESET = 0x0041,
FW_PORT_ACTION_PCS_RESET = 0x0042,
FW_PORT_ACTION_PHYXS_RESET = 0x0043,
FW_PORT_ACTION_DTEXS_REEST = 0x0044,
FW_PORT_ACTION_AN_RESET = 0x0045,
+
};
enum fw_port_l2cfg_ctlbf {
@@ -5704,6 +5783,20 @@ enum fw_port_l2cfg_ctlbf {
FW_PORT_L2_CTLBF_MTU = 0x40
};
+enum fw_dcb_app_tlv_sf {
+ FW_DCB_APP_SF_ETHERTYPE,
+ FW_DCB_APP_SF_SOCKET_TCP,
+ FW_DCB_APP_SF_SOCKET_UDP,
+ FW_DCB_APP_SF_SOCKET_ALL,
+};
+
+enum fw_port_dcb_versions {
+ FW_PORT_DCB_VER_CEE1D0,
+ FW_PORT_DCB_VER_CEE1D01,
+ FW_PORT_DCB_VER_IEEE,
+ FW_PORT_DCB_VER_UNKNOWN=7
+};
+
enum fw_port_dcb_cfg {
FW_PORT_DCB_CFG_PG = 0x01,
FW_PORT_DCB_CFG_PFC = 0x02,
@@ -5724,10 +5817,18 @@ enum fw_port_dcb_type {
FW_PORT_DCB_TYPE_CONTROL = 0x05,
};
+enum fw_port_dcb_feature_state {
+ FW_PORT_DCB_FEATURE_STATE_PENDING = 0x0,
+ FW_PORT_DCB_FEATURE_STATE_SUCCESS = 0x1,
+ FW_PORT_DCB_FEATURE_STATE_ERROR = 0x2,
+ FW_PORT_DCB_FEATURE_STATE_TIMEOUT = 0x3,
+};
+
enum fw_port_diag_ops {
FW_PORT_DIAGS_TEMP = 0x00,
FW_PORT_DIAGS_TX_POWER = 0x01,
FW_PORT_DIAGS_RX_POWER = 0x02,
+ FW_PORT_DIAGS_TX_DIS = 0x03,
};
struct fw_port_cmd {
@@ -5760,7 +5861,9 @@ struct fw_port_cmd {
__be16 mtu;
__u8 cbllen;
__u8 auxlinfo;
- __be32 r8;
+ __u8 dcbxdis_pkd;
+ __u8 r8_lo;
+ __be16 lpcap;
__be64 r9;
} info;
struct fw_port_diags {
@@ -5792,7 +5895,8 @@ struct fw_port_cmd {
struct fw_port_dcb_pfc {
__u8 type;
__u8 pfcen;
- __be16 r10[3];
+ __u8 r10[5];
+ __u8 max_pfc_tcs;
__be64 r11;
} pfc;
struct fw_port_app_priority {
@@ -5807,8 +5911,9 @@ struct fw_port_cmd {
struct fw_port_dcb_control {
__u8 type;
__u8 all_syncd_pkd;
- __be16 r10_lo[3];
- __be64 r11;
+ __be16 pfc_state_to_app_state;
+ __be32 r11;
+ __be64 r12;
} control;
} dcb;
} u;
@@ -5953,6 +6058,13 @@ struct fw_port_cmd {
#define G_FW_PORT_CMD_MODTYPE(x) \
(((x) >> S_FW_PORT_CMD_MODTYPE) & M_FW_PORT_CMD_MODTYPE)
+#define S_FW_PORT_CMD_DCBXDIS 7
+#define M_FW_PORT_CMD_DCBXDIS 0x1
+#define V_FW_PORT_CMD_DCBXDIS(x) ((x) << S_FW_PORT_CMD_DCBXDIS)
+#define G_FW_PORT_CMD_DCBXDIS(x) \
+ (((x) >> S_FW_PORT_CMD_DCBXDIS) & M_FW_PORT_CMD_DCBXDIS)
+#define F_FW_PORT_CMD_DCBXDIS V_FW_PORT_CMD_DCBXDIS(1U)
+
#define S_FW_PORT_CMD_APPLY 7
#define M_FW_PORT_CMD_APPLY 0x1
#define V_FW_PORT_CMD_APPLY(x) ((x) << S_FW_PORT_CMD_APPLY)
@@ -5967,10 +6079,32 @@ struct fw_port_cmd {
(((x) >> S_FW_PORT_CMD_ALL_SYNCD) & M_FW_PORT_CMD_ALL_SYNCD)
#define F_FW_PORT_CMD_ALL_SYNCD V_FW_PORT_CMD_ALL_SYNCD(1U)
+#define S_FW_PORT_CMD_PFC_STATE 8
+#define M_FW_PORT_CMD_PFC_STATE 0xf
+#define V_FW_PORT_CMD_PFC_STATE(x) ((x) << S_FW_PORT_CMD_PFC_STATE)
+#define G_FW_PORT_CMD_PFC_STATE(x) \
+ (((x) >> S_FW_PORT_CMD_PFC_STATE) & M_FW_PORT_CMD_PFC_STATE)
+
+#define S_FW_PORT_CMD_ETS_STATE 4
+#define M_FW_PORT_CMD_ETS_STATE 0xf
+#define V_FW_PORT_CMD_ETS_STATE(x) ((x) << S_FW_PORT_CMD_ETS_STATE)
+#define G_FW_PORT_CMD_ETS_STATE(x) \
+ (((x) >> S_FW_PORT_CMD_ETS_STATE) & M_FW_PORT_CMD_ETS_STATE)
+
+#define S_FW_PORT_CMD_APP_STATE 0
+#define M_FW_PORT_CMD_APP_STATE 0xf
+#define V_FW_PORT_CMD_APP_STATE(x) ((x) << S_FW_PORT_CMD_APP_STATE)
+#define G_FW_PORT_CMD_APP_STATE(x) \
+ (((x) >> S_FW_PORT_CMD_APP_STATE) & M_FW_PORT_CMD_APP_STATE)
+
/*
* These are configured into the VPD and hence tools that generate
* VPD may use this enumeration.
* extPHY #lanes T4_I2C extI2C BP_Eq BP_ANEG Speed
+ *
+ * REMEMBER:
+ * Update the Common Code t4_hw.c:t4_get_port_type_description()
+ * with any new Firmware Port Technology Types!
*/
enum fw_port_type {
FW_PORT_TYPE_FIBER_XFI = 0, /* Y, 1, N, Y, N, N, 10G */
@@ -7658,6 +7792,17 @@ enum pcie_fw_eval {
/******************************************************************************
+ * P C I E F W P F 0 R E G I S T E R
+ **********************************************/
+
+/*
+ * this register is available as 32-bit of persistent storage (accross
+ * PL_RST based chip-reset) for boot drivers (i.e. firmware and driver
+ * will not write it)
+ */
+
+
+/******************************************************************************
* B I N A R Y H E A D E R F O R M A T
**********************************************/
@@ -7720,13 +7865,13 @@ enum fw_hdr_chip {
enum {
T4FW_VERSION_MAJOR = 0x01,
- T4FW_VERSION_MINOR = 0x09,
- T4FW_VERSION_MICRO = 0x0c,
+ T4FW_VERSION_MINOR = 0x0b,
+ T4FW_VERSION_MICRO = 0x1b,
T4FW_VERSION_BUILD = 0x00,
T5FW_VERSION_MAJOR = 0x01,
- T5FW_VERSION_MINOR = 0x09,
- T5FW_VERSION_MICRO = 0x0c,
+ T5FW_VERSION_MINOR = 0x0b,
+ T5FW_VERSION_MICRO = 0x1b,
T5FW_VERSION_BUILD = 0x00,
};
OpenPOWER on IntegriCloud