]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/spdk/dpdk/drivers/net/dpaa2/mc/fsl_dpni_cmd.h
import 15.2.0 Octopus source
[ceph.git] / ceph / src / spdk / dpdk / drivers / net / dpaa2 / mc / fsl_dpni_cmd.h
index eb3e998786de31b7af3c15f2a1baccfd88eb1fd9..5effbb300c42fe17f30deb589fc28f483b59432c 100644 (file)
@@ -9,25 +9,27 @@
 
 /* DPNI Version */
 #define DPNI_VER_MAJOR                         7
-#define DPNI_VER_MINOR                         3
+#define DPNI_VER_MINOR                         9
 
 #define DPNI_CMD_BASE_VERSION                  1
 #define DPNI_CMD_VERSION_2                     2
+#define DPNI_CMD_VERSION_3                     3
 #define DPNI_CMD_ID_OFFSET                     4
 
 #define DPNI_CMD(id)   (((id) << DPNI_CMD_ID_OFFSET) | DPNI_CMD_BASE_VERSION)
 #define DPNI_CMD_V2(id)        (((id) << DPNI_CMD_ID_OFFSET) | DPNI_CMD_VERSION_2)
+#define DPNI_CMD_V3(id)        (((id) << DPNI_CMD_ID_OFFSET) | DPNI_CMD_VERSION_3)
 
 /* Command IDs */
 #define DPNI_CMDID_OPEN                                DPNI_CMD(0x801)
 #define DPNI_CMDID_CLOSE                       DPNI_CMD(0x800)
-#define DPNI_CMDID_CREATE                      DPNI_CMD(0x901)
+#define DPNI_CMDID_CREATE                      DPNI_CMD_V3(0x901)
 #define DPNI_CMDID_DESTROY                     DPNI_CMD(0x981)
 #define DPNI_CMDID_GET_API_VERSION             DPNI_CMD(0xa01)
 
 #define DPNI_CMDID_ENABLE                      DPNI_CMD(0x002)
 #define DPNI_CMDID_DISABLE                     DPNI_CMD(0x003)
-#define DPNI_CMDID_GET_ATTR                    DPNI_CMD_V2(0x004)
+#define DPNI_CMDID_GET_ATTR                    DPNI_CMD_V3(0x004)
 #define DPNI_CMDID_RESET                       DPNI_CMD(0x005)
 #define DPNI_CMDID_IS_ENABLED                  DPNI_CMD(0x006)
 
 #define DPNI_CMDID_GET_QDID                    DPNI_CMD(0x210)
 #define DPNI_CMDID_GET_SP_INFO                 DPNI_CMD(0x211)
 #define DPNI_CMDID_GET_TX_DATA_OFFSET          DPNI_CMD(0x212)
-#define DPNI_CMDID_GET_LINK_STATE              DPNI_CMD(0x215)
+#define DPNI_CMDID_GET_LINK_STATE              DPNI_CMD_V2(0x215)
 #define DPNI_CMDID_SET_MAX_FRAME_LENGTH                DPNI_CMD(0x216)
 #define DPNI_CMDID_GET_MAX_FRAME_LENGTH                DPNI_CMD(0x217)
-#define DPNI_CMDID_SET_LINK_CFG                        DPNI_CMD(0x21A)
+#define DPNI_CMDID_SET_LINK_CFG                        DPNI_CMD_V2(0x21A)
 #define DPNI_CMDID_SET_TX_SHAPING              DPNI_CMD_V2(0x21B)
 
 #define DPNI_CMDID_SET_MCAST_PROMISC           DPNI_CMD(0x220)
 #define DPNI_CMDID_REMOVE_VLAN_ID              DPNI_CMD(0x232)
 #define DPNI_CMDID_CLR_VLAN_FILTERS            DPNI_CMD(0x233)
 
-#define DPNI_CMDID_SET_RX_TC_DIST              DPNI_CMD_V2(0x235)
+#define DPNI_CMDID_SET_RX_TC_DIST              DPNI_CMD_V3(0x235)
 
-#define DPNI_CMDID_GET_STATISTICS              DPNI_CMD_V2(0x25D)
+#define DPNI_CMDID_SET_QOS_TBL                 DPNI_CMD_V2(0x240)
+#define DPNI_CMDID_ADD_QOS_ENT                 DPNI_CMD(0x241)
+#define DPNI_CMDID_REMOVE_QOS_ENT              DPNI_CMD(0x242)
+#define DPNI_CMDID_CLR_QOS_TBL                 DPNI_CMD(0x243)
+#define DPNI_CMDID_ADD_FS_ENT                  DPNI_CMD(0x244)
+#define DPNI_CMDID_REMOVE_FS_ENT               DPNI_CMD(0x245)
+#define DPNI_CMDID_CLR_FS_ENT                  DPNI_CMD(0x246)
+
+#define DPNI_CMDID_GET_STATISTICS              DPNI_CMD_V3(0x25D)
 #define DPNI_CMDID_RESET_STATISTICS            DPNI_CMD(0x25E)
