xref: /dpdk/drivers/net/virtio/virtio_rxtx.h (revision e9dac45c0d3071bf3c6308a0cfbae93421ac4829)
15566a3e3SBruce Richardson /* SPDX-License-Identifier: BSD-3-Clause
25566a3e3SBruce Richardson  * Copyright(c) 2010-2015 Intel Corporation
3cab04612SHuawei Xie  */
4cab04612SHuawei Xie 
501ad44fdSHuawei Xie #ifndef _VIRTIO_RXTX_H_
601ad44fdSHuawei Xie #define _VIRTIO_RXTX_H_
701ad44fdSHuawei Xie 
8cab04612SHuawei Xie #define RTE_PMD_VIRTIO_RX_MAX_BURST 64
9cab04612SHuawei Xie 
1001ad44fdSHuawei Xie struct virtnet_stats {
1101ad44fdSHuawei Xie 	uint64_t	packets;
1201ad44fdSHuawei Xie 	uint64_t	bytes;
1301ad44fdSHuawei Xie 	uint64_t	errors;
1401ad44fdSHuawei Xie 	uint64_t	multicast;
1501ad44fdSHuawei Xie 	uint64_t	broadcast;
1601ad44fdSHuawei Xie 	/* Size bins in array as RFC 2819, undersized [0], 64 [1], etc */
1701ad44fdSHuawei Xie 	uint64_t	size_bins[8];
1801ad44fdSHuawei Xie };
1901ad44fdSHuawei Xie 
2001ad44fdSHuawei Xie struct virtnet_rx {
21d5284f0dSMaxime Coquelin 	struct rte_mbuf **sw_ring;  /**< RX software ring. */
22d5284f0dSMaxime Coquelin 	struct rte_mbuf *fake_mbuf; /**< dummy mbuf, for wraparound when processing RX ring. */
2301ad44fdSHuawei Xie 	uint64_t mbuf_initializer; /**< value to init mbufs. */
2401ad44fdSHuawei Xie 	struct rte_mempool *mpool; /**< mempool for mbuf allocation */
2501ad44fdSHuawei Xie 
2601ad44fdSHuawei Xie 	/* Statistics */
2701ad44fdSHuawei Xie 	struct virtnet_stats stats;
2801ad44fdSHuawei Xie };
2901ad44fdSHuawei Xie 
3001ad44fdSHuawei Xie struct virtnet_tx {
31a632f0f6SMaxime Coquelin 	const struct rte_memzone *hdr_mz; /**< memzone to populate hdr. */
32a632f0f6SMaxime Coquelin 	rte_iova_t hdr_mem;               /**< hdr for each xmit packet */
3301ad44fdSHuawei Xie 
34a632f0f6SMaxime Coquelin 	struct virtnet_stats stats;       /* Statistics */
3501ad44fdSHuawei Xie };
3601ad44fdSHuawei Xie 
3701ad44fdSHuawei Xie int virtio_rxq_vec_setup(struct virtnet_rx *rxvq);
38*e9dac45cSMorten Brørup void virtio_update_packet_stats(struct virtnet_stats *const stats,
39*e9dac45cSMorten Brørup 		const struct rte_mbuf *const mbuf);
40fc3d6621SHuawei Xie 
4101ad44fdSHuawei Xie #endif /* _VIRTIO_RXTX_H_ */
42