+struct dpi_dma_req_compl_s {
+ uint64_t cdata;
+ void (*compl_cb)(void *dev, void *arg);
+ void *cb_data;
+};
+
+union dpi_dma_ptr_u {
+ uint64_t u[2];
+ struct dpi_dma_s {
+ uint64_t length:16;
+ uint64_t reserved:44;
+ uint64_t bed:1; /* Big-Endian */
+ uint64_t alloc_l2:1;
+ uint64_t full_write:1;
+ uint64_t invert:1;
+ uint64_t ptr;
+ } s;
+};
+
+struct dpi_dma_buf_ptr_s {
+ union dpi_dma_ptr_u *rptr[DPI_MAX_POINTER]; /* Read From pointer list */
+ union dpi_dma_ptr_u *wptr[DPI_MAX_POINTER]; /* Write to pointer list */
+ uint8_t rptr_cnt;
+ uint8_t wptr_cnt;
+ struct dpi_dma_req_compl_s *comp_ptr;
+};
+
+struct dpi_cring_data_s {
+ struct dpi_dma_req_compl_s **compl_data;
+ uint16_t max_cnt;
+ uint16_t head;
+ uint16_t tail;
+};
+
+struct dpi_dma_queue_ctx_s {
+ uint16_t xtype:2;
+
+ /* Completion pointer type */
+ uint16_t pt:2;
+
+ /* Completion updated using WQE */
+ uint16_t tt:2;
+ uint16_t grp:10;
+ uint32_t tag;
+
+ /* Valid only for Outbound only mode */
+ uint16_t aura:12;
+ uint16_t csel:1;
+ uint16_t ca:1;
+ uint16_t fi:1;
+ uint16_t ii:1;
+ uint16_t fl:1;
+
+ uint16_t pvfe:1;
+ uint16_t dealloce:1;
+ uint16_t req_type:2;
+ uint16_t use_lock:1;
+ uint16_t deallocv;
+
+ struct dpi_cring_data_s *c_ring;
+};
+
+/* DPI DMA Instruction Header Format */
+union dpi_dma_instr_hdr_u {
+ uint64_t u[4];
+
+ struct dpi_dma_instr_hdr_s_s {
+ uint64_t tag:32;
+ uint64_t tt:2;
+ uint64_t grp:10;
+ uint64_t reserved_44_47:4;
+ uint64_t nfst:4;
+ uint64_t reserved_52_53:2;
+ uint64_t nlst:4;
+ uint64_t reserved_58_63:6;
+ /* Word 0 - End */
+
+ uint64_t aura:12;
+ uint64_t reserved_76_79:4;
+ uint64_t deallocv:16;
+ uint64_t dealloce:1;
+ uint64_t pvfe:1;
+ uint64_t reserved_98_99:2;
+ uint64_t pt:2;
+ uint64_t reserved_102_103:2;
+ uint64_t fl:1;
+ uint64_t ii:1;
+ uint64_t fi:1;
+ uint64_t ca:1;
+ uint64_t csel:1;
+ uint64_t reserved_109_111:3;
+ uint64_t xtype:2;
+ uint64_t reserved_114_119:6;
+ uint64_t fport:2;
+ uint64_t reserved_122_123:2;
+ uint64_t lport:2;
+ uint64_t reserved_126_127:2;
+ /* Word 1 - End */
+
+ uint64_t ptr:64;
+ /* Word 2 - End */
+
+ uint64_t reserved_192_255:64;
+ /* Word 3 - End */
+ } s;
+};
+