-#define DPNI_CMDID_GET_QUEUE                   DPNI_CMD(0x25F)
-#define DPNI_CMDID_SET_QUEUE                   DPNI_CMD(0x260)
+#define DPNI_CMDID_GET_QUEUE                   DPNI_CMD_V2(0x25F)
+#define DPNI_CMDID_SET_QUEUE                   DPNI_CMD_V2(0x260)
 #define DPNI_CMDID_GET_TAILDROP                        DPNI_CMD_V2(0x261)
 #define DPNI_CMDID_SET_TAILDROP                        DPNI_CMD_V2(0x262)
 
 #define DPNI_CMDID_GET_PORT_MAC_ADDR           DPNI_CMD(0x263)
 
-#define DPNI_CMDID_GET_BUFFER_LAYOUT           DPNI_CMD(0x264)
-#define DPNI_CMDID_SET_BUFFER_LAYOUT           DPNI_CMD(0x265)
+#define DPNI_CMDID_GET_BUFFER_LAYOUT           DPNI_CMD_V2(0x264)
+#define DPNI_CMDID_SET_BUFFER_LAYOUT           DPNI_CMD_V2(0x265)
 
-#define DPNI_CMDID_SET_CONGESTION_NOTIFICATION DPNI_CMD(0x267)
-#define DPNI_CMDID_GET_CONGESTION_NOTIFICATION DPNI_CMD(0x268)
+#define DPNI_CMDID_SET_CONGESTION_NOTIFICATION DPNI_CMD_V2(0x267)
+#define DPNI_CMDID_GET_CONGESTION_NOTIFICATION DPNI_CMD_V2(0x268)
 #define DPNI_CMDID_SET_EARLY_DROP              DPNI_CMD_V2(0x269)
 #define DPNI_CMDID_GET_EARLY_DROP              DPNI_CMD_V2(0x26A)
 #define DPNI_CMDID_GET_OFFLOAD                 DPNI_CMD(0x26B)
 #define DPNI_CMDID_SET_OFFLOAD                 DPNI_CMD(0x26C)
 #define DPNI_CMDID_SET_TX_CONFIRMATION_MODE    DPNI_CMD(0x266)
 #define DPNI_CMDID_GET_TX_CONFIRMATION_MODE    DPNI_CMD(0x26D)
+#define DPNI_CMDID_SET_OPR                     DPNI_CMD(0x26e)
+#define DPNI_CMDID_GET_OPR                     DPNI_CMD(0x26f)
+#define DPNI_CMDID_SET_RX_FS_DIST              DPNI_CMD(0x273)
+#define DPNI_CMDID_SET_RX_HASH_DIST            DPNI_CMD(0x274)
+#define DPNI_CMDID_ADD_CUSTOM_TPID             DPNI_CMD(0x275)
+#define DPNI_CMDID_REMOVE_CUSTOM_TPID          DPNI_CMD(0x276)
+#define DPNI_CMDID_GET_CUSTOM_TPID             DPNI_CMD(0x277)
 
 /* Macros for accessing command fields smaller than 1byte */
 #define DPNI_MASK(field)       \
