X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fnet%2Fvmxnet3%2Fvmxnet3_ring.h;h=d2e8323ba48c9f7311adf62e984fdb14d696d199;hb=2554832833dbcdb1b89167c2ecfa4c9e7c6cbe99;hp=612487e152d6263eab7406eb2aa20d4b2d5a31e4;hpb=7ba5de417e3c32fe3280838353b786c1ca86df26;p=dpdk.git diff --git a/drivers/net/vmxnet3/vmxnet3_ring.h b/drivers/net/vmxnet3/vmxnet3_ring.h index 612487e152..d2e8323ba4 100644 --- a/drivers/net/vmxnet3/vmxnet3_ring.h +++ b/drivers/net/vmxnet3/vmxnet3_ring.h @@ -42,6 +42,9 @@ #define VMXNET3_DEF_TX_RING_SIZE 512 #define VMXNET3_DEF_RX_RING_SIZE 128 +/* Default rx data ring desc size */ +#define VMXNET3_DEF_RXDATA_DESC_SIZE 128 + #define VMXNET3_SUCCESS 0 #define VMXNET3_FAIL -1 @@ -92,16 +95,16 @@ vmxnet3_cmd_ring_desc_avail(struct vmxnet3_cmd_ring *ring) static inline bool vmxnet3_cmd_ring_desc_empty(struct vmxnet3_cmd_ring *ring) { - return (ring->next2comp == ring->next2fill); + return ring->next2comp == ring->next2fill; } typedef struct vmxnet3_comp_ring { - uint32_t size; - uint32_t next2proc; - uint8_t gen; - uint8_t intr_idx; + uint32_t size; + uint32_t next2proc; + uint8_t gen; + uint8_t intr_idx; Vmxnet3_GenericDesc *base; - uint64_t basePA; + uint64_t basePA; } vmxnet3_comp_ring_t; struct vmxnet3_data_ring { @@ -121,27 +124,15 @@ vmxnet3_comp_ring_adv_next2proc(struct vmxnet3_comp_ring *ring) } struct vmxnet3_txq_stats { - uint64_t drop_total; /* # of pkts dropped by the driver, + uint64_t drop_total; /* # of pkts dropped by the driver, * the counters below track droppings due to * different reasons */ - uint64_t drop_too_many_segs; - uint64_t drop_tso; - uint64_t tx_ring_full; + uint64_t drop_too_many_segs; + uint64_t drop_tso; + uint64_t tx_ring_full; }; -typedef struct vmxnet3_tx_ctx { - int ip_type; - bool is_vlan; - bool is_cso; - - uint16_t evl_tag; /* only valid when is_vlan == TRUE */ - uint32_t eth_hdr_size; /* only valid for pkts requesting tso or csum - * offloading */ - uint32_t ip_hdr_size; - uint32_t l4_hdr_size; -} vmxnet3_tx_ctx_t; - typedef struct vmxnet3_tx_queue { struct vmxnet3_hw *hw; struct vmxnet3_cmd_ring cmd_ring; @@ -150,12 +141,13 @@ typedef struct vmxnet3_tx_queue { uint32_t qid; struct Vmxnet3_TxQueueDesc *shared; struct vmxnet3_txq_stats stats; + const struct rte_memzone *mz; bool stopped; uint16_t queue_id; /**< Device TX queue index. */ uint8_t port_id; /**< Device port identifier. */ + uint16_t txdata_desc_size; } vmxnet3_tx_queue_t; - struct vmxnet3_rxq_stats { uint64_t drop_total; uint64_t drop_err; @@ -163,15 +155,28 @@ struct vmxnet3_rxq_stats { uint64_t rx_buf_alloc_failure; }; +struct vmxnet3_rx_data_ring { + uint8_t *base; + uint64_t basePA; + uint32_t size; +}; + typedef struct vmxnet3_rx_queue { struct rte_mempool *mp; struct vmxnet3_hw *hw; struct vmxnet3_cmd_ring cmd_ring[VMXNET3_RX_CMDRING_SIZE]; struct vmxnet3_comp_ring comp_ring; + struct vmxnet3_rx_data_ring data_ring; + uint16_t data_desc_size; uint32_t qid1; uint32_t qid2; + /* rqID in RCD for buffer from data ring */ + uint32_t data_ring_qid; Vmxnet3_RxQueueDesc *shared; + struct rte_mbuf *start_seg; + struct rte_mbuf *last_seg; struct vmxnet3_rxq_stats stats; + const struct rte_memzone *mz; bool stopped; uint16_t queue_id; /**< Device RX queue index. */ uint8_t port_id; /**< Device port identifier. */