X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fnet%2Fvmxnet3%2Fvmxnet3_ring.h;h=d2e8323ba48c9f7311adf62e984fdb14d696d199;hb=7236d2bfe0acc48330e3c2a3dfac4ada9a792cd8;hp=c5abdb69a99534aa1428399322cadc02e4f61fdb;hpb=09452c07edc1b5926a5acc41ed2f125b66785ba5;p=dpdk.git diff --git a/drivers/net/vmxnet3/vmxnet3_ring.h b/drivers/net/vmxnet3/vmxnet3_ring.h index c5abdb69a9..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,30 +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, the - * counters below track droppings due to - * different reasons - */ - uint64_t drop_oversized; - uint64_t drop_hdr_inspect_err; - uint64_t drop_tso; - uint64_t deferred; - uint64_t tx_ring_full; - uint64_t linearized; /* # of pkts linearized */ + 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; }; -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; @@ -153,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; @@ -166,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. */