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