@@ -113,6 +130,9 @@ struct dpni_cmd_create {
        uint8_t qos_entries;
        uint8_t pad3;
        uint16_t fs_entries;
+       uint8_t num_rx_tcs;
+       uint8_t pad4;
+       uint8_t num_cgs;
 };
 
 struct dpni_cmd_destroy {
@@ -204,6 +224,7 @@ struct dpni_rsp_get_attr {
        uint8_t qos_key_size;
        uint8_t fs_key_size;
        uint16_t wriop_version;
+       uint8_t num_cgs;
 };
 
 #define DPNI_ERROR_ACTION_SHIFT                0
@@ -228,6 +249,8 @@ struct dpni_cmd_set_errors_behavior {
 #define DPNI_PASS_PR_SIZE              1
 #define DPNI_PASS_FS_SHIFT             2
 #define DPNI_PASS_FS_SIZE              1
+#define DPNI_PASS_SWO_SHIFT            3
+#define DPNI_PASS_SWO_SIZE             1
 
 struct dpni_cmd_get_buffer_layout {
        uint8_t qtype;
@@ -295,7 +318,7 @@ struct dpni_rsp_get_tx_data_offset {
 
 struct dpni_cmd_get_statistics {
        uint8_t page_number;
-       uint8_t param;
+       uint16_t param;
 };
 
 struct dpni_rsp_get_statistics {
@@ -307,10 +330,13 @@ struct dpni_cmd_set_link_cfg {
        uint32_t rate;
        uint32_t pad1;
        uint64_t options;
+       uint64_t advertising;
 };
 
 #define DPNI_LINK_STATE_SHIFT          0
 #define DPNI_LINK_STATE_SIZE           1
+#define DPNI_STATE_VALID_SHIFT         1
+#define DPNI_STATE_VALID_SIZE          1
 
 struct dpni_rsp_get_link_state {
        uint32_t pad0;
@@ -320,6 +346,8 @@ struct dpni_rsp_get_link_state {
        uint32_t rate;
        uint32_t pad2;
        uint64_t options;
+       uint64_t supported;
+       uint64_t advertising;
 };
 
 struct dpni_cmd_set_max_frame_length {
@@ -415,6 +443,8 @@ struct dpni_cmd_set_tx_priorities {
 #define DPNI_MISS_ACTION_SIZE          4
 #define DPNI_KEEP_HASH_KEY_SHIFT       7
 #define DPNI_KEEP_HASH_KEY_SIZE                1
+#define DPNI_KEEP_ENTRIES_SHIFT                6
+#define DPNI_KEEP_ENTRIES_SIZE         1
 
 struct dpni_cmd_set_rx_tc_dist {
        uint16_t dist_size;
@@ -437,6 +467,8 @@ struct dpni_cmd_get_queue {
 
 #define DPNI_DEST_TYPE_SHIFT           0
 #define DPNI_DEST_TYPE_SIZE            4
+#define DPNI_CGID_VALID_SHIFT          5
+#define DPNI_CGID_VALID_SIZE           1
 #define DPNI_STASH_CTRL_SHIFT          6
 #define DPNI_STASH_CTRL_SIZE           1
 #define DPNI_HOLD_ACTIVE_SHIFT         7
@@ -449,7 +481,9 @@ struct dpni_rsp_get_queue {
        uint32_t dest_id;
        uint16_t pad1;
        uint8_t dest_prio;
-       /* From LSB: dest_type:4, pad:2, flc_stash_ctrl:1, hold_active:1 */
+       /* From LSB:
+        * dest_type:4, pad:1, cgid_valid:1, flc_stash_ctrl:1, hold_active:1
+        */
        uint8_t flags;
        /* response word 2 */
        uint64_t flc;
@@ -458,6 +492,9 @@ struct dpni_rsp_get_queue {
        /* response word 4 */
        uint32_t fqid;
        uint16_t qdbin;
+       uint16_t pad2;
+       /* response word 5*/
+       uint8_t cgid;
 };
 
 struct dpni_cmd_set_queue {
@@ -476,6 +513,65 @@ struct dpni_cmd_set_queue {
        uint64_t flc;
        /* cmd word 3 */
        uint64_t user_context;
+       /* cmd word 4 */
+       uint8_t cgid;
+};
+
+#define DPNI_DISCARD_ON_MISS_SHIFT     0
+#define DPNI_DISCARD_ON_MISS_SIZE      1
+#define DPNI_KEEP_QOS_ENTRIES_SHIFT            1
+#define DPNI_KEEP_QOS_ENTRIES_SIZE             1
+
+struct dpni_cmd_set_qos_table {
+       uint32_t pad;
+       uint8_t default_tc;
+       /* only the LSB */
+       uint8_t discard_on_miss;
+       uint16_t pad1[21];
+       uint64_t key_cfg_iova;
+};
+
+struct dpni_cmd_add_qos_entry {
+       uint16_t pad;
+       uint8_t tc_id;
+       uint8_t key_size;
+       uint16_t index;
+       uint16_t pad2;
+       uint64_t key_iova;
+       uint64_t mask_iova;
+};
+
+struct dpni_cmd_remove_qos_entry {
+       uint8_t pad1[3];
+       uint8_t key_size;
+       uint32_t pad2;
+       uint64_t key_iova;
+       uint64_t mask_iova;
+};
+
+struct dpni_cmd_add_fs_entry {
+       uint16_t options;
+       uint8_t tc_id;
+       uint8_t key_size;
+       uint16_t index;
+       uint16_t flow_id;
+       uint64_t key_iova;
+       uint64_t mask_iova;
+       uint64_t flc;
+};
+
+struct dpni_cmd_remove_fs_entry {
+       uint16_t pad1;
+       uint8_t tc_id;
+       uint8_t key_size;
+       uint32_t pad2;
+       uint64_t key_iova;
+       uint64_t mask_iova;
+};
+
+struct dpni_cmd_clear_fs_entries {
+       uint16_t pad;
+       uint8_t tc_id;
 };
 
 #define DPNI_DROP_ENABLE_SHIFT 0
@@ -571,7 +667,10 @@ struct dpni_tx_confirmation_mode {
 struct dpni_cmd_set_congestion_notification {
        uint8_t qtype;
        uint8_t tc;
-       uint8_t pad[6];
+       uint8_t pad;
+       uint8_t congestion_point;
+       uint8_t cgid;
+       uint8_t pad2[3];
        uint32_t dest_id;
        uint16_t notification_mode;
        uint8_t dest_priority;
@@ -586,6 +685,9 @@ struct dpni_cmd_set_congestion_notification {
 struct dpni_cmd_get_congestion_notification {
        uint8_t qtype;
        uint8_t tc;
+       uint8_t pad;
+       uint8_t congestion_point;
+       uint8_t cgid;
 };
 
 struct dpni_rsp_get_congestion_notification {
@@ -601,5 +703,100 @@ struct dpni_rsp_get_congestion_notification {
        uint32_t threshold_exit;
 };
 
+struct dpni_cmd_set_opr {
+       uint8_t pad0;
+       uint8_t tc_id;
+       uint8_t index;
+       uint8_t options;
+       uint8_t pad1[7];
+       uint8_t oloe;
+       uint8_t oeane;
+       uint8_t olws;
+       uint8_t oa;
+       uint8_t oprrws;
+};
+
+struct dpni_cmd_get_opr {
+       uint8_t pad;
+       uint8_t tc_id;
+       uint8_t index;
+};
+
+#define DPNI_RIP_SHIFT 0
+#define DPNI_RIP_SIZE          1
+#define DPNI_OPR_ENABLE_SHIFT  1
+#define DPNI_OPR_ENABLE_SIZE   1
+#define DPNI_TSEQ_NLIS_SHIFT   0
+#define DPNI_TSEQ_NLIS_SIZE    1
+#define DPNI_HSEQ_NLIS_SHIFT   0
+#define DPNI_HSEQ_NLIS_SIZE    1
+
+struct dpni_rsp_get_opr {
+       uint64_t pad0;
+       /* from LSB: rip:1 enable:1 */
+       uint8_t flags;
+       uint16_t pad1;
+       uint8_t oloe;
+       uint8_t oeane;
+       uint8_t olws;
+       uint8_t oa;
+       uint8_t oprrws;
+       uint16_t nesn;
+       uint16_t pad8;
+       uint16_t ndsn;
+       uint16_t pad2;
+       uint16_t ea_tseq;
+       /* only the LSB */
+       uint8_t tseq_nlis;
+       uint8_t pad3;
+       uint16_t ea_hseq;
+       /* only the LSB */
+       uint8_t hseq_nlis;
+       uint8_t pad4;
+       uint16_t ea_hptr;
+       uint16_t pad5;
+       uint16_t ea_tptr;
+       uint16_t pad6;
+       uint16_t opr_vid;
+       uint16_t pad7;
+       uint16_t opr_id;
+};
+
+struct dpni_cmd_add_custom_tpid {
+       uint16_t        pad;
+       uint16_t        tpid;
+};
+
+struct dpni_cmd_remove_custom_tpid {
+       uint16_t        pad;
+       uint16_t        tpid;
+};
+
+struct dpni_rsp_get_custom_tpid {
+       uint16_t        tpid1;
+       uint16_t        tpid2;
+};
+
+#define DPNI_RX_FS_DIST_ENABLE_SHIFT   0
+#define DPNI_RX_FS_DIST_ENABLE_SIZE            1
+struct dpni_cmd_set_rx_fs_dist {
+       uint16_t        dist_size;
+       uint8_t         enable;
+       uint8_t         tc;
+       uint16_t        miss_flow_id;
+       uint16_t        pad1;
+       uint64_t        key_cfg_iova;
+};
+
+#define DPNI_RX_HASH_DIST_ENABLE_SHIFT 0
+#define DPNI_RX_HASH_DIST_ENABLE_SIZE          1
+struct dpni_cmd_set_rx_hash_dist {
+       uint16_t        dist_size;
+       uint8_t         enable;
+       uint8_t         tc_id;
+       uint32_t        pad;
+       uint64_t        key_cfg_iova;
+};
+
 #pragma pack(pop)
 #endif /* _FSL_DPNI_CMD_H */