net/cxgbe: support flow API for source MAC rewrite
[dpdk.git] / drivers / net / cxgbe / base / t4_msg.h
index 4112ff2..a6ddaa7 100644 (file)
@@ -8,7 +8,16 @@
 
 enum {
        CPL_ACT_OPEN_REQ      = 0x3,
+       CPL_SET_TCB_FIELD     = 0x5,
+       CPL_ABORT_REQ         = 0xA,
+       CPL_ABORT_RPL         = 0xB,
+       CPL_L2T_WRITE_REQ     = 0x12,
+       CPL_SMT_WRITE_REQ     = 0x14,
+       CPL_TID_RELEASE       = 0x1A,
+       CPL_L2T_WRITE_RPL     = 0x23,
        CPL_ACT_OPEN_RPL      = 0x25,
+       CPL_ABORT_RPL_RSS     = 0x2D,
+       CPL_SMT_WRITE_RPL     = 0x2E,
        CPL_SET_TCB_RPL       = 0x3A,
        CPL_ACT_OPEN_REQ6     = 0x83,
        CPL_SGE_EGR_UPDATE    = 0xA5,
@@ -25,6 +34,12 @@ enum CPL_error {
 
 enum {
        ULP_MODE_NONE          = 0,
+       ULP_MODE_TCPDDP        = 5,
+};
+
+enum {
+       CPL_ABORT_SEND_RST = 0,
+       CPL_ABORT_NO_RST,
 };
 
 enum {                     /* TX_PKT_XT checksum types */
@@ -56,6 +71,9 @@ union opcode_tid {
 #define M_TID_TID    0x3fff
 #define G_TID_TID(x) (((x) >> S_TID_TID) & M_TID_TID)
 
+#define S_TID_QID    14
+#define V_TID_QID(x) ((x) << S_TID_QID)
+
 struct rss_header {
        __u8 opcode;
 #if RTE_BYTE_ORDER == RTE_LITTLE_ENDIAN
@@ -103,6 +121,9 @@ struct work_request_hdr {
 #define G_COOKIE(x) (((x) >> S_COOKIE) & M_COOKIE)
 
 /* option 0 fields */
+#define S_TX_CHAN    2
+#define V_TX_CHAN(x) ((x) << S_TX_CHAN)
+
 #define S_DELACK    5
 #define V_DELACK(x) ((x) << S_DELACK)
 
@@ -120,6 +141,12 @@ struct work_request_hdr {
 #define V_TCAM_BYPASS(x) ((__u64)(x) << S_TCAM_BYPASS)
 #define F_TCAM_BYPASS    V_TCAM_BYPASS(1ULL)
 
+#define S_L2T_IDX    36
+#define V_L2T_IDX(x) ((__u64)(x) << S_L2T_IDX)
+
+#define S_NAGLE    49
+#define V_NAGLE(x) ((__u64)(x) << S_NAGLE)
+
 /* option 2 fields */
 #define S_RSS_QUEUE    0
 #define V_RSS_QUEUE(x) ((x) << S_RSS_QUEUE)
@@ -135,6 +162,12 @@ struct work_request_hdr {
 #define V_RX_CHANNEL(x) ((x) << S_RX_CHANNEL)
 #define F_RX_CHANNEL    V_RX_CHANNEL(1U)
 
+#define S_CCTRL_ECN    27
+#define V_CCTRL_ECN(x) ((x) << S_CCTRL_ECN)
+
+#define S_SACK_EN    30
+#define V_SACK_EN(x) ((x) << S_SACK_EN)
+
 #define S_T5_OPT_2_VALID    31
 #define V_T5_OPT_2_VALID(x) ((x) << S_T5_OPT_2_VALID)
 #define F_T5_OPT_2_VALID    V_T5_OPT_2_VALID(1U)
@@ -189,6 +222,29 @@ struct cpl_act_open_rpl {
 #define M_AOPEN_ATID    0xFFFFFF
 #define G_AOPEN_ATID(x) (((x) >> S_AOPEN_ATID) & M_AOPEN_ATID)
 
+struct cpl_set_tcb_field {
+       WR_HDR;
+       union opcode_tid ot;
+       __be16 reply_ctrl;
+       __be16 word_cookie;
+       __be64 mask;
+       __be64 val;
+};
+
+/* cpl_set_tcb_field.word_cookie fields */
+#define S_WORD    0
+#define V_WORD(x) ((x) << S_WORD)
+
+/* cpl_get_tcb.reply_ctrl fields */
+#define S_QUEUENO    0
+#define V_QUEUENO(x) ((x) << S_QUEUENO)
+
+#define S_REPLY_CHAN    14
+#define V_REPLY_CHAN(x) ((x) << S_REPLY_CHAN)
+
+#define S_NO_REPLY    15
+#define V_NO_REPLY(x) ((x) << S_NO_REPLY)
+
 struct cpl_set_tcb_rpl {
        RSS_HDR
        union opcode_tid ot;
@@ -198,6 +254,39 @@ struct cpl_set_tcb_rpl {
        __be64 oldval;
 };
 
+/* cpl_abort_req status command code
+ */
+struct cpl_abort_req {
+       WR_HDR;
+       union opcode_tid ot;
+       __be32 rsvd0;
+       __u8  rsvd1;
+       __u8  cmd;
+       __u8  rsvd2[6];
+};
+
+struct cpl_abort_rpl_rss {
+       RSS_HDR
+       union opcode_tid ot;
+       __u8  rsvd[3];
+       __u8  status;
+};
+
+struct cpl_abort_rpl {
+       WR_HDR;
+       union opcode_tid ot;
+       __be32 rsvd0;
+       __u8  rsvd1;
+       __u8  cmd;
+       __u8  rsvd2[6];
+};
+
+struct cpl_tid_release {
+       WR_HDR;
+       union opcode_tid ot;
+       __be32 rsvd;
+};
+
 struct cpl_tx_data {
        union opcode_tid ot;
        __be32 len;
@@ -349,6 +438,73 @@ struct cpl_rx_pkt {
        __be16 err_vec;
 };
 
+struct cpl_l2t_write_req {
+       WR_HDR;
+       union opcode_tid ot;
+       __be16 params;
+       __be16 l2t_idx;
+       __be16 vlan;
+       __u8   dst_mac[6];
+};
+
+/* cpl_l2t_write_req.params fields */
+#define S_L2T_W_PORT    8
+#define V_L2T_W_PORT(x) ((x) << S_L2T_W_PORT)
+
+#define S_L2T_W_LPBK    10
+#define V_L2T_W_LPBK(x) ((x) << S_L2T_W_LPBK)
+
+#define S_L2T_W_ARPMISS         11
+#define V_L2T_W_ARPMISS(x)      ((x) << S_L2T_W_ARPMISS)
+
+#define S_L2T_W_NOREPLY    15
+#define V_L2T_W_NOREPLY(x) ((x) << S_L2T_W_NOREPLY)
+
+struct cpl_l2t_write_rpl {
+       RSS_HDR
+       union opcode_tid ot;
+       __u8 status;
+       __u8 rsvd[3];
+};
+
+struct cpl_smt_write_req {
+       WR_HDR;
+       union opcode_tid ot;
+       __be32 params;
+       __be16 pfvf1;
+       __u8   src_mac1[6];
+       __be16 pfvf0;
+       __u8   src_mac0[6];
+};
+
+struct cpl_t6_smt_write_req {
+       WR_HDR;
+       union opcode_tid ot;
+       __be32 params;
+       __be64 tag;
+       __be16 pfvf0;
+       __u8   src_mac0[6];
+       __be32 local_ip;
+       __be32 rsvd;
+};
+
+struct cpl_smt_write_rpl {
+       RSS_HDR
+       union opcode_tid ot;
+       u8 status;
+       u8 rsvd[3];
+};
+
+/* cpl_smt_{read,write}_req.params fields */
+#define S_SMTW_OVLAN_IDX    16
+#define V_SMTW_OVLAN_IDX(x) ((x) << S_SMTW_OVLAN_IDX)
+
+#define S_SMTW_IDX    20
+#define V_SMTW_IDX(x) ((x) << S_SMTW_IDX)
+
+#define S_SMTW_NORPL    31
+#define V_SMTW_NORPL(x) ((x) << S_SMTW_NORPL)
+
 /* rx_pkt.l2info fields */
 #define S_RXF_UDP    22
 #define V_RXF_UDP(x) ((x) << S_RXF_UDP)
@@ -403,7 +559,13 @@ struct cpl_fw6_msg {
        __be64 data[4];
 };
 
+/* ULP_TX opcodes */
+enum {
+       ULP_TX_PKT = 4
+};
+
 enum {
+       ULP_TX_SC_NOOP = 0x80,
        ULP_TX_SC_IMM  = 0x81,
        ULP_TX_SC_DSGL = 0x82,
        ULP_TX_SC_ISGL = 0x83